﻿/* ============================================================
   Kenzen Landing System — CSS V4
   Premium · Editorial · Warm light theme · Ruby accent
   ============================================================ */

/* Google Fonts se carga vía wp_head (preload no-bloqueante) — no @import aquí */

/* ── Variables ─────────────────────────────────────────────── */
:root {
  /* Brand */
  --kls-ruby:            #c41230;
  --kls-ruby-rgb:        196,18,48;
  --kls-ruby-light:      #e8193a;
  --kls-ruby-dark:       #8b0010;
  --kls-ruby-glow:       rgba(var(--kls-ruby-rgb),0.18);
  --kls-ruby-glow-soft:  rgba(var(--kls-ruby-rgb),0.08);
  --kls-grad-ruby:       linear-gradient(135deg, var(--kls-ruby-dark) 0%, var(--kls-ruby) 50%, var(--kls-ruby-light) 100%);
  --kls-grad-ruby-soft:  linear-gradient(135deg, rgba(var(--kls-ruby-rgb),0.06) 0%, rgba(var(--kls-ruby-rgb),0.02) 100%);

  /* Backgrounds */
  --kls-bg-page:         #ffffff;
  --kls-bg-alt:          #F7F7F7;
  --kls-bg-ivory:        #F3F1EC;
  --kls-bg-card:         #ffffff;
  --kls-bg-card-alt:     #F7F7F7;
  --kls-bg-brand:        rgba(var(--kls-ruby-rgb),0.06);
  --kls-bg-brand-md:     rgba(var(--kls-ruby-rgb),0.11);
  --kls-bg-glass:        rgba(255,255,255,0.72);

  /* Backgrounds — dark (navy) */
  --kls-bg-dark:         #0B1220;
  --kls-dark-rgb:       11,18,32;
  --kls-bg-dark-alt:     #121B2E;
  --kls-bg-dark-card:    #162035;
  --kls-bg-slate:        #162035;
  --kls-bg-glass-dark:   rgba(var(--kls-dark-rgb),0.72);

  /* Text — warm */
  --kls-text:            #0B1220;
  --kls-text-soft:       #162035;
  --kls-text-muted:      #3D4A60;
  --kls-text-subtle:     #8A8578;

  /* Text — dark */
  --kls-text-inv:        #F5F1E9;
  --kls-text-inv-muted:  #A8A49A;
  --kls-text-inv-subtle: #6A6860;

  /* Borders */
  --kls-border:          rgba(var(--kls-dark-rgb),0.07);
  --kls-border-md:       rgba(var(--kls-dark-rgb),0.13);
  --kls-border-brand:    rgba(var(--kls-ruby-rgb),0.18);
  --kls-border-dark:     rgba(255,255,255,0.07);
  --kls-border-dark-md:  rgba(255,255,255,0.13);
  --kls-hairline:        1px solid rgba(var(--kls-dark-rgb),0.07);

  /* Shadows */
  --kls-shadow-xs:       0 1px 4px rgba(var(--kls-dark-rgb),0.05);
  --kls-shadow:          0 4px 16px rgba(var(--kls-dark-rgb),0.07), 0 1px 4px rgba(var(--kls-dark-rgb),0.04);
  --kls-shadow-md:       0 8px 28px rgba(var(--kls-dark-rgb),0.09), 0 2px 8px rgba(var(--kls-dark-rgb),0.05);
  --kls-shadow-lg:       0 16px 48px rgba(var(--kls-dark-rgb),0.10), 0 4px 16px rgba(var(--kls-dark-rgb),0.06);
  --kls-shadow-xl:       0 24px 64px rgba(var(--kls-dark-rgb),0.12), 0 8px 24px rgba(var(--kls-dark-rgb),0.07);
  --kls-shadow-ruby:     0 8px 32px rgba(var(--kls-ruby-rgb),0.30), 0 4px 12px rgba(var(--kls-ruby-rgb),0.16);
  --kls-shadow-ruby-soft: 0 6px 20px rgba(var(--kls-ruby-rgb),0.16), 0 2px 8px rgba(var(--kls-ruby-rgb),0.08);
  --kls-shadow-ruby-xs:  0 4px 14px rgba(var(--kls-ruby-rgb),0.12), 0 1px 4px rgba(var(--kls-ruby-rgb),0.07);
  --kls-shadow-glow:     0 0 60px rgba(var(--kls-ruby-rgb),0.18);

  /* Layout */
  --kls-radius:          8px;
  --kls-radius-lg:       12px;
  --kls-radius-xl:       16px;
  --kls-radius-2xl:      20px;
  --kls-container:       1240px;
  --kls-gap:             clamp(1.5rem, 4vw, 3.5rem);
  --kls-section-py:      clamp(2rem, 6vw, 5rem);

  /* Typography */
  --kls-font-display:    'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  --kls-font-sans:       'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;

  /* Easing */
  --kls-ease-out:        cubic-bezier(0.22, 1, 0.36, 1);
  --kls-ease-spring:     cubic-bezier(0.34, 1.56, 0.64, 1);
  --kls-ease-smooth:     cubic-bezier(0.65, 0, 0.35, 1);

  font-size: 16px;
}

/* ── Reset ──────────────────────────────────────────────────── */
.kenzen-landing-page,
.kenzen-shell * {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

.kenzen-landing-page {
  background: var(--kls-bg-page);
  color: var(--kls-text);
  font-family: var(--kls-font-sans);
  font-size: 18px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* ── Shell ──────────────────────────────────────────────────── */
.kenzen-shell {
  overflow-x: hidden;
  position: relative;
  background: linear-gradient(to bottom, rgba(var(--kls-ruby-rgb),0.16) 0%, rgba(var(--kls-ruby-rgb),0.09) 28%, rgba(var(--kls-ruby-rgb),0.05) 55%, rgba(var(--kls-ruby-rgb),0.04) 100%);
}

/* Grain de papel — textura sutil sin ruido cromático */
.kenzen-shell::before {
  content: '';
  position: fixed;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.72' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23g)' opacity='1'/%3E%3C/svg%3E");
  opacity: 0.045;
  pointer-events: none;
  z-index: 9999;
}

/* Sin separadores — el gradiente del shell es el único fondo */
.kenzen-section {
  border-top: none;
}

.kenzen-container {
  max-width: var(--kls-container);
  margin-inline: auto;
  padding-inline: clamp(1.25rem, 5vw, 3rem);
  position: relative;
  z-index: 1;
}

.kenzen-section {
  padding-block: var(--kls-section-py);
  position: relative;
}

/* ── Tipografía ─────────────────────────────────────────────── */
.text-ruby-metallic {
  background: var(--kls-grad-ruby);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.kenzen-kicker {
  display: inline-flex;
  align-items: center;
  gap: 0.5em;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--kls-ruby);
  margin-bottom: 1rem;
  position: relative;
}

.kenzen-kicker::before {
  content: '';
  display: inline-block;
  width: 2rem;
  height: 1px;
  background: currentColor;
}

/* Variante etiqueta pill — fondo blanco, texto ruby, sin línea decorativa */
.kenzen-kicker--tag {
  background: #ffffff;
  color: var(--kls-ruby);
  border: 2px solid rgba(var(--kls-ruby-rgb),0.35);
  border-radius: 100px;
  padding: 0.45em 1.1em;
  gap: 0;
}
.kenzen-kicker--tag::before {
  display: none;
}

/* Variante sólida — fondo ruby, texto blanco, sin línea decorativa */
.kenzen-kicker--solid {
  background: var(--kls-ruby);
  color: #ffffff;
  border: none;
  border-radius: 100px;
  padding: 0.45em 1.1em;
  gap: 0;
}
.kenzen-kicker--solid::before {
  display: none;
}

.kenzen-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.75em;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #ffffff;
  border: none;
  border-radius: 100px;
  padding: 0.55em 1.2em;
  background: var(--kls-ruby);
  position: relative;
  overflow: hidden;
}

.kenzen-badge::before {
  content: '';
  flex-shrink: 0;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 0 0 3px rgba(255,255,255,0.25);
  animation: kls-pulse 2s ease-in-out infinite;
}

@keyframes kls-pulse {
  0%, 100% { box-shadow: 0 0 0 3px rgba(255,255,255,0.25); }
  50%      { box-shadow: 0 0 0 7px rgba(255,255,255,0.08); }
}

.kenzen-label {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #fff;
  background: var(--kls-grad-ruby);
  border-radius: 6px;
  padding: 0.32em 0.9em;
  margin-bottom: 1rem;
  box-shadow: 0 4px 12px var(--kls-ruby-glow);
}

/* ── Botones ────────────────────────────────────────────────── */
.kenzen-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 0.6em;
  padding: 1em 2.1em;
  border-radius: 8px;
  font-family: var(--kls-font-sans);
  font-size: 0.9rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-decoration: none;
  cursor: pointer;
  transition: background 0.3s, box-shadow 0.4s, transform 0.25s var(--kls-ease-spring), color 0.2s, border-color 0.3s;
  border: 1.5px solid transparent;
  overflow: hidden;
  white-space: nowrap;
  text-transform: uppercase;
  isolation: isolate;
}

.kenzen-btn::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(110deg, transparent 30%, rgba(255,255,255,0.25) 50%, transparent 70%);
  transform: translateX(-150%);
  transition: transform 0.7s var(--kls-ease-out);
  z-index: -1;
}

.kenzen-btn:hover::before {
  transform: translateX(150%);
}

.kenzen-btn--primary {
  background: var(--kls-grad-ruby);
  color: #fff;
  box-shadow: var(--kls-shadow-ruby);
}

.kenzen-btn--primary::after {
  content: '';
  position: absolute;
  inset: -2px;
  background: var(--kls-grad-ruby);
  border-radius: inherit;
  z-index: -2;
  opacity: 0;
  filter: blur(16px);
  transition: opacity 0.4s ease;
}

.kenzen-btn--primary:hover {
  transform: translateY(-3px);
  color: #fff;
  box-shadow: 0 12px 40px rgba(var(--kls-ruby-rgb),0.38), 0 4px 16px rgba(var(--kls-ruby-rgb),0.25);
}

.kenzen-btn--primary:hover::after {
  opacity: 0.7;
}

.kenzen-btn--primary:active {
  transform: translateY(-1px);
}

.kenzen-btn--secondary {
  background: var(--kls-bg-glass);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  color: var(--kls-text);
  border-color: var(--kls-border-md);
}

.kenzen-btn--secondary:hover {
  border-color: var(--kls-ruby);
  color: var(--kls-ruby);
  transform: translateY(-3px);
  box-shadow: var(--kls-shadow-md);
  background: #fff;
}

.kenzen-btn--secondary-inv {
  background: rgba(255,255,255,0.04);
  backdrop-filter: blur(12px);
  color: var(--kls-text-inv);
  border-color: var(--kls-border-dark-md);
}

.kenzen-btn--secondary-inv:hover {
  border-color: rgba(255,255,255,0.4);
  color: #fff;
  transform: translateY(-3px);
}

.kenzen-btn--ghost {
  background: transparent;
  color: var(--kls-text-muted);
  border-color: var(--kls-border-md);
  font-size: 0.825rem;
  font-weight: 600;
}

.kenzen-btn--ghost:hover {
  color: var(--kls-ruby);
  border-color: var(--kls-border-brand);
  background: var(--kls-bg-brand);
}

.kenzen-btn--block {
  width: 100%;
  justify-content: center;
}

.kenzen-btn__icon {
  width: 1em;
  height: 1em;
  flex-shrink: 0;
  transition: transform 0.3s var(--kls-ease-spring);
}

.kenzen-btn:hover .kenzen-btn__icon {
  transform: translateX(3px);
}

/* ── SVG iconos ─────────────────────────────────────────────── */
.kenzen-shell svg {
  display: inline-block;
  vertical-align: middle;
  width: 1.25em;
  height: 1.25em;
  flex-shrink: 0;
}

/* ======================================================
   HERO — Editorial premium
   ====================================================== */
.kenzen-hero {
  background: transparent;
  position: relative;
  overflow: hidden;
  padding-top: clamp(0.75rem, 2vw, 1.5rem);
  padding-bottom: clamp(4rem, 8vw, 7rem);
}

/* Sin overlay propio — el gradiente del shell cubre toda la landing */

/* Mesh grid sutil */
.kenzen-hero::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(0,0,0,0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,0,0,0.025) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: radial-gradient(ellipse 80% 80% at 50% 50%, black 30%, transparent 75%);
  -webkit-mask-image: radial-gradient(ellipse 80% 80% at 50% 50%, black 30%, transparent 75%);
  pointer-events: none;
  opacity: 0.6;
}

.kenzen-hero__inner {
  position: relative;
  display: grid;
  gap: var(--kls-gap);
  align-items: center;
  z-index: 1;
}

.kenzen-hero--video-right .kenzen-hero__inner,
.kenzen-hero--image-right .kenzen-hero__inner {
  grid-template-columns: 1.05fr 1fr;
}

.kenzen-hero--image-right .kenzen-hero__media {
  max-width: 90%;
  margin-inline: auto;
}

.kenzen-hero--centered .kenzen-hero__inner {
  grid-template-columns: 1fr;
  text-align: center;
  max-width: 880px;
  margin-inline: auto;
}

@media (max-width: 880px) {
  .kenzen-hero--video-right .kenzen-hero__inner,
  .kenzen-hero--image-right .kenzen-hero__inner {
    grid-template-columns: 1fr;
  }
  .kenzen-hero__media {
    animation: none;
  }
}

.kenzen-hero__badge {
  margin-bottom: 1.75rem;
}

.kenzen-hero__title {
  font-family: var(--kls-font-display);
  font-size: clamp(2.25rem, 4.2vw, 3.5rem);
  font-weight: 800;
  line-height: 1.05;
  color: var(--kls-text);
  margin-bottom: 2rem;
  letter-spacing: -0.04em;
}

.kenzen-hero__title .text-ruby-metallic {
  font-style: normal;
}

.kenzen-hero__lead {
  font-size: clamp(1.1rem, 1.6vw, 1.3rem);
  color: var(--kls-text-muted);
  max-width: 520px;
  margin-bottom: 2.5rem;
  line-height: 1.7;
  font-weight: 400;
}

.kenzen-hero--centered .kenzen-hero__lead {
  margin-inline: auto;
}

.kenzen-hero__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  align-items: center;
}

.kenzen-hero--centered .kenzen-hero__ctas {
  justify-content: center;
}

/* Media — premium frame */
.kenzen-hero__media {
  position: relative;
}

.kenzen-hero__media::before {
  content: '';
  position: absolute;
  inset: -20px;
  background: var(--kls-grad-ruby);
  border-radius: var(--kls-radius-2xl);
  opacity: 0.12;
  filter: blur(40px);
  z-index: -1;
  pointer-events: none;
}


/* Dos medios apilados en la columna derecha.
   El segundo hueco del hero (`media_2_type`) es opcional: sin él la columna
   sigue teniendo un solo hijo y esta clase ni aparece. */
.kenzen-hero__media--stack {
  display: grid;
  gap: clamp(0.75rem, 1.5vw, 1.25rem);
  align-content: center;
}

/* Las dos piezas miden igual, pase lo que pase.
   El vídeo trae un 16:9 fijo y la imagen, la proporción que tuviera el
   archivo: un par vídeo + imagen salía descuadrado, con una pieza el doble de
   alta que la otra. Recortando la imagen al mismo 16:9 el conjunto se lee como
   una decisión y no como un descuido. Solo cuando hay dos: con una sola, la
   imagen conserva su proporción como hasta ahora. */
.kenzen-hero__media--stack .kenzen-hero__img {
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

/* Inner wrapper — lleva el diseño visual. overflow:hidden aquí, NO en la facade */
.kenzen-hero__video-inner {
  aspect-ratio: 16 / 9;
  border-radius: var(--kls-radius-xl);
  overflow: hidden;
  box-shadow: var(--kls-shadow-xl);
  background: #000;
}

/* Facade — solo posicionamiento, sin overflow:hidden (igual que testimonials) */
.kenzen-hero__yt-facade {
  position: relative;
  width: 100%;
  height: 100%;
  cursor: pointer;
}

.kenzen-hero__yt-facade img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.3s ease;
}

.kenzen-hero__yt-facade:hover img {
  transform: scale(1.03);
}

.kenzen-hero__play {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
}

.kenzen-hero__play svg {
  width: 88px;
  height: auto;
  filter: drop-shadow(0 4px 20px rgba(0,0,0,0.55));
  transition: transform 0.2s ease;
}

.kenzen-hero__yt-facade:hover .kenzen-hero__play svg {
  transform: scale(1.12);
}

