﻿@charset "utf-8";
:root{
  --nuit:#080a1a; --nuit2:#0d1030; --panneau:#12153a;
  --encre:#e9e6f5; --voile:#a7a3c8;
  /* Accent par UNIVERS : défaut = doré (astrologie). Surchargé par [data-theme] (numéro/védique).
     --or / --or-clair suivent l'accent -> tout le site se recolore sans autre changement.
     Les -rgb servent aux rgba() (lueurs, ombres) : rgba(var(--accent-rgb), .28) etc. */
  --accent:#e6c473; --accent-clair:#f4dfa6;
  --accent-rgb:230,196,115; --accent-clair-rgb:244,223,166;
  --accent-deep:#b78a34; --accent-glint:#fff7db; --accent-soft:rgba(230,200,138,.14);
  --or:var(--accent); --or-clair:var(--accent-clair); --violet:#6d5bd0;
  --serif:"Cormorant Garamond",Georgia,serif; --sans:"Outfit",system-ui,sans-serif;
}
/* Chaque discipline = MÊME design system, accent + teinte différents (piloté par data-theme sur <html>). */
/* astro = mêmes valeurs que :root ; bloc explicite pour pouvoir forcer l'accent doré sur un SOUS-élément (ex. un bouton) même sur une page à autre thème (portail). */
[data-theme="astro"]{
  --accent:#e6c473; --accent-clair:#f4dfa6;
  --accent-rgb:230,196,115; --accent-clair-rgb:244,223,166;
  --accent-deep:#b78a34; --accent-glint:#fff7db; --accent-soft:rgba(230,200,138,.14);
}
[data-theme="numero"]{
  --accent:#9f86e0; --accent-clair:#c3aef2;
  --accent-rgb:159,134,224; --accent-clair-rgb:195,174,242;
  --accent-deep:#6a4fb0; --accent-glint:#f4efff; --accent-soft:rgba(178,157,235,.16);
}
[data-theme="vedic"]{
  --accent:#f0b16a; --accent-clair:#f8ce97; --accent-2:#e08a44;
  --accent-rgb:240,177,106; --accent-clair-rgb:248,206,151;
  --accent-deep:#c07f34; --accent-glint:#fff3e2; --accent-soft:rgba(240,160,90,.15);
}
/* TAROT : Aurore turquoise. Choisi le 2026-07-29 parmi les alternates déjà validés en maquette — le seul qui ne
   collide avec aucun univers (le saphir frôle le violet numéro, le rose connote l'amour alors qu'on vend une question
   libre). Le platine reste au PORTAIL au lieu d'être partagé. */
[data-theme="tarot"]{
  --accent:#66cfc0; --accent-clair:#9ce6da;
  --accent-rgb:102,207,192; --accent-clair-rgb:156,230,218;
  --accent-deep:#2f9e8f; --accent-glint:#ecfffb; --accent-soft:rgba(102,207,192,.14);
}
/* PORTAIL (page d'accueil /Index) : accent HORS des 3 univers, pour ne pas laisser croire qu'on est sur l'astrologie.
   Platine lunaire = argent bleuté quasi neutre, se pose « au-dessus » des trois. */
[data-theme="portail"]{
  --accent:#b6c2cf; --accent-clair:#dce4ec;
  --accent-rgb:182,194,207; --accent-clair-rgb:220,228,236;
  --accent-deep:#7d8996; --accent-glint:#ffffff; --accent-soft:rgba(182,194,207,.14);
}
/* Alternates portail en réserve (validés en maquette) — pour changer, remplacer le bloc ci-dessus par l'un d'eux :
   Céleste saphir : --accent:#7fa8e0; --accent-clair:#aecbf2; --accent-rgb:127,168,224; --accent-clair-rgb:174,203,242; --accent-deep:#3f6db0; --accent-glint:#eef5ff; --accent-soft:rgba(127,168,224,.14);
   Aurore turquoise: --accent:#66cfc0; --accent-clair:#9ce6da; --accent-rgb:102,207,192; --accent-clair-rgb:156,230,218; --accent-deep:#2f9e8f; --accent-glint:#ecfffb; --accent-soft:rgba(102,207,192,.14);
   Nébuleuse rose  : --accent:#e394b8; --accent-clair:#f4bcd6; --accent-rgb:227,148,184; --accent-clair-rgb:244,188,214; --accent-deep:#b25a84; --accent-glint:#fff0f6; --accent-soft:rgba(227,148,184,.14); */
/* --or / --or-clair suivent l'accent LOCAL dès qu'un data-theme est posé. Sinon (définis seulement sur :root) ils
   restent hérités de l'accent de la PAGE : impossible de forcer une couleur d'univers sur un sous-élément (ex. un
   bouton data-theme="numero" sur la page portail garderait le platine). */
[data-theme]{--or:var(--accent);--or-clair:var(--accent-clair)}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
/* font-variant-numeric:lining-nums -> chiffres ALIGNÉS partout (Cormorant Garamond utilise sinon des chiffres
   elzéviriens : le 6/8 montent, le 3/4/5/7/9 descendent sous la ligne de base -> aspect « décalé »). Sans effet sur Outfit. */
