/*
 * Estilos de la portada, sección por sección.
 * Los valores vienen de los style inline del prototipo (Home.dc.html).
 */

/* ==========================================================================
   Elementos decorativos compartidos
   ========================================================================== */

.exr-dots {
  display: grid;
  pointer-events: none;
}

.exr-dots span {
  border-radius: 50%;
  background: var(--coral);
}

.exr-dots--3x3 {
  grid-template-columns: repeat(3, 6px);
  gap: 6px;
  margin-bottom: 24px;
}

.exr-dots--3x3 span {
  width: 6px;
  height: 6px;
}

.exr-dots--2x3 {
  grid-template-columns: repeat(3, 7px);
  gap: 7px;
}

.exr-dots--2x3 span {
  width: 7px;
  height: 7px;
  opacity: 0.35;
}

/* Nota: .exr-pill-cta y .exr-carousel viven en components.css porque los usan
   varias páginas (Home y Organizaciones), y components.css se carga siempre. */

/* ==========================================================================
   1. Hero
   ========================================================================== */

.exr-hero {
  overflow: hidden;
}

.exr-hero__rings {
  position: absolute;
  top: -40px;
  left: -40px;
  width: 180px;
  height: 180px;
  pointer-events: none;
}

.exr-hero__inner {
  /* Única sección con padding vertical de 112px en vez de 96px */
  padding-block: clamp(40px, 9vw, 112px);
  display: flex;
  align-items: center;
  gap: clamp(16px, 2.5vw, 32px);
  flex-wrap: wrap;
  position: relative;
}

.exr-hero__copy {
  flex: 1 1 400px;
  min-width: 0;
}

.exr-hero__title {
  max-width: 600px;
}

.exr-hero__lead {
  max-width: var(--container-hero-copy);
  margin: 0 0 36px;
}

.exr-hero__actions {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}

.exr-hero__media {
  flex: 1 1 560px;
  min-width: min(320px, 100%);
  display: flex;
  justify-content: center;
}

/*
 * position:relative + overflow:hidden crean un contexto de recorte alrededor
 * del vídeo. Sin él, el vídeo se compone en su propia capa y, como acaba con
 * alturas fraccionarias (888,888px aquí), el compositor de Chrome deja una
 * costura gris de un píxel en el borde, que aparece y desaparece al repintar
 * (por ejemplo al mover el ratón por encima). Es el mismo recorte que ya tenía
 * .exr-retos__video, el único de los tres vídeos que no mostraba el problema.
 */
.exr-hero__media-inner {
  width: 100%;
  max-width: 500px;
  position: relative;
  overflow: hidden;
}

.exr-hero__media video {
  width: 100%;
  height: auto;
  object-fit: contain;
  display: block;
}

/* ==========================================================================
   2. Teaser de vídeo
   ========================================================================== */

.exr-video__title {
  max-width: 640px;
}

.exr-video__lead {
  max-width: 560px;
  margin: 0 0 40px;
}

.exr-video__poster {
  position: relative;
  display: block;
  width: 100%;
  max-width: 820px;
  padding: 0;
  border: none;
  background: none;
  border-radius: var(--radius-hero);
  overflow: hidden;
  box-shadow: var(--shadow-feature);
  cursor: pointer;
}

.exr-video__poster img {
  width: 100%;
  display: block;
  object-fit: cover;
}

.exr-video__play {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 84px;
  height: 84px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.92);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--shadow-feature);
  transition: transform 200ms ease;
}

.exr-video__poster:hover .exr-video__play {
  transform: translate(-50%, -50%) scale(1.05);
}

/* Mismo ancho que el póster, para que el pie quede atado a él. */
.exr-video__note {
  max-width: 820px;
}

/* ==========================================================================
   3. Mecanismo de guiado
   ========================================================================== */

.exr-guia {
  overflow: hidden;
}

.exr-guia__rings {
  position: absolute;
  bottom: -60px;
  right: -60px;
  width: 220px;
  height: 220px;
  pointer-events: none;
  opacity: 0.7;
}