@keyframes kls-float {
  0%, 100% { transform: translateY(0px) rotate(0.4deg); }
  50%      { transform: translateY(-10px) rotate(-0.4deg); }
}

.kenzen-hero__img {
  width: 100%;
  height: auto;
  border-radius: var(--kls-radius-xl);
  box-shadow: var(--kls-shadow-xl);
  object-fit: cover;
}

/* Marquee divider */
.kenzen-hero__divider {
  margin-top: 5rem;
  border-top: 1px solid var(--kls-border);
  padding-top: 2rem;
  display: flex;
  align-items: center;
  gap: 2rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--kls-text-subtle);
}

/* ======================================================
   PAIN — Editorial
   ====================================================== */
.kenzen-pain {
  background: transparent;
  position: relative;
}

.kenzen-pain__inner {
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: clamp(2rem, 4vw, 4rem);
  align-items: center;
  max-width: 960px;
  margin-inline: auto;
  background: #ffffff;
  border-radius: 1.75rem;
  padding: clamp(2rem, 4vw, 3.5rem);
  box-shadow: var(--kls-shadow-md);
}

@media (max-width: 860px) {
  .kenzen-pain__inner {
    grid-template-columns: 1fr;
  }
}

.kenzen-pain__title {
  font-family: var(--kls-font-display);
  font-size: clamp(2.2rem, 4.8vw, 4rem);
  font-weight: 800;
  line-height: 1;
  letter-spacing: -0.04em;
  color: var(--kls-text);
  margin-bottom: 1.75rem;
}

.kenzen-pain__title .text-ruby-metallic {
  font-style: normal;
}

.kenzen-pain__body p {
  font-size: 1.05rem;
  color: var(--kls-text-muted);
  line-height: 1.8;
  margin-bottom: 1rem;
}

.kenzen-pain__body p strong {
  color: var(--kls-text);
  font-weight: 600;
}

.kenzen-pain__quote {
  position: relative;
  margin: 2.5rem 0 0;
  padding: 2rem 2.25rem;
  background: var(--kls-bg-card);
  border: 1px solid var(--kls-border);
  border-left: 3px solid var(--kls-ruby);
  border-radius: 0 var(--kls-radius-lg) var(--kls-radius-lg) 0;
  box-shadow: var(--kls-shadow);
}

.kenzen-pain__quote p {
  font-family: var(--kls-font-sans);
  font-size: 1.2rem;
  font-style: italic;
  color: var(--kls-text);
  line-height: 1.6;
  font-weight: 600;
}

.kenzen-pain__quote-icon {
  color: var(--kls-ruby);
  opacity: 0.3;
}

.kenzen-pain__quote-icon--open  { display: block; margin-bottom: 0.75rem; }
.kenzen-pain__quote-icon--close { display: block; text-align: right; margin-top: 0.75rem; }

/* Cards — apiladas verticalmente */
.kenzen-pain__cards {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.kenzen-pain-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 1.1rem;
  padding: 2rem 1.75rem 2.25rem;
  border-radius: var(--kls-radius-xl);
  border: 1px solid var(--kls-border);
  background: #ffffff;
  box-shadow: var(--kls-shadow);
  transition: transform 0.4s var(--kls-ease-spring), box-shadow 0.4s ease;
}

.kenzen-pain-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--kls-shadow-lg);
}

/* Icono — cuadrado redondeado tipo app icon */
.kenzen-pain-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 5rem;
  height: 5rem;
  border-radius: 1.25rem;
  flex-shrink: 0;
  transition: transform 0.4s var(--kls-ease-spring);
}

.kenzen-pain-card__icon svg,
.kenzen-pain-card__icon i.kls-icon-fa {
  width: 2.25rem;
  height: 2.25rem;
  font-size: 2rem;
  line-height: 1;
}

.kenzen-pain-card--neutral .kenzen-pain-card__icon {
  background: #e8eaed;
  color: var(--kls-text-subtle);
}

.kenzen-pain-card--brand .kenzen-pain-card__icon {
  background: var(--kls-ruby);
  color: #ffffff;
}

.kenzen-pain-card:hover .kenzen-pain-card__icon {
  transform: scale(1.08) rotate(-5deg);
}

/* Textos */
.kenzen-pain-card__body {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.kenzen-pain-card__title {
  font-size: 1.3rem;
  font-weight: 800;
  color: var(--kls-text);
  letter-spacing: -0.02em;
  line-height: 1.2;
}

.kenzen-pain-card__text {
  font-size: 1rem;
  color: var(--kls-text-muted);
  line-height: 1.7;
}

/* Card brand — fondo rosa visible */
.kenzen-pain-card--brand {
  background: rgba(var(--kls-ruby-rgb),0.07);
  border-color: rgba(var(--kls-ruby-rgb),0.22);
  box-shadow: var(--kls-shadow-ruby-xs);
}

.kenzen-pain-card--brand:hover {
  box-shadow: var(--kls-shadow-ruby-soft);
  border-color: rgba(var(--kls-ruby-rgb),0.35);
}

/* ======================================================
   STORY
   ====================================================== */
.kenzen-story {
  background: rgba(var(--kls-ruby-rgb), 0.05);
  position: relative;
  overflow: hidden;
}

/* Cabecera centrada */
.kenzen-story__header {
  text-align: center;
  max-width: 800px;
  margin-inline: auto;
  margin-bottom: 4rem;
}

.kenzen-story__title {
  font-family: var(--kls-font-display);
  font-size: clamp(2.2rem, 4.8vw, 4rem);
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1;
  color: var(--kls-text);
  margin-bottom: 1.25rem;
}

.kenzen-story__title em,
.kenzen-story__title .text-ruby-metallic { font-style: normal; }

.kenzen-story__lead {
  color: var(--kls-text-muted);
  line-height: 1.75;
  font-size: 1.05rem;
  max-width: 680px;
  margin-inline: auto;
}

/* Grid — flex centrado, 2 columnas */
.kenzen-story__cards {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 2rem;
}

/* Card */
.kenzen-story-card {
  width: 100%;
  max-width: 480px;
  background: var(--kls-bg-card);
  border: 1px solid var(--kls-border);
  border-radius: var(--kls-radius-xl);
  overflow: hidden;
  box-shadow: var(--kls-shadow);
  transition: transform 0.4s var(--kls-ease-spring), box-shadow 0.4s;
}

.kenzen-story-card:hover {
  transform: translateY(-8px);
  box-shadow: var(--kls-shadow-ruby-soft);
  border-color: var(--kls-border-brand);
}

/* Imagen superior full-bleed */
.kenzen-story-card__img-wrap {
  width: 100%;
  height: 240px;
  overflow: hidden;
  background: var(--kls-bg-alt);
}

.kenzen-story-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
  transition: transform 0.6s var(--kls-ease-out);
}

.kenzen-story-card:hover .kenzen-story-card__img {
  transform: scale(1.05);
}

/* Cuerpo centrado */
.kenzen-story-card__body {
  padding: 2rem 2rem 2.25rem;
  text-align: center;
}

.kenzen-story-card__kicker {
  display: inline-block;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--kls-ruby);
  margin-bottom: 0.875rem;
}

.kenzen-story-card__title {
  font-family: var(--kls-font-display);
  font-size: 1.5rem;
  font-weight: 800;
  line-height: 1.15;
  letter-spacing: -0.03em;
  color: var(--kls-text);
  margin-bottom: 1rem;
}

.kenzen-story-card__text {
  font-size: 0.975rem;
  color: var(--kls-text-muted);
  line-height: 1.75;
  margin: 0;
}

@media (max-width: 640px) {
  .kenzen-story-card { max-width: 100%; }
}

.kenzen-story-card:hover .kenzen-story-card__image img {
  transform: scale(1.06);
}

/* ======================================================
   TEACHERS
   ====================================================== */
.kenzen-teachers {
  background: var(--kls-bg-page);
  position: relative;
}

.kenzen-teachers__header {
  max-width: 700px;
  margin-bottom: 3.5rem;
}

.kenzen-teachers__title {
  font-family: var(--kls-font-display);
  font-size: clamp(2.2rem, 4.8vw, 4rem);
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1;
  color: var(--kls-text);
  margin-bottom: 1.25rem;
}

.kenzen-teachers__title em { font-style: italic; }

.kenzen-teachers__lead {
  color: var(--kls-text-muted);
  line-height: 1.75;
  font-size: 1.05rem;
}

/* Bio items */
.kenzen-bio-items {
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
}

.kenzen-bio-item {
  padding: 1.1rem 1.4rem;
  border-radius: var(--kls-radius);
  font-size: 0.925rem;
  line-height: 1.7;
  transition: transform 0.3s var(--kls-ease-spring);
}

.kenzen-bio-item:hover {
  transform: translateX(6px);
}

.kenzen-bio-item--white {
  background: var(--kls-bg-card);
  color: var(--kls-text);
  border: 1px solid var(--kls-border);
}

.kenzen-bio-item--brand {
  background: linear-gradient(135deg, rgba(var(--kls-ruby-rgb),0.07), rgba(var(--kls-ruby-rgb),0.03));
  color: var(--kls-text);
  border-left: 3px solid var(--kls-ruby);
  box-shadow: var(--kls-shadow-ruby-xs);
}

.kenzen-bio-item--slate {
  background: var(--kls-bg-dark);
  color: var(--kls-text-inv-muted);
}

/* TEACHERS — Accordion */
.kenzen-accordion {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.kenzen-accordion-item {
  border: 1px solid var(--kls-border);
  border-radius: var(--kls-radius-lg);
  overflow: hidden;
  transition: border-color 0.3s, box-shadow 0.3s, transform 0.3s var(--kls-ease-out);
  background: var(--kls-bg-card);
}

.kenzen-accordion-item:hover {
  border-color: var(--kls-border-md);
  box-shadow: var(--kls-shadow);
}

.kenzen-accordion-item.is-open,
.kenzen-accordion-item:has([aria-expanded="true"]) {
  border-color: rgba(var(--kls-ruby-rgb),0.30);
  box-shadow: var(--kls-shadow-ruby-soft);
}

.kenzen-accordion-item--special {
  background: linear-gradient(135deg, rgba(var(--kls-ruby-rgb),0.06), rgba(var(--kls-ruby-rgb),0.02));
  border-color: var(--kls-border-brand);
}

.kenzen-accordion-trigger {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1.4rem 1.75rem;
  background: transparent;
  border: none;
  cursor: pointer;
  text-align: left;
  color: var(--kls-text);
  transition: background 0.25s;
}

.kenzen-accordion-trigger:hover {
  background: var(--kls-bg-alt);
}

.kenzen-accordion-trigger[aria-expanded="true"] {
  background: linear-gradient(135deg, rgba(var(--kls-ruby-rgb),0.04), transparent);
}

.kenzen-accordion-item--special .kenzen-accordion-trigger {
  background: transparent;
}

.kenzen-accordion-chevron {
  margin-left: auto;
  flex-shrink: 0;
  transition: transform 0.4s var(--kls-ease-spring), color 0.3s;
  color: var(--kls-text-subtle);
}

[aria-expanded="true"] .kenzen-accordion-chevron {
  transform: rotate(180deg);
  color: var(--kls-ruby);
}

.kenzen-accordion-content {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.5s var(--kls-ease-out);
}

.kenzen-accordion-content[aria-hidden="false"],
.kenzen-accordion-content.is-open {
  max-height: 3000px;
}

.kenzen-teachers-trigger__thumb {
  width: 3.25rem;
  height: 3.25rem;
  flex-shrink: 0;
}

.kenzen-teachers-trigger__photo {
  width: 3.25rem;
  height: 3.25rem;
  object-fit: cover;
  border-radius: 50%;
  border: 2px solid var(--kls-border-brand);
  transition: border-color 0.3s, transform 0.3s var(--kls-ease-spring);
}

.kenzen-accordion-trigger:hover .kenzen-teachers-trigger__photo {
  border-color: var(--kls-ruby);
  transform: scale(1.05);
}

.kenzen-teachers-trigger__photo-placeholder {
  width: 3.25rem;
  height: 3.25rem;
  border-radius: 50%;
  background: var(--kls-bg-alt);
}

.kenzen-teachers-trigger__icon-wrap {
  width: 3.25rem;
  height: 3.25rem;
  border-radius: 50%;
  background: var(--kls-bg-brand);
  border: 1.5px solid var(--kls-border-brand);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--kls-ruby);
}

.kenzen-teachers-trigger__info {
  flex: 1;
  min-width: 0;
}

.kenzen-teachers-trigger__name {
  display: block;
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--kls-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  letter-spacing: -0.01em;
}

.kenzen-teachers-trigger__role {
  display: block;
  font-size: 0.825rem;
  color: var(--kls-text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.kenzen-teachers-content {
  padding: 0 1.75rem;
}

.kenzen-accordion-content[aria-hidden="false"] .kenzen-teachers-content,
.kenzen-accordion-content.is-open .kenzen-teachers-content {
  padding: 0.75rem 1.75rem 1.75rem;
}

/* TEACHERS — Grid */
.kenzen-teachers-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(310px, 1fr));
  gap: 2rem;
}

.kenzen-teacher-card {
  background: var(--kls-bg-card);
  border: 1px solid var(--kls-border);
  border-radius: var(--kls-radius-lg);
  overflow: hidden;
  transition: transform 0.18s ease, box-shadow 0.4s ease, border-color 0.3s;
  transform-style: preserve-3d;
  will-change: transform;
}

.kenzen-teacher-card:hover {
  box-shadow: var(--kls-shadow-ruby-soft);
  border-color: var(--kls-border-brand);
}

.kenzen-teacher-card__header {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1.75rem;
  border-bottom: 1px solid var(--kls-border);
}

.kenzen-teacher-card__photo-wrap {
  width: 4.5rem;
  height: 4.5rem;
  flex-shrink: 0;
}

.kenzen-teacher-card__photo {
  width: 4.5rem;
  height: 4.5rem;
  object-fit: cover;
  border-radius: 50%;
  border: 2.5px solid var(--kls-border-brand);
}

.kenzen-teacher-card__photo-placeholder {
  width: 4.5rem;
  height: 4.5rem;
  border-radius: 50%;
  background: var(--kls-bg-alt);
}

.kenzen-teacher-card__name {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--kls-text);
  margin-bottom: 0.25rem;
  letter-spacing: -0.01em;
}

.kenzen-teacher-card__role {
  font-size: 0.825rem;
  color: var(--kls-ruby);
  font-weight: 600;
}

.kenzen-teacher-card__bio {
  padding: 1.5rem 1.75rem 1.75rem;
}

/* TEACHERS — Single featured */
.kenzen-teacher-featured {
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: 3.5rem;
  align-items: start;
}

/* Variante profesor único: foto grande lateral, bio al lado */
.kenzen-teachers--single .kenzen-teachers__header {
  max-width: 100%;
  text-align: center;
  margin-inline: auto;
}

@media (max-width: 768px) {
  .kenzen-teacher-featured { grid-template-columns: 1fr; }
}

.kenzen-teacher-featured__photo {
  width: 100%;
  max-width: 360px;
  border-radius: var(--kls-radius-xl);
  object-fit: cover;
  box-shadow: var(--kls-shadow-lg);
}

.kenzen-teacher-featured__name {
  font-family: var(--kls-font-display);
  font-size: 2.25rem;
  font-weight: 800;
  letter-spacing: -0.035em;
  color: var(--kls-text);
  margin-bottom: 0.5rem;
}

.kenzen-teacher-featured__role {
  color: var(--kls-ruby);
  font-size: 0.95rem;
  font-weight: 600;
  margin-bottom: 1.75rem;
}

/* ======================================================
   BENEFITS V2
   ====================================================== */
.kenzen-benefits {
  background: #ffffff;
  position: relative;
  color: var(--kls-text);
}

.kenzen-benefits__panel {
  padding: clamp(1.75rem, 3vw, 2.5rem) 0;
}

.kenzen-benefits__grid {
  display: grid;
  grid-template-columns: 5fr 7fr;
  gap: 3rem;
  align-items: start;
}

@media (max-width: 860px) {
  .kenzen-benefits__grid { grid-template-columns: 1fr; gap: 2rem; }
}

