/* ============================================================
   LES FLEURS DU MONDE — chrome unifié (2026-08)
   Couche additive par-dessus css/styles.css (jamais modifiée) :
   bande d'en-tête rétractable, arbre de navigation global
   repliable. Adapté de _assets/css/sous-site.css des sous-sites.
   ============================================================ */

/* ---------- Étage 1 : la bande Les Fleurs du Monde ---------- */

header.ss-entete {
    padding: 0;
    text-align: left;
    z-index: 1500;
}

/* Au chargement : le grand bandeau (titre centré, nav des 4 sections
   dessous). Au défilement de main : il se rétracte en bande fine
   (classe ss-reduit posée sur le header par js/chrome.js). Le morphing
   repose sur le positionnement absolu des deux éléments — toutes les
   propriétés animées sont interpolables. */
.fdm-bande {
    position: relative;
    height: 106px;
    background: var(--vert_antique);
}

.fdm-marque {
    position: absolute;
    top: 0.5rem;
    left: 50%;
    transform: translateX(-50%);
    color: #f8f9fa;
    text-decoration: none;
    font-size: 2.5rem;
    font-weight: 700;
    letter-spacing: normal;
    white-space: nowrap;
}

.fdm-marque:hover { text-decoration: underline; text-underline-offset: 15%; }

/* La fleur ❀ n'apparaît que dans la bande rétractée */
.fdm-marque .fdm-fleur { display: none; }

.fdm-nav {
    position: absolute;
    bottom: 0.7rem;
    left: 50%;
    transform: translateX(-50%);
    width: max-content;   /* l'absolu à left:50% ne dispose que d'une
                             demi-largeur : sans ceci les liens se replient */
}

/* Liens de nav : tailles/couleurs/survol de styles.css (nav ul li a),
   seul l'écartement est piloté ici (gap interpolable, contrairement
   au width: 14vw des li du site principal). */
.fdm-nav ul {
    display: flex;
    gap: 6vw;
    margin: 0;
    padding: 0;
}

.fdm-nav ul li {
    width: auto;              /* neutralise nav ul li { width: 14vw } */
    margin: 0;
}

/* Bascule de langue : recentrée verticalement dans la bande */
.ss-entete #lang-chg {
    top: 50%;
    transform: translateY(-50%);
    bottom: auto;
    right: 15px;
}

header.ss-reduit #lang-icon { width: 26px; }

/* État rétracté de l'étage 1 : la bande fine */
header.ss-reduit .fdm-bande { height: 36px; }

header.ss-reduit .fdm-marque {
    top: 50%;
    left: 0.9rem;
    transform: translateY(-50%);
    font-size: 0.9rem;
    font-weight: 400;
    letter-spacing: 0.06em;
}

header.ss-reduit .fdm-marque .fdm-fleur { display: inline; }

/* Bande fine : la nav quitte le centre pour s'aligner sur le bord droit
   de la sidebar (16vw + retrait de 1.2rem), à l'aplomb du titre de la
   bande 2 ; sidebar repliée, elle suit la bande grise de 26px. */
header.ss-reduit .fdm-nav {
    left: calc(16vw + 1.2rem);
    bottom: 50%;
    transform: translate(0, 50%);
}

body.ss-nav-fermee header.ss-reduit .fdm-nav {
    left: calc(26px + 1.2rem);
}

header.ss-reduit .fdm-nav ul { gap: 1.6rem; }

header.ss-reduit .fdm-nav ul li a { font-size: 0.85rem; }

/* ---------- Transitions du chrome ----------
   Activées seulement après le premier rendu (body.ss-pret, posé par
   js/chrome.js en double requestAnimationFrame) : les états retenus —
   chrome compact de session, sidebar repliée — se peignent directement,
   sans animation de rattrapage au chargement de chaque page. */
body.ss-pret .fdm-bande { transition: height 0.25s ease; }
body.ss-pret .fdm-marque {
    transition: font-size 0.25s ease, top 0.25s ease, left 0.25s ease,
                transform 0.25s ease, letter-spacing 0.25s ease;
}
body.ss-pret .fdm-nav { transition: bottom 0.25s ease, left 0.25s ease, transform 0.25s ease; }
body.ss-pret .fdm-nav ul { transition: gap 0.25s ease; }
body.ss-pret .fdm-nav ul li a { transition: font-size 0.25s ease; }
body.ss-pret #lang-icon { transition: width 0.25s ease, transform 0.2s ease-in-out, opacity 0.2s; }
body.ss-pret .ss-bande2 { transition: padding 0.25s ease; }
body.ss-pret .ss-bande2 h1 { transition: font-size 0.25s ease; }
body.ss-pret .ss-repli { transition: transform 0.25s ease; }
body.ss-pret .sidebar { transition: width 0.25s ease; }
body.ss-pret .sidebar > .menu {
    transition: opacity 0.2s ease, visibility 0.2s ease;
}

/* ---------- Repli de la sidebar (grand écran) ---------- */

