/* freeetv — thème cosmique (maquette v2 de Lili, implémentée par Michelangelo).
   Source pixel : ~/Downloads/freeetv-preview/index.html. Tokens + design d'origine,
   Terre NASA servie en local (assets/earth-web.jpg). */

:root{
  color-scheme: dark;
  --space:#05060e; --space-2:#0a0e1f; --panel:#0d1226; --panel-2:#111838;
  --ink:#eef2ff; --soft:#c3c9e8; --muted:#828bb4; --faint:#5a6390;
  --blue:#2e7bff; --blue-glow:#5ea0ff; --magenta:#e8368f; --magenta-glow:#ff5fab;
  --line:rgba(255,255,255,.09); --line-2:rgba(255,255,255,.14);
  --live:#31d07a;
  /* --amb = teinte d'AMBIANCE globale pilotée par le switcher (fond cosmique + globe).
     Défaut = bleu cosmique actuel. Le switcher la change → tout le fond prend la teinte. */
  --amb:#2e7bff;
  --grad-band:linear-gradient(90deg,var(--magenta),#7b3ff2 45%,var(--blue));
}
*{box-sizing:border-box}
/* overscroll-behavior:none → tue le rebond élastique / pull-to-refresh mobile qui
   ouvrait un « vide infini » en haut lors d'un swipe horizontal sur une rangée
   (retour terrain Stéphane). Effet négligeable desktop. */
html{ -webkit-text-size-adjust:100%; overscroll-behavior:none }
body.freeetv{
  margin:0; background:var(--space); color:var(--ink);
  font-family:"Helvetica Neue",-apple-system,"Segoe UI",system-ui,sans-serif;
  line-height:1.6; -webkit-font-smoothing:antialiased; overflow-x:hidden; overscroll-behavior:none; text-align:left;
  /* Fond cosmique de BASE inchangé (référence bleue = état actuel). La teinte
     d'ambiance vient du globe (.45) + d'un VOILE séparé (::before, 10/5 %) — RÉGLAGE
     FINAL validé Lili sur les planches Sophia (ni repeint ni effacé). */
  background-image:
    radial-gradient(1200px 700px at 88% -8%, rgba(46,123,255,.28), transparent 55%),
    radial-gradient(900px 600px at 100% 8%, rgba(46,123,255,.16), transparent 60%),
    radial-gradient(1000px 800px at 6% 108%, rgba(232,54,143,.10), transparent 55%);
}
/* Voile d'AMBIANCE global (switcher) : overlay teinté --amb, 10 % nuit / 5 % jour. */
body.freeetv::before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(125% 95% at 82% -6%, color-mix(in srgb, var(--amb) 72%, transparent), transparent 62%);
  opacity:.10;transition:opacity .5s ease, background .5s ease}