.kenzen-benefits__left {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.kenzen-benefits__title {
  font-family: var(--kls-font-display);
  font-size: clamp(2.2rem, 4.8vw, 4rem);
  font-weight: 800;
  color: var(--kls-text);
  line-height: 1.1;
  letter-spacing: -0.04em;
  margin-bottom: 0.9rem;
}

.kenzen-benefits__title .text-ruby-metallic { font-style: normal; }

.kenzen-benefits__lead {
  font-size: 0.96rem;
  color: var(--kls-text-muted);
  line-height: 1.7;
  margin-bottom: 1.5rem;
}

/* Icon cards — 2 cuadrados en fila */
.kenzen-benefits__icon-cards {
  display: flex;
  gap: 0.9rem;
  flex-wrap: nowrap;
}

.kenzen-benefits__icon-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  flex: 1 1 0;
  min-width: 0;
  aspect-ratio: 1;
  background: #ffffff;
  border: 1px solid rgba(var(--kls-dark-rgb),0.12);
  box-shadow: 0 3px 12px rgba(var(--kls-dark-rgb),0.08);
  border-radius: 16px;
  padding: 1rem 0.75rem;
  gap: 0.65rem;
  transition: transform 0.25s var(--kls-ease-spring);
}

.kenzen-benefits__icon-card:hover { transform: translateY(-4px); }

.kenzen-benefits__icon-card--brand {
  background: rgba(var(--kls-ruby-rgb), 0.07);
  border-color: rgba(var(--kls-ruby-rgb), 0.22);
}

.kenzen-benefits__icon-card-icon { display: flex; align-items: center; justify-content: center; }

.kenzen-benefits__icon-card-icon svg,
.kenzen-benefits__icon-card-icon i.kls-icon-fa {
  width: 2.25rem;
  height: 2.25rem;
  font-size: 2.25rem;
}

.kenzen-benefits__icon-card-icon i,
.kenzen-benefits__icon-card-icon svg,
.kenzen-benefits__icon-card i,
.kenzen-benefits__icon-card svg { font-size: 2.25rem; }

.kenzen-benefits__icon-card--white .kenzen-benefits__icon-card-icon i,
.kenzen-benefits__icon-card--white .kenzen-benefits__icon-card-icon svg { color: rgba(var(--kls-ruby-rgb), 0.8); }

.kenzen-benefits__icon-card--brand .kenzen-benefits__icon-card-icon i,
.kenzen-benefits__icon-card--brand .kenzen-benefits__icon-card-icon svg { color: var(--kls-ruby); }

.kenzen-benefits__icon-card-label {
  font-size: 0.68rem;
  font-weight: 900;
  color: var(--kls-text);
  text-transform: uppercase;
  letter-spacing: 0.07em;
  line-height: 1.3;
}

.kenzen-benefits__icon-card--brand .kenzen-benefits__icon-card-label { color: var(--kls-ruby); }

/* Columna derecha */
.kenzen-benefits__right {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

/* Benefit items */
.kenzen-benefit-item {
  display: flex;
  align-items: flex-start;
  gap: 1.1rem;
  background: #ffffff;
  border: 1px solid rgba(var(--kls-dark-rgb),0.07);
  box-shadow: 0 2px 8px rgba(var(--kls-dark-rgb),0.05);
  border-radius: 16px;
  padding: 1.1rem 1.25rem;
  transition: transform 0.25s var(--kls-ease-spring), box-shadow 0.25s;
}

.kenzen-benefit-item:hover {
  transform: translateX(4px);
  box-shadow: 0 4px 16px rgba(var(--kls-dark-rgb),0.1);
}

.kenzen-benefit-item--offset { margin-left: 1.5rem; }

@media (max-width: 860px) {
  .kenzen-benefit-item--offset { margin-left: 0; }
  .kenzen-benefits__icon-card { aspect-ratio: auto; min-height: 7rem; }
}

/* Número — caja cuadrada con variantes */
.kenzen-benefit-item__num {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 3.25rem;
  height: 3.25rem;
  border-radius: 12px;
  background: rgba(var(--kls-dark-rgb),0.05);
  border: 1px solid rgba(var(--kls-dark-rgb),0.1);
  font-family: var(--kls-font-display);
  font-weight: 900;
  font-size: 1.15rem;
  color: var(--kls-text-subtle);
}

.kenzen-benefit-item__num--dark {
  background: #1d2327;
  color: #ffffff;
  border-color: #1d2327;
}

.kenzen-benefit-item__num--brand {
  background: var(--kls-grad-ruby);
  color: #ffffff;
  border-color: transparent;
  box-shadow: 0 2px 10px rgba(var(--kls-ruby-rgb), 0.3);
}

.kenzen-benefit-item__body { flex: 1; min-width: 0; }

.kenzen-benefit-item__title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--kls-text);
  margin-bottom: 0.35rem;
  letter-spacing: -0.01em;
}

.kenzen-benefit-item__text {
  font-size: 0.875rem;
  color: var(--kls-text-muted);
  line-height: 1.65;
  margin-bottom: 0.65rem;
}

.kenzen-benefit-item__tag {
  display: inline-block;
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  padding: 0.25em 0.7em;
  border-radius: 4px;
}

.kenzen-benefit-item__tag--slate { background: rgba(var(--kls-dark-rgb),0.06); color: var(--kls-text-muted); }
.kenzen-benefit-item__tag--dark  { background: #2d3748; color: #ffffff; }
.kenzen-benefit-item__tag--brand { background: var(--kls-ruby); color: #ffffff; box-shadow: 0 2px 6px rgba(var(--kls-ruby-rgb),0.25); }

/* Authority */
.kenzen-authority {
  position: relative;
  text-align: center;
  z-index: 1;
}

.kenzen-authority__title {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #fff;
  background: var(--kls-grad-ruby);
  border-radius: 6px;
  padding: 0.32em 0.9em;
  margin-bottom: 2.25rem;
  box-shadow: 0 4px 12px var(--kls-ruby-glow);
}

.kenzen-authority__logos {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1.5rem;
  margin-bottom: 3rem;
}

.kenzen-authority-logo {
  flex: 0 1 220px;
}

@media (max-width: 480px) {
  .kenzen-authority-logo { flex: 1 1 100%; }
}

.kenzen-authority-logo {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 1rem;
  padding: 2rem 1.5rem;
  background: #ffffff;
  border-radius: var(--kls-radius-xl, 16px);
  box-shadow: 0 2px 16px rgba(var(--kls-dark-rgb),0.07);
  transition: transform 0.3s var(--kls-ease-spring), box-shadow 0.3s;
}

.kenzen-authority-logo:hover {
  transform: translateY(-5px);
  box-shadow: 0 8px 28px rgba(var(--kls-dark-rgb),0.11);
}

.kenzen-authority-logo__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 4rem;
  height: 4rem;
  border-radius: 12px;
  background: rgba(var(--kls-ruby-rgb),0.07);
  color: var(--kls-ruby);
  flex-shrink: 0;
  transition: background 0.3s;
}

.kenzen-authority-logo:hover .kenzen-authority-logo__icon {
  background: rgba(var(--kls-ruby-rgb),0.12);
}

.kenzen-authority-logo__icon svg,
.kenzen-authority-logo__icon i.kls-icon-fa {
  width: 2rem;
  height: 2rem;
  font-size: 1.75rem;
  line-height: 1;
}

.kenzen-authority-logo__name {
  font-weight: 700;
  font-size: 1rem;
  color: var(--kls-text);
  line-height: 1.3;
}

.kenzen-authority-logo__desc {
  font-size: 0.875rem;
  color: var(--kls-text-muted);
  line-height: 1.55;
  margin: 0;
}

.kenzen-authority__stats {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 2rem 4rem;
}

.kenzen-stat { text-align: center; }

.kenzen-stat__value {
  display: block;
  font-family: var(--kls-font-display);
  font-size: 3.5rem;
  font-weight: 800;
  font-style: normal;
  background: var(--kls-grad-ruby);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  line-height: 1;
  letter-spacing: -0.04em;
}

/* Color de las cifras, elegible por landing.
   El degradado de marca arranca en `--kls-ruby-dark` y esta sección va sobre
   navy: ese extremo del degradado casi no se ve y las cifras salen apagadas.
   Las dos variantes son de color plano, así que hay que deshacer el recorte de
   fondo — con `-webkit-text-fill-color` transparente el `color` no pinta nada.
   Sin clase, el degradado de siempre: las landings publicadas no se mueven. */
.kenzen-authority__stats--claro .kenzen-stat__value,
.kenzen-authority__stats--blanco .kenzen-stat__value {
  background: none;
  -webkit-text-fill-color: currentColor;
}

.kenzen-authority__stats--claro .kenzen-stat__value  { color: var(--kls-ruby-light); }
.kenzen-authority__stats--blanco .kenzen-stat__value { color: #fff; }

.kenzen-stat__label {
  margin-top: 0.5rem;
  font-size: 0.72rem;
  color: var(--kls-text-subtle);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-weight: 600;
}

/* Authority — fondo oscuro */
.kenzen-authority-section {
  background: var(--kls-bg-dark);
  position: relative;
}

.kenzen-authority-section .kenzen-authority-logo {
  box-shadow: none;
}

.kenzen-authority-section .kenzen-authority-logo:hover {
  box-shadow: 0 8px 28px rgba(var(--kls-ruby-rgb), 0.2);
}


.kenzen-authority-section .kenzen-stat__label {
  color: rgba(255, 255, 255, 0.45);
}

/* ======================================================
   PROGRAM
   ====================================================== */
.kenzen-program {
  background: var(--kls-bg-page);
  position: relative;
  overflow: hidden;
}


.kenzen-program__header {
  position: relative;
  max-width: 800px;
  margin-inline: auto;
  margin-bottom: 3rem;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  align-items: center;
}

.kenzen-program__title {
  font-family: var(--kls-font-display);
  font-size: clamp(2.2rem, 4.8vw, 4rem);
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1;
  color: var(--kls-text);
}

.kenzen-program__title em { font-style: italic; }

.kenzen-program__lead {
  color: var(--kls-ruby);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}

/* Program Accordion */
.kenzen-program-item__trigger {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 1.5rem;
  width: 100%;
  padding: 1.75rem;
  background: var(--kls-bg-card);
  border: none;
  cursor: pointer;
  text-align: left;
  color: var(--kls-text);
  transition: background 0.25s;
}

.kenzen-program-item__trigger:hover {
  background: var(--kls-bg-alt);
}

.kenzen-program-item__trigger[aria-expanded="true"] {
  background: linear-gradient(135deg, rgba(var(--kls-ruby-rgb),0.05), transparent);
}

.kenzen-program-item__meta {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  min-width: 90px;
}

.kenzen-program-item__badge {
  display: inline-block;
  font-size: 0.68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: #fff;
  background: var(--kls-grad-ruby);
  padding: 0.3em 0.75em;
  border-radius: 6px;
  white-space: nowrap;
  align-self: flex-start;
  box-shadow: 0 2px 8px var(--kls-ruby-glow-soft);
}

.kenzen-program-item__duration {
  display: flex;
  align-items: center;
  gap: 0.35em;
  font-size: 0.78rem;
  color: var(--kls-text-subtle);
}

.kenzen-program-item__title {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--kls-text);
  margin-bottom: 0.3rem;
  letter-spacing: -0.01em;
}

.kenzen-program-item__subtitle {
  font-size: 0.875rem;
  color: var(--kls-text-muted);
}

.kenzen-program-item__content {
  padding: 0;
  transition: max-height 0.4s var(--kls-ease-out);
}

.kenzen-program-item__content p {
  font-size: 0.95rem;
  color: var(--kls-text-muted);
  line-height: 1.8;
  margin-bottom: 0.75rem;
}

.kenzen-accordion-content[aria-hidden="false"] .kenzen-program-item__content,
.kenzen-accordion-content.is-open .kenzen-program-item__content {
  padding: 1.5rem 1.75rem 1.75rem;
}

/* Program Cards */
.kenzen-program-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 1.5rem;
}

.kenzen-program-card {
  background: var(--kls-bg-card);
  border: 1px solid var(--kls-border);
  border-radius: var(--kls-radius-lg);
  padding: 1.75rem;
  transition: transform 0.4s var(--kls-ease-spring), box-shadow 0.4s;
  position: relative;
  overflow: hidden;
}

.kenzen-program-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 100%;
  height: 3px;
  background: var(--kls-grad-ruby);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.5s var(--kls-ease-out);
}

.kenzen-program-card:hover {
  transform: translateY(-6px);
  box-shadow: var(--kls-shadow-lg);
}

.kenzen-program-card:hover::before {
  transform: scaleX(1);
}

.kenzen-program-card__header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 0.875rem;
}

.kenzen-program-card__badge {
  font-size: 0.68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  background: var(--kls-grad-ruby);
  color: #fff;
  padding: 0.25em 0.75em;
  border-radius: 6px;
  box-shadow: 0 2px 8px var(--kls-ruby-glow-soft);
}

.kenzen-program-card__duration {
  display: flex;
  align-items: center;
  gap: 0.35em;
  font-size: 0.78rem;
  color: var(--kls-text-subtle);
}

.kenzen-program-card__title {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--kls-text);
  margin-bottom: 0.5rem;
  letter-spacing: -0.01em;
}

.kenzen-program-card__subtitle {
  font-size: 0.875rem;
  color: var(--kls-text-muted);
  line-height: 1.7;
}

.kenzen-program-card__ponentes {
  font-size: 0.75rem;
  color: var(--kls-text-subtle);
  margin-top: 4px;
  font-weight: 500;
}

/* ======================================================
   SCHEDULE
   ====================================================== */
.kenzen-schedule {
  background: transparent;
  position: relative;
  overflow: hidden;
}

.kenzen-schedule__header {
  max-width: 800px;
  margin-inline: auto;
  text-align: center;
  margin-bottom: 3rem;
}

.kenzen-schedule__title {
  font-family: var(--kls-font-display);
  font-size: clamp(2.2rem, 4.8vw, 4rem);
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1;
  color: var(--kls-text);
}

/* White card wrapper */
.kenzen-schedule__card {
  max-width: 960px;
  margin-inline: auto;
  background: #ffffff;
  border-radius: var(--kls-radius-xl, 20px);
  border: 1px solid var(--kls-border);
  box-shadow: 0 2px 24px rgba(var(--kls-dark-rgb),0.07);
  padding: 2.5rem;
}

@media (max-width: 600px) {
  .kenzen-schedule__card { padding: 1.5rem; }
}

.kenzen-schedule__badge {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--kls-ruby);
  margin-bottom: 2rem;
  padding: 0.45em 1em;
  background: #ffffff;
  border: 2px solid rgba(var(--kls-ruby-rgb),0.35);
  border-radius: 100px;
}

.kenzen-schedule__badge-icon { color: var(--kls-ruby); }

/* Layout fijo 2 columnas: sedes izq | horarios+features dcha */
.kenzen-schedule__two-col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
  align-items: start;
}

.kenzen-schedule__col-left,
.kenzen-schedule__col-right {
  display: flex;
  flex-direction: column;
  gap: 2rem;
}

.kenzen-schedule__col-locations {
  display: flex;
  flex-direction: column;
  gap: 2.5rem;
}

@media (max-width: 800px) {
  .kenzen-schedule__two-col {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
}

/* Location card */
.kenzen-location {
  background: transparent;
}

.kenzen-location__city {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  font-family: var(--kls-font-display);
  font-size: 1.75rem;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--kls-text);
  margin-bottom: 0.5rem;
}

.kenzen-location__dot {
  display: inline-block;
  width: 0.625rem;
  height: 0.625rem;
  border-radius: 50%;
  background: var(--kls-ruby);
  flex-shrink: 0;
}

.kenzen-location__venue {
  display: flex;
  align-items: flex-start;
  gap: 0.4rem;
  font-size: 0.875rem;
  color: var(--kls-text-muted);
  margin-bottom: 0.2rem;
}

.kenzen-location__venue-icon { color: var(--kls-text-subtle); flex-shrink: 0; margin-top: 2px; }

.kenzen-location__address {
  font-size: 0.825rem;
  color: var(--kls-text-subtle);
  margin-bottom: 1.25rem;
}

.kenzen-location__note {
  font-size: 0.825rem;
  color: var(--kls-text-muted);
  margin-top: 4px;
  margin-bottom: 0;
}

.kenzen-location__ponentes {
  font-size: 0.8rem;
  color: var(--kls-text-subtle);
  font-weight: 500;
  margin-top: 4px;
  margin-bottom: 0;
}

.kenzen-location__dates {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin-top: 1rem;
}

/* Date block — nueva versión */
.kenzen-date-block {
  display: flex;
  align-items: center;
  gap: 0.875rem;
  padding: 0.875rem 1.1rem;
  background: rgba(var(--kls-ruby-rgb),0.06);
  border-radius: var(--kls-radius-lg, 12px);
  border: 1px solid rgba(var(--kls-ruby-rgb),0.12);
  transition: background 0.2s, transform 0.3s var(--kls-ease-spring);
}

.kenzen-date-block:hover {
  background: rgba(var(--kls-ruby-rgb),0.1);
  transform: translateX(3px);
}

