/* ═══════════════════════════════════════════════════════════════════════════
   VITRE.CSS — L'IDENTITÉ FINALE DE RENARD, EN UNE SEULE FEUILLE (24/09/2026)

   Djalil : « prends la dernière image, refais pareil sur la page d'accueil,
   conserve bien ce qu'on a de base au cas où ; les pastilles doivent être
   transparentes et laisser la lumière du fond venir se refléter ; ensuite on
   lance ce gros projet et on donne son identité finale à Renard ».

   RÈGLE : une page est à la charte quand elle charge CETTE feuille (jamais une
   copie) et que `node banc-vitre.mjs <page>` passe. La liste des pages
   converties vit dans site/vitre-pages.json. Le design classique de chaque
   page est gardé avant conversion dans site/.sauvegardes/.

   Contenu : 1. le premier écran de l'accueil (la carte de fin du film, l'aurore,
   la vitre, les perles de verre) — né dans index.html le 23/09, sorti ici le
   24/09 ; 2. les pièces pour toutes les pages : .v-fond, .v-entete, .v-caps,
   .v-bouton, .v-panneau. Les jetons de couleur (--action, --ok, --encre, --gris,
   --sourd, --trait, --trait-fort, --fond, --mono, --ui) viennent de la page ;
   cette feuille ne les redéfinit pas et ne connaît que deux couleurs de marque :
   l'orange agit, le vert tient.
   La feuille est servie réseau-d'abord par le service worker (pas dans la
   liste des fichiers « qui ne changent qu'en changeant de nom ») ; le ?v= dans
   les pages force malgré tout un nouveau chemin à chaque changement visible.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ══ LE PREMIER ÉCRAN · LA VITRE (23/09/2026) ═══════════════════════════════
   Djalil, à partir d'un arrêt sur image de notre film (IMG_3511, la carte de
   fin « Rien ne s'efface. ») : « tu vas prendre ça [l'effet de lumière de nos
   vidéos], tu vas reprendre la nouvelle interface du logo renard, tu vas
   rajouter le bouton tout en haut à droite avec les pastilles comme nous, et
   en fonction de ce que nous on a déjà, par exemple intention, engagement,
   preuve, je te laisse réécrire ça à ta manière ; à la place de "Rien ne
   s'efface" tu peux mettre "moteur d'imputabilité". En tout cas ça doit être
   au millimètre près, surtout cet effet de lumière derrière, comme emprisonné
   à travers une vitre, c'est le plus important : doux, souple comme sur nos
   vidéos, des contrastes pas agressifs, beaucoup de contraste mais pas
   agressif. »

   CE QUI EST FAIT. Le héros est la carte de fin du film, à l'échelle :
   toutes les cotes viennent du canevas 1080 × 1920 d'After Effects
   (ads/vendredi/ae/fin-25.jsx), multipliées par UN SEUL facteur --k =
   min(100vw, 640px) / 1080 — 0,364 sur un iPhone de 393 px, 0,593 sur la
   colonne de 640 px du bureau. Les écarts internes de la pile (ligne de base
   de l'accroche → trait 52, trait → tête 126,8, tête → capitales 79,8) sont
   ceux du film au demi-pixel. Entre « Renard » et le bouton, le film laisse
   116 : c'est cet écart, et lui seul, qu'on ouvre pour loger la phrase h1,
   qui n'existe pas dans le film. La rangée intention · engagement · preuve
   prend la place de l'URL grise du film, sous le bouton. Pas d'URL
   « monrenard.com » : on y est déjà. La pile part du haut comme dans le film,
   le bas reste vide.

   LA LUMIÈRE. Cinq disques aux couleurs de la marque, floutés à 320 (AE) =
   trois écarts-types → un radial-gradient dont les paliers SONT le profil erf
   du disque flouté (aucun filter, coût nul, aucun bord). Opacités du film :
   24 · 16 · 18 · 20 · 10 % — rien n'est ajouté. Le noir dessous est la rampe
   du film (#07090A → #000).
   ⚑ LES POSITIONS SONT CELLES DE LA PHOTO, PAS LE REPOS D'AE (23/09). Au
   repos d'After Effects (orange 260,480 ; bleu 180,1400 ; rayons 550 et 525)
   les cœurs se recouvrent de 150 px et fondent en gris-mauve au milieu-
   gauche, la bande sombre du milieu disparaît. La photo de Djalil est un
   instant précis de la dérive (t ≈ 29,6 s, ajusté au modèle erf) où les
   taches sont écartées vers les coins : c'est cet instant qui est le repos,
   et la dérive garde les périodes d'AE avec une amplitude × 0,35. Les taches
   vivent sur une PLAQUE 9:16 en « cover » : les % gardent le sens du film
   quelle que soit la fenêtre ; sur bureau la plaque est ancrée en haut et
   remontée de 15 % (la moitié haute du film).
   LA VITRE, c'est la trame du film et rien d'autre (points de 4 au pas de 48,
   #2A2E2C à 35 %, posés AU-DESSUS de la lumière : la poussière sur le
   verre), plus un fondu vers le noir en bas parce que le film n'a pas de
   bord. Teinte, jour rasant et liseré du premier jet sont retirés :
   invisibles (1 à 3 niveaux sur 255) ou faux (un filet clair d'un pixel, une
   guillotine en bas du héros). Pas de backdrop-filter : les taches sont déjà
   floues. Les seules lueurs : le trait orange (permanente, 50 %, comme dans
   le film) et le bouton, au clic seulement (75 %). Le halo de l'accroche est
   NOIR : il ne fait pas de lumière, il garde l'encre lisible sur l'aurore.

   RÉGLAGES (sur .v-aurore) : --aurore-op (1 = le film ; .9 = « doux »),
   --aurore-echelle (1 ; la plaque fait le reste), --aurore-vitesse (3 :
   dérives de 18 à 41 s), --aurore-flou (variante littérale .floue seulement).

   Rien de l'ancien héros n'est supprimé : la section s'appelle .v-heros et
   aucune règle .heros ne l'atteint. Les règles .decouvrir/.rail de l'ancien
   bouton ont été préfixées « .heros » (lignes ~140, 2031-2032, 2095-2123,
   2158, 2162, 2224-2230) : le bouton garde class="decouvrir" (banc-outils
   V.2 l'exige) sans hériter de la forme d'avant. Le CSS ne parie pas sur le
   JS : aucune classe n'est posée par un script ici. */

/* ⚑ LA BARRE DE DÉFILEMENT S'EFFACE (26/09/2026). Djalil : « le petit trait gris sur le bord droit quand
   on défile — affine-le, et rends la couleur beaucoup plus grise, qu'il se voie beaucoup moins. »
   On passe par les propriétés standard et PAS par `::-webkit-scrollbar` : dès qu'on style ce pseudo,
   Chromium abandonne la barre flottante et en dessine une permanente, avec sa gouttière — on gagnerait
   la finesse et on perdrait l'effacement, ce qui est l'inverse de ce qu'il demande.
   ⚑ CE QUE ÇA NE FAIT PAS, ET IL FAUT LE LUI DIRE : sur iPhone la barre est dessinée par le système et
   n'écoute aucune de ces deux règles. Sa longueur, elle, n'est réglable nulle part — le navigateur la
   calcule sur le rapport écran/page. La raccourcir de moitié demanderait de cacher la vraie et d'en
   dessiner une à nous. */
html{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.085) transparent}
.v-heros{--k:calc(min(100vw,640px)/1080);
  /* la hauteur de l'en-tête (absolu, il flotte sur le héros) */
  --v-entete:calc(max(16px, var(--oy,0px) + var(--rh,100vh)*0.0085) + max(46px, var(--rh,100vh)*0.0825));
  position:relative;isolation:isolate;overflow:hidden;background:var(--fond);
  /* pleine largeur : le héros sort de la colonne de main */
  margin:0 calc(50% - 50vw);max-width:none;
  /* ⚑ la pile part du HAUT, comme dans le film (accroche à 15 % du cadre, le
     bas vide) ; centrée, le tiers haut restait vide (correction du 23/09).
     Le jour sous l'en-tête est le cadre du film ramené à la largeur de
     l'écran et centré dans la fenêtre : accroche à ≈ 21 % sur 393 × 852,
     18,5 % sur 1440 × 900. Le plancher de 56 px sert au téléphone en
     paysage, où la pile déborde et défile sans coller à l'en-tête. */
  min-height:100svh;padding:calc(var(--v-entete) + max(56px, 10.5svh)) 16px calc(40*var(--k));
  display:flex;flex-direction:column;align-items:center;justify-content:flex-start;
  text-align:center;color:var(--encre)}
.v-heros > *{position:relative;z-index:1}

/* ── LA NAPPE : la rampe radiale du film (ADBE Ramp, [540,760] → [540,1900]) ── */
/* ⚑ LA PLAQUE SE DÉCOUPE PAR clip-path, PAS SEULEMENT PAR overflow (10/10/2026, iPad de Djalil, Safari 17.3.1 : de grands
   disques à bords nets et des rectangles sur l'accueil). Safari ne découpe pas toujours des enfants ANIMÉS avec overflow
   (même leçon que .v-point le 24/09) ; ici les disques font jusqu'à 3 580 px et la cage du bandeau ne découpe rien.
   clip-path est respecté sur les couches animées ; sur un moteur qui découpe déjà, il ne change pas un pixel (vérifié). */
