/*
 * Page d'accueil plateforme façon YouTube. Chargé uniquement sur la page
 * portant [gallia_platform_homepage], voir
 * wp-content/mu-plugins/gallia-platform-homepage.php.
 *
 * REFONTE 07/09/2026 ("quatorze points de fidélité") — remplace l'ancienne
 * grille plate par une pile de rangées typées. Mesures de référence
 * [MESURÉ le 07/09/2026 par getBoundingClientRect()/getComputedStyle() EN
 * DIRECT sur youtube.com, page d'accueil, fenêtre 1365px] : chaque valeur
 * ainsi qualifiée prime sur toute estimation antérieure de ce fichier.
 *
 * ATTENTION AUX RAYONS — trois valeurs coexistent VOLONTAIREMENT sur ce
 * projet, ne jamais les "harmoniser" en une seule :
 *   12px — vignette de carte vidéo, CETTE page (mesuré)
 *    8px — vignette de carte Short, CETTE page (mesuré)
 *    8px — vignette de carte vidéo, page d'accueil CRÉATEUR (mesuré
 *          séparément le 05/09/2026, gallia-creator-homepage/homepage.css)
 * Le rayon Short d'ici (8px) et le rayon vidéo de la page créateur (8px)
 * sont IDENTIQUEMENT 8px par coïncidence de mesure, pas par principe
 * partagé — rien ne les lie, une future mesure pourrait les diverger sans
 * que ce soit une erreur.
 * RÈGLE, vérifiée sur cette page : le rayon est TOUJOURS porté par
 * l'élément qui ROGNE l'image (overflow:hidden), jamais par l'<img>
 * elle-même (mesuré : l'IMG rend 0px sur la référence).
 */

.gallia-homepage {
	max-width: 1600px;
	margin: 0 auto;
	padding: 0 24px 40px;
}

.entry-content[data-ast-blocks-layout] > .gallia-homepage {
	max-width: 1600px;
	margin-left: auto;
	margin-right: auto;
}

body.gallia-platform-fullwidth .site-content > .ast-container {
	max-width: none;
	margin-left: 0;
	margin-right: 0;
}

.gallia-homepage-status {
	color: #666;
	font-size: 14px;
	padding: 24px 0;
}

/* Sentinelle du défilement infini (IntersectionObserver, voir homepage.js) —
   invisible, retirée du DOM par homepage.js dès que le catalogue est
   entièrement épuisé (plus rien ne se charge après). */
.gallia-homepage-sentinel {
	height: 1px;
}

/* ---------- Pile de rangées ---------- */

.gallia-homepage-rows {
	display: flex;
	flex-direction: column;
}

.gallia-home-row {
	/* [DÉFAUT, non re-mesuré le 07/09/2026] reprend la valeur de marge
	   verticale déjà mesurée en direct sur youtube.com pour cette page
	   (32px, ancien gap de grille), qui change de rôle ici (espace entre
	   deux rangées) sans qu'aucune mesure n'indique une autre valeur —
	   signalé plutôt que présenté comme une mesure du 07/09. */
	margin-top: 32px;
}

.gallia-home-row:first-child {
	margin-top: 8px;
}

.gallia-home-row-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: 16px;
}

.gallia-home-row-title {
	/* [MESURÉ] 20px / graisse 700 */
	font-size: 20px;
	font-weight: 700;
	color: var(--gallia-black, #0f0f0f);
	margin: 0;
}

/* Rangées "Vidéos" alternées (positions 4/5/7/8/... du prompt) : PAS de
   titre — seuls "Vidéo à la une", "Top 3" et "Shorts" en portent un
   d'après le prompt de ce chantier. [DÉFAUT, faute d'instruction
   contraire] homepage.js ne construit donc pas de .gallia-home-row-head
   pour ces rangées-là. */

/* ---------- Grilles ---------- */

.gallia-home-video-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	/* [MESURÉ] gouttière 16px — Gallia (1022px de zone de contenu) adapte
	   PROPORTIONNELLEMENT la largeur de colonne par rapport à la référence
	   (1062px), gouttière et nombre de cartes inchangés, comme demandé :
	   aucune largeur de carte fixe ci-dessous, `1fr` fait ce travail seul. */
	gap: 16px;
}

.gallia-home-short-grid {
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: 16px;
}