body{background:var(--nuit);color:var(--encre);font-family:var(--sans);font-weight:300;line-height:1.6;overflow-x:hidden;position:relative;min-height:100vh;font-variant-numeric:lining-nums}
body::before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(1200px 820px at 80% -12%, rgba(109,91,208,.32), transparent 60%),
    radial-gradient(1000px 720px at 14% 112%, rgba(var(--accent-rgb),.12), transparent 55%),
    radial-gradient(760px 520px at 50% 7%, rgba(var(--accent-clair-rgb),.07), transparent 62%),
    radial-gradient(circle at 50% 38%, #10132f 0%, #080a1a 72%)}
body::after{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
/* Ciel : grand carré centré (déborde du viewport) qui tourne très lentement autour du centre, comme la voûte céleste. */
.etoiles{position:fixed;top:50%;left:50%;width:150vmax;height:150vmax;transform:translate(-50%,-50%);z-index:0;pointer-events:none;animation:cielRot 360s linear infinite;will-change:transform}
.etoiles i{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff;opacity:.7;animation:scint 4s infinite ease-in-out}
.etoiles i:nth-child(3n){width:1px;height:1px;opacity:.5}
.etoiles i:nth-child(4n){background:var(--or-clair)}
@keyframes scint{0%,100%{opacity:.2}50%{opacity:.9}}
@keyframes cielRot{from{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(360deg)}}
.wrap{position:relative;z-index:2;max-width:1120px;margin:0 auto;padding:0 32px}
/* Lien d'évitement (skip-link) : hors écran par défaut, visible au focus clavier (WCAG 2.4.1). */
.skip{position:absolute;left:8px;top:-60px;z-index:1000;background:var(--or,#e6c473);color:#12142e;padding:10px 18px;border-radius:0 0 12px 12px;font-weight:700;text-decoration:none;transition:top .18s}
.skip:focus{top:0;outline:2px solid #12142e;outline-offset:2px}

a{color:inherit}
/* Selects : force le rendu sombre du menu déroulant natif (sinon popup blanc, illisible sur fond nuit). */
select{color-scheme:dark;background:rgba(8,10,26,.6);border:1px solid rgba(167,163,200,.28);border-radius:8px;padding:8px 12px;color:var(--encre);font-family:inherit;font-size:14px;cursor:pointer}
select:focus{outline:none;border-color:var(--or)}
select option{background:#12142e;color:var(--encre)}
nav{display:flex;align-items:center;justify-content:space-between;height:70px}
.logo{font-family:var(--serif);font-size:23px;letter-spacing:.14em;color:var(--or-clair);display:flex;align-items:center;gap:10px;text-decoration:none}
.logo b{font-weight:500}
.nav-r{display:flex;align-items:center;gap:28px}
.langs{display:flex;gap:4px;font-size:13px;letter-spacing:.12em}
.langs a{color:var(--voile);text-decoration:none;padding:4px 8px;border-radius:20px;transition:.25s}
.langs a.on{color:var(--nuit);background:var(--or)}
.langs a:hover:not(.on){color:var(--or-clair)}
.devise-sel{font-size:12.5px;padding:5px 8px;border-radius:20px;letter-spacing:.04em;background:rgba(8,10,26,.6);border:1px solid rgba(167,163,200,.28);color:var(--voile)}
.devise-sel:hover{border-color:rgba(var(--accent-rgb),.42);color:var(--or-clair)}
.devise-ctx{display:flex;align-items:center;justify-content:center;gap:8px;margin:0 auto 18px;font-size:12.5px;color:var(--voile)}
.cta{font-size:14px;letter-spacing:.06em;color:var(--nuit);background:linear-gradient(100deg,var(--or),var(--or-clair) 34%,var(--accent-glint) 50%,var(--or-clair) 66%,var(--or));background-size:200% auto;animation:orShine 7s linear infinite;padding:12px 22px;border-radius:40px;text-decoration:none;font-weight:500;box-shadow:0 6px 30px rgba(var(--accent-rgb),.28);transition:.3s;display:inline-block}
.cta:hover{transform:translateY(-2px);box-shadow:0 10px 40px rgba(var(--accent-rgb),.42)}

header.hero{padding:70px 0 40px;text-align:center}
.kicker{font-size:12.5px;letter-spacing:.42em;text-transform:uppercase;color:var(--or);margin-bottom:26px}
h1{font-family:var(--serif);font-weight:400;font-size:clamp(46px,8vw,92px);line-height:1.02;letter-spacing:-.01em}
h1 em{font-style:italic;color:var(--or-clair)}
/* Titres de héros : dégradé or qui défile lentement derrière le texte (clippé au glyphe) -> effet or brillant animé. */
.hero h1{
  background:linear-gradient(100deg,var(--accent-deep) 0%,var(--accent) 22%,var(--accent-glint) 50%,var(--accent) 78%,var(--accent-deep) 100%);
  background-size:200% auto;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  opacity:1;
  /* line-height serré + background-clip:text rognaient les descendants (g, p, q...) : on élargit la ligne et on
     étend la zone peinte du dégradé sous la ligne de base via un padding-bas. */
  line-height:1.14;padding-bottom:.14em;
  animation:up .9s forwards, orShine 7s linear infinite}
.hero h1 em{-webkit-text-fill-color:transparent;color:transparent}
@keyframes orShine{to{background-position:-200% center}}
.lede{font-size:clamp(17px,2.4vw,21px);color:var(--voile);max-width:580px;margin:28px auto 0;font-weight:300}
.actions{margin-top:40px;display:flex;gap:18px;justify-content:center;align-items:center;flex-wrap:wrap}
.btn-or{font-size:16px;color:var(--nuit);background:linear-gradient(100deg,var(--or),var(--or-clair) 34%,var(--accent-glint) 50%,var(--or-clair) 66%,var(--or));background-size:200% auto;animation:orShine 7s linear infinite;padding:16px 34px;border-radius:44px;text-decoration:none;font-weight:500;box-shadow:0 8px 40px rgba(var(--accent-rgb),.3);transition:.3s;display:inline-block;cursor:pointer;border:none;font-family:inherit}
.btn-or:hover{transform:translateY(-3px)}
/* Lien d'action discret. Les quatre premières déclarations NEUTRALISENT le rendu natif d'un <button> : sans elles, la
   classe ne va qu'aux <a>, et un <button> garde son fond système (#f0f0f0) sous un texte var(--encre) presque blanc,
   soit un contraste de 1,05:1 (illisible), avec en prime une bordure noire et de l'Arial. C'est exactement ce qui
   arrivait au bouton d'aperçu gratuit de la page produit védique, seul <button class="btn-ghost"> du site public. */
.btn-ghost{background:transparent;border:0;font-family:inherit;cursor:pointer;font-size:15px;color:var(--encre);text-decoration:none;border-bottom:1px solid rgba(233,230,245,.3);padding:0 0 2px;transition:.25s}
.btn-ghost:hover{color:var(--or-clair);border-color:var(--or)}
/* Bouton contour (action secondaire), lisible sur fond sombre. Reinitialise le chrome par defaut du <button>
   (fond gris) : a utiliser sur <button> comme sur <a>. */
.btn-line{display:inline-block;font-family:inherit;font-size:14px;color:var(--or-clair);background:transparent;border:1px solid rgba(var(--accent-rgb),.5);border-radius:10px;padding:10px 18px;cursor:pointer;text-decoration:none;transition:.2s}
.btn-line:hover{border-color:var(--or);background:rgba(var(--accent-rgb),.08);color:var(--or-clair)}
.proof{margin-top:26px;font-size:13px;letter-spacing:.14em;color:var(--voile);text-transform:uppercase}
.proof b{color:var(--or-clair);font-weight:500}
.constel{max-width:520px;margin:56px auto 0;opacity:.85;display:block}

.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;padding:80px 0 40px}
.card{border:1px solid rgba(var(--accent-rgb),.18);border-radius:18px;padding:34px 28px;background:linear-gradient(180deg,rgba(20,22,54,.6),rgba(12,14,36,.35));backdrop-filter:blur(6px);transition:.35s;position:relative;overflow:hidden}
.card:hover{transform:translateY(-6px);border-color:rgba(var(--accent-rgb),.5);box-shadow:0 18px 50px rgba(0,0,0,.38),0 8px 44px rgba(109,91,208,.14)}
/* Glyphe de carte serti dans un médaillon or (rendu net et intentionnel, quel que soit le glyphe). */
.card .glyph{width:54px;height:54px;display:flex;align-items:center;justify-content:center;border-radius:50%;
  border:1px solid rgba(var(--accent-rgb),.34);background:radial-gradient(circle at 50% 32%,rgba(var(--accent-rgb),.15),rgba(var(--accent-rgb),.02));
  box-shadow:inset 0 0 18px rgba(var(--accent-rgb),.09);
  font-family:"Segoe UI Symbol","Noto Sans Symbols2",var(--serif);font-size:25px;line-height:1;color:var(--or-clair)}
.card h3{font-family:var(--serif);font-weight:500;font-size:27px;margin:14px 0 8px;background:linear-gradient(100deg,var(--accent-deep),var(--accent) 34%,var(--accent-glint) 50%,var(--accent) 66%,var(--accent-deep));background-size:200% auto;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:orShine 7s linear infinite}
.card p{font-size:14.5px;color:var(--voile)}
/* « Ce que vous recevez » : inclusions à puces + encart « offert » (page Offres et pages produit). */
.incl{list-style:none;margin:14px 0 0;padding:0}
.incl li{position:relative;padding-left:20px;font-size:13.5px;line-height:1.5;color:var(--voile);margin:7px 0}
.incl li::before{content:"\2726";position:absolute;left:0;top:1px;color:var(--or);font-size:11px}
.essai{margin-top:14px;font-size:12.5px;line-height:1.45;color:var(--or-clair);background:rgba(var(--accent-rgb),.1);border:1px solid rgba(var(--accent-rgb),.3);border-radius:10px;padding:9px 11px}
/* La mention PDF d'une carte produit : la meme famille visuelle que l'encart d'offre liee, en plus discret — c'est
   un ATTRIBUT de ce qu'on achete, pas un cadeau. Sans fond ni cadre : deux encadres empiles sur une meme carte se
   concurrencent, et celui qui compte est l'offre. */
.pdf-inclus{margin-top:12px;font-size:12.5px;line-height:1.45;color:var(--accent-clair);opacity:.92}
/* Justification de la collecte d'e-mail (fine print sous un champ e-mail) */
.email-note{font-size:12px;line-height:1.55;color:var(--voile);max-width:440px;margin:14px auto 0;text-align:center}
.pay-secure{max-width:440px;margin:16px auto 0;text-align:center}
.pay-secure-lock{display:flex;align-items:center;justify-content:center;gap:7px;margin:0;font-size:13px;letter-spacing:.02em;color:var(--or-clair)}
.pay-secure-lock svg{width:15px;height:15px;fill:none;stroke:var(--or);stroke-width:1.7;flex:none}
.pay-secure-cards{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:9px}
.pay-secure-cards svg{height:22px;width:auto;border-radius:4px;display:block;box-shadow:0 1px 4px rgba(0,0,0,.35)}
.pay-secure-after{margin:9px auto 0;max-width:400px;font-size:12px;line-height:1.5;color:var(--voile)}
.tag{position:absolute;top:20px;right:20px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;padding:5px 11px;border-radius:20px}
.tag.free{background:linear-gradient(100deg,var(--or),var(--or-clair) 34%,var(--accent-glint) 50%,var(--or-clair) 66%,var(--or));background-size:200% auto;color:var(--nuit);animation:orShine 7s linear infinite}
.tag.sub{background:rgba(109,91,208,.22);color:#c9bffb}
/* Carte produit enrichie (home + Offres) : colonne, inclusions, puis pied « prix / Découvrir → » collé en bas. */
.card.prod{display:flex;flex-direction:column;text-decoration:none}
.card.prod h3{margin-bottom:6px}
.card.prod .desc{font-size:14.5px;color:var(--voile);margin-bottom:2px}
.card-foot{margin-top:auto;padding-top:16px;border-top:1px solid rgba(var(--accent-rgb),.12);display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.card-foot .prix{color:var(--accent-clair);font-family:var(--serif);font-size:28px;line-height:1;padding:0;margin:0}
/* « Découvrir » était à 55 % d'opacité, en texte nu : la carte se lisait comme une fiche à consulter, pas comme une
   offre à prendre. Pastille cerclée, toujours lisible ; le survol garde son glissement. */
.card-foot .go{font-size:12.5px;letter-spacing:.06em;color:var(--accent-clair);opacity:.88;transition:.28s;white-space:nowrap;align-self:center;border:1px solid rgba(var(--accent-rgb),.38);border-radius:999px;padding:7px 15px}
.card:hover .go{opacity:1;transform:translateX(3px)}
/* Seconde option de prix (abonnement annuel : « ou 9,99 €/mois sans engagement »). */
.prix-alt{margin-top:8px;font-size:12px;color:var(--voile);letter-spacing:.01em;min-height:1.1em}
.prix-xl{font-family:var(--serif);font-size:30px;color:var(--or-clair);margin-bottom:14px}

/* Ruban de carte (vedette, rare). CLASSE et non style inline, et c'est le correctif : .card.prod est un flex COLONNE,
   donc un display:inline-block y est blockifie et align-items:stretch l'etire sur toute la largeur — le ruban
   « RARE » s'affichait en barre pleine largeur au lieu d'une pastille. align-self le rend a sa taille. */
.ruban{align-self:flex-start;margin:0 0 8px;padding:3px 12px;border-radius:999px;background:rgba(var(--accent-rgb),.16);border:1px solid rgba(var(--accent-rgb),.5);color:var(--accent-clair);font-size:11px;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}

/* Carte MISE EN AVANT (colonne Products.Vedette, une par bloc). Six cartes identiques ne designent rien : l'oeil n'a
   pas de point d'entree. Cadre plus net, halo bas, ruban plein — assez pour hierarchiser, pas assez pour ecraser les
   voisines, qui restent lisibles et cliquables. */
.card.prod.vedette{border-color:rgba(var(--accent-rgb),.55);background:linear-gradient(180deg,rgba(var(--accent-rgb),.13),rgba(12,14,36,.4));box-shadow:0 0 0 1px rgba(var(--accent-rgb),.14),0 20px 46px -24px rgba(var(--accent-rgb),.6)}
.card.prod.vedette .ruban{background:linear-gradient(100deg,var(--accent-deep),var(--accent) 38%,var(--accent-glint) 54%,var(--accent-deep));background-size:200% auto;border-color:transparent;color:var(--nuit);animation:orShine 7s linear infinite}
.card.prod.vedette .card-foot .go{opacity:1;background:rgba(var(--accent-rgb),.14);border-color:rgba(var(--accent-rgb),.6)}

/* Bandeau « pose ta question », hors grille : il ne doit RESSEMBLER a aucune carte, sinon il redevient un produit
   qu'on compare aux autres. Pleine largeur, fond plus dense, un seul champ. */
.bandeau-q{margin:38px 0 8px;border:1px solid rgba(var(--accent-rgb),.3);border-radius:22px;padding:38px 26px;background:radial-gradient(120% 160% at 50% 0%,rgba(var(--accent-rgb),.16),rgba(10,12,32,.5) 62%);backdrop-filter:blur(6px);text-align:center}
.bandeau-q-in{max-width:620px;margin:0 auto}
.bandeau-q-t{font-family:var(--serif);font-weight:500;font-size:clamp(24px,3.6vw,32px);color:var(--accent-clair);margin:0 0 8px}
.bandeau-q-p{color:var(--voile);font-size:15px;line-height:1.6;margin:0 0 20px}
.bandeau-q-f{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.bandeau-q-f input{flex:1;min-width:240px;background:rgba(8,10,26,.62);border:1px solid rgba(var(--accent-rgb),.32);border-radius:44px;padding:14px 20px;color:var(--encre);font-family:inherit;font-size:15px}
.bandeau-q-f input::placeholder{color:var(--voile);opacity:.7;font-style:italic}
.bandeau-q-f input:focus{outline:none;border-color:rgba(var(--accent-rgb),.7)}
.bandeau-q-n{color:var(--voile);font-size:12.5px;margin:14px 0 0}

/* Rappel de la question en fin de lecture : meme brique, sans champ. Le filet du haut le detache du texte. */
.fin-q{max-width:640px;margin:34px auto 0;text-align:center;padding-top:26px;border-top:1px solid rgba(var(--accent-rgb),.16)}
.fin-q h2{font-family:var(--serif);font-weight:500;font-size:21px;color:var(--accent-clair);margin:0 0 8px}
.fin-q p{color:var(--voile);font-size:14px;line-height:1.6;margin:0 0 16px}

/* Formulaires */
.panel{max-width:660px;margin:20px auto 0;border:1px solid rgba(var(--accent-rgb),.18);border-radius:20px;padding:38px;background:linear-gradient(180deg,rgba(20,22,54,.55),rgba(12,14,36,.35));backdrop-filter:blur(6px)}
/* Formulaire de saisie mis en évidence : c'est l'action. Liseré + halo doré et fond légèrement plus dense pour qu'il
   ressorte au milieu du contenu riche des pages produit. Pas d'overflow:hidden (l'autocomplétion de ville déborde). */
/* position:relative + z-index eleve le contexte d'empilement du formulaire au-dessus des sections .fade suivantes
   (FAQ, divider, closing) : sinon la liste d'autocompletion des villes (.geo-sugg), prisonniere du contexte cree par
   .fade (transform), passe SOUS le texte de la FAQ affichee plus bas. Cf. capture mobile « villes en superposition ». */
.panel-form{position:relative;z-index:20;border:1.5px solid rgba(var(--accent-rgb),.5);background:linear-gradient(180deg,rgba(26,28,64,.72),rgba(14,16,42,.5));box-shadow:0 24px 70px rgba(0,0,0,.45),0 0 70px rgba(var(--accent-rgb),.10)}
.form-head{text-align:center;margin:0 0 24px}
.form-kicker{display:inline-block;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--nuit);background:linear-gradient(100deg,var(--or),var(--or-clair) 50%,var(--or));background-size:200% auto;animation:orShine 7s linear infinite;padding:6px 15px;border-radius:999px;font-weight:600;box-shadow:0 6px 24px rgba(var(--accent-rgb),.28)}
.form-sub{color:var(--voile);font-size:14.5px;line-height:1.55;max-width:440px;margin:14px auto 0}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.field{margin-bottom:18px}
.field label{display:block;font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--voile);margin-bottom:8px}
/* textarea EST du lot : il en était absent, et un textarea sans font-family:inherit retombe sur le monospace du
   navigateur, en largeur automatique, avec son cadre gris — soit un champ manifestement étranger à la page. La page
   « Répondre à une question » astro l'avait rhabillé à la main (style inline + #q-texte), ce qui a laissé le défaut
   invisible jusqu'à ce qu'une seconde page en pose un (le Prashna védique). Le style local de l'astro reste en place
   et l'emporte toujours par spécificité : rien n'y bouge. */
.field input,.field select,.field textarea{width:100%;background:rgba(8,10,26,.6);border:1px solid rgba(167,163,200,.28);border-radius:12px;padding:13px 15px;color:var(--encre);font-family:inherit;font-size:15px;transition:.25s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--or)}
.field input::placeholder,.field textarea::placeholder{color:rgba(167,163,200,.5)}
.field textarea{display:block;resize:vertical;min-height:110px;line-height:1.55}
/* Case à cocher + libellé, le motif qui revient partout (heure inconnue, consentement, options) et que chaque page
   réécrivait en inline. La case ne prend PAS la largeur du champ : sans « width:auto » elle hérite du 100 % ci-dessus
   et s'étale sur toute la ligne. */
.check{display:flex;align-items:flex-start;gap:10px;cursor:pointer;font-size:14px;line-height:1.45;color:var(--voile);text-transform:none;letter-spacing:0}
.check input{width:auto;flex:none;margin-top:3px}
/* Date de naissance en 3 champs : Jour (étroit) · Mois (large, nom complet) · Année. Les enfants héritent du look .field input/select. */
.date-jma{display:grid;grid-template-columns:.8fr 1.7fr 1.1fr;gap:10px}
.date-jma .jma-jour,.date-jma .jma-annee{text-align:center}

/* Résultat du thème */
.result{max-width:820px;margin:30px auto 0}
.result h2{font-family:var(--serif);font-weight:500;font-size:32px;text-align:center;color:var(--or-clair);margin-bottom:8px}
.dl{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;margin-top:24px}
.dl .it{border:1px solid rgba(var(--accent-rgb),.14);border-radius:12px;padding:14px 16px;background:rgba(20,22,54,.4)}
.dl .it b{font-family:var(--serif);color:var(--or-clair);font-size:20px;font-weight:500;display:block}
.dl .it span{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--voile)}
/* Apercu du theme gratuit : le tableau technique complet est REPLIE par defaut (teaser court, moins de jargon,
   capture e-mail a portee immediate). Le resume sert de bouton discret. */
.astres-repli{margin-top:20px}
.astres-repli>summary{list-style:none;cursor:pointer;text-align:center;color:var(--voile);font-size:13.5px;letter-spacing:.03em;padding:9px;border:1px solid rgba(167,163,200,.14);border-radius:12px;transition:.2s}
.astres-repli>summary::-webkit-details-marker{display:none}
.astres-repli>summary:hover{color:var(--or-clair);border-color:rgba(var(--accent-rgb),.3)}
.astres-repli>summary::after{content:" ▾";opacity:.7}
.astres-repli[open]>summary::after{content:" ▴"}
.astres-repli[open] .astres{margin-top:14px}
.astres{margin-top:26px;font-size:14.5px}
.astres .row{display:flex;justify-content:space-between;padding:9px 4px;border-bottom:1px solid rgba(167,163,200,.12)}
.astres .row .n{color:var(--or-clair);font-family:var(--serif);font-size:18px}
.astres .row .v{color:var(--voile)}

footer{position:relative;z-index:2;border-top:1px solid rgba(var(--accent-rgb),.12);margin-top:70px;padding:46px 0 34px;color:var(--voile);font-size:13px;letter-spacing:.02em}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr 1fr;gap:34px 22px;align-items:start}
.foot-brand{max-width:300px}
.foot-logo{font-family:var(--serif);font-size:20px;letter-spacing:.1em;color:var(--or-clair);text-decoration:none}
.foot-tag{margin:12px 0 16px;font-family:var(--serif);font-style:italic;color:var(--voile);font-size:14.5px;line-height:1.5}
.foot-col{display:flex;flex-direction:column;gap:11px;height:auto}  /* height:auto : neutralise la règle globale nav{height:70px} (barre du haut) qui, via le sélecteur nu, écrasait les <nav> du footer et faisait déborder les colonnes longues sur le © */
.foot-col h4{font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--or);margin:0 0 3px;font-weight:500}
.foot-col a{color:var(--voile);text-decoration:none;font-size:13.5px;transition:color .2s;width:fit-content}
.foot-col a:hover{color:var(--or-clair)}
.footer-pay{display:inline-flex;align-items:center;gap:7px;color:var(--voile);font-size:12.5px;letter-spacing:.03em}
.footer-pay svg{width:14px;height:14px;fill:none;stroke:var(--or);stroke-width:1.7;flex:none;opacity:.85}
.foot-bottom{margin-top:36px;padding-top:20px;border-top:1px solid rgba(167,163,200,.1);text-align:center;font-size:12.5px;color:var(--voile);opacity:.85}
footer em{font-family:var(--serif)}

.fade{opacity:0;transform:translateY(18px);animation:up .9s forwards}
@keyframes up{to{opacity:1;transform:none}}
.d1{animation-delay:.1s}.d2{animation-delay:.25s}.d3{animation-delay:.4s}.d4{animation-delay:.55s}.d5{animation-delay:.7s}

/* Accessibilité : anneau de focus visible au clavier (n'apparaît pas au clic souris). */
a:focus-visible,button:focus-visible,.card:focus-visible,.seg:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--or-clair);outline-offset:3px;border-radius:8px}
/* Onglets de SEGMENT des vitrines (Pour toi / Couple / Pro) — partagés astro + numéro, teinte via l'accent de l'univers
   (var(--accent-rgb)) : dorés en astro, améthyste en numéro, sans duplication de CSS par page. */
