/*
 * Gallia – Menu latéral gauche (générique, site entier), façon YouTube.
 * Voir gallia-left-sidebar.php pour le rendu HTML et l'explication complète
 * de la cohabitation avec la barre de partage verticale flottante
 * pré-existante (Sassy Social Share, .heateor_sss_vertical_sharing).
 */

:root {
	--gallia-sidebar-width: 240px;
	/*
	 * 🔴 Bug réel trouvé et corrigé (chantier "Harmonisation YouTube/Skool",
	 * 2026-08-25, point 1) : le `+ 72px` posé ici le 2026-08-20 (voir
	 * historique ci-dessous, gardé pour mémoire) créait un rectangle vide
	 * d'exactement 72px entre le bord droit du menu latéral (240px) et le
	 * début réel du contenu — signalé par capture d'écran, confirmé mesuré
	 * (getBoundingClientRect()) sur la page d'accueil ET la page créateur :
	 * `.site-content`/`.gallia-sale-layout` démarrait systématiquement à
	 * x=312 (240+72), jamais à 240.
	 *
	 * Investigation réelle (pas supposée) : la barre de partage verticale
	 * flottante que ces 72px étaient censés dégager
	 * (`.heateor_sss_vertical_sharing`, Sassy Social Share) est ABSENTE du
	 * DOM sur toutes les pages testées (accueil, page créateur) — confirmée
	 * par `document.querySelector()` retournant `null`. Cause trouvée dans
	 * le code source du plugin lui-même
	 * (`sassy-social-share/public/class-sassy-social-share-public.php`,
	 * méthode d'affichage de la barre verticale) : elle ne s'affiche QUE si
	 * la meta `_heateor_sss_meta['vertical_sharing']` du post/page vaut `1`
	 * ET jamais du tout sur `is_front_page()` — aucune page du site n'a
	 * cette meta positionnée (vérifié via `wp option`/`wp widget list` :
	 * aucune instance du widget flottant n'existe non plus). Les réglages
	 * globaux du plugin (`vertical_home`/`vertical_post`/`vertical_page` = 1)
	 * donnent l'illusion qu'elle est active, mais la condition par-page
	 * réelle n'est jamais remplie : la barre n'a donc JAMAIS été rendue sur
	 * ce site, ce qui rend les 72px de dégagement entièrement inutiles
	 * aujourd'hui — un reliquat, pas un espacement volontaire.
	 * Fix : retiré. `--gallia-content-offset` vaut maintenant exactement
	 * `--gallia-sidebar-width` (240px, plus aucune marge de sécurité pour un
	 * élément qui ne s'affiche pas). Si la barre de partage verticale est un
	 * jour réellement activée sur une page precise, elle a de toute façon sa
	 * propre règle `left: var(--gallia-sidebar-width) !important` plus bas
	 * dans ce fichier — elle démarrerait pile au bord du menu, sans le
	 * chevaucher.
	 *
	 * Historique (2026-08-20) : ce `+72px` avait été posé après un
	 * chevauchement RÉEL constaté à l'époque entre le menu latéral et
	 * `<h1 class="entry-title">` — la barre de partage était alors
	 * effectivement active sur au moins une page testée. Elle a cessé de
	 * s'afficher depuis (réglage par-page retiré ou jamais reporté après un
	 * chantier ultérieur, cause exacte non retraçable a posteriori) ; ce
	 * correctif documente l'état RÉEL vérifié aujourd'hui, pas une
	 * supposition sur pourquoi il a changé.
	 */
	--gallia-content-offset: var(--gallia-sidebar-width);
}

/* ---------- Rail latéral ---------- */

/*
 * top/height composent avec --gallia-header-height (60px, définie dans
 * gallia-global-header/header.css — variable globale partagée sur :root,
 * même convention que --gallia-sidebar-width) depuis le chantier de fusion
 * des bandeaux (2026-08-20) : le rail commence maintenant SOUS le bandeau
 * supérieur global plutôt qu'à y=0 (voir gallia_render_global_header(),
 * qui occupe désormais toute la largeur du haut de l'écran, façon
 * YouTube). Valeur de repli 60px si la variable n'est pas encore chargée
 * (ordre de chargement des feuilles de style non garanti entre mu-plugins).
 */