@media (max-width: 1024px) {
	/* [DÉFAUT, non re-mesuré] repli mobile/tablette conservé de l'ancienne
	   grille (2 colonnes), étendu par cohérence à la rangée Short (3
	   colonnes plutôt que 5, pour rester lisible) — aucune mesure fournie
	   pour ce point, valeurs choisies par continuité avec le comportement
	   précédent de cette page. */
	.gallia-home-video-grid {
		grid-template-columns: repeat(2, 1fr);
	}
	.gallia-home-short-grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

@media (max-width: 640px) {
	.gallia-home-video-grid {
		grid-template-columns: 1fr;
	}
	.gallia-home-short-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

/* ---------- Carte vidéo ---------- */

.gallia-home-card {
	display: flex;
	flex-direction: column;
	/* [MESURÉ le 07/09/2026] écart vignette → bloc de métadonnées : 12px
	   (remplace l'ancienne valeur 10px, jamais mesurée en direct). */
	gap: 12px;
}

.gallia-home-card-thumb-wrap {
	position: relative;
}

.gallia-home-card-thumb {
	position: relative;
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9; /* [MESURÉ] 343×193 = 16:9 exact */
	padding: 0;
	margin: 0;
	border: 0;
	border-radius: 12px; /* [MESURÉ le 07/09/2026, reconfirme la valeur déjà en place] voir l'avertissement sur les 3 rayons en tête de fichier */
	overflow: hidden; /* le rayon est porté ICI, jamais par l'<img> ci-dessous — vérifié sur la référence */
	background: #111;
	cursor: pointer;
}

.gallia-home-card-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	border-radius: 0; /* jamais sur l'image elle-même, voir l'avertissement en tête de fichier */
}

.gallia-home-card-thumb:hover img,
.gallia-home-card-thumb:focus-visible img {
	opacity: 0.85;
}

.gallia-home-card-duration {
	position: absolute;
	/* [MESURÉ le 07/09/2026] 8px du bord droit ET du bas (remplace
	   l'ancienne valeur 6px, jamais mesurée en direct). */
	right: 8px;
	bottom: 8px;
	background: rgba(0, 0, 0, 0.6); /* [NON RE-MESURÉ ce tour-ci] fond/padding/rayon inchangés, seule la position a été redonnée par l'audit du 07/09 */
	color: #fff;
	font-size: 12px; /* [MESURÉ] */
	font-weight: 500; /* [MESURÉ] */
	line-height: 1;
	padding: 1px 4px;
	border-radius: 4px;
}

/* ---------- Ligne titre + menu ⋮ (07/09/2026, point 6) ----------
   Le menu n'est plus superposé à la miniature : il vit désormais à droite
   du titre, dans le flux du texte — toujours visible (plus de règle
   opacity:0/hover, pertinente seulement en survol d'image). */

/*
 * 08/09/2026, CORRECTIF (point 1) — DIAGNOSTIC DIFFÉRENT DU BUG DU MATIN,
 * MÊME SYMPTÔME. Le titre lui-même n'a jamais eu de hauteur fixe ici
 * (-webkit-line-clamp dès l'origine) — la cause réelle est que ce
 * conteneur était `display:flex; align-items:flex-start` avec le titre ET
 * le bouton ⋮ (40px) comme ENFANTS DIRECTS : la hauteur d'une ligne flex
 * est TOUJOURS celle de son plus grand enfant, donc cette ligne mesurait
 * au moins 40px même pour un titre d'une seule ligne (22px) — 18px
 * d'espace invisible avant la suite, exactement le symptôme signalé, par
 * un mécanisme différent de celui du matin (un enfant flex qui force la
 * hauteur, pas une hauteur fixée sur le titre lui-même).
 * Corrigé en sortant le bouton du flux (position:absolute ci-dessous, sur
 * .gallia-home-card-menu-wrap) : la hauteur de cette ligne redevient
 * celle du SEUL titre, intrinsèque, 1 ou 2 lignes.
 */
.gallia-home-card-title-row {
	position: relative;
}

.gallia-home-card .gallia-home-card-title {
	margin: 0;
	/* Réserve la place du bouton ⋮ absolument positionné (40px + 8px de
	   marge) pour que le texte ne passe jamais dessous, y compris sur la
	   2e ligne d'un titre long. */
	padding-right: 48px;
	/*
	 * 07/09/2026 — TITRE : GRAISSE MODIFIÉE, TENSION SIGNALÉE.
	 * Le 21/08/2026, la graisse 500 avait été essayée puis abandonnée pour
	 * 700 : "500 s'est révélé visuellement indiscernable du texte courant
	 * sur ce site" (bug documenté et corrigé à cette date, sur LE RENDU
	 * RÉEL de la police Roboto variable de Gallia, pas une supposition).
	 * La mesure du 07/09/2026 sur youtube.com donne 500. Les deux ne
	 * portent PAS sur la même police (Roboto variable de Gallia contre la
	 * police de YouTube) : appliqué ici tel que mesuré, comme demandé
	 * explicitement ("ces valeurs priment sur toute estimation") — mais
	 * SIGNALÉ, pas appliqué en silence : à VÉRIFIER À L'ÉCRAN après
	 * déploiement, le défaut du 21/08 pourrait réapparaître avec Roboto.
	 */
	font-size: 16px;
	font-weight: 500;
	color: var(--gallia-black, #0f0f0f);
	line-height: 22px;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/*
 * 07/09/2026, CORRECTIF (point 8) : titre de carte souligné aujourd'hui,
 * jamais sur la référence — motif Astra `.ast-single-post .entry-content
 * a`, spécificité (0,2,1), HUITIÈME occurrence sur ce projet (les 7
 * précédentes sur gallia-creator-homepage/homepage.css). Sélecteur à 3
 * classes d'ancêtres ci-dessous = (0,3,0) au repos / (0,3,1) sur chaque
 * pseudo-classe (elle compte comme une classe dans la colonne b) —
 * strictement supérieur à (0,2,1) dans les deux cas, sans !important.
 * LEÇON DU LOT PRÉCÉDENT explicitement appliquée : les QUATRE états sont
 * couverts (repos, :hover, :focus, :visited, :active) — un correctif qui
 * ne couvre que le repos laisse Astra reprendre la main au survol, exact
 * défaut déjà rencontré et documenté sur gallia-creator-homepage/
 * homepage.css.
 */
.gallia-home-video-grid .gallia-home-card .gallia-home-card-title,
.gallia-home-video-grid .gallia-home-card .gallia-home-card-title:hover,
.gallia-home-video-grid .gallia-home-card .gallia-home-card-title:focus,
.gallia-home-video-grid .gallia-home-card .gallia-home-card-title:visited,
.gallia-home-video-grid .gallia-home-card .gallia-home-card-title:active {
	text-decoration: none;
}

/* ---------- Menu 3-points ---------- */

/*
 * 08/09/2026, CORRECTIF (point 1 + point 3). Point 1 : sorti du flux du
 * titre (position:absolute) — voir le commentaire de .gallia-home-card-
 * title-row juste au-dessus, c'est ça qui referme le vide. `top:0;right:0`
 * ancre le bouton en haut à droite de la ligne de titre, quelle que soit
 * sa hauteur réelle (1 ou 2 lignes).
 */
.gallia-home-card-menu-wrap {
	position: absolute;
	top: 0;
	right: 0;
}

.gallia-home-card-menu-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	/* [MESURÉ le 07/09/2026] 40×40, border-radius 20px — remplace l'ancien
	   30×30/999px (jamais mesuré en direct). */
	width: 40px;
	height: 40px;
	border-radius: 20px;
	border: none;
	/*
	 * 08/09/2026, CORRECTIF (point 3) : le fond gris était visible en
	 * permanence — cible « n'apparaît QU'au survol ». Absent au repos ;
	 * posé uniquement sur :hover/:focus-visible ci-dessous (le focus
	 * clavier suit la même règle que l'ancien mécanisme opacity, jamais
	 * spécifiquement demandé mais cohérent avec lui : un bouton révélé
	 * seulement à la souris serait injoignable au clavier).
	 */
	background: transparent;
	color: #0f0f0f; /* [MESURÉ] sombre sur fond de page, comme sur la référence */
	cursor: pointer;
}

/*
 * 09/09/2026, CORRECTIF 2 (défaut 1) — CAUSE RÉELLE MESURÉE EN CONSOLE :
 * le bouton rendait 60×40 au lieu de 40×40 posés ci-dessus. `padding`/
 * `box-sizing` n'étaient jamais réinitialisés ici — signature DÉJÀ
 * rencontrée deux fois sur ce projet (gallia-creator-homepage : bouton de
 * recherche 60px au lieu de 36px, chevron de rangée) : un padding de
 * bouton Astra jamais neutralisé s'ajoute à la largeur/hauteur posée en
 * `content-box`. Ce n'est PAS seulement un défaut de taille du bouton :
 * ce padding vole de l'espace intérieur disponible au SVG (flex enfant),
 * qui se retrouve écrasé à 0 de large — voir le commentaire du SVG plus
 * bas pour la suite du mécanisme.
 * Sélecteur à 2 classes (0,2,0), même technique déjà éprouvée deux fois
 * sur ce projet pour ce motif exact — bat un `button{...}` (0,0,1) ou un
 * `.entry-content button{...}` Astra (0,1,1) sans ambiguïté (colonne
 * classes : 2 > 1 dans les deux cas), sans !important.
 */
.gallia-home-card-menu-wrap .gallia-home-card-menu-btn {
	padding: 0;
	box-sizing: border-box;
	border: none;
}

.gallia-home-card-menu-btn:hover,
.gallia-home-card-menu-btn:focus-visible {
	background: rgb(242, 242, 242); /* [NON MESURÉ] gris clair déjà en usage ailleurs sur le site pour un survol neutre */
}

/*
 * 09/09/2026, CORRECTIF 2 (défaut 1) — CORRECTIF DU 08/09 INSUFFISANT,
 * DIAGNOSTIC REFAIT. `fill: currentColor` (déjà posé) N'ÉTAIT PAS le
 * problème : mesuré en console, fill=rgb(15,15,15), les 3 cercles
 * existent, la couleur est correcte. La cause réelle : LARGEUR à 0,
 * hauteur correcte (18px) — signature d'un enfant flex qui se fait
 * comprimer sur l'axe principal (largeur), jamais sur l'axe croisé
 * (hauteur, non concerné par flex-shrink). Deux conditions réunies pour
 * ce défaut, corrigées TOUTES LES DEUX :
 *   1) le conteneur flex (.gallia-home-card-menu-btn) manquait d'espace
 *      intérieur réel à cause du padding Astra non neutralisé (voir
 *      ci-dessus) — ce SVG n'était pas le seul enfant à s'en trouver
 *      comprimé, c'était la cause structurelle ;
 *   2) le SVG lui-même n'avait pas `flex-shrink:0` : sans cette ligne,
 *      RIEN n'empêche un enfant flex de rétrécir sous sa taille indiquée
 *      quand l'espace manque, quelle que soit la largeur posée par
 *      ailleurs. `flex-shrink:0` rend cette largeur non négociable —
 *      aucune contrainte de conteneur, même future, ne peut plus la
 *      comprimer.
 * CIBLE mesurée le 07/09/2026 sur la référence : 24×24 (remplace 18×18,
 * jamais mesuré en direct sur ce point précis).
 */
.gallia-home-card-menu-btn svg {
	width: 24px;
	height: 24px;
	flex-shrink: 0;
	fill: currentColor;
}

/*
 * 09/09/2026, CORRECTIF 3 (point 4) — MESURÉ EN CONSOLE le 07/09/2026 :
 * 220px ici contre 304px sur la référence. 220px n'était jamais une
 * mesure, seulement une largeur choisie sans référence au moment de
 * construire ce panneau. `min-width` conservé (pas `width` fixe) : la
 * largeur reste un PLANCHER, pas un plafond — une future entrée plus
 * longue que celles mesurées ici pourra encore pousser le panneau plus
 * large plutôt que d'être coupée, sans que ce ne soit un écart avec cette
 * mesure (qui décrit la largeur pour LE CONTENU ACTUEL, pas un maximum).
 */
.gallia-home-card-menu-panel {
	position: absolute;
	top: 44px;
	right: 0;
	min-width: 304px;
	background: #fff;
	border-radius: 8px;
	box-shadow: 0 4px 18px rgba(0, 0, 0, 0.22);
	padding: 0.35rem 0;
	display: flex;
	flex-direction: column;
	z-index: 3;
}

.gallia-home-card-menu-panel[hidden] {
	display: none;
}

/*
 * 08/09/2026, CORRECTIF (point 4) : une icône au trait par entrée —
 * display:flex remplace display:block pour aligner icône + libellé.
 */
.gallia-home-card-menu-item {
	display: flex;
	align-items: center;
	gap: 10px;
	width: 100%;
	background: none;
	border: none;
	padding: 0.5rem 0.9rem;
	font-family: var(--gallia-font);
	/*
	 * 09/09/2026, CORRECTIF 3 (point 3) — MESURÉ EN CONSOLE : 0.85rem
	 * calculait 13,6px (16px racine × 0.85), une valeur DÉRIVÉE, jamais
	 * mesurée directement — ni elle, ni la graisse 500 qui s'affichait ici
	 * (aucune des deux n'a d'origine mesurée identifiée). Remplacées par
	 * les valeurs mesurées en direct sur la référence : 14px/400, posées
	 * en px absolu plutôt qu'en rem pour ne plus dépendre d'un calcul.
	 */
	font-size: 14px;
	font-weight: 400;
	color: #0f0f0f;
	text-align: left;
	text-decoration: none;
	cursor: pointer;
}

/*
 * 09/09/2026, CORRECTIF 3 (points 1 et 2) — MESURÉ EN CONSOLE :
 *   1) couleur : stroke rgb(96,96,96), le gris des métadonnées — la
 *      référence rend rgb(15,15,15), le noir de la charte, MÊME MOTIF
 *      que le texte des entrées. La référence mesure `fill` (ses icônes
 *      sont dessinées pleines) mais rend visuellement au trait — même
 *      couleur, même résultat perçu ; la convention du projet reste
 *      stroke, jamais fill, seule la couleur change ici.
 *   2) taille : 16×16 mesuré contre 24×24 sur la référence — même piège
 *      que le bouton ⋮ du correctif précédent (enfant flex compressible
 *      sans protection) : `.gallia-home-card-menu-item` est lui-même
 *      `display:flex`, cette icône n'avait jamais eu besoin de
 *      `flex-shrink:0` tant qu'elle restait petite, mais rien ne
 *      l'empêchait déjà de se faire comprimer sous contrainte d'espace.
 *      Posé de façon non négociable (dimensions explicites +
 *      flex-shrink:0), avant même qu'un défaut visible se manifeste.
 */
.gallia-home-card-menu-item-icon {
	width: 24px;
	height: 24px;
	flex-shrink: 0;
	color: #0f0f0f; /* [MESURÉ le 07/09/2026] rgb(15,15,15) = #0f0f0f, remplace #606060 jamais mesuré */
}

.gallia-home-card-menu-item:hover {
	background: #f2f2f2;
}

/* L'icône de téléchargement incrustée sur la miniature est RETIRÉE
   (point 9) — .gallia-home-card-download-btn n'a plus de raison d'être,
   sa fonction est désormais .gallia-home-card-menu-item (voir
   maybeAddDownloadMenuItem() dans homepage.js). Aucune règle CSS pour ce
   nom de classe ci-dessous : elle n'est plus produite nulle part. */

/* ---------- Ligne avatar (gauche) + bloc texte (droite) ---------- */

.gallia-home-card-meta-row {
	display: flex;
	align-items: flex-start;
	gap: 12px; /* [MESURÉ le 07/09/2026, reconfirme la valeur déjà en place] */
}

.gallia-home-card-avatar {
	flex: 0 0 auto;
	/* [MESURÉ le 07/09/2026] 36×36 — remplace l'ancienne valeur 38×38,
	   jamais mesurée en direct. */
	width: 36px;
	height: 36px;
	border-radius: 999px;
	overflow: hidden;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: #e0e0e0;
	color: #555;
	font-size: 14px;
	font-weight: 700;
	line-height: 1;
	text-decoration: none;
}

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

.gallia-home-card-text {
	/* [MESURÉ, DÉRIVÉ] la référence donne 295px = 343(carte) − 36(avatar) −
	   12(gouttière) − 0 : une conséquence de l'avatar et de la gouttière,
	   jamais une largeur fixe à poser ici (elle serait fausse à la largeur
	   réelle de carte Gallia, ~330px et non 343px) — min-width:0 laisse
	   flex dériver la largeur exacte tout seul, à toute largeur de carte. */
	min-width: 0;
	flex: 1 1 auto;
	/*
	 * 08/09/2026, CORRECTIF (point 1) : plancher de hauteur pour que la
	 * carte ne rétrécisse jamais sous un titre d'une seule ligne — même
	 * principe que gallia-creator-homepage/homepage.css (.card-foot).
	 * Calcul : titre max 2 lignes (line-height 22px × 2 = 44px) + nom du
	 * créateur (line-height 20px + margin-top 2px = 22px) + vues/date
	 * (line-height 20px = 20px) = 86px. C'est un conteneur de flux normal
	 * (pas flex) : un contenu plus court que ce plancher laisse le vide en
	 * BAS de ce bloc, jamais entre le titre et la ligne suivante — c'est
	 * précisément la propriété demandée.
	 */
	min-height: 86px;
}

.gallia-home-card-creator-name {
	display: block;
	font-size: 14px; /* [MESURÉ] */
	font-weight: 400; /* [MESURÉ, rendu explicite — hérité auparavant] */
	line-height: 20px; /* [MESURÉ le 07/09/2026] */
	color: #606060;
	text-decoration: none !important; /* préexistant, HORS PÉRIMÈTRE de ce chantier — signalé, pas touché : voir le rapport */
	margin-top: 2px;
}

.gallia-home-card-creator-name:hover {
	color: #0f0f0f;
}

/* ---------- Vues + date relative ---------- */

.gallia-home-card .gallia-home-card-stats {
	margin: 0;
	font-size: 14px; /* [MESURÉ] */
	font-weight: 400; /* [MESURÉ, rendu explicite] */
	line-height: 20px; /* [MESURÉ le 07/09/2026] */
	color: #606060;
	/* Séparateur "•" (point 10) — posé côté JS (homepage.js), rien à faire ici. */
}

/* =========================================================================
 * Carte Short — NOUVELLE (07/09/2026). Remplace entièrement les 6 fausses
 * cartes de gallia-shorts-row.php (dégradés, titres et vues inventés,
 * supprimées) — vraies vidéos <= seuil du catalogue.
 * ========================================================================= */

/*
 * 08/09/2026, CORRECTIF (point 1) : gap uniforme retiré, remplacé par des
 * marges individuelles — même schéma que la carte vidéo, voir
 * .gallia-home-short-card-thumb (vignette→titre) et .gallia-home-short-
 * card-foot (le plancher titre+infos, plus bas).
 */
.gallia-home-short-card {
	display: flex;
	flex-direction: column;
}

.gallia-home-short-card-thumb {
	display: flex;
	align-items: center;
	justify-content: center;
	position: relative;
	width: 100%;
	/* [MESURÉ] 199,59 × 299,39 — réduit : 2/3 (299,39/199,59 = 1,5 exactement) */
	aspect-ratio: 199.59 / 299.39;
	border-radius: 8px; /* [MESURÉ] voir l'avertissement sur les 3 rayons en tête de fichier */
	overflow: hidden; /* le rayon est porté ICI, jamais par l'<img> — même règle que la carte vidéo */
	background: #111;
	cursor: pointer;
	margin-bottom: 8px; /* reprend l'ancien gap uniforme pour cet écart-ci, non mesuré séparément, non changé */
	/*
	 * POINT 6, DÉCISION DU FONDATEUR (08/09/2026) : les vignettes 16:9
	 * téléversées comme Shorts sont ROGNÉES sur les côtés par cet
	 * object-fit:cover (voir la règle de l'<img>, plus bas) — le texte
	 * peut en devenir illisible. GARDÉ TEL QUEL, c'est le comportement de
	 * la référence YouTube elle-même sur ce cas. NE PAS "corriger" en
	 * passant à object-fit:contain ou en changeant le ratio : ce serait un
	 * écart délibéré avec la référence, jamais demandé. La vraie
	 * correction est en amont, côté production de contenu : Gallia Studio
	 * devra un jour avertir un créateur qui téléverse une vidéo
	 * HORIZONTALE de moins de 60 secondes — chantier futur, pas construit
	 * ici.
	 */
}

.gallia-home-short-card-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	border-radius: 0;
}

.gallia-home-short-card-thumb:hover img {
	opacity: 0.85;
}

/* Pas de badge de durée sur un Short — cohérent avec la décision déjà
   prise sur la page créateur (audit Y4.9, gallia-creator-homepage), non
   contredite par cette référence-ci. */

.gallia-home-short-card-play {
	position: absolute;
	color: #fff;
	opacity: 0.9;
	pointer-events: none;
}

/* 08/09/2026, CORRECTIF (point 1) : même cause, même correctif que
   .gallia-home-card-title-row — voir son commentaire pour le détail. */
.gallia-home-short-card-title-row {
	position: relative;
}

.gallia-home-short-card-title {
	margin: 0;
	padding-right: 48px; /* réserve la place du bouton ⋮, voir .gallia-home-card-title */
	font-size: 16px; /* [MESURÉ] */
	font-weight: 500; /* [MESURÉ] — pas la même tension que la carte vidéo : aucune valeur 700 n'a jamais été posée ici, cette carte est neuve */
	/* [NON MESURÉ] line-height absent de l'audit pour cette carte — repris
	   de la carte vidéo au même corps (16px), pour un calcul de plancher
	   fiable (voir .gallia-home-short-card-foot). */
	line-height: 22px;
	color: var(--gallia-black, #0f0f0f);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/* Même motif Astra, même correctif que .gallia-home-card-title — voir son
   commentaire pour le détail complet du calcul de spécificité. */
.gallia-home-short-grid .gallia-home-short-card .gallia-home-short-card-title,
.gallia-home-short-grid .gallia-home-short-card .gallia-home-short-card-title:hover,
.gallia-home-short-grid .gallia-home-short-card .gallia-home-short-card-title:focus,
.gallia-home-short-grid .gallia-home-short-card .gallia-home-short-card-title:visited,
.gallia-home-short-grid .gallia-home-short-card .gallia-home-short-card-title:active {
	text-decoration: none;
}

.gallia-home-short-card-stats {
	/* [DÉFAUT, non redonné par l'audit pour cette carte — voir homepage.js,
	   buildShortCard()] même typographie que la ligne vues de la carte
	   vidéo, par cohérence. */
	/*
	 * 09/09/2026, CORRECTIF 2 (défaut 2, cause 2) — MESURÉ EN CONSOLE :
	 * 8px ici (hérité du 08/09/2026, "reprend l'ancien gap uniforme") était
	 * FAUX — 2px est la valeur du projet pour cet écart précis, mesurée en
	 * direct sur la référence et déjà appliquée ailleurs (carte vidéo de
	 * cette même page : .gallia-home-card-creator-name, margin-top:2px ;
	 * carte vidéo ET Short de la page créateur, homepage.css). Le
	 * plancher de hauteur du pied (.gallia-home-short-card-foot,
	 * min-height:72px) N'EST PAS recalculé : il reste un PLANCHER, jamais
	 * un plafond — un contenu plus court que lui (66px au maximum avec ce
	 * correctif : 44 titre + 2 + 20 vues) laisse simplement un peu plus de
	 * vide en bas qu'avant, aucune carte ne change de hauteur totale.
	 */
	margin-top: 2px;
	margin-bottom: 0;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px; /* [NON MESURÉ] cohérence avec la carte vidéo, voir le commentaire de .gallia-home-short-card-title */
	color: #606060;
}

/*
 * 08/09/2026, CORRECTIF (point 1) — même rôle que .gallia-home-card-text :
 * plancher de hauteur pour que la carte Short ne rétrécisse jamais sous un
 * titre d'une seule ligne. Calcul D'ORIGINE (08/09/2026) : titre max 2
 * lignes (22px × 2 = 44px) + vues (margin-top 8px + line-height 20px =
 * 28px) = 72px.
 * 09/09/2026, CORRECTIF 2 (défaut 2) : margin-top des vues corrigé à 2px
 * (voir .gallia-home-short-card-stats) — le maximum réel est donc
 * désormais 44 + 2 + 20 = 66px, sous ce plancher de 72px. GARDÉ TEL QUEL,
 * consigne explicite : min-height reste un PLANCHER, pas un plafond, un
 * écart de 6px sous lui est sans effet (aucune carte ne rétrécit ni ne
 * grandit) — inutile de le resserrer.
 */
.gallia-home-short-card-foot {
	min-height: 72px;
}

/* Menu ⋮ de la carte Short : mêmes classes, même 40×40/radius 20px que la
   carte vidéo (.gallia-home-card-menu-*, réutilisées telles quelles). */

/* =========================================================================
 * Vidéo à la une — mêmes dimensions que la page créateur (voir
 * gallia-creator-homepage/homepage.css, .gallia-creator-homepage-featured-*),
 * texte de droite PLUS GROS [NON MESURÉ, "plus gros" n'est pas chiffré —
 * valeurs choisies par défaut, signalées dans le rapport].
 * ========================================================================= */

.gallia-home-featured-body {
	display: flex;
	gap: 24px;
}

.gallia-home-featured-player {
	flex: 0 0 auto;
	width: 55%;
	max-width: 640px;
	aspect-ratio: 16 / 9;
	background: #111;
	border-radius: 8px;
	overflow: hidden;
}

.gallia-home-featured-player iframe {
	width: 100%;
	height: 100%;
	border: 0;
	display: block;
}

.gallia-home-featured-meta {
	flex: 1 1 auto;
	min-width: 0;
}

.gallia-home-featured-status {
	font-size: 16px; /* [DÉFAUT] page créateur : 14px — "plus gros" demandé */
	color: #606060;
	margin: 0;
}

.gallia-home-featured-title {
	font-size: 22px; /* [DÉFAUT] page créateur : 18px */
	font-weight: 700;
	color: #0f0f0f;
	margin: 0 0 8px;
	line-height: 1.3;
}

.gallia-home-featured-stats {
	font-size: 16px; /* [DÉFAUT] page créateur : 14px */
	color: #606060;
	margin: 0 0 12px;
}

.gallia-home-featured-description {
	font-size: 16px; /* [DÉFAUT] page créateur : 14px */
	color: #0f0f0f;
	line-height: 1.5;
	margin: 0;
	white-space: pre-line;
}

.gallia-home-featured-description:not(.is-expanded) {
	display: -webkit-box;
	-webkit-line-clamp: 4;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.gallia-home-featured-more {
	float: right;
	margin-left: 4px;
	background: none;
	border: none;
	padding: 0;
	font-size: 14px; /* [DÉFAUT] page créateur : 13px */
	font-weight: 700;
	color: #606060;
	text-decoration: none;
	cursor: pointer;
	white-space: nowrap;
}

@media (max-width: 780px) {
	.gallia-home-featured-body {
		flex-direction: column;
	}
	.gallia-home-featured-player {
		width: 100%;
		max-width: 100%;
	}
}

/* =========================================================================
 * Top 3 — filtre à 3 positions, état vide.
 * ========================================================================= */

.gallia-home-top3-filter {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
}

.gallia-home-top3-filter-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 36px;
	padding: 0 16px;
	border-radius: 4px; /* charte Gallia, jamais une pilule */
	border: 1px solid var(--gallia-border, #e4e4e4);
	background: #fff;
	color: #606060;
	font-size: 14px;
	font-weight: 500;
	cursor: pointer;
}

.gallia-home-top3-filter-btn.is-active {
	background: var(--gallia-black, #0f0f0f);
	border-color: var(--gallia-black, #0f0f0f);
	color: #fff;
}

.gallia-home-top3-empty {
	font-size: 14px;
	color: #606060;
	margin: 16px 0 0;
}

/* =========================================================================
 * Toast "Bientôt disponible" (point 4, 08/09/2026) — voir showComingSoon
 * Toast() dans homepage.js. Construit ICI faute d'avoir pu localiser un
 * mécanisme existant sur le site (aucun accès pour chercher au-delà des 4
 * fichiers de ce lot) — signalé dans le rapport, à remplacer si un
 * mécanisme partagé existe déjà ailleurs sur le projet.
 * ========================================================================= */

.gallia-home-toast {
	position: fixed;
	left: 50%;
	bottom: 24px;
	transform: translateX(-50%) translateY(8px);
	background: var(--gallia-black, #0f0f0f);
	color: #fff;
	font-size: 14px;
	font-weight: 500;
	padding: 10px 20px;
	border-radius: 999px;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.2s ease-in-out, transform 0.2s ease-in-out;
	z-index: 1000;
}

.gallia-home-toast.is-visible {
	opacity: 1;
	transform: translateX(-50%) translateY(0);
}

/* =========================================================================
 * Filet de sécurité générique — motif Astra 0-2-1, neuvième famille
 * d'occurrence sur ce projet (7 sur la page créateur, 2 ici) : voir la
 * proposition de règle unique soumise dans le rapport de chantier, non
 * appliquée ici tant qu'elle n'est pas tranchée.
 * ========================================================================= */