.segments{display:flex;justify-content:center;gap:8px;margin:6px 0 28px;flex-wrap:wrap}
.seg{background:transparent;border:1px solid rgba(var(--accent-rgb),.3);color:var(--voile);padding:10px 24px;border-radius:40px;cursor:pointer;font-family:inherit;font-size:15px;transition:.2s}
.seg.on{background:linear-gradient(100deg,var(--or),var(--or-clair) 34%,var(--accent-glint) 50%,var(--or-clair) 66%,var(--or));background-size:200% auto;color:var(--nuit);border-color:var(--or);animation:orShine 7s linear infinite}
.seg:hover:not(.on){color:var(--or-clair)}

/* Emblème du hero : une vraie roue de thème natal (zodiaque, maisons, aspects, planètes) — statique et lisible.
   Un anneau pointillé tourne lentement autour, pour une respiration céleste sans faire pivoter les glyphes. */
.hero-wheel{max-width:376px;margin:44px auto 4px;position:relative;filter:drop-shadow(0 0 36px rgba(109,91,208,.16))}
.hero-wheel svg{width:100%;height:auto;overflow:visible;display:block}
.hero-wheel::before,.hero-wheel::after{content:"";position:absolute;border-radius:50%;pointer-events:none}
.hero-wheel::before{inset:-13px;border:1px dashed rgba(var(--accent-rgb),.17);animation:wheelSpin 150s linear infinite}
.hero-wheel::after{inset:-4px;border:1px solid rgba(var(--accent-rgb),.08)}
@keyframes wheelSpin{to{transform:rotate(360deg)}}

/* ================= Héros « ciel du jour » (accueil ET vitrine astrologie) =================
   Deux colonnes : la parole à gauche, le ciel réel du jour à droite, séparées d'un filet. Le contenu vient de
   deux partials, _SigneDuJour et _CielDuJour. Leurs styles vivent ICI et non en <style> local : deux pages les
   rendent, et un même bloc de règles recopié dérive à la première retouche — c'est la seule raison. */