.v-aurore{position:absolute;z-index:0;overflow:hidden;pointer-events:none;clip-path:inset(0);-webkit-clip-path:inset(0);
  /* la plaque 9:16 du film en « cover », centrée : les % et les disques gardent
     le sens du film quelle que soit la fenêtre (479 × 852 sur un iPhone de 393
     de large ; 563 × 1000 si le héros fait 1000 px de haut) */
  left:50%;top:50%;translate:-50% -50%;width:auto;height:auto;min-width:100%;min-height:100%;aspect-ratio:9/16;
  /* ⚑ LA DÉRIVE SE VOIT (24/09/2026). Djalil, devant l'accueil en ligne : « il manque les effets de lumière comme sur
     nos vidéos, qui bougent derrière ; ce sont ces lumières qui doivent venir se refléter à travers les pastilles ; leur
     manière de bouger ensemble doit être très naturelle, elles ne se mélangent jamais ». Le premier réglage bridait
     l'amplitude au tiers du film (--ax/--ay inline = AE × 0,35) et étirait les périodes (×3) : à l'œil, rien ne bougeait.
     --aurore-ampli multiplie les amplitudes inline (2 = les deux tiers du film) ; --aurore-vitesse 2 ramène les
     périodes à 12–27 s, celles du film à peu près. Les taches gardent leurs places de départ (celles de la photo),
     donc elles s'écartent et se croisent sans se fondre en gris. */
  --aurore-op:1;--aurore-echelle:1;--aurore-flou:47px;--aurore-vitesse:2;--aurore-ampli:2;--aurore-tour:40;
  background:radial-gradient(ellipse 105.6% 59.4% at 50% 39.6%,#07090A,#000 100%)}
/* ⚑ ELLES TOURNENT LES UNES AUTOUR DES AUTRES (24/09/2026). Djalil, devant la dérive : « elles doivent vraiment
   tourner entre elles, comme des masses opaques, donc l'orange n'est pas forcément en haut ; il faut vraiment qu'on
   sente que ça bouge, de manière très fluide ». Donc plus de dérive sur place : une ORBITE commune. Chaque tache
   tourne autour du centre de la plaque en --aurore-tour (40 s : un tour complet, neuf degrés par seconde, on le
   sent), sur sa propre ellipse (--ox, --oy en % de la plaque), et toutes à la MÊME cadence angulaire : l'écart entre
   elles ne change jamais, elles se croisent en profondeur mais ne se fondent pas en gris. Le rose tourne à
   l'intérieur, sur une petite orbite. Le mouvement est fait de deux allers-retours en ease-in-out (x sur .t, y sur b,
   décalés d'un quart de tour) : une orbite ronde-douce, sur le compositeur, sans repeint.
   Une tache : .t (orbite x) > b (orbite y) > i (le disque, qui respire). */
.v-aurore .t{position:absolute;left:0;top:0;width:100%;height:100%;
  animation:v-orbite-x calc(var(--aurore-tour)*.5s) ease-in-out calc((var(--ph) + .25)*var(--aurore-tour)*-1s) infinite alternate}
.v-aurore .t b{position:absolute;inset:0;display:block;
  animation:v-orbite-y calc(var(--aurore-tour)*.5s) ease-in-out calc(var(--ph)*var(--aurore-tour)*-1s) infinite alternate}
.v-aurore .t b>i{position:absolute;left:50%;top:50%;display:block;
  height:calc(var(--d)*var(--aurore-echelle)*1%);width:auto;aspect-ratio:1;translate:-50% -50%;
  opacity:calc(var(--o)*var(--aurore-op));
  animation:v-aurore-respire calc(var(--pr)*var(--aurore-vitesse)*1s) ease-in-out calc(var(--dr)*var(--aurore-vitesse)*-1s) infinite alternate}
/* les orbites : rayons en % de la plaque (x sur la largeur, y sur la hauteur), phase en tours ; à t = 0 la scène
   ressemble à la photo (orange en haut à gauche, jaune en haut à droite, rouge en bas à droite, bleu en bas à gauche) */
.v-aurore .t.orange{--ox:30;--oy:31;--ph:.125;--x:34.6;--y:17.7;--d:86.2;--o:.24;--kd:.66;--pr:4.49;--dr:2.25}
.v-aurore .t.jaune{--ox:26;--oy:36;--ph:.375;--x:64;--y:4.1;--d:73.7;--o:.16;--kd:.61;--pr:4.49;--dr:3.67}
.v-aurore .t.rouge{--ox:32;--oy:33;--ph:.625;--x:101.9;--y:92.2;--d:79.9;--o:.18;--kd:.64;--pr:4.49;--dr:5.1}
.v-aurore .t.bleu{--ox:34;--oy:30;--ph:.875;--x:-2.2;--y:87;--d:83.6;--o:.2;--kd:.65;--pr:4.49;--dr:6.53}
.v-aurore .t.rose{--ox:13;--oy:11;--ph:.5;--x:70.9;--y:37.5;--d:65.3;--o:.1;--kd:.56;--pr:4.49;--dr:7.96}
@keyframes v-orbite-x{from{translate:calc(var(--ox)*-1%) 0}to{translate:calc(var(--ox)*1%) 0}}
@keyframes v-orbite-y{from{translate:0 calc(var(--oy)*-1%)}to{translate:0 calc(var(--oy)*1%)}}
/* les paliers erf de chaque tache (100 % = le rayon de l'élément, R + 2,6 σ) */
.v-aurore .t.orange b>i{background:radial-gradient(circle closest-side,rgba(255,90,31,1) 33%,rgba(255,90,31,.977) 40.7%,rgba(255,90,31,.933) 47.1%,rgba(255,90,31,.841) 53.6%,rgba(255,90,31,.691) 60%,rgba(255,90,31,.500) 66.5%,rgba(255,90,31,.309) 72.9%,rgba(255,90,31,.159) 79.4%,rgba(255,90,31,.067) 85.8%,rgba(255,90,31,.023) 92.3%,rgba(255,90,31,.005) 100%,transparent 100%)}
.v-aurore .t.jaune b>i{background:radial-gradient(circle closest-side,rgba(245,181,46,1) 21.6%,rgba(245,181,46,.977) 30.6%,rgba(245,181,46,.933) 38.2%,rgba(245,181,46,.841) 45.7%,rgba(245,181,46,.691) 53.3%,rgba(245,181,46,.500) 60.8%,rgba(245,181,46,.309) 68.3%,rgba(245,181,46,.159) 75.9%,rgba(245,181,46,.067) 83.4%,rgba(245,181,46,.023) 91%,rgba(245,181,46,.005) 100%,transparent 100%)}
.v-aurore .t.rouge b>i{background:radial-gradient(circle closest-side,rgba(255,59,48,1) 27.7%,rgba(255,59,48,.977) 36.1%,rgba(255,59,48,.933) 43%,rgba(255,59,48,.841) 50%,rgba(255,59,48,.691) 56.9%,rgba(255,59,48,.500) 63.9%,rgba(255,59,48,.309) 70.8%,rgba(255,59,48,.159) 77.8%,rgba(255,59,48,.067) 84.7%,rgba(255,59,48,.023) 91.7%,rgba(255,59,48,.005) 100%,transparent 100%)}
.v-aurore .t.bleu b>i{background:radial-gradient(circle closest-side,rgba(56,189,248,1) 30.9%,rgba(56,189,248,.977) 38.8%,rgba(56,189,248,.933) 45.5%,rgba(56,189,248,.841) 52.1%,rgba(56,189,248,.691) 58.8%,rgba(56,189,248,.500) 65.4%,rgba(56,189,248,.309) 72.1%,rgba(56,189,248,.159) 78.7%,rgba(56,189,248,.067) 85.4%,rgba(56,189,248,.023) 92%,rgba(56,189,248,.005) 100%,transparent 100%)}
.v-aurore .t.rose b>i{background:radial-gradient(circle closest-side,rgba(255,122,156,1) 11.6%,rgba(255,122,156,.977) 21.8%,rgba(255,122,156,.933) 30.3%,rgba(255,122,156,.841) 38.8%,rgba(255,122,156,.691) 47.3%,rgba(255,122,156,.500) 55.8%,rgba(255,122,156,.309) 64.3%,rgba(255,122,156,.159) 72.8%,rgba(255,122,156,.067) 81.3%,rgba(255,122,156,.023) 89.8%,rgba(255,122,156,.005) 100%,transparent 100%)}
/* variante B, littérale (classe .floue sur .v-aurore) : disque plein + flou */
.v-aurore.floue .t b>i{background:none;border-radius:50%;filter:blur(var(--aurore-flou));
  height:calc(var(--d)*var(--aurore-echelle)*var(--kd)*1%)}
.v-aurore.floue .t.orange b>i{background:#FF5A1F}.v-aurore.floue .t.jaune b>i{background:#F5B52E}
.v-aurore.floue .t.rouge b>i{background:#FF3B30}.v-aurore.floue .t.bleu b>i{background:#38BDF8}
.v-aurore.floue .t.rose b>i{background:#FF7A9C}
/* les trois mouvements du film : sin/cos → un aller ease-in-out alterné */
@keyframes v-aurore-x{from{translate:calc(var(--ax)*var(--aurore-ampli,1)*-1%) 0}to{translate:calc(var(--ax)*var(--aurore-ampli,1)*1%) 0}}
@keyframes v-aurore-y{from{translate:0 calc(var(--ay)*var(--aurore-ampli,1)*-1%)}to{translate:0 calc(var(--ay)*var(--aurore-ampli,1)*1%)}}
@keyframes v-aurore-respire{from{scale:.88}to{scale:1.12}}
/* LA VITRE, au-dessus de la lumière : la trame du film (AE : points de 4 au
   pas de 48 sur le canevas 1080, encre #2A2E2C à 35 %), et un fondu vers le
   noir sur les 22 % du bas — le film n'a pas de bord, son cadre est l'écran,
   et la section suivante est noire. Portée par le héros, pas par la plaque
   (sinon la trame suivrait la plaque 9:16 et sa dérive). Elle passe sous la
   pile (z 1) et sur la plaque (z 0, avant elle dans l'arbre). */
/* ⚑ LA GRILLE EST COUPÉE NETTE (24/09/2026, 06h10). Djalil, après l'essai côte à côte : « on coupe la grille nette
   partout ; on garde la lumière, on veut juste un arrière-fond tout noir avec notre lumière derrière ». Trois
   grilles existaient sur l'accueil — celle du corps, celle posée sur main, celle du héros — et une quatrième sur les
   pages intérieures (.v-fond::after). Toutes retirées ; ne restent que les fondus vers le noir, qui ne dessinent rien. */
/* ⚑ LE LAVIS AVAIT UN GENOU (26/09/2026). C'était une rampe DROITE : noir plein en bas, transparent à
   22 %, rien entre les deux qu'une pente constante. Une pente constante posée sur une lumière qui, elle,
   décroît en courbe, ça fait une cassure visible là où les deux se croisent — la « démarcation » qu'il
   voit. Mesuré dans la gouttière : la lumière valait encore 6,1 à quarante pixels du bas, et 0,0 au bas.
   Même course, mais en courbe, et elle n'atteint le noir plein qu'au tout dernier pour cent. */
.v-heros::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(to top,#000 0,rgba(0,0,0,.94) 1.5%,rgba(0,0,0,.80) 4%,
    rgba(0,0,0,.60) 7.5%,rgba(0,0,0,.42) 11%,rgba(0,0,0,.26) 15%,rgba(0,0,0,.13) 19%,
    rgba(0,0,0,.05) 23%,rgba(0,0,0,0) 27%)}

/* ── LA PILE (cotes du film × --k) ──
   Inter, hauteur de ligne 1 : la ligne de base est à 0,864 em du haut de la
   boîte, le haut des capitales à 0,137 em ; c'est avec ces deux nombres que
   les marges ci-dessous reproduisent les écarts d'encre du film. */
.v-accroche{font-family:var(--ui);font-weight:800;font-size:calc(58.24*var(--k));line-height:1;
  letter-spacing:-.02em;padding-left:.02em;  /* l'approche traînante de CSS, compensée */
  word-spacing:.26em;  /* le film pose les mots à 56 × 0,52 = 29,1 d'encre à encre ; l'espace d'Inter n'en fait que 14 */
  color:var(--encre);white-space:nowrap;
  text-shadow:0 0 calc(20.8*var(--k)) rgba(0,0,0,.86)}
.v-trait{display:block;width:calc(426.4*var(--k));height:max(1.5px,calc(3.64*var(--k)));border-radius:99px;
  margin-top:calc(42.3*var(--k));background:var(--action);
  box-shadow:0 0 calc(22*var(--k)) rgba(255,90,31,.5)}   /* la seule lueur permanente : 11 canevas à 8 % du pic, comme dans la photo */
.v-tete{display:block;width:calc(260*var(--k));height:calc(260*var(--k));
  margin-top:calc(119*var(--k))}   /* l'encre de renard-tete-2.png commence plus bas dans sa boîte que celle du film : axe du trait → encre 133,7 comme la photo */
.v-nom{font-family:var(--ui);font-weight:600;font-size:calc(124*var(--k));line-height:1;letter-spacing:-.015em;
  padding-left:.015em;margin-top:calc(62.9*var(--k));color:var(--encre);white-space:nowrap}
.v-nom .lettre-verte{color:var(--ok);margin-left:-.015em}   /* le film serre le d de 1,9 px */
.v-titre{font-family:var(--ui);font-weight:500;font-size:max(16px,calc(44*var(--k)));line-height:1.28;
  letter-spacing:-.01em;margin-top:calc(72*var(--k));max-width:26ch;text-wrap:balance;color:var(--encre)}
.v-titre em{font-style:normal;color:var(--action)}
/* la rangée : un point plein, son mot en capitales mono, un fil entre deux.
   ⚑ Elle passe SOUS le bouton (order:1), à la place de l'URL grise du film —
   la seule ligne secondaire du film est sous l'appel, à ≈ 60 du cadre. Au-
   dessus, collée sous « Renard », elle se lisait comme une légende du logo
   (correction du 23/09). L'ordre du DOM ne change pas. */
.v-parcours{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;order:1;
  gap:clamp(6px,calc(14*var(--k)),10px);margin-top:calc(60*var(--k));
  font-family:var(--mono);font-weight:500;font-size:clamp(10px,calc(24*var(--k)),12.5px);
  line-height:1;letter-spacing:.14em;text-transform:uppercase;color:var(--gris)}
.v-pas{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
/* ── LE ROND DE VERRE LIQUIDE (24/09/2026) ──
   Djalil, après la première pose : « je ne parlais même pas de perles : laisse
   juste un rond de verre liquide, vide, où la lumière derrière vient juste se
   refléter. Là on voit qu'il y a une masse, non : vraiment que ça, comme du
   liquide glace. » Donc : pas de bille. Aucun voile, aucun reflet spéculaire,
   aucune épaisseur, aucune ombre portée. Un disque VIDE : la lumière de
   l'aurore le traverse (backdrop-filter, qui lit ce qui est DERRIÈRE : la
   plaque en z 0 sous la pile en z 1) à peine relevée et saturée, comme à
   travers une goutte d'eau ; et le seul signe du verre est son BORD — un
   liseré fin, un cheveu plus clair en haut qu'en bas, là où la lumière se
   courbe. Bleu dessous → rond bleu ; rouge dessous → rond rouge ; rien
   dessous → un rond de nuit à peine cerné, et c'est voulu : il est vide.
   Les trois règles .v-pas.intention / .engagement / .preuve n'existent plus :
   rien n'est peint, la couleur vient toujours de dessous.
   Coût : trois backdrop-filter de 13 à 16 px, un dégradé pour le bord. iOS :
   -webkit-backdrop-filter en tête ; pas d'url() ni de déplacement. */
/* ⚑ LE CIEL DANS LE ROND (24/09/2026). Djalil : « quand la lumière vient se refléter sur les pastilles, la pastille peut
   comporter plusieurs dégradés, parce que la lumière a plusieurs dégradés ; je veux que tout se reflète, de manière
   fluide, avec ses vrais dégradés : parfois le bleu est plus profond en haut qu'en bas ». Le backdrop-filter, lui, ne
   rend qu'une moyenne : sur 14 px, la lumière d'une tache de 700 px est plate. Une bille de verre, elle, REFLÈTE le
   ciel entier, compressé. Donc chaque rond contient un reflet miniature de l'aurore (.v-ciel > .v-aurore.ciel : les
   mêmes cinq taches, les mêmes orbites, les mêmes cadences — elles partent au même instant que la grande, donc
   restent en phase), à l'échelle d'une plaque de 36 × 64 px derrière un rond de 14 : on y voit les dégradés d'une
   tache, le passage d'une couleur à l'autre, et ça tourne avec le ciel. Chaque rond regarde une fenêtre différente
   du ciel (décalage par rang). Le reflet s'ajoute à la lumière vraie du dessous (mix-blend-mode screen) ; pas de JS. */
.v-point{position:relative;display:block;flex:none;overflow:hidden;isolation:isolate;
  width:clamp(13px,calc(40*var(--k)),16px);height:clamp(13px,calc(40*var(--k)),16px);
  border-radius:50%;
  /* ⚑ LA TRANSPARENCE DE LA PASTILLE « PRIVÉ · FLUIDE » (24/09/2026). Djalil, devant la page des formules : « c'est de
     cette couleur transparente que je te parlais pour les pastilles : vraiment transparente, exactement comme ça, et la
     lumière doit se refléter à travers ». Cette pastille-là : un verre à 1,5 % de blanc, un bord fin, rien d'autre.
     Donc le rond : le même verre (2 % de blanc), un bord fin clair, le fond vrai à peine relevé, et le reflet du ciel
     en filigrane — on voit À TRAVERS, la lumière passe, elle ne remplit pas. */
  background:rgba(255,255,255,.02);
  /* ⚑ SAFARI NE DÉCOUPE PAS UN ENFANT ANIMÉ AVEC overflow:hidden + border-radius (24/09/2026, Djalil sur iPhone :
     « le cercle, il y a un carré de lumière dessus ») : la plaque du reflet débordait en carré. clip-path, lui, est
     respecté par WebKit sur les couches composées ; -webkit-mask double la garde. Le rond redevient un cercle simple. */
  clip-path:circle(50% at 50% 50%);-webkit-clip-path:circle(50% at 50% 50%);
  -webkit-mask-image:radial-gradient(circle closest-side at 50% 50%,#000 97%,transparent 100%);
  mask-image:radial-gradient(circle closest-side at 50% 50%,#000 97%,transparent 100%);
  -webkit-backdrop-filter:blur(1.5px) saturate(1.4) brightness(1.15);
  backdrop-filter:blur(1.5px) saturate(1.4) brightness(1.15);   /* la lumière vraie traverse, à peine relevée */
  /* le bord du verre : un liseré fin, comme celui de la pastille des formules ; un cheveu plus clair en haut */
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.2), inset 0 1px 0 rgba(255,255,255,.12)}
.v-point::before{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;z-index:2;
  /* la courbure : un très léger anneau de lumière au bord, le centre reste vide */
  background:radial-gradient(circle at 50% 50%,rgba(255,255,255,0) 0,rgba(255,255,255,0) 62%,rgba(255,255,255,.07) 86%,rgba(255,255,255,.02) 100%)}
/* le reflet : une plaque 9:16 de 2,6 × 4,6 fois le rond, centrée, décalée selon le rang du rond */
.v-point .v-ciel{position:absolute;left:50%;top:50%;width:260%;height:460%;translate:-50% -50%;pointer-events:none;
  mix-blend-mode:screen;opacity:.55}   /* en filigrane : on voit le reflet, on voit à travers */   /* le reflet reste un reflet : le rond garde sa transparence, on voit à travers */
.v-pas:nth-of-type(1) .v-ciel{translate:-38% -46%}
.v-pas:nth-of-type(3) .v-ciel{translate:-50% -56%}
.v-pas:nth-of-type(5) .v-ciel{translate:-62% -48%}
.v-point .v-aurore{background:none;--aurore-op:1.3}   /* dans le verre, la lumière est un peu plus dense qu'au fond, sans redevenir une bille pleine */
.v-point .v-aurore .t b>i{animation-duration:calc(var(--pr)*var(--aurore-vitesse)*1s)}
.v-fil{display:block;width:calc(48*var(--k));height:1px;background:var(--trait-fort);flex:none}
/* le bouton du héros : il porte class="decouvrir v-bouton" (banc-outils lit « decouvrir ») ; sa forme, sa matière et ses
   gestes sont ceux de .v-bouton, UNE définition pour tout le site — ici seulement sa place dans la pile */
.v-heros .decouvrir{margin-top:calc(64*var(--k))}
.v-fl{display:block;width:calc(24.4*var(--k));height:calc(27.1*var(--k));color:var(--action);flex:none}
.v-fl svg{display:block;width:100%;height:100%;stroke:currentColor;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:3.5}
.v-sep{display:block;width:max(1px,calc(2*var(--k)));height:calc(56*var(--k));background:rgba(242,241,236,.22);flex:none;
  margin:0 calc(33*var(--k)) 0 calc(22.8*var(--k))}
.v-lib{display:block;margin-right:-.12em;translate:0 calc(5*var(--k));white-space:nowrap}
.v-cadre{display:none!important}   /* l'ancien cadre SVG à coins coupés : plus jamais dessiné, s'il en reste un dans un markup */
.v-heros .vers-cohorte{order:2;margin-top:calc(30*var(--k))}
/* ⚑ L'EN-TÊTE SUR L'AURORE (23/09/2026). Le 02/09, Djalil a voulu que le
   bandeau ne se lise plus comme « une barre rapportée » : sur la page noire
   d'alors, on lui a donné le noir de la page à 72 %, et la barre a disparu.
   Sur l'aurore, tout voile la redessine — à 72 % une bande noire à bord dur
   avec 16 px de lumière au-dessus ; à 30 % avec un liseré (premier jet) une
   bande plus sombre que la lumière au-dessus et au-dessous, soulignée d'un
   filet clair, et entre 641 et 899 px une plaque de 640 px à bords visibles.
   Même intention, geste inverse : AU REPOS, PAS DE VERRE DU TOUT. Le logo et
   le menu posent sur l'aurore comme le bouton du film. Mesuré : le fond le
   plus clair sous l'en-tête fait Y 70/255, l'encre reste au-dessus de 10:1.
   L'état condensé (bureau, après défilement, posé par le script) garde la
   lettre du 02/09 : noir à 72 % et flou. Sans script la page reste juste :
   l'en-tête absolu défile avec la page, aucune plaque. Les !important
   battent ceux de la règle d'origine (l.1832), qu'on ne touche pas. */
/* ⚑ LA BARRE : NUE EN HAUT, VERRE DÈS QU'ON DESCEND (24/09/2026). Djalil : « enlève cet effet transparent, laisse les
   boutons posés à même l'interface ; mais quand on descend, le flou et le noir arrivent, ça j'aime bien, on le garde —
   uniquement quand on commence à descendre. Et même une petite animation : quand on baisse, ça écarte légèrement le logo
   et la pastille. Quelque chose qui comprend qu'on est en train de baisser. »
   Donc, au repos : rien. Pas de fond, pas de flou, pas de filet — le renard et le bouton posent sur la lumière comme deux
   objets. Dès que la page descend d'un pixel (body.condense, posé par le script à toutes les largeurs) : la barre monte à
   ras, prend le noir à 62 % et son verre, se resserre en hauteur, et les deux objets S'ÉCARTENT de douze pixels chacun —
   c'est ce mouvement, plus que le noir, qui dit « tu descends ». Tout est en `translate` (la propriété seule, pas
   `transform`) : le centrage de la marque et du bouton vit dans leur `transform`, on ne le touche pas. */
header{background:transparent!important;box-shadow:none!important;
  border-bottom:1px solid rgba(242,241,236,0)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
body.v-accueil header{position:fixed!important;z-index:60!important;
  transition:background .4s cubic-bezier(.16,1,.3,1),border-color .4s cubic-bezier(.16,1,.3,1),
             top .38s cubic-bezier(.16,1,.3,1),height .38s cubic-bezier(.16,1,.3,1)!important}
body.v-accueil header .marque,body.v-accueil header #burger{
  transition:translate .42s cubic-bezier(.16,1,.3,1)}
/* ⚑ LE RENARD NE CHANGE PAS DE TAILLE (24/09/2026). Djalil : « quand il s'écarte il se décale d'un millimètre, et
   pareil quand on revient ; je veux qu'il soit fixe ». La mesure le disait : l'écart demandé était de 12 px et la marque
   n'en parcourait que 10. La cause : le renard rétrécissait (31 → 27 px) en même temps qu'il s'écartait ; la marque est
   centrée sur son point d'ancrage (`transform:translate(-50%,-50%)`), donc un contenu plus étroit la RE-CENTRE de deux
   pixels — un second mouvement, non voulu, par-dessus le premier. La tête garde donc sa taille dans les deux états :
   il ne reste qu'un seul mouvement, l'écartement, et il est net. */
/* on descend : le verre arrive, la barre se resserre, les deux objets s'écartent */
body.v-accueil.condense header{top:0!important;left:0!important;right:0!important;max-width:none!important;
  height:max(58px, calc(var(--rh) * 0.0685))!important;
  /* ⚑ ASSEZ DENSE POUR QUE RIEN NE TRANSPARAISSE (24/09/2026, 12h30). Djalil : « quand tu descends et tu remontes,
     il y a comme le logo Hibou qui apparaît au niveau du logo Renard ». Ce n'était pas un logo : à 62 % de noir et
     18 px de flou, les VERBES du flux — qui sont grands et clairs — se lisaient encore à travers la barre, juste à
     côté de la marque. Un fantôme de lettre à cette taille ressemble à une tête. On monte à 88 % et 26 px : la
     barre reste du verre (on voit la lumière bouger dessous) mais plus aucune forme ne se lit. */
  /* ⚑ PLUS DE BARRE, PLUS DE TRAIT (26/09/2026). Djalil : « tout en haut tu as mis une barre noire, enlève
     cette barre quand on descend, mets plutôt un effet transparent, mais sans trace ni contour — il doit
     être imperceptible. »
     Ce qui se voyait, ce n'était pas la densité : c'était ses deux ARÊTES. Un trait clair d'un pixel en
     bas, et le bord franc du flou, qui s'arrête net sur toute la largeur. Les deux partent.
     La densité, elle, RESTE — et c'est mesuré, pas choisi : à 62 % et 18 px, les verbes du flux se lisaient
     encore à travers la barre à côté de la marque, et un fantôme de lettre à cette taille ressemble à une
     tête de hibou. Elle est simplement portée par une plaque qui S'ÉTEINT vers le bas au lieu de s'arrêter.
     Le haut de la plaque touche le bord de l'écran, donc il n'a pas d'arête ; le bas se fond. */
  background:none!important;border-bottom-color:transparent!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
/* ⚑ RIEN QUE DU FLOU (26/09/2026, cinquième passe, et c'est la bonne).
   Djalil : « il ne doit pas y avoir d'ombre, c'est uniquement du flou. Pas d'ombres noires, rien, pas de
   dégradé, juste du flou, et derrière on voit le texte rentrer dedans. »
   CE QUE J'AI COMPRIS TROP TARD : c'est le NOIR qui faisait la démarcation, pas le flou. J'ai passé quatre
   tours à ajouter du noir pour cacher la frontière du flou, en fabriquant à chaque fois le défaut que je
   voulais corriger. Un voile sombre posé sur une page a forcément un bas, et ce bas se voit d'autant mieux
   qu'il est sombre. Un flou sans teinte, lui, ne change pas la luminosité moyenne — il ne change que la
   netteté. Sa frontière ne peut pas dessiner de ligne de contraste ; elle ne fait que séparer du net et du
   flou, ce que l'œil lit comme de la profondeur, pas comme un bord.
   Un élément, une déclaration, aucun fond. */
/* ⚑ UN SEUL CALQUE, ET C'EST LE MASQUE QUI FAIT LE DÉGRADÉ (26/09/2026, septième passe, et la bonne).
   Djalil : « ce n'est pas uniforme, je sens deux ou trois couches, et même la dernière je vois la couture.
   C'est autre chose, il n'y a pas de bord défini. »
   ⚑ JE M'ÉTAIS TROMPÉ SUR UN BANC, ET J'AI CONSTRUIT CINQ CHOSES SUR CETTE ERREUR. J'avais conclu qu'un
   masque annulait le flou d'arrière-plan — parce que je l'avais mesuré à UN SEUL endroit, là où le masque
   était déjà en train de s'éteindre. Mesuré sur toute la hauteur, la vérité est l'inverse :
       rayon        masque plein    à mi-fondu    presque parti
       sans flou          123,5         123,5            123,5
       18 px et plus          0            61            115,7
   Un masque ne tue pas le flou, il le MODULE. Là où il est plein le texte est entièrement dissous, là où
   il s'éteint le texte redevient net, et entre les deux la transition est CONTINUE — pas une marche.
   Donc : un élément, un flou, un masque. Aucune couture possible, puisqu'il n'y a rien à raccorder ; et
   aucun bord, puisqu'un masque n'en a pas. C'est ce qu'il décrivait depuis le début.
   Le rayon monte à 30 px : sous le masque il ne rend que sa pleine force en haut, et il faut qu'elle
   suffise à dissoudre une ligne de titre. */
.lentille-haut{display:none}
body.v-accueil.condense .lentille-haut{display:block;position:fixed;left:0;right:0;top:0;
  height:max(112px, calc(var(--rh,900px) * 0.132));z-index:59;pointer-events:none;
  backdrop-filter:blur(48px);-webkit-backdrop-filter:blur(48px);
  -webkit-mask-image:linear-gradient(to bottom,#000 0,#000 30%,rgba(0,0,0,.88) 38%,rgba(0,0,0,.66) 54%,
    rgba(0,0,0,.42) 68%,rgba(0,0,0,.22) 81%,rgba(0,0,0,.08) 92%,transparent 100%);
          mask-image:linear-gradient(to bottom,#000 0,#000 30%,rgba(0,0,0,.88) 38%,rgba(0,0,0,.66) 54%,
    rgba(0,0,0,.42) 68%,rgba(0,0,0,.22) 81%,rgba(0,0,0,.08) 92%,transparent 100%)}
body.v-accueil.condense header .marque{translate:-12px 0}
body.v-accueil.condense header #burger{translate:12px 0}
@media (prefers-reduced-motion:reduce){
  body.v-accueil header,body.v-accueil header .marque,body.v-accueil header #burger,
  body.v-accueil header .marque .fox{transition:none!important}
}

/* ⚑ LA MÊME TÊTE EN HAUT ET LA MÊME LENTILLE SUR LES AUTRES PAGES (26/09/2026). Djalil : « on a déjà un
   effet de zoom quand on baisse vers le bas et la barre elle reste tout en haut ; eh bien fais pareil pour
   formule, affiliation, etc. »
   Deux écarts avec l'accueil, et ils sont voulus tous les deux :
   — `sticky`, pas `fixed`. Sur l'accueil la tête vit dans la plaque du héros : elle n'occupe aucune place
     dans le flux, donc la rendre fixe ne coûte rien. Ici elle en occupe une. En `fixed` elle la perdrait et
     tout le contenu de la page remonterait de sa hauteur au chargement — un saut, pas un effet, et il
     faudrait rattraper la marge à la main sur chaque page, donc en oublier une. En `sticky` elle garde sa
     place, ne bouge pas d'un pixel au repos, et reste en haut dès qu'on descend. Rien à recalculer.
   — la tête NE SE RESSERRE PAS. Même cause : toute hauteur qu'elle perdrait en cours de défilement
     remonterait le contenu d'autant, en plein mouvement. Sur l'accueil c'est gratuit, ici ça se verrait.
   Reste exactement ce qu'il a nommé : la lentille qui avale le texte en haut, et l'écartement des deux
   objets qui dit qu'on descend. L'écartement fait 7 px et non 12 : ici la marque est collée au bord (18 px
   de retrait sur téléphone) au lieu d'être centrée sur un ancrage, et 12 px la poseraient à 6 px du bord. */
body.v-page header{position:sticky;top:0;z-index:60}
/* ⚑ DEUX PIÈGES DANS CES QUATRE LIGNES, TROUVÉS EN LES RELISANT (26/09/2026).
   · `header .marque` en descendant : sur l'affiliation la marque vit DANS un groupe avec le bouton
     Retour. Le descendant déplaçait la marque à l'intérieur du groupe, donc l'écart entre le renard et
     le Retour changeait au défilement, alors que les deux doivent voyager ensemble. `>` règle ça : on
     ne bouge que ce qui est posé directement dans la tête, marque seule ou groupe entier.
   · `header nav` : le menu déroulant EST un `<nav>`, et un enfant direct de la tête. La règle le
     déplaçait de sept pixels à chaque fois qu'on descendait. On l'exclut par son identité. */
body.v-page header > .marque,body.v-page header > .v-tete-g,
body.v-page header > nav:not(#menu):not(.v-menu),body.v-page header > .v-points{
  transition:translate .42s cubic-bezier(.16,1,.3,1)}
body.v-page.condense header > .marque,body.v-page.condense header > .v-tete-g{translate:-7px 0}
body.v-page.condense header > nav:not(#menu):not(.v-menu),
body.v-page.condense header > .v-points{translate:7px 0}
/* la lentille : un élément, un flou, un masque — la lettre du 26/09, à l'identique. Sur l'accueil la hauteur
   est prise sur --rh (l'échelle du héros), qui n'existe pas ici : on la prend sur la fenêtre. */
body.v-page.condense .lentille-haut{display:block;position:fixed;left:0;right:0;top:0;
  height:max(112px, 13.2svh);z-index:59;pointer-events:none;
  backdrop-filter:blur(48px);-webkit-backdrop-filter:blur(48px);
  -webkit-mask-image:linear-gradient(to bottom,#000 0,#000 30%,rgba(0,0,0,.88) 38%,rgba(0,0,0,.66) 54%,
    rgba(0,0,0,.42) 68%,rgba(0,0,0,.22) 81%,rgba(0,0,0,.08) 92%,transparent 100%);
          mask-image:linear-gradient(to bottom,#000 0,#000 30%,rgba(0,0,0,.88) 38%,rgba(0,0,0,.66) 54%,
    rgba(0,0,0,.42) 68%,rgba(0,0,0,.22) 81%,rgba(0,0,0,.08) 92%,transparent 100%)}
@media (prefers-reduced-motion:reduce){
  body.v-page header > .marque,body.v-page header > .v-tete-g,
  body.v-page header > nav,body.v-page header > .v-points{transition:none}
}
/* ══ LE MOTIF DE L'EN-TÊTE, UNE SEULE DÉFINITION (26/09/2026) ═══════════════════════════════════════
   Djalil : « il y a un bouton Retour et juste à côté les points ; le bouton Retour, on le met de
   partout sur affiliation, calculateur et connexion, mais DE LA MÊME MANIÈRE, parce qu'il y a une
   animation qui se fait en même temps, donc il faut le rapprocher du logo comme sur Renard. Et
   logiquement dans connexion on ne met pas les points, parce qu'on y sera déjà. Quand on appuie
   dessus, on aura la barre « se connecter à l'interface ». »
   Trois pièces, et elles vivent ici plutôt que recopiées dans chaque page — c'est la même règle que la
   barre du bas : une définition, sinon trois versions qui divergent au premier réglage.
   · `.v-tete-g` : le groupe de GAUCHE. La marque et le Retour y sont ensemble, donc ils voyagent
     ensemble quand la tête se condense. C'est ce qu'il demande par « rapprocher du logo » : ce n'est
     pas une question de distance, c'est que les deux forment un seul objet qui bouge d'un bloc.
   · `.v-retour` : la pastille de verre, à la charte (teinte, jour, un seul liseré).
   · `.v-points` et `.v-menu` : le bouton rond et son panneau. Le panneau est un `<nav>` posé dans la
     tête, donc il est exclu de l'écartement plus haut. */
/* ⚑ LE « D » VERT : PARTOUT SAUF SUR L'ACCUEIL (26/09/2026). Djalil : « celui-là n'a pas de d vert ;
   en revanche, dès qu'on sort de l'accueil, partout où il y a le renard, il l'a. »
   La règle existait, recopiée à l'identique dans sept pages — et absente de la huitième, ce qui s'est vu
   tout de suite en posant la nouvelle tête sur l'essai : le d y était blanc. Elle vit ici maintenant, et
   la garde `body.v-page` fait le tri toute seule : l'accueil est `v-accueil`, il garde son d blanc. */
/* ⚑ LA GARDE ÉTAIT TROP ÉTROITE, ET LA MESURE L'A DIT. Première écriture : `body.v-page`. Or trois
   pages de l'application — cohortes, plan, rapports — n'ont pas cette classe : elles ont perdu leur d
   vert au moment où j'ai retiré leurs copies locales. La règle qu'il a énoncée n'est pas « les pages en
   v-page », c'est « partout SAUF l'accueil » : on l'écrit telle quelle. */
body:not(.v-accueil) .marque .lettre-verte{color:var(--ok)}
header .v-tete-g{display:flex;align-items:center;gap:12px;min-width:0}
.v-retour{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 14px 0 11px;
  border:1px solid rgba(255,255,255,.12);border-radius:99px;
  font-size:12.5px;font-weight:550;color:var(--gris);cursor:pointer;font-family:var(--ui);
  background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,0) 52%),rgba(255,255,255,.025);
  background-repeat:no-repeat;background-origin:border-box;
  -webkit-tap-highlight-color:transparent;transition:color .18s ease,border-color .18s ease}
.v-retour svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round}
.v-retour:hover{color:var(--encre);border-color:rgba(255,255,255,.2)}
.v-points{background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,0) 52%),rgba(255,255,255,.025);
  background-repeat:no-repeat;background-origin:border-box;
  border:1px solid rgba(255,255,255,.12);border-radius:50%;width:38px;height:38px;flex:none;
  color:var(--gris);cursor:pointer;display:grid;place-items:center;
  -webkit-tap-highlight-color:transparent;transition:color .18s ease,border-color .18s ease}
.v-points:hover{color:var(--encre);border-color:rgba(255,255,255,.2)}
.v-points svg{width:18px;height:18px;fill:currentColor;stroke:none}
.v-menu{display:none;position:absolute;right:20px;top:62px;z-index:40;min-width:236px;overflow:hidden;
  border:1px solid rgba(255,255,255,.12);border-radius:14px;
  background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,0) 34%),rgba(18,18,17,.96);
  background-repeat:no-repeat;background-origin:border-box;
  box-shadow:0 14px 34px rgba(0,0,0,.6)}
.v-menu.ouvert{display:block}
.v-menu a,.v-menu button{display:block;width:100%;text-align:left;padding:13px 16px;font-size:14px;
  border:none;border-top:1px solid rgba(255,255,255,.07);background:none;color:var(--encre);
  font-family:var(--ui);cursor:pointer}
.v-menu > *:first-child{border-top:none}
.v-menu a:hover,.v-menu button:hover{background:rgba(255,255,255,.045)}
.v-menu .principal{font-weight:650}

/* ⚑ UNE EXCEPTION, ET UNE SEULE : l'affiliation sur ordinateur. Là, l'en-tête n'est pas une tête de vitrine,
   c'est la barre d'application de l'affilié connecté — les onglets du tableau de bord y entrent, posés par le
   script. Elle garde donc sa plaque et son `fixed`. On ne redessine pas un tableau de bord en passant. */
@media (min-width:820px){
  body.v-page.v-appli header{position:fixed}
  body.v-page.v-appli.condense .lentille-haut{display:none}
}

@media (min-width:900px){
  /* ⚑ SUR ORDINATEUR, L'ÉCHELLE SUIT AUSSI LA HAUTEUR (24/09/2026, 13h). Djalil : « le vrai problème de la version
     ordi, c'est que le bouton Parler à Renard est beaucoup trop bas ».
     Cause : --k ne dépendait que de la LARGEUR (min(100vw,640px)/1080). Sur un écran large mais court, l'échelle
     est plafonnée à 0,59 — soit 1,6 fois celle du téléphone — pendant que la hauteur disponible, elle, n'a presque
     pas bougé (852 px sur l'iPhone, 900 sur un portable). La pile descendait donc bien plus bas. MESURÉ sur cinq
     écrans : le bas de la pile tombait à 89 % de la fenêtre en 1440×900, et à 109 % en 1280×720 — les pastilles
     étaient carrément hors de l'écran sur un portable courant.
     On plafonne donc l'échelle par la hauteur aussi, et on resserre le retrait du haut. Après : bouton à 66 % au
     lieu de 75 %, plus aucun débordement (1280×720 passe de 109 % à 81 %). Le téléphone n'est pas touché, la règle
     ne vit qu'au-dessus de 900 px de large. */
  .v-heros{--v-entete:72px;padding-left:32px;padding-right:32px;
    --k:min(calc(min(100vw,640px)/1080), calc(var(--rh,100vh)/2100));
    padding-top:calc(var(--v-entete) + max(34px, 6svh))}
  /* la plaque 9:16 fait 1440 × 2560 : ancrée en haut et remontée de 15 %, le
     bureau voit la moitié haute du film — chaud en haut, sombre sous le
     bouton. (La « boîte du héros à l'échelle .8 » a été essayée : 57 % de
     noir, des taches isolées.) */
  .v-aurore{top:0;translate:-50% -15%}
  .v-cadre{stroke-width:2}
  .v-titre{max-width:none}
}
@media (max-width:359px){
  .v-accroche{font-size:max(17px,calc(58.24*var(--k)))}
}
@media (prefers-reduced-motion:reduce){
  /* sans mouvement : la scène de la photo, immobile — chaque tache à sa place inline (--x, --y) */
  .v-aurore .t,.v-aurore .t b,.v-aurore .t b>i{animation:none}
  .v-aurore .t{left:calc(var(--x)*1%);top:calc(var(--y)*1%)}
  .v-aurore .t b>i{left:0;top:0}
}


/* ══ LA CHARTE AU-DELÀ DU PREMIER ÉCRAN (24/09/2026) ═══════════════════════════
   Djalil : « ensuite on lance ce gros projet et on donne son identité finale à
   Renard ». L'identité, c'est le premier écran : l'aurore du film derrière la
   vitre, l'en-tête posé sur la lumière, les coins coupés à 45°, les capitales
   mono espacées, les perles de verre. Ce bloc en fait des pièces réutilisables
   pour TOUTES les pages : une page ne copie rien, elle charge /vitre.css et
   pose ces classes. Les réglages sont des variables CSS, jamais des nombres
   répétés. Deux couleurs de marque : l'orange agit, le vert tient. */

/* ── le fond d'une page intérieure : l'aurore, plus basse, fixée derrière tout ──
   Sur l'accueil l'aurore est le héros ; ailleurs elle est l'atmosphère : même
   plaque, mêmes taches, opacité réduite (--aurore-op .55) pour que les
   panneaux et le texte gardent le premier rôle. Fixée à la fenêtre : la page
   défile dessus comme devant une vitre. */
/* ══ LE FOND NE SAUTE PLUS AU DÉFILEMENT (26/09/2026) ══════════════════════════════════════════════════
   Djalil : « dans formules, quand je bouge, il y a des moments où ce n'est pas fluide avec le vert à
   l'arrière ; comme si le blanc se décalait d'un saut. Et il n'y est pas sur connexion. »
   Les deux observations ensemble donnaient la réponse : connexion tient en UN écran, donc il n'y a rien
   à y défiler et le défaut ne peut pas s'y montrer. Ce n'est pas la page qui diffère, c'est le geste.
   ⚑ MESURÉ : le fond est `fixed` avec `inset:0`, donc il prend la hauteur VISIBLE. Quand la barre
   d'adresse se replie, l'écran passe de 852 à 760 — et la plaque de lumière, qui se dimensionne sur lui,
   passe de 479 × 852 à 428 × 760. Son centre se déplace de 46 px. Tout le décor se redimensionne et
   glisse d'un coup, au milieu du défilement : c'est le saut, et il n'a rien à voir avec les couleurs.
   `100lvh` est la hauteur du plus GRAND état de la fenêtre. Elle ne change pas quand la barre se replie :
   le fond garde sa taille, la plaque garde la sienne, et il n'y a plus rien à recalculer en cours de
   route. La hauteur visible reste utilisée partout ailleurs — ici, on veut justement qu'elle ne le soit
   pas. */
/* ⚑ ET ON NE S'EN REMET PAS À `lvh` SEUL. Il dit bien « la plus grande hauteur », mais je ne peux pas
   le VÉRIFIER : mon navigateur de banc n'a pas de barre d'adresse, donc `lvh` y vaut simplement la
   fenêtre et le contrôle passe toujours au vert. Une garde que je ne sais pas éprouver n'en est pas
   une. `--h-fond` est posée par le script : la plus grande hauteur jamais vue, et elle ne redescend
   jamais. Elle se mesure, elle. `lvh` reste derrière en repli pour les navigateurs sans script. */
.v-fond{position:fixed;left:0;right:0;top:0;
  height:100vh;height:100lvh;height:var(--h-fond,100lvh);
  z-index:0;overflow:hidden;pointer-events:none;background:#000}
/* ⚑ ET LA LUMIÈRE SE POSE (26/09/2026). Djilal : « les couleurs sont trop agressives, il faut vraiment
   que ce soit doux. » À 0,55 les cinq taches se lisaient chacune ; à 0,40 elles se fondent en une seule
   ambiance, et c'est le mouvement qu'on remarque, plus les couleurs. */
.v-fond .v-aurore{--aurore-op:.40}

.v-fond::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(to top,rgba(0,0,0,.55) 0,rgba(0,0,0,0) 30%)}
/* ⚑ LA TRAME DÉFILE AVEC LA PAGE (24/09/2026). Djalil : « soit on garde les petits points partout, soit nulle part ;
   partout, pour que tout soit cohérent, parce que là on sent une cassure quand on descend ». Sur l'accueil la trame
   n'est donc PAS sur le fond fixe (des points immobiles sous une page qui défile, c'est une seconde cassure) : elle est
   sur main, même pas, même couleur, même ancrage que celle du héros — et elle défile avec le contenu. Le fond fixe
   ne garde que l'aurore. (Un premier réglage l'allumait avec le défilement, --fond-op : Djalil voyait « une
   démarcation noire » entre le héros et la suite ; retiré à 05h20, voir « UNE SEULE AURORE » plus bas.) */
body.v-accueil .v-fond::after{background:linear-gradient(to top,rgba(0,0,0,.55) 0,rgba(0,0,0,0) 30%)}
/* ⚑ CE QUI RESTE DES TROIS CIELS ESSAYÉS (24/09/2026). Le héros a repris SON ciel (plaque 9:16 centrée, cinq taches
   en orbite autour du centre) : c'est celui-là que Djalil garde. Le ciel fixé à la fenêtre et le ciel attaché au
   document sont retirés. La trame posée sur main l'est aussi (voir « LA GRILLE EST COUPÉE NETTE ») : sous le héros,
   il n'y a plus que du noir. */
body.v-page{--k:calc(min(100vw,640px)/1080);background:#000}
/* ⚑ L'EN-TÊTE SORT DE CETTE RÈGLE (26/09/2026). Elle posait `position:relative` sur tous les enfants directs
   du corps, et elle est à la fois PLUS SPÉCIFIQUE (deux classes, `:not()` compte son argument) et PLUS BAS
   dans le fichier que la règle qui rend la tête collante : celle-ci n'a jamais pris, sur aucune des quatre
   pages. Et le symptôme mentait — l'écartement du logo, lui, marchait ; j'ai donc cru la feuille en place et
   cherché un conflit dans les pages, alors que le conflit était à douze lignes du reste, dans un sélecteur
   où le mot « header » n'apparaît pas. Une recherche par nom ne trouve pas un sélecteur qui ne le nomme pas.
   Ce que la tête perd ici, la règle d'à côté le lui rend : `sticky` remplace `relative`, 60 remplace 1. */
body.v-page > *:not(.v-fond):not(header),body.v-accueil > *:not(.v-fond):not(header){position:relative;z-index:1}

/* ── l'en-tête intérieur : la marque à gauche, posée sur la lumière, sans plaque ──
   Même geste que l'accueil : au repos aucun verre. */
.v-entete{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;
  padding:max(16px,env(safe-area-inset-top)) 18px 0;min-height:64px}
.v-entete .marque{display:inline-flex;align-items:center;gap:10px;font-family:var(--ui);font-weight:700;font-size:17px;color:var(--encre);letter-spacing:-.01em}
.v-entete .marque img{width:40px;height:40px;display:block}
.v-entete .marque .lettre-verte{color:var(--ok)}
.v-entete nav{display:flex;gap:18px;font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--gris)}
.v-entete nav a:hover{color:var(--encre)}

/* ── les capitales mono : l'étiquette de la maison ── */
.v-caps{font-family:var(--mono);font-weight:500;font-size:clamp(10px,calc(24*var(--k,.364)),12.5px);
  line-height:1;letter-spacing:.14em;text-transform:uppercase;color:var(--gris)}

/* ── LE BOUTON : LA PILULE LIQUIDE (B), la signature (24/09/2026) ──
   Djalil a choisi B sur la planche After Effects : « ce petit reflet orange en bas, c'est parfait, il va énormément
   jouer, au millimètre près ». Donc : la géométrie du film (820 × 128 × --k), une pilule pleine, AUCUN trait. La matière
   est un verre clair : un fond blanc à 5–10 % qui s'assombrit vers le bas (l'épaisseur), une arête haute où la lumière
   se courbe (1,5 px de blanc à 42 %), un cheveu de blanc tout autour (le bord du verre). Et le reflet orange, en deux
   couches : une FLAQUE qui monte du bas sous le verre (::before, radial, ancrée à 118 % de la hauteur : c'est la lumière
   de l'action qui baigne le fond de la pilule) et un TRAIT sur l'arête basse (::after, 1,5 px, 62 % de la largeur,
   qui naît et meurt en fondu AVANT les courbes : sur une vraie pilule la lumière rasante ne suit pas l'arrondi). Le trait
   porte une lueur de 8 px. Pas de backdrop-filter : l'aurore est déjà floue, le verre est le fond blanc ; ça ne coûte rien.
   Au survol la flaque monte et le trait s'allume ; à l'appui la pilule se tasse (97 %) et la flaque emplit. La couleur du
   reflet dit le rôle : orange = agir, vert (.tenu) = c'est fait, blanc sourd (.sourd) = une porte secondaire. */
/* ⚑ L'ANGLE D'ORIGINE REVIENT, EN VERRE (24/09/2026, 10h30). Djalil, après trois essais photographiés sur la vraie
   page : « on reprend l'angle d'origine, mais avec le design translucide ». L'angle, c'est le polygone du tout
   premier bouton, retrouvé dans le code : sur le gabarit du film (820 × 128), le coin haut-gauche et le coin
   bas-droit coupés à 26 unités — points 26,0 820,0 820,102 794,128 0,128 0,26.
   ⚑ ET LE TRACÉ NE PEUT PLUS ÊTRE UNE BORDURE. Une bordure CSS ne suit pas une diagonale : sur un coin coupé par
   clip-path, elle est simplement rognée et la diagonale reste nue. On dessine donc le tracé autrement, sans SVG et
   sans nombre en double : le bouton lui-même est peint avec le DÉGRADÉ du tracé (blanc en haut, rien au milieu,
   orange en bas) et découpé à l'angle ; par-dessus, un enfant décalé d'un pixel et demi, découpé du même angle,
   porte le verre. Il ne dépasse du dégradé qu'un liseré d'un pixel et demi, qui épouse la coupe par construction.
   Le même objet sert au héros et au bas de page : une seule recette. */
.v-bouton{position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;
  width:calc(820*var(--k,.364));max-width:100%;height:calc(128*var(--k,.364));min-height:44px;
  border:0;cursor:pointer;text-decoration:none;
  --reflet:255,90,31;
  /* ⚑ LA COUPE SE DIT EN POURCENTAGES (24/09/2026, 11h). Djalil : « le bouton “Voir comment Renard fonctionne”, sur
     les angles il est mal fait ». Mesuré : la découpe valait 11 px sur les deux axes, pendant que le tracé SVG,
     étiré à la boîte (preserveAspectRatio="none"), coupait 9,7 px en largeur et 10,6 px en hauteur. Le trait et le
     bord ne tombaient donc pas au même endroit — d'où l'angle sale. En pourcentages du gabarit d'origine
     (26/820 = 3,171 % en largeur, 26/128 = 20,313 % en hauteur), les deux coïncident à TOUTES les tailles. */
  --cx:3.171%;--cy:20.313%;
  --coupe:polygon(var(--cx) 0,100% 0,100% calc(100% - var(--cy)),calc(100% - var(--cx)) 100%,0 100%,0 var(--cy));
  border-radius:0;clip-path:var(--coupe);
  background:linear-gradient(180deg,rgba(255,255,255,.105),rgba(255,255,255,.05) 52%,rgba(255,255,255,.065));
  box-shadow:0 2px 10px rgba(0,0,0,.45);
  color:var(--encre);font-family:var(--mono);font-weight:500;font-size:calc(46*var(--k,.364));line-height:1;
  letter-spacing:.12em;text-transform:uppercase;
  transition:translate .18s cubic-bezier(.16,1,.3,1),scale .16s cubic-bezier(.16,1,.3,1),box-shadow .2s,background .22s}
/* ⚑ ET LE TRACÉ EST DESSINÉ, PAS PEINT (24/09/2026, 10h40). Premier essai : le bouton peint avec le dégradé du
   tracé, le verre par-dessus à 1,5 px du bord. Rendu puis REGARDÉ : le verre est translucide par nature, donc le
   dégradé passait au travers et le bouton devenait un bloc orange. Le tracé est donc un TRAIT, dessiné en SVG
   comme le faisait le tout premier bouton — deux polygones superposés, l'un blanc masqué vers le bas, l'autre à la
   couleur du rôle masqué vers le haut. Ils se croisent au milieu des flancs, exactement comme sur la pilule, et
   ils suivent la diagonale, ce qu'une bordure CSS ne sait pas faire. */
/* ══ LA RÉFRACTION (24/09/2026, 11h30) ═══════════════════════════════════════════════════════════════════════
   Djalil : « la petite lueur orange qui montait du bas, elle n'est plus orange — elle est en fonction de quelle
   lumière prédomine en bas du bouton. »
   C'est exactement ce que fait un verre : il ne PORTE pas une couleur, il laisse passer celle qui est derrière.
   Donc aucune couleur n'est écrite ici. La bande du bas est un backdrop-filter : elle prend ce qu'il y a derrière
   le bouton — l'aurore — et l'amplifie (saturation ×3,4, luminosité ×1,75, flou 7 px pour que ce soit une lueur et
   non une image). Sous l'orange elle est orange ; quand le bleu passe, elle devient bleue ; sur le noir, elle
   s'éteint d'elle-même. Rien à régler, rien à accorder : c'est la lumière qui décide.
   Le masque la fait remonter du bas jusqu'à mi-hauteur en s'effaçant, comme la flaque d'avant. Elle vit DERRIÈRE
   les tracés (z-index -1, sous l'isolation du bouton) : le fil du bas et le liseré du haut restent nets, la lueur
   passe dessous. Et elle respire à peine — sept secondes et demie, entre 86 et 100 % — pour que la matière soit
   vivante sans jamais clignoter. */
/* ⚑ ET LE FILTRE NE VOYAIT RIEN (24/09/2026, 12h). Premier essai : un backdrop-filter sur la bande basse. Djalil :
   « j'ai littéralement l'impression que les deux boutons sont le même ». MESURÉ sur les quatre lumières, au pixel :
   écart (0,0,0) partout. Cause trouvée en sondant la chaîne des parents : le bouton porte lui-même un clip-path et
   une isolation — deux propriétés qui créent une RACINE DE FOND. Le fond qu'un backdrop-filter peut lire s'arrête
   à cette racine : la bande ne voyait que le verre du bouton, jamais l'aurore derrière. Un filtre parfaitement
   configuré, et rigoureusement aucun effet.
   La lueur est donc CALCULÉE, pas filtrée : le script « la lumière dominante » lit la position réelle de chaque
   tache de l'aurore, pèse chacune par sa distance au bas du bouton et par sa taille, et écrit la couleur qui
   l'emporte dans --lueur (et sa force dans --lueur-f). Aucune couleur n'est écrite ici : le dégradé ne fait que
   porter ce que le script a mesuré. Sans script, --lueur-f vaut 0 et la lueur n'existe pas — le bouton reste le
   verre nu, ce qui est un repli honnête. */
.v-bouton::after{content:"";position:absolute;left:0;right:0;bottom:0;height:58%;z-index:-1;pointer-events:none;
  background:linear-gradient(to top,
    /* ⚑ ET ELLE DOIT SE VOIR (24/09/2026). Premier dosage : 34 % × une force de 0,4 = 14 % d'opacité au plus fort,
       sur une bande de 27 px. Mesuré : deux points de RGB. Djalil : « j'ai l'impression que c'est la même ». Il
       avait raison — l'effet existait et ne se voyait pas. Le dosage est doublé, et la mesure se fait désormais sur
       la boîte RÉELLE du bouton, pas sur une bande devinée. */
    rgb(var(--lueur,255 90 31) / calc(.62 * var(--lueur-f,0))) 0%,
    rgb(var(--lueur,255 90 31) / calc(.38 * var(--lueur-f,0))) 26%,
    rgb(var(--lueur,255 90 31) / calc(.13 * var(--lueur-f,0))) 58%,
    rgb(var(--lueur,255 90 31) / 0) 100%)}
/* le jour zénithal : une lumière haute qui tombe sur la tranche, en OKLCH pour que le dégradé ne fasse pas de
   bandes sur un écran OLED (le repli en rgba sert les navigateurs qui ne connaissent pas encore l'espace) */
.v-bouton::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(to bottom,rgba(255,255,255,.09),rgba(255,255,255,0) 40%)}
@supports (color:oklch(1 0 0)){
  .v-bouton::before{background:linear-gradient(to bottom,oklch(1 0 0/.1),oklch(1 0 0/.04) 22%,oklch(1 0 0/0) 42%)}}

