/* =========================================================
   Dr. Carlos Alcántara Noguez — Cirugía Cardiaca Pediátrica
   Design tokens extraídos de https://avada.website/online-school/
   (tipografía, radios, patrones de layout) + color de marca real
   tomado del logo del cliente (no del sitio de referencia).
   ========================================================= */

:root{
  /* Marca (extraído del logo real, no inventado) */
  --color-primary: #005088;      /* navy — "carlos alcántara noguez" en el logo */
  --color-primary-dark: #003a63;
  --color-accent: #00c8f8;       /* cyan — "dr." en el logo */
  --color-accent-dark: #009fc7;
  --color-whatsapp: #25d366;

  /* Neutros */
  --color-text: #34424a;
  --color-text-soft: #5c6b73;
  --color-bg: #ffffff;
  --color-bg-alt: #f4f9fc;
  --color-bg-alt-2: #eaf6fd;
  --color-border: #e1e8ec;

  /* Tipografía (mismo patrón que el sitio de referencia: una sola familia, variando peso) */
  --font-base: "Lexend", Arial, Helvetica, sans-serif;

  /* Layout */
  --radius-btn: 6px;
  --radius-card: 14px;
  --container-max: 1240px;
  --header-h: 118px; /* topbar (teléfono | keyword | nombre) + fila principal */
  --header-main-h: 84px;
}
/* El topbar (teléfono | keyword | nombre) se oculta en móvil — ver regla
   ".site-topbar{ display:none; }" dentro de "@media (max-width:960px)" más
   abajo, junto con el ajuste de --header-h para ese mismo rango. */