.kenzen-date-block__icon {
  color: var(--kls-ruby);
  flex-shrink: 0;
  width: 1.1rem;
  height: 1.1rem;
}

.kenzen-date-block__body {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.kenzen-date-block__label {
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--kls-ruby);
  line-height: 1.2;
}

.kenzen-date-block__dates {
  font-size: 0.825rem;
  color: var(--kls-text);
  font-weight: 500;
}

.kenzen-date-block__ponentes {
  font-size: 0.75rem;
  color: var(--kls-text-muted);
  font-weight: 400;
  margin-top: 2px;
}

/* Calendar detail (modo texto libre) */
.kenzen-schedule__calendar-detail {
  background: var(--kls-bg-card);
  border: 1px solid var(--kls-border);
  border-radius: var(--kls-radius-lg);
  padding: 1.75rem;
  box-shadow: var(--kls-shadow-xs);
}

.kenzen-schedule__calendar-detail p {
  font-size: 0.9rem;
  color: var(--kls-text);
  line-height: 1.75;
  margin-bottom: 0.25rem;
}


.kenzen-schedule__features {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.kenzen-schedule__col-right .kenzen-schedule__features,
.kenzen-schedule__features--right {
  margin-top: 1.5rem;
}

.kenzen-schedule-feature {
  display: flex;
  gap: 1rem;
  padding: 1.4rem;
  border-radius: var(--kls-radius);
  border: 1px solid var(--kls-border);
  background: var(--kls-bg-card);
  transition: transform 0.3s var(--kls-ease-spring), box-shadow 0.3s, border-color 0.3s;
}

.kenzen-schedule-feature:hover {
  transform: translateY(-4px);
  box-shadow: var(--kls-shadow);
  border-color: var(--kls-border-md);
}

.kenzen-schedule-feature--brand {
  background: linear-gradient(135deg, rgba(var(--kls-ruby-rgb),0.06), rgba(var(--kls-ruby-rgb),0.02));
  border-color: var(--kls-border-brand);
  box-shadow: var(--kls-shadow-ruby-xs);
}

.kenzen-schedule-feature--brand:hover {
  box-shadow: var(--kls-shadow-ruby-soft);
  border-color: rgba(var(--kls-ruby-rgb),0.32);
}

.kenzen-feature--linked { cursor: pointer; text-decoration: none; }
.kenzen-feature--linked:hover { text-decoration: none; }
.kenzen-pricing-feature__link { display: contents; color: inherit; text-decoration: none; }

.kenzen-schedule-feature__icon { color: var(--kls-ruby); flex-shrink: 0; }

.kenzen-schedule-feature__img {
  display: block;
  max-height: 3rem;
  height: auto;
  width: auto;
  max-width: 100%;
  object-fit: contain;
}

.kenzen-schedule-feature__title {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--kls-text);
  margin-bottom: 0.3rem;
  letter-spacing: -0.01em;
}

.kenzen-schedule-feature__text {
  font-size: 0.875rem;
  color: var(--kls-text-muted);
  line-height: 1.65;
}

.kenzen-schedule__times-title {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--kls-text);
  margin-bottom: 0.875rem;
}

.kenzen-schedule__times-icon { color: var(--kls-ruby); }

.kenzen-time-slots {
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
}

.kenzen-time-slot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  padding: 0.875rem 1.1rem;
  background: var(--kls-bg-card);
  border-radius: var(--kls-radius);
  border: 1px solid var(--kls-border);
}

.kenzen-time-slot__day   { font-size: 0.875rem; font-weight: 700; color: var(--kls-text); }
.kenzen-time-slot__hours { font-size: 0.875rem; color: var(--kls-text-muted); }

.kenzen-schedule__notice {
  font-size: 0.875rem;
  color: var(--kls-text-subtle);
  line-height: 1.65;
  font-style: italic;
  margin-top: 1.5rem;
  text-align: center;
}

/* ======================================================
   TESTIMONIALS
   ====================================================== */
.kenzen-testimonials {
  background: transparent;
  position: relative;
  overflow: hidden;
}


.kenzen-testimonials__header {
  max-width: 800px;
  margin-inline: auto;
  margin-bottom: 3.5rem;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
}

.kenzen-testimonials__title {
  font-family: var(--kls-font-display);
  font-size: clamp(2.2rem, 4.8vw, 4rem);
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1;
  color: var(--kls-text);
}

.kenzen-testimonials__title em { font-style: italic; }

/* Fila de items (texto + vídeo mezclados) */
.kenzen-testimonials__row {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem;
  align-items: flex-start;
}

/* Item genérico */
.kenzen-testimonials__item--text {
  flex: 1;
  min-width: 260px;
}

/* Item vídeo portrait — ancho fijo */
.kenzen-testimonials__item--video {
  flex: 0 0 260px;
  max-width: 300px;
}

@media (max-width: 700px) {
  .kenzen-testimonials__item--video {
    flex: 1 1 100%;
    max-width: 320px;
    margin-inline: auto;
  }
  .kenzen-testimonials__item--text { flex: 1 1 100%; }
}

/* Glass card exterior — position:relative como base del stack absoluto */
.kenzen-testimonials__video-glass {
  aspect-ratio: 9 / 16;
  position: relative;
  background: rgba(255, 255, 255, 0.65);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border-radius: 20px;
  padding: 10px;
  box-shadow: 0 24px 64px rgba(0,0,0,0.14), 0 4px 16px rgba(0,0,0,0.07);
  border: 1px solid rgba(255, 255, 255, 0.85);
}

/* Inner container — absoluto respetando el padding de 10px */
.kenzen-testimonials__video-inner {
  position: absolute;
  inset: 10px;
  border-radius: 12px;
  overflow: hidden;
  background: #f1f5f9;
  border: 1px solid #e2e8f0;
  box-shadow: inset 0 2px 8px rgba(0,0,0,0.06);
}

.kenzen-testimonials__video-inner iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

/* Facade — absoluto dentro del inner, llena todo */
.kenzen-testimonials__yt-facade {
  position: absolute;
  inset: 0;
  cursor: pointer;
}

.kenzen-testimonials__yt-facade img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.3s ease;
}

.kenzen-testimonials__yt-facade:hover img {
  transform: scale(1.04);
}

.kenzen-testimonials__play {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
}

.kenzen-testimonials__play svg {
  width: 56px;
  height: auto;
  filter: drop-shadow(0 4px 16px rgba(0,0,0,0.5));
  transition: transform 0.2s ease;
}

.kenzen-testimonials__yt-facade:hover .kenzen-testimonials__play svg {
  transform: scale(1.12);
}

/* Grid variante text_grid */
.kenzen-testimonials-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
  gap: 1.5rem;
}

.kenzen-testimonials__list {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

/* Tarjeta de testimonio */
.kenzen-testimonial {
  background: #ffffff;
  border: 1px solid var(--kls-border);
  border-radius: var(--kls-radius-xl, 20px);
  padding: 1.75rem;
  transition: transform 0.18s ease, box-shadow 0.4s, border-color 0.3s;
  transform-style: preserve-3d;
  will-change: transform;
  box-shadow: 0 2px 12px rgba(var(--kls-dark-rgb),0.05);
}

.kenzen-testimonial:hover {
  box-shadow: var(--kls-shadow-ruby-soft);
  border-color: var(--kls-border-brand);
}

.kenzen-testimonial__quote-icon {
  color: var(--kls-ruby);
  opacity: 0.15;
  margin-bottom: 0.875rem;
}

.kenzen-testimonial__quote {
  font-family: var(--kls-font-sans);
  font-size: 0.975rem;
  font-style: italic;
  font-weight: 500;
  color: var(--kls-text-muted);
  line-height: 1.75;
  margin-bottom: 1.5rem;
}

.kenzen-testimonial__author {
  padding-top: 1.25rem;
  border-top: 1px solid var(--kls-border);
}

.kenzen-testimonial__name {
  display: block;
  font-size: 0.875rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--kls-text);
}

.kenzen-testimonial__role {
  display: block;
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--kls-ruby);
  margin-top: 0.2rem;
}

/* ======================================================
   PRICING — DARK premium box
   ====================================================== */
.kenzen-pricing {
  background: var(--kls-bg-page);
  position: relative;
  overflow: hidden;
  color: var(--kls-text);
}


.kenzen-pricing__layout {
  position: relative;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--kls-gap);
  /* `center`, no `start`. La columna derecha lleva la caja de precio entera y
     casi siempre es más alta que la de ventajas; con `start` el sobrante se
     acumulaba abajo y dejaba un agujero. Centrado, se reparte arriba y abajo y
     se lee como intencionado. Cuando las dos columnas miden lo mismo, `start` y
     `center` pintan idéntico, así que esto no cambia ninguna landing ya
     equilibrada — solo arregla las que no lo estaban. */
  align-items: center;
  z-index: 1;
}

@media (max-width: 900px) {
  .kenzen-pricing__layout { grid-template-columns: 1fr; }
}

.kenzen-pricing__kicker {
  display: inline-flex;
  margin-bottom: 0.875rem;
}

.kenzen-pricing__title {
  font-family: var(--kls-font-display);
  font-size: clamp(2.2rem, 4.8vw, 4rem);
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1;
  color: var(--kls-text);
  margin-bottom: 2.25rem;
}

.kenzen-pricing__title em { font-style: normal; }

.kenzen-pricing__features {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin-bottom: 2.25rem;
}

.kenzen-pricing__features--right {
  margin-top: 2.5rem;
}

.kenzen-pricing-feature {
  display: flex;
  gap: 1rem;
  padding: 1.4rem;
  border-radius: var(--kls-radius);
  border: 1px solid var(--kls-border);
  background: var(--kls-bg-card);
  transition: border-color 0.25s, transform 0.3s var(--kls-ease-spring), box-shadow 0.25s;
}

.kenzen-pricing-feature:hover {
  transform: translateX(6px);
  border-color: var(--kls-border-md);
  box-shadow: var(--kls-shadow);
}

.kenzen-pricing-feature--brand {
  background: var(--kls-bg-brand);
  border-color: rgba(var(--kls-ruby-rgb),0.35);
}

.kenzen-pricing-feature--brand:hover {
  box-shadow: var(--kls-shadow-ruby-soft);
  border-color: rgba(var(--kls-ruby-rgb),0.55);
}

.kenzen-pricing-feature--green {
  background: #f0fdf4;
  border-color: rgba(34,197,94,0.45);
}

.kenzen-pricing-feature--green:hover {
  border-color: rgba(34,197,94,0.65);
  box-shadow: 0 4px 16px rgba(34,197,94,0.15);
}

.kenzen-pricing-feature__icon { color: var(--kls-ruby); flex-shrink: 0; }

.kenzen-pricing-feature__body { min-width: 0; flex: 1; }

.kenzen-pricing-feature__icon svg,
.kenzen-pricing-feature__icon i.kls-icon-fa {
  width: 1.5rem;
  height: 1.5rem;
  font-size: 1.4rem;
}

/* Imagen/logo en feature (dentro del body, encima del label) */
.kenzen-pricing-feature__media { margin-bottom: 0.5rem; }
.kenzen-pricing-feature__img   { display: block; max-height: 3.2rem !important; height: auto !important; width: auto !important; max-width: 100% !important; }

/* Alerta de precio — encima del precio, fondo ruby sólido, sin radius */
.kenzen-pricing__alert {
  display: inline-block;
  background: var(--kls-ruby);
  color: #ffffff;
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 0.5em 1em;
  border-radius: 0;
  margin-bottom: 1.25rem;
}

/* Box note en columna derecha */
.kenzen-pricing__box-note {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 1.1rem 1.25rem;
  margin-top: 1.5rem;
  border-radius: var(--kls-radius-lg);
  border: 1px solid var(--kls-border);
  margin-bottom: 1.25rem;
}

.kenzen-pricing__box-note--white { background: #fff; }

.kenzen-pricing__box-note--brand {
  background: var(--kls-bg-brand);
  border-color: rgba(var(--kls-ruby-rgb),0.35);
}

.kenzen-pricing__box-note--green {
  background: #f0fdf4;
  border-color: rgba(34,197,94,0.45);
}

.kenzen-pricing__box-note-media { margin-bottom: 0.25rem; }
.kenzen-pricing__box-note-img   { max-height: 3rem; height: auto; width: auto; max-width: 100%; object-fit: contain; object-position: left center; display: block; }

.kenzen-pricing__box-note-icon { color: var(--kls-ruby); margin-bottom: 0.25rem; }

.kenzen-pricing__box-note-icon svg,
.kenzen-pricing__box-note-icon i.kls-icon-fa {
  width: 1.75rem;
  height: 1.75rem;
  font-size: 1.5rem;
}

.kenzen-pricing__box-note-title {
  display: block;
  font-size: 0.875rem;
  font-weight: 700;
  color: var(--kls-text);
  line-height: 1.3;
}

.kenzen-pricing__box-note-text {
  font-size: 0.825rem;
  color: var(--kls-text-muted);
  line-height: 1.6;
  margin: 0;
}

.kenzen-pricing-feature__label {
  display: block;
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--kls-text);
  margin-bottom: 0.25rem;
}

.kenzen-pricing-feature__text {
  font-size: 0.875rem;
  color: var(--kls-text-muted);
}

.kenzen-pricing__accreditation {
  background: var(--kls-bg-card);
  border: 1px solid var(--kls-border);
  border-radius: var(--kls-radius);
  padding: 1.4rem;
  margin-bottom: 1.75rem;
  box-shadow: var(--kls-shadow-xs);
}

.kenzen-pricing__accreditation-logo {
  max-width: 200px;
  max-height: 60px;
  object-fit: contain;
  margin-bottom: 0.875rem;
  filter: none;
}

.kenzen-pricing__accreditation-text {
  display: flex;
  gap: 0.5rem;
  align-items: flex-start;
}

.kenzen-pricing__accreditation-icon { color: var(--kls-ruby); flex-shrink: 0; margin-top: 2px; }

.kenzen-pricing__accreditation-text p {
  font-size: 0.875rem;
  color: var(--kls-text-muted);
  line-height: 1.65;
}

.kenzen-pricing__security-note {
  font-size: 0.825rem;
  color: var(--kls-text-subtle);
  line-height: 1.65;
  font-style: italic;
}

/* Pricing box — premium light */
.kenzen-pricing__box {
  background: var(--kls-bg-card);
  border: 1.5px solid rgba(var(--kls-ruby-rgb),0.25);
  border-radius: var(--kls-radius-xl);
  padding: 2.5rem;
  position: relative;
  overflow: hidden;
  box-shadow: var(--kls-shadow-ruby-soft);
  margin-bottom: 2rem;
}

.kenzen-pricing__box::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: var(--kls-grad-ruby);
}


.kenzen-pricing__price-label {
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--kls-text-subtle);
  margin-bottom: 0.75rem;
  font-weight: 600;
  position: relative;
}

.kenzen-pricing__amount {
  display: flex;
  align-items: flex-start;
  gap: 0.25rem;
  margin-bottom: 0.75rem;
  position: relative;
}

.kenzen-pricing__price {
  font-family: var(--kls-font-display);
  font-size: 5.5rem;
  font-weight: 800;
  color: var(--kls-text);
  line-height: 0.9;
  letter-spacing: -0.05em;
}

.kenzen-pricing__currency {
  font-family: var(--kls-font-display);
  font-size: 1.75rem;
  font-weight: 700;
  font-style: normal;
  color: var(--kls-ruby);
  margin-top: 0.75rem;
}

.kenzen-pricing__price-note {
  font-size: 0.9rem;
  color: var(--kls-text-muted);
  margin-bottom: 2.25rem;
  position: relative;
}

/* Modo fraccionado — el número grande es la cuota, no el total del curso.
   Reutiliza __price, __currency y __amount; solo añade la periodicidad al
   lado del importe, el desglose y la chapa de ahorro. */
.kenzen-pricing__period {
  font-family: var(--kls-font-display);
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--kls-text-subtle);
  letter-spacing: -0.01em;
  /* Alineado con la base del importe, no con su caja: __price tiene
     line-height 0.9 y font-size 5.5rem, así que la coronilla queda muy alta. */
  align-self: flex-end;
  margin-bottom: 0.4rem;
}

.kenzen-pricing__breakdown {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  font-size: 0.92rem;
  color: var(--kls-text-muted);
  margin-bottom: 1.5rem;
  position: relative;
}

.kenzen-pricing__breakdown strong {
  color: var(--kls-text);
  font-weight: 700;
}

.kenzen-pricing__breakdown-was {
  color: var(--kls-text-subtle);
  font-size: 0.85rem;
}