/* ⚑ LE TRAIT RENTRE D'UN DEMI-TRAIT (27/09/2026, Djalil : « dans le bouton Lancer ma cohorte, t'as mal tracé
   le liseré orange en bas »). Le bouton découpe sa forme (`clip-path`), et le tracé suivait EXACTEMENT ce
   contour : un trait de 1,5 px centré dessus perdait sa moitié extérieure à la découpe. Il restait 0,75 px,
   et sur la diagonale du bas la coupe tombait de travers — d'où un liseré maigre et sale. En rentrant le
   dessin de 0,75 px, toute l'épaisseur passe à l'intérieur et son bord extérieur affleure la découpe.
   ⚑ `width/height:auto` : sans ça, 100 % rendrait l'inset inopérant en largeur. */
/* ⚑ ET LA TAILLE RESTE EXPLICITE : avec `inset` seul et `width:auto`, un SVG reprend les proportions de son
   viewBox au lieu de remplir sa boîte — le tracé partait alors complètement de travers (vu au rendu). */
.v-bouton .v-trace{position:absolute;left:.75px;top:.75px;width:calc(100% - 1.5px);height:calc(100% - 1.5px);
  overflow:visible;pointer-events:none;z-index:0}
.v-bouton .v-trace polygon{vector-effect:non-scaling-stroke;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linejoin:miter}
.v-bouton .v-trace.haut{color:rgba(255,255,255,.46);
  -webkit-mask-image:linear-gradient(to bottom,#000 0,#000 30%,rgba(0,0,0,.4) 50%,transparent 66%);
          mask-image:linear-gradient(to bottom,#000 0,#000 30%,rgba(0,0,0,.4) 50%,transparent 66%)}
.v-bouton .v-trace.bas{color:rgba(var(--reflet),.58);
  -webkit-mask-image:linear-gradient(to top,#000 0,#000 34%,rgba(0,0,0,.35) 52%,transparent 68%);
          mask-image:linear-gradient(to top,#000 0,#000 34%,rgba(0,0,0,.35) 52%,transparent 68%)}
.v-bouton > *:not(.v-trace){position:relative;z-index:1}
.v-bouton:hover .v-trace.haut{color:rgba(255,255,255,.66)}
.v-bouton:hover .v-trace.bas{color:rgba(var(--reflet),.82)}
.v-bouton:hover{translate:0 -1px;box-shadow:0 4px 16px rgba(0,0,0,.5)}
.v-bouton:active{translate:0 0;scale:.97}
.v-bouton.tenu{--reflet:42,199,123}
.v-bouton.sourd{--reflet:190,188,182}
/* ── LES DEUX TAILLES DU BOUTON (24/09/2026) ──────────────────────────────────
   Djalil : « le bouton ancien design, il est balayé ». Balayé veut dire remplacé
   partout par la pilule B — mais une pilule de 820 unités ne va pas dans une carte
   de tarif. Deux variantes, MÊME peau, MÊME tracé, seule la boîte change :
     .fluide  la pilule se coupe à la longueur du libellé et se centre dans sa colonne ;
     .plein   elle prend toute la largeur de sa carte, et le libellé a le droit de
              passer à la ligne (« Essayer une cohorte pendant 7 jours » ne tient pas
              sur une ligne à 393 px : une pilule qui coupe son texte serait un défaut). */
.v-bouton.fluide{display:flex;width:fit-content;max-width:min(100%,520px);
  height:auto;min-height:52px;padding:15px clamp(20px,5vw,34px);gap:14px;
  font-size:clamp(10.5px,1.15vw,12px);letter-spacing:.17em}
.v-bouton.plein{display:flex;width:100%;height:auto;min-height:48px;padding:14px 16px;gap:10px;
  font-size:clamp(10.5px,2.8vw,12px);letter-spacing:.1em;text-align:center;line-height:1.5}
/* la flèche du libellé : elle prend la couleur du tracé, quelle que soit la variante */
.v-bouton .fl{color:rgb(var(--reflet));font-size:1.25em;line-height:1;flex:none}
.v-bouton .etincelle{width:18px;height:18px;flex:none;fill:none;stroke:rgb(var(--reflet));stroke-width:1.5;stroke-linejoin:round}
/* ⚑ .vitre N'EST PLUS QU'UN ALIAS (24/09/2026, 07h20). Elle servait à retirer l'orange des boutons du bas quand le
   héros, lui, le gardait. Le héros ne l'a plus : les deux boutons sont le même verre, et la classe ne change rien.
   Elle reste acceptée pour ne pas avoir à retoucher les pages qui la portent. */
.v-bouton.vitre{}

/* ── LE CHAPEAU (24/09/2026) : la petite ligne au-dessus d'un titre ─────────────
   Djalil : « la police fait trop code ; un peu plus… disons Siri ». Plus de capitales mono espacées : la sans de
   l'interface, en bas de casse, un poids moyen, un espacement à peine positif — la ligne que dirait un assistant,
   pas une étiquette de terminal. La marque garde son orange. */
.v-chapeau{margin:0 0 16px;font-family:var(--ui);font-weight:500;font-size:clamp(12.5px,1.3vw,14px);
  letter-spacing:.01em;text-transform:none;color:var(--gris)}
.v-chapeau span{color:var(--action)}

/* ── LE PANNEAU DE VERRE ARRONDI (24/09/2026) : ce qui porte un contenu (le film, un écran) ──
   La peau de la maison : une teinte claire à 6 %, un liseré d'un pixel, le jour clair sur l'arête haute, et un reflet
   large et flou en haut à gauche — c'est lui qui dit « vitre » sans rien dessiner. L'aurore passe derrière et se voit
   au travers. Pas de backdrop-filter ici : le panneau est grand, le flou coûterait pour rien sur du noir. */
.v-verre{position:relative;isolation:isolate;border-radius:calc(44*var(--k,.364));
  background:rgba(255,255,255,.06);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.18),inset 0 1.5px 0 rgba(255,255,255,.3),0 12px 40px -18px rgba(0,0,0,.7)}
.v-verre::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:1;
  background:radial-gradient(60% 55% at 22% 18%,rgba(255,255,255,.045),transparent 70%)}
/* la pilule de verre : une barre d'outils, une puce d'état */
.v-pilule{border-radius:999px;background:rgba(255,255,255,.05);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.14),inset 0 1px 0 rgba(255,255,255,.24)}
.v-bouton.tenu{--reflet:42,199,123}
.v-bouton.sourd{--reflet:190,188,182}
.v-bouton.sourd{background-image:linear-gradient(to top,rgba(var(--reflet),.16),rgba(var(--reflet),0) 50%),linear-gradient(180deg,rgba(255,255,255,.105),rgba(255,255,255,.05) 52%,rgba(255,255,255,.065))}
@media (prefers-reduced-motion:reduce){.v-bouton,.v-bouton::before,.v-bouton::after{transition:none}}

/* ── LE BOUTON DU MENU : LE ROND DE VERRE LIQUIDE (K), l'écho des pastilles (24/09/2026) ──
   Djalil a choisi K : le même verre que les ronds de la rangée. Sur l'accueil (body.v-accueil), l'octogone aux coins
   coupés disparaît (ses deux couches ::before et i.cadre ne se dessinent plus) ; le bouton devient un cercle de 40 px :
   un verre à 4,5 % de blanc qui laisse passer la lumière, un cheveu clair tout autour, une arête haute plus claire, un
   léger flou du fond quand un contenu passe dessous (la barre descendue). Les trois barres vertes restent, un peu plus
   courtes ; le point d'état se pose sur le bord du cercle, en haut à droite. C'est le seul backdrop-filter permanent en
   plus des trois ronds : quatre au repos, comme le banc l'exige. */
/* ⚑ LE MENU PREND LE MÊME ANGLE (24/09/2026, 10h30). Djalil : « l'angle d'origine avec le design translucide, plus
   les trois pastilles vertes en haut ». Le rond de verre devient donc la même forme coupée que le bouton, à sa
   taille : mêmes deux coins, même tracé peint par le fond et découvert par le verre. Les trois barres vertes ne
   changent pas — c'est le seul vert du premier écran, et c'est lui qui dit « le menu est ici ».
   ⚑ pas de backdrop-filter ici : il ne traverserait pas le clip-path proprement, et le verre suffit. */
/* ⚑ ET IL RESTE ABSOLU (24/09/2026, 11h). Djalil : « ça ne vient pas se poser naturellement sur la barre noire, il
   faut que tout soit bien aligné avec le logo Renard ». Mesuré : le logo centré à 53 px, le menu à 70 — dix-sept
   pixels d'écart. Cause : ma règle d'hier posait `position:relative`, ce qui annulait le `position:absolute;top:50%`
   qui aligne les deux sur la MÊME ligne médiane de l'en-tête. On ne redéclare donc plus la position ici : on ne
   touche qu'à la peau. */
body.v-accueil #burger{isolation:isolate;width:40px;height:40px;padding:0;display:grid;place-content:center;gap:4.5px;
  --c:9px;--coupe:polygon(var(--c) 0,100% 0,100% calc(100% - var(--c)),calc(100% - var(--c)) 100%,0 100%,0 var(--c));
  border:0;border-radius:0;clip-path:var(--coupe);
  background:rgba(255,255,255,.055);
  box-shadow:0 1px 3px rgba(0,0,0,.35);
  transition:background .2s}
body.v-accueil #burger .v-trace{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
body.v-accueil #burger .v-trace polygon{vector-effect:non-scaling-stroke;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linejoin:miter}
body.v-accueil #burger .v-trace.haut{color:rgba(255,255,255,.42);
  -webkit-mask-image:linear-gradient(to bottom,#000 0,#000 30%,transparent 62%);mask-image:linear-gradient(to bottom,#000 0,#000 30%,transparent 62%)}
body.v-accueil #burger .v-trace.bas{color:rgba(42,199,123,.5);
  -webkit-mask-image:linear-gradient(to top,#000 0,#000 32%,transparent 66%);mask-image:linear-gradient(to top,#000 0,#000 32%,transparent 66%)}
body.v-accueil #burger span{position:relative;z-index:1}
body.v-accueil #burger::before,body.v-accueil #burger i.cadre{display:none}
body.v-accueil #burger span{width:18px}
body.v-accueil #burger i.point{right:3px;top:3px;width:5px;height:5px}
body.v-accueil #burger:hover{background:rgba(255,255,255,.09);box-shadow:0 1px 3px rgba(0,0,0,.35)}
body.v-accueil #burger:active{scale:.94}

/* ── le panneau de verre : la charte des panneaux (05/09) posée sur l'aurore ──
   Une teinte claire très basse, un jour rasant en haut, un liseré d'un pixel,
   et les coins coupés de la maison (clip-path). Il se POSE sur la lumière au
   lieu d'être un trou : sur l'aurore le noir pur d'un panneau ferait une
   plaque, ce fond-là laisse passer 6 % de la lumière. */
.v-panneau{position:relative;isolation:isolate;padding:calc(18px + 2*var(--k,.364)) 18px;
  background:rgba(14,16,16,.78);
  clip-path:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px);
  box-shadow:inset 0 1px 0 rgba(255,244,230,.07)}
.v-panneau::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:-1;
  background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,0) 80px)}
