/* ═══════════════════════════════════════
   RESPONSIVE — Mobile-first media queries
═══════════════════════════════════════ */

/* ── Tablette ≤ 1024px ── */
@media (max-width: 1024px) {
  /* Utilitaires de grille génériques (layout.css) — sans ça ils restaient
     en 2/3/4 colonnes jusqu'en mobile et débordaient. */
  .grid-3,
  .grid-4 {
    grid-template-columns: repeat(2, 1fr);
  }

  .features-grid,
  .how-grid,
  .pricing-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .stats-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .footer-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .about-founder {
    grid-template-columns: 1fr;
    gap: var(--s-2xl);
  }

  .founder-visual {
    max-width: 420px;
    margin-inline: auto;
  }

  .how-grid::before {
    display: none;
  }

  .contact-layout {
    grid-template-columns: 1fr;
    gap: var(--s-2xl);
  }
}

/* ── Mobile ≤ 768px ── */
@media (max-width: 768px) {
  /* Le CTA nav doit disparaître sur mobile (sinon il déborde le header) ;
     .btn{display:inline-flex} de components.css le réaffichait. */
  .nav-cta { display: none; }

  /* Tous les splits 2 colonnes inline (texte + visuel) s'empilent sur mobile.
     Catch-all : ces grilles n'ont pas de classe, on cible le style inline. */
  [style*="grid-template-columns:1fr 1fr"],
  [style*="grid-template-columns: 1fr 1fr"] {
    grid-template-columns: 1fr !important;
  }

  /* Hero accueil : .hero-inner est un flex (texte + visuel 300px fixe).
     Sans empilement, la colonne texte était écrasée à ~30px (titre vertical). */
  .hero-inner {
    flex-direction: column;
  }
  .hero-visual {
    flex: none;
    width: 100%;
    max-width: 440px;
    margin-top: var(--s-lg);
  }
  .hero-content {
    max-width: 100%;
  }

  .features-grid,
  .how-grid,
  .pricing-grid,
  .stats-grid {
    grid-template-columns: 1fr;
  }

  .footer-grid {
    grid-template-columns: 1fr 1fr;
  }

  .hero-title {
    font-size: clamp(2.5rem, 10vw, 4rem);
  }

  .hero-lead {
    font-size: var(--t-base);
  }

  .hero-proof {
    flex-wrap: wrap;
    gap: var(--s-lg);
  }

  .hero-proof-divider {
    display: none;
  }

  .hero-actions {
    flex-direction: column;
    align-items: flex-start;
  }

  .cta-banner {
    padding: var(--s-2xl) var(--s-xl);
  }

  .cta-banner-actions {
    flex-direction: column;
    align-items: center;
  }

  .values-grid {
    grid-template-columns: 1fr;
  }

  .section-title {
    font-size: var(--t-2xl);
  }

  .page-hero-title {
    font-size: var(--t-3xl);
  }

  .tech-list {
    gap: var(--s-lg);
  }
}

/* ── Grilles génériques : 1 colonne sous 640px ── */
@media (max-width: 640px) {
  .grid-2,
  .grid-3,
  .grid-4 {
    grid-template-columns: 1fr;
  }
}

/* ── Petit mobile ≤ 480px ── */
@media (max-width: 480px) {
  .footer-grid {
    grid-template-columns: 1fr;
  }

  .footer-bottom {
    flex-direction: column;
    text-align: center;
  }

  .pricing-card.featured {
    order: -1;
  }

  .contact-form-card {
    padding: var(--s-xl);
  }

  /* Boutons à libellé long : autoriser le retour à la ligne (sinon nowrap déborde) */
  .btn {
    white-space: normal;
    max-width: 100%;
  }
}

/* ── Préférences accessibilité ── */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }

  .reveal {
    opacity: 1;
    transform: none;
  }
}