.kenzen-pricing__saving {
  display: inline-flex;
  align-items: baseline;
  gap: 0.4rem;
  width: fit-content;
  background: var(--kls-grad-ruby);
  color: #fff;
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.45rem 0.8rem;
  border-radius: var(--kls-radius);
  margin-bottom: 1.25rem;
  box-shadow: 0 4px 12px var(--kls-ruby-glow-soft);
  position: relative;
}

@media (max-width: 640px) {
  .kenzen-pricing__period {
    font-size: 1.1rem;
  }
}

/* Modo oferta */
.kenzen-pricing__price-label--offer {
  color: var(--kls-ruby);
  letter-spacing: 0.14em;
}

.kenzen-pricing__price--offer {
  color: var(--kls-ruby);
}

.kenzen-pricing__currency--offer {
  color: var(--kls-ruby);
}

.kenzen-pricing__original {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 0.75rem;
  flex-wrap: wrap;
}

.kenzen-pricing__price-strike {
  font-family: var(--kls-font-display);
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--kls-text-subtle);
  text-decoration: line-through;
  text-decoration-thickness: 2px;
  letter-spacing: -0.02em;
}

.kenzen-pricing__price-savings {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--kls-text-subtle);
}

.kenzen-pricing__deadline {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.85rem;
  color: var(--kls-text-muted);
  background: rgba(var(--kls-ruby-rgb),0.06);
  border: 1px solid rgba(var(--kls-ruby-rgb),0.15);
  border-radius: var(--kls-radius);
  padding: 0.5rem 0.875rem;
  margin-bottom: 1.5rem;
  position: relative;
}

.kenzen-pricing__deadline strong {
  color: var(--kls-ruby);
  font-weight: 700;
}

.kenzen-pricing__deadline-icon {
  color: var(--kls-ruby);
  flex-shrink: 0;
}

.kenzen-pricing__process {
  margin-bottom: 2.5rem;
}

.kenzen-pricing__process-title {
  font-size: 0.875rem;
  font-weight: 700;
  color: var(--kls-text);
  margin-bottom: 0.875rem;
  position: relative;
}

.kenzen-pricing__steps {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
  margin-bottom: 3rem;
  position: relative;
}



.kenzen-pricing__step {
  display: flex;
  gap: 0.75rem;
  font-size: 0.875rem;
  color: var(--kls-text-muted);
  line-height: 1.65;
}

.kenzen-pricing__step-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 50%;
  background: var(--kls-grad-ruby);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 700;
  flex-shrink: 0;
  margin-top: 1px;
  box-shadow: 0 4px 12px var(--kls-ruby-glow-soft);
}

.kenzen-pricing__cta-buttons {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 1rem;
}

.kenzen-pricing__cta-note {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  margin-top: 0.875rem;
  font-size: 0.78rem;
  color: var(--kls-text-subtle);
  position: relative;
}

.kenzen-pricing__cta-note-icon { color: var(--kls-ruby); }

/* --- Price items (precios múltiples) --- */

.kenzen-price-items {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1rem;
  margin-bottom: 1.5rem;
}

.kenzen-price-item {
  background: #fff;
  border: 1.5px solid rgba(var(--kls-ruby-rgb),0.12);
  border-radius: 12px;
  padding: 1.25rem 1.25rem 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.kenzen-price-item--featured {
  border-color: var(--kls-ruby);
  box-shadow: 0 0 0 3px rgba(var(--kls-ruby-rgb),0.08), 0 4px 16px rgba(var(--kls-ruby-rgb),0.12);
}

/* Sin oferta: fila simple label | precio */
.kenzen-price-item--no-offer {
  grid-column: 1 / -1;
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--kls-border);
  border-radius: 0;
  padding: 0.875rem 0.25rem;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  box-shadow: none;
}
.kenzen-price-item--no-offer:first-child {
  border-top: 1px solid var(--kls-border);
}
.kenzen-price-item--no-offer .kenzen-price-item__label {
  flex: 1;
  font-size: 0.95rem;
  font-weight: 600;
}
.kenzen-price-item--no-offer .kenzen-price-item__amount {
  flex-shrink: 0;
}
.kenzen-price-item--no-offer .kenzen-price-item__price {
  font-size: 1.2rem;
}
.kenzen-price-item--no-offer .kenzen-price-item__note {
  display: none;
}
.kenzen-price-item--no-offer .kenzen-price-item__cta {
  flex-shrink: 0;
  width: auto;
  min-width: 200px;
  margin-top: 0;
  padding-top: 0;
  white-space: nowrap;
}

.kenzen-price-item__label {
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--kls-text-main);
  line-height: 1.3;
  margin: 0;
}

.kenzen-price-item__amount {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
}

.kenzen-price-item__price {
  font-size: 1.75rem;
  font-weight: 800;
  color: var(--kls-ruby);
  line-height: 1;
}

.kenzen-price-item__price--offer {
  font-size: 1.75rem;
}

.kenzen-price-item__strike {
  font-size: 1rem;
  color: var(--kls-text-subtle);
  text-decoration: line-through;
}

.kenzen-price-item__note {
  font-size: 0.78rem;
  color: var(--kls-text-muted);
  margin: 0;
}

.kenzen-price-item__deadline {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  font-size: 0.75rem;
  color: var(--kls-text-muted);
  margin: 0;
}

.kenzen-price-item__deadline-icon { color: var(--kls-ruby); }

.kenzen-price-item__cta {
  margin-top: auto;
  padding-top: 0.75rem;
  font-size: 0.85rem;
}

@media (max-width: 600px) {
  .kenzen-price-items {
    grid-template-columns: 1fr;
  }
}

/* --- Calendario de pagos (pricing) --- */

.kenzen-pricing__payment-calendar {
  background: #fff;
  border: 1.5px solid var(--kls-border);
  border-radius: 12px;
  padding: 1.25rem 1.375rem;
  margin-top: 1.25rem;
}

.kenzen-pricing__payment-title {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--kls-text-main);
  margin: 0 0 0.875rem;
}

.kenzen-pricing__payment-title-icon {
  color: var(--kls-ruby);
  flex-shrink: 0;
}

.kenzen-pricing__payment-intro {
  font-size: 0.85rem;
  color: var(--kls-text-muted);
  line-height: 1.6;
  margin: 0 0 1rem;
}

.kenzen-pricing__payment-items {
  display: flex;
  flex-direction: column;
  gap: 0;
  border-top: 1px solid var(--kls-border);
}

.kenzen-pricing__payment-item {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  padding: 0.625rem 0;
  border-bottom: 1px solid var(--kls-border);
}

.kenzen-pricing__payment-num {
  flex-shrink: 0;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 50%;
  background: var(--kls-ruby);
  color: #fff;
  font-size: 0.7rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 1px;
}

.kenzen-pricing__payment-body {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  flex: 1;
}

.kenzen-pricing__payment-label {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--kls-text-main);
}

.kenzen-pricing__payment-amount {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--kls-ruby);
}

.kenzen-pricing__payment-note {
  font-size: 0.78rem;
  color: var(--kls-text-subtle);
}

.kenzen-pricing__payment-account {
  font-size: 0.78rem;
  font-family: monospace;
  color: var(--kls-text-subtle);
  background: var(--kls-bg-light, #f6f7f9);
  border-radius: 6px;
  padding: 0.5rem 0.75rem;
  margin: 0.875rem 0 0;
  word-break: break-all;
}

/* Sin calendario de pagos la cuenta va suelta detrás del proceso de
   inscripción. Los pasos traen 3rem de separación inferior pensada para el
   botón, así que hay que recuperar ese hueco y volver a abrirlo debajo. */
.kenzen-pricing__payment-account--standalone {
  margin: -1.75rem 0 1.75rem;
}

/* ======================================================
   CONTACT
   ====================================================== */
.kenzen-contact {
  background: transparent;
  position: relative;
  overflow: hidden;
}

.kenzen-contact__header {
  max-width: 800px;
  margin-inline: auto;
  margin-bottom: 3rem;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
}

.kenzen-contact__title {
  font-family: var(--kls-font-display);
  font-size: clamp(2.2rem, 4.8vw, 4rem);
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1.05;
  color: var(--kls-text);
}

.kenzen-contact__lead {
  color: var(--kls-text-muted);
  line-height: 1.75;
  font-size: 1.05rem;
  max-width: 560px;
}

/* Cápsula blanca que envuelve canales + formulario */
.kenzen-contact__box {
  background: #fff;
  border-radius: var(--kls-radius-xl);
  border: 1px solid var(--kls-border);
  box-shadow: var(--kls-shadow-md);
  padding: 2.5rem;
}

@media (max-width: 640px) {
  .kenzen-contact__box { padding: 1.5rem; }
}

.kenzen-contact__layout {
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: var(--kls-gap);
  align-items: start;
}

/* Sin canales (WhatsApp y correo apagados) no hay columna izquierda que
   llenar, así que el formulario ocupa el ancho entero en vez de quedarse
   arrinconado a la derecha. Ver templates/sections/contact.php. */
.kenzen-contact__layout--solo-formulario { grid-template-columns: 1fr; }

@media (max-width: 800px) {
  .kenzen-contact__layout { grid-template-columns: 1fr; }
}

.kenzen-contact__channels {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.kenzen-contact-channel {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1.4rem 1.6rem;
  background: var(--kls-bg-card);
  border: 1px solid var(--kls-border);
  border-radius: var(--kls-radius-lg);
  text-decoration: none;
  transition: border-color 0.3s, background 0.3s, transform 0.3s var(--kls-ease-spring), box-shadow 0.3s;
}

.kenzen-contact-channel:hover {
  transform: translateY(-4px) translateX(3px);
  border-color: var(--kls-border-brand);
  box-shadow: var(--kls-shadow-md);
  background: linear-gradient(135deg, var(--kls-bg-card) 0%, var(--kls-bg-brand) 100%);
}

.kenzen-contact-channel--whatsapp:hover {
  border-color: #25d366;
  background: linear-gradient(135deg, var(--kls-bg-card) 0%, rgba(37,211,102,0.05) 100%);
  box-shadow: 0 8px 24px rgba(37,211,102,0.15);
}

.kenzen-contact-channel__icon {
  color: var(--kls-ruby);
  flex-shrink: 0;
  transition: transform 0.4s var(--kls-ease-spring);
}

.kenzen-contact-channel:hover .kenzen-contact-channel__icon {
  transform: scale(1.2) rotate(-5deg);
}

.kenzen-contact-channel--whatsapp .kenzen-contact-channel__icon {
  color: #25d366;
}

.kenzen-contact-channel__label {
  display: block;
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--kls-text-subtle);
  margin-bottom: 0.2rem;
  font-weight: 600;
}

.kenzen-contact-channel__value {
  display: block;
  font-size: 1rem;
  font-weight: 700;
  color: var(--kls-text);
  letter-spacing: -0.01em;
}

.kenzen-contact__form-title {
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--kls-text);
  margin-bottom: 1.25rem;
  letter-spacing: -0.01em;
}

/* ── Ninja Forms overrides (scoped al wrapper del plugin) ── */
.kenzen-contact__form-wrap .nf-form-cont,
.kenzen-contact__form-wrap .nf-form-layout {
  font-family: var(--kls-font-sans) !important;
}

/* Eliminar padding y margin propios de NF */
.kenzen-contact__form-wrap .nf-form-fields-required,
.kenzen-contact__form-wrap .nf-field-container {
  margin-bottom: 1.25rem !important;
}

.kenzen-contact__form-wrap .nf-form-fields-required {
  font-size: 0.8rem;
  color: var(--kls-text-subtle);
  margin-bottom: 1.5rem !important;
}

/* Labels */
.kenzen-contact__form-wrap .nf-field-label label,
.kenzen-contact__form-wrap label {
  font-family: var(--kls-font-sans) !important;
  font-size: 0.9rem !important;
  font-weight: 700 !important;
  color: var(--kls-text) !important;
  letter-spacing: -0.01em;
  margin-bottom: 0.5rem !important;
  display: block;
}

/* Asterisco required */
.kenzen-contact__form-wrap .ninja-forms-req-symbol {
  color: var(--kls-ruby) !important;
}

/* Inputs y textarea */
.kenzen-contact__form-wrap input[type="text"],
.kenzen-contact__form-wrap input[type="email"],
.kenzen-contact__form-wrap input[type="tel"],
.kenzen-contact__form-wrap input[type="number"],
.kenzen-contact__form-wrap input[type="url"],
.kenzen-contact__form-wrap textarea {
  width: 100% !important;
  background: #f2f4f7 !important;
  border: 1.5px solid transparent !important;
  border-radius: var(--kls-radius-lg) !important;
  padding: 0.9rem 1.1rem !important;
  font-family: var(--kls-font-sans) !important;
  font-size: 1rem !important;
  color: var(--kls-text) !important;
  outline: none !important;
  box-shadow: none !important;
  transition: border-color 0.2s, background 0.2s !important;
  -webkit-appearance: none;
  appearance: none;
}

.kenzen-contact__form-wrap input[type="text"]:focus,
.kenzen-contact__form-wrap input[type="email"]:focus,
.kenzen-contact__form-wrap input[type="tel"]:focus,
.kenzen-contact__form-wrap input[type="number"]:focus,
.kenzen-contact__form-wrap input[type="url"]:focus,
.kenzen-contact__form-wrap textarea:focus {
  background: #fff !important;
  border-color: var(--kls-ruby) !important;
  box-shadow: 0 0 0 3px rgba(var(--kls-ruby-rgb),0.08) !important;
}

.kenzen-contact__form-wrap textarea {
  min-height: 130px !important;
  resize: vertical !important;
}

/* Botón enviar */
.kenzen-contact__form-wrap input[type="button"],
.kenzen-contact__form-wrap button[type="submit"],
.kenzen-contact__form-wrap .nf-element[type="button"],
.kenzen-contact__form-wrap .submit-wrap input {
  width: 100% !important;
  background: var(--kls-ruby) !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--kls-radius) !important;
  padding: 1rem 2rem !important;
  font-family: var(--kls-font-sans) !important;
  font-size: 0.9rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  cursor: pointer !important;
  transition: background 0.2s, transform 0.15s !important;
  margin-top: 0.5rem !important;
  box-shadow: 0 4px 18px rgba(var(--kls-ruby-rgb),0.25) !important;
}

.kenzen-contact__form-wrap input[type="button"]:hover,
.kenzen-contact__form-wrap button[type="submit"]:hover,
.kenzen-contact__form-wrap .submit-wrap input:hover {
  background: var(--kls-ruby-dark) !important;
  transform: translateY(-2px) !important;
  box-shadow: 0 6px 24px rgba(var(--kls-ruby-rgb),0.35) !important;
}

/* Mensajes de error y éxito */
.kenzen-contact__form-wrap .nf-error .nf-field-element input,
.kenzen-contact__form-wrap .nf-error .nf-field-element textarea {
  border-color: var(--kls-ruby) !important;
}

.kenzen-contact__form-wrap .nf-error-msg {
  font-size: 0.8rem !important;
  color: var(--kls-ruby) !important;
  margin-top: 0.3rem !important;
}

.kenzen-contact__form-wrap .nf-response-msg {
  padding: 1rem 1.25rem;
  background: rgba(var(--kls-ruby-rgb),0.06);
  border-left: 3px solid var(--kls-ruby);
  border-radius: 0 var(--kls-radius) var(--kls-radius) 0;
  font-weight: 600;
  color: var(--kls-text);
  margin-top: 1rem;
}

/* ======================================================
   BLOG SECTION
   ====================================================== */
.kenzen-blog-section {
  background: transparent;
}

.kenzen-blog-section__header {
  max-width: 800px;
  margin-inline: auto;
  margin-bottom: 3rem;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
}

.kenzen-blog-section__title {
  font-family: var(--kls-font-display);
  font-size: clamp(2.2rem, 4.8vw, 4rem);
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1.05;
  color: var(--kls-text);
}

.kenzen-blog-section__content {
  /* el shortcode [kls_blog] ya pone su propio grid */
  display: contents;
}

.kenzen-blog-card {
  background: var(--kls-bg-card);
  border: 1px solid var(--kls-border);
  border-radius: var(--kls-radius-lg);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform 0.4s var(--kls-ease-spring), box-shadow 0.4s, border-color 0.3s;
}

.kenzen-blog-card:hover {
  transform: translateY(-8px);
  box-shadow: var(--kls-shadow-lg);
  border-color: var(--kls-border-md);
}

.kenzen-blog-card__thumb {
  display: block;
  aspect-ratio: 16/9;
  overflow: hidden;
  position: relative;
}

.kenzen-blog-card__thumb::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 60%, rgba(0,0,0,0.2));
  opacity: 0;
  transition: opacity 0.4s;
}

.kenzen-blog-card:hover .kenzen-blog-card__thumb::after {
  opacity: 1;
}

