/* Bloco principal da landing com texto e destaque de plano lado a lado. */
.hero {
  display: grid;
  gap: 16px;
  grid-template-columns: 1.4fr 1fr;
  align-items: center;
}

/* Espacamento superior da secao de carrossel. */
.carousel-section {
  margin-top: 16px;
}

/* Contenedor do carrossel: corta excedente e aplica borda arredondada. */
.carousel {
  position: relative;
  width: 100%;
  overflow: hidden;
  border-radius: var(--radius);
}

/* Slides iniciam ocultos e ocupam toda a largura da area de banner. */
.carousel-slide {
  display: none;
  width: 100%;
  height: 360px;
  object-fit: cover;
}

/* Slide ativo exibido pela logica JavaScript. */
.carousel-slide.active {
  display: block;
}

/* Indicadores inferiores do carrossel. */
.carousel-dots {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-top: 12px;
}

/* Ponto base do indicador de slide. */
.carousel-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #94a3b8;
}

/* Ponto ativo com cor primaria. */
.carousel-dot.active {
  background: var(--primary);
}

/* Secao de texto explicativo do aplicativo. */
.about-app {
  margin-top: 16px;
}

/* Secao dos cards de planos placeholder. */
.plans-section {
  margin-top: 16px;
}

/* Espacamento do titulo dentro dos placeholders de plano. */
.plan-placeholder h3 {
  margin-bottom: 8px;
}

/* Espacamento do texto descritivo do plano placeholder. */
.plan-placeholder p {
  margin-bottom: 14px;
}

/* Destaque visual de preco no bloco hero. */
.plan-price {
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--primary);
}

/* Ajustes responsivos da landing e altura dos banners em mobile. */
@media (max-width: 860px) {
  .hero {
    grid-template-columns: 1fr;
  }

  .carousel-slide {
    height: 220px;
  }
}