*{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{
  margin: 0;
  font-family: var(--font-base);
  color: var(--color-text);
  background: var(--color-bg);
  font-size: 16px;
  line-height: 1.6;
  padding-top: var(--header-h);
}
img{ max-width: 100%; display:block; }
a{ color: var(--color-primary); text-decoration:none; }
h1,h2,h3,h4{ font-family: var(--font-base); font-weight: 500; color: var(--color-primary); line-height:1.2; margin: 0 0 .5em; }
h1{ font-size: clamp(32px, 4.5vw, 52px); letter-spacing: -0.5px; }
h2{ font-size: clamp(24px, 3vw, 34px); }
h3{ font-size: clamp(18px, 2.2vw, 22px); }
p{ margin: 0 0 1em; }
ul{ margin:0 0 1em; padding-left: 1.2em; }
.container{ max-width: var(--container-max); margin: 0 auto; padding: 0 24px; }
section{ padding: 64px 0; }
.section-alt{ background: var(--color-bg-alt); }
.eyebrow{
  display:inline-block; font-size:13px; font-weight:600; letter-spacing:.08em;
  text-transform:uppercase; color: var(--color-accent-dark); background: var(--color-bg-alt-2);
  padding: 6px 14px; border-radius: 999px; margin-bottom: 14px;
}
.visually-hidden{ position:absolute; width:1px;height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.skip-link{ position:absolute; left:-999px; top:0; background:var(--color-primary); color:#fff; padding:10px 16px; z-index:1000; }
.skip-link:focus{ left:8px; top:8px; }

/* ---------- Header ---------- */
.site-header{
  position: fixed; top:0; left:0; right:0; height: var(--header-h);
  background: rgba(255,255,255,.99);
  border-bottom: 1px solid var(--color-border);
  z-index: 500; transition: box-shadow .2s ease;
  display:flex; flex-direction:column;
}
/* Nota: se evita "backdrop-filter"/"filter"/"transform" en .site-header a propósito —
   cualquiera de esas propiedades crea un containing block nuevo para sus descendientes
   con position:fixed y rompe el menú móvil de pantalla completa (.main-nav). */
.site-header.is-stuck{ box-shadow: 0 4px 18px rgba(0,40,70,.08); }

/* Top header bar — orden fijo Paso 3.1: Teléfono | Keyword | Nombre del negocio.
   Visible en desktop/tablet; en móvil se oculta (ver "@media (max-width:960px)"
   más abajo) a pedido de la clienta, para dejar solo logo + hamburguesa. */
.site-topbar{ background: var(--color-primary); color:#fff; flex: none; }
.site-topbar .container{
  display:flex; align-items:center; flex-wrap:wrap; gap:10px 12px;
  padding-top:8px; padding-bottom:8px;
}
.topbar-item{ margin:0; font-size:12.5px; letter-spacing:.01em; color:#fff; }
a.topbar-phone{ color:#fff; font-weight:600; text-decoration:none; }
a.topbar-phone:hover{ text-decoration:underline; }
.topbar-name{ font-weight:600; }
.site-topbar-sep{ opacity:.5; font-size:12px; }
@media (max-width:600px){ .topbar-keyword{ display:none; } .site-topbar-sep:nth-of-type(2){ display:none; } }

.site-header-row{ display:flex; align-items:center; justify-content:flex-start; height: var(--header-main-h,84px); gap:32px; flex:1 1 auto; }
.site-header .logo img{ height: 46px; width:auto; }
.main-nav{ display:flex; align-items:center; gap: 8px; }
/* Menú en listas anidadas (ul > li) para que BeeDesk lea la jerarquía real.
   ul/li de primer nivel usan display:contents: los enlaces siguen siendo
   hijos flex directos de .main-nav, igual que antes del reetiquetado. */
.nav-list{ display:contents; list-style:none; margin:0; padding:0; }
.nav-li{ display:contents; }
ul.nav-dropdown{ list-style:none; margin:0; }
.nav-dropdown > li{ margin:0; padding:0; }
.main-nav .nav-li > a{ font-size:15px; font-weight:500; color: var(--color-text); padding: 8px 10px; position:relative; }
.main-nav .nav-li > a[aria-current="page"], .main-nav .nav-li > a:hover{ color: var(--color-primary); }
.main-nav .nav-li > a[aria-current="page"]::after{
  content:""; position:absolute; left:10px; right:10px; bottom:0; height:2px; background: var(--color-accent);
}
.header-ctas{ display:flex; align-items:center; gap:10px; margin-left:auto; }
.nav-toggle{ display:none; background:none; border:0; font-size:26px; color:var(--color-primary); cursor:pointer; }

/* ---------- Nav con submenú (Consulta Especializada / Cardiopatías) ---------- */
.nav-item{ position:relative; display:flex; align-items:center; }
.nav-item-toggle{
  display:flex; align-items:center; gap:6px; background:none; border:0; cursor:pointer;
  font-family: var(--font-base); font-size:15px; font-weight:500; color: var(--color-text); padding: 8px 10px;
}
.nav-item.is-active > .nav-item-toggle{ color: var(--color-primary); }
.nav-caret{ font-size:11px; transition: transform .2s ease; }
.nav-item.is-open .nav-caret{ transform: rotate(180deg); }
.nav-dropdown{
  display:none; position:absolute; top:100%; left:0; margin-top:0; min-width:270px;
  background:#fff; border:1px solid var(--color-border); border-radius:10px;
  /* padding-top (en vez del antiguo margin-top:10px) para el respiro visual
     entre el menú y la tarjeta: un margin deja un hueco "muerto" fuera de la
     caja del elemento, y al pasar el mouse por ahí para bajar hacia el
     submenú, el :hover se pierde a medio camino y la tarjeta se cierra sola.
     Con padding, ese espacio sigue siendo parte de la caja de .nav-dropdown
     (que además es descendiente de .nav-item en el DOM), así que el :hover
     no se interrumpe y el submenú se puede recorrer completo con el mouse. */
  box-shadow: 0 14px 30px rgba(0,40,70,.14); padding:18px 8px 8px; z-index:600;
}
.nav-dropdown a{ display:block; padding:10px 12px; border-radius:6px; font-size:14.5px; white-space:normal; }
.nav-dropdown a:hover{ background: var(--color-bg-alt); }
.nav-item.is-open .nav-dropdown{ display:block; }
@media (min-width:961px){
  .nav-item.has-children:hover .nav-dropdown{ display:block; }
}

/* Consulta Especializada: el nombre del item es un link a la landing hub;
   el caret, un botón aparte que despliega la lista vertical de áreas
   (patrón tomado de "Academics" en https://avada.website/online-school/:
   lista vertical de subsecciones con título + descripción breve). */
.nav-item-link{
  font-size:15px; font-weight:500; color: var(--color-text); padding: 8px 4px 8px 10px;
  display:inline-block;
}
.nav-item-link:hover, .nav-item-link[aria-current="page"]{ color: var(--color-primary); }
.nav-item .nav-item-toggle{ padding: 8px 8px 8px 2px; }
.nav-dropdown-list{ min-width:300px; padding:10px; }
/* Especificidad ".nav-dropdown a.nav-dropdown-item" a propósito: debe ganarle a
   la regla ".nav-dropdown a{ display:block }" de arriba, o el layout en columna
   (título arriba, descripción abajo, con separación) no se aplica. */
.nav-dropdown a.nav-dropdown-item{ display:flex; flex-direction:column; gap:5px; padding:10px 12px; border-radius:8px; }
.nav-dropdown-item-title{ display:block; font-size:14.5px; font-weight:600; color: var(--color-primary); line-height:1.3; }
.nav-dropdown-item-sub{ display:block; font-size:12.5px; color: var(--color-text-soft); line-height:1.4; }
.nav-dropdown-cta{
  display:block; margin-top:6px; padding:10px 12px; border-top:1px solid var(--color-border);
  font-size:13.5px; font-weight:600; color: var(--color-accent-dark) !important;
}
.nav-dropdown-cta:hover{ background: var(--color-bg-alt); }
@media (max-width:960px){
  .nav-item{ display:flex; flex-wrap:wrap; align-items:center; border-bottom:1px solid var(--color-border); }
  .nav-item-link{ width:auto; flex:1 1 auto; padding:14px 6px; border-bottom:0; }
  .nav-item .nav-item-toggle{ width:auto; flex:0 0 auto; justify-content:center; padding:14px 10px; border-bottom:0; }
}

@media (max-width: 960px){
  /* A pedido de la clienta: en móvil se elimina la barra superior (teléfono |
     keyword | nombre) y el header queda solo con logo + hamburguesa. Al
     ocultar el topbar, el header fijo pasa a medir solo la fila principal. */
  .site-topbar{ display:none; }
  :root{ --header-h: var(--header-main-h, 84px); }
  /* .site-header-row hereda ".container" (max-width + margin:0 auto). Ese
     margin:auto, al ser un item flex dentro de .site-header (flex-direction:
     column), hace que el eje transversal (ancho) deje de estirarse y en vez
     de eso se centre por contenido ("shrink-to-fit") — con el menú/CTAs
     fuera de flujo en móvil, el contenido visible (logo + botón) es angosto
     y el navegador lo centraba a la mitad de la pantalla en vez de estirarlo
     de borde a borde. Se anula el margin:auto solo en este rango para que
     vuelva a ocupar el 100% y el logo/hamburguesa se alineen a los bordes
     (con el padding de .container como respiro, igual que el resto del sitio). */
  .site-header-row{ margin-left:0; margin-right:0; width:100%; }
  .main-nav{
    position:fixed; top: var(--header-h); left:0; right:0; bottom:0; background:#fff;
    flex-direction:column; align-items:flex-start; padding: 24px; gap:6px; overflow-y:auto;
    transform: translateX(100%); transition: transform .25s ease; z-index:400;
  }
  .main-nav.is-open{ transform: translateX(0); }
  .main-nav .nav-li > a{ width:100%; padding:14px 6px; border-bottom:1px solid var(--color-border); }
  /* Logo a la izquierda, hamburguesa pegada al borde derecho: .main-nav sale del
     flujo (position:fixed) y ya no empuja al toggle, así que se ancla con margin-left:auto. */
  .nav-toggle{ display:block; margin-left:auto; }
  /* Paso 3.2: en móvil el header colapsa a SOLO logo + hamburguesa — nada de
     teléfono/CTA visible hasta abrir el menú (el teléfono sigue disponible
     en el pie de página y en la página de Contacto). */
  .header-ctas{ display:none; }
  .nav-item{ width:100%; }
  .nav-item-toggle{ width:100%; justify-content:space-between; padding:14px 6px; border-bottom:1px solid var(--color-border); }
  .nav-dropdown{
    position:static; margin-top:0; box-shadow:none; border:0; border-radius:0; padding:0 0 0 14px; display:none;
  }
  .nav-item.is-open .nav-dropdown{ display:block; }
  .nav-dropdown a{ padding:12px 6px; border-bottom:1px solid var(--color-border); }
  /* Menú móvil: submenús siempre desplegados al abrir la hamburguesa
     (requisito BeeDesk); el botón del caret ya no es necesario aquí. */
  .main-nav .nav-dropdown{ display:block; flex-basis:100%; }
  .nav-item .nav-item-toggle{ display:none; }
}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:8px; font-weight:500; font-size:15px;
  padding: 13px 26px; border-radius: var(--radius-btn); border: 1px solid transparent;
  cursor:pointer; transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
  text-transform:none;
}
.btn:hover{ transform: translateY(-1px); }
.btn-primary{ background: var(--color-accent); color: #06333f; }
.btn-primary:hover{ background: var(--color-accent-dark); color:#fff; }
.btn-outline{ background:transparent; border-color: var(--color-primary); color: var(--color-primary); }
.btn-outline:hover{ background: var(--color-primary); color:#fff; }
.btn-whatsapp{ background: var(--color-whatsapp); color:#fff; }
.btn-whatsapp:hover{ background:#1ea952; }
.btn-sm{ padding: 9px 18px; font-size:14px; }

/* ---------- Hero ----------
   Rediseño (Ronda 5): fondo con foto propia de cada página + overlay
   degradado navy (para contraste con el texto), en vez del degradado plano
   anterior. Estructura:
   - en móvil: contenido alineado a la izquierda (ya no centrado), con un
     avatar circular con la cara del doctor arriba del texto (siempre la
     misma foto, consistente en todo el sitio, para que se reconozca al
     doctor sin importar qué foto tenga cada página de fondo);
   - en escritorio: el texto queda de un lado y la foto propia de cada
     página pasa a ser una tarjeta del otro lado, además de usarse
     (desenfocada/oscurecida) como fondo de toda la sección.
   Altura en escritorio: 600–650px, para que el contenido no se corte. */
.hero{
  position:relative; overflow:hidden; color:#fff;
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
  padding: 48px 0;
}
/* Foto de fondo desenfocada/oscurecida (misma foto que .hero-photo) + overlay
   degradado de marca encima, para que el texto siempre contraste bien sin
   depender de qué tan clara/oscura sea la foto de cada página. Ambas capas
   son absolutas y se agrandan (scale) para que el blur no deje bordes
   transparentes visibles. Ausentes en .hero-minimal (no tiene foto). */
.hero-bg-photo{
  position:absolute; inset:-20px; z-index:0;
  background-size:cover; background-position:center;
  filter: blur(8px) brightness(.55) saturate(1.05);
  transform: scale(1.1);
}
.hero-bg-overlay{
  position:absolute; inset:0; z-index:1;
  /* Opacidad del tinte bajada a 60% (antes 70%, y originalmente variaba
     entre 72% y 93% según el punto del degradado) para que la foto de
     fondo se note aún más. */
  background: linear-gradient(120deg, rgba(0,58,99,.6) 0%, rgba(0,80,136,.6) 45%, rgba(0,58,99,.6) 100%);
}
/* Ronda 9 — alternativa intermedia: en vez de la foto de fondo en TODOS los
   heroes, 8 de las 9 páginas usan una textura geométrica de marca, al estilo
   de la referencia que mandó el cliente. Ventaja sobre la foto: el
   contraste con el texto blanco queda garantizado siempre, pesa muchísimo
   menos que una foto, y es consistente en todo el sitio sin depender de
   encontrar una foto que funcione en cada página. "Acerca de mí" conserva
   la foto real (hero-bg-photo arriba), porque ahí sí aporta calidez humana
   y contexto.
   v2 (ajuste tras feedback): la primera versión usaba 2 azules distintos
   con una rotación fija en tablero de 2x2, lo que formaba círculos
   completos y muy marcados en cada esquina de la cuadrícula (se veía
   "gráfico"/repetitivo). La referencia en realidad usa UN solo tono base +
   UNA sola figura clara muy sutil (blanco a 8% de opacidad) por celda, con
   la orientación del cuarto de círculo variando en un mosaico de 16 celdas
   (4x4) en vez de 4, para que a veces se alineen entre celdas vecinas y a
   veces no — más orgánico, menos "tablero perfecto". */
.hero-bg-pattern{
  position:absolute; inset:0; z-index:0;
  background-color:#003a63;
  background-image:url('hero-pattern.svg');
  background-repeat:repeat;
  background-size:280px 280px;
}
.hero-bg-pattern-overlay{
  position:absolute; inset:0; z-index:1;
  /* Overlay ligero: a diferencia de la foto, la textura ya tiene contraste
     de sobra por sí sola, así que aquí el degradado es solo para dar un
     poco de profundidad/viñeta, no para "tapar" la textura. */
  background: linear-gradient(120deg, rgba(0,45,77,.35) 0%, rgba(0,58,99,.12) 45%, rgba(0,45,77,.4) 100%);
}
.hero-inner{
  position:relative; z-index:2;
  display:flex; flex-direction:column; align-items:flex-start; text-align:left; gap:20px;
}
/* Avatar (móvil): siempre la misma foto de perfil del doctor, para que se
   reconozca de inmediato sin depender de la foto de contexto de cada página. */
.hero-avatar{
  width:120px; height:120px; border-radius:50%; object-fit:cover; object-position:center 15%;
  border:3px solid rgba(255,255,255,.35); box-shadow:0 10px 26px rgba(0,20,40,.35); flex:none;
}
.hero-content{ position:relative; z-index:2; display:flex; flex-direction:column; align-items:flex-start; gap:14px; }
.hero-content > *{ margin:0; }
.hero .eyebrow{ margin:0; }
.hero h1{ color:#fff; max-width: 640px; font-size:clamp(28px,3.6vw,38px); line-height:1.18; }
.hero p.lead{ font-size:16.5px; line-height:1.5; color:#e7f3fb; max-width: 500px; }
.hero .cta-row{ display:flex; flex-wrap:wrap; justify-content:flex-start; gap:14px; margin-top: 4px; }
/* En el hero el fondo ya no es un color plano sino una foto oscurecida, así
   que el botón "outline" necesita su propia variante clara (antes esto se
   resolvía con un style="" inline solo en index.html). */
.hero .btn-outline{ background:rgba(255,255,255,.08); color:#fff; border-color:rgba(255,255,255,.6); }
.hero .btn-outline:hover{ background:rgba(255,255,255,.18); color:#fff; }
/* Foto (escritorio): oculta en móvil, el avatar la reemplaza ahí. */
.hero-photo{ display:none; }
/* Cédulas + aviso COFEPRIS visibles sin scroll en el Hero de cada landing (Paso 3.11) */
.hero-cofepris{ font-size:12px; line-height:1.45; color:#dbe9f2; opacity:.92; margin:0; max-width:500px; }

/* Variante sin foto (p. ej. Aviso de Privacidad): banda compacta, sin
   avatar ni columna de foto ni imagen de fondo — solo el degradado de marca. */
.hero-minimal .hero-inner{ gap:0; }
.hero-minimal .hero-avatar, .hero-minimal .hero-photo{ display:none; }

@media (min-width:961px){
  .hero:not(.hero-minimal){ min-height: 600px; padding: 60px 0; }
  .hero:not(.hero-minimal) .hero-inner{
    display:grid; grid-template-columns: 1fr 0.92fr; align-items:center; gap:56px;
    text-align:left; min-height:520px;
  }
  .hero:not(.hero-minimal) .hero-content{ align-items:flex-start; }
  .hero:not(.hero-minimal) .hero-avatar{ display:none; }
  .hero:not(.hero-minimal) .hero-photo{
    display:block; width:100%; height:520px; object-fit:cover; border-radius: var(--radius-card);
    box-shadow: 0 24px 48px rgba(0,20,40,.28);
  }
  .hero:not(.hero-minimal) h1{ max-width:none; }
  .hero:not(.hero-minimal) .cta-row{ justify-content:flex-start; }
}

/* ---------- Breadcrumb dentro del Hero ----------
   Variante clara del .breadcrumb de abajo, para usarse sobre el fondo
   oscuro del Hero (Ronda 5: se movió de fuera/arriba del Hero a ser el
   primer elemento de .hero-content, en vez de un <nav> suelto antes de
   <section class="hero">). */
.hero-breadcrumb{ font-size:13px; color:rgba(255,255,255,.72); margin:0; }
.hero-breadcrumb a{ color:rgba(255,255,255,.88); }
.hero-breadcrumb a:hover{ color:#fff; text-decoration:underline; }
.hero-breadcrumb .bc-sep{ opacity:.6; margin:0 5px; }

/* ---------- Cintillo de diferenciadores (debajo del Hero) ----------
   Ronda 8: rediseño completo a pedido de la clienta — el tono dorado/ámbar
   de las rondas anteriores no convencía y "no se veía comercial". Estructura
   de 3 columnas fija, IDÉNTICA en las 9 páginas que llevan cintillo (antes
   Inicio tenía una variante propia fusionada con stats):
     1) calificación de Google (estrellas + 5.0)
     2) rotador de especialidades (ver main.js)
     3) años de experiencia (dato fijo, no rota)
   Cada columna lleva un separador vertical sutil y las columnas 2 y 3
   llevan un icono en un badge translúcido para reforzar el look comercial
   pedido ("ilustrado", con recursos visuales) sin recurrir a más color.
   Fondo: teal más oscuro que el cian claro de la iteración anterior — con
   texto blanco y estrellas doradas (a pedido de la clienta) se necesitaba
   más oscuridad para que ambos contrastaran bien; se evitó volver al navy
   exacto del Hero (que ahí sí se perdía) usando un tono más saturado/verdoso
   (teal), distinto en matiz aunque cercano en luminosidad. */
.diff-ribbon{
  background: linear-gradient(90deg, #007a99 0%, #00819e 100%);
  color:#fff; padding: 16px 0;
}
/* justify-content:center (en vez de space-between) agrupa las 3 columnas
   entre sí con un espacio parejo y moderado: space-between las repartía a
   lo ancho de TODO el contenedor, y en pantallas anchas eso dejaba huecos
   grandes y vacíos entre columnas en vez de verse como un solo bloque. */
.diff-ribbon-inner{ display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:14px 36px; }
.diff-ribbon-col{ display:flex; align-items:center; gap:11px; padding:6px 0; position:relative; }
/* Separador vertical entre columnas, con padding-left en vez de margin para
   que el :hover/click no se vea afectado y el layout siga siendo flexible
   en pantallas angostas. */
.diff-ribbon-col + .diff-ribbon-col{ padding-left:24px; }
.diff-ribbon-col + .diff-ribbon-col::before{
  content:""; position:absolute; left:0; top:50%; transform:translateY(-50%);
  width:1px; height:30px; background:rgba(255,255,255,.28);
}
.diff-ribbon-col-icon{
  flex:none; width:36px; height:36px; border-radius:10px; display:flex; align-items:center; justify-content:center;
  background:rgba(255,255,255,.16); color:#fff;
}
.diff-ribbon-col-icon svg{ width:19px; height:19px; }

/* Columna 1: calificación — estrellas en dorado para que resalten sobre el
   texto blanco del resto del cintillo, en vez de que todo se vea del mismo
   tono. */
.diff-ribbon-col-score{ flex:none; }
/* El glifo de estrella (★) tiene una caja vertical distinta a la del texto
   normal: sin este ajuste "queda flotando" un poco más arriba que el "5.0"
   aunque ambos usen align-items:center. */
.diff-ribbon-stars{ color:#ffcf3d; letter-spacing:1px; font-size:17px; line-height:1; position:relative; top:0.09em; }
.diff-ribbon-score{ font-size:19px; font-weight:700; }

/* Columna 2: rotador de especialidades — ancho fijo (no flex:1) para que
   las 3 columnas queden sincronizadas por justify-content:space-between en
   vez de que esta se estire y desalinee la columna 3. justify-content:center
   + text-align:center centran el ícono y el texto dentro de esa columna. */
.diff-ribbon-col-rotator{ flex:none; justify-content:center; }
.diff-ribbon-rotator{ position:relative; width:250px; min-height:22px; }
.diff-ribbon-rotator-item{
  position:absolute; inset:0; opacity:0; transform:translateY(6px);
  transition: opacity .5s ease, transform .5s ease;
  font-weight:600; font-size:14.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  text-align:center;
}
.diff-ribbon-rotator-item.is-active{ opacity:1; transform:translateY(0); }

/* Columna 3: años de experiencia (dato fijo) */
.diff-ribbon-col-exp{ flex:none; gap:10px; }
.diff-ribbon-exp-num{ font-size:19px; font-weight:700; color:#fff; }
.diff-ribbon-exp-label{ font-size:14px; font-weight:500; opacity:.88; }

@media (max-width:760px){
  .diff-ribbon-inner{ flex-direction:column; align-items:flex-start; gap:14px; }
  .diff-ribbon-col{ width:100%; }
  .diff-ribbon-col + .diff-ribbon-col{ padding-left:0; padding-top:14px; }
  .diff-ribbon-col + .diff-ribbon-col::before{ left:0; top:0; transform:none; width:100%; height:1px; }
  /* El centrado de la columna 2 es para cuando comparte fila con las otras
     2 (escritorio); apiladas en móvil todo se alinea a la izquierda igual
     que las demás columnas, para que no se vea una sola descuadrada. */
  .diff-ribbon-col-rotator{ justify-content:flex-start; }
  .diff-ribbon-rotator{ width:100%; }
  .diff-ribbon-rotator-item{ white-space:normal; text-align:left; }
}
@media (prefers-reduced-motion: reduce){
  .diff-ribbon-rotator-item{ transition:none; }
}

/* ---------- Stats ---------- */
.stats-section{ padding: 30px 0; }
.stats-grid{ display:grid; grid-template-columns: repeat(3,1fr); gap: 24px; margin-top: 18px; }
.stat-item{ text-align:center; padding: 8px 12px; border-left: 1px solid var(--color-border); }
.stat-item:first-child{ border-left:0; }
.stat-num{ font-size:30px; font-weight:600; color: var(--color-primary); }
.stat-label{ font-size:14px; color: var(--color-text-soft); }
@media (max-width:760px){ .stats-grid{ grid-template-columns: 1fr; gap:12px; } .stat-item{ border-left:0; border-top:1px solid var(--color-border); padding:12px; } .stat-item:first-child{ border-top:0; } }

/* ---------- Tarjetas (feature cards) ---------- */
.tarjetas-grid{ display:grid; grid-template-columns: repeat(auto-fit,minmax(220px,1fr)); gap: 24px; margin-top: 36px; }
.tarjeta{
  border:1px solid var(--color-border); border-radius: var(--radius-card); padding: 28px 24px;
  background:#fff; position:relative; overflow:hidden;
}
.tarjeta .tarjeta-num{
  display:block; position:static; text-align:left; font-size:38px; font-weight:700; line-height:1;
  color: rgba(0,80,136,.22); margin: 0 0 10px;
}
.tarjeta .tarjeta-icon{ width:46px; height:46px; margin-bottom:16px; color: var(--color-accent-dark); }
.tarjeta h3{ margin-bottom:8px; font-size:19px; }
.tarjeta p{ color: var(--color-text-soft); font-size:15px; margin:0; }

/* Diferenciadores: versión más "comercial" con badge de ícono a color,
   borde superior de acento (rota entre los 3 colores de marca) y una
   pequeña elevación al pasar el mouse — en vez del número tenue de fondo
   (ese formato se conserva para otras tarjetas, p. ej. "áreas de consulta"). */
.tarjeta-diferenciador{
  padding-top:26px; border-top:4px solid var(--color-accent);
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.tarjeta-diferenciador:hover{ transform:translateY(-5px); box-shadow:0 18px 34px rgba(0,40,70,.14); }
.tarjeta-diferenciador .tarjeta-icon-badge{
  width:54px; height:54px; border-radius:14px; display:flex; align-items:center; justify-content:center;
  margin-bottom:18px; flex:none; color:#fff;
  background: linear-gradient(135deg, var(--color-accent) 0%, var(--color-accent-dark) 100%);
  box-shadow: 0 10px 20px rgba(0,159,199,.28);
}
.tarjeta-diferenciador .tarjeta-icon-badge svg{ width:26px; height:26px; }
.tarjeta-diferenciador:nth-child(3n+2){ border-top-color: var(--color-primary); }
.tarjeta-diferenciador:nth-child(3n+2) .tarjeta-icon-badge{
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
  box-shadow: 0 10px 20px rgba(0,80,136,.28);
}
.tarjeta-diferenciador:nth-child(3n+3){ border-top-color:#f5a623; }
.tarjeta-diferenciador:nth-child(3n+3) .tarjeta-icon-badge{
  background: linear-gradient(135deg, #f5a623 0%, #d98c00 100%);
  box-shadow: 0 10px 20px rgba(245,166,35,.32);
}
.tarjeta-diferenciador h3{ font-size:19.5px; }

/* ---------- Texto + foto (bloque asimétrico de 2 columnas, patrón del sitio de referencia) ----------
   Simetría de columnas (Ronda 5): ambas columnas miden lo mismo y ese alto
   lo determina el contenido de texto (nunca la foto) — la imagen se posiciona
   en absoluto dentro de su tarjeta y se recorta con object-fit:cover para
   llenar exactamente ese alto, en vez de imponer su propia relación de
   aspecto y quedar más alta que el texto. */
.texto-foto{ display:grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items:stretch; }
.texto-foto.is-reverse .texto-foto-media{ order:2; }
.texto-foto-media{
  position:relative; overflow:hidden; min-height:280px;
  background: var(--color-bg-alt-2); border-radius: var(--radius-card); padding:12px;
}
.texto-foto-media > img, .texto-foto-media > svg{
  position:absolute; inset:12px; width:calc(100% - 24px); height:calc(100% - 24px);
  /* object-position sesgado hacia arriba: al recortar la foto para igualar
     el alto del texto, un recorte centrado podía cortar la cabeza/rostro
     de las personas en la imagen. Con el sesgo hacia arriba el recorte se
     quita de la parte inferior de la foto primero. */
  object-fit:cover; object-position: 50% 12%; border-radius: calc(var(--radius-card) - 4px); margin:0;
}
@media (max-width: 860px){
  .texto-foto{ grid-template-columns:1fr; }
  .texto-foto.is-reverse .texto-foto-media{ order:0; }
  .texto-foto-media{ min-height:300px; }
}

/* ---------- Acordeón (FAQ / mitos y realidades) ---------- */
.acordeon-item{ border-bottom:1px solid var(--color-border); }
.acordeon-trigger{
  width:100%; text-align:left; background:none; border:0; padding:20px 4px; font-size:17px; font-weight:500;
  color: var(--color-primary); display:flex; justify-content:space-between; align-items:center; cursor:pointer;
  font-family: var(--font-base);
}
.acordeon-trigger .icon{ transition: transform .2s ease; flex:none; margin-left:16px; }
.acordeon-trigger[aria-expanded="true"] .icon{ transform: rotate(45deg); }
.acordeon-panel{ max-height:0; overflow:hidden; transition: max-height .25s ease; }
.acordeon-panel-inner{ padding: 0 4px 20px; color: var(--color-text-soft); }

/* ---------- Credenciales ---------- */
.credenciales-list{ list-style:none; padding:0; margin:0; display:grid; gap:14px; }
.credenciales-list li{ display:flex; gap:12px; padding:14px 16px; background: var(--color-bg-alt); border-radius:10px; font-size:14.5px; }
/* El span editable no altera el layout flex original del <li> */
.credenciales-list li > span{ display:contents; }
.credenciales-list li strong{ color: var(--color-primary); }

/* ---------- Trust bar (aseguradoras) ---------- */
.trust-bar{ padding: 40px 0; border-top:1px solid var(--color-border); border-bottom:1px solid var(--color-border); }
.trust-bar p{ text-align:center; font-size:13px; color: var(--color-text-soft); text-transform:uppercase; letter-spacing:.06em; margin-bottom:20px; }
.trust-logos{ display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap: 30px 40px; }
.trust-logo{ display:contents; } /* envoltorio editable de cada logo, sin efecto visual */
.trust-logos img{ height: 46px; width:auto; max-width:120px; object-fit:contain; }
/* Carrete de aseguradoras (Ronda 3): desplazamiento continuo, logos grandes en tarjetas */
.trust-carousel{ overflow:hidden; position:relative; padding:6px 0;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%);
          mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%); }
.trust-logos.trust-track{ flex-wrap:nowrap; justify-content:flex-start; gap:22px; width:max-content;
  animation: trust-scroll 55s linear infinite; }
.trust-carousel:hover .trust-track{ animation-play-state:paused; }
.trust-track img{ box-sizing:border-box; width:196px; height:104px; max-width:none; padding:18px 22px;
  object-fit:contain; background:#fff; border:1px solid var(--color-border); border-radius:var(--radius-card);
  box-shadow:0 6px 18px rgba(0,40,80,.07); flex:none; }
@keyframes trust-scroll{ from{ transform:translateX(0); } to{ transform:translateX(calc(-50% - 11px)); } }
@media (max-width:600px){ .trust-track img{ width:156px; height:86px; padding:14px 16px; } .trust-logos.trust-track{ gap:14px; animation-duration:45s; }
  @keyframes trust-scroll{ from{ transform:translateX(0); } to{ transform:translateX(calc(-50% - 7px)); } } }
@media (prefers-reduced-motion: reduce){
  .trust-carousel{ -webkit-mask-image:none; mask-image:none; }
  .trust-logos.trust-track{ animation:none; flex-wrap:wrap; justify-content:center; width:auto; }
  .trust-track [aria-hidden="true"]{ display:none; } }

/* ---------- Testimonios (formato de reseña real) ---------- */
.testimonio-card{ display:flex; flex-direction:column; }
.testimonio-card .tarjeta-num{ display:none; } /* las reseñas no usan numeración de tarjeta */
.testimonio-rating{ color:#f5a623; font-size:16px; letter-spacing:2px; margin-bottom:12px; }
.testimonio-cita{ font-style:italic; color:var(--color-text); flex:1; }
.testimonio-footer{ display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px; margin-top:14px; padding-top:14px; border-top:1px solid var(--color-border); }
.testimonio-autor{ font-weight:600; color: var(--color-primary); font-size:14px; }
.testimonio-badge{
  display:inline-flex; align-items:center; gap:5px; font-size:12px; font-weight:600;
  color: var(--color-accent-dark); background: var(--color-bg-alt-2); padding:4px 10px; border-radius:999px;
}

/* ---------- CTA row genérico (botones de contacto añadidos a bloques de
   contenido: texto+foto, credenciales, aseguradoras, áreas) ----------
   Sin esta regla, el <p class="cta-row"> quedaba como texto normal (los
   botones fluían uno junto al otro sin control de espaciado/alineación) y
   el botón de WhatsApp (con ícono) se veía más ancho que "Contáctame" —
   min-width iguala el ancho visual de ambos botones. */
.cta-row{ display:flex; flex-wrap:wrap; align-items:center; gap:14px; }
.cta-row .btn-sm{ min-width:172px; justify-content:center; }
.cta-row.is-centered{ justify-content:center; }
@media (max-width:420px){
  .cta-row .btn-sm{ min-width:0; flex:1 1 auto; }
}

/* ---------- CTA banda ---------- */
.cta-banda{ background: var(--color-primary); color:#fff; text-align:center; }
.cta-banda h2{ color:#fff; }
.cta-banda p{ color:#dcecf6; max-width:600px; margin: 0 auto 24px; }
.cta-banda .cta-row{ display:flex; justify-content:center; gap:14px; flex-wrap:wrap; }

/* ---------- Formulario ---------- */
.form-contacto{ display:grid; gap:16px; max-width:560px; }
.form-contacto label{ font-size:14px; font-weight:500; color:var(--color-primary); display:block; margin-bottom:6px; }
.form-contacto input, .form-contacto textarea, .form-contacto select{
  width:100%; padding:12px 14px; border:1px solid var(--color-border); border-radius:8px; font-family:var(--font-base); font-size:15px;
}
.form-contacto .form-aviso{ font-size:12.5px; color:var(--color-text-soft); }
.form-contact-info{
  background: var(--color-bg-alt-2); border-radius: var(--radius-card); padding:18px 20px; margin-bottom:16px;
}
.form-contact-buttons{ display:flex; flex-direction:column; gap:10px; }
.form-contact-buttons .btn{ justify-content:center; width:100%; }
.form-contact-social{ display:flex; flex-wrap:wrap; gap:6px 14px; margin-top:14px; padding-top:12px; border-top:1px solid rgba(0,80,136,.12); font-size:13.5px; }

/* ---------- Testimonio + contacto del doctor (landings de tratamiento) ---------- */
.testimonio-contacto .texto-foto{ align-items:stretch; }
.doctor-contact-card{
  display:flex; flex-direction:column; justify-content:center; gap:6px;
  background: var(--color-bg-alt); border:1px solid var(--color-border); border-radius: var(--radius-card);
  padding:32px 28px;
}
.doctor-contact-card .eyebrow{ margin-bottom:4px; }
.doctor-contact-card h3{ margin:0 0 4px; }
.doctor-contact-card p{ color: var(--color-text-soft); margin:0 0 4px; }
.doctor-contact-card .cta-row{ margin-top:14px; }

/* ---------- Footer ---------- */
.site-footer{ background:#0c2233; color:#c9d8e2; padding: 56px 0 28px; font-size:14px; }
.site-footer h4{ color:#fff; font-size:15px; }
.site-footer a{ color:#c9d8e2; }
.site-footer a:hover{ color:#fff; }
.footer-grid{ display:grid; grid-template-columns: 1.6fr 1fr 1fr; gap:32px; }
.footer-grid .logo img{ height:38px; margin-bottom:12px; }
.footer-desc{ color:#c9d8e2; font-size:13.5px; line-height:1.6; }
.footer-cedulas{ font-size:12px; color:#8fa5b3; line-height:1.6; margin:14px 0; }
.footer-social{ display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px; }
.footer-google{ display:inline-flex; align-items:center; gap:5px; }
.footer-google img{ display:inline-block; }
.footer-legal-row{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; border-top:1px solid #1c3b52; margin-top:32px; padding-top:20px; font-size:12.5px; color:#8fa5b3; }
.footer-disclaimer{ font-size:12px; color:#8fa5b3; margin-top:18px; line-height:1.6; }
.footer-agency{ font-size:11.5px; color:#6f8899; margin-top:10px; }
@media (max-width:860px){ .footer-grid{ grid-template-columns: 1fr 1fr; } }
@media (max-width:600px){ .footer-grid{ grid-template-columns: 1fr; } }

/* ---------- Breadcrumb ---------- */
.breadcrumb{ font-size:13px; color: var(--color-text-soft); margin-bottom:12px; }
.breadcrumb a{ color: var(--color-text-soft); }
.breadcrumb a:hover{ color: var(--color-primary); }

/* ---------- Utilities ---------- */
.text-center{ text-align:center; }
.max-w-720{ max-width:720px; margin-left:auto; margin-right:auto; }
/* Encabezados de bloque (diferenciadores, testimonios, exploración por tipo):
   centrados como en el diseño original — solo las PORTADAS (.hero-content)
   se alinearon a la izquierda, estos encabezados de sección NO. */
.section-heading{ max-width:720px; margin: 0 auto 36px; text-align:center; }
.mt-0{ margin-top:0; }
.badge-inline{ display:inline-block; background: var(--color-bg-alt-2); color:var(--color-accent-dark); font-size:12.5px; font-weight:600; padding:4px 10px; border-radius:999px; margin-right:6px; }

/* ---------- Galería de fotos (Ronda 3): banda oscura con 2-3 fotos reales ---------- */
.galeria-section{ background: var(--color-primary, #005088); background: linear-gradient(160deg,#003a63 0%,#005088 100%); color:#fff; }
.galeria-section .section-heading h2{ color:#fff; }
.galeria-section .section-heading p{ color:#d6e8f5; max-width:680px; margin-left:auto; margin-right:auto; }
.galeria-section .eyebrow{ background:rgba(255,255,255,.12); color:#bfefff; }
.galeria-grid{ display:grid; gap:20px; grid-template-columns:repeat(3,1fr); margin-top:8px; }
.galeria-grid.galeria-2{ grid-template-columns:repeat(2,1fr); }
.galeria-item{ margin:0; border-radius:var(--radius-card,14px); overflow:hidden; aspect-ratio:4/3; box-shadow:0 18px 36px rgba(0,15,30,.35); }
.galeria-item img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s ease; }
.galeria-item:hover img{ transform:scale(1.04); }
@media (max-width:760px){
  .galeria-grid, .galeria-grid.galeria-2{ grid-template-columns:1fr; gap:14px; }
}
.galeria-portrait .galeria-item{ aspect-ratio:3/4; }
@media (max-width:760px){ .galeria-portrait .galeria-item{ aspect-ratio:4/5; } }
/* Foto a la izquierda y texto a la derecha (escritorio) */
@media (min-width:961px){ .texto-foto.is-media-left .texto-foto-media{ order:-1; } }