.hero-duo{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:0 60px;align-items:start;text-align:left}
/* Le h1 de héros est calibré pleine largeur (jusqu'à 92px) : dans une colonne, il déborderait. */
.hero-duo h1{font-size:clamp(36px,6vw,60px)}
.hero-duo .lede{margin-left:0;margin-right:0}
.hero-duo .actions{justify-content:flex-start}
/* Rangée PLEINE LARGEUR de la grille, pour un bloc que la colonne de droite ne contrebalance pas. Le védique en a
   besoin : son panchanga tient en cinq lignes, il laisse donc la moitié droite vide sous lui, et la planche du signe
   restée dans la colonne de gauche paraissait poussée dans un coin. Elle descend d'une rangée et se centre sur la
   largeur entière. L'astro et l'accueil gardent la leur en colonne : leur ciel du jour, roue et dix corps, occupe
   toute la hauteur en regard. */
.hero-duo-pleine{grid-column:1/-1}

/* --- Signe de la saison (colonne de gauche). Les douze planches sont recadrées sur un CARRÉ COMMUN, donc la
       boîte ne bouge pas d'un mois à l'autre et le dessin garde le même grossissement toute l'année. --- */
.signe-jour{margin:42px auto 0;max-width:430px;text-align:center}
.signe-tete{font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--or)}
/* Insécables tous les deux : le retour à la ligne, s'il en faut un, tombe ENTRE le libellé et la période,
   jamais au milieu de « el signo del momento ». */
.signe-tete .lbl,.signe-tete .per{white-space:nowrap}
.signe-tete .sep{opacity:.55;margin:0 5px}
.signe-tete .per{color:var(--voile);letter-spacing:.13em}
.signe-art{display:block;width:100%;max-width:344px;height:auto;margin:8px auto 0;filter:drop-shadow(0 0 38px rgba(var(--accent-rgb),.10))}
.signe-nom{font-family:var(--serif);font-size:clamp(32px,3.8vw,44px);line-height:1.1;color:var(--or-clair)}

/* --- Ciel du jour (colonne de droite) : titre, roue du ciel, dix corps, note. --- */
.ciel-jour{border-left:1px solid rgba(var(--accent-rgb),.2);padding:6px 0 0 58px}
.ciel-titre{font-family:var(--sans);font-size:11.5px;font-weight:400;letter-spacing:.26em;text-transform:uppercase;color:var(--or);margin:0 0 20px}
.ciel-titre .sep{opacity:.55;margin:0 5px}
.ciel-titre time{color:var(--voile);letter-spacing:.16em}
/* La roue garde la classe .hero-wheel : anneau pointillé, halo et exception « prefers-reduced-motion » sont
   déjà définis plus haut. On n'en change ici que la taille et les marges, pour la loger dans la colonne. */
.ciel-roue{max-width:262px;margin:2px auto 16px}
.ciel-liste{list-style:none;margin:0;padding:0}
.ciel-l{display:flex;align-items:center;gap:15px;padding:7px 2px}
.ciel-g{display:flex;flex:none;color:var(--or);opacity:.82}
.ciel-n{font-size:15px;color:var(--encre)}
/* tabular-nums : les degrés s'alignent en colonne au lieu de danser d'une ligne à l'autre. */
.ciel-p{margin-left:auto;font-size:14px;color:var(--voile);white-space:nowrap;font-variant-numeric:tabular-nums}
.ciel-r{margin-left:6px;color:var(--or);font-family:"Segoe UI Symbol","Noto Sans Symbols2",var(--serif)}
.ciel-note{margin-top:16px;padding-top:16px;border-top:1px solid rgba(var(--accent-rgb),.18);font-size:12.5px;line-height:1.6;color:var(--voile)}

@media(max-width:900px){
  .hero-duo{grid-template-columns:1fr;gap:34px;text-align:center}
  .hero-duo .lede{margin-left:auto;margin-right:auto}
  .hero-duo .actions{justify-content:center}
  .signe-jour{margin:36px auto 0;max-width:100%}
  .signe-art{max-width:236px}
  /* Sur une ligne étroite, la période passe DESSOUS plutôt que de couper le libellé, et le point médian
     n'a plus rien à séparer. */
  .signe-tete .sep{display:none}
  .signe-tete .per{display:block;margin-top:5px}
  .ciel-jour{border-left:0;border-top:1px solid rgba(var(--accent-rgb),.2);padding:26px 0 0;text-align:left;width:100%;max-width:420px;margin:0 auto}
  .ciel-roue{max-width:240px;margin:2px auto 14px}
}

/* Filet décoratif entre sections. */
.divider{max-width:1120px;margin:8px auto 0;display:flex;align-items:center;gap:16px}
.divider::before,.divider::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(var(--accent-rgb),.28),transparent)}
.divider span{color:rgba(var(--accent-rgb),.55);font-size:12px}

/* Bande de clôture : dernier appel + réassurance en icônes vectorielles. */
.closing{text-align:center;padding:52px 0 20px}
.closing h2{font-family:var(--serif);font-weight:400;font-size:clamp(30px,5vw,52px);line-height:1.05;color:var(--or-clair);margin:8px 0 0}
.closing .lede{margin-top:16px}
.trust{margin-top:30px;display:flex;gap:30px;justify-content:center;flex-wrap:wrap;color:var(--voile);font-size:13.5px;letter-spacing:.02em}
.trust span{display:inline-flex;align-items:center;gap:9px}
.trust svg{width:16px;height:16px;stroke:var(--or);fill:none;stroke-width:1.6;flex:none}

/* Accent céleste réutilisable sous les héros intérieurs (mini-zodiaque discret, cohérent avec l'emblème du hero). */
.ciel-accent{max-width:248px;margin:20px auto 34px;position:relative}
.ciel-accent svg{width:100%;height:auto;display:block;overflow:visible}
.ciel-accent::before{content:"";position:absolute;inset:-8px;border-radius:50%;border:1px dashed rgba(var(--accent-rgb),.14);animation:wheelSpin 150s linear infinite}

/* Carte d'option sélectionnable (formules d'abonnement, choix multiples). */
.plan{border:1px solid rgba(167,163,200,.25);border-radius:14px;padding:16px 18px;cursor:pointer;display:flex;align-items:center;gap:12px;transition:.25s;background:rgba(20,22,54,.32)}
.plan:hover{border-color:rgba(var(--accent-rgb),.4)}
.plan.sel{border-color:rgba(var(--accent-rgb),.55);background:rgba(var(--accent-rgb),.06)}
.plan b{font-family:var(--serif);font-size:22px;color:var(--or-clair);font-weight:500}
.plan .sub{display:block;font-size:13px;color:var(--voile)}

/* Messages en ligne (erreur / info / succès) — remplace les styles inline dispersés, ton cohérent. */
.note{margin-top:16px;padding:12px 16px;border-radius:12px;font-size:14px;line-height:1.5;border:1px solid transparent;background:rgba(167,163,200,.06)}
.note.err{color:#f0a9a9;background:rgba(224,90,90,.08);border-color:rgba(224,90,90,.32)}
.note.warn{color:var(--or-clair);background:rgba(var(--accent-rgb),.08);border-color:rgba(var(--accent-rgb),.3)}
.note.ok{color:#a9e0c0;background:rgba(90,200,140,.08);border-color:rgba(90,200,140,.3)}

/* « Moteurs astrologiques » : la donnee technique (aspects) isolee du narratif (architecture Double Lecture).
   Rendu discret/secondaire sur le web ; en PDF, seuls h3/ul/li/strong sont lus (les classes sont ignorees). */
.lecture .moteurs-astro{margin:16px 0 6px;padding:10px 16px;border-left:2px solid rgba(var(--accent-rgb),.4);background:rgba(167,163,200,.05);border-radius:0 10px 10px 0}
.lecture .moteurs-titre{margin:0 0 6px;font-family:inherit;font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--voile);-webkit-text-fill-color:var(--voile);background:none}
.lecture .moteurs-astro ul{margin:0;padding-left:18px}
.lecture .moteurs-astro li{font-size:13.5px;line-height:1.55;color:var(--voile);margin:3px 0}
.lecture .moteurs-astro li strong{color:var(--or-clair);font-weight:600}

@media(max-width:760px){.cards{grid-template-columns:1fr}.grid2{grid-template-columns:1fr}
  .foot-grid{grid-template-columns:1fr 1fr;gap:28px 16px}.foot-brand{grid-column:1 / -1;max-width:none}
  /* En-tête mobile : voir le bloc @media(max-width:900px) plus bas (design hybride logo + ☰ + pastilles). */
  .hero-wheel{max-width:264px;margin-top:34px}.ciel-accent{max-width:208px}.trust{gap:16px;flex-direction:column;align-items:center}.closing{padding:36px 0 12px}}

/* Accessibilité : neutralise les animations (fondus, reflets or, scintillement) quand l'utilisateur préfère moins
   de mouvement. EXCEPTION : la dérive tres lente du ciel étoilé (360 s) et l'anneau des roues (150 s) restent, car
   c'est un mouvement d'ambiance imperceptible (moins de 0,02°/s), pas le type de motion visé par ce réglage. */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .etoiles{animation-duration:360s!important;animation-iteration-count:infinite!important}
  .hero-wheel::before,.ciel-accent::before{animation-duration:150s!important;animation-iteration-count:infinite!important}
}

/* ================= Article de blog (contenu HTML d'Edward, rendu côté serveur) =================
   Le HTML d'Edward (<h2>/<h3>/<p>/<ul>/<blockquote>/<img>/<table>…) arrivait SANS aucune règle typographique.
   On lui donne ici une vraie mise en page de lecture, aux couleurs/polices du thème. Largeur : le bloc occupe
   quasi la largeur du site (l'image de une déborde en « héros »), le texte reste à une mesure lisible (~880px). */
.post{max-width:1040px;margin:26px auto 72px}
.post-back,.post-title,.post-body{max-width:880px;margin-left:auto;margin-right:auto}
.post-back{margin-bottom:10px}
.post-back a{color:var(--voile);text-decoration:none;font-size:13px}
.post-back a:hover{color:var(--or-clair)}
.post-title{font-family:var(--serif);font-weight:500;color:var(--or-clair);
  font-size:clamp(34px,5vw,56px);line-height:1.08;letter-spacing:-.01em;margin-bottom:24px}
/* Image de une : déborde jusqu'à la largeur du site (effet héros au-dessus du texte). */
.post-cover{width:100%;height:auto;border-radius:18px;margin:0 0 34px;
  border:1px solid rgba(var(--accent-rgb),.14);box-shadow:0 22px 60px rgba(0,0,0,.38)}

.post-body{font-size:18px;line-height:1.75;color:var(--encre)}
.post-body>*:first-child{margin-top:0}
.post-body h1,.post-body h2,.post-body h3,.post-body h4{
  font-family:var(--serif);color:var(--or-clair);font-weight:500;line-height:1.15;letter-spacing:-.005em}