.kenzen-blog-card__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.6s var(--kls-ease-out);
}

.kenzen-blog-card:hover .kenzen-blog-card__thumb img {
  transform: scale(1.08);
}

.kenzen-blog-card__body {
  padding: 1.5rem;
  flex: 1;
  display: flex;
  flex-direction: column;
}

.kenzen-blog-card__date {
  font-size: 0.75rem;
  color: var(--kls-text-subtle);
  margin-bottom: 0.625rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-weight: 600;
}

.kenzen-blog-card__title {
  font-family: var(--kls-font-display);
  font-size: 1.2rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.25;
  margin-bottom: 0.625rem;
  flex: 1;
}

.kenzen-blog-card__title a {
  color: var(--kls-text);
  text-decoration: none;
  transition: color 0.25s;
}

.kenzen-blog-card__title a:hover {
  color: var(--kls-ruby);
}

.kenzen-blog-card__excerpt {
  font-size: 0.875rem;
  color: var(--kls-text-muted);
  line-height: 1.7;
}

/* ======================================================
   FOOTER
   ====================================================== */
.kenzen-footer {
  background: var(--kls-bg-dark);
  border-top: 1px solid var(--kls-border-dark);
  padding-block: 4rem 1.75rem;
  position: relative;
  overflow: hidden;
}

.kenzen-footer::before {
  content: '';
  position: absolute;
  bottom: -50%;
  left: 50%;
  transform: translateX(-50%);
  width: 80vw;
  height: 80vw;
  max-width: 1000px;
  max-height: 1000px;
  background: radial-gradient(circle, rgba(var(--kls-ruby-rgb),0.10) 0%, transparent 60%);
  pointer-events: none;
  filter: blur(40px);
}

.kenzen-footer__inner { position: relative; z-index: 1; }

.kenzen-footer__cols {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  gap: var(--kls-gap);
  margin-bottom: 3rem;
}

/* Si solo hay col brand (sin cursos), no deja huecos */
.kenzen-footer__cols:has(.kenzen-footer__col--nav:only-of-type) {
  grid-template-columns: 2fr 1fr;
}

.kenzen-footer__cols:not(:has(.kenzen-footer__col--nav)) {
  grid-template-columns: 1fr;
}

@media (max-width: 768px) {
  .kenzen-footer__cols {
    grid-template-columns: 1fr !important;
    gap: 2rem;
  }
}

/* Logo — blanco y grande */
.kenzen-footer__logo-link {
  text-decoration: none;
  display: inline-block;
  margin-bottom: 1.25rem;
}

.kenzen-footer__logo {
  display: block;
  max-height: 64px;
  max-width: 220px;
  object-fit: contain;
  filter: brightness(0) invert(1);
}

.kenzen-footer__logo-text {
  font-family: var(--kls-font-display);
  font-size: 1.75rem;
  font-weight: 800;
  letter-spacing: -0.03em;
  color: #fff;
  display: block;
}

.kenzen-footer__desc {
  font-size: 0.875rem;
  color: var(--kls-text-inv-subtle);
  line-height: 1.75;
  margin-bottom: 1.25rem;
  max-width: 300px;
}

/* Datos de contacto bajo el logo */
.kenzen-footer__contact-info {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  margin-bottom: 1.25rem;
}

.kenzen-footer__contact-info a {
  font-size: 0.9rem;
  color: var(--kls-text-inv-muted);
  text-decoration: none;
  transition: color 0.2s;
}

.kenzen-footer__contact-info a:hover {
  color: #fff;
}

/* Título de columna */
.kenzen-footer__col-title {
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--kls-text-inv-subtle);
  margin-bottom: 1.25rem;
}

.kenzen-footer__nav {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
  margin-bottom: 1.5rem;
}

.kenzen-footer__nav a,
.kenzen-footer__legal a {
  font-size: 0.9rem;
  color: var(--kls-text-inv-muted);
  text-decoration: none;
  transition: color 0.25s, transform 0.25s;
  display: inline-block;
}

.kenzen-footer__nav a:hover,
.kenzen-footer__legal a:hover {
  color: var(--kls-ruby);
  transform: translateX(3px);
}

/* Política + aviso legal */
.kenzen-footer__legal {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.kenzen-footer__legal a {
  font-size: 0.8rem;
  color: var(--kls-text-inv-subtle);
}

.kenzen-footer__bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 1.75rem;
  border-top: 1px solid var(--kls-border-dark);
  flex-wrap: wrap;
  gap: 1rem;
}

.kenzen-footer__copy {
  font-size: 0.825rem;
  color: var(--kls-text-inv-subtle);
}

.kenzen-footer__social {
  display: flex;
  gap: 0.75rem;
}

.kenzen-footer__social-link {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.4rem;
  height: 2.4rem;
  border-radius: 50%;
  background: rgba(255,255,255,0.04);
  backdrop-filter: blur(8px);
  border: 1px solid var(--kls-border-dark);
  color: var(--kls-text-inv-muted);
  text-decoration: none;
  transition: color 0.25s, border-color 0.25s, background 0.25s, transform 0.3s var(--kls-ease-spring), box-shadow 0.3s;
}

.kenzen-footer__social-link:hover {
  color: #fff;
  border-color: var(--kls-ruby);
  background: rgba(var(--kls-ruby-rgb),0.18);
  transform: translateY(-4px);
  box-shadow: 0 8px 20px rgba(var(--kls-ruby-rgb),0.2);
}

/* ======================================================
   Responsive global
   ====================================================== */
body.kenzen-landing-page {
  overflow-x: hidden;
  max-width: 100vw;
}

@media (max-width: 640px) {
  .kenzen-hero__ctas { flex-direction: column; align-items: flex-start; }
  .kenzen-hero--centered .kenzen-hero__ctas { align-items: center; }

  /* Program — apilar verticalmente y centrar */
  .kenzen-program-item__trigger {
    grid-template-columns: 1fr;
    text-align: center;
    justify-items: center;
    gap: 0.6rem;
    padding: 1.25rem;
  }
  .kenzen-program-item__meta { align-items: center; }
  .kenzen-program-item__badge { align-self: center; }
  .kenzen-program-item__trigger .kenzen-accordion-chevron {
    justify-self: center;
    margin-left: 0;
  }

  /* Benefits — número arriba centrado, texto ocupa ancho completo */
  .kenzen-benefit-item {
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
  }
  .kenzen-benefit-item__body {
    width: 100%;
  }

  /* Overflow — permitir wrapping en botones para que no desborden */
  .kenzen-btn {
    white-space: normal;
    word-break: break-word;
  }
  .kenzen-pricing__cta-buttons .kenzen-btn,
  .kenzen-price-item__cta.kenzen-btn {
    width: 100%;
    box-sizing: border-box;
  }
}

/* ======================================================
   Reveal on scroll (activado desde JS)
   ====================================================== */
.kls-reveal {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.9s var(--kls-ease-out), transform 0.9s var(--kls-ease-out);
  will-change: opacity, transform;
}

.kls-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Social proof — slide lateral en lugar de fade-up */
.kenzen-social-proof__item.kls-reveal {
  transform: translateX(-48px);
}
.kenzen-social-proof__item:nth-child(even).kls-reveal {
  transform: translateX(48px);
}
.kenzen-social-proof__item.kls-reveal.is-visible {
  transform: translateX(0);
}

@media (prefers-reduced-motion: reduce) {
  .kls-reveal { opacity: 1; transform: none; }
  .kenzen-hero__img, .kenzen-hero__yt-facade img { animation: none; }
  .kenzen-badge::before { animation: none; }
}

/* ======================================================
   Sticky bar de contacto
   ====================================================== */
.kls-sticky-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 500;
  background: rgba(var(--kls-dark-rgb), 0.96);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  transform: translateY(100%);
  transition: transform 0.4s var(--kls-ease-out);
  padding: 1rem 1.25rem;
  display: flex;
  justify-content: center;
}

.kls-sticky-bar.is-visible {
  transform: translateY(0);
}

.kls-sticky-bar__cta {
  min-width: 220px;
  justify-content: center;
}

/* eliminar clases de precio/fecha ya no usadas — placeholder para evitar FOUC */
.kls-sticky-bar__inner,
.kls-sticky-bar__info,
.kls-sticky-bar__price,
.kls-sticky-bar__date {
  display: none;
}

.kls-sticky-bar__date {
  font-size: 0.78rem;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.5);
  white-space: nowrap;
}

.kls-sticky-bar__cta {
  flex-shrink: 0;
  font-size: 0.9rem;
  padding: 0.6rem 1.35rem;
}

@media (max-width: 480px) {
  .kls-sticky-bar__inner {
    gap: 0.875rem;
  }
  .kls-sticky-bar__price {
    font-size: 1.1rem;
  }
  .kls-sticky-bar__cta {
    font-size: 0.85rem;
    padding: 0.55rem 1rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .kls-sticky-bar { transition: none; }
}

/* ======================================================
   Tilt — JS controlled
   ====================================================== */
.kls-tilt {
  --kls-rx: 0deg;
  --kls-ry: 0deg;
  transform: perspective(1000px) rotateX(var(--kls-rx)) rotateY(var(--kls-ry));
  transition: transform 0.1s linear, box-shadow 0.3s ease;
  will-change: transform;
}

.kls-tilt:not(:hover) {
  --kls-rx: 0deg;
  --kls-ry: 0deg;
  transition: transform 0.6s var(--kls-ease-out), box-shadow 0.4s ease;
}

/* ======================================================
   Magnetic — JS controlled (opcional para botones primary)
   ====================================================== */
.kls-magnetic {
  --kls-mx: 0px;
  --kls-my: 0px;
  transform: translate(var(--kls-mx), var(--kls-my)) translateY(var(--kls-mt, 0));
  transition: transform 0.2s var(--kls-ease-out);
}

/* ======================================================
   PROGRAM — Acordeón rediseñado
   ====================================================== */

.kenzen-prog-acc {
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
  max-width: 900px;
  margin-inline: auto;
}

/* `:not(:last-child)` desde la 1.2.56. Antes solo el bloque de objetivos usaba
   este envoltorio y siempre llevaba el temario detrás, así que el margen nunca
   sobraba. Ahora el temario también va envuelto y es el último de la sección:
   sin esta condición añadiría 2,5rem de hueco al final de todas las landings. */
.kenzen-prog-acc__subsection:not(:last-child) {
  margin-bottom: 2.5rem;
}

.kenzen-prog-acc__subsection-title {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--kls-text-main);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: 1.25rem;
  padding-bottom: 0.625rem;
  border-bottom: 2px solid var(--kls-ruby);
  max-width: 900px;
  margin-inline: auto;
}

/* Ítem */
.kenzen-prog-acc__item {
  background: #fff;
  border-radius: var(--kls-radius-xl);
  overflow: hidden;
  border: 1px solid var(--kls-border);
  box-shadow: var(--kls-shadow);
  transition: box-shadow 0.3s ease, border-color 0.3s ease;
}

.kenzen-prog-acc__item:has([aria-expanded="true"]) {
  border-color: var(--kls-border-brand);
  box-shadow: var(--kls-shadow-md);
}

/* Trigger */
.kenzen-prog-acc__trigger {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  width: 100%;
  padding: 1.5rem 1.75rem;
  background: #fff;
  border: none;
  cursor: pointer;
  text-align: left;
  transition: background 0.25s;
}

.kenzen-prog-acc__trigger:hover {
  background: var(--kls-bg-alt);
}

.kenzen-prog-acc__trigger[aria-expanded="true"] {
  background: linear-gradient(135deg, rgba(var(--kls-ruby-rgb),0.03), transparent);
}

/* Meta izquierda */
.kenzen-prog-acc__meta {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  flex-shrink: 0;
  min-width: 88px;
}

.kenzen-prog-acc__badge {
  display: inline-block;
  font-size: 0.68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: #fff;
  background: var(--kls-grad-ruby);
  padding: 0.25em 0.7em;
  border-radius: 6px;
  white-space: nowrap;
  box-shadow: 0 2px 8px var(--kls-ruby-glow-soft);
}

.kenzen-prog-acc__duration {
  display: flex;
  align-items: center;
  gap: 0.3em;
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--kls-text-muted);
}

.kenzen-prog-acc__duration svg {
  width: 0.9em;
  height: 0.9em;
  color: var(--kls-ruby);
  flex-shrink: 0;
}

/* Info centro */
.kenzen-prog-acc__info {
  flex: 1;
  min-width: 0;
}

.kenzen-prog-acc__title {
  font-family: var(--kls-font-display);
  font-size: 1.1rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--kls-text);
  margin: 0 0 0.3rem;
  line-height: 1.2;
}

.kenzen-prog-acc__subtitle {
  font-size: 0.875rem;
  color: var(--kls-text-muted);
  margin: 0;
  line-height: 1.4;
}

.kenzen-prog-acc__ponentes {
  font-size: 0.75rem;
  color: var(--kls-text-subtle);
  margin: 2px 0 0;
  font-weight: 500;
}

/* Chevron ruby */
.kenzen-prog-acc__chevron {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 999px;
  background: var(--kls-grad-ruby);
  color: #fff;
  box-shadow: 0 6px 20px rgba(var(--kls-ruby-rgb),0.24);
  flex-shrink: 0;
  transition: box-shadow 0.3s;
}

.kenzen-prog-acc__chevron svg {
  width: 0.9rem;
  height: 0.9rem;
  transition: transform 0.4s var(--kls-ease-spring);
}

.kenzen-prog-acc__trigger[aria-expanded="true"] .kenzen-prog-acc__chevron svg {
  transform: rotate(180deg);
}

.kenzen-prog-acc__trigger[aria-expanded="true"] .kenzen-prog-acc__chevron {
  box-shadow: 0 3px 10px rgba(var(--kls-ruby-rgb),0.15);
}

/* Contenido */
.kenzen-prog-acc__content {
  border-top: 1px solid rgba(226,232,240,0.8);
}

.kenzen-prog-acc__body {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  padding: 1.5rem 1.75rem;
}

/* Cards de contenido */
.kenzen-prog-acc__card {
  padding: 1rem 1.25rem;
  border-radius: var(--kls-radius-lg);
  font-size: 0.95rem;
  line-height: 2;
  color: var(--kls-text-soft);
  border: 1px solid transparent;
}

.kenzen-prog-acc__card--white {
  background: var(--kls-bg-alt);
  border-color: rgba(226,232,240,0.8);
}

.kenzen-prog-acc__card--brand {
  background: rgba(var(--kls-ruby-rgb),0.05);
  border-color: rgba(var(--kls-ruby-rgb),0.14);
}

.kenzen-prog-acc__card--slate {
  background: #fff;
  border-color: var(--kls-border);
  box-shadow: var(--kls-shadow-xs);
}

@media (max-width: 640px) {
  .kenzen-prog-acc__trigger {
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
    padding: 1.25rem;
  }

  .kenzen-prog-acc__meta {
    min-width: 0;
    align-items: center;
  }

  .kenzen-prog-acc__info {
    text-align: center;
  }

  .kenzen-prog-acc__body {
    padding: 1.25rem;
  }
}

/* ======================================================
   TEACHERS — Acordeón centrado (variante premium)
   ====================================================== */

/* Cabecera centrada */
.kenzen-teachers-acc__header {
  text-align: center;
  max-width: 860px;
  margin-inline: auto;
  margin-bottom: 4rem;
}

.kenzen-teachers-acc__lead {
  font-size: 1.05rem;
  color: var(--kls-text-muted);
  line-height: 1.75;
  max-width: 780px;
  margin-inline: auto;
  margin-top: 1rem;
}

/* Contenedor del acordeón */
.kenzen-teachers-acc {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  max-width: 820px;
  margin-inline: auto;
}

/* Ítem */
.kenzen-teachers-acc__item {
  background: #fff;
  border-radius: var(--kls-radius-xl);
  overflow: hidden;
  box-shadow: var(--kls-shadow);
  border: 1px solid var(--kls-border);
  transition: box-shadow 0.3s ease, border-color 0.3s ease;
}

.kenzen-teachers-acc__item:has([aria-expanded="true"]) {
  box-shadow: var(--kls-shadow-md);
  border-color: var(--kls-border-brand);
}

/* Trigger centrado */
.kenzen-teachers-acc__trigger {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  padding: 2.5rem 2rem 2rem;
  background: #fff;
  border: none;
  cursor: pointer;
  text-align: center;
  transition: background 0.25s;
}

.kenzen-teachers-acc__trigger:hover {
  background: var(--kls-bg-alt);
}

.kenzen-teachers-acc__trigger[aria-expanded="true"] {
  background: #fff;
}