.v-panneau::after{content:"";position:absolute;inset:0;pointer-events:none;
  clip-path:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.v-panneau.orange::after{box-shadow:inset 0 0 0 1px rgba(255,90,31,.55)}

/* ── la perle de verre, seule (hors rangée) : un état, éclairé par ce qu'il y a dessous ── */
.v-perle{display:inline-block;vertical-align:middle}


/* ══ LA FAQ ET LE PIED DU SITE, POUR TOUTES LES PAGES (26/09/2026) ══════════════════════════════════
   Venus de index.html, où ils vivaient seuls. Djalil a demandé le bas de page sur le calculateur,
   l'affiliation et les formules ; dès qu'un bloc sert quatre pages il n'a plus rien à faire dans l'une
   d'elles. Le balisage, lui, reste recopié dans chaque page — c'est la règle de la maison, faute de
   gabarit — et ads/porte/_pied-accord.mjs vérifie que les quatre copies restent identiques.
   ⚑ CE QUI A CHANGÉ EN CHEMIN, ET RIEN D'AUTRE : le lien « Fonctionnement » pointait sur « #fonctionnement ».
   Une ancre nue ne mène nulle part depuis une autre page : elle devient « /#fonctionnement », qui marche
   partout, y compris depuis l'accueil lui-même. */
.faq{margin-top:34px;text-align:center}
.fq-oeil{display:inline-flex;align-items:center;gap:8px;
  font-family:var(--mono);font-size:9.5px;font-weight:500;letter-spacing:.16em;
  text-transform:uppercase;color:var(--action)}
.fq-oeil i{width:5px;height:5px;border-radius:50%;background:var(--ok);
  box-shadow:0 0 8px rgba(42,199,123,.9)}
.fq-titre{margin:12px 0 0;font-size:clamp(23px,6.2vw,29px);font-weight:650;
  letter-spacing:-.02em;color:var(--encre)}
/* ══ LA FAQ SE MET À NU (26/09/2026) ═══════════════════════════════════════════════════════════════════
   Djalil : « toutes les pastilles là, avec les pastilles oranges à côté — j'ai envie d'enlever ces
   panneaux-là ; soit on met le texte à nu. »
   Cinq cartes de verre les unes sous les autres, chacune avec sa pastille orange encadrée, ça faisait
   cinq objets de plus juste avant le seul appel de la page. Une question n'est pas un objet : c'est du
   texte qu'on ouvre. Il ne reste donc que le texte, séparé par un filet, et le chevron qui dit que ça
   s'ouvre — plus de cadre, plus de fond, plus d'ombre, plus de pastille encadrée.
   ⚑ ET LES ICÔNES RESTENT, SANS LEUR BOÎTE. Il me laissait choisir. Les retirer tout à fait rendait la
   section muette au balayage : cinq lignes de texte gris identiques, où l'œil ne se pose nulle part. Le
   dessin seul, petit et sourd, suffit à faire reconnaître la ligne avant de la lire — c'est ce qu'on
   voulait, et ça ne coûte aucun objet de plus. */
.fq-l{display:flex;flex-direction:column;gap:0;margin-top:14px;text-align:left}
.fq{border-bottom:1px solid rgba(255,255,255,.07)}
.fq:last-child{border-bottom:0}
.fq summary{display:flex;align-items:center;gap:12px;padding:15px 2px;
  cursor:pointer;list-style:none}
.fq summary::-webkit-details-marker{display:none}
.fq-ic{width:19px;height:19px;flex:none;display:grid;place-items:center}
.fq-ic svg{width:17px;height:17px;fill:none;stroke:rgba(255,90,31,.62);
  stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.fq summary b{flex:1;font-size:13.5px;font-weight:600;letter-spacing:-.01em;
  color:var(--encre);line-height:1.35}
.fq-ch{flex:none;width:8px;height:8px;border-right:1.5px solid rgba(255,255,255,.34);
  border-bottom:1.5px solid rgba(255,255,255,.34);transform:rotate(45deg);
  transition:transform .25s;margin-right:3px}
.fq[open] .fq-ch{transform:rotate(225deg);border-color:rgba(255,90,31,.68)}
.fq p{margin:0;padding:0 2px 15px 31px;font-size:12px;line-height:1.6;
  color:var(--gris)}
/* ⚑ « COMMENT DÉMARRER » RÉPOND À DEUX PERSONNES (26/09/2026). Djalil : « précise que si vous êtes coach
   ou formateur, on vous montrera Renard en action sur vos cas réels, et si vous êtes utilisateur, une
   phrase profonde mais simple. »
   Une seule réponse ne pouvait pas tenir : le formateur veut voir l'outil, la personne seule veut savoir
   par où commencer. Deux entrées, chacune nommée en gras, et un peu d'air entre elles — sans quoi les
   deux se lisent comme un seul pavé et personne ne trouve la sienne. */
.fq p b{display:inline;font-weight:650;color:var(--encre)}
/* ⚑ un `br` ne prend pas de marge : les deux cas restaient collés. Chaque cas est donc un BLOC, et
   l'air se met entre les blocs, là où le navigateur sait le mettre. */
.fq p .cas{display:block}
.fq p .cas + .cas{margin-top:10px}
.fq-tout{display:inline-flex;align-items:center;gap:8px;margin-top:16px;
  border:1px solid var(--trait-fort);border-radius:99px;padding:11px 20px;
  font-size:13px;font-weight:600;color:var(--encre);text-decoration:none;
  box-shadow:var(--lum);
  background:linear-gradient(180deg,rgba(255,248,238,.05),rgba(255,248,238,0) 55%),var(--carte2)}
.fq-tout span{transition:transform .18s}
.fq-tout:hover span{transform:translateX(3px)}

/* ── le pied du site (maquette 37), le logo tout en bas ── */
/* ⚑ PLUS DE TRAIT DE SÉPARATION EN BAS (26/09/2026). Djalil : « d'imputabilité, tout ce qu'il y a tout
   en bas, pas besoin de trait de séparation. »
   Il y en avait deux : un au-dessus du pied, un au-dessus de la ligne de copyright. Un filet sert à
   séparer deux choses qu'on pourrait confondre — ici, personne ne confond le pied avec le reste : le
   changement de taille et de couleur le dit déjà. Le trait ne séparait rien, il coupait. */
.pied-site{max-width:640px;margin:36px auto 0;padding:22px 20px 14px;text-align:left}
.p-haut{display:flex;flex-direction:column;gap:20px}
.p-marque{display:flex;align-items:center;gap:11px}
.p-marque img{width:34px;height:34px;object-fit:contain}
.p-marque b{display:block;font-size:16px;font-weight:700;letter-spacing:-.015em;
  color:var(--encre)}
.p-marque span{display:block;font-size:11px;color:var(--sourd);margin-top:2px}
.p-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px 12px}
.p-cols i{display:block;font-style:normal;font-family:var(--mono);font-size:9px;
  font-weight:600;letter-spacing:.12em;text-transform:uppercase;
  color:var(--sourd);margin-bottom:7px}
.p-cols a{display:block;font-size:12.5px;color:var(--gris);text-decoration:none;
  padding:3px 0}
.p-cols a:hover{color:var(--encre)}
.p-bas{display:flex;flex-wrap:wrap;gap:8px 14px;justify-content:space-between;
  align-items:center;margin-top:20px;padding-top:13px;font-size:10.5px;color:var(--sourd)}
/* ══ LES BADGES RÉSEAU (26/09/2026) ═════════════════════════════════════════════════════════════════════
   Djalil : « rajoute juste les badges réseau qu'on viendra connecter dans la semaine, tout en bas. »
   ⚑ ILS NE SONT PAS CLIQUABLES, ET C'EST VOULU. Aucun compte n'existe dans le dépôt — seulement des
   points d'API — et il dit lui-même que la connexion vient cette semaine. Un lien mort au bas d'une page
   vaut moins que pas de lien du tout. Ce sont donc des `span` ; ils deviendront des `a` dès qu'il donne
   les cinq adresses, sans rien changer d'autre.
   ⚑ ET ILS SONT SOURDS, pas en couleurs de marque. La ceinture d'intégrations, elle, porte les vraies
   couleurs : c'est là qu'on prouve à quoi Renard se branche. Ici on est dans le pied, après la dernière
   décision — cinq marques en couleur y reprendraient la parole alors que la page est finie. */
.p-reseaux{display:flex;gap:9px;margin-top:18px}
.p-rs{width:31px;height:31px;border-radius:9px;display:grid;place-items:center;flex:none;
  border:1px solid rgba(255,255,255,.10);
  background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,0) 46%),rgba(255,255,255,.03);
  background-repeat:no-repeat;background-origin:border-box}