.post-body h1{font-size:clamp(30px,4vw,42px);margin:2.1em 0 .5em}
.post-body h2{font-size:clamp(26px,3.4vw,34px);margin:1.9em 0 .55em;padding-bottom:.3em;border-bottom:1px solid rgba(var(--accent-rgb),.16)}
.post-body h3{font-size:clamp(21px,2.6vw,26px);color:var(--or);margin:1.7em 0 .4em}
.post-body h4{font-family:var(--sans);font-size:16px;font-weight:500;color:var(--voile);
  text-transform:uppercase;letter-spacing:.1em;margin:1.6em 0 .5em}
.post-body p{margin:0 0 1.15em}
.post-body a{color:var(--or-clair);text-decoration:underline;text-underline-offset:2px;
  text-decoration-thickness:1px;text-decoration-color:rgba(var(--accent-rgb),.5);transition:.2s}
.post-body a:hover{text-decoration-color:var(--or-clair)}
.post-body strong,.post-body b{color:#fff;font-weight:600}
.post-body ul,.post-body ol{margin:0 0 1.2em;padding-left:1.4em}
.post-body li{margin:.45em 0;padding-left:.2em}
.post-body li::marker{color:var(--or)}
.post-body blockquote{margin:1.6em 0;padding:.7em 1.3em;border-left:3px solid var(--or);
  background:rgba(167,163,200,.06);border-radius:0 12px 12px 0;color:var(--voile);font-style:italic}
.post-body blockquote p:last-child{margin-bottom:0}
.post-body img{max-width:100%;height:auto;border-radius:12px;margin:1.5em 0;display:block}

/* ===== Avis clients (preuve sociale) ===== */
.avis-carte{background:var(--panneau);border:1px solid rgba(var(--accent-rgb),.18);border-radius:16px;padding:20px 22px;display:flex;flex-direction:column;gap:10px}
.avis-etoiles{font-size:15px;letter-spacing:.1em;line-height:1;color:rgba(167,163,200,.55)}
.avis-etoiles .on{color:var(--or)}
/* pre-line : un avis saisi avec des retours a la ligne s'affiche tel qu'il a ete tape (les espaces
   multiples restent, eux, absorbes). Sans cela tout avis est aplati en un bloc, ce qui uniformise. */
.avis-texte{font-family:var(--serif);font-size:17px;line-height:1.5;color:var(--encre);font-style:italic;margin:0;white-space:pre-line}
.avis-auteur{font-size:13px;letter-spacing:.04em;color:var(--or-clair);margin-top:auto}
/* Repere « exemple » : garde-fou, ne s'affiche que si un avis genere atteignait une carte publique. */
.avis-exemple{display:inline-block;margin-left:8px;padding:1px 7px;border-radius:999px;
  border:1px solid rgba(167,163,200,.45);color:var(--voile);font-size:11px;letter-spacing:.06em;
  text-transform:lowercase;font-style:normal;vertical-align:middle}
.avis-titre{font-family:var(--serif);font-weight:400;text-align:center;font-size:clamp(24px,3.6vw,34px);color:var(--or-clair);margin:0 0 26px}
/* Section produit : grille responsive */
.avis-section{margin:44px 0 8px}
.avis-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;max-width:900px;margin:0 auto}
/* Bandeau accueil : defilement horizontal continu, en pause au survol */
.avis-bandeau{margin:52px 0 8px}
.avis-piste-masque{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.avis-piste{display:flex;gap:16px;width:max-content;animation:avisDefile 70s linear infinite}
.avis-piste:hover{animation-play-state:paused}
.avis-piste .avis-carte{width:320px;flex:0 0 320px}
@keyframes avisDefile{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.avis-piste{animation:none;flex-wrap:wrap;width:auto;justify-content:center}}
.post-body figure{margin:1.6em 0}
.post-body figcaption{font-size:13.5px;color:var(--voile);text-align:center;margin-top:.55em}
.post-body hr{border:0;height:1px;margin:2.4em 0;
  background:linear-gradient(90deg,transparent,rgba(var(--accent-rgb),.4),transparent)}
.post-body code{font-family:ui-monospace,"Cascadia Code",Consolas,monospace;font-size:.86em;
  background:rgba(8,10,26,.6);border:1px solid rgba(167,163,200,.2);border-radius:6px;padding:.12em .4em}
.post-body pre{background:rgba(8,10,26,.7);border:1px solid rgba(167,163,200,.2);border-radius:12px;
  padding:16px 18px;overflow:auto;margin:1.5em 0}
.post-body pre code{background:none;border:0;padding:0;font-size:13.5px;line-height:1.6}
.post-body table{width:100%;border-collapse:collapse;margin:1.6em 0;font-size:15.5px;display:block;overflow-x:auto}
.post-body th,.post-body td{text-align:left;padding:10px 14px;border-bottom:1px solid rgba(167,163,200,.14)}
.post-body th{color:var(--or-clair);font-weight:500;border-bottom-color:rgba(var(--accent-rgb),.3)}
@media(max-width:640px){
  .post{margin:16px auto 48px}
  .post-body{font-size:17px;line-height:1.7}
  .post-body h2{font-size:24px}.post-body h3{font-size:20px}
}

/* ============ Multi-univers : sélecteur de discipline, menu de langue, bandeau d'univers ============ */
/* Tout est en var(--accent*) : chaque univers (data-theme) recolore ces composants automatiquement. */
.nav-l{display:flex;align-items:center;gap:22px;min-width:0}
/* Bouton compte du header : même hauteur que les pills du sélecteur d'univers. */
.nav-r .cta{padding:7px 15px}
.disc{display:flex;gap:4px;padding:4px;border-radius:999px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);font-family:"Mulish",var(--sans); height: auto}
.disc a,.disc .disc-soon{display:flex;align-items:center;gap:7px;padding:8px 16px;border-radius:999px;font-size:13.5px;font-weight:600;line-height:normal;letter-spacing:.02em;color:var(--voile);text-decoration:none;white-space:nowrap;transition:.25s}
.disc a .g,.disc .disc-soon .g{font-size:14px;line-height:1;color:var(--accent)}
.disc a:hover{color:var(--encre)}
.disc a.active{color:var(--nuit);background:linear-gradient(135deg,var(--accent),var(--accent-2,var(--accent-clair)));box-shadow:0 6px 20px -8px rgba(var(--accent-rgb),.5)}
.disc a.active .g{color:var(--nuit)}
.disc .disc-soon{opacity:.75;cursor:pointer}
.disc .disc-soon:hover{opacity:1;color:var(--encre)}
/* Pill active : pleine opacité, sinon le .75 du « bientôt » délave le dégradé orange. */
.disc a.disc-soon.active{opacity:1}
.disc .disc-soon em{font-style:normal;font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;background:rgba(255,255,255,.1);color:var(--voile);padding:2px 6px;border-radius:6px}
.disc a.disc-soon.active em{background:rgba(0,0,0,.16);color:var(--nuit)}

.lang-menu{position:relative}
.lang-menu>summary{list-style:none;display:flex;align-items:center;gap:6px;cursor:pointer;color:var(--voile);font-size:12.5px;letter-spacing:.06em;padding:6px 11px;border-radius:20px;border:1px solid rgba(167,163,200,.22);transition:.2s}
.lang-menu>summary::-webkit-details-marker{display:none}
.lang-menu>summary:hover,.lang-menu[open]>summary{color:var(--or-clair);border-color:rgba(var(--accent-rgb),.45)}
.lang-menu>summary svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.6}
.lang-menu>summary .chev{font-size:10px;opacity:.7;transition:transform .2s}
.lang-menu[open]>summary .chev{transform:rotate(180deg)}
.lang-pop{position:absolute;right:0;top:calc(100% + 8px);min-width:158px;background:#12142e;border:1px solid rgba(167,163,200,.22);border-radius:12px;padding:6px;box-shadow:0 16px 44px -14px rgba(0,0,0,.6);z-index:30;display:flex;flex-direction:column;gap:2px}
.lang-pop a{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border-radius:8px;color:var(--voile);text-decoration:none;font-size:14px;transition:.15s}
.lang-pop a:hover{background:rgba(255,255,255,.05);color:var(--encre)}
.lang-pop a.on{color:var(--nuit);background:var(--accent)}
.lang-pop a .code{font-size:11px;letter-spacing:.1em;opacity:.55}
.lang-pop a.on .code{opacity:.85}

/* Tiroir MENU mobile (hamburger) : masqué en PC, révélé ≤900px. Même langage que le menu langue (details/summary + pop). */
.burger{display:none;position:relative}
.burger>summary{list-style:none;display:flex;align-items:center;justify-content:center;width:42px;height:42px;cursor:pointer;color:var(--voile);border:1px solid rgba(167,163,200,.22);border-radius:12px;transition:.2s}
.burger>summary::-webkit-details-marker{display:none}
.burger>summary:hover,.burger[open]>summary{color:var(--or-clair);border-color:rgba(var(--accent-rgb),.45)}
.burger>summary svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2}
.burger-pop{position:absolute;right:0;top:calc(100% + 10px);min-width:210px;background:#12142e;border:1px solid rgba(167,163,200,.22);border-radius:14px;padding:10px;box-shadow:0 18px 48px -14px rgba(0,0,0,.6);z-index:40;display:flex;flex-direction:column;gap:3px}
.burger-pop .navlink{color:var(--voile);text-decoration:none;font-size:14.5px;padding:10px 12px;border-radius:9px;transition:.15s}
.burger-pop .navlink:hover{background:rgba(255,255,255,.05);color:var(--encre)}
.burger-pop .navlink-admin{color:var(--or-clair)}
.burger-pop hr{width:100%;border:none;border-top:1px solid rgba(255,255,255,.08);margin:6px 0}
.burger-langs{display:flex;gap:6px}
.burger-langs a{flex:1;text-align:center;color:var(--voile);text-decoration:none;font-size:12.5px;letter-spacing:.08em;padding:8px 0;border-radius:8px;border:1px solid rgba(167,163,200,.2);transition:.15s}
.burger-langs a:hover{color:var(--or-clair);border-color:rgba(var(--accent-rgb),.42)}
.burger-langs a.on{color:var(--nuit);background:var(--accent);border-color:transparent}
.burger-pop .cta{margin-top:8px;text-align:center;padding:11px 18px}

/* Bandeau « explore un autre univers » : reprend la mise en forme du hint de la maquette
   (Mulish 13px, pilule sombre arrondie) ; chaque nom est un lien vers son univers. */
.univers-band{position:relative;z-index:2;margin:72px 0 0;text-align:center}
.univers-band .in{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:9px;font-family:"Mulish",var(--sans);font-size:13px;line-height:1.5;color:var(--voile);background:rgba(20,16,49,.9);border:1px solid rgba(255,255,255,.12);border-radius:999px;padding:11px 24px;backdrop-filter:blur(8px);box-shadow:0 12px 40px -14px rgba(0,0,0,.6)}
.univers-band a{color:var(--accent);text-decoration:none;font-weight:600;transition:.2s}
.univers-band a:hover{color:var(--accent-clair)}
.univers-band .sep{opacity:.4}

/* Emblème central (glyphe de discipline) — utilisé par les landings d'univers */
.emblem{width:168px;height:168px;margin:42px auto 0;border-radius:50%;display:grid;place-items:center;position:relative;border:1px solid rgba(var(--accent-rgb),.35);background:radial-gradient(circle at 50% 45%,rgba(var(--accent-rgb),.14),transparent 70%)}
.emblem::before{content:"";position:absolute;inset:-14px;border-radius:50%;border:1px dashed rgba(255,255,255,.09)}
.emblem .glyph{font-family:var(--serif);font-size:70px;color:var(--accent-clair)}

/* Ligne 2 du header : fil d'Ariane d'univers (gauche) + liens utilitaires (droite), tinté par l'accent.
   z-index 30 et pas 2 : `position:relative` + `z-index` fait de la subnav un CONTEXTE D'EMPILEMENT, donc le
   z-index:30 du menu langue est confiné dedans et ne pèse plus rien face au reste de la page. À 2, la subnav
   était à égalité avec les `.wrap` du contenu (même valeur), et l'ordre du document départageait alors en
   faveur du contenu, qui venait plus bas : le texte de la page se peignait PAR-DESSUS le menu langue ouvert,
   qui semblait transparent. Visible surtout depuis le passage à six langues (le menu descend plus bas).
   30 = au-dessus de tout le contenu (`.wrap` 2, `.panel-form` 20, `.geo-sugg` 5), sous le tiroir ☰
   (`.burger-pop` 40, qui descend de la ligne 1 et doit recouvrir la subnav) et la jauge de lecture (60). */
.subnav{position:relative;z-index:30;margin:0 calc(-50vw + 50%) 8px;border-bottom:1px solid rgba(255,255,255,.05);background:linear-gradient(180deg,var(--accent-soft),transparent)}
.subnav-in{max-width:1120px;margin:0 auto;padding:0 32px;height:46px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:nowrap;font-family:"Mulish",var(--sans)}
/* Fil d'Ariane : reste sur SA ligne et défile horizontalement s'il est long (ex. « … / Chiron / Chiron carré Mercure »),
   au lieu de pousser les liens utilitaires à la ligne suivante — ce qui plaçait le menu langue à gauche et faisait
   déborder son menu déroulant hors de l'écran (.lang-pop ancré right:0). min-width:0 = autorise le rétrécissement flex. */
.crumb{display:flex;align-items:center;gap:9px;font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--voile);min-width:0;overflow-x:auto;white-space:nowrap;scrollbar-width:none}
.crumb::-webkit-scrollbar{display:none}
.subnav-links{flex:none}
.crumb .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 10px rgba(var(--accent-rgb),.6);flex:none}
.crumb .sep{opacity:.4}
.crumb b{color:var(--accent-clair);font-weight:600}
.crumb a{color:inherit;text-decoration:none;transition:.2s}.crumb a:hover{color:var(--or-clair)}
.crumb-home{display:inline-flex;align-items:center}
.crumb-home svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;display:block}
.subnav-links{display:flex;align-items:center;gap:18px}
.subnav-links .navlink{color:var(--voile);text-decoration:none;font-size:12.5px;transition:.2s}
.subnav-links .navlink:hover{color:var(--or-clair)}
.subnav-links .navlink-admin{color:var(--or-clair)}