.exr-guia__inner {
  position: relative;
}

.exr-guia__title {
  max-width: 720px;
}

.exr-guia__lead {
  max-width: 620px;
  margin: 0 0 24px;
}

.exr-guia .exr-pill-cta {
  margin: 0 0 40px;
}

.exr-guia__carousel {
  position: relative;
  max-width: 860px;
}

.exr-guia__card {
  display: flex;
  flex-wrap: wrap;
  gap: clamp(24px, 3vw, 40px);
  align-items: center;
}

.exr-guia__card-main,
.exr-guia__card-desc {
  flex: 1 1 240px;
  min-width: 220px;
}

.exr-guia__card-head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 20px;
}

.exr-guia__card-title {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: var(--fs-card-lg);
  color: var(--text-primary);
}

.exr-guia__card-media {
  border-radius: var(--radius-card);
  overflow: hidden;
  border: 1px solid var(--border-neutral);
  background: var(--bg-page);
  aspect-ratio: 4 / 3;
  display: flex;
  align-items: center;
  justify-content: center;
}

.exr-guia__card-media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.exr-guia__card-desc p {
  color: var(--text-secondary);
  font-size: var(--fs-body-lg);
  line-height: var(--lh-body);
}

/* ==========================================================================
   4. Entrenamiento personalizado
   ========================================================================== */

.exr-personalizacion {
  overflow: hidden;
}

.exr-personalizacion__dots {
  position: absolute;
  top: 32px;
  left: -20px;
}

.exr-personalizacion__inner {
  position: relative;
}

.exr-personalizacion__head {
  text-align: center;
  max-width: 640px;
  margin: 0 auto 48px;
}

.exr-personalizacion__eyebrow {
  margin-bottom: 12px;
}

.exr-personalizacion__lead {
  margin: 0 0 24px;
}

.exr-personalizacion__panel-wrap {
  position: relative;
  max-width: 640px;
  margin: 0 auto;
}

.exr-personalizacion__panel {
  background: var(--surface-white);
  border: 1px solid var(--coral-border-soft);
  border-radius: var(--radius-hero);
  box-shadow: var(--shadow-feature);
  padding: clamp(28px, 3.5vw, 44px);
  position: relative;
  z-index: 1;
}

.exr-personalizacion__card {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 16px;
}

.exr-personalizacion__card-title {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: var(--fs-card-lg);
  color: var(--text-primary);
}

.exr-personalizacion__card-media {
  width: 100%;
  max-width: 300px;
}

.exr-personalizacion__card-media img {
  width: 100%;
  display: block;
  object-fit: contain;
}

.exr-personalizacion__card-desc {
  color: var(--text-secondary);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  max-width: 260px;
}

.exr-personalizacion__footnote {
  margin-top: clamp(28px, 3.5vw, 40px);
  padding-top: clamp(24px, 3vw, 32px);
  border-top: 1px solid var(--border-neutral);
  text-align: center;
}

.exr-personalizacion__footnote p {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--fs-body-lg);
  color: var(--text-primary);
}

/* ==========================================================================
   5. Panel de progreso
   ========================================================================== */

.exr-progreso__inner {
  display: flex;
  gap: clamp(32px, 5vw, 72px);
  flex-wrap: wrap;
  align-items: center;
}

.exr-progreso__col--left {
  flex: 1 1 420px;
  min-width: min(280px, 100%);
}

.exr-progreso__col--right {
  flex: 1 1 380px;
  min-width: min(300px, 100%);
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.exr-progreso__eyebrow {
  /* Ojo: aquí el diseño usa 0.04em, no el 0.08em del resto de eyebrows */
  letter-spacing: 0.04em;
  margin-bottom: 16px;
}

.exr-progreso__title {
  max-width: 520px;
}

.exr-progreso__lead {
  max-width: 520px;
  margin: 0 0 32px;
}

.exr-progreso__note {
  color: var(--text-muted);
  font-size: var(--fs-small);
  margin: 0 0 32px;
}

.exr-progreso__card-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 20px;
}