.p-rs svg{width:14.5px;height:14.5px;display:block;fill:rgba(242,241,236,.50)}
.p-etat{display:inline-flex;align-items:center;gap:6px;color:var(--ok)}
.p-etat i{width:6px;height:6px;border-radius:50%;background:var(--ok);
  box-shadow:0 0 7px rgba(42,199,123,.8);animation:etat-b 2.6s ease-in-out infinite}
@keyframes etat-b{0%,100%{opacity:.6}50%{opacity:1}}
@media (min-width:900px){
  .pied-site{max-width:1020px}
  .p-haut{flex-direction:row;justify-content:space-between;align-items:flex-start}
  .p-cols{grid-template-columns:repeat(4,auto);gap:0 44px}
  .faq{max-width:640px;margin-left:auto;margin-right:auto}
}


/* le contact direct, sous les questions */
.fq-contact{display:flex;flex-direction:column;gap:8px;margin-top:14px;text-align:left}
.fq-contact a{display:flex;align-items:center;gap:12px;text-decoration:none;
  border:1px solid var(--bord-creux);border-radius:14px;padding:12px 14px;
  box-shadow:var(--lum);
  background:linear-gradient(180deg,rgba(255,248,238,.045),rgba(255,248,238,0) 34%),var(--carte)}
.fq-contact svg{width:19px;height:19px;flex:none;fill:none;stroke:var(--action);
  stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.fq-contact i{display:block;font-style:normal;font-size:10.5px;color:var(--sourd)}
.fq-contact b{display:block;font-size:13.5px;font-weight:650;color:var(--encre);margin-top:1px}
.fq-contact a:hover b{color:var(--action)}
/* ⚑ LES DEUX DERNIERS OBJETS SE DÉSHABILLENT (26/09/2026). Ni l'un ni l'autre ne disparaît — ils servent —
   mais ils rendent leur cadre : plus de boîte, plus de fond, plus d'ombre. À la fin d'une page, ce qui a
   une FORME est ce qu'on croit devoir faire. Il ne doit y en avoir qu'un, et c'est la démo B2B. */
.fq-contact.nu{align-items:center;margin-top:18px}
.fq-contact.nu a{border:0;border-radius:0;padding:0;box-shadow:none;background:none;gap:9px}
.fq-contact.nu i{display:none}
.fq-contact.nu b{font-size:12.5px;font-weight:550;color:var(--gris);
  border-bottom:1px solid rgba(255,255,255,.12);padding-bottom:2px}
.fq-contact.nu a:hover b{color:var(--encre)}
.fq-contact.nu svg{width:15px;height:15px;stroke:var(--sourd)}
.fq-tout.nu{border:0;border-radius:0;padding:0 0 2px;background:none;box-shadow:none;
  font-size:12.5px;font-weight:550;color:var(--gris);
  border-bottom:1px solid rgba(255,255,255,.12);margin-top:22px}
.fq-tout.nu:hover{color:var(--encre)}
.ig-sprite{position:absolute;width:0;height:0;overflow:hidden}

/* ══ QUAND QUELQU'UN EST CONNECTÉ, LA PAGE N'EST PLUS UNE VITRINE (26/09/2026) ══════════════════════
   Djalil : « il ne faut pas mettre la FAQ quand la personne est connectée, parce que là elle a la
   barre du menu — Renard, Cohortes — qui reste fixe en bas, et toute la FAQ qui s'affiche dessous,
   c'est moche. »
   Il a raison sur le fond, et pas seulement sur le laid : une FAQ qui explique « qu'est-ce que
   Renard » et un pied qui propose « Tarifs / Démo » s'adressent à quelqu'un qui hésite encore. Sous
   une barre d'application, ce sont les restes de la vitrine sous les pieds du client.
   ⚑ ET LA BARRE ELLE-MÊME SUIT LA MÊME RÈGLE, MAINTENANT SUR TOUTES LES PAGES. Elle était cachée aux
   visiteurs sur l'affiliation seulement ; le calculateur, lui, la montrait à tout le monde, avec ses
   cinq portes fermées. Une règle écrite pour une page alors qu'elle vaut pour le site entier finit
   toujours par manquer quelque part — elle vit ici désormais.
   ⚑ CE QUI DISPARAÎT NE DOIT PAS ÊTRE PERDU : les liens légaux du pied sont repris dans le panneau
   des trois points, qui, lui, reste. */
.barre-bas{display:none}
body.a-session .barre-bas{display:block}
body:not(.a-session){--bas:0px}
body.a-session .faq,body.a-session .pied-site{display:none}
/* ⚑ LES RÉPONSES SONT REPLIÉES SUR LES PAGES DE DÉCISION (26/09/2026). Djalil, sur iPhone : « quand je
   vais sur formules, ça m'active le Lecteur automatiquement, alors qu'avant ça ne le faisait jamais. »
   Le Lecteur de Safari s'allume quand il croit lire un ARTICLE, et sa mesure est la densité de texte
   rendu. Avant aujourd'hui, ces pages n'étaient que des cartes et des boutons ; en y posant quatre
   réponses ouvertes de deux cents caractères plus un pied, j'ai fabriqué l'article. Repliées, les
   réponses ne sont pas rendues, donc elles ne comptent plus — et la page de prix finit sur son bouton
   au lieu de finir sur un mur de texte, ce qui vaut mieux de toute façon.
   ⚑ CE N'EST QU'UNE MOITIÉ DE CAUSE : l'autre est un réglage de SON Safari, « utiliser le Lecteur
   automatiquement » pour monrenard.com, qu'une page ne peut pas désactiver. Je le lui dis. */


/* ══ LE GRIS SOURD REMONTE (26/09/2026) ═════════════════════════════════════════════════════════════
   Djalil, sur la page d'essai : « fais gaffe à la luminosité, il y a des parties trop finement grises,
   et quand tu baisses la luminosité du Mac on ne voit pas ».
   Mesuré plutôt que jugé à l'œil : `--sourd` valait #63615A, soit un contraste de 3,25:1 sur notre
   noir. Le seuil de lecture d'un texte courant est 4,5:1. Baisser la luminosité d'un écran ne change
   pas le RAPPORT, mais il écrase les valeurs absolues : tout ce qui est déjà juste disparaît en
   premier. Une seule variable était en cause, et elle portait la moitié des petits textes du site :
   les sous-titres, les durées, les descriptions de scénario, les colonnes du pied.
   #7C7A72 la met à 4,67:1. Ce n'est pas plus clair « à l'œil », c'est LISIBLE, ce qui n'est pas la
   même chose : la teinte chaude est conservée au centième près, seule la valeur monte.
   ⚑ `--gris` (#9C9A92, 7,18:1) n'a pas bougé : il passait déjà. On ne remonte pas ce qui va, sinon
   toute la page finit au même niveau et la hiérarchie meurt. Le banc : ads/porte/_contraste.mjs.
   ⚑ TROIS GRIS AU LIEU D'UN. Après la correction, formules et connexion criaient encore : elles
   portaient LEUR PROPRE gris sourd, écrit à la main — #67655E, #6B6962, et un #63615A recopié hors
   variable. Trois nuances à un point de pourcentage les unes des autres, invisibles à la relecture et
   toutes sous le seuil. Elles sont alignées sur la même valeur. Une couleur qui existe en quatre
   exemplaires n'est pas une couleur, c'est quatre occasions de se tromper. */

/* ⚑ LE FOND PROTÉGÉ, POUR TOUTES LES PAGES (12/10/2026, déplacé de l'accueil le 13/10). Posé par /fond.js sur les moteurs à risque
   (Safari antérieur à 18.4) et sur les tablettes : les mêmes dégradés, le dernier palier à 99,9 % au lieu d'un doublon à 100 %
   (défaut WebKit 282584), et les disques des grandes aurores immobiles jusqu'à ce que la toile (/aurore-toile.js) les remplace. */
html.fond-sur .v-aurore .t.orange b>i{background:radial-gradient(circle closest-side,rgba(255,90,31,1) 33%,rgba(255,90,31,.977) 40.7%,rgba(255,90,31,.933) 47.1%,rgba(255,90,31,.841) 53.6%,rgba(255,90,31,.691) 60%,rgba(255,90,31,.500) 66.5%,rgba(255,90,31,.309) 72.9%,rgba(255,90,31,.159) 79.4%,rgba(255,90,31,.067) 85.8%,rgba(255,90,31,.023) 92.3%,rgba(255,90,31,.005) 99.9%,transparent 100%)}
html.fond-sur .v-aurore .t.jaune b>i{background:radial-gradient(circle closest-side,rgba(245,181,46,1) 21.6%,rgba(245,181,46,.977) 30.6%,rgba(245,181,46,.933) 38.2%,rgba(245,181,46,.841) 45.7%,rgba(245,181,46,.691) 53.3%,rgba(245,181,46,.500) 60.8%,rgba(245,181,46,.309) 68.3%,rgba(245,181,46,.159) 75.9%,rgba(245,181,46,.067) 83.4%,rgba(245,181,46,.023) 91%,rgba(245,181,46,.005) 99.9%,transparent 100%)}
html.fond-sur .v-aurore .t.rouge b>i{background:radial-gradient(circle closest-side,rgba(255,59,48,1) 27.7%,rgba(255,59,48,.977) 36.1%,rgba(255,59,48,.933) 43%,rgba(255,59,48,.841) 50%,rgba(255,59,48,.691) 56.9%,rgba(255,59,48,.500) 63.9%,rgba(255,59,48,.309) 70.8%,rgba(255,59,48,.159) 77.8%,rgba(255,59,48,.067) 84.7%,rgba(255,59,48,.023) 91.7%,rgba(255,59,48,.005) 99.9%,transparent 100%)}
html.fond-sur .v-aurore .t.bleu b>i{background:radial-gradient(circle closest-side,rgba(56,189,248,1) 30.9%,rgba(56,189,248,.977) 38.8%,rgba(56,189,248,.933) 45.5%,rgba(56,189,248,.841) 52.1%,rgba(56,189,248,.691) 58.8%,rgba(56,189,248,.500) 65.4%,rgba(56,189,248,.309) 72.1%,rgba(56,189,248,.159) 78.7%,rgba(56,189,248,.067) 85.4%,rgba(56,189,248,.023) 92%,rgba(56,189,248,.005) 99.9%,transparent 100%)}
html.fond-sur .v-aurore .t.rose b>i{background:radial-gradient(circle closest-side,rgba(255,122,156,1) 11.6%,rgba(255,122,156,.977) 21.8%,rgba(255,122,156,.933) 30.3%,rgba(255,122,156,.841) 38.8%,rgba(255,122,156,.691) 47.3%,rgba(255,122,156,.500) 55.8%,rgba(255,122,156,.309) 64.3%,rgba(255,122,156,.159) 72.8%,rgba(255,122,156,.067) 81.3%,rgba(255,122,156,.023) 89.8%,rgba(255,122,156,.005) 99.9%,transparent 100%)}
html.fond-sur .v-aurore:not(.ciel) .t,html.fond-sur .v-aurore:not(.ciel) .t b,html.fond-sur .v-aurore:not(.ciel) .t b>i{animation-play-state:paused}