:root[data-theme="day"] body.freeetv::before{opacity:.05}
.freeetv .mono{font-family:ui-monospace,"SF Mono",Menlo,monospace}
.freeetv .wrap{width:min(1140px,92vw);margin-inline:auto}
.freeetv a{color:inherit;text-decoration:none}
.freeetv .screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* starfield */
.stars{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.7}
.stars::before,.stars::after{content:"";position:absolute;inset:0;
  background-image:
    radial-gradient(1.4px 1.4px at 20% 30%, #fff, transparent),
    radial-gradient(1.2px 1.2px at 40% 70%, #cfe0ff, transparent),
    radial-gradient(1px 1px at 65% 20%, #fff, transparent),
    radial-gradient(1.3px 1.3px at 80% 55%, #dbe6ff, transparent),
    radial-gradient(1px 1px at 12% 80%, #fff, transparent),
    radial-gradient(1.1px 1.1px at 55% 88%, #cfe0ff, transparent),
    radial-gradient(1px 1px at 92% 78%, #fff, transparent);
  background-repeat:no-repeat;opacity:.6}
.stars::after{transform:scale(1.6) rotate(8deg);opacity:.3}

/* Terre PARTIELLE (image NASA locale) : grande, débordant hors cadre en haut à droite,
   limbe fondu dans l'espace (pas de cercle net ni d'anneau — demande Stéphane). */
.globe{position:absolute;top:-320px;right:-380px;width:900px;height:900px;border-radius:50%;z-index:0;
  background:#060f2e url('earth-web.jpg') center/cover;
  box-shadow: inset -60px -50px 170px rgba(0,0,0,.88), inset 30px 24px 90px rgba(120,180,255,.08);
  filter:saturate(1.02) brightness(.5);opacity:.9;
  -webkit-mask-image:radial-gradient(circle at 58% 58%, #000 50%, rgba(0,0,0,.45) 70%, transparent 84%);
  mask-image:radial-gradient(circle at 58% 58%, #000 50%, rgba(0,0,0,.45) 70%, transparent 84%)}
/* Teinte d'ambiance du globe : voile --amb DOUX (soft-light) — la Terre reste
   reconnaissable, « baignée » pas repeinte (cadre DA Lili). Nuit .45 / jour .28. */
.globe::after{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;
  background:var(--amb);mix-blend-mode:soft-light;opacity:.45;transition:background .5s ease, opacity .5s ease;
  -webkit-mask-image:radial-gradient(circle at 58% 58%, #000 50%, rgba(0,0,0,.45) 70%, transparent 84%);
  mask-image:radial-gradient(circle at 58% 58%, #000 50%, rgba(0,0,0,.45) 70%, transparent 84%)}
:root[data-theme="day"] .globe::after{opacity:.28} /* jour ÷~2 : la Terre reste baignée, pas repeinte (Lili) */
@media(max-width:720px){.globe{width:520px;height:520px;top:-160px;right:-240px}}

/* top bar */
header.top{position:relative;z-index:5;display:flex;align-items:center;justify-content:space-between;
  gap:20px;padding:20px 0;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:12px}
/* Logo « FREEE TV /// » blanc transparent, posé direct sur l'en-tête sombre. */
.brand-link{display:inline-flex;align-items:center}
.brand-logo{height:52px;width:auto;display:block;transition:transform .35s cubic-bezier(.2,.8,.3,1),filter .35s ease} /* 42->52 phase 1 logo (gate Lili 12/07) */
.brand-link:hover .brand-logo{transform:translateY(-1px) scale(1.03);filter:saturate(1.4) brightness(1.07)}
@media(prefers-reduced-motion:reduce){.brand-link:hover .brand-logo{transform:none}}
/* LOGO PHASE 2 (Stéphane 12-13/07) : SVG désormais INLINE dans header.php pour animer
   les barres une à une. On NEUTRALISE l'ancien content:url(logo.svg) de la ph.1 — sur
   un SVG inline, content:url remplacerait tout le graphe par l'image externe (barres
   plus animables). Le mode jour (invert+hue-rotate plus bas) et les tailles restent. */
.brand-logo{content:normal}
@media(max-width:520px){.brand-logo{height:36px;max-width:52vw;object-fit:contain;object-position:left center}}

/* ═══ LOGO — BARRES ANIMÉES AU HOVER (VU-mètre / oscilloscope) ══════════════════════
   Seules les .ftv-bar bougent, le wordmark jamais. freeetv.js tire au mouseenter une
   variante ftv-eq-{1..4} au hasard (classe posée sur .brand-logo), retirée à la fin
   (animationend) ou au mouseleave → hover suivant = autre variante. Transforms sur les
   barres (transform-origin bas = ancrées au sol) → n'entrent pas en conflit avec le
   filter du mode jour ni le hover ph.1 (scale/saturate) portés par .brand-logo. SUBTIL. */
.brand-logo .ftv-bar{transform-box:fill-box;transform-origin:50% 100%;will-change:transform}
.brand-logo.ftv-anim .ftv-bar{animation-duration:.82s;animation-timing-function:cubic-bezier(.36,.62,.34,1);animation-fill-mode:both}

/* ① Égaliseur — vague de scaleY gauche→droite (stagger 55ms) */
.brand-logo.ftv-eq-1 .ftv-bar{animation-name:ftvEq;animation-delay:calc(var(--i,0)*55ms)}
@keyframes ftvEq{0%,100%{transform:scaleY(1)}45%{transform:scaleY(1.22)}}

/* ② Oscilloscope — translateY sinusoïdal, paires ↑ / impaires ↓ (onde qui traverse) */
.brand-logo.ftv-eq-2 .ftv-bar{animation-name:ftvOsc;animation-delay:calc(var(--i,0)*48ms)}
.brand-logo.ftv-eq-2 .ftv-bar:nth-child(odd){--osc:-2px}
.brand-logo.ftv-eq-2 .ftv-bar:nth-child(even){--osc:2px}
@keyframes ftvOsc{0%,100%{transform:translateY(0)}50%{transform:translateY(var(--osc,-2px))}}

/* ③ Ripple centre — les barres du milieu culminent d'abord, les bords suivent (symétrique) */
.brand-logo.ftv-eq-3 .ftv-bar{animation-name:ftvRip}
.brand-logo.ftv-eq-3 .ftv-bar:nth-child(3),.brand-logo.ftv-eq-3 .ftv-bar:nth-child(4){animation-delay:0ms}
.brand-logo.ftv-eq-3 .ftv-bar:nth-child(2),.brand-logo.ftv-eq-3 .ftv-bar:nth-child(5){animation-delay:70ms}
.brand-logo.ftv-eq-3 .ftv-bar:nth-child(1),.brand-logo.ftv-eq-3 .ftv-bar:nth-child(6){animation-delay:140ms}
@keyframes ftvRip{0%,100%{transform:scaleY(1)}45%{transform:scaleY(1.18)}}

/* ④ Cascade — un seul rebond translateY -3px, stagger 45ms gauche→droite */
.brand-logo.ftv-eq-4 .ftv-bar{animation-name:ftvCasc;animation-delay:calc(var(--i,0)*45ms)}
@keyframes ftvCasc{0%,100%{transform:translateY(0)}40%{transform:translateY(-3px)}}

/* ⑤ PIANO — les barres s'enfoncent comme des touches, de gauche à droite (subtil, .6s) */
.brand-logo.ftv-eq-5 .ftv-bar{animation-name:ftvPiano;animation-delay:calc(var(--i,0)*80ms);animation-duration:.6s}
@keyframes ftvPiano{0%,100%{transform:translateY(0)}40%{transform:translateY(5px) scaleY(.92)}}
/* ⑥ DOMINO — basculement en chaîne (pivot au pied-droit) puis retour ; origine override */
.brand-logo.ftv-eq-6 .ftv-bar{animation-name:ftvDomino;animation-delay:calc(var(--i,0)*85ms);transform-origin:100% 100%}
@keyframes ftvDomino{0%{transform:rotate(0)}35%{transform:rotate(11deg)}60%{transform:rotate(-3deg)}100%{transform:rotate(0)}}
/* ⑦ BARRE TIMIDE — la magenta (1re barre) se glisse derrière ses voisines, jette un œil, revient */
.brand-logo.ftv-eq-7 .ftv-bar:nth-child(1){animation-name:ftvShy;animation-duration:1.1s;transform-origin:0% 100%}
@keyframes ftvShy{0%,100%{transform:translateX(0) scaleX(1)}28%{transform:translateX(34px) scaleX(.45)}52%{transform:translateX(34px) scaleX(.45)}66%{transform:translateX(20px) scaleX(.7)}80%{transform:translateX(34px) scaleX(.45)}}

/* Accessibilité : aucune animation si l'utilisateur réduit le mouvement (le JS ne pose
   déjà pas la classe, ceci est la ceinture-bretelles côté CSS). */
@media(prefers-reduced-motion:reduce){.brand-logo.ftv-anim .ftv-bar{animation:none!important}}
.logo{font-weight:800;font-size:1.5rem;letter-spacing:.06em;display:inline-flex;align-items:center;gap:2px}
.logo .free{color:var(--ink)} .logo .tv{color:var(--ink);font-weight:900}
.logo .e3{font-weight:900;background:linear-gradient(135deg,var(--magenta-glow),var(--blue-glow));-webkit-background-clip:text;background-clip:text;color:transparent}
.logo .dotcom{font-size:.6em;font-weight:600;color:var(--muted);letter-spacing:0;margin-left:1px;align-self:flex-end;padding-bottom:.2em}
.logo .bars{display:inline-flex;gap:3px;margin-left:8px;align-self:center}
.logo .bars i{width:4px;height:20px;background:var(--magenta);transform:skewX(-20deg);display:block}
.logo .bars i:nth-child(2){background:#7b3ff2} .logo .bars i:nth-child(3){background:var(--blue)}
/* align-items:center : sans lui, les <a> nus s'étirent (stretch) tandis que le span
   .nav-cat (wrapper du dropdown) suit sa baseline → « CATEGORY » flottait quelques px
   plus haut que les autres items (retour Stéphane 12/07, diag Sahra). */
nav.main{display:flex;align-items:center;gap:26px;font-size:.92rem;color:var(--soft);flex-wrap:wrap}
nav.main a{position:relative;padding:4px 0;text-transform:uppercase;letter-spacing:.06em;font-size:.86rem}
nav.main a.active,nav.main .current-menu-item a{color:#fff}
nav.main a.active::after,nav.main .current-menu-item a::after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:2px;background:var(--grad-band)}
nav.main a:hover{color:#fff}
/* CATEGORY : dropdown desktop au survol/focus (spec Lili) — même gabarit visuel que
   la colonne pays. 0 en ligne = grisé mais présent (honnêteté). Mobile : masqué,
   le lien /tv/ fait la porte des filtres. Sans JS : lien /tv/ aussi. */
.nav-cat{position:relative;display:inline-flex;align-items:center}
/* Ouverture/fermeture par VISIBILITY RETARDÉE (pas display) : à la sortie du survol,
   le panneau reste 220 ms → la souris traverse n'importe quel trou géométrique sans
   fermeture (bug prod 12/07 : l'item est petit dans une barre haute, le panneau
   tombait ~20px plus bas et le pont de 10px laissait une zone morte — diag Sahra). */
.nav-cat-pop{position:absolute;top:calc(100% + 6px);left:50%;z-index:65;
  min-width:220px;max-height:min(60vh,420px);overflow-y:auto;scrollbar-width:thin;
  background:var(--panel);border:1px solid var(--line-2);border-radius:12px;padding:6px;
  box-shadow:0 20px 50px -20px rgba(0,0,0,.6);
  visibility:hidden;opacity:0;transform:translateX(-50%) translateY(-4px);
  transition:opacity .14s ease,transform .14s ease,visibility 0s linear .22s}
.nav-cat:hover .nav-cat-pop,.nav-cat:focus-within .nav-cat-pop{
  visibility:visible;opacity:1;transform:translateX(-50%) translateY(0);transition-delay:0s}
@media(prefers-reduced-motion:reduce){.nav-cat-pop{transform:translateX(-50%);transition:opacity 0s,visibility 0s linear .22s}
  .nav-cat:hover .nav-cat-pop,.nav-cat:focus-within .nav-cat-pop{transform:translateX(-50%)}}
/* Pont anti-fermeture en COULOIR central : couvre tout le trou vertical (24px) sans
   recouvrir les items voisins de la nav (WORLD…) quand le panneau est ouvert. */
.nav-cat-pop::before{content:"";position:absolute;top:-24px;height:24px;left:50%;transform:translateX(-50%);width:140px}
/* nav.main a (0,1,2) impose uppercase → on re-précise avec la même force pour
   retrouver la casse normale (gabarit colonne pays, spec Lili). */
nav.main .nav-cat-pop a{display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:8px 11px;border-radius:8px;color:var(--soft);font-size:.85rem;text-transform:none;letter-spacing:0}
nav.main .nav-cat-pop a:hover{background:rgba(46,123,255,.12);color:var(--ink)}
.nav-cat-pop a em{font-style:normal;font-size:.74rem;color:var(--muted);background:rgba(46,123,255,.10);
  border-radius:999px;padding:2px 8px;min-width:26px;text-align:center}
.nav-cat-pop a.off{opacity:.45}
.nav-cat-pop a.off em{background:rgba(255,255,255,.05)}
/* MULTI LIVE « qui donne envie » (cadre Lili) : les 4 carrés du glyphe 2×2 s'allument
   SÉQUENTIELLEMENT au survol/focus (150 ms d'écart, ≤600 ms total) sur l'accent —
   l'envie naît du geste, pas du bruit (zéro animation permanente). */
.nav-ml{display:inline-flex;align-items:center;gap:7px}
.nav-ml-glyph .q{fill:currentColor;opacity:.5;transition:fill .18s ease,opacity .18s ease}
.nav-ml:hover .q,.nav-ml:focus-visible .q{fill:var(--blue-glow);opacity:1}
.nav-ml:hover .q1,.nav-ml:focus-visible .q1{transition-delay:0s}
.nav-ml:hover .q2,.nav-ml:focus-visible .q2{transition-delay:.15s}
.nav-ml:hover .q3,.nav-ml:focus-visible .q3{transition-delay:.3s}
.nav-ml:hover .q4,.nav-ml:focus-visible .q4{transition-delay:.45s}
@media(prefers-reduced-motion:reduce){.nav-ml .q{transition:none!important}}
.nav-ml-dot{width:6px;height:6px;border-radius:50%;background:var(--live,#31d07a);flex:none}
@media(max-width:768px){.nav-cat-pop{display:none!important}} /* mobile : lien direct /tv/ */
.top-right{display:flex;align-items:center;gap:16px;position:relative}
/* Recherche PERMANENTE dans le header (toutes pages, moteur prédictif REST partagé).
   Desktop : champ visible ; la loupe-toggle ne sert qu'en mobile. */
.hdr-search{position:relative;display:flex;align-items:center}
.hdr-search-toggle{display:none}
.hdr-search-field{position:relative;display:flex;align-items:center}
.hdr-search-ico{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
.hdr-search-in{width:190px;box-sizing:border-box;padding:9px 12px 9px 34px;border-radius:10px;
  border:1px solid var(--line-2);background:rgba(255,255,255,.04);color:var(--ink);font-size:.86rem;transition:width .2s,border-color .2s,box-shadow .2s}
.hdr-search-in::placeholder{color:#66739a}
.hdr-search-in:focus{outline:none;border-color:var(--blue-glow);box-shadow:0 0 0 3px rgba(46,123,255,.18);width:230px}
.hdr-search .cl-search-pop{position:absolute;top:calc(100% + 8px);right:0;left:auto;width:290px;max-width:78vw;z-index:60;
  background:var(--panel);border:1px solid var(--line-2);border-radius:12px;padding:6px;box-shadow:0 20px 50px -20px rgba(0,0,0,.6)}
.hdr-search .cl-search-pop[hidden]{display:none}
/* Le reset du thème PARENT (`input[type=search]`, spécificité 0,1,1) écrasait le
   padding-left de nos classes (0,1,0) → « TV Search… » chevauchait la loupe de 10px
   (bug Stéphane, diagnostic+patch Simon). Sélecteurs 0,2,1 : gagnent sans !important. */
input[type="search"].hdr-search-in{padding:9px 12px 9px 34px}
input[type="search"].cl-search-in{padding:13px 16px 13px 42px}
[data-theme="day"] .hdr-search-in{background:rgba(0,0,0,.04)}
.theme-controls{display:flex;align-items:center;gap:2px}
.theme-controls .theme-toggle{order:2}
/* Switcher de couleur d'accent (repris de SwitchMyBar) */
.swatches{display:flex;align-items:center;gap:4px}
.swatches .dot{width:18px;height:18px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;margin:1px;
  transition:transform .15s,border-color .15s}
.swatches .dot:hover{transform:scale(1.18)}
.swatches .dot[aria-pressed="true"]{border-color:#fff;transform:scale(1.1)}
.swatches .dot:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(255,255,255,.28)}
/* RANGÉE DE CONTRÔLE RESSERRÉE (Stéphane) : le thème hello-elementor pose margin:20px sur
   TOUS les boutons ([type="button"],[type="submit"],button — style.css) → les contrôles du
   header (lune, globe, watching, agencement/luminosité watch) étaient trop espacés. On
   neutralise ce margin PAR CLASSE (spéc 0,2,0 > 0,1,0 du thème, exactement comme le fix
   .swatches .dot ci-dessus qui bat déjà ce même margin). Scopé aux clusters de contrôle →
   ZÉRO effet de bord ailleurs (cartes/badges/popover intacts). Les gaps (2px/4px) espacent.
   .swatches .dot n'est PAS listé → garde son margin:1px voulu. Piège récurrent (3e occurrence)
   → template : pour un futur bouton de contrôle, ajouter sa classe ici. */
.theme-controls .theme-toggle,
.theme-controls .ftv-pop-wrap,
.theme-controls .ftv-place-btn,
.lang .globe-btn,
.lang .ftv-livenow{margin:0}
.lang{display:flex;align-items:center;gap:7px;font-size:.82rem;font-weight:600;color:var(--muted)}
.lang a{color:var(--muted)} .lang a.active,.lang b{color:#fff} .lang .sep{opacity:.4}
.globe-btn{width:30px;height:30px;border:1px solid var(--line-2);border-radius:50%;display:grid;place-items:center;
  color:var(--soft);background:none;cursor:pointer;padding:0}
.globe-btn:hover{border-color:var(--blue-glow);color:#fff}

/* langpop (porté de switchmybar : liens translate.goog, zéro script Google) */
.langpop{position:absolute;top:calc(100% + 10px);right:0;z-index:60;width:min(320px,86vw);
  background:var(--panel);border:1px solid var(--line-2);border-radius:14px;padding:14px;
  box-shadow:0 30px 60px -24px rgba(0,0,0,.7)}
.langpop[hidden]{display:none}
.langpop-note{font-size:.72rem;color:var(--muted);margin:0 0 10px}
.langpop ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:2px}
.langpop a{display:block;padding:7px 9px;border-radius:8px;font-size:.86rem;color:var(--soft)}
.langpop a:hover{background:rgba(255,255,255,.06);color:#fff}

/* hero */
.hero{position:relative;z-index:2;padding:54px 0 30px;max-width:680px}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--blue-glow);font-weight:700;margin-bottom:22px}
.eyebrow .dot{width:7px;height:7px;border-radius:50%;background:var(--live);box-shadow:0 0 10px var(--live)}
.freeetv h1{font-size:clamp(2.5rem,6vw,4.3rem);line-height:1.02;letter-spacing:-.02em;margin:0;font-weight:800;text-wrap:balance;color:var(--ink);text-align:left}
/* Dégradé du titre hero : accent → VIOLET (2e teinte constante) pour garder la
   profondeur en toute ambiance — sinon il vire monochrome (cadre DA Lili). */
.freeetv h1 .em{background:linear-gradient(100deg,var(--blue-glow),color-mix(in srgb,var(--blue-glow) 35%,#8b4fe0));-webkit-background-clip:text;background-clip:text;color:transparent}
.lede{font-size:1.14rem;color:var(--soft);margin:22px 0 0;max-width:46ch}
.lede b{color:#fff;font-weight:600}

/* magenta/blue band — hommage 2009 */
.band{position:relative;z-index:2;display:flex;align-items:stretch;gap:2px;margin:34px 0 0;border-radius:12px;overflow:hidden;
  max-width:640px;box-shadow:0 20px 50px -24px rgba(46,123,255,.5)}
.band span{padding:13px 20px;font-weight:800;letter-spacing:.04em;font-size:.98rem;display:flex;align-items:center;white-space:nowrap}
.band .b1{background:var(--magenta);color:#fff;flex:1}
.band .b2{background:#0d1226;color:#fff;flex-direction:column;gap:1px;padding:7px 24px;align-items:center;justify-content:center;line-height:1.02}
.band .b2 .count{font-size:1.55rem;font-weight:900;letter-spacing:-.01em;background:linear-gradient(135deg,var(--magenta-glow),var(--blue-glow));-webkit-background-clip:text;background-clip:text;color:transparent}
.band .b2 .count em{font-style:normal}
.band .b2 .count-lbl{font-size:.58rem;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);font-weight:700;white-space:nowrap}
.band .b3{background:var(--blue);color:#fff;flex:1;justify-content:flex-end}

.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px;position:relative;z-index:2}
.btn{display:inline-flex;align-items:center;gap:9px;font-weight:600;font-size:.95rem;padding:13px 22px;border-radius:999px;
  border:1px solid transparent;cursor:pointer;transition:transform .15s,box-shadow .2s}
.btn-primary{background:var(--blue);color:#fff;box-shadow:0 14px 30px -12px var(--blue)}
.btn-primary:hover{transform:translateY(-2px)}
.btn-ghost{background:rgba(255,255,255,.05);border-color:var(--line-2);color:#fff}
.btn-ghost:hover{border-color:var(--blue-glow)}
.cta-note{font-size:.82rem;color:var(--muted);margin-top:14px;position:relative;z-index:2}

/* browse / filter bar */
.freeetv section{position:relative;z-index:2}
.browse{margin-top:56px;background:linear-gradient(180deg,var(--panel),rgba(13,18,38,.6));border:1px solid var(--line);
  border-radius:16px;padding:18px;display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.field{display:flex;flex-direction:column;gap:4px;flex:1;min-width:150px}
.field label{font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-weight:700}
.select{appearance:none;background:rgba(255,255,255,.05);border:1px solid var(--line-2);border-radius:9px;
  color:var(--ink);padding:10px 12px;font:inherit;font-size:.92rem;font-weight:500}
.modes{display:flex;gap:4px;background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:9px;padding:3px}
.modes button{background:none;border:0;color:var(--muted);font:inherit;font-size:.78rem;font-weight:600;padding:7px 12px;border-radius:7px;cursor:pointer}
.modes button.on{background:var(--blue);color:#fff}

.sec-head{display:flex;align-items:baseline;justify-content:space-between;margin:44px 0 20px;gap:16px}
.sec-head h2{font-size:1.5rem;font-weight:800;letter-spacing:-.01em;margin:0;color:var(--ink)}
.sec-head .link{font-size:.86rem;color:var(--blue-glow);font-weight:600}

/* channel grid */
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
@media(max-width:900px){.grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.grid{grid-template-columns:1fr}}
.ch{background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--line);border-radius:14px;
  overflow:hidden;transition:transform .18s,border-color .18s,box-shadow .2s;cursor:pointer;display:block}
.ch:hover{transform:translateY(-4px);border-color:var(--line-2);box-shadow:0 24px 44px -28px rgba(46,123,255,.6)}
.ch .thumb{height:104px;display:grid;place-items:center;position:relative;
  background:radial-gradient(circle at 50% 40%,rgba(46,123,255,.20),transparent 70%),#0a1024;border-bottom:1px solid var(--line);
  background-size:cover;background-position:center}
.ch .thumb.has-img{background-size:cover;background-position:center}
.ch .thumb.has-img::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(5,6,14,.42),rgba(5,6,14,0) 42%,rgba(5,6,14,.5))}
.ch .thumb .live,.ch .thumb .flag{z-index:2}
.ch .thumb .name{font-weight:800;font-size:1.15rem;letter-spacing:.02em;color:#fff;text-align:center;padding:0 10px}
.ch .live{position:absolute;top:10px;left:10px;display:inline-flex;align-items:center;gap:5px;
  background:rgba(5,6,14,.7);border:1px solid rgba(49,208,122,.4);color:var(--live);font-size:.64rem;font-weight:800;
  letter-spacing:.1em;padding:3px 8px;border-radius:6px}
.ch .live::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--live);box-shadow:0 0 8px var(--live)}
.ch .flag{position:absolute;top:8px;right:10px;font-size:1.1rem}
/* PREVIEW LIVE AU SURVOL (spec Lili 13/07) : iframe muette créée par freeetv.js dans la
   vignette. z-index 1 = au-dessus du fond + gradient, SOUS les badges LIVE/flag (z-index 2).
   pointer-events:none → le clic traverse et navigue vers la fiche. Fondu doux à l'apparition. */
/* .ch (grille /tv/) = iframe dans .thumb ; .mq-tile (rangées home) = iframe dans la tuile
   (pas de .thumb, image de fond sur la tuile). z-index 1 = sous les badges LIVE/légende (z-index 2).
   CHROME-QUIET V2 (spec Lili 13/07 ~15h20) — deux leviers, AUCUN masque opaque (CGU YT) :
   ① RÉVÉLATION RETARDÉE : l'iframe joue en opacity:0 ; freeetv.js pose .ftv-prev-on à
     t+2800 ms → fondu 400 ms. Le chrome YT (titre + gros bouton + contrôles) s'auto-estompe
     ~3 s sans interaction, et nos previews sont pointer-events:none → il ne revient jamais :
     l'utilisateur voit la vignette statique, puis le stream déjà NU.
   ② CROP ADAPTATIF : scale + overflow:hidden font sortir du cadre titre haut / watermark
     bas-droite. Cartes .ch = 1.5 (suffisant) ; petites .mq-tile = 1.75 (banc 13/07, max 1.8
     pour garder le sujet central lisible). */
.ch .thumb{overflow:hidden}
.ch .thumb .ftv-prev,.mq-tile .ftv-prev{position:absolute;inset:0;width:100%;height:100%;border:0;z-index:1;
  pointer-events:none;background:#000;opacity:0;transform:scale(1.5);transform-origin:center;
  transition:opacity .4s ease}
.mq-tile .ftv-prev{transform:scale(1.75)}
.ch .thumb .ftv-prev.ftv-prev-on,.mq-tile .ftv-prev.ftv-prev-on{opacity:1} /* spécificité ≥ bases (0,4,0/0,3,0) — leçon rollback Sahra 13/07 : 2 classes perdaient contre .ch .thumb .ftv-prev */
/* le nom de repli (.ch) ne s'efface qu'À LA RÉVÉLATION — pendant les ~2,8 s de délai la
   vignette reste entière (.previewing-on posé par le JS en même temps que .ftv-prev-on) */
.ch .thumb .name{transition:opacity .3s ease}
.ch.previewing-on .thumb .name{opacity:0}
@media(prefers-reduced-motion:reduce){.ch .thumb .ftv-prev,.mq-tile .ftv-prev,.ch .thumb .name{transition:none}}
.ch .meta{padding:12px 14px}
.ch .ch-name{font-weight:700;font-size:.98rem;display:flex;align-items:center;gap:7px;color:var(--ink)}
.ch .ch-sub{color:var(--muted);font-size:.8rem;margin-top:2px}
.ch .tags{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.chip{font-size:.68rem;font-weight:700;letter-spacing:.03em;padding:3px 8px;border-radius:6px;
  background:rgba(46,123,255,.14);color:var(--blue-glow)}
.chip.mag{background:rgba(232,54,143,.15);color:var(--magenta-glow)}
.chip.cam{background:rgba(49,208,122,.14);color:var(--live)}
.ch .views{color:var(--faint);font-size:.72rem;margin-top:8px}

/* revival trio */
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:20px}
@media(max-width:820px){.trio{grid-template-columns:1fr}}
.card{background:linear-gradient(180deg,var(--panel),rgba(10,14,31,.5));border:1px solid var(--line);border-radius:16px;padding:24px;position:relative;overflow:hidden}
.card .k{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:var(--blue-glow)}
.card.hist .k{color:var(--magenta-glow)}
.card h3{font-size:1.2rem;margin:12px 0 8px;font-weight:800;color:var(--ink)}
.card p{color:var(--soft);font-size:.92rem;margin:0}
.card .arrow{margin-top:16px;color:var(--muted);font-size:.86rem;font-weight:600}
.card.hist{border-color:rgba(232,54,143,.3)}
.tvbadge{display:inline-flex;align-items:center;gap:8px;font-size:.78rem;color:var(--soft);margin-top:14px;
  background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:8px;padding:6px 11px}

/* single-channel player (cœur de la v0) */
.player-wrap{position:relative;z-index:2;margin-top:28px}
.player{position:relative;width:100%;aspect-ratio:16/9;background:#000;border:1px solid var(--line-2);border-radius:16px;overflow:hidden;
  box-shadow:0 30px 70px -30px rgba(46,123,255,.5)}
.player iframe,.player video{position:absolute;inset:0;width:100%;height:100%;border:0}
/* Façade FreeCookie (lecteur bloqué avant consentement) : le plugin dimensionne le
   voile depuis la taille de l'iframe mesurée trop tôt → petite boîte rognée en haut
   à gauche (QA Sophia). On force le voile à remplir la zone lecteur, contenu centré,
   bouton non rogné. Correctif de fond côté plugin à faire par Lili (FreeCookie). */
.player .fc-embed-veil{inset:0!important;left:0!important;top:0!important;width:100%!important;height:100%!important;padding:20px}
.player .fc-embed-veil__btn{white-space:nowrap;max-width:100%}
/* Fenêtre de consentement FreeCookie : Stéphane la trouve trop grande (défaut
   plugin = ~91% l / ~95% h sur mobile). Plafonnée à 70% largeur / 60% hauteur max
   (la liste des catégories défile déjà à l'intérieur). Fix de fond côté plugin
   délégué à Juliette (FreeCookie) → override thème retirable après. */
.fc-banner{width:min(680px,max(280px,70vw))!important;max-height:max(60vh,340px)!important}
.player-head{display:flex;align-items:center;gap:14px;margin:22px 0 0}
.player-head .flag{font-size:1.6rem}
.player-head h1{font-size:1.8rem!important;margin:0}
.player-head .ch-sub{color:var(--muted);font-size:.9rem}
/* --muted (pas --faint) : la note de transparence doit rester LISIBLE sur fond
   sombre (retour Stéphane 12/07, « page watch un peu sombre »). */
.player-note{font-size:.92rem;color:#aab3d6;margin-top:12px;line-height:1.55}
.player-note a{color:var(--blue-glow)}
[data-theme="day"] .player-note{color:var(--soft)} /* .8rem : 4.12→8.1:1, AA petit texte */
.offline{position:absolute;inset:0;display:grid;place-items:center;text-align:center;color:var(--soft);padding:24px}

/* footer */
.freeetv footer{position:relative;z-index:2;margin-top:70px;border-top:1px solid var(--line);padding:44px 0 60px}
.foot-poem{font-size:1.05rem;color:var(--soft);max-width:60ch;line-height:1.7}
.foot-poem b{color:#fff;font-weight:600}
.foot-row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;margin-top:28px;align-items:center}
.foot-tags{display:flex;flex-wrap:wrap;gap:8px}
.foot-tags span{font-size:.76rem;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:5px 12px}
.foot-fam{font-size:.8rem;color:var(--faint)}
.foot-fam a{color:var(--magenta-glow);font-weight:600}

/* ===== MODE JOUR (data-theme="day") — dark reste le défaut. Tokens : Lili (DA). ===== */
:root[data-theme="day"]{
  --space:#eaf1fb; --space-2:#d9e6f8; --panel:#ffffff; --panel-2:#f2f7ff;
  --ink:#0e1830; --soft:#3a4767; --muted:#66739a; --faint:#94a0c0;
  --blue:#2159d8; --blue-glow:#2e7bff; --magenta:#d81f7e; --magenta-glow:#e8368f;
  --line:rgba(20,32,66,.10); --line-2:rgba(20,32,66,.16);
}
/* Ajustements non-token demandés par Lili */
[data-theme="day"] .stars{opacity:.1}
[data-theme="day"] .globe{filter:saturate(1.06) brightness(1.05);opacity:.5;
  box-shadow:inset -40px -34px 140px rgba(20,32,66,.10), inset 26px 20px 80px rgba(255,255,255,.22);
  -webkit-mask-image:radial-gradient(circle at 58% 58%, #000 42%, rgba(0,0,0,.32) 66%, transparent 82%);
  mask-image:radial-gradient(circle at 58% 58%, #000 42%, rgba(0,0,0,.32) 66%, transparent 82%)}
/* Jour : invert bascule le BLANC en sombre, hue-rotate(180°) re-retourne les teintes
   des barres (sans lui, magenta→vert). Le wordmark devient encre, les barres gardent
   leur famille de couleur. */
[data-theme="day"] .brand-logo{filter:invert(1) hue-rotate(180deg) brightness(.85)}
/* Hover jour : le filter du hover écraserait l'invert → variante complète (gate Lili 12/07). */
[data-theme="day"] .brand-link:hover .brand-logo{filter:invert(1) hue-rotate(180deg) brightness(.92) saturate(1.4)}
/* Audit des rgba blancs codés en dur → variantes jour */
[data-theme="day"] .btn-ghost{background:rgba(20,32,66,.045);color:var(--ink)}
[data-theme="day"] .select,[data-theme="day"] .modes{background:rgba(20,32,66,.045)}
[data-theme="day"] .modes button.on{color:#fff}
[data-theme="day"] .swatches .dot[aria-pressed="true"]{border-color:var(--ink)}
[data-theme="day"] .ch .live{background:rgba(255,255,255,.85);color:#087a43;border-color:rgba(8,122,67,.45)}
[data-theme="day"] .ch .thumb.has-img::after{background:linear-gradient(180deg,rgba(5,6,14,.28),rgba(5,6,14,0) 45%,rgba(5,6,14,.30))}
[data-theme="day"] .langpop a:hover{background:rgba(20,32,66,.05);color:var(--ink)}
/* Audit des color:#fff codés en dur → encre en jour (accroche home, footer, nav active/hover, lang) */
[data-theme="day"] .lede b,
[data-theme="day"] .foot-poem b,
[data-theme="day"] .lang a.active,
[data-theme="day"] .lang b,
[data-theme="day"] nav.main a.active,
[data-theme="day"] nav.main a:hover,
[data-theme="day"] nav.main .current-menu-item a,
[data-theme="day"] .globe-btn:hover{color:var(--ink)}
/* Toggle jour/nuit */
.theme-toggle{width:30px;height:30px;border:1px solid var(--line-2);border-radius:50%;display:grid;place-items:center;
  color:var(--soft);background:none;cursor:pointer;padding:0;font-size:14px;line-height:1}
.theme-toggle:hover{border-color:var(--blue-glow);color:var(--ink)}
.theme-toggle .i-sun{display:none}
[data-theme="day"] .theme-toggle .i-moon{display:none}
[data-theme="day"] .theme-toggle .i-sun{display:block}

/* ===== Pages statiques (charte…) — gabarit page par défaut sur tokens, MOBILE-FIRST (Isadora, 11/07) ===== */
body.page-template-default .site-main{max-width:820px;margin:0 auto;padding:24px 18px 56px}
.page-template-default .entry-title{color:var(--ink)}
.page-template-default .page-content{color:var(--soft);font-size:1.05rem;line-height:1.7}
.page-template-default .page-content h2{color:var(--ink);font-size:clamp(1.3rem,4.5vw,1.5rem);font-weight:800;letter-spacing:-.01em;margin:2rem 0 .7rem;line-height:1.25}
.page-template-default .page-content strong,
.page-template-default .page-content b{color:var(--ink)}
.page-template-default .page-content a{color:var(--blue-glow)}
.page-template-default .page-content ul{padding-left:1.15rem}
.page-template-default .page-content li{margin:.4rem 0}
@media (min-width:600px){ body.page-template-default .site-main{padding:24px 20px 64px} }

/* ============================================================================
   REFONTE CLASSIQUE 2025 (Michelangelo, brief Lili) — page témoin /classic-home/.
   Reproduit le FreeeTV classique (bandeau bleu compteur, colonne pays, rangées
   qui défilent) + intégrations modernes. 100% sur les tokens → hérite du
   switcher de couleur + du mode jour/nuit. AUCUNE couleur en dur d'accent.
   ============================================================================ */
.classic{position:relative;z-index:2;padding-bottom:40px}

/* --- Bandeau bleu classique : le héros, compteur HONNÊTE --- */
.cl-band{position:relative;z-index:3;margin-top:20px;border-radius:16px;
  background:linear-gradient(120deg,var(--blue),color-mix(in srgb,var(--blue) 62%,#7b3ff2));
  box-shadow:0 26px 60px -30px var(--blue)}
.cl-band-in{padding:30px 30px 26px}
.cl-band-title{margin:0;font-size:clamp(1.3rem,3vw,2rem);font-weight:900;letter-spacing:-.015em;color:#fff;line-height:1.12;text-wrap:balance}
.cl-band-title .cl-count{font-weight:900;padding:0 .12em;
  text-shadow:0 2px 18px rgba(0,0,0,.35)}
.cl-band-total{display:block;margin-top:8px;font-size:1.3rem;font-weight:700;letter-spacing:.03em;color:rgba(255,255,255,.95)}
.cl-band-sub{margin:14px 0 0;color:rgba(255,255,255,.96);font-size:1.26rem;max-width:64ch;line-height:1.62}
/* Recherche prédictive « TV Search… » */
.cl-search{position:relative;margin:20px 0 0;max-width:440px}
.cl-search-ico{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
.cl-search-in{width:100%;box-sizing:border-box;padding:13px 16px 13px 42px;border-radius:11px;border:1px solid transparent;
  background:#fff;color:#0e1830;font:inherit;font-size:.98rem;font-weight:500;box-shadow:0 12px 30px -16px rgba(0,0,0,.5)}
.cl-search-in::placeholder{color:#66739a}
.cl-search-in:focus{outline:none;box-shadow:0 0 0 3px rgba(255,255,255,.4)}
.cl-search-pop{position:absolute;top:calc(100% + 8px);left:0;right:0;z-index:40;background:var(--panel);
  border:1px solid var(--line-2);border-radius:12px;padding:6px;box-shadow:0 30px 60px -24px rgba(0,0,0,.7);max-height:340px;overflow:auto}
.cl-search-pop[hidden]{display:none}
.cl-search-pop a{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:8px;color:var(--soft);font-size:.9rem}
.cl-search-pop a:hover,.cl-search-pop a.on{background:rgba(46,123,255,.14);color:var(--ink)}
.cl-search-pop a .s-sub{color:var(--muted);font-size:.78rem;margin-left:auto}
.cl-search-pop .s-empty{padding:12px;color:var(--muted);font-size:.86rem;text-align:center}

/* --- Layout 2 colonnes : PAYS à gauche, rangées à droite --- */
.cl-layout{display:grid;grid-template-columns:230px 1fr;gap:22px;margin-top:24px;align-items:start}
/* Mobile : les TV QUI DÉFILENT d'abord, la colonne pays/catégories ensuite
   (demande Stéphane 12/07 — sur téléphone on veut voir la télé avant les listes). */
@media(max-width:820px){.cl-layout{grid-template-columns:1fr}.cl-main{order:1}.cl-side{order:2}}

.cl-side{background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--line);
  border-radius:14px;overflow:hidden;position:sticky;top:16px}
@media(max-width:820px){.cl-side{position:static}}
.cl-side-head{font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;font-weight:800;color:var(--blue-glow);
  padding:14px 16px 10px;border-bottom:1px solid var(--line)}
.cl-countries{display:flex;flex-direction:column;max-height:420px;overflow-y:auto;scrollbar-width:thin}
.cl-countries a{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 16px;
  color:var(--soft);font-size:.9rem;border-bottom:1px solid var(--line)}
.cl-countries a:hover{background:rgba(46,123,255,.10);color:var(--ink)}
.cl-countries a em{font-style:normal;font-size:.74rem;color:var(--faint);font-variant-numeric:tabular-nums}
.cl-sort{display:flex;flex-wrap:wrap;gap:4px 12px;padding:12px 16px;border-top:1px solid var(--line);align-items:center}
.cl-sort-lbl{font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-weight:700;width:100%}
.cl-sort a{font-size:.82rem;color:var(--muted);font-weight:600}
.cl-sort a:hover{color:var(--blue-glow)}

/* --- Zone principale --- */
.cl-main-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin:0 0 16px}
.cl-main-head h2{font-size:1.4rem;font-weight:800;letter-spacing:-.01em;margin:0;color:var(--ink)}
.cl-all{font-size:.84rem;color:var(--blue-glow);font-weight:600;white-space:nowrap}
/* Rangées NOMMÉES par catégorie (esprit guide TV classique). */
.cl-rows{display:flex;flex-direction:column;gap:22px}
/* Sens de défilement alterné par nth-of-type (robuste au chargement dynamique du scroll infini). */
.cl-catrow:nth-of-type(even) .mq-track{animation-direction:reverse}
.cl-rows-end{margin:6px 0 0;color:var(--muted);font-size:.9rem;font-weight:600;text-align:center}
.cl-catrow-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 8px}
.cl-catrow-head h3{font-size:1.02rem;font-weight:800;letter-spacing:.02em;color:var(--ink);margin:0;text-transform:uppercase}
.cl-catrow-head a{font-size:.78rem;color:var(--muted);font-weight:600;white-space:nowrap}
.cl-catrow-head a:hover{color:var(--blue-glow)}
/* Scroll infini hybride : sentinel invisible + bouton « Show more ». */
.cl-loadmore{display:flex;flex-direction:column;align-items:center;gap:14px;margin:28px 0 0}
.cl-sentinel{width:1px;height:1px}
.cl-showmore{min-width:220px;justify-content:center}
.cl-showmore[hidden]{display:none}
.cl-rows-skeleton{height:150px;border-radius:12px;margin-top:14px;
  background:linear-gradient(100deg,var(--panel) 30%,var(--panel-2) 50%,var(--panel) 70%);
  background-size:200% 100%;animation:cl-shimmer 1.3s linear infinite}
@keyframes cl-shimmer{from{background-position:200% 0}to{background-position:-200% 0}}

/* --- Rangées de vignettes qui DÉFILENT (marquee), sens alterné --- */
/* Fondu de bord par OVERLAYS fixes (pseudo-éléments) et non par mask-image :
   un mask sur un conteneur à enfant animé force un repaint continu = thread de
   rendu saturé (findings Lili). Ici le fondu ne coûte rien (couche statique). */
/* min-height 114 (104+2×5) : le scroller ET son padding anti-clip tiennent dans la
   row, sinon overflow:hidden/contain recoupent (diag Agnès, bug hover Stéphane). */
.mq-row{position:relative;overflow:hidden;margin:0 0 12px;min-height:114px;contain:layout paint;overflow-anchor:none}
.mq-row::before,.mq-row::after{content:"";position:absolute;top:0;bottom:0;width:48px;z-index:3;pointer-events:none}
.mq-row::before{left:0;background:linear-gradient(90deg,var(--space),transparent)}
.mq-row::after{right:0;background:linear-gradient(270deg,var(--space),transparent)}
/* Scroller NATIF : la molette/trackpad et le tactile cinétique scrollent la rangée
   nativement (feel carrousel bien plus fluide qu'un drag JS — reco Sahra). L'auto-scroll
   (JS) et le drag SOURIS pilotent scrollLeft. touch-action par défaut → le navigateur
   arbitre H (scroll rangée) vs V (scroll page). overscroll-behavior-x:contain coupe le
   chaînage/back-swipe horizontal. Fallback sans JS : reste scrollable à la main. */
/* Fix « glissé réparé » (Sahra, prod 12/07) : les items grid/flex qui CONTIENNENT un
   scroller doivent avoir min-width:0, sinon ils s'élargissent au contenu et le
   scroller n'a rien à scroller (leçon générale). max-width:100% borne le scroller. */
.cl-main,.cl-catrow,.mq-row{min-width:0}
/* padding 5px : overflow:hidden clippe au bord de la PADDING box → la tuile qui
   se soulève au survol (translateY(-3px)) monte DANS ce coussin au lieu d'être
   rognée en haut (bordure coupée, capture Stéphane — diag Agnès). */
.mq-scroller{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;max-width:100%;padding:5px 0;
  scrollbar-width:none;-ms-overflow-style:none;cursor:grab;overscroll-behavior-x:contain;user-select:none}
.mq-scroller::-webkit-scrollbar{display:none}
/* Le drag SOURIS d'une carte déclenchait sinon le drag natif du navigateur (image
   fantôme du lien/img) qui bloquait le scroll JS → « hover mais rien » (diag Sahra). */
.mq-scroller a,.mq-scroller img{-webkit-user-drag:none;user-drag:none;-webkit-touch-callout:none}
.mq-scroller.dragging{cursor:grabbing}
.mq-scroller.dragging a{pointer-events:none} /* pendant un drag souris, pas de navigation accidentelle */
.mq-track{display:flex;gap:10px;width:max-content}
.mq-tile{position:relative;flex:0 0 auto;width:184px;aspect-ratio:16/9;border-radius:11px;overflow:hidden;
  border:1px solid var(--line);background:radial-gradient(circle at 50% 38%,rgba(46,123,255,.22),transparent 70%),#0a1024;
  background-size:cover;background-position:center;display:block;transition:transform .18s,border-color .18s,box-shadow .2s}
.mq-tile.has-img{background-size:cover;background-position:center}
.mq-tile.has-img::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,6,14,.15),rgba(5,6,14,0) 40%,rgba(5,6,14,.72))}
.mq-tile:hover{transform:translateY(-3px);border-color:var(--blue-glow);box-shadow:0 20px 40px -24px rgba(46,123,255,.7);z-index:3}
.mq-live{position:absolute;top:9px;left:9px;z-index:2;display:inline-flex;align-items:center;gap:5px;
  background:rgba(5,6,14,.7);border:1px solid rgba(49,208,122,.4);color:var(--live);font-size:.6rem;font-weight:800;
  letter-spacing:.1em;padding:2px 7px;border-radius:6px}
.mq-live::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--live);box-shadow:0 0 8px var(--live)}
.mq-cap{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:10px 12px;display:flex;flex-direction:column;gap:1px}
.mq-cap b{color:#fff;font-size:.9rem;font-weight:700;line-height:1.15;text-shadow:0 1px 6px rgba(0,0,0,.6)}
.mq-cap i{font-style:normal;color:rgba(255,255,255,.72);font-size:.74rem}

.cl-mosaic-cta{margin:24px 0 0}
.cl-mosaic-cta .btn{gap:10px}

/* --- Single-channel classique : lecteur gauche + panneau LIST/CHAT droite --- */
.cl-band--slim{margin-top:16px}
.cl-band--slim .cl-band-in{padding:20px 26px}
.cl-band--slim .cl-band-title{font-size:clamp(1.25rem,2.8vw,1.9rem)}
.cl-live-badge{display:inline-flex;align-items:center;gap:5px;background:rgba(5,6,14,.28);border:1px solid rgba(255,255,255,.4);
  color:#fff;font-size:.62rem;font-weight:800;letter-spacing:.1em;padding:2px 8px;border-radius:6px;margin-right:8px;vertical-align:middle}
.cl-live-badge::before{content:"";width:5px;height:5px;border-radius:50%;background:#fff;box-shadow:0 0 8px #fff}

.cl-single-grid{display:grid;grid-template-columns:1fr 340px;gap:22px;margin-top:22px;align-items:start}
@media(max-width:940px){.cl-single-grid{grid-template-columns:1fr}}

.cl-infobar{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:16px;padding:12px 4px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.cl-info{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:.82rem;font-weight:600}
.cl-info svg{color:var(--blue-glow);flex:0 0 auto}
.cl-info b{color:var(--soft);font-variant-numeric:tabular-nums}
.cl-report{cursor:pointer}
.cl-report:hover,.cl-info[href]:hover{color:var(--ink)}
.cl-desc{color:var(--soft);font-size:.95rem;line-height:1.65;margin-top:18px;max-width:66ch}
/* the_content() : le kit Elementor colore les <p> en gris FONCÉ (pensé fond clair)
   → quasi illisible sur le fond nuit (retour Stéphane). body.freeetv gagne la
   spécificité sur .elementor-kit-x p ; inherit = suit les tokens jour/nuit. */
body.freeetv .cl-desc p{color:inherit;margin:0 0 10px}
.cl-desc b,.cl-desc strong{color:var(--ink)}

.cl-panel{background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--line);border-radius:14px;overflow:hidden;position:sticky;top:16px}
@media(max-width:940px){.cl-panel{position:static}}
.cl-tabs{display:flex;border-bottom:1px solid var(--line)}
.cl-tab{flex:1;background:none!important;border:0;color:var(--muted);font:inherit;font-size:.82rem;font-weight:700;letter-spacing:.02em;
  padding:13px 10px;cursor:pointer;position:relative}
.cl-tab.on{color:var(--ink)} /* fond hérité (thème/Elementor sur aria-selected) neutralisé via !important ci-dessus */
.cl-tab.on::after{content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:2px;background:var(--grad-band)}
.cl-list{max-height:560px;overflow-y:auto;scrollbar-width:thin}
.cl-list-item{display:flex;align-items:center;gap:11px;padding:9px 12px;border-bottom:1px solid var(--line)}
.cl-list-item:hover{background:rgba(46,123,255,.10)}
.cl-list-item.current{background:rgba(46,123,255,.14)}
.cl-li-thumb{position:relative;flex:0 0 auto;width:58px;height:36px;border-radius:7px;overflow:hidden;
  background:radial-gradient(circle at 50% 40%,rgba(46,123,255,.25),transparent 70%),#0a1024;background-size:cover;background-position:center}
.cl-li-live{position:absolute;top:4px;left:4px;width:6px;height:6px;border-radius:50%;background:var(--live);box-shadow:0 0 6px var(--live)}
.cl-li-meta{min-width:0}
.cl-li-meta b{display:block;color:var(--ink);font-size:.86rem;font-weight:600;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px}
.cl-li-meta i{font-style:normal;color:var(--muted);font-size:.74rem}
.cl-list-empty,.cl-chat-soon{padding:22px 16px;color:var(--muted);font-size:.86rem;text-align:center}
.cl-chat-soon p{margin:0;line-height:1.6}
/* --- LIVES PROGRAMMÉS (backend Léonard freeetv-upcoming) : badge SOON (cartes),
   écran compte à rebours (fiche), bandeau « Coming up » (home). SVG, zéro emoji. --- */
.ch .soon{position:absolute;top:10px;left:10px;z-index:2;display:inline-flex;align-items:center;gap:5px;
  padding:4px 9px;border-radius:999px;font-size:.62rem;font-weight:800;letter-spacing:.08em;
  background:rgba(255,158,44,.16);border:1px solid rgba(255,158,44,.55);color:#ffc266}
.ch .soon b{font-family:ui-monospace,Menlo,monospace;font-weight:700}
.ftv-up-screen{display:grid;place-items:center;text-align:center}
.ftv-up-in{display:flex;flex-direction:column;gap:10px;align-items:center;padding:26px}
.ftv-up-badge{display:inline-flex;align-items:center;gap:7px;margin:0;font-size:.68rem;letter-spacing:.18em;
  text-transform:uppercase;font-weight:800;color:#ffc266}
.ftv-up-count{margin:0;font-family:ui-monospace,"SF Mono",Menlo,monospace;font-weight:700;
  font-size:clamp(1.9rem,6vw,3.2rem);color:var(--ink);letter-spacing:.02em;font-variant-numeric:tabular-nums}
.ftv-up-when{margin:0;color:var(--soft);font-size:1rem;text-transform:capitalize}
.ftv-up-note{margin:0;color:var(--faint);font-size:.78rem;max-width:44ch}
.ftv-cu{margin:6px 0 22px}
.ftv-cu .cl-main-head h2{display:inline-flex;align-items:center;gap:8px;color:#ffc266}
.ftv-cu-row{display:flex;gap:12px;overflow-x:auto;padding:2px 2px 8px;scrollbar-width:thin}
.ftv-cu-card{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;min-width:210px;
  background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid rgba(255,158,44,.35);
  border-radius:12px;padding:12px 15px;transition:border-color .15s,transform .15s}
.ftv-cu-card:hover{border-color:#ffc266;transform:translateY(-2px)}
.ftv-cu-badge{font-size:.6rem;letter-spacing:.14em;font-weight:800;color:#ffc266}
.ftv-cu-title{color:var(--ink);font-size:.92rem;line-height:1.3}
.ftv-cu-count{font-family:ui-monospace,Menlo,monospace;color:var(--soft);font-size:.95rem;font-variant-numeric:tabular-nums}

/* --- « Report broken TV » : modal du formulaire de signalement (endpoint Léonard).
   Tokens → jour/nuit + switcher gratuits. hp = honeypot invisible. --- */
.ftv-rp{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:18px}
.ftv-rp-backdrop{position:absolute;inset:0;background:rgba(5,6,14,.6);backdrop-filter:blur(2px)}
.ftv-rp-box{position:relative;width:min(420px,100%);background:var(--panel);border:1px solid var(--line-2);
  border-radius:14px;padding:16px 18px;display:flex;flex-direction:column;gap:12px;box-shadow:0 24px 60px -24px rgba(0,0,0,.7)}
.ftv-rp-head{display:flex;align-items:center;justify-content:space-between;font-size:1rem}
.ftv-rp-x{border:0;background:none;color:var(--muted);font-size:22px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:8px}
.ftv-rp-x:hover{color:var(--ink);background:rgba(255,255,255,.06)}
.ftv-rp-ch{margin:0;color:var(--muted);font-size:.85rem}
.ftv-rp-lbl{display:flex;flex-direction:column;gap:5px;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);font-weight:700}
.ftv-rp-lbl select,.ftv-rp-lbl textarea{font:inherit;font-size:.9rem;letter-spacing:normal;text-transform:none;color:var(--ink);
  background:rgba(46,123,255,.06);border:1px solid var(--line-2);border-radius:9px;padding:9px 11px}
.ftv-rp-lbl textarea{resize:vertical;min-height:64px}
.ftv-rp-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.ftv-rp-actions{display:flex;justify-content:flex-end}
.ftv-rp-msg{margin:0;color:#ff9e2c;font-size:.85rem}
.ftv-rp-thanks{margin:8px 0;text-align:center;color:var(--ink);font-weight:600}
.cl-chat-room{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line)}
.cl-chat-room label{font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);font-weight:700}
.cl-chat-room select{flex:1;appearance:none;background:rgba(46,123,255,.06);border:1px solid var(--line-2);border-radius:8px;
  color:var(--ink);padding:7px 10px;font:inherit;font-size:.86rem;font-weight:600}
/* NB : l'écran HORS-LIGNE (.ftv-offline*) est dans assets/offline.css — module isolé,
   déployable seul avec le hotfix, sans embarquer cette refonte classique. */

/* --- Mosaïque « Multi Live » 6 chaînes (spec Lili) --- */
.mo-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.mo-change{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.3);color:#fff;white-space:nowrap}
.mo-change:hover{background:rgba(255,255,255,.22);border-color:#fff}
/* Défaut 2×2 (DA Lili) ; le visiteur peut passer à 6 (3×2) — décision Stéphane 12/07. */
.mo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:20px}
[data-n="6"] .mo-grid{grid-template-columns:repeat(3,1fr)}
@media(max-width:900px){[data-n="6"] .mo-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.mo-grid,[data-n="6"] .mo-grid{grid-template-columns:1fr}}
/* Outils du bandeau : toggle 4|6 (pilule) + Browse. */
.mo-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.mo-n{display:inline-flex;border:1px solid rgba(255,255,255,.35);border-radius:999px;overflow:hidden}
.mo-n a{padding:7px 15px;color:rgba(255,255,255,.75);font-weight:700;font-size:.9rem;line-height:1}
.mo-n a.on{background:rgba(255,255,255,.92);color:var(--blue)}
.mo-n a:not(.on):hover{color:#fff}
/* Picker « Change this channel » : modal recherche (endpoint mosaic/search Léonard). */
.mo-pick{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:18px}
.mo-pick-backdrop{position:absolute;inset:0;background:rgba(5,6,14,.6);backdrop-filter:blur(2px)}
.mo-pick-box{position:relative;width:min(460px,100%);max-height:min(72vh,560px);display:flex;flex-direction:column;gap:10px;
  background:var(--panel);border:1px solid var(--line-2);border-radius:14px;padding:14px 16px;
  box-shadow:0 24px 60px -24px rgba(0,0,0,.7)}
.mo-pick-head{display:flex;align-items:center;justify-content:space-between;font-size:1rem}
.mo-pick-x{border:0;background:none;color:var(--muted);font-size:22px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:8px}
.mo-pick-x:hover{color:var(--ink);background:rgba(255,255,255,.06)}
.mo-pick-in{font:inherit;color:var(--ink);background:rgba(46,123,255,.06);border:1px solid var(--line-2);border-radius:9px;padding:10px 12px}
.mo-pick-in:focus{outline:none;border-color:var(--blue-glow);box-shadow:0 0 0 3px rgba(46,123,255,.18)}
.mo-pick-list{overflow-y:auto;scrollbar-width:thin;display:flex;flex-direction:column;gap:4px;min-height:120px}
.mo-pick-item{display:flex;align-items:center;gap:11px;padding:7px 8px;border:0;border-radius:9px;background:none;
  color:var(--soft);cursor:pointer;text-align:left;font:inherit;font-size:.9rem}
.mo-pick-item:hover{background:rgba(46,123,255,.12);color:var(--ink)}
.mo-pick-thumb{flex:none;width:64px;aspect-ratio:16/9;border-radius:7px;background:#0a1024 center/cover no-repeat;border:1px solid var(--line)}
.mo-pick-meta{display:flex;flex-direction:column;min-width:0}
.mo-pick-meta b{color:var(--ink);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mo-pick-meta i{font-style:normal;color:var(--muted);font-size:.78rem}
.mo-pick-empty{padding:18px;color:var(--muted);text-align:center;font-size:.88rem}
.mo-tile{position:relative;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#05060e;
  transition:border-color .18s,box-shadow .2s}
.mo-tile.focus{border-color:var(--blue-glow);box-shadow:0 0 0 2px var(--blue-glow),0 20px 44px -22px var(--blue)}
.mo-frame{position:relative;width:100%;aspect-ratio:16/9;background:#000}
.mo-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.mo-off{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:8px;color:var(--muted);font-size:.82rem;text-align:center}
.mo-off a,.mo-off-swap{color:var(--blue-glow);font-weight:600;font-size:.8rem;background:none;border:0;cursor:pointer;font-family:inherit;padding:0}
.mo-off-swap:hover{text-decoration:underline}
.mo-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;background:var(--panel)}
.mo-name{display:flex;align-items:center;gap:7px;min-width:0}
.mo-name b{color:var(--ink);font-size:.84rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
.mo-name em{font-style:normal;color:var(--muted);font-size:.72rem;white-space:nowrap}
.mo-live{flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:var(--live);box-shadow:0 0 6px var(--live)}
.mo-ctrls{display:flex;gap:4px;flex:0 0 auto}
.mo-btn{width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--line-2);border-radius:8px;
  background:none;color:var(--muted);cursor:pointer;padding:0}
.mo-btn[aria-pressed="true"]{background:none} /* neutralise un fond hérité (thème/Elementor) */
.mo-btn:hover{border-color:var(--blue-glow);color:var(--ink);background:none}
.mo-audio .i-snd{display:none}
.mo-tile.focus .mo-audio{border-color:var(--blue-glow);color:var(--blue-glow);background:rgba(46,123,255,.12)}
.mo-tile.focus .mo-audio .i-snd{display:block}
.mo-tile.focus .mo-audio .i-mute{display:none}
.mo-note{margin:16px 0 0;color:var(--faint);font-size:.8rem}

/* --- Mode jour : tokens gèrent tout ; on garde la recherche lisible (déjà fond blanc). --- */
[data-theme="day"] .cl-band-sub{color:rgba(255,255,255,.98)}
[data-theme="day"] .mq-tile{background:radial-gradient(circle at 50% 38%,rgba(33,89,216,.16),transparent 70%),#dfe8f7}

/* --- Total du catalogue sous le compteur live (demande Stéphane 11/07) --- */
.band .count-total{display:block;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:2px}


/* ===== HEADER MOBILE (DA Lili) : nav scrollable + contrôles repliés en bottom-sheet.
   Desktop = inchangé (contrôles inline). Lot séparé, couplé à la refonte header. ===== */
.palette-btn{display:none}
.hdr-sheet{display:contents}
.hdr-sheet-head,.hdr-sheet-x,.hdr-sheet-backdrop{display:none}
@media(max-width:640px){
  /* z-index élevé : le backdrop/sheet (dans header.top) doivent dominer la notice
     « under construction » (qui est un frère après header.top). */
  header.top{gap:12px;z-index:60}
  /* Nav = rangée horizontale SCROLLABLE sous le logo (pas de burger — Lili). */
  /* Les 5 items uppercase (dont CATEGORY) tiennent en 375px sans clipper : gap + typo
     réduits (P3, QA Léa). overflow-x:auto reste en filet si un menu plus long est câblé. */
  nav.main{order:3;width:100%;flex-wrap:nowrap;overflow-x:auto;gap:13px;padding-bottom:2px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  nav.main::-webkit-scrollbar{display:none}
  nav.main a{white-space:nowrap;font-size:.76rem;letter-spacing:.03em}
  nav.main a:last-child{padding-right:2px}
  /* INDICE de scrollabilité (audit Isadora + item Multi Live = la rangée déborde
     désormais toujours en 375px) : fondu STICKY au bord droit — épinglé pendant le
     scroll, il se range naturellement APRÈS le dernier item en fin de course
     (disparaît de lui-même, zéro JS). */
  nav.main::after{content:"";position:sticky;right:0;flex:0 0 30px;align-self:stretch;
    background:linear-gradient(270deg,var(--space) 20%,transparent);pointer-events:none}
  /* Bouton palette dans la rangée du logo. */
  .palette-btn{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line-2);border-radius:50%;background:none;color:var(--soft);cursor:pointer;padding:0}
  .palette-btn:hover{border-color:var(--blue-glow);color:var(--ink)}
  .top-right{width:auto;gap:10px}
  /* Recherche : LOUPE qui déplie le champ en pleine largeur sous le header
     (header déjà dense — demande Stéphane/Sahra). */
  .hdr-search{position:static}
  .hdr-search-toggle{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line-2);border-radius:50%;background:none;color:var(--soft);cursor:pointer;padding:0}
  .hdr-search-toggle:hover{border-color:var(--blue-glow);color:var(--ink)}
  .hdr-search-field{display:none}
  .hdr-search.open .hdr-search-field{display:flex;position:absolute;top:calc(100% + 10px);left:0;right:0;z-index:66}
  .hdr-search.open .hdr-search-in{width:100%;padding:13px 14px 13px 40px;border-radius:12px;background:var(--panel)}
  .hdr-search.open .hdr-search-ico{left:14px}
  .hdr-search .cl-search-pop{left:0;right:0;width:auto;max-width:none;top:calc(100% + 8px)}
  /* Contrôles repliés en BOTTOM-SHEET. */
  .hdr-sheet{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:70;flex-direction:column;align-items:stretch;gap:11px;
    max-height:min(56vh,380px);overflow-y:auto;
    background:var(--panel);border-top:1px solid var(--line-2);border-radius:18px 18px 0 0;
    padding:12px 20px calc(14px + env(safe-area-inset-bottom,0px));
    transform:translateY(112%);transition:transform .3s ease;box-shadow:0 -22px 55px -22px rgba(0,0,0,.65)}
  /* Badge « watching » regroupé dans la rangée langue (Lili) → une rangée de moins. */
  .hdr-sheet .lang{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
  .hdr-sheet .lang .ftv-livenow{order:-1}
  .hdr-sheet.open{transform:translateY(0)}
  .hdr-sheet-head{display:flex;align-items:center;justify-content:space-between;
    font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-weight:700}
  .hdr-sheet-x{display:grid;place-items:center;width:34px;height:34px;border:0;background:none;color:var(--muted);font-size:24px;line-height:1;cursor:pointer;border-radius:9px}
  .hdr-sheet-x:hover{color:var(--ink);background:rgba(255,255,255,.06)}
  /* Densité compacte (Lili) : toggle en rangée, 6 pastilles en GRILLE (toutes visibles),
     langue en dernier. Hauteur totale ≤ ~40 % du viewport. */
  .hdr-sheet .theme-controls{flex-direction:column;align-items:stretch;gap:14px}
  /* Cluster CENTRÉ et resserré (pas étiré sur toute la largeur → pastilles trop
     espacées, retour Stéphane). Flex + gap serré ; toutes visibles sur une rangée. */
  .hdr-sheet .swatches{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;width:100%}
  .hdr-sheet .swatches .dot{width:34px;height:34px} /* tient sur une rangée dès 320px, cluster serré */
  .hdr-sheet .theme-toggle{width:40px;height:40px;align-self:flex-start}
  .hdr-sheet .lang{font-size:1rem;gap:10px}
  .hdr-sheet .ftv-livenow{align-self:flex-start} /* badge watching déplacé dans le sheet (JS) */
  .hdr-sheet-backdrop{display:block;position:fixed;inset:0;z-index:69;background:rgba(5,6,14,.55);backdrop-filter:blur(2px)}
  .hdr-sheet-backdrop[hidden]{display:none}
}

/* --- Wise Chat dans l'onglet chat du single classique — 1er jet tokens (itération Juliette). */
.cl-tabpane[data-cl-pane="chat"] .wcContainer,
.cl-tabpane[data-cl-pane="chat"] .wc-container{background:transparent!important;border:0!important;box-shadow:none!important;color:var(--ink)!important;max-width:100%}
.cl-tabpane[data-cl-pane="chat"] .wcMessages,
.cl-tabpane[data-cl-pane="chat"] .wcMessagesList{background:rgba(255,255,255,.02)!important;border:1px solid var(--line)!important;border-radius:10px}
.cl-tabpane[data-cl-pane="chat"] .wcMessage,
.cl-tabpane[data-cl-pane="chat"] .wcContainer li{color:var(--soft)!important;border-color:var(--line)!important}
.cl-tabpane[data-cl-pane="chat"] input[type="text"],
.cl-tabpane[data-cl-pane="chat"] textarea,
.cl-tabpane[data-cl-pane="chat"] .wcInput{background:rgba(255,255,255,.05)!important;border:1px solid var(--line-2)!important;color:var(--ink)!important;border-radius:8px!important}
.cl-tabpane[data-cl-pane="chat"] .wcSubmitButton,
.cl-tabpane[data-cl-pane="chat"] button[type="submit"]{background:var(--blue)!important;color:#fff!important;border:0!important;border-radius:8px!important}

/* ==== APPEND 15/07 — preview-plus (demandes Stéphane) ==== */
/* ① ANNEAU D'ATTENTE pendant le chargement de l'aperçu : .previewing est posé par
   freeetv.js dès la création de l'iframe (js:916), .previewing-on seulement à la
   révélation (~2,8-6,5 s plus tard, js:927) → l'anneau ne vit QUE dans cette fenêtre
   et disparaît pile quand la vidéo fond à l'écran. ::before (::after déjà pris par les
   gradients has-img). z-index:2 = au-dessus de l'iframe (z1), plan des badges LIVE.
   pointer-events:none : le clic vers la fiche reste intact. */
.ch.previewing:not(.previewing-on) .thumb::before,
.mq-tile.previewing:not(.previewing-on)::before{
  content:'';position:absolute;left:50%;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;
  z-index:2;pointer-events:none;border-radius:50%;box-sizing:border-box;
  background:rgba(5,6,14,.45);border:2px solid rgba(255,255,255,.30);border-top-color:var(--blue-glow);
  animation:ftvPrevWait .8s linear infinite}
.mq-tile.previewing:not(.previewing-on)::before{width:20px;height:20px;margin:-10px 0 0 -10px}
@keyframes ftvPrevWait{to{transform:rotate(360deg)}}
/* Mouvement réduit : pas de rotation (anneau statique = simple témoin). Le module
   preview ne tourne de toute façon pas en reduced-motion (js:834-835) — ceinture. */
@media(prefers-reduced-motion:reduce){
  .ch.previewing:not(.previewing-on) .thumb::before,
  .mq-tile.previewing:not(.previewing-on)::before{animation:none}}
/* ② MARQUEE STOPPÉ pendant l'aperçu — classe ftv-previewing posée/retirée sur le
   .mq-row par l'append JS (le vrai gel du défilement JS/scrollLeft est fait là par
   heartbeat sur la pause existante du driver). Cette règle fige en plus toute
   animation CSS éventuelle du track (vestige css:519, ou retour futur d'un marquee CSS). */
.mq-row.ftv-previewing .mq-track{animation-play-state:paused!important}

/* ==== APPEND 15/07 — boule COULEUR LIBRE dans le sélecteur d'accent (demande Stéphane :
   « choix des couleurs .. pas juste un bouton »). S'ajoute aux boules preset ; réutilise le
   mécanisme existant (--blue/--blue-glow/--amb + mémoire ftv-accent). Additif, réversible. ==== */
.swatches .dot.dot--custom{
  position:relative; overflow:hidden;
  background:conic-gradient(from 0deg,#ff5fab,#fbbf24,#34d399,#22d3ee,#5ea0ff,#b98bff,#ff5fab);
  display:grid; place-items:center;
}
.swatches .dot.dot--custom span{
  font-size:14px; line-height:1; color:#fff; font-weight:700;
  text-shadow:0 1px 2px rgba(0,0,0,.7); pointer-events:none;
}
.swatches .dot.dot--custom input[type="color"]{
  position:absolute; inset:0; width:100%; height:100%;
  opacity:0; border:0; padding:0; margin:0; cursor:pointer;
}

/* ==== APPEND 15/07 — boules de couleur DIRECTEMENT dans le header en portrait mobile
   (demande Stéphane : « les options de couleur doivent apparaître directement, sans
   cliquer sur le petit bouton — adapte les tailles pour les tout petits téléphones »).
   Le JS (append jumeau) déplace .swatches du bottom-sheet vers .top-right en ≤640px
   et le rend au panneau au-delà. Tailles : 26px, puis 22px sous 380px. ==== */
@media(max-width:640px){
	.top-right .swatches.ftv-swatches-inline{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}
	.top-right .swatches.ftv-swatches-inline .dot{width:26px;height:26px}
	.top-right .swatches.ftv-swatches-inline .dot--custom span{font-size:12px}
}
@media(max-width:380px){
	.top-right .swatches.ftv-swatches-inline{gap:6px}
	.top-right .swatches.ftv-swatches-inline .dot{width:22px;height:22px}
	.top-right .swatches.ftv-swatches-inline .dot--custom span{font-size:11px}
}

/* ==== APPEND 15/07 (2) — boules encore plus discrètes dans le header portrait
   (retour Stéphane « beaucoup trop grandes ») : 24px, 20px sous 380px. Posé APRÈS
   le bloc précédent → gagne. ==== */
@media(max-width:640px){
	.top-right .swatches.ftv-swatches-inline{gap:7px}
	.top-right .swatches.ftv-swatches-inline .dot{width:24px;height:24px}
	.top-right .swatches.ftv-swatches-inline .dot--custom span{font-size:11px}
}
@media(max-width:380px){
	.top-right .swatches.ftv-swatches-inline{gap:6px}
	.top-right .swatches.ftv-swatches-inline .dot{width:20px;height:20px}
	.top-right .swatches.ftv-swatches-inline .dot--custom span{font-size:10px}
}

/* ==== APPEND 15/07 (3) — panneau Affichage ré-agencé en portrait (« arrange stp ») :
   depuis que les boules vivent dans le header, le panneau était dégarni (boutons esseulés
   empilés). Rangée horizontale compacte + hauteur naturelle. ==== */
@media(max-width:640px){
	.hdr-sheet{gap:14px;max-height:none;padding-bottom:calc(18px + env(safe-area-inset-bottom,0px))}
	.hdr-sheet .theme-controls{flex-direction:row;align-items:center;justify-content:flex-start;gap:14px}
	.hdr-sheet .lang{border-top:1px solid rgba(255,255,255,.08);padding-top:14px}
}

/* ==== APPEND 15/07 (4) — rangée compteur/🎨/boules : UNE ligne, mieux répartie sur la
   largeur, boules 21px (19px ≤380px) — retour Stéphane iPhone. ==== */
@media(max-width:640px){
	.top-right{width:100%;justify-content:space-between;flex-wrap:nowrap}
	.top-right .swatches.ftv-swatches-inline{flex:0 1 auto;flex-wrap:nowrap;gap:6px;min-width:0}
	.top-right .swatches.ftv-swatches-inline .dot{width:21px;height:21px}
	.top-right .swatches.ftv-swatches-inline .dot--custom span{font-size:10px}
}
@media(max-width:380px){
	.top-right .swatches.ftv-swatches-inline{gap:5px}
	.top-right .swatches.ftv-swatches-inline .dot{width:19px;height:19px}
}

/* ==== APPEND 15/07 (5) — le panneau Affichage devient une FENÊTRE CENTRÉE compacte en
   mobile (retour Stéphane : « centrer complètement sur l'écran, réduire la fenêtre, icônes
   plus grandes, esthétique »). Remplace le bottom-sheet pleine largeur. Posé en fin de
   fichier → gagne sur les règles bottom-sheet précédentes. ==== */
@media(max-width:640px){
	.hdr-sheet{
		left:50%;right:auto;top:50%;bottom:auto;
		width:min(86vw,330px);max-height:none;
		transform:translate(-50%,-50%) scale(.96);opacity:0;pointer-events:none;
		border:1px solid var(--line-2,rgba(255,255,255,.14));border-radius:22px;
		padding:16px 22px 22px;gap:18px;
		box-shadow:0 30px 90px -25px rgba(0,0,0,.75);
		transition:opacity .22s ease,transform .22s ease;
	}
	.hdr-sheet.open{transform:translate(-50%,-50%) scale(1);opacity:1;pointer-events:auto}
	.hdr-sheet .theme-controls{flex-direction:row;justify-content:center;gap:26px;padding:6px 0 2px}
	.hdr-sheet .theme-controls > button,
	.hdr-sheet .theme-controls > .ftv-pop-wrap > button{width:56px;height:56px}
	.hdr-sheet .theme-controls > button svg,
	.hdr-sheet .theme-controls > .ftv-pop-wrap > button svg{width:24px;height:24px}
	.hdr-sheet .lang{justify-content:center;gap:12px 16px;border-top:1px solid rgba(255,255,255,.08);padding-top:16px}
}
@media(prefers-reduced-motion:reduce){
	.hdr-sheet{transition:none}
}

/* resserrage vertical (le panneau avait du vide au ventre) */
@media(max-width:640px){
	.hdr-sheet{gap:14px}
	.hdr-sheet .hdr-sheet-head{padding:0}
	.hdr-sheet .theme-controls{flex:none;min-height:0;padding:4px 0}
	.hdr-sheet .lang{margin-top:0;padding-top:14px}
}

/* v2 : les contrôles deviennent des RANGÉES explicites (icône + titre + utilité),
   et la rangée langue part au header (JS lang-direct). */
@media(max-width:640px){
	.hdr-sheet .theme-controls{flex-direction:column;align-items:stretch;gap:10px;padding:2px 0}
	.hdr-sheet .ftv-opt-row{display:flex;align-items:center;gap:14px;width:100%;
		border:1px solid var(--line-2,rgba(255,255,255,.12));border-radius:14px;padding:10px 12px}
	.hdr-sheet .ftv-opt-row > button,.hdr-sheet .ftv-opt-row > .ftv-pop-wrap{flex:none}
	.hdr-sheet .ftv-opt-txt{min-width:0}
	.hdr-sheet .ftv-opt-txt b{display:block;font-size:.84rem;font-weight:600;color:var(--ink,#eef2ff)}
	.hdr-sheet .ftv-opt-txt span{display:block;font-size:.7rem;line-height:1.35;color:var(--muted,#8b93b8)}
	.hdr-sheet .lang{display:none} /* partie au header (lang-direct) */
	.top-right .lang.ftv-lang-inline{display:flex;align-items:center;gap:8px;border:0;padding:0;margin:0}
}

/* ==== APPEND 15/07 (6) — survol-aperçu v2 (retours Stéphane) :
   ① révélation +0,8 s (le chrome YouTube « pause » flashait encore une demi-seconde)
   ② l'anneau d'attente reste visible pendant ce délai supplémentaire
   ③ compte à rebours 3·2·1 au cœur de l'anneau (rangées) — plus remarquable
   ④ pendant la LECTURE : badge LIVE, titre, pays et voile s'effacent (vidéo nue). ==== */
.ch .thumb .ftv-prev.ftv-prev-on,.mq-tile .ftv-prev.ftv-prev-on{transition:opacity .45s ease .8s}
.ch.previewing .thumb::before,.mq-tile.previewing::before{
	content:'';position:absolute;left:50%;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;
	z-index:2;pointer-events:none;border-radius:50%;box-sizing:border-box;
	background:rgba(5,6,14,.45);border:2px solid rgba(255,255,255,.30);border-top-color:var(--blue-glow);
	animation:ftvPrevWait .8s linear infinite;transition:opacity .3s ease}
.mq-tile.previewing::before{width:20px;height:20px;margin:-10px 0 0 -10px}
.ch.previewing-on .thumb::before,.mq-tile.previewing-on::before{opacity:0;transition:opacity .3s ease .85s}
.mq-tile.previewing:not(.previewing-on)::after{
	content:"3";position:absolute;left:50%;top:50%;width:20px;height:20px;margin:-10px 0 0 -10px;
	display:flex;align-items:center;justify-content:center;background:none;
	font:700 9px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;color:#fff;
	text-shadow:0 1px 3px rgba(0,0,0,.95);z-index:3;pointer-events:none;
	animation:ftvCount 3.5s steps(1,end) forwards}
@keyframes ftvCount{0%{content:"3"}34%{content:"2"}67%{content:"1"}96%{content:""}}
.mq-tile.previewing-on .mq-live,.mq-tile.previewing-on .mq-cap,
.mq-tile.previewing-on::after{opacity:0;transition:opacity .35s ease .85s}
@media(prefers-reduced-motion:reduce){
	.mq-tile.previewing:not(.previewing-on)::after{animation:none;content:""}
	.ch .thumb .ftv-prev.ftv-prev-on,.mq-tile .ftv-prev.ftv-prev-on{transition:none}
}

/* ==== APPEND 15/07 — MANIFESTE VIVANT (idée Stéphane) : le foot-poem fait tourner des
   slogans (philosophie de la télé-monde, valeurs, nouveautés réelles) avec une typographie
   propre à chaque registre. Fondu doux, pause au survol, respect reduced-motion. ==== */
.foot-poem{transition:opacity .8s ease;min-height:3.2em}
.foot-poem.ftv-sl-fade{opacity:0}
.foot-poem--philo{font-family:Georgia,"Times New Roman",serif;font-style:italic;letter-spacing:.012em}
.foot-poem--monde{font-family:Georgia,"Times New Roman",serif;font-style:italic}
.foot-poem--news{font-style:normal}
.foot-poem--news b{color:var(--blue-glow,#5ea0ff)}

/* ==== APPEND 15/07 — MODES DE VIGNETTES : MUR MOSAIQUE (priorité 1 Stéphane) ====
   La page d'accueil gagne un 2e mode de présentation : « Mur mosaïque » — grille
   respirante des mêmes .mq-tile (previews par délégation conservées) + une RANGÉE
   DIAGONALE qui passe PAR-DESSUS le mur (angle différent, opacité en pourcentage
   via --ftv-mos-band-op, défaut 82 %). Toggle ▤/▦ dans .cl-main-head, choix mémorisé
   (localStorage ftv-tiles-mode). Défaut inchangé : Rangées. Réversible : retirer ce
   bloc + l'append JS jumeau dans freeetv.js. */
.cl-main-head{flex-wrap:wrap;row-gap:10px}
.ftv-mode-seg{display:inline-flex;border:1px solid var(--line-2);border-radius:999px;overflow:hidden;flex:none}
.ftv-mode-seg button{border:0;background:none;color:var(--muted);font-family:inherit;font-size:.76rem;font-weight:700;
  padding:8px 13px;cursor:pointer;transition:background .15s,color .15s;letter-spacing:.02em}
.ftv-mode-seg button:hover{color:var(--ink)}
.ftv-mode-seg button[aria-pressed="true"]{background:var(--blue);color:#fff}
/* — Le mur — */
.ftv-mosaic{display:none;position:relative;overflow:hidden;border-radius:14px;padding:2px}
.ftv-mode-mosaic .ftv-mosaic{display:block}
.ftv-mode-mosaic [data-cl-rows],.ftv-mode-mosaic .cl-loadmore{display:none}
.ftv-mos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
/* respiration sur la CELLULE (pas la tuile) : le hover translateY/scale de .mq-tile
   reste intact — une animation sur transform écraserait la transition du hover */
.ftv-mos-cell{animation:ftvMosBreathe 7.5s ease-in-out infinite}
@keyframes ftvMosBreathe{0%,100%{transform:scale(1)}50%{transform:scale(1.016)}}
.ftv-mos-grid .mq-tile{width:auto;opacity:1;
  transition:transform .18s,border-color .18s,box-shadow .2s,opacity .55s ease}
.ftv-mos-grid .mq-tile.ftv-mos-out{opacity:0}
/* — La rangée qui passe PAR-DESSUS (retour Stéphane 15/07) : angle différent,
     semi-transparente (le mur reste lisible derrière), défilement continu lent.
     translateX(-50%) + contenu ×2 = boucle sans couture (même recette que les rangées). — */
.ftv-mos-band{position:absolute;left:-14%;right:-14%;top:34%;z-index:4;transform:rotate(-7deg);
  opacity:var(--ftv-mos-band-op,.82);pointer-events:none}
.ftv-mos-band-track{display:flex;gap:12px;width:max-content;pointer-events:auto;
  animation:ftvMosBand 70s linear infinite;will-change:transform}
.ftv-mos-band .mq-tile{width:190px;flex:0 0 auto;box-shadow:0 18px 44px -18px rgba(0,0,0,.85);
  border-color:var(--line-2)}
@keyframes ftvMosBand{from{transform:translateX(0)}to{transform:translateX(-50%)}}
/* survol de la bande = pause : on peut viser une tuile qui passe */
.ftv-mos-band:hover .ftv-mos-band-track{animation-play-state:paused}
/* mobile : 3 colonnes, bande plus petite */
@media(max-width:640px){
  .ftv-mos-grid{grid-template-columns:repeat(3,1fr);gap:8px}
  .ftv-mos-band .mq-tile{width:132px}
  .ftv-mos-band{top:40%}
  .ftv-mos-band-track{gap:8px}
  /* tuiles ~117px en 3 colonnes : légendes et badge à l'échelle, sinon ça déborde */
  .ftv-mosaic .mq-cap{padding:6px 8px}
  .ftv-mosaic .mq-cap b{font-size:.68rem;line-height:1.1}
  .ftv-mosaic .mq-cap i{font-size:.58rem}
  .ftv-mosaic .mq-live{top:5px;left:5px;font-size:.5rem;padding:1px 5px}
}
/* mouvement réduit : ni respiration, ni bande (zéro distraction) */
@media(prefers-reduced-motion:reduce){
  .ftv-mos-cell{animation:none}
  .ftv-mos-band{display:none}
}

/* ==== APPEND 15/07 soir — display-rows v2 : FILET ANTI-FUITE (capture Stéphane PC) ====
   Les contrôles voyagent entre volet et header selon la largeur ; les rangées
   « titre + utilité » ne doivent EXISTER visuellement que DANS le volet. Hors
   .hdr-sheet, le texte est coupé net — même si un emballage voyage. */
.ftv-opt-txt{display:none}
.hdr-sheet .ftv-opt-txt{display:block}

/* ==== APPEND 15/07 soir — MOSAIQUE v2 (retours Stéphane en rafale) ====
   ① l'OPACITÉ c'est le MUR derrière (pas la bande) : bande à 100 %, tuiles à
     ~30-50 px de la bande semi-transparentes (35 %), le reste ≥ 50 % (dégradé
     selon la distance — le JS jumeau pose --ftv-mos-wall-op par cellule) ;
   ② DEUX rangées passent par-dessus (angles, sens et vitesses différents) ;
   ③ la vignette survolée GRANDIT par rapport aux autres. */
.ftv-mos-band{opacity:1;top:24%}
.ftv-mos-band--2{top:60%;transform:rotate(4.5deg)}
.ftv-mos-band--2 .ftv-mos-band-track{animation-direction:reverse;animation-duration:96s}
.ftv-mos-cell{opacity:var(--ftv-mos-wall-op,.62);transition:opacity .4s ease,transform .25s ease}
.ftv-mos-cell:hover,.ftv-mos-cell:focus-within{opacity:1;animation:none;transform:scale(1.13);z-index:6}
.ftv-mos-cell:has(.previewing){opacity:1;animation:none;transform:scale(1.13);z-index:6}
.ftv-mos-band .mq-tile:hover{transform:scale(1.1);z-index:7}
@media(max-width:640px){.ftv-mos-band{top:22%}.ftv-mos-band--2{top:64%}}
/* mouvement réduit : pas de bandes (v1) → pas d'estompe non plus, mur plein */
@media(prefers-reduced-motion:reduce){.ftv-mos-cell{opacity:1}}

/* ==== APPEND 15/07 soir — MOSAIQUE v3 : plus de haut de vignette coupé ====
   (capture Stéphane : « de nouveau ce bug où le haut des vignettes est coupé ».)
   Cause : .ftv-mosaic a overflow:hidden ; une vignette de la rangée du haut qui
   GRANDIT au survol déborde de ~8 px vers le haut → coupée. Fix : clip-path inset
   négatif en vertical (débordement haut/bas autorisé) mais 0 en horizontal (les
   bandes diagonales restent coupées sur les côtés, pas de débordement latéral). */
.ftv-mosaic{overflow:visible;clip-path:inset(-80px 0px -80px 0px)}
/* grossissement AUSSI sur les vignettes des rangées inclinées (retour Stéphane) */
.ftv-mos-band .mq-tile{transition:transform .2s ease,border-color .18s,box-shadow .2s}
.ftv-mos-band .mq-tile:hover{transform:scale(1.14);z-index:8;
	box-shadow:0 26px 60px -20px rgba(0,0,0,.9);border-color:var(--blue-glow,#5ea0ff)}
/* la cellule survolée du mur passe devant tout (déjà scale 1.13 en v2) */
.ftv-mos-cell:hover,.ftv-mos-cell:focus-within,.ftv-mos-cell:has(.previewing){z-index:9}

/* ==== APPEND 15/07 soir — FTV-PROSWITCH : bascule Vue Pro / Visiteur (ADMIN SEULEMENT) ====
   (Stéphane : « mets-moi un mode visiteur non pro avec un switch pour moi seulement
   et les autres admin ».) Le JS ne l'affiche QUE si la barre d'admin WordPress est là
   (donc connecté = équipe). Un visiteur normal ne voit jamais ce switch. Discret,
   coin bas-gauche, sous les modales. */
.ftv-proswitch{position:fixed;left:14px;bottom:14px;z-index:40;display:flex;align-items:center;gap:8px;
	padding:7px 12px;border:1px solid var(--line-2,rgba(255,255,255,.16));border-radius:999px;
	background:rgba(10,16,36,.82);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
	color:var(--soft,#c3c9e8);font-size:.72rem;font-weight:700;box-shadow:0 8px 24px -12px rgba(0,0,0,.7);
	cursor:pointer;user-select:none}
.ftv-proswitch:hover{border-color:var(--blue-glow,#5ea0ff)}
.ftv-proswitch .ftv-ps-dot{width:8px;height:8px;border-radius:50%;background:var(--muted,#8b93b8);
	box-shadow:none;transition:background .2s,box-shadow .2s}
body.ftv-pro .ftv-proswitch .ftv-ps-dot{background:var(--blue,#2e7bff);box-shadow:0 0 8px var(--blue,#2e7bff)}
.ftv-proswitch .ftv-ps-lbl b{color:var(--ink,#eef2ff)}
body.admin-bar .ftv-proswitch{bottom:calc(14px + 32px)}   /* au-dessus de la barre WP admin */
@media(max-width:640px){.ftv-proswitch{left:10px;bottom:10px;font-size:.68rem;padding:6px 10px}
	body.admin-bar .ftv-proswitch{bottom:calc(10px + 46px)}}
@media print{.ftv-proswitch{display:none}}

/* ==== APPEND 15/07 soir — FTV-BETA : bandeau « Bêta » intégré au design ====
   (demande Stéphane : visible mais esthétique, ton rassurant — le site évolue,
   un bug peut apparaître et durer quelques jours ces prochaines semaines.) */
.ftv-beta{display:flex;align-items:center;gap:12px;max-width:1220px;margin:10px auto 0;
	padding:9px 14px;border:1px solid var(--line-2,rgba(255,255,255,.14));border-radius:12px;
	background:linear-gradient(90deg,rgba(46,123,255,.10),transparent 60%);
	color:var(--soft,#c3c9e8);font-size:.82rem;line-height:1.45}
.ftv-beta-badge{flex:none;font-size:.62rem;font-weight:800;letter-spacing:.12em;
	text-transform:uppercase;color:#fff;background:var(--blue,#2e7bff);
	padding:3px 8px;border-radius:999px}
.ftv-beta b{color:var(--ink,#eef2ff);font-weight:600}
.ftv-beta-x{flex:none;margin-left:auto;border:0;background:none;color:var(--muted,#8b93b8);
	font-size:1.05rem;line-height:1;cursor:pointer;padding:8px;margin:-8px -6px -8px auto}
.ftv-beta-x:hover{color:var(--ink,#eef2ff)}
@media(max-width:640px){.ftv-beta{margin:8px 10px 0;font-size:.76rem;gap:9px}}
[data-theme="day"] .ftv-beta{background:linear-gradient(90deg,rgba(33,89,216,.08),transparent 60%)}

/* ==== APPEND 15/07 nuit — HEADER-SERRE : boules toujours rondes sur écrans très étroits ====
   (capture Stéphane, écran externe Honor Magic V2 : les boules de couleur écrasées en fines
   barres verticales.) Cause : sur une largeur très serrée, .top-right en nowrap comprime les
   boules (flex-shrink). Fix : les boules ne se compressent JAMAIS (flex:0 0 auto, ratio carré),
   et le header PASSE À LA LIGNE si ça ne tient pas (au lieu d'écraser ou de déborder). */
header.top .top-right{flex-wrap:wrap;row-gap:9px}
header.top .top-right .dot,
header.top .top-right .swatches .dot,
header.top .ftv-swatches-inline .dot,
header.top .swatches .dot{
	flex:0 0 auto !important;
	border-radius:50% !important;
	aspect-ratio:1 / 1;
}
/* le conteneur des boules peut lui-même passer à la ligne, jamais rétrécir sous sa taille utile */
header.top .top-right .swatches,
header.top .ftv-swatches-inline{flex:0 1 auto;flex-wrap:wrap;min-width:0;row-gap:6px}

/* ==== APPEND 15/07 nuit — MOSAIQUE-DRAG : bandes déplaçables au doigt ====
   (retour Stéphane : pouvoir pousser les vignettes de la mosaïque gauche/droite au
   doigt, comme les rangées par défaut.) pan-y : le scroll vertical de la page reste
   natif, l'horizontal vient à notre gestionnaire de drag. */
.ftv-mos-band-track{touch-action:pan-y;cursor:grab}
.ftv-mos-band-track.ftv-mos-dragging{cursor:grabbing}
.ftv-mos-band-track.ftv-mos-dragging a{pointer-events:none} /* pas de navigation accidentelle pendant le glissé */

/* ==== APPEND 15/07 nuit — MOSAIQUE-NOSCROLL : fin du scroll horizontal infini (bug iOS) ====
   (capture Stéphane : scroll à droite à l'infini en mosaïque, portrait ET paysage — jusqu'à
   +2326px !) Cause : bandes left:-14%/right:-14% + mosaïque en overflow:visible (mis en v3
   pour l'anti-coupure) ; le clip-path masquait à l'écran mais ne contenait PAS le débordement
   de LAYOUT. Fix : overflow-x:clip contient l'horizontal SANS créer de scroll, overflow-y:visible
   garde le grossissement vertical au survol. clip-path devient inutile. */
.ftv-mosaic{overflow-x:clip !important;overflow-y:visible !important;clip-path:none !important}
/* Filet de sécurité au niveau racine : aucun débordement horizontal de page ne peut plus
   créer de scroll fantôme (clip, contrairement à hidden, ne casse ni le sticky ni les
   scrollers internes .mq-scroller). Élimine aussi les ~36px résiduels du paysage. */


/* ==== APPEND 15/07 nuit — MANIFESTE VIVANT v2 : polices variées + textes plus grands ====
   Police manuscrite Caveat (SIL OFL, libre) AUTO-HÉBERGÉE en base64 (zéro CDN). Tailles
   augmentées pour la lisibilité (retour Stéphane : « fentes trop petites »). Registres :
   philo/citation/monde = serif italique ; manuscrit = Caveat ; valeur = sans nette. ==== */
@font-face{font-family:'ftv-hand';font-style:normal;font-weight:600;font-display:swap;
  src:url(data:font/woff2;base64,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) format('woff2')}
.foot-poem{transition:opacity .8s ease;min-height:3.4em;
  font-size:clamp(1.12rem,2.7vw,1.6rem);line-height:1.55;color:var(--ink,#eef2ff)}
.foot-poem.ftv-sl-fade{opacity:0}
.foot-poem--philo{font-family:Georgia,"Times New Roman",serif;font-style:italic;letter-spacing:.012em}
.foot-poem--monde{font-family:Georgia,"Times New Roman",serif;font-style:italic}
.foot-poem--citation{font-family:Georgia,"Times New Roman",serif;font-style:italic}
.foot-poem--citation i{font-style:normal;opacity:.65;font-size:.82em;letter-spacing:.04em}
.foot-poem--manuscrit{font-family:'ftv-hand',"Segoe Script","Bradley Hand",cursive;
  font-size:clamp(1.6rem,4.4vw,2.5rem);line-height:1.3;color:var(--blue-glow,#5ea0ff);letter-spacing:.01em}
.foot-poem--valeur{font-family:system-ui,-apple-system,sans-serif;font-weight:600;letter-spacing:.005em}
.foot-poem--valeur b{color:var(--blue-glow,#5ea0ff)}
.foot-poem--news{font-style:normal}
.foot-poem--news b{color:var(--blue-glow,#5ea0ff)}