.exr-progreso__card-head img {
  width: 36px;
  height: 36px;
  flex: none;
}

.exr-progreso__card-title {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: var(--fs-card);
  color: var(--navy);
}

/* --- Tarjeta: esta semana --- */

.exr-progreso__stats {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 14px;
  flex-wrap: wrap;
  gap: 8px;
}

.exr-progreso__stat {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: var(--fs-stat-lg);
  color: var(--navy);
}

.exr-progreso__stat span {
  color: var(--text-muted);
  font-size: var(--fs-stat-sm);
  font-weight: 600;
}

.exr-progreso__bar {
  height: 8px;
  border-radius: var(--radius-pill);
  background: var(--bg-blush);
  overflow: hidden;
  margin-bottom: 24px;
}

.exr-progreso__bar-fill {
  height: 100%;
  border-radius: var(--radius-pill);
  background: var(--coral);
}

.exr-progreso__week-row {
  display: grid;
  grid-template-columns: clamp(16px, 6vw, 36px) repeat(7, minmax(0, 1fr));
  align-items: center;
  gap: clamp(1px, 1vw, 10px);
  margin-bottom: 10px;
}

.exr-progreso__week-row--labels {
  margin-bottom: 12px;
}

.exr-progreso__week-row:last-of-type {
  margin-bottom: 20px;
}

.exr-progreso__week-row img {
  width: 100%;
  max-width: 38px;
  height: auto;
  display: block;
  margin: 0 auto;
}

.exr-progreso__day {
  text-align: center;
  font-size: var(--fs-micro);
  color: var(--text-muted);
  font-weight: 600;
}

.exr-progreso__today {
  display: inline-block;
  padding: 2px clamp(1px, 0.6vw, 10px);
  border-radius: var(--radius-pill);
  background: var(--coral);
  color: #fff;
  font-size: var(--fs-micro);
  font-weight: 700;
  white-space: nowrap;
}

.exr-progreso__value {
  text-align: center;
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--navy);
}

.exr-progreso__value.is-empty {
  color: var(--text-muted);
}

.exr-progreso__footnote {
  color: var(--text-muted);
  font-size: var(--fs-caption);
}

/* --- Tarjeta: calidad del movimiento --- */

.exr-progreso__quality {
  display: flex;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
}

.exr-progreso__quality-main {
  flex: 1 1 200px;
  min-width: 0;
}

.exr-progreso__quality-main .exr-progreso__card-head {
  margin-bottom: 18px;
}

.exr-progreso__big {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: var(--fs-stat-xl);
  color: var(--navy);
  line-height: 1;
}

.exr-progreso__big-note {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--fs-body-lg);
  color: var(--navy);
  margin-bottom: 14px;
}

.exr-progreso__quality-legend {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: var(--fs-small);
  font-weight: 700;
  margin-bottom: 16px;
}

.exr-progreso__quality-legend .is-good {
  color: var(--success);
}

.exr-progreso__quality-legend .is-sep {
  color: var(--text-muted);
  font-weight: 400;
}

.exr-progreso__quality-legend .is-assisted {
  color: var(--coral);
}

.exr-progreso__quality-bar {
  height: 10px;
  border-radius: var(--radius-pill);
  background: var(--coral);
  overflow: hidden;
  width: 100%;
}

.exr-progreso__quality-fill {
  height: 100%;
  border-radius: var(--radius-pill);
  background: var(--success);
}

.exr-progreso__avatar {
  width: clamp(96px, 26vw, 220px);
  max-width: 100%;
  height: auto;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  object-fit: cover;
  flex: none;
}

/* --- Tarjeta: actividad del plan (21 días) --- */

.exr-progreso__plan {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: clamp(6px, 2vw, 18px) clamp(3px, 1vw, 6px);
  margin-bottom: 22px;
}

.exr-progreso__plan-day {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
}

