/* 19/10 (patron : « photos beaucoup trop grandes, tout est l'un sur l'autre, un empilement ; ce n'est pas pensé de façon architecturale ;
   podcasts, vidéos, analyses vidéo, signaux doivent être bien proportionnés ; les modules doivent s'imbriquer ») — FIL EN GRILLE.
   Grand écran : deux colonnes qui se comblent (grid-auto-flow: dense) ; idées, photos, signaux, podcasts sur une colonne ; analyses vidéo,
   SightCasts et carrousels de vidéos sur toute la largeur. Visuels à proportions fixes (plus de photo de 500 px de haut). Téléphone : une colonne. */
.fx-feed{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:16px!important;align-items:start}   /* !important : app.css (main[data-large] .sg-center .feed) imposait des colonnes de 500 px → une seule */
.fx-feed>*{margin:0!important;min-width:0}
@media (min-width:1100px){
  .fx-feed.fx-t-tout,.fx-feed.fx-t-idees,.fx-feed.fx-t-graphiques,.fx-feed.fx-t-signaux,.fx-feed.fx-t-podcasts{grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-auto-flow:row dense}
  /* 21/10 soir (patron : « mieux proportionner ») : TOUTES les publications ont la même largeur (une colonne) — les bandes vidéo, analyses vidéo et
     SightCasts pleine largeur cassaient les colonnes (trous, cartes étirées) ; seuls le panneau du jour et la fin du fil prennent toute la largeur */
  .fx-feed>.fx-inter,.fx-feed>.fi-band,.fx-feed>.fi-ag,.fx-feed>.fx-more,.fx-feed>.fx-vide{grid-column:1/-1}
  .fx-feed .fx-strip .fx-vt.w{width:216px}
}
/* 21/10 (patron : « des trous dans le fil ») : maçonnerie (static/fil-masonry.js) — rangées de 2 px, chaque carte à SA hauteur, creux comblés */
.fx-feed.fx-mas-on{grid-auto-rows:2px;row-gap:0!important;column-gap:16px!important;grid-auto-flow:row dense;align-items:start}
.fx-feed.fx-mas-on>*{height:auto!important;align-self:start}
/* cartes : même hauteur de bandeau, texte limité, pied aligné en bas */
.fx-feed>.card,.fx-feed>article{display:flex;flex-direction:column;height:100%}
.fx-feed .fx-bd{display:flex;flex-direction:column;gap:6px;flex:1}
.fx-feed .fx-bd>:last-child{margin-top:auto}
.fx-feed .fx-tx{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.fx-feed .fx-ttl{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* photos : cadre 4:3 recadré (clic = image entière dans la visionneuse) */
.fx-feed .fx-photo .fx-img img,.fx-feed .fx-pt img{width:100%;height:auto;aspect-ratio:4/3;max-height:none;object-fit:cover}
.fx-feed .fx-mgrid{max-height:340px;overflow:hidden}
/* analyses (graphiques) : 16:10, le graphique entier visible */
.fx-feed .fx-chart img{width:100%;aspect-ratio:16/10;max-height:none;object-fit:contain;background:#05080f}
/* analyses vidéo et SightCasts : lecteur 16:9 plafonné, jamais plus haut que la moitié de l'écran */
.fx-feed .fx-player{max-height:52vh}.fx-feed .fx-player video{width:100%;height:100%;object-fit:cover}
.fx-feed .fx-player.vert{height:min(52vh,460px)}
/* idées simples (carte du serveur) : capture limitée */
.fx-feed .shot img,.feed .shot img{width:100%;aspect-ratio:16/10;max-height:none;object-fit:cover;border-radius:14px}
/* podcast : couverture + lecteur sur une ligne, compact */
.fx-feed .fx-pod audio{height:36px}
/* signaux : la carte prend la largeur de sa colonne */
.fx-feed .fx-sgn .sgn-w,.fx-feed .fx-sgn>*{width:100%;max-width:100%;margin:0}
/* panneau du jour (calendrier + actualité) : hauteur maîtrisée, défilement interne */
.fj{align-items:start}.fj-evs{max-height:260px}.fj-act{max-height:330px;overflow:auto;padding-right:4px}
@media (max-width:760px){.fj{grid-template-columns:minmax(0,1fr)}.fj-evs{max-height:220px}.fj-act{max-height:260px}}
/* profils : mêmes proportions pour les photos et captures des publications */
.pp .feed .shot img,.profil .feed .shot img,.feed .card .shot img{aspect-ratio:16/10;object-fit:cover;width:100%;max-height:none}
/* podcast : grande pochette carrée à gauche, titre + durée + lecteur à droite, description dessous (plus de vide au milieu de la carte) */
.fx-feed .fx-pod>div[style*="flex-wrap"]{display:grid!important;grid-template-columns:minmax(0,42%) minmax(0,1fr);gap:14px!important;align-items:center!important;padding:10px 14px 4px!important}
.fx-feed .fx-pod>div[style*="flex-wrap"]>img{width:100%!important;height:auto!important;aspect-ratio:1;border-radius:18px!important}
.fx-feed .fx-pod>div[style*="flex-wrap"]>div{min-width:0!important}
.fx-feed .fx-pod .fx-bd>:last-child{margin-top:0}
.fx-feed .fx-pod .fx-tx{-webkit-line-clamp:5}
/* 21/10 (patron : « vidéos de traders : préparation, analyse ou social ? » + « l'en-tête est mal proportionné ») — un carrousel = un type,
   en-tête : pastille d'icône, titre + sous-titre, bouton « Tout voir » ; vignettes 16:9 entières (plus recadrées en carré), badge du type */
.fx-strip .fx-strip-hd{display:flex;align-items:center;gap:12px;padding:2px 16px 12px}
.fx-sh-ic{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-size:18px;background:rgba(247,201,72,.12);border:1px solid rgba(247,201,72,.35)}
.fx-sh-t{display:flex;flex-direction:column;min-width:0;margin-right:auto;line-height:1.2}
.fx-sh-t b{font-size:16.5px!important;color:#fff}.fx-sh-t small{font-size:12.5px;color:#8f9ab0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fx-sh-all{flex:none;padding:6px 14px;border-radius:999px;border:1px solid rgba(247,201,72,.4);color:#f7c948!important;font:700 12.5px system-ui;text-decoration:none!important}
.fx-sh-all:hover{background:rgba(247,201,72,.1)}
.fx-strip[data-type=tuto] .fx-sh-ic{background:rgba(43,227,169,.12);border-color:rgba(43,227,169,.4)}
.fx-strip[data-type=social] .fx-sh-ic{background:rgba(124,77,255,.14);border-color:rgba(124,77,255,.45)}
.fx-vt.w{width:268px;aspect-ratio:auto;display:flex;flex-direction:column;background:rgba(255,255,255,.02);text-decoration:none!important;color:inherit}
.fx-vt.w .fx-vt-im{position:relative;display:block;aspect-ratio:16/9;overflow:hidden;background:#05080f}
.fx-vt.w .fx-vt-im img,.fx-vt.w .fx-vt-im video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.fx-vt.w .fx-vt-d{top:auto;bottom:7px;right:8px}
.fx-vt-pl{position:absolute;left:50%;top:50%;width:40px;height:40px;margin:-20px 0 0 -20px;border-radius:50%;display:grid;place-items:center;font-size:15px;color:#1a1200;background:rgba(247,201,72,.92);opacity:0;transition:opacity .2s}
.fx-vt.w:hover .fx-vt-pl{opacity:1}
.fx-vt-cap{display:flex;flex-direction:column;gap:3px;padding:9px 11px 11px;line-height:1.25}
.fx-vt-cap b{font-size:13px;color:#fff;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.fx-vt-cap em{font-style:normal;font-size:11.5px;color:#8f9ab0}
.fx-vt-type{position:absolute;left:8px;top:8px;z-index:2;padding:2px 8px;border-radius:999px;font:900 10px system-ui;letter-spacing:.08em;color:#1a1200;background:#f7c948}
.fx-vt-type.tuto{background:#2be3a9;color:#032118}.fx-vt-type.social{background:#7c4dff;color:#fff}
@media (max-width:760px){.fx-vt.w{width:220px}.fx-sh-t small{display:none}}