.gallia-left-sidebar {
	position: fixed;
	top: var(--gallia-header-height, 60px);
	left: 0;
	width: var(--gallia-sidebar-width);
	height: calc(100vh - var(--gallia-header-height, 60px));
	background: #fff;
	border-right: 1px solid #e0e0e0;
	overflow-y: auto;
	z-index: 9000;
	padding-top: 0.5rem;
	box-sizing: border-box;
	/*
	 * Chantier "barre de défilement au survol" (11/09/2026), décision
	 * explicite du fondateur — façon YouTube : invisible au repos, visible
	 * UNIQUEMENT pendant que la souris est sur le menu. `overflow-y:auto`
	 * seul (ci-dessus, inchangé depuis l'origine) laisse le navigateur
	 * afficher SA barre native, en permanence dès que le contenu dépasse —
	 * jamais un choix explicite de ce fichier jusqu'ici, juste l'absence de
	 * toute règle de scrollbar. `scrollbar-width`/`scrollbar-color`
	 * (Firefox) posés ici ; l'équivalent WebKit/Blink (::-webkit-scrollbar,
	 * Chrome/Edge/Safari) est un pseudo-élément, pas une propriété — voir le
	 * bloc séparé juste après ce sélecteur, seul endroit où il peut
	 * s'écrire.
	 *
	 * [NON MESURÉ] Teinte du fond de la barre au survol (#c1c1c1, gris
	 * neutre proche de la barre fine par défaut des navigateurs) — je n'ai
	 * aucun accès navigateur pour mesurer la teinte exacte de la barre
	 * YouTube réelle. Dis-moi si tu veux une valeur précise, mesurée sur la
	 * référence.
	 */
	scrollbar-width: thin;
	scrollbar-color: transparent transparent;
}

.gallia-left-sidebar:hover {
	scrollbar-color: #c1c1c1 transparent;
}

/*
 * Équivalent WebKit/Blink (Chrome, Edge, Safari) du bloc ci-dessus — ces
 * navigateurs ignorent `scrollbar-width`/`scrollbar-color`, la barre s'y
 * stylise UNIQUEMENT via ces pseudo-éléments. Piste/rail toujours
 * transparent ; le curseur (thumb) est transparent au repos, gris au
 * survol du menu — jamais l'inverse, jamais visible sans survol.
 */
.gallia-left-sidebar::-webkit-scrollbar {
	width: 8px;
}

.gallia-left-sidebar::-webkit-scrollbar-track {
	background: transparent;
}

.gallia-left-sidebar::-webkit-scrollbar-thumb {
	background: transparent;
	border-radius: 999px;
}

.gallia-left-sidebar:hover::-webkit-scrollbar-thumb {
	background: #c1c1c1;
}

/*
 * 🔴 Chantier "apparition progressive des liens" (11/09/2026), signalé par
 * le fondateur — symptôme : sur les pages façon YouTube (jamais Skool/
 * vidéo), les liens du menu (Accueil, Shorts, Abonnements...) apparaissent
 * un par un à la réouverture plutôt que d'un coup.
 *
 * ⚠️ VÉRIFIÉ PAR LECTURE DE CODE avant ce correctif : grep exhaustif de ce
 * fichier ET de sidebar.js pour `animation`, `@keyframes`, `nth-child`,
 * `transition-delay`, `setTimeout`, `requestAnimationFrame` — AUCUN
 * résultat. Le chemin "bascule manuelle sans mémorisation" (sidebar.js,
 * chantier "bug critique — repli involontaire de l'accueil") ne pose
 * strictement RIEN sur les éléments individuels : il ne fait que basculer
 * la classe `gallia-sidebar-collapsed` sur <body>. Aucun stagger construit
 * par ce projet — la prémisse d'un mécanisme délibéré dans ces 2 fichiers
 * ne se confirme pas.
 *
 * [NON MESURÉ, aucun accès navigateur] Hypothèse la plus probable, cohérente
 * avec le motif Astra déjà rencontré 19 fois ce soir sur ce projet : une
 * transition GLOBALE héritée du thème (`a{transition:all .3s}` ou
 * équivalent, réglage courant du Customizer Astra) sur les liens/icônes —
 * chaque ligne du menu réagit alors individuellement au changement de
 * largeur du rail (72px→240px), avec un effet de révélation décalée au fil
 * du reflow, sans qu'aucun délai n'ait jamais été posé explicitement.
 *
 * Fix : neutralisation INCONDITIONNELLE de `transition` sur tous les
 * DESCENDANTS de `.gallia-left-sidebar` (liens, icônes, libellés, titres de
 * section, abonnements) — jamais sur `.gallia-left-sidebar` LUI-MÊME
 * (sélecteur `*` ne cible que ses enfants), qui garde intactes ses 2
 * transitions volontaires (0.18s Skool/vidéo, 0.25s tiroir mobile,
 * déclarées plus haut dans ce fichier) — portée strictement limitée à ce
 * qui a été demandé, ces 2 mécanismes ne sont jamais concernés.
 */