.exr-progreso__plan-num {
  font-size: var(--fs-micro);
  font-weight: 700;
  color: var(--coral);
}

.exr-progreso__plan-num.is-upcoming {
  color: var(--text-muted);
  font-weight: 600;
}

.exr-progreso__plan-circle {
  width: 100%;
  max-width: 56px;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.exr-progreso__plan-circle.is-done,
.exr-progreso__plan-circle.is-current {
  background: var(--coral);
}

/* El día en curso lleva un anillo blanco + coral alrededor */
.exr-progreso__plan-circle.is-current {
  box-shadow: 0 0 0 3px #fff, 0 0 0 5px var(--coral);
}

.exr-progreso__plan-circle.is-upcoming {
  background: var(--border-neutral);
}

.exr-progreso__plan-circle img {
  width: 60%;
  height: 60%;
  object-fit: contain;
}

.exr-progreso__plan-circle.is-upcoming img {
  filter: grayscale(1);
  opacity: 0.55;
}

/* --- Leyendas --- */

.exr-progreso__legend {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
  gap: 10px 16px;
  margin-bottom: 14px;
}

.exr-progreso__legend:last-child {
  margin-bottom: 0;
}

.exr-progreso__legend-item {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.exr-progreso__legend-item img {
  width: 28px;
  height: 28px;
  flex: none;
}

.exr-progreso__legend-item span {
  font-size: var(--fs-caption);
  color: var(--text-secondary);
}

.exr-progreso__legend-item img + span {
  font-weight: 600;
}

.exr-progreso__legend-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  flex: none;
}

.exr-progreso__legend-dot.is-done {
  background: var(--coral);
}

.exr-progreso__legend-dot.is-pending {
  border: 2px solid var(--coral);
}

.exr-progreso__legend-dot.is-upcoming {
  background: var(--border-neutral);
}

/* ==========================================================================
   6. Minijuegos
   ========================================================================== */

.exr-minijuegos {
  overflow: hidden;
}

.exr-minijuegos__plant {
  position: absolute;
  height: auto;
  pointer-events: none;
  z-index: 0;
}

.exr-minijuegos__plant--1 {
  top: -90px;
  left: -130px;
  width: 500px;
  opacity: 0.22;
  transform: rotate(-8deg);
}

.exr-minijuegos__plant--2 {
  bottom: -110px;
  right: -90px;
  width: 425px;
  opacity: 0.2;
  transform: rotate(12deg) scaleX(-1);
}

.exr-minijuegos__inner {
  position: relative;
  z-index: 1;
  display: flex;
  gap: clamp(32px, 5vw, 64px);
  flex-wrap: wrap;
  align-items: center;
}

.exr-minijuegos__copy {
  flex: 1 1 420px;
  min-width: min(300px, 100%);
}

.exr-minijuegos__title {
  max-width: 520px;
}

.exr-minijuegos__lead {
  max-width: 480px;
  margin: 0 0 24px;
}

.exr-minijuegos .exr-pill-cta {
  margin: 0 0 32px;
}

.exr-minijuegos__features {
  display: flex;
  gap: 20px;
  flex-wrap: wrap;
}

.exr-minijuegos__feature {
  flex: 1 1 140px;
  min-width: 130px;
}

.exr-minijuegos__feature-icon {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--bg-page);
  border: 1px solid var(--coral-border-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 14px;
  color: var(--coral);
}

.exr-minijuegos__feature h3 {
  font-size: var(--fs-card-sm);
  font-weight: 700;
  margin-bottom: 4px;
}

.exr-minijuegos__feature p {
  color: var(--text-secondary);
  font-size: var(--fs-caption);
  line-height: 1.4;
}

.exr-minijuegos__callout-wrap {
  margin-top: 24px;
}

.exr-minijuegos__callout {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 24px;
  border-radius: var(--radius-pill);
  background: var(--bg-page);
  border: 1px solid var(--coral-border-soft);
  color: var(--coral);
}

.exr-minijuegos__callout span {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: var(--fs-body);
  color: var(--navy);
}

.exr-minijuegos__media {
  flex: 1 1 480px;
  min-width: min(320px, 100%);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
}

/* Mismo recorte que en el hero (ver nota en .exr-hero__media-inner).
   El radio pasa del vídeo al contenedor, que es quien ahora recorta. */
.exr-minijuegos__video {
  width: 100%;
  max-width: 480px;
  position: relative;
  overflow: hidden;
  border-radius: var(--radius-feature);
}

.exr-minijuegos__video video {
  width: 100%;
  display: block;
}

.exr-minijuegos__caption {
  max-width: 480px;
  text-align: center;
  font-size: var(--fs-body);
  color: var(--text-secondary);
}

.exr-minijuegos__caption-accent {
  color: var(--coral);
  font-weight: 600;
}

/* ==========================================================================
   7. Retos de temporada
   ========================================================================== */

.exr-retos {
  overflow: hidden;
}

.exr-retos__dots {
  position: absolute;
  top: 24px;
  right: -30px;
  grid-template-columns: repeat(3, 7px);
  gap: 7px;
  margin-bottom: 0;
}

.exr-retos__dots span {
  width: 7px;
  height: 7px;
  opacity: 0.5;
}

.exr-retos__inner {
  position: relative;
}

.exr-retos__title {
  margin-bottom: 12px;
}

.exr-retos__lead {
  max-width: 640px;
  margin: 0 0 28px;
}

.exr-retos__pills {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 40px;
}

.exr-retos__pill {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 12px 20px;
  border-radius: var(--radius-pill);
  background: var(--bg-blush);
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--fs-small);
  color: var(--navy);
}

