/* anda CONMiGO — landing clinica. Toma de Kaisfera la ESTRUCTURA (hero que
   presenta todo de golpe, botones cuadrados, retícula seria) pero no la voz:
   Kaisfera es tecnología y esto es clínica. Aquí mandan las personas, la luz
   cálida y las formas orgánicas (la marca es una huella). Nada de mono.

   La idea es PROGRESIÓN: Infantil -> TEENS -> Familia. El hero es un carrusel
   que avanza solo por las tres etapas y las pestañas son la linea de tiempo:
   la barra que se llena de 0 a 14 a 22 a familia es el paso del tiempo. */

/* ÍNDICE — el fichero va por CAPAS: cada regla vive en la suya, y su @media va
   pegado a su bloque (capa 5 del mapa: no hay un bloque «móvil» al final).
   Convención y porqués: docs/css.md.

   1. TOKENS Y PALETAS — lo único que declara color, sombra, radio o fuente
          · Marca, líneas, terapias, superficies y tipografía
          · Paletas de línea: cada una manda solo en su página
          · Cómo se propaga el acento en una página de línea
          · Tonos del botón por paleta

   2. BASE — reset, tipografía, secciones y foco
          · Reset, tipografía y utilidades
          · Rótulos y jerarquía de texto
          · Secciones y anclajes
          · Foco, salto al contenido y landmarks
          · Protección del contenido (copia.js: fotos; la selección NO se bloquea)

   3. COMPONENTES COMPARTIDOS — lo que usan varias plantillas
          · Botones
          · Cabecera y mega-menú
          · Método: cuatro pasos
          · Cierre partido
          · Cabecera de página de contenido
          · Listas con marca de verificación
          · Bloque de muestra y cita destacada
          · Acordeón
          · Banda de llamada a la acción
          · Pie
          · Menú móvil
          · Acciones flotantes y barra fija de móvil
          · Cajón de cita
          · Tarjeta de área/terapia
          · Enfoque 360º
          · Mapa de centros
          · Migas de pan
          · Terapias relacionadas
          · Ilustración de sección
          · Cintas: reseñas y equipo
          · Cabecera de sección
          · Chips
          · Tarjeta de artículo/servicio
          · Bloque por tema
          · Panel de producto y línea de tiempo
          · Nota de disponibilidad

   4. SECCIONES POR PLANTILLA — cada bloque solo lo usa su página
          · Portada: carrusel, pestañas, «por qué» y mosaico
          · Páginas de línea
          · Landing de terapia
          · Página de centros
          · Ficha de centro
          · Blog
          · Trabaja con nosotros
          · Servicio × centro
          · Mapa web
          · Equipo
          · Colegios
          · Ayudas y becas
          · 404
          · Contacto
          · Índice de terapias
          · Programas y talleres
          · «Abre tu centro»
          · Páginas de provincia

   6. MOVIMIENTO — fotogramas, transición entre documentos y «menos movimiento»
          · Movimiento

   7. TÁCTIL — (hover:none): sin desenfoques ni transición entre documentos
          · Táctil
*/

/* ═══ 1. TOKENS Y PALETAS — lo único que declara color, sombra, radio o fuente ═══ */