.gallia-left-sidebar * {
	transition: none;
}

/* La barre d'administration WordPress (z-index natif 99999) reste toujours
   visible au-dessus — le menu commence juste en dessous d'ELLE ET du
   bandeau global, plutôt que d'être partiellement recouvert par l'un ou
   l'autre. */
body.admin-bar .gallia-left-sidebar {
	top: calc(var(--gallia-header-height, 60px) + 32px);
	height: calc(100vh - var(--gallia-header-height, 60px) - 32px);
}

.gallia-sidebar-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

/* Regroupement visuel (Partie E, 2026-08-21, session suivante) — chaque
   groupe consécutif d'items (voir gallia_render_left_sidebar()) dans son
   propre conteneur, séparé du précédent par de l'espacement, jamais une
   ligne (cohérent avec le reste de ce chantier). */
.gallia-sidebar-group + .gallia-sidebar-group {
	margin-top: 1.25rem;
}

/* ---------- Bloc "À propos" (Partie D, reprise 2026-08-21, 3e session) ---------- */

/* Texte discret gris, petite taille, en retrait par rapport aux entrées
   principales (Accueil, Devenir créateur, Vous, Abonnements) — façon
   YouTube. Séparé du bloc "Abonnements" au-dessus par de l'espacement
   uniquement, jamais une ligne (cohérent avec le reste de ce chantier). */
.gallia-sidebar-about {
	margin-top: 1.5rem;
	padding: 0 1.25rem 1.5rem;
}

.gallia-sidebar-about-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.3rem 0.6rem;
}

.gallia-sidebar-about-list a {
	font-size: 0.72rem;
	color: #909090;
	text-decoration: none;
}

/*
 * Chantier "motif Astra — passe complète" (11/09/2026) : `:focus`/
 * `:focus-visible` ajoutés (absents jusqu'ici) — même raisonnement que le
 * hamburger corrigé plus tôt le même soir (gallia-global-header/header.css) :
 * un clic laisse ce lien *focus* sans forcément être *focus-visible*, Astra
 * resterait alors seul sur `color` sans ce complément. `color` répété
 * explicitement à chaque état (déjà présent au survol, ajouté au focus) —
 * jamais de changement de couleur, juste la neutralisation d'Astra.
 */
.gallia-sidebar-about-list a:hover,
.gallia-sidebar-about-list a:focus {
	color: #606060;
	text-decoration: underline;
}