/* EN-TÊTE HYBRIDE MOBILE (≤900px) — placé APRÈS les règles de base de l'en-tête : une media query a la MÊME priorité que
   le reste, seul l'ordre source départage à spécificité égale. Placé avant, la base `.subnav-links{display:flex}` écrasait
   ce `display:none`. Le PC (>900px) est intact. Ligne 1 : logo + ☰ ; ligne 2 : pastilles d'univers ; le secondaire
   (À propos/Offres/Admin, langue, Mon espace) passe dans le tiroir ☰ ; le fil d'Ariane garde sa ligne et défile si long. */
@media(max-width:900px){
  #top{height:auto;flex-wrap:wrap;padding:16px 0;row-gap:12px}
  .nav-l{width:100%;flex-wrap:wrap;align-items:center;gap:12px 16px}
  .nav-l .logo{order:1;font-size:22px}
  .burger{order:2;display:flex;margin-left:auto}
  .disc{order:3;width:100%;justify-content:center;overflow-x:auto;scrollbar-width:none}
  .disc::-webkit-scrollbar{display:none}
  .disc a,.disc .disc-soon{padding:7px 13px;font-size:12.5px;flex:none}
  .nav-r{display:none}                 /* « Mon espace » est repris dans le tiroir ☰ */
  .subnav-links{display:none}          /* liens repris dans le tiroir ; la subnav ne garde que le fil d'Ariane */
  .subnav-in{justify-content:flex-start}
}
@media(max-width:640px){
  .subnav-in{gap:8px;padding:0 22px;height:auto;min-height:46px}
  .subnav-links{gap:12px}
  .subnav-links .navlink{font-size:12px}
}

/* Landing d'univers (numéro, védique…) : en-tête de section + cartes de lecture. Tout en var(--accent*). */
.uni-head{text-align:center;margin:74px 0 8px}
.uni-tag{display:inline-block;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);border:1px solid rgba(var(--accent-rgb),.35);border-radius:999px;padding:6px 16px}
.uni-head h2{font-family:var(--serif);font-weight:500;font-size:clamp(30px,5vw,40px);margin-top:18px;color:#fbf8ef}
.uni-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin:40px 0 10px}
.uni-card{position:relative;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.09);border-radius:20px;padding:30px 26px;overflow:hidden;transition:.35s}
.uni-card::before{content:"";position:absolute;inset:0 0 auto 0;height:2px;background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.5}
.uni-card:hover{transform:translateY(-4px);border-color:rgba(var(--accent-rgb),.3);box-shadow:0 24px 60px -30px rgba(var(--accent-rgb),.4)}
.uni-card .chip{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:rgba(var(--accent-rgb),.14);border:1px solid rgba(var(--accent-rgb),.3);color:var(--accent-clair);font-family:var(--serif);font-size:24px;margin-bottom:20px}
.uni-card .badge{position:absolute;top:22px;right:22px;font-size:10px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--accent);background:rgba(var(--accent-rgb),.14);border-radius:999px;padding:5px 11px}
.uni-card h3{font-family:var(--serif);font-weight:600;font-size:24px;color:var(--accent-clair);margin-bottom:12px}
.uni-card p{font-size:14.5px;color:var(--voile)}
.uni-card .price{margin-top:20px;font-family:var(--serif);font-size:25px;color:var(--encre)}
.uni-card .price small{font-size:13px;color:var(--voile);font-family:var(--sans)}
@media(max-width:860px){.uni-cards{grid-template-columns:1fr}}

/* ============================================================================
   LECTURES LONGUES  (thème natal, année personnelle, compatibilité, question…)
   Bloc PARTAGÉ par la page de lecture (/MyChart) et les exemples publics
   (/Examples). Il vivait en double dans un <style> de chaque page et avait déjà
   divergé : Examples gardait un doré CODÉ EN DUR et ignorait donc l'accent
   d'univers (une lecture de numérologie s'y affichait en or au lieu du violet).
   Une lecture natale fait ~8 chapitres de 1500 mots : tout ce qui suit vise la
   RESPIRATION, pas la décoration.
   ============================================================================ */
:root{--lect-w:660px}
/* Mesure de ligne : 660px à 17.5px donne ~72 signes par ligne, la fenêtre de
   confort (60-75). La colonne était à 760px avec le corps hérité du body
   (16px, poids 300), soit ~95 signes : au-delà de 80, l'oeil rate la ligne
   suivante au retour chariot, et c'est ce qui rendait ces textes épuisants
   bien avant leur longueur. Poids 400 (et non 300) : sur fond sombre, un
   corps trop maigre oblige à forcer sur des milliers de mots. */
.lecture{max-width:var(--lect-w);margin:20px auto;font-size:17.5px;font-weight:400}
.lecture h1{font-family:var(--serif);color:var(--or-clair);font-size:clamp(32px,5vw,52px);line-height:1.05;text-align:center;margin-bottom:1.5rem}
.lecture h2{font-family:var(--serif);font-size:29px;margin:3.6rem 0 .6rem;scroll-margin-top:24px;background:linear-gradient(100deg,var(--accent-deep),var(--accent) 34%,var(--accent-glint) 50%,var(--accent) 66%,var(--accent-deep));background-size:200% auto;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:orShine 7s linear infinite}
.lecture h3{font-family:var(--serif);color:var(--voile);font-size:21px;margin:1.8rem 0 .4rem}
.lecture p{color:var(--encre);line-height:1.75;margin:1.05rem 0}
/* Listes de la lecture (ex. « En bref ») : puces EN RETRAIT (padding sur le ul), marqueur à l'accent de l'univers. */
.lecture ul{margin:1rem 0 1.3rem;padding-left:1.6rem}
.lecture li{color:var(--encre);line-height:1.72;margin:.5rem 0;padding-left:.2rem}
.lecture li::marker{color:var(--or-clair)}
.lecture strong{color:var(--or-clair);font-weight:500}
.lecture .sommaire{list-style:none;padding:0;margin:6px 0 8px}
.lecture .sommaire li{margin:5px 0;font-size:15px;border-bottom:1px solid rgba(167,163,200,.12);padding-bottom:5px}
.lecture .sommaire a{color:var(--or-clair);text-decoration:none}
.lecture .sommaire a:hover{text-decoration:underline}
/* Intitulé d'acte DANS le sommaire (ActesLecture.InsererDansSommaire). Ce n'est pas un item de plus : ni puce, ni
   lien, ni filet de séparation — c'est un palier qui regroupe les items suivants, d'où le retrait du border-bottom
   hérité de .sommaire li et la respiration au-dessus. Même vocabulaire que l'intercalaire du corps (.lect-acte),
   d'un cran plus discret : ici le chiffre romain accompagne, il n'ouvre pas une page. */
