@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);
}
/* 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}
/* 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(--or-clair);font-family:var(--serif);font-size:23px;padding:0;margin:0}
.card-foot .go{font-size:12.5px;letter-spacing:.06em;color:var(--or);opacity:.55;transition:.28s;white-space:nowrap;align-self:center}
.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}

/* 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}
.field input,.field select{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{outline:none;border-color:var(--or)}
.field input::placeholder{color:rgba(167,163,200,.5)}

/* 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)}}

/* 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. */
.subnav{position:relative;z-index:2;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}

/* 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}