.gallia-sidebar-about-list a:focus-visible {
	outline: 2px solid var(--gallia-cta-yellow, #F8D481);
	outline-offset: 2px;
}

.gallia-sidebar-link {
	display: flex;
	align-items: center;
	gap: 0.9rem;
	padding: 0.75rem 1.25rem;
	color: #0f0f0f;
	text-decoration: none;
	font-size: 0.92rem;
	font-weight: 500;
}

/*
 * 🔴 Chantier "motif Astra — passe complète" (11/09/2026) : symptôme 2
 * signalé par le fondateur ("les liens du menu latéral passent en bleu au
 * survol") — cette règle ne déclarait `background` mais jamais `color` :
 * Astra (`a:hover{color:...}`, probable équivalent lien du `button:hover`
 * déjà documenté sur ce projet) restait donc seul sur cette propriété.
 * `color` ajouté explicitement, MÊME valeur qu'au repos (ligne ~142) —
 * aucun changement de couleur voulu, seulement sa neutralisation. `:focus`/
 * `:focus-visible` ajoutés aussi (absents jusqu'ici), même raisonnement que
 * pour tous les éléments corrigés ce soir.
 */
.gallia-sidebar-link:hover,
.gallia-sidebar-link:focus {
	background: #f0f0f0;
	color: #0f0f0f;
	text-decoration: none;
}

.gallia-sidebar-link:focus-visible {
	outline: 2px solid var(--gallia-cta-yellow, #F8D481);
	outline-offset: 2px;
}

/* Icônes SVG en ligne (voir gallia-left-sidebar.php) : stroke="currentColor"
   dans le SVG hérite de la couleur posée ici. Couleur fixée EXPLICITEMENT
   (pas seulement héritée de .gallia-sidebar-link) pour éviter le même bug
   déjà rencontré sur l'icône ☰ du hamburger (voir gallia-global-header/
   header.css) : icône blanche invisible sur fond blanc, une règle plus
   spécifique d'ailleurs sur le site imposait `color: #fff` par héritage. */
.gallia-sidebar-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.4rem;
	flex: 0 0 auto;
	color: #0f0f0f;
}

.gallia-sidebar-icon svg {
	display: block;
	width: 22px;
	height: 22px;
}

.gallia-sidebar-label {
	white-space: nowrap;
}

/* ---------- Section "Abonnements" (chantier 2026-08-20) ---------- */

/* Même rythme vertical/horizontal que .gallia-sidebar-link ci-dessus, pour
   rester visuellement cohérent avec le reste du menu (marges, typographie). */

.gallia-sidebar-subscriptions {
	/* Bordure retirée (balayage exhaustif des lignes superflues, chantier
	   identité visuelle, reprise 2026-08-21) — la séparation avec le groupe
	   au-dessus se fait maintenant par l'espacement seul (margin-top plus
	   généreux), pas par un trait. */
	margin-top: 1.25rem;
	padding-top: 0.6rem;
	padding-bottom: 0.5rem;
}

/*
 * Chantier "Harmonisation YouTube/Skool" (2026-08-25), point 14 : CORRECTIF
 * REÇU EN COURS DE CHANTIER — le prompt initial citait "PeerTube" comme
 * référence de mesure, erreur de dictée corrigée par l'utilisateur en cours
 * de session : la référence réelle est youtube.com, pas l'interface
 * PeerTube. Mesuré via getComputedStyle() (deep-query à travers le Shadow
 * DOM des composants Polymer de youtube.com — les libellés natifs
 * n'apparaissent PAS dans une requête DOM classique) sur les libellés de
 * section réels du menu latéral youtube.com ("Abonnements", "Vous") :
 * font-size 14px, font-weight 400, color rgb(15,15,15) = #0F0F0F — bien
 * NOIR comme confirmé par l'utilisateur avant mesure, jamais gris (contrairement
 * à l'hypothèse envisagée initialement pour d'autres zones de la sidebar
 * YouTube, non vérifiée ici). AUCUN text-transform/letter-spacing sur ces
 * libellés (textTransform:"none", letterSpacing:"normal" mesurés) — retirés
 * ici, contrairement à l'ancien traitement MAJUSCULES + espacement de
 * lettres qui n'avait jamais été mesuré. Remplace 0.72rem(11.5px)/700/
 * uppercase/#909090. Police NON importée de youtube.com (Roboto, déjà en
 * place sur Gallia, conservée telle quelle — demande explicite).
 * ("Explorer", une 3e entrée du menu YouTube, mesure différemment — 16px/500,
 * mais correspond à un type d'élément structurellement différent chez
 * YouTube, un en-tête de section dépliable avec chevron, 216×32px, pas un
 * simple libellé texte comme "Abonnements"/"Vous" — 132×20px chacun. Les 2
 * mesures concordantes retenues comme valeur de référence, signalé
 * explicitement plutôt que moyenné arbitrairement.)
 */
.gallia-sidebar-section-title {
	margin: 0;
	padding: 0 1.25rem 0.4rem;
	font-size: 0.875rem; /* 14px */
	font-weight: 400;
	color: var(--gallia-black, #0f0f0f);
}

.gallia-sidebar-subscriptions-message {
	margin: 0;
	padding: 0.15rem 1.25rem 0.6rem;
	font-size: 0.85rem;
	color: #606060;
	line-height: 1.4;
}

.gallia-sidebar-subscriptions-anon {
	padding: 0 1.25rem 0.15rem;
}

.gallia-sidebar-subscriptions-anon .gallia-sidebar-subscriptions-message {
	padding: 0 0 0.65rem;
}

.gallia-sidebar-login-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0.45rem 1rem;
	border-radius: 999px;
	border: 1px solid #0f0f0f;
	background: #fff;
	color: #0f0f0f;
	font-size: 0.85rem;
	font-weight: 600;
	font-family: inherit;
	cursor: pointer;
}

.gallia-sidebar-login-btn:hover,
.gallia-sidebar-login-btn:focus {
	/*
	 * 🔴 Bug réel trouvé et corrigé (chantier "corrections complémentaires
	 * façon Skool", 2026-08-22, session suivante) : le filet de sécurité
	 * générique posé dans brand.css (`button[class*="gallia-"]:focus {
	 * background-color: unset; }`, pour neutraliser le bleu Astra sur les
	 * boutons sans traitement de focus propre) rendait CE bouton
	 * transparent au focus au lieu de son fond blanc voulu (#fff) — sa
	 * propre règle de survol le corrige ici, avec une spécificité plus
	 * élevée que le filet générique.
	 *
	 * 🔴 Chantier "motif Astra — passe complète" (11/09/2026) : `color`
	 * ajouté explicitement (absent jusqu'ici) — Astra (`button:hover,
	 * button:focus{color:#fff}`) restait seul sur cette propriété, cette
	 * règle ne déclarant que `background`. Même valeur qu'au repos (ligne
	 * ~250), aucun changement de couleur voulu.
	 */
	background: #f0f0f0;
	color: #0f0f0f;
}

.gallia-sidebar-login-btn:focus-visible {
	outline: 2px solid var(--gallia-cta-yellow, #F8D481);
	outline-offset: 2px;
}

.gallia-sidebar-subscriptions-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.gallia-sidebar-subscription-link {
	display: flex;
	align-items: center;
	gap: 0.9rem;
	padding: 0.6rem 1.25rem;
	color: #0f0f0f;
	text-decoration: none;
	font-size: 0.88rem;
	font-weight: 500;
}

/*
 * 🔴 Chantier "motif Astra — passe complète" (11/09/2026) : même bug/même
 * correctif que `.gallia-sidebar-link:hover` juste au-dessus — `color`
 * manquant, `:focus`/`:focus-visible` absents.
 */
.gallia-sidebar-subscription-link:hover,
.gallia-sidebar-subscription-link:focus {
	background: #f0f0f0;
	color: #0f0f0f;
	text-decoration: none;
}

.gallia-sidebar-subscription-link:focus-visible {
	outline: 2px solid var(--gallia-cta-yellow, #F8D481);
	outline-offset: 2px;
}

/* 22px = même taille visuelle que les icônes SVG du menu (voir
   .gallia-sidebar-icon svg ci-dessus), pour la cohérence demandée. */
.gallia-sidebar-subscription-avatar {
	flex: 0 0 auto;
	width: 22px;
	height: 22px;
	border-radius: 999px;
	overflow: hidden;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: #e0e0e0;
	color: #555;
	font-size: 0.65rem;
	font-weight: 700;
	line-height: 1;
}

.gallia-sidebar-subscription-avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.gallia-sidebar-subscription-name {
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* ---------- Repli desktop en rail d'icônes (72px), chantier 2026-08-23 ---------- */

/*
 * Une SEULE variable à réécrire (--gallia-sidebar-width, déjà la source
 * unique dont dérivent --gallia-content-offset ci-dessus ET la largeur du
 * rail lui-même, ET la largeur du bloc logo du bandeau — voir
 * .gallia-global-header-brand dans gallia-global-header/header.css) : en
 * la redéfinissant sur <body>, elle se propage par héritage CSS normal à
 * TOUS ces éléments sans code additionnel. Uniquement en desktop (>=783px) —
 * en dessous, le rail redevient un tiroir plein-écran, le repli en icônes
 * n'a pas de sens sur mobile.
 */
/* ---------------------------------------------------------------------------
 * PAGE DE VISIONNAGE /video/ ET PAGE CRÉATEUR À NEUF ONGLETS — menu
 * entièrement escamoté
 * ---------------------------------------------------------------------------
 * Chantier de fidélité visuelle, lot V1 (2026-09-01), écart E2.
 *
 * MESURÉ sur la capture YouTube du 01/09/2026 : sur la page de visionnage, le
 * menu latéral n'est pas réduit à un rail d'icônes — il est ENTIÈREMENT
 * escamoté. Le contenu commence à x≈16 et le lecteur occupe 69,6 % de la
 * largeur de fenêtre. Un rail de 72 px reproduirait le comportement de la
 * page d'accueil, pas celui de la page de visionnage.
 *
 * TROIS ÉTATS DISTINCTS, à ne pas confondre :
 *   - `gallia-sidebar-collapsed` : rail de 72 px, icônes visibles, le contenu
 *     est décalé d'autant. Comportement de l'accueil, INCHANGÉ.
 *   - `gallia-watch-page`        : menu hors écran, décalage nul. Le
 *     hamburger le ramène EN SUPERPOSITION au-dessus du contenu, avec le
 *     voile de fond — exactement le tiroir mobile qui existe déjà, réemployé
 *     tel quel sur desktop. Aucun second mécanisme n'est créé.
 *   - `gallia-creator-tabs-page` (chantier "menu latéral gauche — page
 *     créateur", 11/09/2026) : MÊME traitement que `gallia-watch-page`
 *     ci-dessus, étendu à un second contexte — posée par
 *     gallia_radio_tabs_body_class() (gallia-radio-tabs.php) UNIQUEMENT
 *     quand le visiteur voit RÉELLEMENT les neuf onglets de la page
 *     créateur (membre abonné), jamais sur la page de vente (État A),
 *     décision explicite du fondateur. Les deux classes partageaient
 *     initialement exactement les mêmes règles ci-dessous (mêmes z-index
 *     9200/9150, rien de réinventé) — DEPUIS le chantier "hamburger bleu au
 *     survol + retrait du voile de fond" (11/09/2026, second passage), un
 *     seul point diverge, et SEULEMENT ICI en desktop (voir la règle du
 *     voile plus bas dans ce bloc) : `gallia-creator-tabs-page` n'a plus de
 *     voile de fond — décision explicite du fondateur, portée strictement
 *     limitée aux pages Skool ET au desktop ; en dessous de 783px (tiroir
 *     mobile/tablette, fin de fichier), le voile reste affiché COMME AVANT
 *     ce chantier, sur toutes les pages sans exception. /video/
 *     (`gallia-watch-page`) garde son voile en desktop, inchangé.
 *
 * On ne touche pas à `--gallia-sidebar-width` : le menu garde sa largeur
 * réelle pour rester lisible une fois ouvert. Seul le DÉCALAGE DU CONTENU
 * (`--gallia-content-offset`) passe à zéro, et le rail est translaté hors
 * champ. C'est la différence entre « le menu est étroit » et « le menu n'est
 * pas là », et c'est la seconde qu'il faut ici.
 */
@media screen and (min-width: 783px) {
	body.gallia-watch-page,
	body.gallia-creator-tabs-page {
		--gallia-content-offset: 0px;
	}

	body.gallia-watch-page .gallia-left-sidebar,
	body.gallia-creator-tabs-page .gallia-left-sidebar {
		transform: translateX(-100%);
		visibility: hidden;
		transition: transform .18s ease, visibility .18s ease;
	}

	/* Réouverture manuelle par le hamburger : superposition, jamais un
	   décalage du contenu — le lecteur ne doit pas se redimensionner sous
	   les yeux du spectateur pendant la lecture (même raisonnement, même
	   traitement pour la page créateur à neuf onglets : le contenu des
	   onglets ne doit pas non plus se redimensionner sous les yeux du
	   membre pendant sa lecture). */
	body.gallia-watch-page .gallia-left-sidebar.is-open,
	body.gallia-creator-tabs-page .gallia-left-sidebar.is-open {
		transform: none;
		visibility: visible;
		box-shadow: 2px 0 16px rgba(0, 0, 0, .18);
	}

	/*
	 * Voile de fond sur desktop.
	 *
	 * Le <div> est déjà rendu par gallia_render_left_sidebar() et déjà piloté
	 * par sidebar.js (classe .is-open) — c'est bien le mécanisme existant qui
	 * est réemployé. En revanche son APPARENCE (position, fond, empilement)
	 * n'était déclarée que dans le bloc @media (max-width:782px) : sur
	 * desktop, un simple display:block n'aurait rien affiché du tout. Les
	 * propriétés sont donc reprises telles quelles ici.
	 *
	 * Empilement aligné sur les valeurs déjà en vigueur dans ce fichier :
	 * le rail est à 9000, le tiroir mobile monte à 9200 au-dessus d'un voile
	 * à 9150. On reprend exactement ce couple, pour que le menu ouvert passe
	 * au-dessus du voile, et le voile au-dessus du contenu. Aucune valeur
	 * n'est inventée.
	 */
	body.gallia-watch-page .gallia-left-sidebar.is-open,
	body.gallia-creator-tabs-page .gallia-left-sidebar.is-open {
		z-index: 9200;
	}

	/*
	 * 🔴 Chantier "hamburger bleu au survol + retrait du voile de fond"
	 * (11/09/2026) : décision explicite du fondateur — SUR LES PAGES SKOOL
	 * (body.gallia-creator-tabs-page) ET EN DESKTOP UNIQUEMENT (ce bloc,
	 * @media min-width:783px), ce voile est retiré. `body.gallia-creator-
	 * tabs-page` sort donc de ce sélecteur (il y était depuis le chantier
	 * précédent) : le retrait se fait en NE L'AJOUTANT PAS ici, plutôt qu'en
	 * surchargeant ensuite avec une 2e règle `display:none`. En dessous de
	 * 783px (tiroir mobile/tablette, bloc @media max-width:782px en fin de
	 * fichier), AUCUNE exception n'est ajoutée : le voile reste affiché sur
	 * les pages Skool comme sur toutes les autres — décision explicite du
	 * fondateur, portée volontairement asymétrique entre desktop et mobile.
	 * /video/ (body.gallia-watch-page) garde son voile en desktop, inchangé.
	 * Vérifié avant ce retrait (sidebar.js) : la fermeture du menu ne dépend
	 * JAMAIS uniquement du clic sur ce voile — le hamburger (re-clic) et
	 * Échap restent deux écouteurs indépendants, câblés sur
	 * `toggle`/`document`, jamais sur `backdrop` seul — le retirer ici ne
	 * casse donc aucun moyen de fermer le menu.
	 */
	body.gallia-watch-page .gallia-sidebar-backdrop.is-open {
		display: block;
		position: fixed;
		inset: 0;
		background: rgba(0, 0, 0, 0.4);
		z-index: 9150;
	}

	@media (prefers-reduced-motion: reduce) {
		body.gallia-watch-page .gallia-left-sidebar,
		body.gallia-creator-tabs-page .gallia-left-sidebar {
			transition: none;
		}
	}
}

@media screen and (min-width: 783px) {
	body.gallia-sidebar-collapsed {
		--gallia-sidebar-width: 72px;
	}

	body.gallia-sidebar-collapsed .gallia-sidebar-label,
	body.gallia-sidebar-collapsed .gallia-sidebar-section-title,
	body.gallia-sidebar-collapsed .gallia-sidebar-subscription-name,
	body.gallia-sidebar-collapsed .gallia-sidebar-subscriptions-message,
	body.gallia-sidebar-collapsed .gallia-sidebar-subscriptions-anon .gallia-sidebar-login-btn,
	body.gallia-sidebar-collapsed .gallia-sidebar-subscriptions-more,
	body.gallia-sidebar-collapsed .gallia-sidebar-about {
		display: none;
	}

	body.gallia-sidebar-collapsed .gallia-sidebar-link,
	body.gallia-sidebar-collapsed .gallia-sidebar-subscription-link {
		justify-content: center;
		padding-left: 0;
		padding-right: 0;
	}

	body.gallia-sidebar-collapsed .gallia-sidebar-sub-dot {
		position: absolute;
		top: 4px;
		right: 14px;
	}
}

/* ---------- Pastille "contenu récent / en direct" (chantier 2026-08-23) ---------- */

.gallia-sidebar-subscription-link {
	position: relative;
}

/*
 * Chantier "Harmonisation YouTube/Skool" (2026-08-25), point 12 : jaune de
 * marque au lieu du bleu — cohérence d'accent avec le reste du site (même
 * principe que .gallia-header-badge, gallia-radio-header/header.css).
 */
.gallia-sidebar-sub-dot {
	width: 8px;
	height: 8px;
	border-radius: 999px;
	background: var(--gallia-yellow, #F8D481);
	flex: 0 0 auto;
	margin-left: auto;
}

/* ---------- Bouton "Plus" (abonnements au-delà de 8, chantier 2026-08-23) ---------- */

.gallia-sidebar-subscriptions-more {
	display: block;
	width: calc(100% - 2.5rem);
	margin: 0.2rem 1.25rem 0.4rem;
	padding: 0.5rem 0;
	border: none;
	background: none;
	color: var(--gallia-black, #0f0f0f);
	font-family: inherit;
	font-size: 0.85rem;
	font-weight: 600;
	text-align: left;
	cursor: pointer;
}

/*
 * 🔴 Chantier "motif Astra — passe complète" (11/09/2026) : ce <button> ne
 * déclarait NI `background` NI `color` au survol (seulement le
 * soulignement) — Astra (`button:hover{color:#fff;background-color:...}`)
 * s'appliquait donc entièrement sans concurrent sur les deux propriétés.
 * Les deux ajoutées explicitement, mêmes valeurs qu'au repos (ligne ~519-
 * 520 : fond transparent, texte noir) — ce bouton reste un lien texte sans
 * fond, jamais une pastille grise comme les autres éléments du menu.
 */
.gallia-sidebar-subscriptions-more:hover,
.gallia-sidebar-subscriptions-more:focus {
	background: none;
	color: var(--gallia-black, #0f0f0f);
	text-decoration: underline;
}

.gallia-sidebar-subscriptions-more:focus-visible {
	outline: 2px solid var(--gallia-cta-yellow, #F8D481);
	outline-offset: 2px;
}

/* ---------- Contenu du site décalé pour laisser la place au menu + bandeau ---------- */

/*
 * padding-top ajouté au chantier de fusion des bandeaux (2026-08-20) : le
 * nouveau bandeau global est position:fixed, comme le menu latéral — sans
 * ce padding, il recouvrirait le haut du contenu de page. Appliqué SANS
 * exception, y compris sur mobile (contrairement à padding-left ci-dessous,
 * réinitialisé en dessous de 782px) : le bandeau, lui, reste visible sur
 * mobile (c'est là que vit le bouton hamburger), il ne se replie jamais.
 */
body {
	padding-left: var(--gallia-content-offset);
	padding-top: var(--gallia-header-height, 60px);
}

/* Voir le commentaire détaillé en tête de gallia-left-sidebar.php : ce
   décalage reproduit exactement la même disposition relative qu'avant ce
   chantier entre cette barre et le début du contenu de page. */
.heateor_sss_vertical_sharing {
	left: var(--gallia-sidebar-width) !important;
}

/* ---------- Rideau (masqué par défaut, desktop) ----------
   Le hamburger lui-même (.gallia-sidebar-toggle) est désormais stylé dans
   gallia-global-header/header.css — il y est rendu comme enfant flexbox
   normal du bandeau global, plus un élément flottant propre à ce fichier
   (voir le docblock de gallia-left-sidebar.php pour le détail complet du
   chantier de fusion des bandeaux, 2026-08-20). */

.gallia-sidebar-backdrop {
	display: none;
}

/* ---------- Mobile / tablette : menu replié derrière le hamburger ---------- */

@media screen and (max-width: 782px) {
	body {
		padding-left: 0;
	}

	body.admin-bar .gallia-left-sidebar {
		top: calc(var(--gallia-header-height, 60px) + 46px);
		height: calc(100vh - var(--gallia-header-height, 60px) - 46px);
	}

	/* Le plugin masque déjà lui-même sa barre verticale sur petit écran en
	   pratique (comportement natif documenté ailleurs dans ce projet, voir
	   gallia-radio-sale-page/sale.css) — repli documenté, pas un vrai risque
	   de chevauchement avec le menu replié. */
	.heateor_sss_vertical_sharing {
		left: 0 !important;
	}

	.gallia-left-sidebar {
		width: min(var(--gallia-sidebar-width), 78vw);
		transform: translateX(-100%);
		transition: transform 0.25s ease;
		box-shadow: 2px 0 16px rgba(0, 0, 0, 0.18);
		z-index: 9200;
	}

	.gallia-left-sidebar.is-open {
		transform: translateX(0);
	}

	/*
	 * Chantier "hamburger bleu au survol + retrait du voile de fond"
	 * (11/09/2026) : décision explicite du fondateur — le retrait du voile
	 * sur les pages Skool (body.gallia-creator-tabs-page) est SCOPÉ AU
	 * DESKTOP uniquement (voir plus haut dans ce fichier, bloc
	 * @media (min-width:783px)). En dessous de 783px, le tiroir plein écran
	 * garde son voile, COMME AVANT ce chantier — cette règle générique
	 * (non scopée par body.gallia-creator-tabs-page) reste donc INCHANGÉE,
	 * volontairement, aucune exception ajoutée ici.
	 */
	.gallia-sidebar-backdrop.is-open {
		display: block;
		position: fixed;
		inset: 0;
		background: rgba(0, 0, 0, 0.4);
		z-index: 9150;
	}
}