/* Bouton inséré par js/chrome.js en tête de l'aside : flèche ⇤ collée
   en haut à droite ; repliée, la sidebar devient une fine bande grise
   où la flèche, inversée, reste visible. */
.ss-repli {
    position: sticky;
    top: 0;
    display: block;
    width: 24px;
    height: 24px;
    margin: 0.15rem 0.25rem 0 auto;
    padding: 0;
    background: none;
    border: none;
    cursor: pointer;
    color: #8a8a8a;
    font-size: 1.1rem;
    line-height: 24px;
    text-align: center;
    z-index: 10;
}

.ss-repli::before { content: "\21e4"; }   /* ⇤ (retourné en ⇥ une fois replié) */

.ss-repli:hover { color: #4a4a4a; }

body.ss-nav-fermee .ss-repli {
    transform: scaleX(-1);
    margin-left: auto;
    margin-right: auto;
}

@media (min-width: 769px) {
    body.ss-nav-fermee .sidebar {
        width: 26px;
        overflow: hidden;
    }
    /* Le menu garde sa largeur d'origine (pas de recomposition pendant
       la glissade) et s'efface. */
    body.ss-nav-fermee .sidebar > .menu {
        width: 16vw;
        opacity: 0;
        visibility: hidden;
    }
}

/* ---------- L'arbre de navigation global ---------- */

/* Le div d'accrochage doit être transparent pour la grille : sinon il
   étire la rangée à la hauteur de l'arbre et l'overflow-y de .sidebar
   (styles.css) ne se déclenche jamais. */
#sidebar-container { display: contents; }

.ss-arbre .menu { padding: 0.9rem 0.8rem; }
.ss-arbre .menu li { margin-bottom: 0.5rem; }
.ss-arbre .menu li a { font-size: 1rem; }
.ss-arbre .submenu li { margin: 0.35rem 0; }
.ss-arbre .submenu li a { font-size: 0.95rem; }
.ss-arbre .submenu .submenu li a { font-size: 0.9rem; }

.submenu.ss-ouvert { display: block; }

/* Branche entière « à venir » : quand toutes les pages d'un menu sont des
   coquilles vides (liens gris), son libellé se grise aussi. Classe posée
   par hierarchy.py ; purement visuelle (le dépliage reste actif). */
.ss-arbre a.ss-gris-branche,
.ss-arbre a.ss-gris-branche:hover { color: #b8b8b8; }   /* même gris que .coming-soon */

/* Feuille : le libellé navigue, la flèche déplie */
.ss-arbre li.ss-feuille { position: relative; }
.ss-arbre li.ss-feuille > a { padding-right: 1.4rem; }
.ss-arbre li.ss-feuille > .ss-bascule {
    position: absolute;
    top: 0.15em;
    right: 0.2rem;
    cursor: pointer;
    padding: 0.1rem 0.3rem;
}

/* ---------- Colonne de droite des pages à bande 2 (Atlas…) ---------- */

.ss-colonne {
    grid-area: main;
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0;   /* sans quoi la rangée de grille gonfle à la hauteur
                        du contenu et main ne défile plus (cf. sidebar) */
}

.ss-colonne main {
    flex: 1 1 auto;
    min-height: 0;
}

.ss-bande2 {
    position: relative;
    color: #f8f9fa;
    background: var(--ss-accent, var(--vert_antique));
    padding: 0.45rem 5rem 0.45rem 1.2rem;
}

.ss-bande2 h1 {
    font-size: 1.55rem;
    text-align: left;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* hors du <header>, les règles header h1 a de styles.css ne portent plus */
.ss-bande2 h1 a {
    color: #f8f9fa;
    text-decoration: none;
}

.ss-bande2 h1 a:hover {
    text-decoration: underline;
    text-decoration-thickness: 1%;
    text-underline-offset: 15%;
}

/* État rétracté (au défilement de main, via js/chrome.js) */
.ss-bande2.ss-reduit { padding-top: 0.18rem; padding-bottom: 0.18rem; }
.ss-bande2.ss-reduit h1 { font-size: 1.1rem; }

/* ---------- Mobile ---------- */

@media (max-width: 768px) {
    .fdm-nav { display: none; }
    .fdm-bande { height: 58px; }
    .fdm-marque {
        top: 50%;
        transform: translate(-50%, -50%);
        font-size: 1.4rem;
    }
    header.ss-reduit .fdm-bande { height: 36px; }
    header.ss-reduit .fdm-marque {
        left: 50%;
        transform: translate(-50%, -50%);
        font-size: 1rem;
        font-weight: 400;
    }
    .hamburger { top: 50%; left: 10px; transform: translateY(-50%); }
    .ss-repli { display: none; }   /* sur mobile : tiroir via hamburger */

    .ss-entete #lang-icon { width: 28px; }

    .ss-bande2 { padding: 0.2rem 4.2rem 0.2rem 0.9rem; }
    .ss-bande2 h1 { font-size: 1.1rem; }

    .sidebar.drawer-open { overflow-y: auto; padding-bottom: 2rem; }
}