/* ── Marca, líneas, terapias, superficies y tipografía ── */
:root{
  /* ── MARCA (lo único que se ve en la home). Naranja corporativo + el oliva y
        el lima del logotipo. Sacados del CSS y los logotipos del sitio real. ── */
  --inf:#f29310;      --inf-hi:#d97d08;   /* naranja corporativo (rellenos) */
  --inf-txt:#9a5705;                      /* el naranja legible: 5,6:1 sobre blanco */
  --inf-lima:#aeb538;                     /* lima de MiGO. SOLO gráfico: 2,2:1 */
  --olive:#7d8141;    --olive-hi:#676b34; /* oliva del wordmark (5,6:1: vale para texto) */
  --grad:linear-gradient(100deg,var(--inf),var(--inf-lima) 55%,var(--olive));
  /* El bloque de cierre en diagonal gusta como está (naranja -> oliva). No tocar. */
  --grad-deep:linear-gradient(100deg,#a85f06,#8a6a1f 46%,var(--olive-hi));

  /* ── LÍNEAS. No se mezclan con la marca en la misma pantalla: cada una manda
        solo en su propia página. Aquí solo se declaran. ── */
  --teen:#7d39b3;     --teen-hi:#6c4394;  --teen-soft:#eee2f7;   /* TEENS: morado del wordmark */
  /* Familia: PROPUESTA nueva. El oliva oscuro original (#60614c) no gusta. Un
     petróleo/salvia profundo: calma, adulto, y no pelea ni con el naranja ni con
     el morado. 6,1:1 sobre blanco. Pendiente de OK. */
  --fam:#2f6f73;      --fam-hi:#265b5e;   --fam-soft:#e3eeec;
  --luz-teen:rgba(125,57,179,.24); --luz-rosa:rgba(252,89,187,.20);
  --luz-fam:rgba(47,111,115,.26);  --luz-salvia:rgba(120,170,165,.26);

  /* ── ACENTO ACTIVO. Por defecto, la marca. Cada línea lo redefine en su
        diapositiva y en su página; así el morado y el petróleo nunca aparecen
        donde no les toca: se declaran abajo, con `--acc-btn`. ── */
  /* ── Color POR TERAPIA. Es un sistema real de la marca: cada disciplina tiene
        el suyo y los iconos ilustrados ya vienen teñidos, así que la ficha de
        Logopedia es rosa y la de Atención Temprana lima — no naranja de línea.
        Dos tonos: el VIVO (icono, filo, fondo) y el de TEXTO, oscurecido hasta
        AA, porque el rosa y el lima de marca dan 2,8:1 y 2,2:1 sobre blanco. ── */
  --t-logopedia:#ec728f; --t-logopedia-txt:#a8324f; --t-logopedia-soft:#fde7ec;
  --t-temprana:#aeb538;  --t-temprana-txt:#5e621f;  --t-temprana-soft:#f1f3d8;
  --t-psicologia:#3876b3; --t-psicologia-txt:#2f6ba3; --t-psicologia-soft:#e4eef7;
  --t-psicopedagogia:#3876b3; --t-psicopedagogia-txt:#2f6ba3; --t-psicopedagogia-soft:#e4eef7;
  --t-ocupacional:#f29310; --t-ocupacional-txt:#8f5704; --t-ocupacional-soft:#fdeedb;
  --t-fisio:#f29310;      --t-fisio-txt:#8f5704;     --t-fisio-soft:#fdeedb;

  --acc:var(--inf); --acc-hi:var(--inf-hi); --acc-txt:var(--inf-txt); --acc-soft:var(--inf-soft);
  --acc-btn:var(--inf);         /* el naranja de marca, sin apagar */
  --la:var(--luz-inf); --lb:var(--luz-lima);

  /* ── Superficies cálidas ── */
  --bg:#fffdfa; --surface:#ffffff; --surface-2:#faf6ee; --surface-hi:#f1ebdf;
  --border:#ebe5d9; --border-hi:#ddd5c4;
  --text:#2b2926; --muted:#5f5a53; --subtle:#6f6a62;
  --inf-soft:#fdeedb; --lima-soft:#f1f3d8;
  --luz-inf:rgba(242,147,16,.34); --luz-lima:rgba(174,181,56,.30); --luz-oliva:rgba(125,129,65,.26);
  --sh-sm:0 1px 1px rgba(43,41,38,.04),0 0 0 1px rgba(43,41,38,.03);
  --sh-lg:0 18px 40px -14px rgba(43,41,38,.18),0 3px 10px -4px rgba(43,41,38,.08);
  --sans:"Hanken Grotesk",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif; --titulo:var(--sans);
  --wrap:1120px; --navh:66px; --r:20px;
}
/* El blanco sobre el naranja de marca (#f29310) da 2,34:1. Se mantiene el naranja y se oscurece el
   texto (6,2:1); al pasar el ratón, un naranja apenas más cálido que sigue en AA con ese texto.
   Donde el botón es de otro color (oscuro), el texto sigue blanco. */
:root{--acc-btn-txt:var(--text);--acc-btn-hi:#e0850a}

/* ── Paletas de línea: cada una manda solo en su página ── */
.teen,body.linea-teen{--acc:var(--teen);--acc-hi:var(--teen-hi);--acc-txt:var(--teen);--acc-soft:var(--teen-soft);--acc-btn:var(--teen);--la:var(--luz-teen);--lb:var(--luz-rosa)}
.franq,body.linea-franq{--acc:#8a6a1f;--acc-hi:#6e5416;--acc-txt:#6e5416;--acc-soft:#f3ecd9;--acc-btn:#8a6a1f;--la:rgba(138,106,31,.26);--lb:var(--luz-inf)}
.online,body.linea-online{--acc:var(--olive);--acc-hi:var(--olive-hi);--acc-txt:var(--olive-hi);--acc-soft:var(--lima-soft);--acc-btn:var(--olive-hi);--la:var(--luz-lima);--lb:var(--luz-oliva)}
.fam,body.linea-fam{--acc:var(--fam);--acc-hi:var(--fam-hi);--acc-txt:var(--fam);--acc-soft:var(--fam-soft);--acc-btn:var(--fam);--la:var(--luz-fam);--lb:var(--luz-salvia)}
body.linea-inf .eb,body.linea-teen .eb,body.linea-fam .eb,body.linea-inf .eyebrow,body.linea-teen .eyebrow,body.linea-fam .eyebrow{color:var(--acc-txt)}
.c-linea--inf{--acc:var(--inf);--acc-hi:var(--inf-hi);--acc-txt:var(--inf-txt);--acc-soft:var(--inf-soft);--acc-btn:var(--inf)}
.c-linea--teen{--acc:var(--teen);--acc-hi:var(--teen-hi);--acc-txt:var(--teen);--acc-soft:var(--teen-soft);--acc-btn:var(--teen)}
/* El cajón de cita se tiñe de la línea desde la que se abrió: pedirla en TEENS
   y ver un formulario naranja hace dudar de si has pulsado donde querías. */
dialog.cita-dlg.es-teen{--acc:var(--teen);--acc-hi:var(--teen-hi);--acc-txt:var(--teen);--acc-soft:var(--teen-soft);--acc-btn:var(--teen)}
dialog.cita-dlg.es-fam{--acc:var(--fam);--acc-hi:var(--fam-hi);--acc-txt:var(--fam);--acc-soft:var(--fam-soft);--acc-btn:var(--fam)}
.teen,body.linea-teen,.fam,body.linea-fam,.online,body.linea-online,.franq,body.linea-franq,.c-linea--teen,
dialog.cita-dlg.es-teen,dialog.cita-dlg.es-fam,.empleo{--acc-btn-txt:#fff;--acc-btn-hi:var(--acc-hi)}
.c-linea--inf{--acc-btn-txt:var(--text);--acc-btn-hi:#e0850a}
/* Cada diapositiva del carrusel de la portada lleva los colores de SU línea. Hasta ahora heredaban
   los de la página (naranja) y solo coincidían por casualidad: al cambiar el color de marca,
   Infantil salía verde. */
.slide.inf{--acc:var(--inf);--acc-hi:var(--inf-hi);--acc-txt:var(--inf-txt);--acc-soft:var(--inf-soft);--acc-btn:var(--inf);--acc-btn-txt:var(--text);--acc-btn-hi:#e0850a}
.slide.teen{--acc:var(--teen);--acc-hi:var(--teen-hi);--acc-txt:var(--teen);--acc-soft:var(--teen-soft);--acc-btn:var(--teen);--acc-btn-txt:#fff;--acc-btn-hi:var(--teen-hi)}
.slide.fam{--acc:var(--fam);--acc-hi:var(--fam-hi);--acc-txt:var(--fam);--acc-soft:var(--fam-soft);--acc-btn:var(--fam);--acc-btn-txt:#fff;--acc-btn-hi:var(--fam-hi)}
.slide.online{--acc:var(--olive);--acc-hi:var(--olive-hi);--acc-txt:var(--olive-hi);--acc-soft:var(--lima-soft);--acc-btn:var(--olive-hi);--acc-btn-txt:#fff;--acc-btn-hi:#4c4f19}
.slide.franq{--acc:#8a6a1f;--acc-hi:#6e5416;--acc-txt:#6e5416;--acc-soft:#f3ecd9;--acc-btn:#8a6a1f;--acc-btn-txt:#fff;--acc-btn-hi:#6e5416}
/* ── Portada en el verde del logo (decisión de Javi, 2026-09-05) ──
   La home presenta TODAS las líneas, así que no puede ir en el naranja de Infantil. El oliva es el
   verde real del logotipo. Cada diapositiva del carrusel conserva el color de su línea. */
body.portada{--acc:#7d8141;--acc-hi:#5e621f;--acc-txt:#5e621f;--acc-soft:#f1f3d8;--acc-btn:#5e621f;--acc-btn-txt:#fff;--acc-btn-hi:#4c4f19;--la:rgba(125,129,65,.22);--lb:rgba(242,147,16,.14)}
body.portada .slide.marca .s-name{background:linear-gradient(100deg,#7d8141 10%,#5e621f 60%,#3f4318);background-size:150% 100%;-webkit-background-clip:text;background-clip:text;color:transparent}
/* El cajón de cita es de las familias: si la línea es Infantil (o aún no se ha elegido) va en naranja,
   aunque la página de fondo sea la portada verde o una corporativa. */
/* El cajón arranca en el verde de la marca y toma el color de la línea al elegir a quién acompañamos:
   Infantil naranja, TEENS morado, Familia verde azulado. */
dialog.cita-dlg:not(.es-teen):not(.es-fam):not(.es-inf){--acc:#7d8141;--acc-hi:#5e621f;--acc-txt:#5e621f;--acc-soft:#f1f3d8;--acc-btn:#5e621f;--acc-btn-txt:#fff;--acc-btn-hi:#4c4f19}
dialog.cita-dlg.es-inf{--acc:var(--inf);--acc-hi:var(--inf-hi);--acc-txt:var(--inf-txt);--acc-soft:var(--inf-soft);--acc-btn:var(--inf);--acc-btn-txt:var(--text);--acc-btn-hi:#e0850a}

/* ── Cómo se propaga el acento en una página de línea ── */
body[class*=linea-] .step .n{color:var(--acc-txt)}
body[class*=linea-] .check-list svg{color:var(--acc)}
body[class*=linea-] .cta-band{background:linear-gradient(110deg,var(--acc-hi),var(--acc))}
body[class*=linea-] .cta-band .btn{color:var(--acc-txt)}
body[class*=linea-] .cta-band .btn:hover{background:var(--acc-soft)}
body[class*=linea-]:not(.terapia) .t-foto::before{border-radius:54% 46% 60% 40% / 44% 56% 44% 56%}
body[class*=linea-]:not(.terapia) .t-foto img{width:82%;height:82%;object-fit:cover;
  border-radius:56% 44% 62% 38% / 42% 58% 42% 58%;box-shadow:var(--sh-lg)}

/* Cuando la paleta viene en el `style` del elemento (una ficha de terapia, una tarjeta del blog),
   los dos tonos del botón vienen CON ella: los pone `paleta_btn()` de `_molde.py`. Antes había diez
   selectores `[style*="--acc-btn:#…"]` aquí, uno por color, que se rompían si cambiaba el color. */
.reembolso{margin:18px 0 0;font-size:14.5px;color:var(--muted);display:flex;gap:8px;align-items:flex-start}
.reembolso svg{flex:none;width:16px;height:16px;margin-top:3px;color:var(--acc-txt)}

/* ═══ 2. BASE — reset, tipografía, secciones y foco ═══ */

/* ── Reset, tipografía y utilidades ── */
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:15px;line-height:1.55;
  letter-spacing:-.006em;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
img,picture,svg,video{display:block;max-width:100%}
.grad-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* Nada se escapa a los lados. El mega-menú de escritorio (oculto con visibility, pero
   ocupa sitio) y la caja fija de la marca ensanchaban el documento: en tableta se podía
   arrastrar la página hacia la derecha. `clip` no crea contenedor de scroll, así que el
   header sticky sigue pegado al viewport (con `hidden` en body dejaría de estarlo). */
html,body{overflow-x:clip}
/* Cuerpo a 16px en móvil, y los campos de formulario también (por debajo iOS hace zoom). */
@media(max-width:760px){
  body{font-size:16px}
}

/* rótulo pequeño: sans en versalitas, no mono (mono es código, esto es clínica) */
.eb,.eyebrow,.s-kicker,.tab .eb,.step .n{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:.13em;text-transform:uppercase}
.s-kicker{margin:0 0 14px;color:var(--muted)}
.eb{color:var(--acc-txt);margin:0 0 18px}
.eyebrow{color:var(--acc-txt);margin:0 0 14px}
.h2{font-size:clamp(30px,4.4vw,46px);font-weight:800;letter-spacing:-.03em;line-height:1.05;margin:0 auto 18px;max-width:16ch;text-wrap:balance}
.lede{font-size:17px;color:var(--muted);max-width:56ch;margin:0 auto;line-height:1.6}
.eb{transition:color .35s,background-color .35s,border-color .35s}
.eyebrow{transition:color .35s,background-color .35s,border-color .35s}

/* ── Secciones y anclajes ── */
.sec{padding:66px 0}
.sec.alt{background:var(--surface-2);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.sec.center{text-align:center}
#contenido{view-transition-name:blog-contenido}
/* El header pegado tapaba el destino de los anclajes (#areas, #valoracion, índice del
   artículo). En el blog, además, la barra de temas va debajo del header. */
[id]{scroll-margin-top:calc(var(--navh) + 16px)}
body:has(.temas-nav) [id]{scroll-margin-top:calc(var(--navh) + 66px)}

/* Enlace de salto (lo inserta partials.js): fuera de pantalla hasta que recibe el foco. */
.skip{position:absolute;left:12px;top:-100px;z-index:2000;padding:10px 16px;border-radius:8px;background:#2b2926;color:#fff;font-weight:700;font-size:14px;text-decoration:none;transition:top .15s}
.skip:focus-visible{top:12px;outline:3px solid #fff;outline-offset:2px;box-shadow:0 0 0 5px #2b2926}
/* El destino del salto recibe el foco (tabindex=-1) pero no necesita anillo. */
#contenido:focus{outline:none}
/* La cabecera envuelve al nav para dar el landmark <header>; en display:contents para no romper el sticky. */
.cab{display:contents}
/* Anillo de foco uniforme en los controles que el sitio estiliza sin borde. */
.drop > button:focus-visible,.mnav > summary:focus-visible,.tab:focus-visible,.tn:focus-visible,.chip:focus-visible,
.carr-fl:focus-visible,.mapa-paises button:focus-visible,.c-prov:focus-visible,.volver-paso:focus-visible,
.cita-head .x:focus-visible,.cita-elegido button:focus-visible,summary:focus-visible{outline:2px solid var(--text);outline-offset:2px}

/* ── Protección del contenido (2026-09-09) ──
   La otra mitad de `copia.js`: lo que solo el CSS puede hacer. Va en la capa 2 aunque
   nombre componentes de las capas 3 y 4 a propósito: es UNA decisión (de quién es lo
   que se publica) y se lee de una vez; no compite con nadie porque ninguna otra regla
   del fichero declara estas propiedades.

   Solo las FOTOS de contenido: en táctil, la pulsación larga es el «guardar imagen» de
   escritorio, y `-webkit-touch-callout` es lo único que la corta en iOS; `-webkit-user-drag`
   evita arrastrar la foto al escritorio. La lista es la MISMA que la de `copia.js`; fuera
   quedan el logotipo, los sellos, los iconos de terapia y el mapa.

   NO hay `user-select:none` en ninguna parte, y es una decisión, no un olvido:
     · Se llevaba por delante la firma de autoría. Sin selección no hay evento `copy`, así
       que en el cuerpo del artículo —justo donde más interesa firmar— no se pegaba nada.
       Medido: con la regla puesta, `getSelection().toString()` devolvía cadena vacía
       incluso seleccionando por código.
     · Protege poco: el texto sigue entero en «ver código fuente» y en el modo lector.
     · Y estorba a quien lo necesita (seleccionar para leer, para el traductor, para un
       lector de pantalla que sigue la selección). Con centros que pueden tener plazas
       concertadas, una barrera puesta a propósito es difícil de defender (RD 1112/2018).
   Ver docs/copia-contenido.md y docs/accesibilidad.md. */
.post-portada img,.prosa img,.gal-foto img,.c-galeria img,.retrato img,.miembro img,.t-foto img,
.pc-img img:not(.pc-ico),.tile img,.s-photo img,.viz img,.libro-img img{
  -webkit-touch-callout:none;-webkit-user-drag:none}

/* ═══ 3. COMPONENTES COMPARTIDOS — lo que usan varias plantillas ═══ */

/* ── Botones (los cuadrados de Kaisfera: gustan) ── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;font:inherit;height:36px;padding:0 14px;
  font-size:13px;font-weight:500;letter-spacing:-.01em;white-space:nowrap;border-radius:6px;cursor:pointer;border:1px solid transparent;transition:.12s ease}
.btn:active{transform:translateY(.5px)}
.btn svg{width:15px;height:15px;transition:transform .2s}
.btn-arrow:hover svg{transform:translateX(3px)}
.btn-ghost{background:var(--surface);color:var(--muted);border-color:var(--border-hi);box-shadow:var(--sh-sm)}
.btn-ghost:hover{background:var(--surface-2);color:var(--text)}
/* Sobre el naranja de marca el blanco da 2,34:1: el texto del botón lo dice la paleta
   (`--acc-btn-txt`), oscuro en naranja y blanco en todo lo demás. Igual el hover. */
.btn-primary{background:var(--acc-btn);color:var(--acc-btn-txt);box-shadow:0 1px 2px color-mix(in srgb,var(--acc-btn) 25%,transparent),inset 0 1px 0 rgba(255,255,255,.18)}
.btn-color{background:var(--acc-btn);color:var(--acc-btn-txt);box-shadow:0 1px 2px rgba(43,41,38,.18),inset 0 1px 0 rgba(255,255,255,.2)}
.btn-primary:hover,.btn-color:hover{background:var(--acc-btn-hi)}
.btn-lg{height:48px;padding:0 22px;font-size:14px}
/* Objetivo táctil de 44 px en móvil (40 donde el sitio es justo), sin tocar el escritorio.
   El resto de los objetivos vive en el @media de cada componente. */
@media(max-width:760px){
  .btn{height:auto;min-height:44px}
}

/* ── Header (este gusta: no tocar) ── */
.nav{position:sticky;top:0;z-index:1100;height:var(--navh);background:rgba(255,253,250,.86);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--border)}
.nav-in{display:flex;align-items:center;gap:28px;height:var(--navh);max-width:var(--wrap);margin:0 auto;padding:0 26px}
.brand{display:inline-flex;align-items:center;gap:0}
.brand img{height:38px;width:auto}
.nav-links{display:flex;align-items:center;gap:2px;margin-left:10px}
.nav-links > a,.drop > button{position:relative;background:none;border:none;color:var(--muted);font:inherit;font-size:14px;font-weight:500;
  padding:8px 13px;border-radius:9px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:color .15s}
.nav-links > a:hover,.drop > button:hover,.drop:hover > button{color:var(--text)}
.nav-links > a::after,.drop > button::after{content:"";position:absolute;left:13px;right:13px;bottom:5px;height:2px;border-radius:2px;
  background:var(--acc);transform:scaleX(0);transform-origin:left;transition:transform .18s}
.nav-links > a:hover::after,.drop:hover > button::after{transform:scaleX(1)}
.drop{position:relative}
.drop > button svg{width:12px;height:12px;opacity:.6;transition:transform .2s}
.drop:hover > button svg{transform:rotate(180deg)}
.drop-menu{position:absolute;top:calc(100% + 8px);left:0;min-width:260px;background:var(--surface);border:1px solid var(--border);
  border-radius:14px;padding:7px;box-shadow:var(--sh-lg);opacity:0;visibility:hidden;transform:translateY(6px);
  transition:opacity .18s,transform .18s,visibility .18s}
.drop:hover .drop-menu{opacity:1;visibility:visible;transform:translateY(0)}
.drop-menu a{display:block;padding:9px 12px;border-radius:9px;transition:background .15s}
.drop-menu a:hover{background:var(--surface-2)}
.drop-menu.narrow{min-width:220px}
/* Los enlaces de «Nosotros» se subrayan al pasar por encima igual que los del mega-menú de
   Servicios: antes solo cambiaban de fondo y no se notaba que fueran enlaces. */
.drop-menu a.simple{font-size:14px;font-weight:500;color:var(--text);position:relative}
.drop-menu a.simple::after{content:"";position:absolute;left:12px;right:12px;bottom:5px;height:1.5px;border-radius:2px;
  background:var(--acc);transform:scaleX(0);transform-origin:left;transition:transform .18s}
.drop-menu a.simple:hover::after,.drop-menu a.simple:focus-visible::after{transform:scaleX(1)}
/* Mega-menú de servicios: los cinco productos de la marca, cada uno con su
   color. Es un ÍNDICE, no un lavado de color: aquí sí conviven. */
.drop-menu.mega{min-width:880px;max-width:calc(100vw - 48px);left:-8px;padding:0}
.mega-cols{display:grid;grid-template-columns:repeat(5,1fr);gap:2px;padding:18px 14px}
.mega .col{position:relative;padding:0 8px}
.mega .col + .col{border-left:1px solid var(--border)}
.mega .col-cat{margin:4px 10px 8px;font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--subtle);white-space:nowrap}
.mega .lnk{position:relative;display:block;padding:5px 11px;border-radius:7px;font-size:13px;color:var(--muted);
  line-height:1.3;transition:background .14s,color .14s}
.mega .col:has(.lnk) .lnk:first-of-type{margin-top:6px;padding-top:9px;border-top:1px solid var(--border)}
.mega .lnk::after{content:"";position:absolute;left:11px;right:11px;bottom:3px;height:1.5px;border-radius:2px;
  background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .18s}
.mega .lnk:hover,.mega .lnk:focus-visible{background:var(--surface-2);color:var(--lc,var(--text))}
.mega .lnk:hover::after,.mega .lnk:focus-visible::after{transform:scaleX(1)}
/* cada columna subraya con SU color */
.mega .col.inf{--lc:var(--inf-txt)}
.mega .col.teens{--lc:var(--teen)}
.mega .col.fam{--lc:var(--fam)}
.mega .col.online{--lc:var(--olive-hi)}
.mega .col.franq{--lc:var(--inf-txt)}
/* el producto (nombre + descripción) también responde */
.mega .feat{position:relative}
.mega .feat .ft{transition:color .14s}
.mega .feat::after{content:"";position:absolute;left:11px;bottom:5px;width:22px;height:2px;border-radius:2px;
  background:var(--lc,var(--acc));transform:scaleX(0);transform-origin:left;transition:transform .18s}
.mega .feat:hover::after,.mega .feat:focus-visible::after{transform:scaleX(1)}
.mega .col.inf .ft{color:var(--inf-txt)}
.mega .col.teens .ft{color:var(--teen)}
.mega .col.fam .ft{color:var(--fam)}
.mega .col.online .ft{color:var(--olive-hi)}
.mega .col.franq .ft{color:var(--text)}
.mega .col.teens .col-cat{color:var(--teen)}
.mega .feat{display:block;padding:8px 11px;border-radius:9px;transition:background .15s}
.mega .feat:hover{background:var(--surface-2)}
.mega .feat .ft{display:block;font-size:15px;font-weight:700;letter-spacing:-.01em}
.mega .feat .fd{display:block;font-size:12.5px;color:var(--subtle);margin-top:3px;line-height:1.4}
.mega-foot{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:12px 22px;border-top:1px solid var(--border);background:var(--surface-2);border-radius:0 0 14px 14px}
.mega-foot .all{font-size:13px;font-weight:600;color:var(--acc-txt)}
.mega-foot .all .ar{transition:transform .15s;display:inline-block}
.mega-foot .all:hover .ar{transform:translateX(3px)}
.mega-foot .qlinks{display:flex;gap:18px}
.mega-foot .qlinks a{font-size:13px;color:var(--muted)}
.mega-foot .qlinks a:hover{color:var(--text)}
.nav-cta{margin-left:auto;display:flex;align-items:center;gap:6px}
.nav-cta .btn{height:30px;padding:0 11px;border-radius:5px;font-size:12.5px}
@media(max-width:760px){
  .nav-links{display:none}
  .solo-esc{display:none}
  .nav-cta{gap:8px}
  .nav-in{padding:0 16px}
}
/* partials.js pinta el menú dentro de <div id="nav">. Con display:contents esa caja no
   cuenta como contenedor y el sticky del menú funciona respecto a la página entera. */
#nav{display:contents}
/* Respaldo: si una página llegara sin la cabecera incrustada, el hueco reserva su altura hasta que partials.js la pinte. */
#nav:empty{display:block;height:var(--navh)}
/* El logotipo del header cambia con el carrusel: transición corta para que se
   note el cambio sin que parpadee. Alto fijo para que el nav no dé saltos —los
   tres logotipos tienen proporciones distintas. */
/* Hueco de marca de tamaño FIJO. Los tres logotipos tienen proporciones muy
   distintas (TEENS 2,8:1, familiar 3,1:1, infantil 3,8:1) y el corporativo es
   más ancho aún: sin caja fija, el header se reajusta en cada cambio. */
.nav .brand{width:186px;height:42px;flex-shrink:0;justify-content:flex-start;
  transition:opacity .34s cubic-bezier(.4,0,.2,1)}
.nav .brand.mudando{opacity:0}
.nav .brand img{max-width:100%;max-height:38px;width:auto;height:auto;object-fit:contain;object-position:left center}
/* Marca corporativa: solo el nombre. Sin MiGO (que es de Infantil) y sin huella. */
.brand .wm{font-size:20px;font-weight:500;letter-spacing:-.025em;color:var(--olive-hi);white-space:nowrap}
.brand .wm b{font-weight:800;color:var(--text)}
.nav{view-transition-name:nav}
/* Header en móvil: la caja fija de la marca (186px, definida más arriba) ganaba a la
   regla de 150px del breakpoint y empujaba la hamburguesa fuera de la pantalla en 360px. */
@media(max-width:760px){
  .nav .brand{width:clamp(112px,38vw,150px);height:36px}
  .nav-cta .btn{height:40px;min-height:40px;padding:0 13px;font-size:13px}
}
/* Tableta: entre 761 y 880px el botón "Consúltanos" se salía del header. */
@media(max-width:880px){
  .nav .solo-esc{display:none}
  .nav-in{gap:18px}
}
/* Desplegables abiertos con teclado (partials.js pone .abierto): igual que con :hover. */
.drop.abierto .drop-menu{opacity:1;visibility:visible;transform:translateY(0)}
.drop.abierto > button{color:var(--text)}
.drop.abierto > button::after{transform:scaleX(1)}
.drop.abierto > button svg{transform:rotate(180deg)}
/* Cabecera: el subrayado al pasar por encima va SIEMPRE en el verde de la marca. */
.nav-links > a::after,.drop > button::after,.drop-menu a.simple::after{background:var(--olive)}
.mega .lnk::after{background:var(--lc,var(--olive))}

/* Método: 4 pasos */
.metodo{padding:96px 0;border-bottom:1px solid var(--border);background:var(--surface-2)}
.metodo .head{text-align:center}
.metodo h2{font-weight:700;font-size:clamp(30px,4.2vw,44px);letter-spacing:-.03em;line-height:1.08;margin:0 auto;max-width:20ch;text-wrap:balance}
.metodo .lede{color:var(--muted);font-size:17px;line-height:1.6;max-width:600px;margin:18px auto 0}
/* Los cuatro pasos son un CAMINO y tienen que LEERSE como avance: el color va
   de naranja a oliva paso a paso, la línea se dibuja al entrar en pantalla y
   los hitos se encienden uno detrás de otro. Antes eran cuatro círculos
   iguales unidos por una raya plana: no se notaba ninguna progresión. */
.steps{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:28px;margin-top:56px;text-align:left}
.steps::before{content:"";position:absolute;left:22px;right:22px;top:21px;height:3px;border-radius:3px;background:var(--border-hi)}
.steps::after{content:"";position:absolute;left:22px;right:22px;top:21px;height:3px;border-radius:3px;
  background:linear-gradient(90deg,#9a5705,#8a6a1f 34%,#6e6b28 67%,#5e621f);
  transform:scaleX(0);transform-origin:left;transition:transform 1.6s cubic-bezier(.4,0,.2,1) .2s}
.steps.vista::after{transform:scaleX(1)}
.step{position:relative;padding:0;border:none}
.step .n{position:relative;z-index:1;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;margin:0 0 18px;
  background:var(--surface);border:3px solid var(--border-hi);color:var(--subtle);font-size:15px;font-weight:800;letter-spacing:0;
  box-shadow:0 0 0 6px var(--surface-2);transition:background .45s ease,border-color .45s ease,color .45s ease,transform .45s cubic-bezier(.2,1.3,.4,1)}
.sec:not(.alt) .step .n{box-shadow:0 0 0 6px var(--bg)}
.steps.vista .step .n{background:var(--paso);border-color:var(--paso);color:#fff;transform:scale(1.06)}
.step:nth-child(1){--paso:#9a5705}
.step:nth-child(2){--paso:#8a6a1f}
.step:nth-child(3){--paso:#6e6b28}
.step:nth-child(4){--paso:#5e621f}
.steps.vista .step:nth-child(1) .n{transition-delay:.25s}
.steps.vista .step:nth-child(2) .n{transition-delay:.6s}
.steps.vista .step:nth-child(3) .n{transition-delay:.95s}
.steps.vista .step:nth-child(4) .n{transition-delay:1.3s}
.step h3,.step p{transition:opacity .5s ease,transform .5s ease}
.steps:not(.vista) .step h3,.steps:not(.vista) .step p{opacity:.45;transform:translateY(6px)}
.steps.vista .step:nth-child(1) h3,.steps.vista .step:nth-child(1) p{transition-delay:.3s}
.steps.vista .step:nth-child(2) h3,.steps.vista .step:nth-child(2) p{transition-delay:.65s}
.steps.vista .step:nth-child(3) h3,.steps.vista .step:nth-child(3) p{transition-delay:1s}
.steps.vista .step:nth-child(4) h3,.steps.vista .step:nth-child(4) p{transition-delay:1.35s}
.step h3{color:var(--paso);font-size:18px;font-weight:700;letter-spacing:-.02em;margin:16px 0 8px}
.step p{color:var(--muted);font-size:14.5px;line-height:1.55;margin:0}
.metodo .cta2{text-align:center;margin-top:44px}
@media(max-width:960px){
  .steps{grid-template-columns:1fr 1fr}
  .steps::before{display:none}
  .step{padding:0}
}
@media(max-width:560px){
  .steps{grid-template-columns:1fr}
}
/* ── Móvil: el método, en una columna ── */
/* .steps: a ≤900 se ocultaba la raya gris pero seguía la de color (::after), que cruzaba el bloque.
   En una columna cada paso pasa a fila: número a la izquierda y conector vertical, como .tl. */
@media(max-width:900px){
  .steps::after{display:none}
  .steps{gap:0;margin-top:36px}
  .step{display:grid;grid-template-columns:44px 1fr;column-gap:16px;padding-bottom:26px}
  .step:last-child{padding-bottom:0}
  .step .n{margin:0;grid-column:1;grid-row:1/3;align-self:start}
  .step h3{margin:9px 0 6px;grid-column:2}
  .step p:not(.n){grid-column:2}
  .step::before{content:"";position:absolute;left:21px;top:52px;bottom:6px;width:2px;background:var(--border-hi)}
  .step:last-child::before{display:none}
}

/* ── Cierre partido (este gusta como está: no tocar) ── */
.close{padding:96px 28px}
.split{position:relative;display:flex;max-width:var(--wrap);margin:0 auto;border:1px solid var(--border-hi);border-radius:20px;overflow:hidden;box-shadow:var(--sh-lg)}
.half{flex:1;padding:44px 42px;display:flex;flex-direction:column;align-items:flex-start;gap:12px;position:relative;z-index:1}
.half:first-child{background:linear-gradient(140deg,#fff,var(--acc-soft));padding-right:70px}
.half .ic{width:44px;height:44px;border-radius:10px;display:grid;place-items:center;background:var(--acc-soft);color:var(--acc-txt);border:1px solid color-mix(in srgb,var(--acc) 28%,#fff)}
.half .ic svg{width:22px;height:22px}
.half h3{font-size:22px;font-weight:700;letter-spacing:-.02em;margin:0}
.half p{color:var(--muted);font-size:15px;line-height:1.55;margin:0;max-width:34ch}
.half .btn{margin-top:8px}
.half.alt{color:#fff;margin-left:-58px;padding-left:90px;clip-path:polygon(58px 0,100% 0,100% 100%,0 100%);z-index:2;background:var(--grad-deep)}
.half.alt .ic{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.3);color:#fff}
.half.alt h3{color:#fff}
.half.alt p{color:rgba(255,255,255,.92)}
.half.alt .btn{background:#fff;color:var(--acc-txt);border-color:transparent;box-shadow:0 1px 2px rgba(0,0,0,.14)}
.half.alt .btn:hover{background:var(--acc-soft)}
@media(max-width:960px){
  .split{flex-direction:column}
  .half:first-child{padding-right:42px}
  .half.alt{margin-left:0;padding-left:42px;clip-path:none}
}

/* ══ Páginas de contenido (método, etc.) ══ */
.phero{position:relative;padding:78px 0 60px;text-align:center;overflow:hidden;
  background:radial-gradient(46% 58% at 20% -6%,var(--acc-soft),transparent 60%),
             radial-gradient(46% 58% at 80% -6%,var(--lima-soft),transparent 60%),
             radial-gradient(62% 78% at 50% -16%,var(--lima-soft),transparent 66%),var(--bg)}
.phero > .wrap{position:relative;z-index:2}
@media(max-width:720px){
  /* Imagen del método: el generador la fijaba a 520px y desbordaba la pantalla. */
  .phero img{width:min(100%,520px)!important;height:auto}
}

/* ── Listas con marca de verificación ── */
.check-list{list-style:none;margin:20px 0 0;padding:0;display:grid;gap:11px}
.check-list li{display:flex;gap:11px;align-items:flex-start;font-size:15px;color:var(--text)}
.check-list li b{font-weight:600}
.check-list svg{width:17px;height:17px;color:var(--acc-hi);flex-shrink:0;margin-top:3px}

/* ── Bloque de muestra y cita destacada ── */
.showcase{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
.showcase .h2{margin-left:0;text-align:left;max-width:18ch}
.showcase .eyebrow{text-align:left}
.pullbox{border:1px solid var(--border);border-radius:var(--r);padding:40px 34px;background:radial-gradient(120% 120% at 100% 0%,var(--acc-soft),var(--surface) 70%);box-shadow:var(--sh-lg)}
.pullbox p{font-size:25px;font-weight:600;letter-spacing:-.02em;line-height:1.3;margin:0}
.pullbox .accent{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
@media(max-width:960px){
  .showcase{grid-template-columns:1fr;gap:34px}
}

/* ── Acordeón ── */
.acc{max-width:820px;margin:40px auto 0;border:1px solid var(--border);border-radius:var(--r);background:var(--surface);box-shadow:var(--sh-sm);overflow:hidden;text-align:left}
.acc details{border-top:1px solid var(--border)}
.acc details:first-child{border-top:none}
.acc summary{list-style:none;cursor:pointer;padding:18px 24px;display:flex;align-items:center;gap:12px;font-weight:700;font-size:15.5px;letter-spacing:-.01em;transition:background .15s}
.acc summary::-webkit-details-marker{display:none}
.acc summary:hover{background:var(--surface-2)}
.acc summary::after{content:"+";margin-left:auto;font-weight:600;font-size:19px;color:var(--subtle);transition:transform .2s}
.acc details[open] summary::after{transform:rotate(45deg)}
.acc details[open] summary{color:var(--acc-txt)}
.acc .ans{padding:0 24px 20px;color:var(--muted);font-size:15px;line-height:1.6;max-width:70ch;margin:0}

/* ── Banda de llamada a la acción ── */
.cta-band{text-align:center;padding:72px 0;background:var(--grad-deep)}
.cta-band h2{color:#fff;font-size:clamp(26px,3.6vw,38px);font-weight:800;letter-spacing:-.02em;margin:0 0 12px}
.cta-band p{color:rgba(255,255,255,.92);font-size:16px;max-width:52ch;margin:0 auto 24px}
.cta-band .btn{background:#fff;color:var(--acc-txt);border-color:transparent}
.cta-band .btn:hover{background:var(--acc-soft)}
.cta-band{view-transition-name:cierre}
.cta-band .btn{transition:color .35s,background-color .35s,border-color .35s}

/* ── Pie ── */
.foot2{border-top:1px solid var(--border);padding:48px 28px;background:var(--surface-2)}
.foot2 .in{max-width:var(--wrap);margin:0 auto;display:grid;gap:32px 28px;align-items:start;
  grid-template-columns:minmax(220px,1.3fr) repeat(auto-fit,minmax(150px,1fr))}
.foot2 .marca .brand{margin-bottom:12px}
.foot2 .marca .brand img{height:46px}
.foot2 .marca p{color:var(--muted);font-size:14px;margin:0 0 16px;max-width:30ch}
.foot2 .col a{display:block;margin:0 0 9px;color:var(--muted);font-size:14px}
.foot2 .col a:hover{color:var(--text)}
.foot2 .social{display:flex;gap:10px}
.foot2 .social a{display:grid;place-items:center;width:32px;height:32px;border-radius:8px;border:1px solid var(--border-hi);color:var(--muted);background:var(--surface);margin:0}
.foot2 .social a:hover{color:var(--acc-txt);border-color:var(--acc)}
.foot2 .social svg{width:16px;height:16px}
.foot2 .seals{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:18px}
.foot2 .seals img{height:38px;width:auto;max-width:100px;object-fit:contain;border-radius:4px}
.foot-bottom{max-width:var(--wrap);margin:32px auto 0;padding-top:20px;border-top:1px solid var(--border);display:flex;gap:18px;flex-wrap:wrap;align-items:center;color:var(--subtle);font-size:13px}
.foot-bottom a{color:var(--subtle)}
.foot-bottom a:hover{color:var(--text)}
.foot-bottom .legal{margin-left:auto;display:flex;gap:18px;flex-wrap:wrap}
@media(max-width:560px){
  .foot2 .marca{grid-column:1/-1}
}
.foot2 .marca .brand .wm{font-size:22px}
@media(max-width:760px){
  .foot2 .col a{margin:0;padding:8px 0;overflow-wrap:anywhere}
  .foot2 .social a{width:40px;height:40px}
  .foot-bottom a{display:inline-block;padding:8px 0}
}
/* Pie en móvil estrecho: `1fr` no baja del contenido mínimo y el correo desequilibraba las columnas. */
@media(max-width:560px){
  .foot2 .in{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
}
/* Tableta: el pie dejaba "Contacto" huérfano bajo la marca, y el blog dos tarjetas más una. */
@media(min-width:561px) and (max-width:960px){
  .foot2 .in{grid-template-columns:repeat(3,1fr)}
  .foot2 .marca{grid-column:1 / -1}
}
/* Rótulos del pie: eran <h4> tras el <h2> de cierre (salto de nivel); ahora <h2> con el mismo aspecto. */
.foot2 .col .foot-h{margin:0 0 12px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--subtle)}

/* ── Menú móvil (<details>, sin JS). absolute, no fixed: el backdrop-filter
      del nav lo convierte en bloque contenedor y un fixed se recortaría. ── */
.mnav{display:none;margin-left:8px}
.mnav > summary{list-style:none;cursor:pointer;display:grid;place-items:center;width:36px;height:32px;border:1px solid var(--border-hi);border-radius:7px;color:var(--muted);background:var(--surface)}
.mnav > summary::-webkit-details-marker{display:none}
.mnav > summary svg{width:19px;height:19px}
.mnav[open] > summary{color:var(--text);background:var(--surface-2)}
.mnav-panel{position:absolute;left:0;right:0;top:var(--navh);height:calc(100dvh - var(--navh));overflow-y:auto;z-index:49;background:var(--bg);border-top:1px solid var(--border);padding:22px 26px 40px}
.mnav-panel a{display:block;padding:11px 0;font-size:16px;font-weight:500;border-bottom:1px solid var(--border)}
.mnav-panel a.btn{border-bottom:none;justify-content:center}
@media(max-width:760px){
  .mnav{display:block}
  .mnav{margin-left:0}
  .mnav > summary{width:44px;height:40px}
  /* El panel: sin scroll detrás, el último enlace por encima de la barra fija y la
       página actual marcada (aria-current, puesto en el build por _partials.py). */
  html:has(.mnav[open]){overflow:hidden}
  .mnav-panel{overscroll-behavior:contain;padding-bottom:calc(40px + 66px + env(safe-area-inset-bottom))}
  .mnav-panel a[aria-current="page"]{color:var(--acc-txt,var(--acc-txt));font-weight:700;
      box-shadow:inset 3px 0 0 var(--acc,var(--acc));padding-left:12px}
}
/* Rótulos del menú móvil: eran <h4> antes del <h1>; ahora <p> con el mismo aspecto. */
.mnav-panel .mnav-h{margin:20px 0 10px;font-size:11.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--subtle)}
.mnav-panel .mnav-h:first-child{margin-top:0}
/* Menú móvil: el botón de abajo heredaba display:block de los enlaces y quedaba pegado a la izquierda;
   el icono pasa a una X mientras está abierto. */
.mnav-panel a.btn{display:flex}
.mnav[open] > summary svg{display:none}
.mnav[open] > summary::after{content:"✕";font-size:18px;line-height:1;font-weight:600}

/* Barra fija en móvil: los padres llegan por el teléfono y la valoración tiene
   que estar siempre a un toque. */
.cta-movil{display:none}
@media(max-width:760px){
  .cta-movil{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:1000;gap:10px;padding:10px 14px calc(10px + env(safe-area-inset-bottom));
      background:rgba(255,253,250,.92);backdrop-filter:blur(12px);border-top:1px solid var(--border)}
  .cta-movil .btn{flex:1;height:44px;font-size:14px}
  body{padding-bottom:66px}
}
/* ══ Acciones flotantes (escritorio). La web actual tiene WhatsApp, llamar y
   subir; aquí van en una columna de cristal a la derecha, con etiqueta al pasar.
   La cita abre el cajón. ══ */
.flot{position:fixed;right:18px;bottom:22px;z-index:1000;display:flex;flex-direction:column;gap:8px;align-items:flex-end}
.flot a,.flot button{display:inline-flex;align-items:center;gap:0;height:44px;padding:0;border-radius:12px;border:1px solid var(--border-hi);
  background:rgba(255,253,250,.92);backdrop-filter:blur(10px);color:var(--text);font:inherit;cursor:pointer;box-shadow:var(--sh-lg);transition:.18s ease;overflow:hidden;white-space:nowrap}
.flot .ic{width:44px;height:44px;display:grid;place-items:center;flex-shrink:0}
.flot .ic svg{width:19px;height:19px}
.flot .tx{max-width:0;opacity:0;font-size:13.5px;font-weight:600;padding-right:0;transition:max-width .22s ease,opacity .18s ease,padding .22s ease}
.flot a:hover .tx,.flot button:hover .tx,.flot a:focus-visible .tx,.flot button:focus-visible .tx{max-width:180px;opacity:1;padding-right:16px}
.flot .cita{background:var(--acc-btn);color:#fff;border-color:transparent}
.flot .cita:hover{background:var(--acc-hi)}
.flot .wa{color:#1f8f4f}
.flot .arriba{height:38px;width:38px;border-radius:10px;justify-content:center;opacity:0;pointer-events:none;transform:translateY(6px)}
.flot .arriba .ic{width:38px;height:38px}
.flot .arriba.ver{opacity:1;pointer-events:auto;transform:none}
@media(max-width:760px){
  .flot{display:none}
}
.flot{view-transition-name:flot}
.flot .cita{transition:color .35s,background-color .35s,border-color .35s}

/* ══ Cajón de cita: <dialog> nativo, entra desde la derecha. ══ */
dialog.cita-dlg{border:none;padding:0;margin:0;max-width:none;max-height:none;width:min(480px,100vw);height:100dvh;
  position:fixed;inset:0 0 0 auto;z-index:1200;background:var(--bg);color:var(--text);box-shadow:-24px 0 60px -20px rgba(43,41,38,.35);
  transform:translateX(100%);transition:transform .32s cubic-bezier(.2,.7,.2,1)}
dialog.cita-dlg[open]{transform:none}
dialog.cita-dlg::backdrop{background:rgba(43,41,38,.42);backdrop-filter:blur(3px)}
.cita-in{height:100%;display:flex;flex-direction:column;overflow-y:auto}
/* Cabecera con barra de progreso: dos pasos cortos intimidan menos que un
   formulario de 21 campos de golpe, y saber cuántos quedan ayuda a terminarlo. */
.cita-head{position:sticky;top:0;z-index:2;display:flex;align-items:flex-start;gap:12px;padding:20px 24px 16px;
  background:rgba(255,253,250,.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}
.cita-head h2{margin:0;font-size:20px;letter-spacing:-.025em}
.cita-head .x{margin-left:auto;width:34px;height:34px;border-radius:9px;border:1px solid var(--border-hi);
  background:var(--surface);cursor:pointer;display:grid;place-items:center;color:var(--muted);flex-shrink:0}
.cita-head .x:hover{color:var(--text);background:var(--surface-2)}
.cita-head .x svg{width:16px;height:16px}
.cita-progreso{position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--border)}
.cita-progreso span{display:block;height:100%;width:50%;background:var(--acc-btn);transition:width .35s cubic-bezier(.2,.7,.2,1)}
.cita-form{padding:0;display:flex;flex-direction:column;flex:1}
.paso{padding:24px 24px 8px;display:grid;gap:15px;align-content:start}
.paso[hidden]{display:none}
.paso-n{margin:0;font-size:11.5px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--subtle)}
.paso-t{margin:-8px 0 4px;font-size:23px;letter-spacing:-.03em}
.volver-paso{justify-self:start;background:none;border:none;padding:0;font:inherit;font-size:13px;font-weight:600;
  color:var(--muted);cursor:pointer;margin-bottom:-6px}
.volver-paso:hover{color:var(--text)}
.cita-form fieldset{border:none;margin:0;padding:0;display:grid;gap:8px}
.cita-form label{display:grid;gap:6px;font-size:13px;font-weight:600}
.cita-form input,.cita-form select{font:inherit;font-size:15px;height:46px;padding:0 13px;border:1px solid var(--border-hi);
  border-radius:9px;background:var(--surface);color:var(--text);transition:border-color .15s,box-shadow .15s}
.cita-form input::placeholder{color:var(--subtle);font-weight:400}
.cita-form input:focus,.cita-form select:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-soft)}
.cita-form .dos{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.paso .btn{height:50px;font-size:15px;justify-content:center;margin-top:6px}
.cita-form .chk{display:flex;gap:10px;align-items:flex-start;font-size:13px;font-weight:400;color:var(--muted)}
.cita-form .chk input{width:17px;height:17px;margin:2px 0 0;accent-color:var(--acc)}
.cita-form .chk a{text-decoration:underline}
/* Pie de confianza: lo que quita el miedo a dejar el teléfono. */
.cita-confia{margin:auto 0 0;padding:18px 24px 22px;list-style:none;display:grid;gap:10px;
  border-top:1px solid var(--border-hi);background:var(--surface-2)}
.cita-confia li{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--text);font-weight:500}
.cita-confia li b{font-weight:700}
.cita-confia svg{width:16px;height:16px;color:#1f8f4f;flex-shrink:0;stroke-width:3}
.cita-ok{display:none;padding:52px 28px;text-align:center}
.cita-ok .ic{width:56px;height:56px;border-radius:16px;background:var(--acc-soft);color:var(--acc-txt);
  display:grid;place-items:center;margin:0 auto 18px}
.cita-ok .ic svg{width:26px;height:26px}
.cita-ok h3{margin:0 0 8px;font-size:24px;letter-spacing:-.03em}
.cita-ok > p{margin:0 0 24px;color:var(--muted)}
.cita-pasos{list-style:none;margin:0 0 26px;padding:0;display:grid;gap:12px;text-align:left}
.cita-pasos li{display:flex;gap:10px;font-size:14px;color:var(--muted);line-height:1.5}
.cita-pasos b{color:var(--acc-txt);flex-shrink:0}
dialog.cita-dlg.enviado .cita-form{display:none}
dialog.cita-dlg.enviado .cita-ok{display:block}
dialog.cita-dlg.enviado .cita-progreso span{width:100%}
@media(max-width:560px){
  dialog.cita-dlg{width:100vw}
  .cita-form .dos{grid-template-columns:1fr}
}
.cita-centro{margin:0;padding:9px 13px;border-radius:9px;background:var(--acc-soft);color:var(--acc-txt);font-size:13px;font-weight:600}
/* El acento de la línea manda también en la barra fija de móvil y en el cajón de cita: en TEENS
   todo va en morado y en Familia en petróleo. El fondo ya sale de `--acc-btn`; lo único propio es
   que en el cajón el hover del botón principal va a `--acc-hi` (no a `--acc-btn-hi`). */
.cita-form .btn-primary:hover{background:var(--acc-hi)}
/* ── Paso 1: para quién es. Tres tarjetas grandes en vez de doce pastillas de
   disciplinas: el padre que llega asustado no tiene por qué saber si necesita
   logopedia o terapia ocupacional — eso sale en la valoración. ── */
.quien{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.quien label{display:block;position:relative;cursor:pointer}
.quien input{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.q-card{display:grid;justify-items:center;gap:5px;padding:18px 10px 15px;border:1px solid var(--border-hi);
  border-radius:14px;background:var(--surface);text-align:center;transition:.15s}
.quien label:hover .q-card{border-color:var(--acc)}
.quien input:checked + .q-card{border-color:var(--acc);background:var(--acc-soft);box-shadow:0 0 0 2px var(--acc) inset}
.quien input:focus-visible + .q-card{outline:2px solid var(--acc);outline-offset:2px}
.q-ic{display:grid;place-items:center;width:40px;height:40px;border-radius:11px;margin-bottom:3px}
.q-ic svg{width:21px;height:21px}
.q-ic.inf{background:var(--inf-soft);color:var(--inf-txt)}
.q-ic.teen{background:var(--teen-soft);color:var(--teen)}
.q-ic.fam{background:var(--fam-soft);color:var(--fam)}
.q-card b{font-size:13.5px;letter-spacing:-.015em;line-height:1.25}
.q-card em{font-style:normal;font-size:11.5px;color:var(--subtle)}
.cita-form label:has(.opc){grid-template-columns:auto 1fr;align-items:baseline;column-gap:8px}
.cita-form label:has(.opc) textarea,.cita-form label:has(.opc) input{grid-column:1 / -1}
.opc{font-weight:400;font-size:12.5px;color:var(--subtle);text-transform:none;letter-spacing:0}
.opc::before{content:"· "}
.cita-form textarea{font:inherit;font-size:14.5px;padding:11px 13px;border:1px solid var(--border-hi);border-radius:9px;
  background:var(--surface);color:var(--text);resize:vertical;line-height:1.5}
.cita-form textarea::placeholder{color:var(--subtle);font-weight:400}
.cita-form textarea:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-soft)}
/* Cuando la cita se pide desde una línea concreta, se enseña la elección hecha
   en vez de volver a preguntar. */
.cita-elegido{display:flex;align-items:center;gap:9px;margin:0;padding:10px 13px;border-radius:9px;
  background:var(--acc-soft);color:var(--acc-txt);font-size:13px;font-weight:600}
.cita-elegido button{background:none;border:none;padding:0;margin-left:auto;font:inherit;font-size:12.5px;
  font-weight:600;color:var(--acc-txt);text-decoration:underline;cursor:pointer}
.cita-dlg.con-linea .volver-paso{display:none}
@media(max-width:420px){
  .quien{grid-template-columns:1fr}
  .q-card{grid-template-columns:auto 1fr;justify-items:start;text-align:left;align-items:center;gap:12px;padding:13px 14px}
  .q-ic{margin:0}
}
/* ── Paso 2: elegir centro ── */
.busca-centro{display:grid;gap:9px}
.geo-estado{margin:0;font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:7px}
.geo-estado.buscando::before{content:"";width:12px;height:12px;border-radius:50%;flex-shrink:0;
  border:2px solid var(--border-hi);border-top-color:var(--acc);animation:giro .7s linear infinite}
.geo-estado.ok{color:var(--acc-txt);font-weight:600}
.geo-estado button{background:none;border:none;padding:0;font:inherit;font-size:12.5px;font-weight:600;
  color:var(--acc-txt);text-decoration:underline;cursor:pointer}
.busca-centro input{font:inherit;font-size:15px;height:46px;padding:0 13px;border:1px solid var(--border-hi);
  border-radius:9px;background:var(--surface);color:var(--text)}
.busca-centro input:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-soft)}
.centros-aviso{margin:0;padding:11px 13px;border-radius:9px;background:var(--acc-soft);color:var(--acc-txt);
  font-size:13px;font-weight:600;line-height:1.45}
.centros-lista{display:grid;gap:7px;max-height:296px;overflow-y:auto;padding:2px;scrollbar-width:thin}
.centro-op{position:relative;display:block;cursor:pointer}
.centro-op input{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.centro-op > span{display:block;padding:12px 14px;border:1px solid var(--border-hi);border-radius:10px;
  background:var(--surface);transition:.14s}
.centro-op:hover > span{border-color:var(--acc)}
.centro-op input:checked + span{border-color:var(--acc);background:var(--acc-soft);box-shadow:0 0 0 1px var(--acc) inset}
.centro-op input:focus-visible + span{outline:2px solid var(--acc);outline-offset:2px}
.centro-op b{display:block;font-size:14px;letter-spacing:-.01em}
.centro-op em{display:block;font-style:normal;font-size:12.5px;color:var(--muted);margin-top:2px}
/* Mapa del paso 2, bajo el botón: ver dónde caen los centros ayuda a elegir
   más que una lista de nombres. */
.cita-mapa{height:230px;border-radius:12px;overflow:hidden;border:1px solid var(--border);
  background:var(--surface-2);margin-top:4px}
.cita-mapa .leaflet-container{height:100%;font-family:var(--sans)}
.cita-error{margin:10px 0 0;padding:10px 12px;border-radius:10px;background:#fdecea;color:#8a2a1f;font-size:13.5px;line-height:1.5}
.cita-error a{color:inherit;font-weight:700;text-decoration:underline}
@media(max-width:760px){
  .cita-form input{font-size:16px}
  .cita-form select{font-size:16px}
  .cita-form textarea{font-size:16px}
  .cita-form label,.cita-form .chk{font-size:14px}
  .cita-head .x{width:40px;height:40px}
  .volver-paso{min-height:40px}
  .cita-elegido button{min-height:36px}
  .cita-form .chk{align-items:center;padding:4px 0}
  .cita-form .chk input{width:22px;height:22px;margin:0;flex-shrink:0}
}
/* Cajón de cita abierto: la página de detrás no se mueve. En iPhone, si el paso era más corto que la
   pantalla, el dedo arrastraba el documento de fondo (bloqueado a la vista) y parecía un scroll que no
   avanzaba. El desplazamiento se queda dentro del cajón y no rebota hacia fuera. */
html:has(dialog.cita-dlg[open]){overflow:hidden}
html:has(dialog.cita-dlg[open]) body{overflow:hidden;touch-action:none}
dialog.cita-dlg,dialog.cita-dlg .cita-in{overscroll-behavior:contain;touch-action:pan-y}
.cita-in{-webkit-overflow-scrolling:touch}

/* ── Tarjeta de área/terapia ── */
.areas{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:44px;text-align:left}
.area{position:relative;border:1px solid var(--border);border-radius:var(--r);padding:26px 24px;background:var(--surface);box-shadow:var(--sh-sm);transition:box-shadow .18s,transform .18s}
.area:hover{box-shadow:var(--sh-lg);transform:translateY(-2px)}
.area .ic{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;background:var(--acc-soft);color:var(--acc-txt);margin-bottom:16px}
.area .ic svg{width:20px;height:20px}
/* Los iconos de terapia son los ILUSTRADOS de la marca, no pictogramas
   genéricos: cada uno ya viene con el color de su disciplina. */
.area .ic img{width:30px;height:30px;object-fit:contain}
.area[data-t]{--acc-txt:var(--ttxt);--acc-soft:var(--tsoft);--acc:var(--tc)}
.area[data-t]::before{content:"";position:absolute;left:0;top:22px;bottom:22px;width:3px;border-radius:0 3px 3px 0;background:var(--tc)}
.area[data-t="logopedia"]{--tc:var(--t-logopedia);--ttxt:var(--t-logopedia-txt);--tsoft:var(--t-logopedia-soft)}
.area[data-t="temprana"]{--tc:var(--t-temprana);--ttxt:var(--t-temprana-txt);--tsoft:var(--t-temprana-soft)}
.area[data-t="psicologia"]{--tc:var(--t-psicologia);--ttxt:var(--t-psicologia-txt);--tsoft:var(--t-psicologia-soft)}
.area[data-t="psicopedagogia"]{--tc:var(--t-psicopedagogia);--ttxt:var(--t-psicopedagogia-txt);--tsoft:var(--t-psicopedagogia-soft)}
.area[data-t="ocupacional"]{--tc:var(--t-ocupacional);--ttxt:var(--t-ocupacional-txt);--tsoft:var(--t-ocupacional-soft)}
.area[data-t="fisio"]{--tc:var(--t-fisio);--ttxt:var(--t-fisio-txt);--tsoft:var(--t-fisio-soft)}
.area[data-t]:hover{border-color:var(--tc)}
.area h3{font-size:17px;font-weight:700;letter-spacing:-.02em;margin:0 0 7px}
.area p{color:var(--muted);font-size:14.5px;line-height:1.55;margin:0}
.area .go{display:inline-flex;align-items:center;gap:6px;margin-top:12px;font-size:14px;font-weight:600;color:var(--acc-txt)}
@media(max-width:960px){
  .areas{grid-template-columns:1fr}
}
.area .num{position:absolute;top:18px;right:20px;font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--acc-txt);opacity:.7}
@media(max-width:760px){
  .area p{font-size:15.5px}
}

/* ══ Enfoque 360º. Antes: tres tarjetas grandes tapando un anillo punteado que
   se cortaba, y "El menor" descolgado bajo el círculo. Ahora el anillo es
   continuo y se DIBUJA al entrar en pantalla (un arco que recorre los 360º),
   los tres pilares se enganchan a él con un radio visible, y el centro lleva la
   huella con su rótulo dentro. Se lee como un sistema cerrado, que es la idea. ══ */
.r360{position:relative;width:min(100%,660px);margin:56px auto 0;aspect-ratio:1;display:grid;place-items:center}
.r360 svg.aro{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.r360 .aro .base{fill:none;stroke:var(--border-hi);stroke-width:1.2;stroke-dasharray:3 4}
.r360 .aro .trazo{fill:none;stroke:var(--acc);stroke-width:2.4;stroke-linecap:round;
  stroke-dasharray:264;stroke-dashoffset:264;transform:rotate(-90deg);transform-origin:50% 50%;
  transition:stroke-dashoffset 1.8s cubic-bezier(.4,0,.2,1) .15s}
.r360.vista .aro .trazo{stroke-dashoffset:0}
.r360 .aro .radio{stroke:var(--border-hi);stroke-width:1;stroke-dasharray:2 3;opacity:0;transition:opacity .5s ease}
.r360.vista .aro .radio{opacity:1;transition-delay:1.1s}
.r360 .grados{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:0;
  font-size:clamp(120px,17vw,190px);font-weight:800;letter-spacing:-.06em;color:var(--acc);opacity:.05;pointer-events:none}
.r360 .centro{position:relative;z-index:2;width:34%;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;
  text-align:center;gap:2px;padding:12px;background:radial-gradient(120% 120% at 30% 20%,#fff,var(--acc-soft));
  border:1px solid var(--border);box-shadow:var(--sh-lg)}
.r360 .centro img{width:46%;height:auto;opacity:.9}
.r360 .centro b{font-size:12.5px;letter-spacing:-.01em;color:var(--text)}
.r360 .pilar{position:absolute;z-index:3;width:30%;padding:16px 15px 15px;border-radius:16px;background:var(--surface);
  border:1px solid var(--border);box-shadow:var(--sh-lg);text-align:center;
  opacity:0;transform:scale(.9);transition:opacity .55s cubic-bezier(.2,.9,.3,1),transform .55s cubic-bezier(.2,1.2,.4,1)}
.r360.vista .pilar{opacity:1;transform:none}
.r360.vista .p1{transition-delay:.5s}
.r360.vista .p2{transition-delay:.85s}
.r360.vista .p3{transition-delay:1.2s}
.r360 .pilar .ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;margin:0 auto 9px;
  background:var(--acc-soft);color:var(--acc-txt)}
.r360 .pilar .ic svg{width:20px;height:20px}
.r360 .pilar h3{margin:0 0 5px;font-size:15px;font-weight:700;letter-spacing:-.02em}
.r360 .pilar p{margin:0;font-size:12.5px;line-height:1.45;color:var(--muted)}
/* los tres, en triángulo sobre el aro */
.r360 .p1{top:-2%;left:50%;transform:translateX(-50%) scale(.9)}
.r360.vista .p1{transform:translateX(-50%)}
.r360 .p2{bottom:6%;left:-1%}
.r360 .p3{bottom:6%;right:-1%}
@media(max-width:720px){
  /* En móvil sigue siendo un 360: aro, el menor en el centro y los tres pilares alrededor,
       más compactos. Antes se apilaban en fila y perdía el sentido. */
  .r360{margin:84px auto 0;width:100%;max-width:420px}
  .r360 .centro{width:28%}
  .r360 .centro b{font-size:11px}
  .r360 .pilar{width:41%;padding:10px 8px 9px;border-radius:12px}
  .r360 .pilar .ic{width:30px;height:30px;border-radius:9px;margin-bottom:6px}
  .r360 .pilar .ic svg{width:15px;height:15px}
  .r360 .pilar h3{font-size:12.5px;margin-bottom:3px}
  .r360 .pilar p{font-size:10.5px;line-height:1.35}
  .r360 .p1{top:-17%}
  .r360 .p2{bottom:-12%;left:-2%}
  .r360 .p3{bottom:-12%;right:-2%}
  .r360 + *,.r360 ~ .cta2{margin-top:70px}
  .r360 .grados{font-size:11px}
  /* Bloque 360: en columna, pero .r360.vista .p1 seguía desplazando la primera tarjeta medio ancho a la izquierda. */
  .r360.vista .p1{transform:none}
}

/* ══ Mapa de centros. Leaflet con los 64 centros reales, pero el panel es NUESTRO:
   mismas tarjetas, mismos botones cuadrados de Kaisfera, misma tipografía. ══ */
.mapa2{max-width:var(--wrap);margin:44px auto 0;padding:0;display:grid;grid-template-columns:370px 1fr;
  gap:0;border:1px solid var(--border);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh-lg);background:var(--surface)}
.mapa2-panel{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--border);background:var(--surface)}
.mapa2-filtros{padding:22px 22px 16px;border-bottom:1px solid var(--border);background:var(--surface-2)}
.mapa-paises{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 12px}
/* botones cuadrados, como en Kaisfera */
.mapa-paises button{font:inherit;height:32px;padding:0 13px;font-size:13px;font-weight:500;letter-spacing:-.01em;
  border-radius:6px;cursor:pointer;border:1px solid var(--border-hi);background:var(--surface);color:var(--muted);
  box-shadow:var(--sh-sm);transition:.12s ease}
.mapa-paises button:hover{background:var(--surface-2);color:var(--text)}
.mapa-paises button.on{background:var(--acc-btn);border-color:transparent;color:var(--acc-btn-txt,#fff);
  box-shadow:0 1px 2px color-mix(in srgb,var(--acc-btn) 25%,transparent),inset 0 1px 0 rgba(255,255,255,.18)}
.mapa2-buscar{display:flex;align-items:center;gap:9px;height:42px;padding:0 13px;border:1px solid var(--border-hi);
  border-radius:9px;background:var(--surface);color:var(--subtle)}
.mapa2-buscar:focus-within{outline:2px solid var(--acc);outline-offset:1px;border-color:transparent}
.mapa2-buscar svg{width:16px;height:16px;flex-shrink:0}
.mapa2-buscar input{flex:1;min-width:0;border:none;outline:none;background:none;font:inherit;font-size:14px;color:var(--text)}
.mapa2-buscar input::-webkit-search-cancel-button{cursor:pointer}
.mapa-cuenta{margin:12px 0 0;font-size:12.5px;font-weight:600;color:var(--subtle)}
.mapa2-lista{flex:1;overflow-y:auto;padding:8px 14px 16px;scrollbar-width:thin;max-height:560px}
.centro{display:block;cursor:pointer;padding:12px 14px;margin-bottom:7px;border:1px solid var(--border);border-radius:12px;
  background:var(--surface);transition:border-color .16s,box-shadow .16s,transform .16s}
.centro:hover,.centro.on{border-color:var(--acc);box-shadow:var(--sh-sm);transform:translateY(-1px)}
.centro b{display:block;font-size:14.5px;letter-spacing:-.015em}
.centro .dir{display:block;font-size:12.5px;color:var(--muted);margin-top:3px;line-height:1.4}
.centro .pie{display:flex;align-items:center;gap:9px;margin-top:9px}
.centro .etapa + .etapa{margin-left:5px}
.centro .etapa{margin-left:auto;font-size:11px;font-weight:700;letter-spacing:.04em;padding:3px 9px;border-radius:20px;
  background:var(--acc-soft);color:var(--acc-txt)}
.centro .etapa.teen{background:var(--teen-soft);color:var(--teen)}
.mapa2-error{padding:24px;color:var(--muted);font-size:14px}
.mapa2-viz,#mapaCentros{min-height:620px;height:100%}
#mapaCentros{background:var(--surface-2)}
/* el pin es nuestro, no el azul por defecto de Leaflet */
.pin-centro span{display:block;width:100%;height:100%;border-radius:50%;background:var(--c);
  border:2px solid #fff;box-shadow:0 2px 6px rgba(43,41,38,.35);transition:transform .16s}
.pin-centro.on span{transform:scale(1.1)}
.leaflet-container{font:inherit;background:var(--surface-2)}
.leaflet-tile-pane{filter:saturate(.42) brightness(1.06) contrast(.94) sepia(.14)}
.leaflet-popup-content-wrapper{border-radius:12px;box-shadow:var(--sh-lg);border:1px solid var(--border)}
.leaflet-popup-content{margin:14px 16px;font-family:var(--sans);font-size:13.5px;line-height:1.5;color:var(--muted)}
.leaflet-popup-content b{color:var(--text);font-size:14.5px;letter-spacing:-.01em}
.leaflet-popup-content a{color:var(--acc-txt);font-weight:600}
.leaflet-popup-tip{border:1px solid var(--border)}
.leaflet-bar a{border-radius:6px!important;color:var(--muted);border-color:var(--border)}
.leaflet-bar a:hover{color:var(--text)}
.leaflet-control-attribution{font-size:10.5px;background:rgba(255,253,250,.85)}
@media(max-width:900px){
  .mapa2{grid-template-columns:1fr;margin-top:32px}
  .mapa2-panel{border-right:none;border-bottom:1px solid var(--border)}
  .mapa2-lista{max-height:320px}
  .mapa2-viz,#mapaCentros{min-height:400px}
}
/* La página de centros usa EL MISMO componente que la home (.mapa2, panel a
   la izquierda); lo único que cambia es que es más alto y va a ancho completo. */
/* De borde a borde de la ventana: se sale del contenedor con el truco del 100vw
   centrado, y el panel se ensancha porque hay sitio de sobra. */
.mapa2--grande{max-width:none;width:100vw;margin:0 calc(50% - 50vw);
  grid-template-columns:clamp(340px,26vw,440px) 1fr;
  border-radius:0;border-left:none;border-right:none;box-shadow:none}
.mapa2--grande .mapa2-viz,.mapa2--grande #mapaCentros{min-height:clamp(620px,calc(100dvh - 168px),1040px)}
.mapa2--grande .mapa2-lista{max-height:clamp(620px,calc(100dvh - 168px),1040px)}
.mapa2--grande .mapa2-panel{border-left:none}
/* Los dos controles que faltaban en el mapa de la home. */
.mapa2-extra{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}
.mapa2-extra .btn{height:34px;font-size:12.5px}
.mapa2-extra .btn svg{width:14px;height:14px}
.c-solo-teens{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 12px;border-radius:6px;
  font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer;border:1px solid var(--border-hi);background:var(--surface)}
.c-solo-teens input{width:15px;height:15px;accent-color:var(--teen);cursor:pointer;margin:0}
.c-solo-teens:hover{color:var(--text)}
.centro .dist{margin-left:auto;font-size:12px;font-weight:700;color:var(--acc-txt)}
@media(max-width:900px){
  .mapa2--grande{grid-template-columns:1fr}
  .mapa2--grande .mapa2-viz,.mapa2--grande #mapaCentros{min-height:420px}
  .mapa2--grande .mapa2-lista{max-height:340px}
}
/* ── Acciones de cada ficha: llamar, ruta, cita ── */
.centro .acciones{display:flex;gap:6px;margin-top:11px;flex-wrap:wrap}
.acc-b{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border-radius:6px;
  border:1px solid var(--border-hi);background:var(--surface);color:var(--muted);
  font:inherit;font-size:12px;font-weight:600;cursor:pointer;transition:.14s;white-space:nowrap}
.acc-b:hover{border-color:var(--acc);color:var(--acc-txt);background:var(--acc-soft)}
.acc-b svg{width:13px;height:13px;flex-shrink:0}
.acc-b.cita{background:var(--acc-btn);border-color:transparent;color:#fff}
.acc-b.cita:hover{background:var(--acc-hi);color:#fff}
/* ── Popup del pin ── */
.pop-dir{display:block;color:var(--muted);font-size:12.5px;margin:4px 0 10px}
.pop-acc{display:flex;gap:6px;flex-wrap:wrap}
.pop-acc a,.pop-acc button{display:inline-flex;align-items:center;height:28px;padding:0 10px;border-radius:6px;
  border:1px solid var(--border-hi);background:var(--surface);color:var(--muted);
  font:inherit;font-size:12px;font-weight:600;cursor:pointer;text-decoration:none}
.pop-acc a:hover,.pop-acc button:hover{border-color:var(--acc);color:var(--acc-txt)}
.pop-acc button{background:var(--acc-btn);border-color:transparent;color:#fff}
.pop-acc button:hover{background:var(--acc-hi);color:#fff}
/* ── Sin resultados ── */
.sin-nada{padding:34px 22px;text-align:center}
.sin-nada b{display:block;font-size:15.5px;letter-spacing:-.01em;margin-bottom:7px}
.sin-nada p{color:var(--muted);font-size:13.5px;line-height:1.5;margin:0 0 16px}
.sin-nada .btn{margin:0 4px 8px}
.centro .tit{display:block;color:inherit}
.centro .tit:hover b{color:var(--acc-txt);text-decoration:underline}
.mapa-pie{display:flex;align-items:center;justify-content:center;gap:8px;margin:22px 0 0;font-size:14.5px;color:var(--muted)}
.mapa-pie svg{width:16px;height:16px;color:var(--acc-txt);flex-shrink:0}
.mapa-pie a{display:inline-flex;align-items:center;gap:6px;color:var(--acc-txt);font-weight:600}
.mapa-pie a svg{width:14px;height:14px;transition:transform .2s}
.mapa-pie a:hover svg{transform:translateX(3px)}
@media(max-width:760px){
  .centro .dir{font-size:13.5px}
  .mapa2-buscar input{font-size:16px}
  .acc-b{height:40px;padding:0 12px;font-size:13px}
  .acc-b svg{width:14px;height:14px}
  .centro .acciones{gap:8px}
  .centro .tit{padding:6px 0}
  .mapa-paises button{height:40px;padding:0 15px}
  .mapa2-buscar{height:48px}
  .mapa2-extra .btn{min-height:40px}
  .c-solo-teens{height:40px}
  .c-solo-teens input{width:20px;height:20px}
  .leaflet-container.leaflet-touch .leaflet-bar a{width:40px;height:40px;line-height:40px;font-size:20px}
}
/* Pines del mapa: el objetivo táctil pasa a 24×24 (WCAG 2.5.8) sin cambiar el punto que se ve (15 / 22 px). */
.pin-centro{width:24px!important;height:24px!important;margin-left:-12px!important;margin-top:-12px!important;display:grid;place-items:center}
.pin-centro span{width:15px;height:15px}
.pin-centro.on span{width:22px;height:22px}
/* Provincias de la lista del mapa: <h3> bajo el <h2> de la sección, mismo aspecto que el <h4> anterior. */
.mapa2-lista .mapa2-h{position:sticky;top:0;z-index:1;margin:14px 0 8px;padding:6px 8px;font-size:11px;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;color:var(--subtle);background:var(--surface)}
.mapa2-lista .mapa2-h:first-child{margin-top:4px}
/* Cada ficha de la lista lleva el color de la línea que atiende ese centro: la etiqueta sola no se
   ve, y todo salía naranja aunque el centro fuera de adolescentes. El color va en el BORDE, que
   sigue la curva de la esquina; una franja `::before` recta se veía mal ahí. */
/* La línea del centro se ve en sus etiquetas («Infantil» naranja, «TEENS» morado), que ya llevan
   color: nada de cintas ni bordes de color, que con dos líneas partían la ficha (decisión del owner).
   Lo que sí conserva cada ficha son los colores de SU línea en el botón y la etiqueta, aunque la
   página sea de otro color (la portada es verde). */
.centro.c-inf,.centro.c-ambas{--acc:var(--inf);--acc-hi:var(--inf-hi);--acc-txt:var(--inf-txt);--acc-soft:var(--inf-soft);--acc-btn:var(--inf);--acc-btn-txt:var(--text);--acc-btn-hi:#e0850a}
.centro.c-teen{--acc:var(--teen);--acc-hi:var(--teen-hi);--acc-txt:var(--teen);--acc-soft:var(--teen-soft);--acc-btn:var(--teen);--acc-btn-txt:#fff;--acc-btn-hi:var(--teen-hi)}
/* En los que atienden las dos, la etiqueta de TEENS mantiene su morado. */
/* Contenedores con su propio desplazamiento: al llegar a su final, el gesto NO debe seguir
   arrastrando la página. Sin esto, la lista de 64 centros (15.500 px dentro de una ventana de 320)
   daba la sensación de que la página bajaba sin fin, sobre todo en móvil.

   Va por EJES a propósito (2026-09-09). `overscroll-behavior` corta los dos, y en un contenedor
   que solo se desplaza en horizontal eso deja la rueda muerta: con el cursor sobre una tabla de
   un artículo o de /ayudas la página no bajaba y había que hacer clic fuera. En los horizontales
   se contiene solo la X; el eje vertical, que ese contenedor no usa, sigue propagando a la página. */
.mapa2-lista,.centros-lista,.cita-in,.mnav-panel{overscroll-behavior:contain}
.carr.sin-cinta,.carr.cinta,.carr--quieta .carr-pista,.temas-nav .wrap,
.prosa table,.ay-acc .cuerpo table{overscroll-behavior-x:contain}

/* ══ Landing de terapia. Cada una toma el color de su disciplina por variables
   en el <body>, así el mismo CSS sirve para las seis. ══ */
.miga{position:relative;z-index:2;background:transparent;margin-bottom:-18px}
.miga .wrap{display:flex;align-items:center;gap:8px;padding-top:18px;padding-bottom:0;font-size:13px;color:var(--muted);flex-wrap:wrap}
.miga a:hover{color:var(--text)}
.miga span{color:var(--subtle)}
.miga b{color:var(--acc-txt);font-weight:600}
.miga{view-transition-name:miga}
.miga a{transition:color .35s,background-color .35s,border-color .35s}
.miga b{transition:color .35s,background-color .35s,border-color .35s}
@media(max-width:760px){
  .miga a{display:inline-block;padding:10px 0;margin:-10px 0}
}

/* ── Terapias relacionadas ── */
.rel-terapias{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-top:40px}
.rel-t{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px 12px;border:1px solid var(--border);
  border-radius:16px;background:var(--surface);box-shadow:var(--sh-sm);transition:border-color .16s,box-shadow .16s,transform .16s}
.rel-t:hover{border-color:var(--tc);box-shadow:var(--sh-lg);transform:translateY(-2px)}
.rel-t img{width:38px;height:38px;object-fit:contain}
.rel-t b{font-size:13.5px;letter-spacing:-.01em;color:var(--ttxt);text-align:center;line-height:1.3}
@media(max-width:960px){
  .rel-terapias{grid-template-columns:repeat(2,1fr)}
  .rel-terapias{grid-template-columns:1fr 1fr}
}

/* El .viz también admite vídeo (Quiénes somos). */
.viz{margin:0}
.viz video{position:relative;z-index:1;width:100%;height:100%;object-fit:cover;border-radius:var(--r);box-shadow:var(--sh-lg)}
/* El rótulo del medio es un PIE DE FIGURA, no un botón (2026-09-09). Era un `.chip`
   —borde, fondo, cursor de mano— que en escritorio quedaba colgando bajo el vídeo,
   suelto y desalineado con su esquina redondeada, y parecía un elemento roto. Ahora es
   `<figure>/<figcaption>` y usa exactamente la misma tipografía de pie que la ficha de
   vídeo de la portada (`.video-card figcaption`): una sola forma de rotular un medio en
   toda la web. No va superpuesto: sobre un vídeo que cambia de fotograma no hay forma de
   garantizar el contraste AA, y en móvil tapaba lo que se ve. */
.viz figcaption{margin-top:12px;font-size:13.5px;color:var(--subtle)}
@media(max-width:720px){
  .viz{height:auto}
  .viz video{height:auto;aspect-ratio:16/9}
}

/* ══ Cinta continua (reseñas, equipo) ═════════════════════════════════════
   Se desliza sin parar y en bucle. Los bordes se difuminan para que las
   tarjetas entren y salgan en vez de cortarse en seco. ══ */
.carr{position:relative;overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}
.carr-pista{display:flex;gap:18px;width:max-content;padding:4px 2px 8px}
.carr-pista > *{flex:0 0 auto}
.carr.cinta .carr-pista{animation:cinta var(--dur,60s) linear infinite}
/* Se para al pasar por encima: si estás leyendo una reseña, que no se te vaya. */
.carr.cinta:hover .carr-pista,
.carr.cinta:focus-within .carr-pista,
.carr.parada .carr-pista{animation-play-state:paused}
/* Sin JS o con reduce-motion: sigue siendo una lista deslizable a mano. */
.carr.sin-cinta{overflow-x:auto;scrollbar-width:none}
.carr.sin-cinta::-webkit-scrollbar{display:none}
/* Flechas: solo en las cintas quietas. */
.carr-fl{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:40px;height:40px;border-radius:50%;
  display:grid;place-items:center;border:1px solid var(--border-hi);background:var(--surface);color:var(--muted);
  cursor:pointer;box-shadow:var(--sh-lg);transition:.15s}
.carr-fl:hover:not([disabled]){color:var(--text);transform:translateY(-50%) scale(1.06)}
.carr-fl[disabled]{opacity:0;pointer-events:none}
.carr-fl svg{width:18px;height:18px}
.carr-fl.izq{left:8px}
.carr-fl.der{right:8px}
.carr.sin-flechas .carr-fl{display:none}
/* Cinta QUIETA: se arrastra a mano, con anclaje. Para contenido que se lee
   (reseñas). Dos cintas animadas a la vez en una pantalla marean. */
/* Sin la máscara del contenedor: las flechas caen en el borde y la máscara
   las dejaba transparentes. El difuminado se aplica a la pista, no aquí. */
.carr--quieta{position:relative;overflow:visible;scroll-padding-left:2px;
  -webkit-mask-image:none;mask-image:none}
.carr--quieta .carr-pista{overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent)}
.carr--quieta .carr-pista::-webkit-scrollbar{display:none}
.carr--quieta .carr-pista{animation:none;width:auto}
.carr--quieta .carr-pista > *{scroll-snap-align:start}
/* ── Reseñas. Solo se pintan si el centro tiene reseñas REALES en los datos. ── */
.carr-pista.resenas > .resena{width:min(380px,84vw)}
.resena{margin:0;padding:26px 26px 22px;border:1px solid var(--border);border-radius:var(--r);
  background:var(--surface);box-shadow:var(--sh-sm);display:flex;flex-direction:column;gap:14px}
.resena .estrellas{color:var(--inf);font-size:15px;letter-spacing:2px;line-height:1}
.resena blockquote{margin:0;font-size:14.5px;line-height:1.6;color:var(--text);
  display:-webkit-box;-webkit-line-clamp:9;-webkit-box-orient:vertical;overflow:hidden}
.resena figcaption{margin-top:auto;padding-top:12px;border-top:1px solid var(--border);
  display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}
.resena figcaption b{font-size:13px;font-weight:700;letter-spacing:-.01em}
.resena figcaption span{font-weight:500;color:var(--subtle);font-size:12.5px}
/* ── Equipo. Retrato vertical: se ve mejor la cara que en un círculo pequeño. ── */
.carr-pista.equipo > .miembro{width:212px}
.miembro{margin:0}
.miembro .retrato{position:relative;aspect-ratio:3/4;border-radius:var(--r);overflow:hidden;
  background:var(--surface-hi);box-shadow:var(--sh-sm)}
.miembro .retrato::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 55%,rgba(43,41,38,.22));opacity:0;transition:opacity .25s}
.miembro:hover .retrato::after{opacity:1}
.miembro img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.miembro:hover img{transform:scale(1.04)}
.miembro figcaption{margin-top:14px}
.miembro b{display:block;font-size:15.5px;letter-spacing:-.015em}
.miembro span{display:block;font-size:12.5px;color:var(--muted);line-height:1.45;margin-top:5px}
@media(max-width:760px){
  .carr-pista.equipo > .miembro{width:158px}
  .resena blockquote{font-size:15.5px}
}
/* Pista desplazable de las cintas con flechas: ahora recibe el foco. */
.carr--quieta .carr-pista:focus-visible{outline:2px solid var(--text);outline-offset:-2px;border-radius:8px}
/* Cinta con pocas tarjetas: quieta, sin copias, alineada a la izquierda. */
/* Cinta corta (equipos de pocas personas, pocas reseñas): no se mueve, así que deja de ser cinta y
   pasa a rejilla centrada. Sin el degradado de los bordes, que recortaba la primera tarjeta. */
.carr.carr--corta{-webkit-mask-image:none;mask-image:none;overflow:visible}
.carr.carr--corta .carr-pista{width:auto;animation:none;display:flex;flex-wrap:wrap;justify-content:center;gap:18px}
.carr.carr--corta .carr-pista > *{flex:0 1 210px;max-width:240px}

/* ── Cabecera de sección ── */
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:26px;flex-wrap:wrap;margin-bottom:32px;text-align:left}
.sec-head .h2,.sec-head .lede{text-align:left;margin-left:0}
.sec-head .h2{margin-bottom:8px;max-width:22ch}
.sec-head .lede{margin:0;max-width:56ch}
@media(max-width:760px){
  .sec-head{flex-direction:column;align-items:flex-start;gap:16px}
}
/* ── Señales: la cabecera lleva el botón a la derecha (.sec-head). ── */
.sec-head .btn{flex-shrink:0;margin-bottom:6px}
@media(max-width:720px){
  .sec-head .btn{width:100%}
}
.sec-head .lede a{color:var(--acc-txt);font-weight:600}

/* ── Chips ── */
.chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:0 0 34px}
.chip{font:inherit;font-size:13px;font-weight:600;padding:8px 13px;border:1px solid var(--border);border-radius:8px;
  background:var(--surface);color:var(--muted);cursor:pointer;transition:border-color .15s,background .15s,color .15s}
.chip small{font-size:11.5px;font-weight:600;color:var(--subtle);margin-left:3px}
.chip:hover{border-color:var(--acc);color:var(--acc-txt)}
.chip[aria-pressed="true"]{background:var(--acc-soft);color:var(--acc-txt);border-color:var(--acc)}
.chip[aria-pressed="true"] small{color:var(--acc-txt)}

/* ── Tarjeta de artículo/servicio ── */
.pc{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--r);background:var(--surface);overflow:hidden;
  color:inherit;text-decoration:none;box-shadow:var(--sh-sm);
  transition:opacity .3s ease,transform .3s ease,box-shadow .2s,border-color .2s,display .3s allow-discrete}
.pc:hover{transform:translateY(-3px);box-shadow:var(--sh-lg);border-color:var(--acc)}
.pc-img{aspect-ratio:16/10;background:linear-gradient(135deg,var(--acc-soft),var(--surface-2));overflow:hidden;display:grid;place-items:center}
.pc-img .pc-ico{width:64px;height:64px;object-fit:contain;opacity:.85}
.pc:hover .pc-img .pc-ico{transform:none}
.pc-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.pc:hover .pc-img img{transform:scale(1.04)}
.pc-in{padding:18px 20px 20px;display:flex;flex-direction:column;gap:8px;flex:1}
.pc-tag{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--acc-txt)}
.pc h3{font-size:18px;font-weight:700;letter-spacing:-.02em;line-height:1.22;margin:0;color:var(--text)}
.pc p{margin:0;font-size:14.5px;color:var(--muted);line-height:1.55;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.pc-meta{margin-top:auto;padding-top:10px;font-size:12.5px;color:var(--subtle)}
.pc[hidden]{display:none;opacity:0;transform:scale(.96)}
@starting-style{
  .pc{opacity:0;transform:scale(.96)}
}

/* ── Bloque por tema ── */
.tema-bloque{margin-top:60px}
.tema-cab{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:20px;padding-bottom:14px;border-bottom:1px solid var(--border)}
.tema-cab .eb{margin:0 0 8px;color:var(--acc-txt)}
.tema-cab h2{font-size:clamp(22px,2.6vw,30px);font-weight:800;letter-spacing:-.025em;line-height:1.1;margin:0;color:var(--text);text-wrap:balance}
.tema-cab .go{white-space:nowrap;font-size:14px;font-weight:600;color:var(--acc-txt);text-decoration:none;padding-bottom:2px}
.tema-cab .go:hover{text-decoration:underline;text-underline-offset:3px}
@media(max-width:600px){
  .tema-cab{flex-direction:column;align-items:flex-start;gap:8px}
}
/* ── Bloques por tipo dentro de una sola sección (como «Por temas» del blog) ── */
.sec .tema-bloque:first-of-type{margin-top:44px}
.tema-cab .tipo-frase{margin:8px 0 0;font-size:15px;line-height:1.55;color:var(--muted);max-width:64ch}
@media(max-width:600px){
  .tema-cab{flex-direction:column;align-items:flex-start;gap:8px}
  .tema-cab .go{white-space:normal}
}

/* ── Trabaja con nosotros: panel de KaiEmpleo (variante A del ciclo de diseño) ── */
/* ── A · Panel de producto ── */
.panel{display:grid;grid-template-columns:1.05fr .95fr;border:1px solid var(--border-hi);border-radius:var(--r);overflow:hidden;
  box-shadow:var(--sh-lg);background:var(--surface);text-align:left}
.panel-txt{position:relative;padding:50px 48px 46px;background:linear-gradient(155deg,#fff 0%,var(--acc-soft) 100%)}
.panel-txt::after{content:"";position:absolute;right:-120px;top:-120px;width:320px;height:320px;border-radius:50%;
  background:radial-gradient(circle,rgba(56,118,179,.22),transparent 68%);pointer-events:none}
.panel-txt > *{position:relative;z-index:1}
.panel-txt .eb{margin-bottom:22px;color:var(--acc-txt)}
.km{display:inline-flex;align-items:baseline;line-height:1;letter-spacing:-.035em;color:var(--acc-hi);font-weight:300}
.km b{font-weight:800}
.km-row{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.km-row .km{font-size:44px}
.km-tag{font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--subtle)}
.panel-txt .h2{text-align:left;margin:22px 0 12px;max-width:16ch;font-size:clamp(26px,3vw,34px)}
.panel-txt .lede{text-align:left;margin:0;font-size:16px;max-width:48ch}
.panel-txt .check-list{margin-top:22px;gap:9px}
.panel-txt .check-list li{font-size:14.5px;color:var(--text)}
.panel-txt .check-list svg{color:var(--acc)}
.panel-acciones{margin-top:30px;display:flex;gap:11px;flex-wrap:wrap;align-items:center}
.panel-nota{margin:18px 0 0;font-size:13.5px;color:var(--subtle)}
.panel-nota a{color:var(--acc-txt);font-weight:600}
.panel-pasos{padding:50px 46px 46px;border-left:1px solid var(--border);display:flex;flex-direction:column;justify-content:center}
.panel-pasos .eb{margin-bottom:26px;color:var(--subtle)}
.tl{list-style:none;margin:0;padding:0}
.tl li{position:relative;display:grid;grid-template-columns:56px 1fr;gap:20px;padding-bottom:34px}
.tl li:last-child{padding-bottom:0}
.tl li::before{content:"";position:absolute;left:27px;top:60px;bottom:6px;width:2px;background:var(--border-hi)}
.tl li::after{content:"";position:absolute;left:27px;top:60px;bottom:6px;width:2px;background:var(--acc);transform:scaleY(0);transform-origin:top;transition:transform .55s ease}
.tl li:last-child::after{display:none}
.tl.vista li:nth-child(1)::after{transform:scaleY(1);transition-delay:.35s}
.tl.vista li:nth-child(2)::after{transform:scaleY(1);transition-delay:1.05s}
.tl.vista li:nth-child(1) .n,.tl.vista li:nth-child(3) .n{background:var(--acc-soft);color:var(--acc-txt)}
.tl.vista li:nth-child(1) .n{transition-delay:.1s;transform:scale(1.06)}
.tl.vista li:nth-child(2) .n{transition-delay:.8s;transform:scale(1.06)}
.tl.vista li:nth-child(3) .n{transition-delay:1.5s;transform:scale(1.06)}
@media(prefers-reduced-motion:reduce){.tl li::after{transition:none}.tl .n{transition:none}}
.tl li:last-child::before{display:none}
.tl .n{width:56px;height:56px;border-radius:12px;display:grid;place-items:center;background:var(--acc-soft);color:var(--acc-txt);
  font-size:19px;font-weight:800;letter-spacing:-.02em;border:1px solid rgba(56,118,179,.16);
  transition:background .4s ease,color .4s ease,box-shadow .4s ease,transform .4s ease}
.tl.vista li:nth-child(2) .n{background:var(--acc);color:#fff;border-color:transparent;box-shadow:0 6px 16px -6px color-mix(in srgb,var(--acc) 55%,transparent)}
.tl h3{margin:6px 0 6px;font-size:18px;font-weight:700;letter-spacing:-.02em}
.tl p{margin:0;font-size:14.5px;color:var(--muted);line-height:1.55}
@media(max-width:900px){
  .panel{grid-template-columns:1fr}
  .panel-pasos{border-left:none;border-top:1px solid var(--border)}
  .panel-txt,.panel-pasos{padding:30px 22px}
  .km-row .km{font-size:34px}
  .tl li{grid-template-columns:44px 1fr;gap:14px;padding-bottom:26px}
  .tl .n{width:44px;height:44px;font-size:16px}
  .tl li::before{left:21px;top:50px}
  /* .tl: la línea animada (::after) no se había movido con el número a 44px y salía doble. */
  .tl li::after{left:21px;top:50px}
}

/* ── La nota honesta de disponibilidad: no todos los centros, preguntad en el vuestro ── */
.disp{display:flex;gap:14px;align-items:flex-start;margin:40px auto 0;max-width:860px;padding:18px 22px;border:1px solid var(--border-hi);border-radius:14px;background:var(--surface)}
.disp > svg{width:22px;height:22px;flex-shrink:0;color:var(--acc-txt);margin-top:2px}
.disp p{margin:0;font-size:14.5px;line-height:1.6;color:var(--muted)}
.disp p b{color:var(--text)}
.disp a{display:inline-flex;align-items:center;gap:5px;color:var(--acc-txt);font-weight:700;text-decoration:none}
.disp a svg{width:14px;height:14px;transition:transform .2s}
.disp a:hover svg{transform:translateX(3px)}
.disp-otros{color:var(--text)}
.disp + .tipo-mas{max-width:860px;margin:14px auto 0}
@media(max-width:600px){
  .disp{flex-direction:column;gap:10px;padding:16px 18px}
}

/* ═══ 4. SECCIONES POR PLANTILLA — cada bloque solo lo usa su página ═══ */

/* ══ El escenario: carrusel de las tres etapas ═══════════════════════════════ */
.stage{position:relative;overflow-x:clip;height:86vh;min-height:600px;max-height:900px;overflow:hidden;background:var(--bg)}
.slide{position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity 1s ease;
  display:flex;align-items:center;justify-content:center;padding:30px 28px 140px}
.slide.on{opacity:1;visibility:visible}
/* Luz, no color plano: dos focos difusos grandes que se solapan, y un grano
   finísimo encima para que respire (una web de tecnología va plana; esta no). */
.slide-bg{position:absolute;inset:0;z-index:0;overflow:hidden;background:var(--bg)}
.slide-bg::before,.slide-bg::after,.aurora{content:"";position:absolute;border-radius:50%;filter:blur(96px);will-change:transform}
.slide-bg::before{width:66vw;height:66vw;max-width:880px;max-height:880px;left:62%;top:34%;transform:translate(-50%,-50%);
  background:radial-gradient(circle,var(--la),transparent 66%);animation:aurora1 26s ease-in-out infinite}
.slide-bg::after{width:50vw;height:50vw;max-width:660px;max-height:660px;left:20%;top:76%;transform:translate(-50%,-50%);
  background:radial-gradient(circle,var(--lb),transparent 66%);animation:aurora2 32s ease-in-out infinite}
.aurora{width:44vw;height:44vw;max-width:580px;max-height:580px;left:44%;top:14%;transform:translate(-50%,-50%);
  background:radial-gradient(circle,var(--la),transparent 68%);opacity:.6;animation:aurora3 38s ease-in-out infinite}
.slide-bg::after,.slide-bg::before{opacity:.9}
.slide-vel{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,var(--bg) 0%,rgba(255,253,250,.42) 22%,rgba(255,253,250,0) 55%)}
.grano{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:.5;mix-blend-mode:soft-light;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .55 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}
/* Texto a la izquierda, persona a la derecha. Clínica = caras. */
.slide-in{position:relative;z-index:2;width:100%;max-width:var(--wrap);display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
.slide.marca .slide-in{grid-template-columns:.9fr 1.1fr;gap:48px}
.slide.marca .s-name{font-size:clamp(40px,5.2vw,72px)}
.slide .up{opacity:0;transform:translateY(26px);transition:opacity .85s cubic-bezier(.2,.7,.2,1),transform .85s cubic-bezier(.2,.7,.2,1),filter .85s ease}
.slide.on .up{opacity:1;transform:none}
.slide.on .up.d1{transition-delay:.12s}
.slide.on .up.d2{transition-delay:.24s}
.slide.on .up.d3{transition-delay:.36s}
.slide.on .up.d4{transition-delay:.2s}
.slide .s-name.up{filter:blur(12px);transform:translateY(22px) scale(.96)}
.slide.on .s-name.up{filter:blur(0);transform:none}
.slide .s-kicker{color:var(--acc-txt)}
.s-name{font-weight:800;font-size:clamp(41.4px,5.76vw,79.2px);letter-spacing:-.04em;line-height:.96;margin:0;text-wrap:balance}
.slide.marca .s-name{display:inline-block;background:linear-gradient(100deg,var(--inf) 12%,var(--inf-lima) 62%,var(--olive));background-size:150% 100%;-webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;animation:flow 8s ease-in-out infinite}
.slide .s-name{color:var(--acc-hi)}
.s-line{color:var(--muted);font-size:clamp(16px,1.6vw,19px);max-width:46ch;margin:22px 0 0;line-height:1.55}
.s-line b{color:var(--text);font-weight:600}
.s-cta{margin-top:30px;display:flex;gap:12px;flex-wrap:wrap}
/* La foto: una persona, grande, en una forma orgánica que recuerda a la huella,
   con su propia luz detrás. Es la firma visual de esta web. */
.s-photo{position:relative;justify-self:end;width:min(100%,520px);aspect-ratio:1}
.s-photo::before{content:"";position:absolute;inset:-12%;border-radius:50%;filter:blur(60px);opacity:.75;z-index:0;
  background:radial-gradient(circle,var(--la),transparent 62%)}
.s-photo img,.s-photo video{position:relative;z-index:1;width:100%;height:100%;object-fit:cover;
  border-radius:64% 36% 58% 42% / 40% 62% 38% 60%;box-shadow:var(--sh-lg)}
/* El vídeo institucional, como contenido que se elige ver: póster + controles
   nativos. No de fondo — es un promo hablado de dos minutos a 640x360. */
.video-card{max-width:760px;margin:44px auto 0}
.video-card video{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:var(--r);
  background:var(--surface-hi);box-shadow:var(--sh-lg);border:1px solid var(--border)}
.video-card figcaption{margin-top:12px;font-size:13.5px;color:var(--subtle)}
/* ── Pestañas + barra = la línea de tiempo ── */
.tabs{position:absolute;left:0;right:0;bottom:0;z-index:5;display:flex;gap:28px;max-width:var(--wrap);margin:0 auto;padding:0 28px 8px}
.tab{flex:1 1 0;min-width:0;position:relative;background:none;border:none;cursor:pointer;text-align:left;padding:16px 0 20px;font:inherit}
.tab::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;border-radius:2px;background:rgba(43,41,38,.12)}
.tab .bar{position:absolute;top:0;left:0;height:2px;border-radius:2px;width:0;background:var(--acc);z-index:1}
/* La barra de cada pestaña va en el color de SU línea (la portada es verde y, sin esto, Infantil
   heredaba el verde de la página mientras el resto sí cambiaba). */
.tab.inf .bar{background:var(--inf)}
.tab.teen .bar{background:var(--teen)}
.tab.fam .bar{background:var(--fam)}
.tab.online .bar{background:var(--olive)}
.tab.franq .bar{background:#8a6a1f}
.tab .eb{display:block;font-size:10.5px;color:var(--subtle);margin-bottom:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tab .tt{display:block;font-size:14.5px;font-weight:600;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .2s}
.tab.on .tt,.tab:hover .tt{color:var(--text)}
/* ══ Bajo el pliegue ══════════════════════════════════════════════════════════ */
.why{padding:104px 0;text-align:center;border-bottom:1px solid var(--border)}
.why h2{font-weight:700;font-size:clamp(30px,4.6vw,50px);letter-spacing:-.03em;line-height:1.08;margin:0 auto;max-width:20ch;text-wrap:balance}
.why .lede{color:var(--muted);font-size:18px;line-height:1.6;max-width:640px;margin:22px auto 0}
.why .lede b{color:var(--text);font-weight:600}
.why .cta2{margin-top:32px}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin:60px auto 0;max-width:960px}
.stat{border:1px solid var(--border);border-radius:var(--r);padding:36px 28px;background:var(--surface);box-shadow:var(--sh-sm);text-align:center}
.stat .n{font-weight:800;font-size:clamp(44px,6vw,64px);letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.stat:nth-child(1) .n{color:var(--acc-hi)}
.stat:nth-child(2) .n{color:var(--olive-hi)}
.stat:nth-child(3) .n{color:var(--acc-txt)}
.stat .k{font-weight:600;font-size:16px;margin-top:14px;letter-spacing:-.01em}
.stat .s{color:var(--muted);font-size:13.5px;margin-top:6px;line-height:1.45}
@media(max-width:960px){
  .stage{height:auto;min-height:0;max-height:none}
  .slide{position:relative;inset:auto;display:none;padding:44px 24px 130px}
  .slide.on{display:flex}
  .slide-in{grid-template-columns:1fr;gap:30px}
  .s-photo{justify-self:center;width:min(100%,380px)}
  .stats{grid-template-columns:1fr}
  .tab .eb{display:none}
  .tabs{gap:14px;padding:0 16px 6px}
  .tab{padding:14px 0 16px}
  .why,.metodo{padding:64px 0}
}
/* ══ Mosaico de marca: todo anda CONMiGO en el primer impacto. Cinco piezas,
   cada una con su color, su foto y su logotipo; todas son puertas. Entran
   escalonadas al entrar y luego se quedan quietas: son clicables y un botón
   que se mueve solo se siente raro y estorba al apuntar. ══ */
.bento{display:grid;grid-template-columns:1.25fr 1fr 1fr;grid-template-rows:repeat(2,minmax(150px,1fr));gap:12px;aspect-ratio:1.28;width:100%}
.tile{position:relative;overflow:hidden;border-radius:18px;background:var(--acc-soft);border:1px solid rgba(255,255,255,.55);box-shadow:var(--sh-lg);
  display:flex;flex-direction:column;justify-content:flex-end;padding:16px;color:#fff;isolation:isolate;
  transition:transform .25s cubic-bezier(.2,.7,.2,1),box-shadow .25s}
.tile:hover{transform:translateY(-4px) scale(1.01);box-shadow:0 26px 50px -18px rgba(43,41,38,.32),0 4px 12px -4px rgba(43,41,38,.1)}
.tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;transition:transform .6s ease}
.tile:hover img{transform:scale(1.05)}
.tile::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,0) 35%,var(--acc-hi) 100%);opacity:.92}
.tile .k{position:relative;z-index:2;font-size:11px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;opacity:.85;margin:0 0 4px}
.tile .n{position:relative;z-index:2;font-size:19px;font-weight:800;letter-spacing:-.02em;line-height:1.1;margin:0}
.tile .n small{display:block;font-size:12.5px;font-weight:500;opacity:.9;margin-top:4px;letter-spacing:0}
.tile .ar{position:absolute;z-index:2;top:12px;right:12px;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;
  background:rgba(255,255,255,.18);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.35);transition:.2s}
.tile .ar svg{width:14px;height:14px}
.tile:hover .ar{background:#fff;color:var(--acc-txt)}
.tile.inf{grid-row:1 / span 2}
.tile.inf .n{font-size:24px}
/* la pieza de Familia lleva el PNG recortado: se ve sobre el color, no a sangre */
.tile.fam img{object-fit:contain;object-position:center 38%;padding:8% 8% 22%}
.tile.fam{background:linear-gradient(160deg,var(--fam-soft),#cfe0de)}
.tile.fam::after{background:linear-gradient(180deg,rgba(0,0,0,0) 40%,var(--fam-hi) 92%);opacity:.95}
/* Online no tiene foto: icono grande y color de marca */
.tile.online{background:linear-gradient(150deg,var(--inf-lima),var(--olive))} /* de fondo, mientras carga la foto */
.tile.franq::after{background:linear-gradient(180deg,rgba(43,41,38,.05) 30%,#4c3a10 100%)}
/* entrada escalonada (solo al aparecer) */
.slide.marca .tile{opacity:0;transition:opacity .5s ease,box-shadow .25s}
.slide.marca.on .tile{opacity:1;animation:llega .72s cubic-bezier(.16,1.02,.3,1) backwards}
/* cada pieza viene de un borde distinto: se reúnen en una sola casa */
.tile.inf{--desde:translate(-52vw,18vh) rotate(-7deg) scale(.86)}
.tile.teen{--desde:translate(0,-46vh) rotate(5deg) scale(.86)}
.tile.fam{--desde:translate(48vw,-26vh) rotate(8deg) scale(.86)}
.tile.online{--desde:translate(-16vw,44vh) rotate(-5deg) scale(.86)}
.tile.franq{--desde:translate(44vw,34vh) rotate(6deg) scale(.86)}
.slide.marca.on .tile:nth-child(1){animation-delay:.06s}
.slide.marca.on .tile:nth-child(2){animation-delay:.14s}
.slide.marca.on .tile:nth-child(3){animation-delay:.22s}
.slide.marca.on .tile:nth-child(4){animation-delay:.3s}
.slide.marca.on .tile:nth-child(5){animation-delay:.38s}
@media(max-width:960px){
  .bento{aspect-ratio:auto;grid-template-columns:1fr 1fr;grid-template-rows:auto}
  .tile{min-height:132px}
  .tile.inf{grid-row:auto;grid-column:1 / -1;min-height:180px}
}
/* Home: la portada "marca" fijaba dos columnas con más especificidad que la regla
   responsive y el mosaico quedaba en 80px de ancho en el móvil. */
@media(max-width:760px){
  .slide.marca .slide-in{grid-template-columns:1fr}
  .bento{width:100%;max-width:420px;margin:0 auto}
}
/* Los cuadros del mosaico llevan SIEMPRE el color de su línea, no el acento de la página:
   Infantil es naranja aunque la portada cambie de color de marca. */
.tile.inf::after{background:linear-gradient(180deg,rgba(0,0,0,0) 35%,var(--inf-hi) 100%)}
.tile.inf{background:var(--inf-soft)}

/* ══ Páginas de línea. El acento de la línea manda en toda la página. ══ */
.lhero{position:relative;overflow:hidden;padding:64px 0 72px;background:var(--bg)}
.lhero .luz{position:absolute;inset:0;z-index:0;overflow:hidden;-webkit-mask-image:linear-gradient(to bottom,transparent,#000 18%,#000 82%,transparent);mask-image:linear-gradient(to bottom,transparent,#000 18%,#000 82%,transparent)}
.lhero .luz::before,.lhero .luz::after{content:"";position:absolute;border-radius:50%;filter:blur(90px)}
.lhero .luz::before{width:70vw;height:70vw;max-width:900px;max-height:900px;right:-12%;top:-6%;background:radial-gradient(circle,var(--la),transparent 66%)}
.lhero .luz::after{width:48vw;height:48vw;max-width:600px;max-height:600px;left:-10%;bottom:-30%;background:radial-gradient(circle,var(--lb),transparent 66%)}
.lhero::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,var(--bg) 0%,rgba(255,253,250,.5) 24%,rgba(255,253,250,0) 60%,var(--bg) 100%)}
.lhero .in{position:relative;z-index:1;max-width:var(--wrap);margin:0 auto;padding:0 28px;display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
.lhero .eyebrow{color:var(--acc-txt)}
.lhero h1{font-weight:800;font-size:clamp(38px,5.2vw,64px);letter-spacing:-.04em;line-height:.98;margin:0;color:var(--acc-hi);text-wrap:balance}
.lhero .lede{margin:20px 0 0;max-width:48ch}
.lhero .cta{margin-top:28px;display:flex;gap:11px;flex-wrap:wrap}
.lhero .s-photo::before{background:radial-gradient(circle,var(--la),transparent 62%)}
/* El subrayado de la cabecera es de la MARCA: verde en todas las páginas, aunque la página sea
   naranja o morada (decisión del owner). Lo mismo en el menú «Nosotros». */
@media(max-width:960px){
  .lhero .in{grid-template-columns:1fr;gap:30px}
}
/* ══ Páginas de línea: más cuerpo ══ */
.cifras{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin:0 auto;max-width:var(--wrap);padding:0 28px}
.cifras > div{padding:26px 24px;border-left:1px solid var(--border)}
.cifras > div:first-child{border-left:none;padding-left:0}
.cifras b{display:block;font-size:30px;font-weight:800;letter-spacing:-.035em;color:var(--acc-txt);line-height:1}
.cifras span{display:block;font-size:13.5px;color:var(--muted);margin-top:7px}
.cifras-band{border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface-2)}
@media(max-width:960px){
  .cifras{grid-template-columns:1fr 1fr}
  .cifras > div{border-left:none;border-top:1px solid var(--border);padding-left:0}
  .cifras > div:nth-child(-n+2){border-top:none}
  .cifras{grid-template-columns:1fr}
  .cifras > div:nth-child(2){border-top:1px solid var(--border)}
}
/* Cifras a ancho completo fuera de las landings de línea. */
.cifras-band .cifras{padding-top:0;padding-bottom:0}

/* ── Landing de terapia ── */
.terapia .lhero{padding:56px 0 64px}
.t-foto{position:relative;justify-self:end;width:min(100%,480px);aspect-ratio:1;display:grid;place-items:center}
.t-foto::before{content:"";position:absolute;inset:4%;border-radius:52% 48% 58% 42% / 46% 54% 44% 56%;
  background:var(--acc-soft);z-index:0}
.t-foto img{position:relative;z-index:1;width:88%;height:88%;object-fit:contain}
.t-def{display:grid;grid-template-columns:auto 1fr;gap:28px;align-items:start;text-align:left}
.t-def-ic{width:74px;height:74px;border-radius:20px;display:grid;place-items:center;background:var(--acc-soft);flex-shrink:0}
.t-def-ic img{width:42px;height:42px;object-fit:contain}
.t-def .h2{margin:0 0 12px;max-width:none;text-align:left}
.t-def .lede{margin:0;max-width:70ch;text-align:left}
.t-senales{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:start;text-align:left}
.t-senales .h2,.t-senales .lede{text-align:left;margin-left:0}
.t-senales-lista{margin:0;gap:13px}
.t-senales-lista li{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:13px 15px;font-size:14.5px}
.t-senales-lista svg{color:var(--acc)}
.terapia .acc{max-width:860px}
@media(max-width:960px){
  .t-def{grid-template-columns:1fr;gap:18px}
  .t-senales{grid-template-columns:1fr;gap:28px}
  .t-foto{justify-self:center;width:min(100%,340px)}
}
/* La foto del hero de línea, con la misma forma orgánica que en terapias. */
.terapia .t-foto img,.t-foto img{border-radius:0}

/* ══ Página de centros ══ */
.c-hero{position:relative;overflow:hidden;padding:40px 0 34px;text-align:center;background:var(--bg)}
.c-hero .luz{position:absolute;inset:0;z-index:0;overflow:hidden}
.c-hero .luz::before,.c-hero .luz::after{content:"";position:absolute;border-radius:50%;filter:blur(90px)}
.c-hero .luz::before{width:70vw;height:70vw;max-width:900px;max-height:900px;right:-14%;top:-10%;
  background:radial-gradient(circle,var(--la),transparent 66%)}
.c-hero .luz::after{width:52vw;height:52vw;max-width:660px;max-height:660px;left:-12%;top:6%;
  background:radial-gradient(circle,rgba(174,181,56,.22),transparent 66%)}
/* velo: funde el color con el fondo arriba (bajo el header) y abajo (hacia el mapa) */
.c-hero::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,var(--bg) 0%,rgba(255,253,250,.55) 26%,rgba(255,253,250,0) 58%,rgba(255,253,250,.7) 100%)}
.c-hero .wrap{position:relative;z-index:1}
.c-hero h1{font-weight:800;font-size:clamp(32px,4.4vw,50px);letter-spacing:-.04em;line-height:1.02;margin:0;text-wrap:balance}
.c-hero .lede{margin:0 auto}
.c-cifras{display:grid;grid-template-columns:repeat(4,auto);gap:0;justify-content:center;margin:26px auto 0}
.c-cifras > div{padding:0 34px;border-left:1px solid var(--border)}
.c-cifras > div:first-child{border-left:none}
.c-cifras b{display:block;font-size:34px;font-weight:800;letter-spacing:-.04em;line-height:1;color:var(--acc-txt)}
.c-cifras span{display:block;font-size:13px;color:var(--muted);margin-top:6px}
.c-provincias{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;margin-top:38px;text-align:left}
.c-prov{display:flex;align-items:center;gap:11px;padding:14px 16px;border:1px solid var(--border);border-radius:12px;
  background:var(--surface);box-shadow:var(--sh-sm);cursor:pointer;font:inherit;text-align:left;width:100%;
  transition:border-color .16s,box-shadow .16s,transform .16s}
.c-prov:hover{border-color:var(--acc);box-shadow:var(--sh-lg);transform:translateY(-2px)}
.c-prov b{font-size:14.5px;letter-spacing:-.01em}
.c-prov .n{margin-left:auto;font-size:12px;font-weight:700;padding:3px 9px;border-radius:20px;background:var(--acc-soft);color:var(--acc-txt)}
.c-prov .pais{display:block;font-size:11.5px;color:var(--subtle);font-weight:500;margin-top:2px}
.c-como-head{text-align:center;max-width:60ch;margin:0 auto}
.c-como-head .h2,.c-como-head .lede{margin-left:auto;margin-right:auto}
.c-galeria{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:200px 200px;gap:14px;margin-top:44px}
.c-galeria figure{position:relative;margin:0;overflow:hidden;border-radius:var(--r);box-shadow:var(--sh-lg)}
.c-galeria img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.c-galeria figure:hover img{transform:scale(1.05)}
.c-galeria figcaption{position:absolute;left:0;right:0;bottom:0;padding:26px 16px 13px;color:#fff;font-size:13px;font-weight:600;
  background:linear-gradient(180deg,transparent,rgba(43,41,38,.78))}
.c-galeria .g1{grid-column:1 / span 2;grid-row:1 / span 2}
.c-galeria .g2{grid-column:3 / span 2}
.c-galeria .g3{grid-column:3}
.c-galeria .g4{grid-column:4}
@media(max-width:900px){
  .c-cifras{grid-template-columns:repeat(2,1fr);gap:22px 0}
  .c-cifras > div:nth-child(3){border-left:none}
  .c-galeria{grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,160px)}
  .c-galeria .g1{grid-column:1 / span 2;grid-row:1}
  .c-galeria .g2{grid-column:1 / span 2;grid-row:2}
  .c-galeria .g3{grid-column:1;grid-row:3}
  .c-galeria .g4{grid-column:2;grid-row:3}
}
/* En centros el hero arranca pegado al header: su borde inferior marcaba una
   línea que partía la página. */
.pagina-centros .nav{border-bottom-color:transparent}
.pagina-centros .areas{grid-template-columns:repeat(4,1fr)}
@media(max-width:1000px){
  .pagina-centros .areas{grid-template-columns:1fr 1fr}
  .pagina-centros .areas{grid-template-columns:1fr}
}
/* El mapa manda en el hero: dice dónde está de un vistazo. Los datos van debajo,
   en una barra compacta, en vez de repetir la dirección en una ficha. */
.c-hero-mapa{justify-self:end;width:min(100%,520px);border:1px solid var(--border);border-radius:var(--r);
  overflow:hidden;background:var(--surface);box-shadow:var(--sh-lg)}
.c-hero-mapa .c-mini-mapa{height:250px;border:none;border-radius:0;box-shadow:none;
  border-bottom:1px solid var(--border)}
.c-hero-datos{padding:4px 20px}
.c-hero-datos > div{padding:12px 0;border-bottom:1px solid var(--border)}
.c-hero-datos > div:last-child{border-bottom:none}
.c-hero-datos dt{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--subtle)}
.c-hero-datos dd{margin:4px 0 0;font-size:14px;line-height:1.45}
.c-hero-datos dd a{font-weight:600;color:var(--acc-txt)}
.c-hero-datos dd a:hover{text-decoration:underline}
.c-hero-acc{display:flex;gap:8px;padding:14px 20px 18px;border-top:1px solid var(--border);background:var(--surface-2)}
.c-hero-acc .btn{flex:1;justify-content:center}
@media(max-width:960px){
  .c-hero-mapa{justify-self:stretch;width:auto}
  .c-hero-mapa .c-mini-mapa{height:210px}
}
/* ══ Páginas de provincia (/centros/en-<provincia>.html) ══
   Solo define la rejilla y las etiquetas de terapia; la tarjeta reutiliza `.centro`, que ya
   existe para la lista del mapa (allí es pulsable, aquí no: por eso el cursor vuelve a ser
   el normal). El directorio de /centros.html pasó de <button> a <a>, así que `.c-prov`
   necesita heredar el color del texto en vez del de los enlaces. */
.c-prov{color:inherit}

/* ══ Página de centro ══════════════════════════════════════════════════════ */
.c-etapas{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}
.c-etapa{font-size:12px;font-weight:700;padding:6px 12px;border-radius:6px;
  background:var(--acc-soft);color:var(--acc-txt);border:1px solid rgba(0,0,0,.05)}
.c-etapa.teen{background:var(--teen-soft);color:var(--teen)}
/* ── Bloque de línea dentro de la página de un centro. El color va en el filo,
   el rótulo y el botón; el fondo se queda neutro como en el resto del sitio.
   Teñir el fondo entero de naranja o morado ensuciaba la página. ── */
.c-linea{position:relative;padding:72px 0}
.c-linea--teen{background:var(--surface-2);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.c-linea-head{display:grid;grid-template-columns:1fr auto;gap:28px;align-items:end;text-align:left;
  padding-bottom:22px;border-bottom:2px solid var(--acc);margin-bottom:34px}
.c-linea-logo{height:64px;width:auto;margin:0 0 16px}
.c-linea-head .eb{color:var(--acc-txt);margin:0 0 9px}
.c-linea-head .h2{text-align:left;margin:0 0 10px;max-width:22ch;font-size:clamp(24px,3vw,34px)}
.c-linea-head .lede{text-align:left;margin:0;max-width:60ch}
/* Terapias SIN caja: icono, nombre y una línea fina. Las tarjetas con relleno
   competían con las del resto del sitio y ensuciaban el bloque. */
.c-linea .rel-terapias{display:grid;grid-template-columns:repeat(3,1fr);gap:0 34px;margin:0}
.c-linea .rel-t{flex-direction:row;align-items:center;gap:13px;justify-content:flex-start;text-align:left;
  padding:15px 2px;border:none;border-bottom:1px solid var(--border);border-radius:0;background:none;
  box-shadow:none;transition:color .15s,padding .18s}
.c-linea .rel-t:hover{transform:none;box-shadow:none;border-color:var(--tc);padding-left:8px}
.c-linea .rel-t img{width:30px;height:30px;flex-shrink:0}
.c-linea .rel-t b{font-size:15px;text-align:left;color:var(--text);font-weight:600}
.c-linea .rel-t:hover b{color:var(--ttxt)}
.c-linea-pie{margin-top:30px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.c-linea-pie .go{display:inline-flex;align-items:center;gap:7px;font-weight:600;font-size:15px;color:var(--acc-txt)}
.c-linea-pie .go .ar{transition:transform .2s}
.c-linea-pie .go:hover .ar{transform:translateX(4px)}
@media(max-width:900px){
  .c-linea{padding:52px 0}
  .c-linea-head{grid-template-columns:1fr;gap:18px;align-items:start}
  .c-linea-head .btn{justify-self:start}
  .c-linea .rel-terapias{grid-template-columns:1fr}
}
.c-mini-mapa{height:400px;border-radius:var(--r);overflow:hidden;border:1px solid var(--border);box-shadow:var(--sh-lg)}
.c-mini-mapa .leaflet-container{height:100%;background:var(--surface-2)}
/* Otros centros de la provincia */
.c-otros{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-top:36px;text-align:left}
.c-otro{display:block;padding:16px 18px;border:1px solid var(--border);border-radius:14px;background:var(--surface);
  box-shadow:var(--sh-sm);transition:border-color .16s,box-shadow .16s,transform .16s}
.c-otro:hover{border-color:var(--acc);box-shadow:var(--sh-lg);transform:translateY(-2px)}
.c-otro b{display:block;font-size:15px;letter-spacing:-.01em}
.c-otro span{display:block;font-size:12.5px;color:var(--subtle);margin-top:3px}
/* La dirección y el «Ver centro →» mandan sobre el <span> genérico (más específicos). */
.c-otro .dir{font-size:12.5px;color:var(--muted);line-height:1.4}
.c-otro .ver{margin-top:6px;font-size:13px;font-weight:600;color:var(--acc-txt)}
@media(max-width:960px){
  .c-mini-mapa{height:300px}
  .c-linea-logo{height:52px}
}
/* Sello de valoración de Google en el hero del centro. */
.c-nota{display:inline-flex;align-items:center;gap:9px;margin:0 0 18px;flex-wrap:wrap}
.c-nota .estrellas{color:var(--inf);font-size:15px;letter-spacing:1px;line-height:1}
.c-nota b{font-size:16px;letter-spacing:-.02em}
.c-nota span:last-child{font-size:13px;color:var(--muted)}
/* ── Ficha de centro: reseñas sin texto publicado → nota + puerta a Google ── */
.resenas-min{display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap}
.resenas-min .h2{margin-left:0;max-width:22ch}
.resenas-min .lede{margin-left:0;max-width:48ch}
/* ── Ficha de centro: galería de salas (y vídeo si lo hay) ── */
.galeria{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:170px;gap:12px}
.gal-foto{display:block;overflow:hidden;border-radius:14px;border:1px solid var(--border);background:var(--surface-2)}
.gal-foto img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.gal-foto:hover img{transform:scale(1.04)}
.galeria .gal-foto:first-child{grid-column:span 2;grid-row:span 2}
.gal-video{grid-column:span 2;grid-row:span 2;border-radius:14px;overflow:hidden;border:1px solid var(--border);background:#000}
.gal-video iframe{width:100%;height:100%;border:0;display:block}
.galeria.con-video .gal-foto:first-child{grid-column:span 1;grid-row:span 1}
@media(max-width:900px){
  .galeria{grid-template-columns:repeat(2,1fr);grid-auto-rows:150px}
  .galeria .gal-foto:first-child,.gal-video{grid-column:span 2;grid-row:span 2}
  .c-otro .dir{font-size:13.5px}
  .c-linea-pie .go,.tema-cab .go{padding:10px 0}
}
/* Datos del centro: ahora es un <dl> de verdad; sin el margen por defecto del navegador. */
dl.c-hero-datos{margin:0}
/* Segundo teléfono (fijo) en la ficha: el principal y el que marca el botón es siempre el móvil. */
.tel-fijo{font-size:13px;color:var(--muted)}

/* ── Blog ─────────────────────────────────────────────────────────────────────
   El índice reutiliza la cabecera de línea (.lhero) a una columna, y las
   tarjetas llevan el color de SU tema (la paleta de la terapia), igual que las
   fichas. La entrada es una columna de lectura (.prosa) a 72 caracteres. ── */
.lhero.solo .in{grid-template-columns:1fr;max-width:860px;text-align:center;justify-items:center}
.lhero.solo .lede{margin-left:auto;margin-right:auto}
.lhero.solo .cta{justify-content:center}
.lhero.solo .eyebrow a{color:inherit;text-decoration:none;border-bottom:1px solid currentColor}
.post-hero{padding-bottom:104px}
.post-hero h1{font-size:clamp(32px,4.4vw,52px);letter-spacing:-.035em;line-height:1.04}
.post-meta{margin:16px 0 0;font-size:13.5px;color:var(--subtle)}
.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.blog-vacio{text-align:center;color:var(--muted);padding:30px 0}
.post-portada{max-width:980px;margin:-64px auto 0;padding:0 28px;position:relative;z-index:2}
.post-portada img{width:100%;height:auto;aspect-ratio:2/1;object-fit:cover;border-radius:var(--r);border:1px solid var(--border);box-shadow:var(--sh-lg);display:block}
.prosa{max-width:72ch;margin:56px auto 0;padding:0 28px;font-size:17px;line-height:1.72;color:var(--text)}
.prosa h2{font-size:clamp(24px,3vw,32px);font-weight:800;letter-spacing:-.025em;line-height:1.12;margin:46px 0 14px;color:var(--acc-hi);text-wrap:balance}
.prosa h3{font-size:21px;font-weight:700;letter-spacing:-.02em;line-height:1.2;margin:34px 0 10px}
.prosa h4{font-size:17px;font-weight:700;margin:26px 0 8px}
.prosa h2:first-child,.prosa h3:first-child{margin-top:0}
.prosa p{margin:0 0 18px}
.prosa ul,.prosa ol{margin:0 0 20px;padding-left:24px}
.prosa li{margin:0 0 8px}
.prosa li::marker{color:var(--acc);font-weight:700}
.prosa a:not(.btn){color:var(--acc-txt);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--acc);text-decoration-thickness:1.5px}
.prosa .btn{font-size:14px;height:40px;padding:0 16px;margin:4px 8px 4px 0;text-decoration:none}
.prosa .btn-primary{color:#fff}
.prosa .btn-ghost{color:var(--text)}
.prosa a:hover{text-decoration-color:var(--acc-hi)}
.prosa strong{font-weight:700}
.prosa figure{margin:30px 0}
.prosa img{max-width:100%;height:auto;display:block;margin:0 auto;border-radius:12px}
.prosa figcaption{font-size:13.5px;color:var(--subtle);text-align:center;margin-top:8px}
.prosa table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.5;margin:0 0 24px;display:block;overflow-x:auto}
.prosa th,.prosa td{border:1px solid var(--border);padding:10px 12px;text-align:left;vertical-align:top}
.prosa th{background:var(--acc-soft);color:var(--acc-txt);font-weight:700}
.prosa blockquote{margin:26px 0;padding:14px 20px;border-left:3px solid var(--acc);background:var(--surface-2);color:var(--muted);border-radius:0 12px 12px 0}
.prosa blockquote p:last-child{margin:0}
.prosa details{border:1px solid var(--border);border-radius:12px;padding:0 18px;margin:0 0 10px;background:var(--surface)}
.prosa summary{padding:14px 0;font-weight:600;cursor:pointer;list-style:none;display:flex;align-items:center;gap:10px}
.prosa summary::-webkit-details-marker{display:none}
.prosa summary::after{content:"+";margin-left:auto;font-weight:600;font-size:19px;color:var(--subtle);transition:transform .2s}
.prosa details[open] summary::after{transform:rotate(45deg)}
.prosa details[open] summary{color:var(--acc-txt)}
.prosa details > :not(summary){margin-top:0}
.prosa details > :last-child{margin-bottom:16px}
.post-aviso{max-width:calc(72ch + 56px);margin:44px auto 0;padding:0 28px}
.post-aviso p{margin:0;padding:16px 20px 16px 22px;border-left:3px solid var(--acc);background:var(--acc-soft);color:var(--acc-txt);font-size:14.5px;line-height:1.6;border-radius:0 12px 12px 0}
.post-aviso a{color:inherit;font-weight:600}
/* El blog baja a dos columnas entre 601 y 699 px; por encima de 700 le caben las tres. */
@media(max-width:699px){
  .blog-grid{grid-template-columns:1fr 1fr}
  .post-portada{margin-top:-44px}
  .blog-grid{grid-template-columns:1fr}
  .prosa{font-size:16.5px}
  .prosa table{font-size:14px}
}
/* ── Blog: portada editorial y hubs ── */
.pilares{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:minmax(0,auto);gap:22px}
.pilares .pc.grande{grid-column:1 / span 2;grid-row:1 / span 2}
.pilares .pc.grande .pc-img{aspect-ratio:auto;flex:1 1 auto;min-height:280px}
.pilares .pc.grande .pc-in{padding:24px 28px 26px}
.pilares .pc.grande h3{font-size:clamp(22px,2.4vw,30px);letter-spacing:-.03em;line-height:1.12}
.pilares .pc.grande p{font-size:15.5px;-webkit-line-clamp:4}
.hub-acciones{margin-top:28px;display:flex;gap:11px;justify-content:center;flex-wrap:wrap}
.lhero.solo .hub-acciones{margin-top:24px}
@media(max-width:960px){
  .pilares{grid-template-columns:1fr 1fr}
  .pilares .pc.grande{grid-column:1 / -1;grid-row:auto}
  .pilares .pc.grande .pc-img{aspect-ratio:16/9;min-height:0}
  .pilares{grid-template-columns:1fr}
}
/* ── Navegación del blog: pestañas de texto, no botones. La activa lleva una
      línea fina del color de su tema. Pegada bajo el menú, siempre a un clic. ── */
.temas-nav{position:sticky;top:var(--navh);z-index:40;background:var(--bg);border-bottom:1px solid var(--border);box-shadow:0 10px 24px -18px rgba(43,41,38,.28);view-transition-name:temas-nav}
.temas-nav .wrap{display:flex;flex-wrap:wrap;justify-content:center;gap:0 2px;max-width:1280px}
.tn{position:relative;display:inline-flex;align-items:baseline;gap:4px;padding:15px 9px 13px;font-size:13.5px;font-weight:500;color:var(--muted);text-decoration:none;white-space:nowrap;transition:color .25s}
.tn small{font-size:11px;font-weight:600;color:var(--subtle);transition:color .25s}
.tn::after{content:"";position:absolute;left:9px;right:9px;bottom:-1px;height:2px;border-radius:2px;background:var(--acc);transform:scaleX(0);transform-origin:center;transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.tn:hover{color:var(--acc-txt)}
.tn:hover::after{transform:scaleX(1);opacity:.45}
.tn.actual::after,.tn.actual:hover::after{opacity:1}
.tn.actual{color:var(--acc-txt);font-weight:700}
.tn.actual small{color:var(--acc-txt)}
.tn.actual::after{transform:scaleX(1)}
@media(max-width:900px){
  .temas-nav .wrap{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .temas-nav .wrap::-webkit-scrollbar{display:none}
}
.temas-nav + .sec{padding-top:52px}
/* El filtro de edad, con el mismo lenguaje: texto y línea, sin cajas */
.blog .chips{gap:0 4px;margin:0 0 30px;border-bottom:1px solid var(--border)}
.blog .chip{border:none;background:none;border-radius:0;padding:10px 12px 12px;position:relative;color:var(--muted);font-weight:500}
.blog .chip::after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:2px;border-radius:2px;background:var(--acc);transform:scaleX(0);transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.blog .chip:hover{color:var(--acc-txt);background:none}
.blog .chip:hover::after{transform:scaleX(1);opacity:.45}
.blog .chip[aria-pressed="true"]::after{opacity:1}
.blog .chip[aria-pressed="true"]{background:none;color:var(--acc-txt);font-weight:700;border:none}
.blog .chip[aria-pressed="true"]::after{transform:scaleX(1)}
.tn{transition:color .35s,background-color .35s,border-color .35s}
.tn small{transition:color .35s,background-color .35s,border-color .35s}
.tn::after{transition:color .35s,background-color .35s,border-color .35s}
/* La cabecera del blog mide lo mismo en la portada y en los nueve hubs: dos líneas de
   título, tres de entradilla y la fila de acciones. Así la barra de temas no baila
   al cambiar de tema y el fundido no parece un salto. */
.blog .lhero.solo .in > div{display:flex;flex-direction:column;align-items:center}
.blog .lhero.solo h1{min-height:2.08em;display:flex;align-items:flex-end;justify-content:center}
.blog .lhero.solo .lede{min-height:4.8em}
.blog .lhero.solo{view-transition-name:blog-hero}
/* ── Lectura con índice: los h2 del artículo, a la izquierda y fijos en escritorio ── */
.lectura{max-width:calc(72ch + 56px + 260px);margin:56px auto 0;padding:0 28px;display:grid;grid-template-columns:220px minmax(0,72ch);gap:0 40px;align-items:start}
.lectura .prosa{margin:0;padding:0;max-width:none}
.toc{position:sticky;top:calc(var(--navh) + 24px)}
.toc summary{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--acc-txt);list-style:none;cursor:default;margin:0 0 12px}
.toc summary::-webkit-details-marker{display:none}
.toc ol{list-style:none;margin:0;padding:0;border-left:2px solid var(--border)}
.toc li a{display:block;padding:6px 0 6px 14px;margin-left:-2px;border-left:2px solid transparent;font-size:13.5px;line-height:1.4;color:var(--muted);text-decoration:none;transition:color .2s,border-color .2s}
.toc li a:hover{color:var(--acc-txt);border-left-color:var(--acc)}
.prosa h2[id]{scroll-margin-top:calc(var(--navh) + 20px)}
@media(max-width:1100px){
  .lectura{display:block;max-width:calc(72ch + 56px)}
  .toc{position:static;margin:0 0 28px;border:1px solid var(--border);border-radius:12px;padding:0 18px;background:var(--surface)}
  .toc summary{cursor:pointer;margin:0;padding:14px 0;display:flex;align-items:center}
  .toc summary::after{content:"+";margin-left:auto;font-size:19px;font-weight:600;color:var(--subtle);letter-spacing:0;transition:transform .2s}
  .toc details[open] summary::after{transform:rotate(45deg)}
  .toc ol{margin:0 0 14px}
}
/* ── Programas, talleres y ayudas ── */
/* Etiquetas de ficha bajo el título (edad, horas, semanas, formato) en las cabeceras «solo» de
   programas y talleres. `.lhero .datos` está oculto en las páginas de línea, por eso una clase propia. */
.lhero.solo .ficha-datos{margin:22px auto 0;padding:0;list-style:none;display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.lhero.solo .ficha-datos li,.prosa .ficha-datos li{font-size:13px;font-weight:600;padding:7px 12px;border-radius:20px;background:var(--acc-soft);color:var(--acc-txt);border:1px solid rgba(0,0,0,.05)}
.lhero.solo .ficha-datos a{color:inherit;text-decoration:none}
.lhero.solo .ficha-datos a:hover{text-decoration:underline}
.prosa .ficha-datos{margin:0 0 18px;padding:0;list-style:none;display:flex;gap:10px;flex-wrap:wrap}
.prosa .ficha-datos li{margin:0}
/* La cabecera del taller, bajo el hero, como la portada del blog. */
@media(max-width:600px){
  .lhero.solo .ficha-datos li{font-size:12px;padding:6px 10px}
  .tn{padding:15px 12px 13px}
  .toc li a{padding:10px 0 10px 14px}
}
/* ── Móvil: lo que cambia de tamaño por debajo de 720 px ── */
@media(max-width:720px){
  /* Pestañas de temas: un carril que se cortaba por la derecha parecía roto; en varias filas se ve todo. */
  .temas-nav .wrap{flex-wrap:wrap;justify-content:center;overflow:visible;row-gap:0}
  .temas-nav .tn{padding:11px 9px 9px;font-size:13px}
}

/* ── Trabaja con nosotros ── */
.perfiles{display:grid;gap:12px;margin-top:34px}
.perfil{border:1px solid var(--border);border-radius:var(--r);background:var(--surface);overflow:hidden;transition:border-color .2s,box-shadow .2s}
.perfil:hover,.perfil[open]{border-color:var(--acc);box-shadow:var(--sh-lg)}
.perfil summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:16px;padding:18px 22px}
.perfil summary::-webkit-details-marker{display:none}
.perfil summary img{width:44px;height:44px;object-fit:contain;flex-shrink:0}
.perfil summary span{font-size:19px;font-weight:700;letter-spacing:-.02em}
.perfil summary small{margin-left:auto;font-size:13px;color:var(--subtle);text-align:right}
.perfil summary::after{content:"+";font-size:22px;font-weight:600;color:var(--subtle);margin-left:14px;transition:transform .25s}
.perfil[open] summary::after{transform:rotate(45deg)}
.perfil-in{display:grid;grid-template-columns:1.1fr .9fr;gap:34px;padding:4px 22px 24px 82px;border-top:1px solid var(--border);padding-top:22px}
.perfil-in .eb{margin-bottom:10px}
.perfil-in .lede{font-size:15px;margin:0 0 18px}
.perfil-in .lede small{display:block;font-size:13px;color:var(--subtle);margin-top:6px}
.perfil-in .check-list{margin-top:0}
@media(max-width:900px){
  .perfil-in{grid-template-columns:1fr;padding-left:22px}
  .perfil summary small{display:none}
}
.eq-trabaja{margin-top:56px;padding-top:44px;border-top:1px solid var(--border)}

/* ── Servicio × centro (/centros/<centro>/<terapia>.html). Reutiliza .lhero, .c-hero-mapa,
   .t-senales y .cta-band: aquí solo lo que estas páginas añaden. Solo tokens del sistema. */
/* Nombre del centro bajo el H1: la página es de UNA terapia en UN centro. */
.centro-serv .cs-centro{margin:12px 0 0;font-size:17px;font-weight:600;letter-spacing:-.01em}
.centro-serv .cs-centro a{color:var(--acc-txt)}
.centro-serv .cs-centro a:hover{text-decoration:underline;text-underline-offset:3px}
.centro-serv .lhero .c-nota{margin:14px 0 0}
.centro-serv .lhero .lede{margin-top:18px}
/* Áreas de la terapia como etiquetas (solo el nombre; el detalle vive en la
   landing general de la terapia, para no duplicarla). */
.centro-serv .cs-eb{margin:26px 0 10px;font-family:var(--sans);font-size:12px;font-weight:700;
  letter-spacing:.13em;text-transform:uppercase;color:var(--acc-txt)}
.centro-serv .cs-chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.centro-serv .cs-chips li{font-size:13.5px;font-weight:600;padding:7px 12px;border-radius:20px;
  background:var(--acc-soft);color:var(--acc-txt);border:1px solid rgba(0,0,0,.05)}
.centro-serv .cs-mas{margin:16px 0 0}
.centro-serv .cs-mas .go,.centro-serv .c-linea-pie .go{display:inline-flex;align-items:center;gap:7px;
  font-weight:600;font-size:15px;color:var(--acc-txt)}
.centro-serv .cs-mas .go .ar{transition:transform .2s}
.centro-serv .cs-mas .go:hover .ar{transform:translateX(4px)}
/* Frase local dentro del bloque de señales. */
.centro-serv .cs-local{margin-top:14px;color:var(--text)}
/* «Otras terapias en este centro»: la rejilla de la ficha, pero sin forzar la
   paleta de línea (manda la de la terapia de la página). */
.centro-serv .cs-otras{padding:66px 0}
.centro-serv .cs-otras .c-linea-head{grid-template-columns:auto 1fr auto}
.centro-serv .cs-logo{height:46px;width:auto;margin:0 0 16px}
.centro-serv .cs-otras .c-linea-pie{gap:26px}
.centro-serv .cta-band .btn{cursor:pointer}
@media(max-width:900px){
  .centro-serv .cs-otras .c-linea-head{grid-template-columns:1fr}
  .centro-serv .cs-logo{height:38px}
}

/* ── Mapa web ── */
.mw{display:grid;grid-template-columns:repeat(2,1fr);gap:28px 48px}
.mw-grupo h2{font-size:20px;font-weight:800;letter-spacing:-.02em;margin:0 0 12px;padding-bottom:10px;border-bottom:1px solid var(--border)}
.mw-grupo h2 small{font-size:12px;font-weight:600;color:var(--subtle);margin-left:6px}
.mw-grupo ul{list-style:none;margin:0;padding:0;columns:1}
.mw-grupo li{padding:5px 0;font-size:14.5px;line-height:1.45}
.mw-grupo a{color:var(--text);text-decoration:none}
.mw-grupo a:hover{color:var(--acc-txt);text-decoration:underline}
.mw-grupo:has(li:nth-child(40)) ul{columns:2;column-gap:32px}
@media(max-width:860px){
  .mw{grid-template-columns:1fr}
  .mw-grupo:has(li:nth-child(40)) ul{columns:1}
}
/* Mapa web: cada enlace alcanza 24 px de alto sin mover la lista (WCAG 2.5.8). */
.mw-grupo a{display:inline-block;padding:2.5px 0;margin:-2.5px 0}

/* ── Equipo: la lista de «y N más» artículos, como índice en dos columnas ── */
.p-lista-t{font-size:20px;font-weight:800;letter-spacing:-.02em;margin:44px 0 4px}
.p-lista{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:0 44px}
.p-lista li{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:12px 0;border-bottom:1px solid var(--border)}
.p-lista a{color:var(--text);text-decoration:none;font-weight:600;font-size:14.5px;line-height:1.35;transition:color .2s}
.p-lista a:hover{color:var(--acc-txt)}
.p-lista small{flex-shrink:0;font-size:12px;color:var(--subtle);white-space:nowrap}
@media(max-width:860px){
  .p-lista{grid-template-columns:1fr}
  .p-lista li{flex-direction:column;gap:4px}
}
/* Enlaces cortos a redes en la ficha de persona («X»): objetivo mínimo sin mover la línea. */
.p-redes a{display:inline-block;min-width:24px;text-align:center;padding:2px 0;margin:-2px 0}

/* ── Colegios (servicios a centros educativos) ── */
/* Solo lo que la página necesita y el sistema no tenía: iconos macizos sobre losa de color, el panel
   con cuatro pasos (el de «Trabaja con nosotros» tiene tres) y tres colores que estaban clavados
   al naranja o al azul de empleo. Todo bajo `.colegios`. */
/* Lo que seguía en naranja aunque la página cambie de acento. */
.colegios .acc details[open] summary{color:var(--acc-txt)}
/* A quién: tarjetas .pc como artículos (no enlaces). Sin recorte a 3 líneas. */
.colegios .quien .pc p{display:block;-webkit-line-clamp:none;overflow:visible}
.colegios .quien .pc:hover{transform:none;box-shadow:var(--sh-sm);border-color:var(--border)}
/* Servicios: pictograma blanco y macizo sobre losa oliva (los tres de la web
   vieja son blancos; los tres nuevos van en el mismo registro). */
.colegios .svc{position:relative}
.colegios .svc .ic{background:var(--acc);color:#fff}
.colegios .svc .ic img{width:26px;height:26px;object-fit:contain}
.colegios .svc .ic svg{width:24px;height:24px}
.colegios .svc .go svg{width:15px;height:15px;transition:transform .2s}
.colegios .svc .go:hover svg{transform:translateX(3px)}
/* Panel: cuarto paso. La línea del 3 se dibuja y el 4 se enciende al final. */
.colegios .tl.vista li:nth-child(3)::after{transform:scaleY(1);transition-delay:1.75s}
.colegios .tl.vista li:nth-child(4) .n{transition-delay:2.2s;transform:scale(1.06)}
/* La sombra del paso activo llevaba el azul de KaiEmpleo clavado. */
.colegios .tl.vista li:nth-child(2) .n{box-shadow:0 6px 16px -6px rgba(103,107,52,.55)}
.colegios .panel-txt .h2{max-width:18ch}

/* ── Ayudas y becas ── */
/* Solo lo que la página necesita y el sistema no tenía. Lo demás (.lhero.solo, .areas/.area,
   .panel/.tl, .check-list, .acc, .sec-head, .cta-band) se reutiliza tal cual. Prefijo `ay-`. */
/* La franja de «diez segundos» bajo la cabecera: tres preguntas, tres
   respuestas de una frase. Es lo que lee la familia que no va a leer más. */
.ay-resumen{background:var(--surface-2);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.ay-resumen dl{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin:0}
.ay-resumen dl > div{padding:26px 28px 26px 0;margin-right:28px;border-right:1px solid var(--border)}
.ay-resumen dl > div:last-child{border-right:none;margin-right:0;padding-right:0}
.ay-resumen dt{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--acc-txt);margin:0 0 8px}
.ay-resumen dd{margin:0;font-size:15px;line-height:1.55;color:var(--text)}
/* Cinco perfiles en una fila: la retícula de .areas es de tres y dejaría dos
   huérfanos. Con auto-fit caben cinco en escritorio, dos en tableta, uno en móvil. */
.ay-perfiles{grid-template-columns:repeat(5,1fr);margin-top:36px}
.ay-perfiles .area{padding:24px 20px 22px}
.ay-perfiles .area h3{padding-right:34px;font-size:16.5px}
.ay-perfiles .area p{font-size:14px}
@media(max-width:1100px){
  .ay-perfiles{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
}
@media(max-width:480px){
  .ay-perfiles{grid-template-columns:1fr}
}
/* Nota pequeña bajo una retícula: lo que decide la convocatoria, no la página. */
.ay-nota{margin:22px 0 0;padding:14px 18px 14px 20px;border-left:3px solid var(--acc);background:var(--acc-soft);color:var(--acc-txt);font-size:14.5px;line-height:1.6;border-radius:0 12px 12px 0;max-width:72ch}
.ay-nota a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:3px}
/* El panel de pasos venía de KaiEmpleo con una luz y una sombra azules. Aquí
   la luz es la de la marca. */
.ayudas .panel-txt::after{background:radial-gradient(circle,var(--la),transparent 68%)}
.ayudas .tl.vista li:nth-child(2) .n{box-shadow:0 6px 16px -6px color-mix(in srgb,var(--acc) 50%,transparent)}
/* .tl estaba pensado para tres pasos; con cuatro, el tercer tramo de línea y
   el cuarto hito también tienen que encenderse. */
.ayudas .tl.vista li:nth-child(3)::after{transform:scaleY(1);transition-delay:1.75s}
.ayudas .tl.vista li:nth-child(4) .n{background:var(--acc-soft);color:var(--acc-txt);transition-delay:2.2s;transform:scale(1.06)}
.ayudas .panel-txt .lede{max-width:44ch}
/* «En qué os ayudamos»: texto a la izquierda; a la derecha, dos listas, lo
   que hacemos y lo que no depende de nosotros. La raya (no una cruz) es
   deliberada: no es un «no», es otra mesa. */
.ay-dos{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:start;text-align:left}
.ay-dos .h2,.ay-dos .lede{text-align:left;margin-left:0}
.ay-dos .h2{max-width:20ch}
.ay-dos .lede{max-width:52ch}
.ay-enlace{margin:24px 0 0;font-size:15px;font-weight:600}
.ay-enlace a{display:inline-flex;align-items:center;gap:6px;color:var(--acc-txt);text-decoration:none;border-bottom:1.5px solid var(--acc)}
.ay-enlace svg{width:15px;height:15px;transition:transform .2s}
.ay-enlace a:hover svg{transform:translateX(3px)}
.ay-listas{display:grid;gap:14px}
.ay-listas > div{border:1px solid var(--border);border-radius:var(--r);background:var(--surface);box-shadow:var(--sh-sm);padding:22px 24px}
.ay-listas h3{margin:0 0 6px;font-size:15.5px;font-weight:700;letter-spacing:-.01em;color:var(--acc-txt)}
.ay-listas .check-list{margin-top:12px;gap:9px}
.ay-listas .check-list li{font-size:14.5px}
.ay-listas .no{background:var(--surface-2)}
.ay-listas .no h3{color:var(--muted)}
.ay-listas .no .check-list svg{color:var(--subtle)}
@media(max-width:900px){
  .ay-dos{grid-template-columns:1fr;gap:30px}
}
#texto .h2{max-width:26ch}
/* El acordeón del sistema solo previó un párrafo (.ans). El texto legal
   trae listas y una tabla: `.cuerpo` es el contenedor rico. */
.ay-acc{max-width:880px}
.ay-acc summary{font-size:16px}
.ay-acc .cuerpo{padding:0 24px 22px;color:var(--text);font-size:15px;line-height:1.65}
.ay-acc .cuerpo p{margin:0 0 12px;max-width:74ch}
.ay-acc .cuerpo p:last-child{margin-bottom:0}
.ay-acc .cuerpo ul{margin:0 0 14px;padding-left:22px}
.ay-acc .cuerpo li{margin:0 0 8px}
.ay-acc .cuerpo li::marker{color:var(--acc);font-weight:700}
.ay-acc .cuerpo a{color:var(--acc-txt);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--acc);text-decoration-thickness:1.5px}
.ay-acc .cuerpo table{width:100%;border-collapse:collapse;font-size:14.5px;line-height:1.45;margin:0 0 14px;display:block;overflow-x:auto}
.ay-acc .cuerpo th,.ay-acc .cuerpo td{border:1px solid var(--border);padding:9px 12px;text-align:left;vertical-align:top}
.ay-acc .cuerpo th{background:var(--acc-soft);color:var(--acc-txt);font-weight:700;white-space:nowrap}
.ay-acc .cuerpo td:nth-child(2){white-space:nowrap;font-weight:600}
.ay-acc details:target summary{color:var(--acc-txt)}
/* Avisos FEDER: obligatorios, literales y sobrios. Gris, pequeño, sin
   tarjeta: no compiten con nada. */
.ay-feder{padding:44px 0 52px;border-top:1px solid var(--border);background:var(--bg)}
.ay-feder .wrap{max-width:calc(72ch + 56px)}
.ay-feder .eb{color:var(--subtle);margin-bottom:14px}
.ay-feder p{margin:0 0 12px;font-size:13.5px;line-height:1.6;color:var(--muted)}
.ay-feder .lema{margin:0;font-weight:600;color:var(--text)}
@media(max-width:860px){
  .ay-resumen dl{grid-template-columns:1fr}
  .ay-resumen dl > div{padding:18px 0;margin-right:0;border-right:none;border-bottom:1px solid var(--border)}
  .ay-resumen dl > div:last-child{border-bottom:none}
  .ay-acc summary{padding:16px 18px;font-size:15px}
  .ay-acc .cuerpo{padding:0 18px 18px}
  .ay-listas > div{padding:18px 18px}
}

/* ── 404: la huella de la marca, grande y suave, con el número detrás ── */
.huella-404{position:relative;justify-self:end;width:min(100%,460px);aspect-ratio:1;display:grid;place-items:center}
.huella-404 span{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--titulo);font-weight:800;font-size:clamp(120px,22vw,240px);letter-spacing:-.06em;color:var(--acc-soft);line-height:1;user-select:none}
.huella-404 img{position:relative;width:62%;transform:rotate(-14deg);filter:drop-shadow(0 22px 30px rgba(43,41,38,.14));opacity:.92}
@media(max-width:900px){
  .huella-404{justify-self:center;width:min(70vw,320px);margin-top:10px}
}

/* ── Contacto ── */
/* Reutiliza .lhero.solo, .panel/.tl, .pc, .mapa2, .areas .area y .cta-band: aquí solo lo que la
   página añade. Solo tokens del sistema: nada de colores sueltos. */
/* ── Teléfono y WhatsApp de la central: dos tarjetas .pc con el número grande ── */
.vias{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:22px}
.vias .pc p{display:block;-webkit-line-clamp:unset;overflow:visible} /* aquí no se recorta: la línea honesta se lee entera */
.vias .pc .via-num{font-family:var(--titulo);font-weight:800;font-size:clamp(26px,3vw,34px);line-height:1.1;
  letter-spacing:-.03em;color:var(--text);margin:2px 0 4px;font-variant-numeric:tabular-nums}
.vias .pc .via-num small{font-size:.5em;font-weight:600;color:var(--subtle);margin-right:6px;letter-spacing:0}
.vias .pc .pc-meta{display:inline-flex;align-items:center;gap:7px;font-weight:600;color:var(--acc-txt)}
.vias .pc .pc-meta svg{width:15px;height:15px}
.vias .pc:hover .via-num{color:var(--acc-hi)}
.via-mail{margin:22px auto 0;max-width:62ch;text-align:center;font-size:14.5px;line-height:1.55;color:var(--muted)}
.via-mail a{color:var(--acc-txt);font-weight:600;overflow-wrap:anywhere}
/* ── El mapa dentro de una sección .alt: el enlace al directorio completo, debajo ── */
.pagina-contacto .mapa2{margin-top:36px}
/* ── Otras puertas: cuatro tarjetas .area, enlazadas enteras ── */
.puertas{grid-template-columns:repeat(4,1fr)}
.puertas .area{display:flex;flex-direction:column;color:inherit}
.puertas .area .go{margin-top:auto;padding-top:14px}
.puertas .area .go svg{width:14px;height:14px;transition:transform .2s}
.puertas .area:hover .go svg{transform:translateX(3px)}
.puertas .area:hover{border-color:var(--acc)}
@media(max-width:1000px){
  .puertas{grid-template-columns:1fr 1fr}
  .vias{grid-template-columns:1fr}
  .puertas{grid-template-columns:1fr}
  .vias .pc .via-num{font-size:28px}
  .pagina-contacto .mapa2{margin-top:26px;border-radius:14px}
  .pagina-contacto .mapa2-lista{max-height:280px}
}

/* ── Terapias: resumen, áreas plegadas, índice ── */
/* ══ Índice /terapias.html y estructura de las fichas (terapias y líneas). Reutiliza .lhero, .sec,
   .eb, .h2, .lede, .check-list, .acc, .panel, .sec-head, .rel-terapias, .cta-band y los botones;
   aquí solo lo que no existía. Prefijos: guia-, tcard-, lcard-. ══ */
/* ══ ÍNDICE /terapias.html ══ */
/* ── «Si habéis notado…»: la primera señal de cada terapia y a dónde lleva.
   Vive en la mitad derecha del .panel. */
.guia-panel{justify-content:flex-start}
.guia{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.guia li{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;padding:12px 0;border-top:1px solid var(--border)}
.guia li:first-child{border-top:none;padding-top:0}
.guia-q{font-size:14.5px;line-height:1.45;color:var(--text)}
.guia-t{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 12px 0 8px;border-radius:9px;border:1px solid var(--border);
  background:var(--surface);color:var(--ttxt);font-size:13px;font-weight:700;white-space:nowrap;transition:border-color .15s,background .15s,transform .15s}
.guia-t img{width:22px;height:22px;object-fit:contain}
.guia-t:hover{border-color:var(--tc);background:var(--tsoft);transform:translateX(2px)}
.guia-nota{margin:18px 0 0;font-size:13px;line-height:1.5;color:var(--subtle)}
/* ── Las seis terapias como tarjetas: icono, nombre, para qué, tres señales. */
.tgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.tcard{position:relative;display:flex;flex-direction:column;gap:12px;padding:24px 24px 22px;border:1px solid var(--border);border-radius:var(--r);
  background:var(--surface);box-shadow:var(--sh-sm);text-align:left;transition:border-color .16s,box-shadow .16s,transform .16s}
.tcard::before{content:"";position:absolute;left:24px;right:24px;top:0;height:3px;border-radius:0 0 3px 3px;background:var(--acc)}
.tcard:hover{border-color:var(--acc);box-shadow:var(--sh-lg);transform:translateY(-3px)}
.tcard-cab{display:flex;align-items:center;gap:14px}
.tcard-ic{flex-shrink:0;width:56px;height:56px;border-radius:16px;display:grid;place-items:center;background:var(--acc-soft)}
.tcard-ic img{width:34px;height:34px;object-fit:contain}
.tcard h3{margin:0;font-family:var(--titulo);font-size:19px;font-weight:700;letter-spacing:-.02em;line-height:1.15;color:var(--acc-txt)}
.tcard-edad{display:inline-block;margin-top:5px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--subtle)}
.tcard > p{margin:0;font-size:14.5px;line-height:1.55;color:var(--muted)}
.tcard-eb{font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--acc-txt);margin:6px 0 -6px}
.tcard-senales{margin:0;gap:8px}
.tcard-senales li{font-size:14px;color:var(--text)}
.tcard-senales svg{margin-top:2px}
.tcard-mas{margin-top:auto;padding-top:10px;display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:700;color:var(--acc-txt)}
.tcard-mas svg{width:14px;height:14px;transition:transform .2s}
.tcard:hover .tcard-mas svg{transform:translateX(3px)}
/* ── Las líneas, como franja de cuatro. Cada una con su color. */
.lgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.lcard{display:flex;flex-direction:column;gap:10px;padding:22px 22px 20px;border:1px solid var(--border);border-radius:var(--r);
  background:linear-gradient(160deg,var(--surface) 55%,var(--acc-soft));box-shadow:var(--sh-sm);text-align:left;
  transition:border-color .16s,box-shadow .16s,transform .16s}
.lcard:hover{border-color:var(--acc);box-shadow:var(--sh-lg);transform:translateY(-3px)}
.lcard-tag{font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--acc-txt)}
.lcard h3{margin:0;font-family:var(--titulo);font-size:22px;font-weight:700;letter-spacing:-.025em;line-height:1.1;color:var(--acc-hi)}
.lcard p{margin:0;font-size:14.5px;line-height:1.55;color:var(--muted)}
.lcard-mas{margin-top:auto;padding-top:8px;display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:700;color:var(--acc-txt)}
.lcard-mas svg{width:14px;height:14px;transition:transform .2s}
.lcard:hover .lcard-mas svg{transform:translateX(3px)}
@media(max-width:960px){
  .tgrid{grid-template-columns:1fr 1fr}
  .lgrid{grid-template-columns:1fr 1fr}
}
@media(max-width:640px){
  .tgrid,.lgrid{grid-template-columns:1fr}
  .guia li{grid-template-columns:1fr;gap:8px;align-items:start}
  .guia-t{justify-self:start}
  .guia-t{min-height:44px}
}

/* ── Programas y talleres: hubs orientadores y fichas de un vistazo ── */
/* Reutiliza .lhero.solo, .sec-head, .tema-bloque/.tema-cab, .prosa, .lectura/.toc, .acc,
   .t-senales y .cta-band: aquí solo lo que estas páginas añaden. Solo tokens del sistema. */
/* ── «¿Cuál es para mi hijo?»: una situación por tarjeta, con su destino ── */
.situ-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.situ{position:relative;display:flex;flex-direction:column;gap:12px;padding:24px 24px 22px;border:1px solid var(--border);border-radius:var(--r);
  background:var(--surface);box-shadow:var(--sh-sm);transition:box-shadow .18s,transform .18s,border-color .18s}
.situ::before{content:"";position:absolute;left:0;top:22px;bottom:22px;width:3px;border-radius:0 3px 3px 0;background:var(--acc)}
.situ:hover{box-shadow:var(--sh-lg);transform:translateY(-2px);border-color:var(--acc)}
.situ-q{margin:0;font-family:var(--titulo);font-weight:700;font-size:17px;line-height:1.3;letter-spacing:-.02em;color:var(--text);text-wrap:balance}
.situ-a{display:inline-flex;align-items:center;gap:7px;align-self:flex-start;font-size:14.5px;font-weight:700;color:var(--acc-txt);text-decoration:none;
  padding:9px 13px;border-radius:8px;background:var(--acc-soft);transition:background .15s}
.situ-a svg{width:15px;height:15px;transition:transform .2s}
.situ-a:hover{background:var(--surface-2)}
.situ-a:hover svg{transform:translateX(3px)}
.situ-mas{margin:auto 0 0;font-size:13.5px;line-height:1.55;color:var(--subtle)}
.situ-mas a{color:var(--acc-txt);font-weight:600;text-decoration:none;border-bottom:1px solid transparent}
.situ-mas a:hover{border-bottom-color:var(--acc)}
/* ── Tarjeta compacta de programa/taller: nombre, UNA frase, chips y «Ver →» ── */
.pg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.pg{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--r);background:var(--surface);overflow:hidden;
  color:inherit;text-decoration:none;box-shadow:var(--sh-sm);transition:transform .2s,box-shadow .2s,border-color .2s}
.pg:hover{transform:translateY(-3px);box-shadow:var(--sh-lg);border-color:var(--acc)}
.pg-img{aspect-ratio:16/9;background:linear-gradient(135deg,var(--acc-soft),var(--surface-2));overflow:hidden}
.pg-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.pg:hover .pg-img img{transform:scale(1.04)}
.pg-in{display:flex;flex-direction:column;gap:9px;padding:20px 22px 18px;flex:1}
.pg h3{margin:0;font-size:18px;font-weight:700;letter-spacing:-.02em;line-height:1.22;color:var(--text)}
.pg:hover h3{color:var(--acc-hi)}
.pg p{margin:0;font-size:14.5px;line-height:1.5;color:var(--muted)}
.pg-chips{margin:2px 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:6px}
.pg-chips li{font-size:12px;font-weight:600;padding:4px 9px;border-radius:6px;background:var(--acc-soft);color:var(--acc-txt);border:1px solid rgba(0,0,0,.04)}
.pg-go{display:inline-flex;align-items:center;gap:6px;margin-top:auto;padding-top:10px;font-size:13.5px;font-weight:700;color:var(--acc-txt)}
.pg-go svg{width:14px;height:14px;transition:transform .2s}
.pg:hover .pg-go svg{transform:translateX(3px)}
.tipo-mas{margin:16px 0 0;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.tipo-mas summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;padding:13px 18px;font-size:14px;font-weight:700;color:var(--acc-txt)}
.tipo-mas summary::-webkit-details-marker{display:none}
.tipo-mas summary::after{content:"+";margin-left:auto;font-size:19px;font-weight:600;color:var(--subtle);transition:transform .2s}
.tipo-mas[open] summary::after{transform:rotate(45deg)}
.tipo-mas .prosa{margin:0;padding:2px 18px 6px;font-size:15.5px;line-height:1.65;max-width:72ch}
/* ── Ficha: «de un vistazo», cuatro celdas bajo la cabecera (sobre la foto, si la hay, va después) ── */
.vistazo{position:relative;z-index:2;margin:-56px 0 0}
.vistazo .wrap{max-width:calc(980px)}
.vistazo.tras-foto{margin-top:30px}
.vistazo-in{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--border);border-radius:var(--r);background:var(--surface);box-shadow:var(--sh-lg);overflow:hidden}
.vistazo-in > div{padding:22px 22px 24px;border-left:1px solid var(--border)}
.vistazo-in > div:first-child{border-left:none}
.vistazo-in .eb{margin:0 0 8px;font-size:11.5px}
.vistazo-in p:not(.eb){margin:0;font-size:14.5px;line-height:1.55;color:var(--text)}
.vistazo + .lectura,.vistazo + .prosa{margin-top:52px}
@media(max-width:1000px){
  .situ-grid,.pg-grid{grid-template-columns:1fr 1fr}
  .vistazo-in{grid-template-columns:1fr 1fr}
  .vistazo-in > div:nth-child(3){border-left:none}
  .vistazo-in > div:nth-child(n+3){border-top:1px solid var(--border)}
  .situ-grid,.pg-grid{grid-template-columns:1fr;gap:14px}
  .situ{padding:20px 18px 18px}
  .situ-q{font-size:16px}
  .pg-in{padding:18px 18px 16px}
  .vistazo{margin-top:-40px}
  .vistazo-in{grid-template-columns:1fr}
  .vistazo-in > div{border-left:none;border-top:1px solid var(--border);padding:18px 18px 20px}
  .vistazo-in > div:first-child{border-top:none}
}

/* ── «Abre tu centro» (/franquicia.html): su propio formulario en la página ──────
   Bloque MÍNIMO: no define ni un campo ni un foco nuevos: el formulario
   lleva también la clase `.cita-form` y hereda TODO del cajón de cita (inputs,
   etiquetas, `.dos`, `.chk`, `.opc`, textarea, el anillo de foco en `--acc`). Lo de
   aquí es solo sacarlo del <dialog> y ponerlo en dos columnas junto al texto. */
.form-centro-wrap{display:grid;grid-template-columns:1.05fr 1fr;gap:44px;align-items:start;text-align:left}
.form-centro-lista{margin-top:24px}
.form-centro,.form-centro-ok{grid-column:2;grid-row:1;background:var(--surface);border:1px solid var(--border);
  border-radius:18px;padding:24px;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.form-centro{gap:14px}
.form-centro .cita-error{margin:0}
.form-centro-ok{text-align:center;display:grid;gap:10px;justify-items:center;align-content:center;min-height:280px}
/* `display:grid` gana a la regla general de [hidden]: sin esto, el «gracias» se ve
   encima del formulario desde el primer momento. */
.form-centro-ok[hidden]{display:none}
.form-centro-ok .ic{width:46px;height:46px;display:grid;place-items:center;border-radius:50%;
  background:var(--acc-soft);color:var(--acc-txt)}
.form-centro-ok .ic svg{width:24px;height:24px}
.form-centro-ok h3{margin:0}
.form-centro-ok h3:focus-visible{outline:2px solid var(--acc);outline-offset:4px}
.form-centro-ok p{color:var(--muted);margin:0;max-width:34ch}
@media(max-width:900px){
  .form-centro-wrap{grid-template-columns:1fr;gap:28px}
  .form-centro,.form-centro-ok{grid-column:1;grid-row:auto;padding:20px 16px}
  .form-centro .dos{grid-template-columns:1fr}
}

/* ── Páginas de provincia ── */
.c-prov-lista{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:12px;margin-top:34px;text-align:left}
.c-prov-lista .centro{cursor:default;margin:0}
.c-prov-lista .centro > b{display:block;font-size:14.5px;letter-spacing:-.015em}
.c-prov-ter{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.c-prov-ter a{font-size:12.5px;font-weight:600;color:var(--acc-txt);border:1px solid var(--border);
  border-radius:7px;padding:4px 9px;transition:border-color .16s}
.c-prov-ter a:hover{border-color:var(--acc)}

/* ═══ 6. MOVIMIENTO — fotogramas, transición entre documentos y «menos movimiento» ═══ */

/* ── Movimiento ── */
@keyframes aurora1{0%,100%{transform:translate(-50%,-50%) scale(1)}33%{transform:translate(-58%,-44%) scale(1.14)}66%{transform:translate(-42%,-58%) scale(.94)}}
@keyframes aurora2{0%,100%{transform:translate(-50%,-50%) scale(1.05)}50%{transform:translate(-36%,-62%) scale(.9)}}
@keyframes aurora3{0%,100%{transform:translate(-50%,-50%) scale(.92)}40%{transform:translate(-62%,-38%) scale(1.18)}75%{transform:translate(-40%,-56%) scale(1)}}
@keyframes flow{0%,100%{background-position:0% 50%}50%{background-position:60% 50%}}
@keyframes barFill{from{width:0}to{width:100%}}
@media(prefers-reduced-motion:reduce){.slide-bg::before,.slide-bg::after,.slide.marca .s-name{animation:none}}
@media(prefers-reduced-motion:reduce){dialog.cita-dlg{transition:none}}
@keyframes llega{from{opacity:0;transform:var(--desde)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){
  .r360 .aro .trazo{transition:none;stroke-dashoffset:0}
  .r360 .pilar,.r360 .aro .radio{transition:none;opacity:1;transform:none}
  .r360 .p1{transform:translateX(-50%)}
}
@media(prefers-reduced-motion:reduce){.steps::after{transition:none;transform:scaleX(1)}
  .steps .step .n,.steps .step h3,.steps .step p{transition:none}}
@keyframes cinta{to{transform:translateX(-50%)}}
@keyframes giro{to{transform:rotate(360deg)}}
/* Sin golpes: el cambio de tema es un fundido entre páginas (nativo, sin JS) y
   las tarjetas filtradas se van y vuelven en fundido, no de golpe. */
@view-transition{navigation:auto}
/* Solo se funden la cabecera y el contenido. Lo que está en todas las páginas
   (menú, miga, barra de temas, flotantes, cierre) no desaparece: se queda y su
   color transiciona. Un fundido de toda la página hacía parpadear lo que no cambia. */
::view-transition-old(root),::view-transition-new(root){animation:none}
::view-transition-old(nav),::view-transition-old(miga),::view-transition-old(flot),::view-transition-old(cierre),::view-transition-old(temas-nav){display:none}
::view-transition-new(nav),::view-transition-new(miga),::view-transition-new(flot),::view-transition-new(cierre),::view-transition-new(temas-nav){animation:none}
::view-transition-old(blog-hero),::view-transition-new(blog-hero){animation-duration:.32s}
::view-transition-old(blog-contenido){animation:.22s ease-out both fade-out}
::view-transition-new(blog-contenido){animation:.32s .08s ease-in both fade-in}
@keyframes fade-out{to{opacity:0}}
@keyframes fade-in{from{opacity:0}}
@media(prefers-reduced-motion:reduce){@view-transition{navigation:none}.pc{transition:none}}
/* Menos movimiento: lo que faltaba por cubrir (entrada del hero, mosaico, pasos, cintas,
   tarjetas al pasar) y el scroll suave del documento. */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .slide .up,.slide.on .up,.slide .s-name.up,.slide.on .s-name.up{transition:none;opacity:1;transform:none;filter:none}
  .slide.marca .tile,.slide.marca.on .tile{animation:none;opacity:1;transition:none}
  .steps:not(.vista) .step h3,.steps:not(.vista) .step p{opacity:1;transform:none}
  .carr.cinta .carr-pista{animation:none}
  .carr.cinta{overflow-x:auto}
  .cita-progreso span,.tile,.tile img,.area,.c-otro,.pc,.rel-t,.flot a,.flot button,.flot .tx,
  .carr-fl,.gal-foto img,.c-galeria img,.miembro .retrato::after,.btn,.mnav > summary{transition:none}
  .tile:hover,.area:hover,.c-otro:hover,.pc:hover,.rel-t:hover{transform:none}
  .tile:hover img,.gal-foto:hover img,.c-galeria figure:hover img{transform:none}
}
/* Sin movimiento: el scroll no se anima. */
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.skip{transition:none}}
/* Al volver con «atrás» la portada no repite la entrada del carrusel: aparece ya colocada. */
body.volviendo .slide .up,body.volviendo .slide .s-name.up{transition:none}

/* ═══ 7. TÁCTIL — (hover:none): sin desenfoques ni transición entre documentos ═══ */

/* ── Táctil (iPhone/Android): fuera desenfoques ──
   Las luces de fondo son degradados radiales con `filter:blur(60-96px)` encima, algunos animados en bucle,
   y la cabecera lleva `backdrop-filter`. En un móvil a 3× son millones de píxeles desenfocados en cada
   pintado: Safari en iPhone tardaba segundos por página. El degradado radial ya es suave por sí mismo,
   así que en pantallas táctiles se quita el desenfoque y se paran esas animaciones: se ve igual y va fluido. */
@media (hover:none) and (pointer:coarse){
  .slide-bg::before,.slide-bg::after,.aurora,.s-photo::before,
  .lhero .luz::before,.lhero .luz::after,.c-hero .luz::before,.c-hero .luz::after{filter:none;will-change:auto;animation:none;opacity:.55}
  .slide-bg::before,.slide-bg::after,.aurora,.lhero .luz::before,.lhero .luz::after,.c-hero .luz::before,.c-hero .luz::after{
    background:radial-gradient(circle,var(--la) 0%,transparent 58%)}
  .slide-bg::after,.lhero .luz::after,.c-hero .luz::after{background:radial-gradient(circle,var(--lb) 0%,transparent 58%)}
  .slide .s-name.up,.slide .up{filter:none}
  .nav,dialog.cita-dlg,dialog.cita-dlg::backdrop,.cita-in,.mnav-panel,.cta-movil,.flot,.tile .ar{backdrop-filter:none;-webkit-backdrop-filter:none}
  .nav{background:rgba(255,253,250,.97)}
  .grano,.slide-bg .grano{display:none}
}
/* En táctil, sin transición entre documentos: en iPhone chocaba con la animación propia de «atrás»
   (flecha y gesto) y la página se quedaba a medias entre las dos. En escritorio se mantiene. */
@media (hover:none) and (pointer:coarse){
  @view-transition{navigation:none}
}
