/* ==========================================================================
   Méga menu — sous-navigation Solutions / Produits / Documentation
   --------------------------------------------------------------------------
   Ce fichier est volontairement séparé du thème compilé
   (/storage/style/assests/dist/css/style.css), qui n'est pas versionné et dont
   les sources n'existent plus. Tout est préfixé .mega pour éviter les conflits.

   Desktop : panneau pleine largeur au survol / focus clavier.
   Mobile  : dépliage au tap, cartes en défilement horizontal avec accroche.
   ========================================================================== */

:root {
    --mega-accent: #e61946;
    --mega-text: #2d455d;
    --mega-bg: #fff;
    --mega-border: #e6e9ee;
}

/* Le <li> reste en position statique : le panneau s'ancre alors sur
   nav.navigation (en position fixed, pleine largeur), ce qui lui donne
   naturellement toute la largeur de la fenêtre et le colle sous la barre. */
#menu-main-menu .menu-item.mega {
    position: static;
}

/* Le thème souligne tous les liens du menu via
   « nav.navigation .main-menu a:not(.btn)::after » avec left:0 / right:0.
   Dans le panneau, les liens sont larges : ce trait courrait sur toute leur
   largeur. On le neutralise ici uniquement. */
nav.navigation .main-menu .mega__panel a:not(.btn)::after {
    content: none;
}

/* Conteneur lien + flèche. En display:contents sur desktop, il est totalement
   transparent pour la mise en page du thème. */
.mega__head {
    display: contents;
}

/* Bouton de dépliage : masqué sur desktop, le survol suffit. */
.mega__toggle {
    display: none;
    background: none;
    border: 0;
    padding: 0;
}

/* --------------------------------------------------------------------------
   Panneau
   -------------------------------------------------------------------------- */
/* Ancré sur son <li> mais étendu à toute la largeur de la fenêtre : le panneau
   suit son entrée de menu, ce qui garde le survol continu. */
/* .main-menu porte un position:relative du thème et ne fait que 620px : un
   panneau en absolute y serait borné. On l'ancre donc sur la fenêtre. La valeur
   de --mega-top est recalculée par le script depuis la hauteur réelle de la
   barre, qui varie au défilement (sticky.min.js). */
.mega__panel {
    display: none;
    position: fixed;
    top: var(--mega-top, 66px);
    left: 0;
    right: 0;
    z-index: 9999;
    background: var(--mega-bg);
    border-top: 1px solid var(--mega-border);
    box-shadow: 0 18px 32px rgba(0, 0, 0, .10);
}

/* Trois déclencheurs : le survol (CSS seul, fonctionne même sans JavaScript),
   le focus clavier, et l'état .is-open posé par le script — c'est ce dernier qui
   maintient le panneau ouvert pendant le délai de grâce. */
#menu-main-menu .menu-item.mega:hover > .mega__panel,
#menu-main-menu .menu-item.mega:focus-within > .mega__panel,
#menu-main-menu .menu-item.mega.is-open > .mega__panel {
    display: block;
}

.mega__inner {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 24px;
    max-width: 1280px;
    margin: 0 auto;
    padding: 28px 24px 32px;
}

/* Solutions : 3 cartes, on ne les étire pas sur 6 colonnes. */
.mega__inner--3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    max-width: 720px;
}

/* Documentation : liens simples, sans visuel. En flex plutôt qu'en grille — les
   libellés ont des longueurs très inégales (« Declaration of Performance » face à
   « Brochure ») et une colonne de largeur fixe les faisait se chevaucher. */
.mega__inner--text {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 12px 44px;
}

.mega__inner--text .mega__card {
    flex: 0 1 auto;
}

/* --------------------------------------------------------------------------
   Cartes
   -------------------------------------------------------------------------- */
.mega__card {
    display: block;
    text-decoration: none;
    color: var(--mega-text);
    /* Sans min-width:0, un élément de grille refuse de descendre sous la largeur
       de son contenu : le libellé débordait sur la colonne voisine. */
    min-width: 0;
}

.mega__media {
    display: block;
    overflow: hidden;
    border-radius: 6px;
    background: #f4f6f8;
    aspect-ratio: 4 / 3;
}

.mega__media img {
    width: 100%;
    height: 100%;
    /* Les visuels n'ont pas tous le même rapport (Hybrid est carré) : on recadre. */
    object-fit: cover;
    display: block;
    transition: transform .35s ease;
}

.mega__card:hover .mega__media img {
    transform: scale(1.05);
}