.exr-retos__pill svg {
  color: var(--coral);
  flex: none;
}

.exr-retos__split {
  display: flex;
  gap: 28px;
  flex-wrap: wrap;
  align-items: flex-start;
}

/* El tamaño de columna lo lleva el envoltorio, que agrupa el vídeo y su pie;
   el marco —borde, radio y overflow— se queda en .exr-retos__video, que es
   lo que encuadra al vídeo y solo a él. */
.exr-retos__media {
  flex: 1.7 1 520px;
  min-width: min(300px, 100%);
}

.exr-retos__video {
  position: relative;
  border-radius: var(--radius-feature);
  overflow: hidden;
  border: 1px solid var(--coral-border-soft);
  box-shadow: var(--shadow-feature);
}

.exr-retos__video video {
  width: 100%;
  display: block;
  object-fit: cover;
  aspect-ratio: 16 / 9;
  border-radius: var(--radius-feature);
}

.exr-retos__aside {
  flex: 1 1 360px;
  min-width: min(280px, 100%);
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.exr-retos__card-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 6px;
  color: var(--coral);
}

.exr-retos__card-head h3 {
  font-size: var(--fs-card);
  font-weight: 700;
}

.exr-retos__card-desc {
  color: var(--text-secondary);
  font-size: var(--fs-body);
  margin: 0 0 18px;
}

.exr-retos__card-body {
  display: flex;
  align-items: center;
  gap: 20px;
  flex-wrap: wrap;
}

.exr-retos__badge-img {
  width: 230px;
  max-width: 100%;
  flex: none;
  display: block;
}

.exr-retos__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
  flex: 1 1 160px;
  min-width: 140px;
}

.exr-retos__list li {
  color: var(--text-secondary);
  font-size: var(--fs-caption);
}

.exr-retos__list strong {
  color: var(--navy);
  font-family: var(--font-display);
}

/* ==========================================================================
   8. Recompensas mensuales
   ========================================================================== */

.exr-recompensas {
  overflow: hidden;
}

.exr-recompensas__rings {
  position: absolute;
  bottom: -50px;
  left: -50px;
  width: 200px;
  height: 200px;
  pointer-events: none;
}