/* Avatar / foto */
.kenzen-teachers-acc__avatar {
  width: 140px;
  height: 140px;
  border-radius: 999px;
  overflow: hidden;
  border: 4px solid rgba(255,255,255,0.95);
  box-shadow: 0 10px 30px rgba(15,23,42,0.12);
  background: var(--kls-bg-alt);
  margin-bottom: 1.5rem;
  flex-shrink: 0;
}

.kenzen-teachers-acc__avatar--special {
  background: rgba(var(--kls-ruby-rgb),0.06);
  border-color: rgba(var(--kls-ruby-rgb),0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--kls-ruby);
}

.kenzen-teachers-acc__avatar--special svg {
  width: 2rem;
  height: 2rem;
}

.kenzen-teachers-acc__photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
}

.kenzen-teachers-acc__avatar-placeholder {
  width: 100%;
  height: 100%;
  background: var(--kls-bg-alt);
}

/* Nombre */
.kenzen-teachers-acc__name {
  font-family: var(--kls-font-display);
  font-size: clamp(1.25rem, 2.5vw, 1.6rem);
  font-weight: 800;
  letter-spacing: -0.03em;
  color: var(--kls-text);
  margin: 0 0 0.75rem;
  line-height: 1.1;
}

/* Rol */
.kenzen-teachers-acc__role {
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--kls-text-muted);
  max-width: 560px;
  line-height: 1.5;
  margin: 0 0 1.75rem;
}

/* Chevron ruby */
.kenzen-teachers-acc__chevron {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 999px;
  background: var(--kls-grad-ruby);
  color: #fff;
  box-shadow: 0 8px 24px rgba(var(--kls-ruby-rgb),0.28);
  transition: transform 0.4s var(--kls-ease-spring), box-shadow 0.3s;
  flex-shrink: 0;
}

.kenzen-teachers-acc__chevron svg {
  width: 0.9rem;
  height: 0.9rem;
  transition: transform 0.4s var(--kls-ease-spring);
}

.kenzen-teachers-acc__trigger[aria-expanded="true"] .kenzen-teachers-acc__chevron {
  box-shadow: 0 4px 12px rgba(var(--kls-ruby-rgb),0.2);
}

.kenzen-teachers-acc__trigger[aria-expanded="true"] .kenzen-teachers-acc__chevron svg {
  transform: rotate(180deg);
}

/* Contenido desplegable */
.kenzen-teachers-acc__content {
  border-top: 1px solid rgba(226,232,240,0.8);
}

.kenzen-accordion-content[aria-hidden="false"] .kenzen-teachers-acc__bio-stack,
.kenzen-accordion-content.is-open .kenzen-teachers-acc__bio-stack {
  display: flex;
}

/* Bio stack */
.kenzen-teachers-acc__bio-stack {
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
  padding: 2rem;
}

/* Bio cards */
.kenzen-teachers-acc__bio-card {
  padding: 1.25rem 1.5rem;
  border-radius: var(--kls-radius-lg);
  font-size: 0.975rem;
  line-height: 1.75;
  color: var(--kls-text-soft);
  border: 1px solid transparent;
}

.kenzen-teachers-acc__bio-card p { margin: 0; }
.kenzen-teachers-acc__bio-card ul,
.kenzen-teachers-acc__bio-card ol { margin: 0.5rem 0 0 1.25rem; }
.kenzen-teachers-acc__bio-card li { margin-bottom: 0.35rem; }

.kenzen-teachers-acc__bio-card--white {
  background: #ffffff;
  border-color: rgba(226,232,240,0.8);
  box-shadow: var(--kls-shadow-xs);
}

.kenzen-teachers-acc__bio-card--brand {
  background: rgba(var(--kls-ruby-rgb),0.05);
  border-color: rgba(var(--kls-ruby-rgb),0.15);
  box-shadow: 0 2px 8px rgba(var(--kls-ruby-rgb),0.06);
}

.kenzen-teachers-acc__bio-card--slate {
  background: var(--kls-bg-alt);
  border-color: var(--kls-border);
}

/* Responsive */
@media (max-width: 640px) {
  .kenzen-teachers-acc__trigger {
    padding: 2rem 1.25rem 1.5rem;
  }

  .kenzen-teachers-acc__bio-stack {
    padding: 1.25rem;
  }
}

/* ── Global Header ──────────────────────────────────────────── */
.kls-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 99990;
  height: 68px;
  background: #ffffff;
  border-bottom: 1px solid rgba(var(--kls-dark-rgb), 0.08);
  transition: transform 0.4s var(--kls-ease-out), box-shadow 0.3s;
  will-change: transform;
}

.kls-header.is-scrolled {
  box-shadow: 0 2px 16px rgba(var(--kls-dark-rgb), 0.07);
}

/* Admin bar de WordPress (logged-in) */
body.admin-bar .kls-header {
  top: 32px;
}

body.admin-bar .kenzen-shell {
  padding-top: calc(56px + 32px);
}

@media screen and (max-width: 782px) {
  body.admin-bar .kls-header {
    top: 46px;
  }

  body.admin-bar .kenzen-shell {
    padding-top: calc(50px + 46px);
  }
}

.kls-header.is-hidden {
  transform: translateY(-100%);
}

.kls-header__inner {
  height: 56px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
}

/* Logo */
.kls-header__logo {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  text-decoration: none;
}

.kls-header__logo img {
  height: 46px;
  width: auto;
  display: block;
}

/* Nav desktop */
.kls-header__nav {
  flex: 1;
  display: flex;
  justify-content: flex-end;
}

.kls-header__links {
  display: flex;
  align-items: center;
  gap: clamp(0.875rem, 1.8vw, 1.75rem);
  list-style: none;
  margin: 0;
  padding: 0;
}

.kls-header__links li {
  margin: 0;
  padding: 0;
}

.kls-header__links a {
  font-family: var(--kls-font-sans);
  font-size: 0.73rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--kls-text);
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.2s;
  position: relative;
}

.kls-header__links a::after {
  content: '';
  position: absolute;
  bottom: -3px;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--kls-ruby);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.25s var(--kls-ease-out);
}

.kls-header__links a:hover {
  color: var(--kls-ruby);
}

.kls-header__links a:hover::after {
  transform: scaleX(1);
}

/* Carrito */
.kls-header__cart {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 1.5px solid rgba(var(--kls-dark-rgb), 0.14);
  color: var(--kls-text) !important;
  transition: border-color 0.2s, background 0.2s, color 0.2s !important;
  text-decoration: none !important;
  flex-shrink: 0;
}

.kls-header__cart::after {
  display: none !important;
}

.kls-header__cart:hover {
  border-color: var(--kls-ruby) !important;
  color: var(--kls-ruby) !important;
  background: var(--kls-bg-brand) !important;
}

.kls-header__cart svg {
  width: 15px;
  height: 15px;
}

/* Hamburguesa */
.kls-header__burger {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  width: 38px;
  height: 38px;
  background: transparent;
  border: 1.5px solid rgba(var(--kls-dark-rgb), 0.14);
  border-radius: 8px;
  cursor: pointer;
  padding: 9px;
  transition: border-color 0.2s;
  flex-shrink: 0;
}

.kls-header__burger:hover {
  border-color: var(--kls-ruby);
}

.kls-header__burger span {
  display: block;
  width: 100%;
  height: 1.5px;
  background: var(--kls-text);
  border-radius: 2px;
  transition: transform 0.3s var(--kls-ease-out), opacity 0.2s;
  transform-origin: center;
}

.kls-header__burger[aria-expanded="true"] span:nth-child(1) {
  transform: translateY(6.5px) rotate(45deg);
}

.kls-header__burger[aria-expanded="true"] span:nth-child(2) {
  opacity: 0;
  transform: scaleX(0);
}

.kls-header__burger[aria-expanded="true"] span:nth-child(3) {
  transform: translateY(-6.5px) rotate(-45deg);
}

/* Menú móvil */
.kls-header__mobile-nav {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  background: rgba(255, 255, 255, 0.99);
  border-bottom: 1px solid rgba(var(--kls-dark-rgb), 0.08);
  box-shadow: 0 12px 40px rgba(var(--kls-dark-rgb), 0.08);
  padding: 0.5rem 1.5rem 1.5rem;
}

.kls-header__mobile-nav.is-open {
  display: block;
  animation: kls-nav-in 0.22s var(--kls-ease-out) forwards;
}

@keyframes kls-nav-in {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

.kls-header__mobile-links {
  list-style: none;
  margin: 0;
  padding: 0;
}

.kls-header__mobile-links li {
  border-bottom: 1px solid rgba(var(--kls-dark-rgb), 0.06);
  margin: 0;
  padding: 0;
}

.kls-header__mobile-links li:last-child {
  border-bottom: none;
}

.kls-header__mobile-links a,
.kls-header__mobile-cart {
  display: block;
  padding: 0.95rem 0;
  font-family: var(--kls-font-sans);
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--kls-text);
  text-decoration: none;
  transition: color 0.2s;
}

.kls-header__mobile-links a:hover,
.kls-header__mobile-cart:hover {
  color: var(--kls-ruby);
}

/* Offset shell para header fijo */
.kenzen-landing-page .kenzen-shell {
  padding-top: 56px;
}

@media (max-width: 960px) {
  .kls-header__nav {
    display: none;
  }

  .kls-header__burger {
    display: flex;
  }
}

@media (max-width: 640px) {
  .kls-header,
  .kls-header__inner {
    height: 50px;
  }

  .kenzen-landing-page .kenzen-shell {
    padding-top: 50px;
  }
}

/* ======================================================
   SEPARATOR
   ====================================================== */
.kenzen-separator {
  padding-block: 2.5rem;
  position: relative;
  z-index: 1;
}

.kenzen-separator__inner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.5rem;
  max-width: var(--kls-container);
  margin-inline: auto;
  padding-inline: clamp(1.25rem, 5vw, 3rem);
}

/* Líneas con puntos */
.kenzen-separator__dots {
  display: flex;
  align-items: center;
  gap: 0.6rem;
}

.kenzen-separator__dot {
  display: block;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--kls-ruby);
  opacity: 0.2;
}

.kenzen-separator__dots--left  .kenzen-separator__dot:nth-child(1) { opacity: 0.08; }
.kenzen-separator__dots--left  .kenzen-separator__dot:nth-child(2) { opacity: 0.14; }
.kenzen-separator__dots--left  .kenzen-separator__dot:nth-child(3) { opacity: 0.22; }
.kenzen-separator__dots--left  .kenzen-separator__dot:nth-child(4) { opacity: 0.32; }
.kenzen-separator__dots--left  .kenzen-separator__dot:nth-child(5) { opacity: 0.45; }

.kenzen-separator__dots--right .kenzen-separator__dot:nth-child(1) { opacity: 0.45; }
.kenzen-separator__dots--right .kenzen-separator__dot:nth-child(2) { opacity: 0.32; }
.kenzen-separator__dots--right .kenzen-separator__dot:nth-child(3) { opacity: 0.22; }
.kenzen-separator__dots--right .kenzen-separator__dot:nth-child(4) { opacity: 0.14; }
.kenzen-separator__dots--right .kenzen-separator__dot:nth-child(5) { opacity: 0.08; }

/* Centro */
.kenzen-separator__center {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-shrink: 0;
}

.kenzen-separator__diamond {
  width: 2.5rem;
  height: 2.5rem;
  flex-shrink: 0;
}

.kenzen-separator__line {
  width: clamp(3rem, 8vw, 7rem);
  height: 1px;
  background: linear-gradient(to right, rgba(var(--kls-ruby-rgb),0.5), rgba(var(--kls-ruby-rgb),0.05));
}

.kenzen-separator__line--left {
  order: -1;
  background: linear-gradient(to left, rgba(var(--kls-ruby-rgb),0.5), rgba(var(--kls-ruby-rgb),0.05));
}

/* ======================================================
   CLAIM — Frase destacada del curso
   ====================================================== */
.kenzen-claim-section {
  background: #ffffff;
  padding-block: clamp(3rem, 6vw, 5rem);
}

.kenzen-claim {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.25rem;
  max-width: 640px;
  margin-inline: auto;
  text-align: center;
}

.kenzen-claim__line {
  display: block;
  width: 2.5rem;
  height: 2px;
  background: var(--kls-grad-ruby);
  border-radius: 2px;
  flex-shrink: 0;
}

.kenzen-claim__text {
  font-family: var(--kls-font-display);
  font-size: clamp(1.1rem, 2.2vw, 1.45rem);
  font-weight: 400;
  font-style: italic;
  color: var(--kls-text);
  line-height: 1.6;
  letter-spacing: 0.01em;
  margin: 0;
}

/* Animación de entrada específica del claim */
.kenzen-claim.kls-reveal {
  opacity: 0;
  transform: translateY(24px) scale(0.98);
  transition: opacity 0.8s var(--kls-ease-out), transform 0.8s var(--kls-ease-out);
}

.kenzen-claim.kls-reveal.is-visible {
  opacity: 1;
  transform: translateY(0) scale(1);
}

.kenzen-claim.kls-reveal .kenzen-claim__line {
  transform: scaleX(0);
  transform-origin: center;
  transition: transform 0.6s var(--kls-ease-out) 0.3s;
}

.kenzen-claim.kls-reveal.is-visible .kenzen-claim__line {
  transform: scaleX(1);
}

/* ======================================================
   FAQ
   ====================================================== */
.kenzen-faq {
  background: transparent;
  position: relative;
}