.lecture .sommaire .som-acte{display:flex;align-items:baseline;gap:11px;border-bottom:0;padding-bottom:0;margin:1.6rem 0 .5rem}
.lecture .sommaire .som-acte:first-child{margin-top:.3rem}
.lecture .sommaire .som-acte .num{font-family:var(--serif);font-size:17px;line-height:1;color:var(--accent);opacity:.75}
.lecture .sommaire .som-acte .lbl{font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--voile)}
/* L'annexe technique ferme le sommaire HORS des actes : même respiration que devant un acte, pour qu'elle ne se
   lise pas comme le dernier chapitre du dernier. */
.lecture .sommaire .som-annexe{margin-top:1.4rem}

/* Glyphe de chapitre (SVG posé par MiseEnForme.AvecGlyphesDeSection). En bloc
   AU-DESSUS du titre : c'est la frontière entre deux chapitres qu'on veut voir
   de loin, pas une puce accolée au texte. Le tracé est en currentColor et la
   couleur est REPOSÉE ici, sur le span : le h2 parent est en color:transparent
   (dégradé clippé sur le texte) et l'aurait rendu invisible. Bénéfice : le
   glyphe suit l'accent de l'univers (or / violet / orangé) sans une couleur en
   dur, et sans dépendre du support de var() dans un attribut SVG. */
.lecture .glyphe-sec{display:block;margin:0 0 8px;line-height:0;color:var(--accent-clair);-webkit-text-fill-color:var(--accent-clair)}
.lecture .glyphe-sec svg{display:block;opacity:.9}
/* Chapeau : le paragraphe d'ouverture du chapitre, mis en exergue. Ne cible que
   les h2 ANCRÉS (id posé par AvecSommaireEtEnBref), donc les vrais chapitres :
   « En bref », « Sommaire » et le rappel des informations n'en ont pas.
   Effet visé : un seuil visible à l'entrée du chapitre, et une accroche qui se
   lit seule. Taille contenue (1.22em) parce que ce paragraphe fait souvent 150
   mots : au-delà, c'est un dixième de la lecture qui bascule en italique. */
.lecture h2[id] + p{font-family:var(--serif);font-size:1.22em;font-style:italic;line-height:1.5;color:var(--or-clair);margin:.5rem 0 1.6rem}
.lecture h2[id] + p strong{font-weight:600;color:var(--accent-glint)}

/* Repères de lecture (durée, nombre de chapitres) : annoncer un texte long le
   rend franchissable, alors qu'un ruban sans fin décourage. */
.lecture-meta{text-align:center;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--voile);margin:0 0 6px}
.lecture-meta .sep{opacity:.45;margin:0 8px}
/* Barre de progression : même rôle, en continu. */
.lecture-progres{position:fixed;top:0;left:0;height:2px;width:0;z-index:60;background:linear-gradient(90deg,var(--accent-deep),var(--accent-clair));box-shadow:0 0 12px rgba(var(--accent-rgb),.6);transition:width .12s linear;pointer-events:none}
@media(prefers-reduced-motion:reduce){.lecture-progres{transition:none}}
@media(max-width:640px){
  .lecture{font-size:16.5px}
  .lecture h2{font-size:25px;margin-top:2.8rem}
  .lecture h2[id] + p{font-size:1.16em}
}

/* Sommaire PERSISTANT (colonne fixe à gauche) + bouton de retour au sommaire.
   Seuil à 1200px : en dessous, la place à gauche d'une colonne de 660px n'existe
   pas vraiment et la navigation se superposerait au texte. Sous ce seuil, c'est
   le bouton flottant qui rend le service. */
.lect-nav{display:none}
.lect-haut{display:none}
@media(min-width:1200px){
  .lect-nav{display:block;position:fixed;top:50%;transform:translateY(-50%);left:max(18px,calc(50% - 552px));width:196px;z-index:5;font-size:12.5px;line-height:1.35}
  .lect-nav-t{font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--voile);opacity:.7;margin:0 0 10px}
  .lect-nav ol{list-style:none;margin:0;padding:0;border-left:1px solid rgba(167,163,200,.18)}
  .lect-nav li{margin:0}
  .lect-nav a{display:block;padding:6px 0 6px 12px;margin-left:-1px;border-left:1px solid transparent;color:var(--voile);text-decoration:none;opacity:.62;transition:opacity .2s,color .2s,border-color .2s}
  .lect-nav a:hover{opacity:1;color:var(--or-clair)}
  /* Chapitre courant : le repère qui manquait le plus, savoir OÙ l'on est dans le document. */
  .lect-nav a.on{opacity:1;color:var(--or-clair);border-left-color:var(--accent)}
}
/* Retour au sommaire : n'apparaît qu'une fois la tête de page bien dépassée, et seulement
   là où la colonne fixe est absente (sinon il ferait doublon). */
@media(max-width:1199px){
  .lect-haut{display:flex;align-items:center;gap:7px;position:fixed;right:16px;bottom:18px;z-index:40;padding:9px 15px;border-radius:999px;border:1px solid rgba(var(--accent-rgb),.45);background:rgba(8,10,26,.86);color:var(--or-clair);font-family:inherit;font-size:13px;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .25s;backdrop-filter:blur(4px)}
  .lect-haut.vu{opacity:1;pointer-events:auto}
}

/* Intercalaire d'acte : marque le passage d'un mouvement à l'autre. Volontairement
   sobre (un chiffre romain, un libellé, un filet) : il structure, il ne concurrence
   pas les titres de chapitre qui le suivent immédiatement. */
.lecture .lect-acte{display:flex;align-items:center;gap:14px;margin:5rem 0 0;padding-top:1.4rem;border-top:1px solid rgba(var(--accent-rgb),.18);color:var(--voile)}
.lecture .lect-acte .num{font-family:var(--serif);font-size:26px;color:var(--accent);opacity:.75;line-height:1}
.lecture .lect-acte .lbl{font-size:11.5px;letter-spacing:.24em;text-transform:uppercase}
/* Un acte ouvre son premier chapitre : on rapproche le titre de son intercalaire,
   sinon les deux flottent séparément et l'intercalaire semble clore le chapitre d'avant. */
.lecture .lect-acte + h2{margin-top:1.6rem}

/* Schéma de synthèse (répartitions, grille d'inclusion). Le SVG est tracé en
   currentColor : la couleur posée ici lui donne l'accent de l'univers, sans
   qu'aucune teinte ne soit codée dans le générateur. */
.lecture .visuel{margin:2.2rem 0 2.6rem;padding:20px 4px 12px;border-top:1px solid rgba(var(--accent-rgb),.14);border-bottom:1px solid rgba(var(--accent-rgb),.14);color:var(--accent-clair)}
.lecture .visuel svg{display:block;width:100%;height:auto;overflow:visible}

/* Les DEUX PLANCHES du Jyotish (chakra nord et sud), côte à côte. Elles disent la même chose dans deux dispositions ;
   selon d'où l'on vient, on reconnaît l'une ou l'autre, et personne n'a à choisir avant d'avoir vu.

   Elles se replient en COLONNE sur mobile, à l'inverse de la croix de tarot juste en dessous, et pour la raison
   opposée : ici la place ne porte aucun sens entre les deux planches, ce sont deux lectures alternatives du même
   thème. Les empiler ne perd rien, alors que les tasser côte à côte sur 360px rendrait les deux illisibles.

   La légende sous chaque planche n'est pas décorative : sans elle, deux diagrammes doublent la perplexité de qui n'en
   connaît aucun ; avec elle, on apprend à lire les deux en cinq secondes. */
.lecture .kundli-paire{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:26px 30px;margin:2.2rem 0 2.6rem;padding:22px 4px 14px;border-top:1px solid rgba(var(--accent-rgb),.14);border-bottom:1px solid rgba(var(--accent-rgb),.14);color:var(--accent-clair)}
.lecture .kundli-paire .kundli{margin:0;display:flex;flex-direction:column;align-items:center;gap:10px}
.lecture .kundli-paire .kundli svg{display:block;width:100%;max-width:320px;height:auto;overflow:visible}
.lecture .kundli-paire figcaption{text-align:center;line-height:1.5}
.lecture .kundli-paire figcaption strong{display:block;font-family:var(--serif);font-size:15px;color:var(--accent-clair);margin-bottom:3px}
.lecture .kundli-paire figcaption span{display:block;font-size:12.5px;color:var(--encre);max-width:34ch;margin-inline:auto}

/* La CROIX en tête d'une lecture de tarot : pendant de la roue du thème côté astro. Petite (les lames sont là pour
   se reconnaître, pas pour se relire).

   ⚠ Elle reste une CROIX À TOUTE LARGEUR, et c'est le fond du sujet. Elle se repliait en colonne sous 620px, ce qui
   revenait à servir cinq cartes empilées : or la place EST le sens ici, le pour et le contre ne s'opposent que parce
   qu'ils se font face, et le texte les lit comme tels (« L'Étoile, en face »). Une colonne ne dit plus rien de cette
   opposition, et sur mobile la lecture perdait la figure même qu'elle commente. Trois colonnes tiennent partout : à
   320px de large, le wrap laisse ~256px, donc des lames de ~78px — assez pour les reconnaître, ce qu'on leur demande.
   La grille rétrécit d'elle-même (les images sont en width:100%), il n'y a que le gap et le libellé à resserrer. */
.croix-lue{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:430px;margin:0 auto;align-items:start}
.croix-lue .c-haut{grid-column:2;grid-row:1}
.croix-lue .c-gauche{grid-column:1;grid-row:2}
.croix-lue .c-centre{grid-column:2;grid-row:2}
.croix-lue .c-droite{grid-column:3;grid-row:2}
.croix-lue .c-bas{grid-column:2;grid-row:3}
.croix-lue .lue{text-align:center}
/* Pas de BORDURE : la planche porte son propre lisere imprime, et l'ombre suffit a la detacher du fond. Meme
   regle que sur la page de tirage — les deux montrent la meme carte, elles ne peuvent pas la montrer autrement.
   L'arrondi, lui, est pose plus bas pour toutes les planches a la fois. */
.croix-lue .lue img{width:100%;max-width:118px;background:#fff;
    box-shadow:0 8px 24px -12px rgba(0,0,0,.7)}
.croix-lue .lue img.renv{transform:rotate(180deg)}
.croix-lue .lue span{display:block;margin-top:5px;font-size:11px;line-height:1.3;color:var(--voile)}
/* 420/714 = les dimensions réelles des 23 planches (les 22 lames et le dos). L'emplacement vide doit avoir
   exactement la hauteur de la carte qui viendra s'y poser, sinon la croix se décale de deux pixels au tirage. */