.mega__label {
    display: block;
    margin-top: 10px;
    font-weight: 700;
    font-size: 15px;
    line-height: 1.3;
    /* Le thème impose white-space: nowrap aux liens du menu : hérité ici, il
       empêchait tout retour à la ligne et faisait déborder les libellés longs. */
    white-space: normal;
    overflow-wrap: break-word;
}

.mega__card:hover .mega__label,
.mega__card:focus-visible .mega__label {
    color: var(--mega-accent);
}

/* Cartes sans visuel : liens simples, sans encadré ni fond. */
.mega__card--text {
    padding: 6px 0;
}

.mega__card--text .mega__label {
    margin-top: 0;
    font-weight: 600;
}

/* --------------------------------------------------------------------------
   Mobile — dépliage au tap, cartes en défilement horizontal
   Le point de rupture 1024px correspond à celui du menu burger du thème.
   -------------------------------------------------------------------------- */
@media (max-width: 1024px) {

    /* Repère pour la flèche en position absolue. */
    #menu-main-menu .menu-item.mega {
        position: relative;
    }

    /* Le survol ne doit plus rien déclencher : sur tactile il reste "collé". */
    #menu-main-menu .menu-item.mega:hover > .mega__panel,
    #menu-main-menu .menu-item.mega:focus-within > .mega__panel {
        display: none;
    }

    /* Seul l'état piloté par le bouton ouvre le panneau.
       position:relative (et non static) parce que le voile de défilement s'y
       accroche — d'où la remise à zéro explicite des décalages, sinon le
       « top » prévu pour le panneau fixe du desktop s'appliquerait ici. */
    #menu-main-menu .menu-item.mega.is-open > .mega__panel {
        display: block;
        position: relative;
        top: auto;
        left: auto;
        right: auto;
        box-shadow: none;
        border-top: 0;
    }

    /* Même flèche que le sélecteur de langue (Font Awesome fa-sort-down), pour
       rester cohérent avec l'existant. Centrée verticalement sur la ligne. */
    /* Lien et flèche forment un groupe inline : il suit l'alignement appliqué par
       le thème (centré ou à gauche selon la largeur), la flèche reste collée au
       libellé, et elle ne peut ni sortir de l'écran ni chevaucher le texte. */
    .mega__head {
        display: inline-flex;
        align-items: center;
        gap: 2px;
    }

    .mega__toggle {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 40px;
        height: 32px;
        color: var(--mega-accent);
        cursor: pointer;
    }

    /* Anneau de focus réservé à la navigation clavier : après un tap, il restait
       affiché autour du bouton. */
    .mega__toggle:focus:not(:focus-visible) {
        outline: none;
    }

    .mega__toggle .fa-sort-down {
        /* fa-sort-down est dessinée basse dans sa boîte : on la recentre. */
        margin-top: -6px;
        font-size: 18px;
        transition: transform .25s ease;
    }

    .menu-item.mega.is-open .mega__toggle .fa-sort-down {
        transform: rotate(180deg);
        margin-top: 6px;
    }

    /* Défilement horizontal avec accroche. */
    .mega__inner,
    .mega__inner--text {
        display: flex;
        grid-template-columns: none;
        gap: 10px;
        padding: 6px 0 10px;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }

    /* Catégories de documentation : alignées à gauche comme le reste du menu,
       et non centrées. */
    .mega__inner--text {
        justify-content: flex-start;
        scroll-snap-type: none;
        gap: 8px 28px;
    }

    /* Voile de défilement : posé au-dessus des cartes plutôt qu'en fond, il reste
       lisible même sur les images. Le script retire .is-end quand il reste du
       contenu à droite, et le remet en fin de course pour effacer le voile. */
    .mega__panel::after {
        content: "";
        position: absolute;
        top: 0;
        bottom: 0;
        right: 0;
        width: 64px;
        pointer-events: none;
        background: linear-gradient(to left, var(--mega-bg) 18%, rgba(255, 255, 255, 0));
        opacity: 1;
        transition: opacity .25s ease;
    }

    .mega__panel.is-end::after {
        opacity: 0;
    }

    .mega__inner::-webkit-scrollbar {
        display: none;
    }

    .mega__card {
        flex: 0 0 60%;
        max-width: 220px;
        scroll-snap-align: start;
    }

    .mega__inner--text .mega__card {
        flex: 0 0 auto;
        max-width: none;
    }

    .mega__inner--3 {
        max-width: none;
    }
}

/* Confort de lecture pour qui réduit les animations. */
@media (prefers-reduced-motion: reduce) {
    .mega__media img,
    .mega__toggle::before {
        transition: none;
    }
}