/* Header — mismo patrón centrado que program */
.kenzen-faq__header {
  position: relative;
  max-width: 800px;
  margin-inline: auto;
  margin-bottom: 3rem;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.kenzen-faq__kicker {
  margin-bottom: 1rem;
}

.kenzen-faq__title {
  font-family: var(--kls-font-display);
  font-size: clamp(2.2rem, 4.8vw, 4rem);
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1.05;
  color: var(--kls-text);
}

/* Lista — mismo contenedor que prog-acc */
.kenzen-faq__list {
  max-width: 860px;
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

/* Ítem — card blanca con borde, igual que prog-acc__item */
.kenzen-faq-item {
  background: #fff;
  border-radius: var(--kls-radius-xl);
  border: 1px solid var(--kls-border);
  overflow: hidden;
  transition: border-color 0.25s, box-shadow 0.25s;
}

.kenzen-faq-item.is-open {
  border-color: var(--kls-border-brand);
  box-shadow: var(--kls-shadow-md);
}

/* Trigger */
.kenzen-faq-item__trigger {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: 1.25rem 1.5rem;
  background: transparent;
  border: none;
  cursor: pointer;
  text-align: left;
  font-family: var(--kls-font-sans);
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--kls-text);
  transition: background 0.2s, color 0.2s;
}

.kenzen-faq-item__trigger:hover {
  background: var(--kls-bg-alt);
}

.kenzen-faq-item.is-open .kenzen-faq-item__trigger {
  background: linear-gradient(135deg, rgba(var(--kls-ruby-rgb),0.03), transparent);
  color: var(--kls-ruby);
}

.kenzen-faq-item__question {
  flex: 1;
  min-width: 0;
}

/* Chevron ruby — igual que prog-acc__chevron */
.kenzen-faq-item__chevron {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background: rgba(var(--kls-ruby-rgb),0.07);
  color: var(--kls-ruby);
  transition: transform 0.3s var(--kls-ease-out), box-shadow 0.2s;
}

.kenzen-faq-item__chevron svg {
  width: 0.9rem;
  height: 0.9rem;
  transition: transform 0.3s var(--kls-ease-out);
}

.kenzen-faq-item.is-open .kenzen-faq-item__chevron svg {
  transform: rotate(180deg);
}

.kenzen-faq-item.is-open .kenzen-faq-item__chevron {
  box-shadow: 0 3px 10px rgba(var(--kls-ruby-rgb),0.15);
}

/* Cuerpo con animación grid */
.kenzen-faq-item__body {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.35s var(--kls-ease-out);
  border-top: 0 solid rgba(226,232,240,0.8);
}

.kenzen-faq-item.is-open .kenzen-faq-item__body {
  grid-template-rows: 1fr;
  border-top-width: 1px;
}

.kenzen-faq-item__body-inner {
  overflow: hidden;
}

.kenzen-faq-item__answer {
  padding: 1.25rem 1.5rem 1.5rem;
  color: var(--kls-text-muted);
  font-size: 1rem;
  line-height: 1.85;
}

.kenzen-faq-item__answer ul,
.kenzen-faq-item__answer ol {
  padding-left: 1.5rem;
  margin: 0.5rem 0;
}

.kenzen-faq-item__answer li {
  margin-bottom: 0.35rem;
}

@media (max-width: 640px) {
  .kenzen-faq-item__trigger {
    padding: 1.1rem 1.25rem;
    font-size: 0.97rem;
  }

  .kenzen-faq-item__answer {
    padding: 1rem 1.25rem 1.25rem;
  }
}

/* Los estilos de las tarjetas del shortcode [kls_blog] viven ahora en el
   plugin Kenzen Blog System (assets/css/kenzen-blog-cards.css). */

/* ======================================================
   MODO EMBEBIDO — cabecera y pie del tema activo
   ======================================================

   Se activa con la clase `kls-embedded` en el shell, que pone el renderer
   cuando la landing se pinta dentro de la plantilla del tema (ajuste
   `kls_use_theme_chrome`) y también en el respaldo estático de `post_content`.

   Dos cosas que corregir respecto al modo por defecto:

   1. Ya no hay cabecera fija del plugin, así que sobra el hueco reservado
      para ella (`padding-top` en el shell).
   2. La tipografía, el color y el fondo base van normalmente en el `<body>`
      vía `.kenzen-landing-page`. Aquí NO se aplica esa clase al `<body>` a
      propósito: restilaría también la cabecera y el pie del tema. Se
      trasladan al propio shell.

   Este bloque va al final del fichero para ganar por orden de origen a las
   reglas de `.kenzen-landing-page .kenzen-shell`, que tienen la misma
   especificidad. Si se mueve, deja de funcionar. */

/* `--kls-chrome-offset` la publica `KLS_Assets::print_chrome_offset_script()`
   midiendo la cabecera del tema, justo antes de que se pinte el shell.

   Vale 0 si la cabecera del tema está en el flujo normal (ya empuja ella sola)
   y la altura real si flota por encima — que es el caso de Divi en producción,
   con `et_transparent_nav et_fixed_nav`: ahí Divi anula su propia compensación
   con `#page-container{padding-top:0!important}` y el hero se le metía debajo.

   El 0 del fallback es deliberado: si el script no llega a ejecutarse, se queda
   como antes (sin hueco) en vez de reservar un espacio que quizá no toca. */
.kenzen-shell.kls-embedded {
  font-family: var(--kls-font-sans);
  font-size: 18px;
  line-height: 1.65;
  color: var(--kls-text);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  padding-top: var(--kls-chrome-offset, 0px);
}

/* Especificidad 0,3,1 para ganar a `body.admin-bar .kenzen-shell` (0,2,1),
   que reserva sitio para la cabecera del plugin y no aplica aquí. La barra de
   admin ya va incluida en la medición (se usa `rect.bottom`, no `height`). */
body.admin-bar .kenzen-shell.kls-embedded {
  padding-top: var(--kls-chrome-offset, 0px);
}

/* El grano de papel es `position: fixed` en el modo normal, donde el shell
   ocupa el viewport entero. Embebido, taparía también la cabecera y el pie
   del tema — pasa a `absolute` para quedarse dentro del shell (que ya es
   `position: relative`). */
.kenzen-shell.kls-embedded::before {
  position: absolute;
}

@media (max-width: 640px) {
  .kenzen-shell.kls-embedded,
  body.admin-bar .kenzen-shell.kls-embedded {
    padding-top: var(--kls-chrome-offset, 0px);
  }
}

/* ── Anclas: destino bajo la cabecera ────────────────────────── */
/*
 * Sin esto, saltar a un ancla deja el título DEBAJO de la cabecera fija.
 * No es teórico ni nuevo: la barra sticky enlaza a `#contact` desde la V1 y
 * llevaba aterrizando mal desde entonces.
 *
 * `--kls-chrome-bottom` es dónde TERMINA la cabecera en pantalla, que es lo
 * que hay que descontar. La publica el JS de la nav de secciones, remidiéndola
 * en cada scroll porque Divi encoge su cabecera al bajar.
 *
 * Sin esa nav activa nadie la publica y se cae a `--kls-chrome-offset`. No es
 * lo mismo —esa es el SOLAPE con la zona de contenido, no el borde inferior—
 * pero es la mejor aproximación sin JS adicional, y con una cabecera fija
 * transparente, que es el caso de Divi aquí, los dos valores coinciden.
 */
.kenzen-shell [id] {
  scroll-margin-top: calc(
    var(--kls-chrome-bottom, var(--kls-chrome-offset, 0px))
    + var(--kls-section-nav-h, 0px)
    + 1rem
  );
}

/* ── Navegación por secciones ────────────────────────────────── */
/*
 * `position: fixed` y no `sticky`: `.kenzen-shell` tiene `overflow-x: hidden`,
 * que lo convierte en contenedor de scroll y deja `sticky` sin efecto para
 * todo lo que va dentro. Quitar ese `overflow-x` no es opción — es lo que
 * evita el scroll horizontal de los elementos a sangre.
 *
 * Se muestra al salir el hero del viewport, igual que la barra sticky inferior
 * y con el mismo observador. Si las dos están activas, una arriba y otra abajo.
 *
 * ⚠️ El `top` lo fija el JS en cada scroll, NO este `0`. Se puso aquí
 * `var(--kls-chrome-offset)` en la v1.2.36 y la tira quedó metida debajo de la
 * cabecera de Divi: esa variable es el solape con la zona de contenido, no el
 * borde inferior de la cabecera, y además Divi la encoge al bajar. El `0` es
 * solo el valor con el que nace antes de la primera medición.
 */
.kls-section-nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 480;
  background: rgba(255, 255, 255, 0.94);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(var(--kls-dark-rgb), 0.08);
  /* Sombra suave para despegarla del contenido que pasa por debajo. */
  box-shadow: 0 2px 12px rgba(var(--kls-dark-rgb), 0.06);
  transform: translateY(-100%);
  opacity: 0;
  visibility: hidden;
  transition: transform 0.25s ease, opacity 0.25s ease, visibility 0.25s;
}

.kls-section-nav.is-visible {
  transform: translateY(0);
  opacity: 1;
  visibility: visible;
}

/*
 * El aire va en la tira, no en la lista.
 *
 * Con el relleno en `<ul>`, el `overflow-x: auto` de esa misma lista recorta
 * arriba y abajo al aparecer la barra de desplazamiento, y el respiro se
 * pierde justo donde se quería. En el contenedor no hay ese efecto.
 *
 * Ojo con el reset `.kenzen-shell *`, que pone `padding: 0` con la misma
 * especificidad de una clase: estas reglas ganan por ir después en el fichero.
 * Si se mueven arriba, dejan de aplicarse.
 */
.kls-section-nav {
  padding-block: 1.15rem;
}

.kls-section-nav__list {
  display: flex;
  gap: 0.4rem;
  list-style: none;
  margin: 0;
  padding: 0;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}

@media (max-width: 768px) {
  .kls-section-nav {
    padding-block: 0.8rem;
  }

  /* En móvil solo quedan las tres que deciden una compra: quién lo da, qué se
     ve y cuánto cuesta. Con diez destinos hay que arrastrar la tira de lado, y
     entonces no ahorra ningún scroll. El reparto lo decide `KLS_Section_Nav`,
     que además no recorta si no llega a tres prioritarias. */
  .kls-section-nav__solo-escritorio {
    display: none;
  }

  .kls-section-nav__list {
    gap: 0.3rem;
    justify-content: center;
  }
}

.kls-section-nav__list::-webkit-scrollbar { display: none; }

.kls-section-nav__list a {
  display: block;
  white-space: nowrap;
  padding: 0.4em 0.9em;
  border-radius: 8px;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--kls-text-muted);
  text-decoration: none;
  transition: background 0.2s ease, color 0.2s ease;
}

.kls-section-nav__list a:hover,
.kls-section-nav__list a:focus-visible {
  background: rgba(var(--kls-ruby-rgb), 0.08);
  color: var(--kls-ruby);
}

.kls-section-nav__list a.is-current {
  background: var(--kls-ruby);
  color: #fff;
}

/* En el render estático no hay JS que la muestre: se deja visible y en el
   flujo, que es coherente con el resto de overrides de `.kls-static`. */
.kls-static .kls-section-nav {
  position: static;
  transform: none;
  opacity: 1;
  visibility: visible;
}

/* ── Logo como texto, cuando no hay imagen configurada ───────── */
/*
 * El equivalente del pie (`.kenzen-footer__logo-text`) existía desde antes;
 * este faltaba, así que la reserva salía sin estilar. Se ve en cualquier marca
 * nueva que aún no haya subido su logo, que es lo primero que se mira.
 */
.kls-header__logo-text {
  font-family: var(--kls-font-display);
  font-size: 1.35rem;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--kls-text);
  white-space: nowrap;
}

/* Sin cabecera de ningún tipo: no hay hueco que reservar arriba. */
.kenzen-shell.kls-sin-cabecera {
  padding-top: 0;
}

/* ── La cabecera del tema se retira y le deja el sitio a la tira ─────── */
/*
 * Solo en landings con la navegación por secciones activada, y solo mientras
 * la tira está visible —es decir, cuando ya has pasado el hero—. Al volver
 * arriba, la cabecera vuelve.
 *
 * `!important` porque hay que ganar a la del tema, que trae la suya. Es uno de
 * los overrides documentados que el CLAUDE.md permite.
 *
 * ⚠️ NUNCA se aplica a `#wpadminbar`: el JS la excluye expresamente. Esconder
 * la barra de administración a alguien que está editando sería un despropósito.
 */
.kls-cabecera-retirada {
  transform: translateY(-110%) !important;
  transition: transform 0.3s ease !important;
  pointer-events: none !important;
}

/* ── Cuenta atrás de la oferta (hero) ─────────────────────────
   Las cifras las escribe el JS contra el epoch de `data-kls-countdown`; el
   bloque nace `hidden` y solo se destapa si queda tiempo. Sin JS —el respaldo
   estático de `post_content`— no llega a aparecer, que es lo correcto: mejor
   nada que una cuenta atrás congelada del día en que se guardó.

   Dos grupos, uno a cada extremo: el reloj a la izquierda y el precio con su
   botón a la derecha. La primera versión solo llevaba el reloj y dejaba media
   caja vacía; se prefirió llenarla antes que encogerla, porque el motivo de
   que exista este bloque es que el precio quedaba demasiado abajo.

   Ningún color literal: rompería la multi-marca en silencio. */
.kenzen-countdown {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem 1.5rem;
  margin: 0 0 1.75rem;
  padding: 0.9rem 1.1rem;
  border-radius: 12px;
  background: var(--kls-bg-brand);
  border: 1px solid rgba(var(--kls-ruby-rgb), 0.18);

  /* La caja se ajusta a lo que lleva dentro en vez de ocupar todo el ancho:
     con precios de tres o de cuatro cifras, o con la etiqueta traducida, cada
     landing la necesita de un largo distinto, y a lo ancho del hero sobraba
     hueco a la derecha. `max-width` para que siga cediendo cuando el contenido
     no cabe — entonces envuelve y ahí sí ocupa la línea entera. */
  width: fit-content;
  max-width: 100%;
}

/* Con la caja ajustada al contenido no queda espacio libre que repartir, así
   que `space-between` sería lo mismo que `flex-start`. Se deja explícito para
   que quede claro que los dos grupos van seguidos, no separados a los extremos. */
.kenzen-countdown__reloj,
.kenzen-countdown__oferta {
  justify-content: flex-start;
}

/* En el hero centrado, la caja también. Es el único variante donde el bloque de
   texto no está alineado a la izquierda. */
.kenzen-hero--centered .kenzen-countdown {
  margin-inline: auto;
}

/* ⚠️ Imprescindible. El `display:flex` de arriba tiene más especificidad que
   el `[hidden]{display:none}` del navegador, así que sin esta regla el bloque
   se vería SIEMPRE — incluido el respaldo estático, que es justo el caso que
   el atributo `hidden` viene a resolver. */
.kenzen-countdown[hidden] {
  display: none;
}

.kenzen-countdown__reloj,
.kenzen-countdown__oferta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.9rem;
}

/* Ninguno de los dos crece: si crecieran, volverían a estirar la caja hasta el
   100 % y `width: fit-content` no serviría de nada. */
.kenzen-countdown__reloj,
.kenzen-countdown__oferta { flex: 0 1 auto; }

.kenzen-countdown__label {
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--kls-ruby);
}

.kenzen-countdown__units {
  display: flex;
  gap: 0.55rem;
}

.kenzen-countdown__unit {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 3rem;
  padding: 0.35rem 0.5rem;
  border-radius: 8px;
  background: var(--kls-bg-page);
  box-shadow: 0 2px 8px rgba(var(--kls-dark-rgb), 0.08);
}

.kenzen-countdown__num {
  font-size: 1.35rem;
  font-weight: 800;
  line-height: 1;
  /* Sin esto, el ancho baila en cada tic al cambiar de dígito. */
  font-variant-numeric: tabular-nums;
  color: var(--kls-text);
}

.kenzen-countdown__cap {
  font-size: 0.66rem;
  font-style: normal;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--kls-text-muted);
}

/* ── El precio ─────────────────────────────────────────────── */
.kenzen-countdown__precio {
  display: flex;
  align-items: baseline;
  gap: 0.45rem;
  margin: 0;
  line-height: 1;
}

/* Sin `opacity`: el tachado ya dice que es el precio de antes, y bajarle además
   la opacidad lo dejaba en 2,8:1 sobre el fondo rosa de la caja. A pelo, el
   mismo color da ~8:1. Un precio que no se lee no sirve de comparación. */
.kenzen-countdown__precio-antes {
  font-size: 1rem;
  font-weight: 600;
  text-decoration: line-through;
  color: var(--kls-text-muted);
}

.kenzen-countdown__precio-ahora {
  font-size: 1.75rem;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--kls-ruby);
}

/* ── El plan fraccionado ───────────────────────────────────────
   Este modo no anuncia el total a propósito, así que en el hueco del precio van
   la cuota y el ahorro — los dos mismos datos que pinta la sección de precios. */
.kenzen-countdown__periodo {
  font-size: 1rem;
  font-weight: 700;
  color: var(--kls-text-muted);
}

/* Chapa clara, no un segundo bloque ruby macizo: el botón que va justo al lado
   ya lo es, y dos sólidos del mismo color pegados se pelean por la mirada. El
   ahorro es el dato, pero el clic es el botón. */
.kenzen-countdown__ahorro {
  flex: none;
  padding: 0.35rem 0.6rem;
  border-radius: 8px;
  background: var(--kls-bg-page);
  border: 1px solid rgba(var(--kls-ruby-rgb), 0.28);
  font-size: 0.74rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--kls-ruby);
  white-space: nowrap;
}

.kenzen-countdown__cta {
  flex: none;
  display: inline-block;
  padding: 0.6em 1.3em;
  border-radius: 8px;
  background: var(--kls-ruby);
  color: var(--kls-bg-page);
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  transition: background 0.2s, transform 0.2s, box-shadow 0.2s;
}

.kenzen-countdown__cta:hover,
.kenzen-countdown__cta:focus {
  background: var(--kls-ruby-dark);
  color: var(--kls-bg-page);
  transform: translateY(-1px);
  box-shadow: 0 8px 22px rgba(var(--kls-ruby-rgb), 0.32);
}

/* En móvil los dos grupos se apilan y se centran: a lo ancho de un teléfono,
   `space-between` dejaría el precio pegado al borde y el reloj al otro. */
@media (max-width: 780px) {
  .kenzen-countdown {
    /* Aquí sí a todo el ancho: en un teléfono, una caja ajustada al contenido
       queda descolgada a un lado, y el contenido ya ocupa la línea entera. */
    width: auto;
    justify-content: center;
    gap: 0.9rem 1rem;
  }
  .kenzen-countdown__reloj,
  .kenzen-countdown__oferta {
    flex: 1 1 100%;
    justify-content: center;
  }
  /* La etiqueta encima de las cifras, no al lado. Juntas no caben en un
     teléfono: las cuatro casillas tienen ancho mínimo y no encogen, así que lo
     que se salía por la derecha era la de los segundos. */
  .kenzen-countdown__reloj {
    flex-direction: column;
  }
  /* Y por si el ancho es todavía menor —o la traducción alarga las etiquetas—
     que las casillas puedan pasar a una segunda línea en vez de desbordar. */
  .kenzen-countdown__units {
    flex-wrap: wrap;
    justify-content: center;
  }
}

@media (max-width: 480px) {
  .kenzen-countdown {
    padding: 0.8rem;
  }
  .kenzen-countdown__unit  { min-width: 2.6rem; }
  .kenzen-countdown__num   { font-size: 1.15rem; }
  .kenzen-countdown__precio-ahora { font-size: 1.5rem; }
  /* La cuota baja con su importe: «295€ al mes» tiene que leerse como una sola
     cosa, y con el número más pequeño el «al mes» se le comía el protagonismo. */
  .kenzen-countdown__periodo { font-size: 0.9rem; }
}