.croix-lue .vide{border:1px dashed rgba(var(--accent-rgb),.3);border-radius:6px;aspect-ratio:420/714;max-width:118px;margin:0 auto}
/* Le TIRAGE D'INTRODUCTION : la meme croix, plus une lame POSEE HORS D'ELLE. La ligne supplementaire n'est pas
   decorative — la methode place cette lame en dehors, elle n'entre pas dans le calcul du centre, et l'aligner avec
   les autres effacerait la seule chose que sa position dit. Les cinq cases de la croix gardent leurs classes, seules
   les lignes se decalent d'un cran. */
.croix-intro .c-haut{grid-column:2;grid-row:2}
.croix-intro .c-gauche{grid-column:1;grid-row:3}
.croix-intro .c-centre{grid-column:2;grid-row:3}
.croix-intro .c-droite{grid-column:3;grid-row:3}
.croix-intro .c-bas{grid-column:2;grid-row:4}
.croix-intro .c-hors{grid-column:3;grid-row:1;text-align:center}
@media(max-width:620px){
  .croix-lue{gap:8px}
  .croix-lue .lue span{margin-top:4px;font-size:10px}
}
/* LES LIGNES LUES : une figure qui ne se pose PAS en croix, en tete de sa lecture — le tirage des 21 lames et ses
   trois lignes, demain les quatre trimestres du tirage annuel. Elle ne peut pas reutiliser la grille ci-dessus :
   celle-ci place chaque case a une coordonnee nommee, et toute cle qu'elle ne connait pas retombait dans « c-bas »,
   c'est-a-dire que les vingt et une lames s'empilaient dans une seule case.
   Le nombre de colonnes n'est PAS ecrit ici : il suit ce que la figure declare (sept lames par ligne, trois mois par
   trimestre), d'ou le flex plutot qu'un repeat(7,1fr) qui aurait fige la figure du jour dans la feuille de style.
   Une LIGNE est l'unite de lecture : on la retrecit, on ne la replie jamais en deux rangees — la couper ferait mentir
   la figure sur sa propre chronologie. */
.lignes-lue{max-width:780px;margin:0 auto}
.lignes-lue .ligne-lue{margin-bottom:16px}
.lignes-lue .ligne-lue > h4{font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.72;
    margin:0 0 6px;font-weight:600;text-align:center}
.lignes-lue .cases{display:flex;gap:7px;justify-content:center;align-items:start}
.lignes-lue .cases > .lue{flex:1 1 0;min-width:0;max-width:118px;text-align:center}
/* Pas de bordure : la planche porte son propre lisere imprime. L'arrondi est pose plus bas, pour toutes. */
.lignes-lue .lue img{width:100%;background:#fff;box-shadow:0 8px 24px -14px rgba(0,0,0,.7)}
.lignes-lue .lue img.renv{transform:rotate(180deg)}
.lignes-lue .lue span{display:block;margin-top:4px;font-size:9.5px;line-height:1.25;color:var(--voile)}
.lignes-lue .vide{border:1px dashed rgba(var(--accent-rgb),.3);border-radius:6px;aspect-ratio:420/714}
@media(max-width:620px){
  .lignes-lue .cases{gap:3px}
  .lignes-lue .lue span{font-size:8px}
}

/* ============================================================================================================
   L'ARRONDI D'UNE PLANCHE DE TAROT, en UN seul endroit et pour toutes.

   POURQUOI IL N'Y EN AVAIT PAS. Quatre commentaires de ce depot disaient « NI bordure NI arrondi sur la planche :
   elle porte son propre lisere imprime, a angles droits ». C'etait faux, et personne ne pouvait le voir : la planche
   porte un lisere ARRONDI, et l'aire hors de l'arc etait remplie de NOIR sur les 22 majeurs et le dos, converts a la
   main. Sur le fond nuit du site, ce noir se confondait avec le fond — la carte AVAIT l'air arrondie, et un
   border-radius par-dessus s'en ecartait effectivement. La reparation des planches du 2026-08-25 a mis ces coins au
   BLANC, comme les 56 mineures l'etaient depuis toujours : le blanc, lui, ne se confond avec rien.

   LE RAYON EST MESURE, pas choisi : 30 px sur une planche de 420 x 714, constant sur les 78 lames et le dos
   (tools/TarotPlanches -- coins le releve fichier par fichier).

   LES DEUX POURCENTAGES sont ce qui le rend juste a toute taille d'affichage. Un rayon unique en pourcentage se
   rapporte a la largeur ET a la hauteur, donc dessine une ELLIPSE sur une planche qui n'est pas carree. Ecrits
   separement, 7,14 % de 420 et 4,2 % de 714 valent tous deux 30 px : le coin reste circulaire, et il suit la carte
   quand elle retrecit.

   SELECTEUR PAR LA SOURCE, et non par une classe : une planche est servie sous une demi-douzaine de classes (la
   croix lue, les lignes lues, la vignette du guide, la planche de tete, la lame citee, le paquet face cachee, la
   lame du jour), et trois d'entre elles posaient leur propre rayon de 5, 6 ou 7 px — trop petit, donc un coin blanc
   qui subsiste. Ce qui identifie une planche n'est pas sa classe, c'est son DOSSIER (CardIllustrations.Dossier). Les
   deux attributs donnent en prime la specificite qui tranche les egalites, sans !important.
   ============================================================================================================ */
img[src^="/img/tarot/"][src$=".webp"]{border-radius:7.14% / 4.2%}

/* ============================================================================================================
   TABLEAU FACTUEL des pages d'encyclopedie (Pythagore/Seo/SeoTable.cs)
   ------------------------------------------------------------------------------------------------------------
   Une table de reference calculee par le moteur, posee AU RENDU sous l'en-tete du guide. Elle vise l'extrait
   optimise : le tableau est l'une des trois formes que Google promeut en position zero, et la moins disputee.

   AUCUNE COULEUR EN DUR : tout passe par --accent / --panneau / --voile, donc la fiche se recolore d'elle-meme
   selon l'univers (doree en astro, violette en numero, ambree en vedique, turquoise en tarot), comme le reste du
   site. Une couleur ecrite ici serait doree sur les quatre.

   LE DEFILEMENT EST SUR LE CONTENEUR, jamais sur la page : la table pythagoricienne fait neuf colonnes et
   deborde sur un telephone. Sans ce conteneur, c'est le BODY qui defile lateralement, ce que le reste du site ne
   fait nulle part.
   ============================================================================================================ */
.seo-fiche{margin:2.4rem 0}
.seo-fiche figcaption{font-family:var(--serif);font-size:1.22rem;line-height:1.35;color:var(--accent-clair);margin-bottom:.75rem}
.seo-fiche-defile{overflow-x:auto;border:1px solid rgba(var(--accent-rgb),.22);border-radius:10px;background:rgba(var(--accent-rgb),.04)}
.seo-fiche table{width:100%;border-collapse:collapse;font-family:var(--sans);font-size:.94rem}
.seo-fiche th,.seo-fiche td{padding:.55rem .8rem;text-align:left;white-space:nowrap;border-bottom:1px solid rgba(var(--accent-rgb),.12)}
.seo-fiche thead th{font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);font-weight:600;background:rgba(var(--accent-rgb),.09)}
.seo-fiche tbody th{font-weight:600;color:var(--encre)}
.seo-fiche tbody td{color:var(--voile)}
.seo-fiche tbody tr:last-child th,.seo-fiche tbody tr:last-child td{border-bottom:0}
.seo-fiche tfoot th,.seo-fiche tfoot td{font-weight:600;color:var(--accent-clair);background:rgba(var(--accent-rgb),.09);border-top:1px solid rgba(var(--accent-rgb),.22);border-bottom:0}
/* La ligne (ou la cellule) du sujet de la page : c'est ce qui fait du tableau une reponse et pas une annexe. */
.seo-fiche tbody tr.est-ici th,.seo-fiche tbody tr.est-ici td,.seo-fiche .est-ici{background:rgba(var(--accent-rgb),.16);color:var(--accent-clair)}
.seo-fiche-note{margin:.6rem 0 0;font-size:.86rem;line-height:1.5;color:var(--voile)}
@media (max-width:600px){
  .seo-fiche th,.seo-fiche td{padding:.45rem .6rem;font-size:.88rem}
  .seo-fiche figcaption{font-size:1.08rem}
}

/* ============================================================================================================
   SOMMAIRE ANCRE d'un article de blog (MiseEnForme.AvecSommaireAncre)
   ------------------------------------------------------------------------------------------------------------
   Pose au RENDU depuis les <h2> que l'article porte deja : rien n'est ecrit en base, donc les articles publies
   en beneficient sans etre retouches. Il s'annonce par un PARAGRAPHE et non par un titre, pour ne pas ajouter un
   niveau a la hierarchie de l'auteur — c'est cette hierarchie qu'un moteur lit pour proposer des liens de saut.

   scroll-margin-top sur les titres : sans lui, un clic sur une ancre colle la section au bord haut de la fenetre
   et le titre passe sous l'en-tete du site. Le defaut ne se voit qu'apres avoir clique, donc jamais en relecture.
   ============================================================================================================ */
.sommaire-nav{margin:0 0 2rem;padding:1rem 1.2rem;border-radius:12px;
    background:rgba(var(--accent-rgb),.05);border:1px solid rgba(var(--accent-rgb),.18)}
.sommaire-titre{margin:0 0 .6rem;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;
    color:var(--accent);font-weight:600}
.sommaire-nav ul.sommaire{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}
.sommaire-nav ul.sommaire li{margin:0}
.sommaire-nav ul.sommaire a{color:var(--or-clair);text-decoration:none;font-size:.95rem;line-height:1.4;
    border-bottom:1px solid transparent;transition:border-color .2s}
.sommaire-nav ul.sommaire a:hover{border-bottom-color:rgba(var(--accent-rgb),.5)}
.post-body h2[id],.post-body h3[id]{scroll-margin-top:90px}
@media (max-width:600px){
  .sommaire-nav{padding:.85rem 1rem}
  .sommaire-nav ul.sommaire a{font-size:.9rem}
}

/* Liste ORDONNEE d'un calcul montre (SeoTable.Steps) : meme enveloppe que les tableaux, forme differente.
   Les etapes sont des SUITES DE CHIFFRES : la tabulaire garde les colonnes alignees d'une ligne a l'autre. */
.seo-etapes ol{margin:0;padding:0 0 0 1.4rem;display:flex;flex-direction:column;gap:.5rem;
    border:1px solid rgba(var(--accent-rgb),.22);border-radius:10px;background:rgba(var(--accent-rgb),.04);
    padding:1rem 1rem 1rem 2.4rem}
.seo-etapes li{color:var(--encre);font-family:var(--sans);font-size:.96rem;line-height:1.5;
    font-variant-numeric:tabular-nums}
.seo-etapes li::marker{color:var(--accent);font-weight:600}
