/* ===========================================================================
   responsive.css — Refonte mobile/tablette globale.

   Feuille PARTAGÉE, incluse en dernier sur chaque page (après le CSS
   propre à la page) pour pouvoir corriger sans réécrire l'existant :
   règles volontairement défensives et génériques (empêcher le débordement
   horizontal, agrandir les zones tactiles, transformer les grilles/rangées
   figées en colonnes sur petit écran...), plutôt qu'une réécriture page par
   page. N'importe quelle page peut rester prioritaire sur une règle précise
   en la redéclarant dans son propre <style> (chargé avant celui-ci).
   =========================================================================== */

/* -- Base : jamais de scroll horizontal involontaire -- */
html, body {
    max-width: 100%;
    overflow-x: hidden;
}
img, video, canvas, svg {
    max-width: 100%;
    height: auto;
}
pre, code {
    max-width: 100%;
    overflow-x: auto;
}

/* -- Zones tactiles : au moins 44px, recommandation WCAG/mobile -- */
@media (max-width: 900px) {
    button, .btn, a.btn, .icon-btn, input[type="submit"], input[type="button"] {
        min-height: 44px;
    }
    input, select, textarea {
        font-size: 16px; /* évite le zoom automatique de Safari iOS au focus */
    }
}

/* ===========================================================================
   TABLETTE (≤ 900px)
   =========================================================================== */
@media (max-width: 900px) {
    /* Grilles génériques à 3+ colonnes → 2 colonnes */
    .membre-grid, .premium-grid, .badges-row, .admin-trust-grid,
    .gift-grid, .mini-gift-grid {
        grid-template-columns: repeat(2, 1fr) !important;
    }

    /* app.php et admin.php ont chacun déjà leur propre gestion de sidebar
       responsive (tiroir coulissant / navigation horizontale) — on ne la
       recouvre pas ici pour ne pas entrer en conflit. Cette feuille cible
       surtout les pages qui n'avaient encore aucune règle responsive :
       profil.php, membre.php, staff.php, blog.php, recuperation-compte.php,
       les pages légales, onboarding.php. */
}

/* ===========================================================================
   MOBILE (≤ 640px)
   =========================================================================== */
@media (max-width: 640px) {
    .container {
        width: 94% !important;
    }

    h1 { font-size: 26px !important; line-height: 1.25 !important; }
    h2 { font-size: 21px !important; }
    .title h2 { font-size: 28px !important; }
    .hero h1 { font-size: 28px !important; }

    /* Cartes/panneaux : une seule colonne */
    .membre-grid, .premium-grid, .info-card-grid,
    .gift-grid, .mini-gift-grid, .admin-trust-grid,
    .nouveautes-timeline .nouveautes-item {
        grid-template-columns: 1fr !important;
    }

    /* Tableaux/rangées façon "admin-row" : empiler au lieu d'un grid en ligne */
    .admin-row {
        grid-template-columns: 1fr !important;
        gap: 10px !important;
    }
    .admin-row__actions {
        justify-content: flex-start !important;
    }

    /* Modales pleine largeur avec marge de sécurité */
    .draw-modal__box, .auth-box, .modal-box {
        width: 100% !important;
        max-width: none !important;
        margin: 0 12px;
    }

    /* Boutons d'action qui passaient en ligne : on les empile pour garder
       une largeur tactile confortable */
    .hero-buttons, .draw-modal__tools, .send-form {
        flex-wrap: wrap !important;
    }

    /* Salon général / staff : la colonne de chat prend tout l'écran,
       la liste des membres passe sous forme de tiroir (si l'app la gère déjà
       via une classe .app-sidebar--open, cette règle ne fait que garantir
       qu'elle ne s'affiche pas à côté du chat en permanence). */
    .chat-main, .staff-wrap, .boutique-wrap, .membre-wrap, .recup-wrap {
        width: 96% !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    /* Formulaires : champs pleine largeur, empilés */
    .form-grid {
        grid-template-columns: 1fr !important;
    }

    /* Tavio et autres widgets flottants : plus compacts pour ne pas gêner */
    .tavio-bubble {
        max-width: 78vw !important;
    }
}

/* ===========================================================================
   TRÈS PETIT MOBILE (≤ 380px)
   =========================================================================== */
@media (max-width: 380px) {
    .title h2, .hero h1 { font-size: 24px !important; }
    .btn, .btn-register, .btn-login { padding: 10px 16px !important; font-size: 14px !important; }
}