.exr-recompensas__inner {
  position: relative;
  display: flex;
  gap: clamp(32px, 5vw, 64px);
  flex-wrap: wrap;
  align-items: center;
}

.exr-recompensas__copy {
  flex: 1 1 420px;
  min-width: min(280px, 100%);
}

.exr-recompensas__lead {
  font-size: var(--fs-body-xl);
  color: var(--text-secondary);
  max-width: 600px;
  margin: 0 0 44px;
}

.exr-recompensas__flow {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--fs-body-lg);
  color: var(--navy);
  margin-bottom: 18px;
}

.exr-recompensas__flow-arrow {
  color: var(--coral);
}

.exr-recompensas__note {
  color: var(--text-muted);
  font-size: var(--fs-body);
}

.exr-recompensas__media {
  flex: 1.15 1 460px;
  min-width: min(300px, 100%);
  display: flex;
  justify-content: center;
}

.exr-recompensas__stage {
  position: relative;
  width: 100%;
  max-width: 520px;
  aspect-ratio: 1 / 1;
}

.exr-recompensas__glow {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 78%;
  height: 78%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(235, 81, 96, 0.14), rgba(235, 81, 96, 0) 72%);
}

.exr-recompensas__avatar {
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translateX(-50%);
  height: 104%;
  width: auto;
  object-fit: contain;
  z-index: 2;
}

/* --- Insignias flotantes --- */

.exr-reward-badge {
  position: absolute;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  z-index: 3;
}

/* Amplía el área de pulsación más allá de la imagen */
.exr-reward-badge::before {
  content: '';
  position: absolute;
  inset: -14px;
}

.exr-reward-badge__inner {
  position: relative;
  display: block;
}

.exr-reward-badge img {
  width: 100%;
  display: block;
  filter: drop-shadow(0 6px 14px rgba(7, 27, 58, 0.2));
  transition: filter 200ms ease;
}

.exr-reward-badge:hover img {
  filter: drop-shadow(0 8px 18px rgba(7, 27, 58, 0.32));
}

.exr-reward-badge__play {
  position: absolute;
  right: -6%;
  bottom: -6%;
  width: 36%;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  background: var(--coral);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 10px rgba(7, 27, 58, 0.3);
  border: 2px solid var(--surface-white);
}

/* Posición y ritmo de flotación de cada insignia (desfasados a propósito) */
.exr-reward-badge.is-entorno {
  left: 2%;
  top: 8%;
  width: 26%;
  animation: floatBadge 5s ease-in-out infinite;
}

.exr-reward-badge.is-regalo {
  right: 0;
  top: 2%;
  width: 22%;
  animation: floatBadge 5.6s ease-in-out infinite 0.6s;
  cursor: default;
}

.exr-reward-badge.is-ropa {
  left: 0;
  bottom: 18%;
  width: 24%;
  animation: floatBadge 6.2s ease-in-out infinite 1.2s;
}

.exr-reward-badge.is-musica {
  right: -2%;
  bottom: 24%;
  width: 26%;
  animation: floatBadge 5.3s ease-in-out infinite 0.3s;
}

/* ==========================================================================
   9. Tarjetas de público
   ========================================================================== */

.exr-publicos__title {
  margin-bottom: 48px;
  max-width: 640px;
}

.exr-publicos__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 24px;
}

.exr-publicos__card-title {
  font-size: var(--fs-card);
  font-weight: 700;
  margin-bottom: 10px;
}

.exr-publicos__card-desc {
  color: var(--text-secondary);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
}

/* ==========================================================================
   10. FAQ
   ========================================================================== */

.exr-faq__title {
  margin-bottom: 40px;
  max-width: 640px;
}

/* ==========================================================================
   11. Descarga
   ========================================================================== */

.exr-descarga__inner {
  text-align: center;
}

.exr-descarga__lead {
  max-width: 520px;
  margin: 0 auto 36px;
}

.exr-descarga__actions {
  display: flex;
  gap: 16px;
  justify-content: center;
  flex-wrap: wrap;
}
