/*
Theme Name:   Zodiakos
Theme URI:    https://zodiakos.fr
Author:       Zodiakos
Description:  Thème d'horoscope par abonnement, direction « almanach d'observatoire » : brume bleutée, filets de laiton, astrolabe lent. Page d'accueil de vente, lectures quotidiennes par signe, formules d'abonnement, FAQ. Compatible WooCommerce.
Version:      1.0.0
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4
License:      GNU General Public License v2 or later
License URI:  https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  ephemeride
Tags:         one-column, custom-colors, custom-menu, editor-style, featured-images, translation-ready, e-commerce, blog
*/

/* ─────────────────────────  FONTES LOCALES  ───────────────────────── */
/* Hébergées avec le thème : aucune requête vers un tiers, donc aucun
   consentement à recueillir pour le chargement des polices. */

@font-face{
  font-family:"IBM Plex Mono";
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url("assets/fonts/ibm-plex-mono-400.woff2") format("woff2");
}
@font-face{
  font-family:"IBM Plex Mono";
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url("assets/fonts/ibm-plex-mono-500.woff2") format("woff2");
}
@font-face{
  font-family:"Italiana";
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url("assets/fonts/italiana-400.woff2") format("woff2");
}
@font-face{
  font-family:"Spectral";
  font-style:italic;
  font-weight:300;
  font-display:swap;
  src:url("assets/fonts/spectral-300-italic.woff2") format("woff2");
}
@font-face{
  font-family:"Spectral";
  font-style:normal;
  font-weight:300;
  font-display:swap;
  src:url("assets/fonts/spectral-300.woff2") format("woff2");
}
@font-face{
  font-family:"Spectral";
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url("assets/fonts/spectral-400.woff2") format("woff2");
}
@font-face{
  font-family:"Spectral";
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url("assets/fonts/spectral-500.woff2") format("woff2");
}

/* ─────────────────────────────  JETONS  ───────────────────────────── */
:root{
  --ground:#E9ECF1;
  --ground-2:#F4F6F8;
  --surface:#FDFDFE;
  --ink:#191F2B;
  --ink-soft:#5C687C;
  --ink-faint:#8A94A6;
  --line:#CFD6E0;
  --line-soft:#E1E6ED;
  --accent:#3F7D6E;          /* vert-de-gris patiné */
  --on-accent:#F6FAF8;       /* texte posé sur l'accent */
  --accent-deep:#2E5F53;
  --accent-wash:#DCE8E3;
  --brass:#A98849;           /* filets d'instrument */
  --star:#4A5568;
  --shadow:0 1px 2px rgba(25,31,43,.05), 0 12px 32px -18px rgba(25,31,43,.35);

  --t-hero:clamp(3.1rem,9vw,7rem);
  --t-h2:clamp(1.85rem,4vw,2.85rem);
  --t-h3:1.2rem;
  --t-body:1.0625rem;
  --t-label:.6875rem;

  --serif:"Spectral",Georgia,"Times New Roman",serif;
  --display:"Italiana","Spectral",Georgia,serif;
  --mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;

  --col:min(1180px,calc(100% - 3rem));
  --radius:3px;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ground:#0E1219;
    --ground-2:#131924;
    --surface:#171E2A;
    --ink:#E6EAF1;
    --ink-soft:#9AA6B9;
    --ink-faint:#6C7A90;
    --line:#28313F;
    --line-soft:#1F2733;
    --accent:#79B3A2;
    --on-accent:#0E1219;
    --accent-deep:#9CCBBC;
    --accent-wash:#1B2A28;
    --brass:#C7A467;
    --star:#C3CEE0;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 16px 40px -22px rgba(0,0,0,.8);
  }
}
:root[data-theme="dark"]{
  --ground:#0E1219; --ground-2:#131924; --surface:#171E2A;
  --ink:#E6EAF1; --ink-soft:#9AA6B9; --ink-faint:#6C7A90;
  --line:#28313F; --line-soft:#1F2733;
  --accent:#79B3A2; --on-accent:#0E1219; --accent-deep:#9CCBBC; --accent-wash:#1B2A28;
  --brass:#C7A467; --star:#C3CEE0;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 16px 40px -22px rgba(0,0,0,.8);
}

/* ─────────────────────────────  BASE  ───────────────────────────── */
*{box-sizing:border-box}
body{
  margin:0; background:var(--ground); color:var(--ink);
  font-family:var(--serif); font-size:var(--t-body); font-weight:300;
  line-height:1.75; -webkit-font-smoothing:antialiased;
}
h1,h2,h3{margin:0; text-wrap:balance; font-weight:400}
p{margin:0}
a{color:inherit}
:focus-visible{outline:2px solid var(--accent); outline-offset:3px; border-radius:2px}
.wrap{width:var(--col); margin-inline:auto}
.label{
  font-family:var(--mono); font-size:var(--t-label); font-weight:500;
  letter-spacing:.19em; text-transform:uppercase; color:var(--ink-faint);
  line-height:1.6;
}
.rule{height:1px; background:var(--line-soft); border:0; margin:0}

/* ─────────────────────────────  EN-TÊTE  ───────────────────────────── */
.top{
  position:sticky; top:0; z-index:40;
  background:color-mix(in srgb, var(--ground) 88%, transparent);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line-soft);
}
.top-in{
  width:var(--col); margin-inline:auto;
  display:flex; align-items:center; gap:2rem;
  height:70px;
}
.brand{
  font-family:var(--display); font-size:1.5rem; letter-spacing:.06em;
  text-decoration:none; display:flex; align-items:center; gap:.6rem;
}
.brand svg{flex:none}
.nav{display:flex; gap:1.9rem; margin-left:auto; align-items:center}
.nav :where(a:not(.btn)){
  font-family:var(--mono); font-size:var(--t-label); letter-spacing:.15em;
  text-transform:uppercase; text-decoration:none; color:var(--ink-soft);
  transition:color .25s;
}
.nav :where(a:not(.btn)):hover{color:var(--accent)}
@media(max-width:860px){ .nav a:not(.btn){display:none} }

.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
  font-family:var(--mono); font-size:var(--t-label); font-weight:500;
  letter-spacing:.15em; text-transform:uppercase; text-decoration:none;
  padding:.85rem 1.5rem; border-radius:var(--radius); border:1px solid var(--accent);
  background:var(--accent); color:var(--on-accent);
  transition:background .25s, border-color .25s, transform .25s;
}
.btn:hover{background:var(--accent-deep); border-color:var(--accent-deep); transform:translateY(-1px)}
.btn.ghost{background:transparent; color:var(--ink); border-color:var(--line)}
.btn.ghost:hover{border-color:var(--accent); color:var(--accent); background:transparent}

.top .btn{padding:.6rem 1.1rem}

/* ─────────────────────────────  HÉROS  ───────────────────────────── */
.hero{position:relative; overflow:hidden; border-bottom:1px solid var(--line-soft)}
#sky{position:absolute; inset:0; width:100%; height:100%; display:block}
.astrolabe{
  position:absolute; right:-18vw; top:50%; translate:0 -50%;
  width:min(78vh,760px); aspect-ratio:1; pointer-events:none; opacity:.5;
}
.astrolabe .spin{transform-origin:50% 50%; animation:turn 300s linear infinite}
.astrolabe .spin-slow{transform-origin:50% 50%; animation:turn 700s linear infinite reverse}
@keyframes turn{to{rotate:360deg}}

.hero-in{
  position:relative; width:var(--col); margin-inline:auto;
  display:grid; grid-template-columns:minmax(0,1.45fr) minmax(0,.85fr);
  gap:clamp(2rem,5vw,5rem); align-items:center;
  padding:clamp(4.5rem,11vh,8.5rem) 0 clamp(4rem,9vh,7rem);
}
@media(max-width:940px){
  .hero-in{grid-template-columns:1fr; padding-bottom:3rem}
  .astrolabe{opacity:.22; right:-40vw}
}
.eyebrow{display:flex; flex-wrap:wrap; gap:.4rem 1.1rem; margin-bottom:1.9rem}
.eyebrow span{position:relative; padding-left:1.1rem}
.eyebrow span::before{
  content:""; position:absolute; left:0; top:.55em;
  width:5px; height:5px; border-radius:50%; background:var(--brass);
}
h1{
  font-family:var(--display); font-size:var(--t-hero); line-height:.94;
  letter-spacing:.005em; margin-bottom:1.6rem;
}
h1 em{font-style:normal; color:var(--accent)}
.lede{
  font-size:1.2rem; line-height:1.7; color:var(--ink-soft);
  max-width:34ch; margin-bottom:2.4rem;
}
.cta-row{display:flex; flex-wrap:wrap; gap:.85rem; align-items:center}
.cta-note{font-family:var(--mono); font-size:var(--t-label); color:var(--ink-faint); letter-spacing:.08em}

/* carte éphéméride */
.card{
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius); box-shadow:var(--shadow);
}
.eph{padding:1.75rem}
.eph-head{display:flex; align-items:center; gap:1.1rem; margin-bottom:1.4rem}
.moon{flex:none}
.eph-head .label{color:var(--ink-soft)}
.eph-head strong{
  display:block; font-family:var(--display); font-size:1.5rem;
  font-weight:400; letter-spacing:.03em; color:var(--ink);
}
.eph table{width:100%; border-collapse:collapse; font-family:var(--mono); font-size:.78rem}
.eph td{
  padding:.62rem 0; border-top:1px solid var(--line-soft);
  color:var(--ink-soft); font-variant-numeric:tabular-nums;
}
.eph td:last-child{text-align:right; color:var(--ink)}
.eph tr:first-child td{border-top:0}
.glyph{color:var(--brass); font-size:.95rem}

/* ─────────────────────────────  SECTIONS  ───────────────────────────── */
section{padding:clamp(4.5rem,10vh,7.5rem) 0}
.sec-head{max-width:52ch; margin-bottom:clamp(2.5rem,5vw,3.75rem)}
.sec-head .label{margin-bottom:1rem}
h2{font-family:var(--display); font-size:var(--t-h2); line-height:1.08; letter-spacing:.01em}
.sec-head p{margin-top:1rem; color:var(--ink-soft); max-width:46ch}

/* ── sélecteur de signes ── */
.signes{background:var(--ground-2); border-block:1px solid var(--line-soft)}
.signes-grid{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);
  gap:clamp(2rem,5vw,4.5rem); align-items:start;
}
@media(max-width:860px){ .signes-grid{grid-template-columns:1fr} }
.wheel{
  display:grid; grid-template-columns:repeat(4,1fr);
  border-top:1px solid var(--line); border-left:1px solid var(--line);
}
.wheel button{
  all:unset; cursor:pointer; text-align:center;
  border-right:1px solid var(--line); border-bottom:1px solid var(--line);
  padding:1.15rem .4rem 1rem; background:var(--surface);
  transition:background .25s, color .25s;
  display:flex; flex-direction:column; align-items:center; gap:.35rem;
}
.wheel button:hover{background:var(--accent-wash)}
.wheel button .sym{
  font-size:1.5rem; line-height:1; color:var(--ink-soft);
  font-family:var(--serif); transition:color .25s;
}
.wheel button .nom{
  font-family:var(--mono); font-size:.625rem; letter-spacing:.13em;
  text-transform:uppercase; color:var(--ink-faint);
}
.wheel button[aria-pressed="true"]{background:var(--accent); }
.wheel button[aria-pressed="true"] .sym,
.wheel button[aria-pressed="true"] .nom{color:var(--on-accent)}

.lecture{padding:2.25rem clamp(1.5rem,3vw,2.5rem)}
.lecture-top{
  display:flex; align-items:baseline; justify-content:space-between;
  gap:1rem; padding-bottom:1.1rem; margin-bottom:1.5rem;
  border-bottom:1px solid var(--line-soft);
}
.lecture-top h3{font-family:var(--display); font-size:2rem; letter-spacing:.03em}
.lecture-top .label{white-space:nowrap}
#eph-texte{color:var(--ink-soft); min-height:9.5rem}
#eph-texte p + p{margin-top:1rem}

/* ── prestations ── */
.offres{display:grid; grid-template-columns:repeat(4,1fr); gap:0; border-top:1px solid var(--line)}
@media(max-width:900px){ .offres{grid-template-columns:repeat(2,1fr)} }
@media(max-width:520px){ .offres{grid-template-columns:1fr} }
.offre{padding:2rem 1.75rem 2.25rem 0; border-right:1px solid var(--line-soft)}
.offre:last-child{border-right:0}
@media(max-width:900px){
  .offre{padding-inline:0 1.5rem; border-bottom:1px solid var(--line-soft)}
  .offre:nth-child(2n){border-right:0; padding-right:0}
}
.offre .num{
  font-family:var(--mono); font-size:var(--t-label); color:var(--brass);
  letter-spacing:.14em; display:block; margin-bottom:1.4rem;
}
.offre h3{font-family:var(--display); font-size:var(--t-h3); font-size:1.4rem; letter-spacing:.03em; margin-bottom:.6rem}
.offre p{color:var(--ink-soft); font-size:.97rem}

/* ── tarifs ── */
.tarifs{background:var(--ground-2); border-block:1px solid var(--line-soft)}
.plans{
  display:grid; gap:1.25rem; align-items:stretch;
  grid-template-columns:repeat(auto-fit, minmax(min(18rem,100%), 1fr));
  max-width:56rem;
}
@media(max-width:900px){ .plans{grid-template-columns:1fr; max-width:34rem} }
.plan{display:flex; flex-direction:column; padding:2rem 1.85rem 2.25rem; position:relative}
.plan.mis{border-color:var(--accent); box-shadow:0 0 0 1px var(--accent), var(--shadow)}
.plan .tag{
  position:absolute; top:-1px; right:1.5rem;
  background:var(--accent); color:var(--on-accent); padding:.3rem .7rem;
  font-family:var(--mono); font-size:.6rem; letter-spacing:.15em; text-transform:uppercase;
}
.plan h3{font-family:var(--display); font-size:1.75rem; letter-spacing:.04em}
.plan .pitch{color:var(--ink-faint); font-size:.92rem; margin-top:.3rem; min-height:2.9em}
.prix{display:flex; align-items:baseline; gap:.4rem; margin:1.5rem 0 .3rem}
.prix .n{font-family:var(--display); font-size:3.1rem; line-height:1; letter-spacing:.01em}
.prix .u{font-family:var(--mono); font-size:.75rem; color:var(--ink-faint); letter-spacing:.06em}
.prix-note{font-family:var(--mono); font-size:.68rem; color:var(--brass); letter-spacing:.08em; min-height:1.4em}
.plan ul{list-style:none; padding:0; margin:1.75rem 0 2rem; display:grid; gap:.75rem}
.plan li{
  position:relative; padding-left:1.5rem; font-size:.95rem; color:var(--ink-soft);
  line-height:1.55;
}
.plan li::before{
  content:"·"; position:absolute; left:.35rem; top:-.1em;
  color:var(--accent); font-size:1.3rem; line-height:1.4;
}
.plan li.off{color:var(--ink-faint); opacity:.65}
.plan li.off::before{content:"\00D7"; font-size:.7rem; top:.05em; color:var(--ink-faint)}
.plan .btn{margin-top:auto; width:100%}
.reassure{
  display:flex; flex-wrap:wrap; gap:.5rem 2rem; justify-content:center;
  margin-top:2.5rem; padding-top:2rem; border-top:1px solid var(--line-soft);
}

/* ── faq ── */
.faq-grid{display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:clamp(2rem,5vw,4rem)}
@media(max-width:860px){ .faq-grid{grid-template-columns:1fr} }
details{border-bottom:1px solid var(--line-soft)}
details summary{
  cursor:pointer; list-style:none; padding:1.35rem 2rem 1.35rem 0;
  position:relative; font-size:1.05rem; color:var(--ink);
}
details summary::-webkit-details-marker{display:none}
details summary::after{
  content:"+"; position:absolute; right:.25rem; top:1.2rem;
  font-family:var(--mono); color:var(--accent); font-size:1.1rem; transition:rotate .3s;
}
details[open] summary::after{content:"+"; rotate:45deg}
details p{padding:0 2rem 1.5rem 0; color:var(--ink-soft); font-size:.98rem; max-width:60ch}

/* ── pied ── */
footer{border-top:1px solid var(--line); padding:3.5rem 0 2.5rem}
.foot{display:flex; flex-wrap:wrap; gap:2rem; justify-content:space-between; align-items:flex-start}
.foot-links{display:flex; flex-wrap:wrap; gap:1.75rem}
.foot-links a{font-family:var(--mono); font-size:var(--t-label); letter-spacing:.13em; text-transform:uppercase; color:var(--ink-soft); text-decoration:none}
.foot-links a:hover{color:var(--accent)}
.mentions{margin-top:2.5rem; padding-top:1.5rem; border-top:1px solid var(--line-soft); color:var(--ink-faint); font-size:.82rem; max-width:70ch}

/* apparition */
.rise{opacity:0; translate:0 14px; transition:opacity .9s ease, translate .9s cubic-bezier(.22,.7,.3,1)}
.rise.vu{opacity:1; translate:0 0}
@media (prefers-reduced-motion:reduce){
  *{animation:none !important; transition-duration:.01ms !important}
  .rise{opacity:1; translate:0 0}
}

/* ═══════════════════════════════════════════════════════════════
   AJOUTS WORDPRESS
   ═══════════════════════════════════════════════════════════════ */

/* accessibilité : lien d'évitement et texte lecteur d'écran */
.screen-reader-text{
  position:absolute !important; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}
.screen-reader-text:focus{
  position:fixed !important; top:1rem; left:1rem; z-index:100;
  width:auto; height:auto; clip:auto; padding:.9rem 1.4rem;
  background:var(--surface); color:var(--ink); border:1px solid var(--accent);
  border-radius:var(--radius); font-family:var(--mono); font-size:var(--t-label);
  letter-spacing:.14em; text-transform:uppercase;
}

/* barre d'administration */
.admin-bar .top{top:32px}
@media(max-width:782px){ .admin-bar .top{top:46px} }

/* menu généré par WordPress */
.nav ul{list-style:none; margin:0; padding:0; display:flex; gap:1.9rem; align-items:center}
.nav li{position:relative}
.nav .sub-menu{
  display:none; position:absolute; top:calc(100% + .9rem); left:-1rem;
  flex-direction:column; gap:0; min-width:13rem; padding:.5rem 0;
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius); box-shadow:var(--shadow);
}
.nav li:hover > .sub-menu, .nav li:focus-within > .sub-menu{display:flex}
.nav .sub-menu a{display:block; padding:.6rem 1.2rem}
.menu-toggle{
  display:none; margin-left:auto; background:none; border:1px solid var(--line);
  border-radius:var(--radius); padding:.55rem .9rem; cursor:pointer; color:var(--ink);
  font-family:var(--mono); font-size:var(--t-label); letter-spacing:.14em; text-transform:uppercase;
}
@media(max-width:860px){
  .menu-toggle{display:block}
  .nav{
    position:absolute; top:100%; left:0; right:0; display:none;
    background:var(--surface); border-bottom:1px solid var(--line);
    padding:1.25rem 1.5rem 1.75rem;
  }
  .nav.ouvert{display:block}
  .nav ul{flex-direction:column; align-items:flex-start; gap:1.1rem}
  .nav a:not(.btn){display:block}
  .nav .sub-menu{display:flex; position:static; border:0; box-shadow:none; padding:.4rem 0 0 1rem; background:none}
}

/* pages et articles */
.page-hero{padding:clamp(3.5rem,8vh,6rem) 0 0; border-bottom:1px solid var(--line-soft)}
.page-hero .label{margin-bottom:1rem}
.page-hero h1{font-size:clamp(2.4rem,6vw,4.2rem); margin-bottom:2.5rem}
.contenu{width:min(70ch,calc(100% - 3rem)); margin-inline:auto; padding:clamp(3rem,7vh,5rem) 0}
.contenu > * + *{margin-top:1.5rem}
.contenu h2{font-family:var(--display); font-size:2rem; margin-top:3rem; letter-spacing:.02em}
.contenu h3{font-family:var(--display); font-size:1.5rem; margin-top:2.25rem; letter-spacing:.03em}
.contenu :where(a:not(.btn)){color:var(--accent); text-underline-offset:.22em; text-decoration-thickness:1px}
.contenu blockquote{
  margin:2.5rem 0; padding-left:1.75rem; border-left:1px solid var(--brass);
  font-style:italic; color:var(--ink-soft);
}
.contenu ul, .contenu ol{padding-left:1.4rem; display:grid; gap:.5rem}
.contenu img, .contenu iframe{max-width:100%; height:auto; border-radius:var(--radius)}
.contenu figcaption{font-family:var(--mono); font-size:var(--t-label); color:var(--ink-faint); margin-top:.6rem}
.contenu table{width:100%; border-collapse:collapse; font-size:.95rem}
.contenu th, .contenu td{padding:.7rem .9rem; border-bottom:1px solid var(--line-soft); text-align:left}
.contenu pre{overflow-x:auto; padding:1.25rem; background:var(--ground-2); border:1px solid var(--line-soft); border-radius:var(--radius); font-family:var(--mono); font-size:.85rem}
.alignwide{width:min(1180px,calc(100vw - 3rem)); margin-inline:calc(50% - min(590px,50vw - 1.5rem))}
.alignfull{width:100vw; margin-inline:calc(50% - 50vw); max-width:100vw}
.aligncenter{margin-inline:auto; display:block}

/* liste des lectures */
.liste{display:grid; gap:0; border-top:1px solid var(--line)}
.lecture-item{
  display:grid; grid-template-columns:3.5rem minmax(0,1fr) 9rem;
  gap:1.5rem; align-items:baseline; padding:1.6rem 0;
  border-bottom:1px solid var(--line-soft); text-decoration:none;
  transition:background .25s;
}
.lecture-item:hover{background:var(--ground-2)}
.lecture-item .sym{font-size:1.5rem; color:var(--brass); line-height:1}
.lecture-item h3{font-family:var(--display); font-size:1.4rem; letter-spacing:.02em}
.lecture-item p{color:var(--ink-soft); font-size:.95rem; margin-top:.3rem}
.lecture-item time{font-family:var(--mono); font-size:var(--t-label); color:var(--ink-faint); letter-spacing:.12em; text-align:right}
@media(max-width:640px){
  .lecture-item{grid-template-columns:2.5rem 1fr; }
  .lecture-item time{grid-column:2; text-align:left}
}

/* pagination */
.pagination{display:flex; gap:.5rem; justify-content:center; margin-top:3rem}
.pagination .page-numbers{
  font-family:var(--mono); font-size:var(--t-label); letter-spacing:.1em;
  padding:.7rem 1rem; border:1px solid var(--line); border-radius:var(--radius);
  text-decoration:none; color:var(--ink-soft);
}
.pagination .current{background:var(--accent); border-color:var(--accent); color:var(--on-accent)}

/* accès réservé aux abonnés */
.mur{
  position:relative; margin-top:2rem; padding:2.5rem clamp(1.5rem,4vw,3rem);
  text-align:center; background:var(--ground-2);
  border:1px solid var(--line); border-radius:var(--radius);
}
.mur h3{font-family:var(--display); font-size:1.75rem; letter-spacing:.03em; margin-bottom:.6rem}
.mur p{color:var(--ink-soft); max-width:44ch; margin:0 auto 1.75rem}
/* La troncature se fait côté serveur : il ne reste qu'à estomper la fin
   du dernier paragraphe offert, sans jamais rien masquer d'envoyé. */
.tronque > :last-child{
  -webkit-mask-image:linear-gradient(to bottom, #000 45%, rgba(0,0,0,.25) 100%);
  mask-image:linear-gradient(to bottom, #000 45%, rgba(0,0,0,.25) 100%);
}

/* WooCommerce : habillage minimal cohérent */
.woocommerce-page .contenu{width:var(--col)}
.woocommerce ul.products{display:grid; grid-template-columns:repeat(auto-fill,minmax(15rem,1fr)); gap:1.5rem; list-style:none; padding:0}
.woocommerce ul.products li.product{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:1.5rem}
.woocommerce ul.products li.product .woocommerce-loop-product__title{font-family:var(--display); font-size:1.35rem; letter-spacing:.03em}
.woocommerce .price{font-family:var(--mono); color:var(--ink); font-variant-numeric:tabular-nums}
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button,
.woocommerce #respond input#submit, .woocommerce a.button.alt, .woocommerce button.button.alt{
  font-family:var(--mono); font-size:var(--t-label); font-weight:500;
  letter-spacing:.15em; text-transform:uppercase; padding:.85rem 1.5rem;
  border-radius:var(--radius); border:1px solid var(--accent);
  background:var(--accent); color:var(--on-accent);
}
.woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce a.button.alt:hover{
  background:var(--accent-deep); border-color:var(--accent-deep); color:var(--on-accent);
}
.woocommerce-message, .woocommerce-info, .woocommerce-error{
  border-top-color:var(--accent) !important; background:var(--ground-2);
  font-size:.95rem;
}
.woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea,
.woocommerce form .form-row select{
  padding:.75rem .9rem; border:1px solid var(--line); border-radius:var(--radius);
  background:var(--surface); color:var(--ink); font-family:var(--serif);
}

/* formulaires génériques */
input[type=text], input[type=email], input[type=password], input[type=search],
input[type=date], input[type=time], input[type=number], input[type=tel], textarea{
  font-family:var(--serif); font-size:1rem; padding:.8rem 1rem;
  background:var(--surface); color:var(--ink);
  border:1px solid var(--line); border-radius:var(--radius);
}
button, input[type=submit]{cursor:pointer}

/* Les sélecteurs natifs de date et d'heure gardent la hauteur des autres champs. */
input[type=date], input[type=time]{min-height:3rem; font-family:var(--mono); font-size:.95rem}
input[type=date]::-webkit-calendar-picker-indicator,
input[type=time]::-webkit-calendar-picker-indicator{opacity:.45; cursor:pointer}
input[type=date]:hover::-webkit-calendar-picker-indicator,
input[type=time]:hover::-webkit-calendar-picker-indicator{opacity:.8}

/* menu du pied de page généré par WordPress */
.foot-links ul{list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:1.75rem}
.foot-widgets{display:grid; gap:1rem; max-width:22rem}
.foot-widgets .widget ul{list-style:none; margin:.5rem 0 0; padding:0; display:grid; gap:.4rem; font-size:.92rem}
.foot-widgets a{color:var(--ink-soft); text-decoration:none}
.foot-widgets a:hover{color:var(--accent)}

/* ajustements des en-têtes de section */
.sec-head.etroit{max-width:46ch}
.sec-head.sans-marge{margin-bottom:0}
.lecture-lien{margin-top:1.75rem}

/* carte du ciel : rétrogradation et aspect du jour */
.eph .retro{
  color:var(--brass); border:0; text-decoration:none; cursor:help;
  margin-left:.35em; font-size:.9em;
}
.eph-aspect{
  display:flex; align-items:baseline; gap:.6rem; flex-wrap:wrap;
  margin-top:1.25rem; padding-top:1.1rem; border-top:1px solid var(--line-soft);
  font-size:.9rem; color:var(--ink-soft);
}
.eph-aspect .label{width:100%}
.eph-aspect .orbe{
  font-family:var(--mono); font-size:.7rem; color:var(--brass);
  font-variant-numeric:tabular-nums; margin-left:auto;
}

/* ═══════════════════════════════════════════════════════════════
   COMPTES : FORMULAIRES ET ESPACE PERSONNEL
   ═══════════════════════════════════════════════════════════════ */

.formulaire-page{
  display:grid; grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);
  gap:clamp(2rem,5vw,4rem); align-items:start;
}
@media(max-width:820px){ .formulaire-page{grid-template-columns:1fr} }

.formulaire{
  display:grid; gap:1.5rem;
  padding:clamp(1.75rem,4vw,2.5rem);
}
.formulaire > .label{margin-bottom:-.5rem}
.champ{display:grid; gap:.5rem}
.champ-double{display:grid; grid-template-columns:1fr 1fr; gap:1.25rem}
@media(max-width:520px){ .champ-double{grid-template-columns:1fr} }

.champ label{
  font-family:var(--mono); font-size:var(--t-label); font-weight:500;
  letter-spacing:.14em; text-transform:uppercase; color:var(--ink-soft);
}
.facultatif{
  color:var(--ink-faint); letter-spacing:.1em; text-transform:none;
  font-size:.95em; margin-left:.4em;
}
.champ input{width:100%; font-size:1rem}
.champ input:focus{border-color:var(--accent); outline:none; box-shadow:0 0 0 3px var(--accent-wash)}

.aide{font-size:.88rem; color:var(--ink-faint); line-height:1.55}
.aide a{color:var(--accent)}
.aide.encart{
  padding:1rem 1.1rem; background:var(--ground-2);
  border-left:1px solid var(--brass); border-radius:0 var(--radius) var(--radius) 0;
}
.case{
  display:flex; align-items:center; gap:.6rem; font-size:.95rem; color:var(--ink-soft);
}
.case input{accent-color:var(--accent); width:auto}

/* champ leurre anti-robot : invisible mais atteignable au clavier */
.champ-leurre{position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden}

.alerte{
  padding:1rem 1.25rem; border-radius:var(--radius); font-size:.95rem;
  background:var(--ground-2); border-left:2px solid var(--brass); color:var(--ink);
}
.alerte.succes{border-left-color:var(--accent)}
.alerte ul{margin:0; padding-left:1.1rem; display:grid; gap:.35rem}

.formulaire-cote{padding-top:.5rem}
.liste-points{list-style:none; margin:1.25rem 0 0; padding:0; display:grid; gap:.85rem}
.liste-points li{
  position:relative; padding-left:1.4rem; color:var(--ink-soft); font-size:.97rem; line-height:1.55;
}
.liste-points li::before{
  content:"·"; position:absolute; left:.3rem; top:-.15em;
  color:var(--accent); font-size:1.35rem;
}

.compte-grille{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(1.5rem,4vw,2.5rem); align-items:start;
}
@media(max-width:860px){ .compte-grille{grid-template-columns:1fr} }
.compte-grille > .alerte{grid-column:1 / -1}
.compte-colonne{display:grid; gap:1.5rem}
.bloc-compte{padding:clamp(1.5rem,3vw,2rem)}
.bloc-compte > .label{display:block; margin-bottom:1rem}
.signe-titre{
  display:flex; align-items:center; gap:.9rem;
  font-family:var(--display); font-size:2.25rem; letter-spacing:.03em; font-weight:400;
}
.signe-glyphe{color:var(--brass); font-family:var(--serif); font-size:2rem; line-height:1}

/* ═══════════════════════════════════════════════════════════════
   CARTE DU CIEL
   ═══════════════════════════════════════════════════════════════ */

.roue{
  width:100%; max-width:34rem; height:auto; display:block; margin-inline:auto;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
}
.roue-signe{font-family:var(--serif); font-size:19px; fill:var(--brass)}
.roue-astre{font-family:var(--serif); font-size:22px; fill:var(--ink)}
.roue-astre.fort{fill:var(--accent)}
.roue-degre{font-family:var(--mono); font-size:10px; fill:var(--ink-faint)}
.roue-maison{font-family:var(--mono); font-size:11px; fill:var(--ink-faint)}
.roue-axe{font-family:var(--mono); font-size:10px; fill:var(--accent); letter-spacing:.1em}

.theme-grille{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(2rem,5vw,3.5rem); align-items:start;
}
@media(max-width:900px){ .theme-grille{grid-template-columns:1fr} }

.theme-entete{
  display:flex; flex-wrap:wrap; gap:.5rem 2rem; align-items:baseline;
  padding-bottom:1.25rem; margin-bottom:1.75rem; border-bottom:1px solid var(--line-soft);
}
.theme-entete strong{
  font-family:var(--display); font-size:1.5rem; font-weight:400; letter-spacing:.03em;
}

.table-theme{width:100%; border-collapse:collapse; font-size:.9rem}
.table-theme th{
  font-family:var(--mono); font-size:var(--t-label); font-weight:500;
  letter-spacing:.14em; text-transform:uppercase; color:var(--ink-faint);
  text-align:left; padding:0 .8rem .7rem 0; border-bottom:1px solid var(--line);
}
.table-theme td{
  padding:.55rem .8rem .55rem 0; border-bottom:1px solid var(--line-soft);
  color:var(--ink-soft); font-variant-numeric:tabular-nums;
}
.table-theme td:first-child{color:var(--ink)}
.table-theme .glyph{color:var(--brass); margin-right:.3em}
.table-theme .retro{color:var(--brass); border:0; text-decoration:none; cursor:help}

.reperes{display:grid; gap:.75rem; margin-top:1.75rem}
.repere{
  display:grid; grid-template-columns:7rem 1fr; gap:1rem; align-items:baseline;
  font-size:.92rem;
}
.repere .label{color:var(--ink-faint)}
.repere b{font-weight:400; color:var(--ink)}

.aspects-liste{list-style:none; padding:0; margin:1.5rem 0 0; display:grid; gap:.5rem}
.aspects-liste li{
  display:grid; grid-template-columns:1.5rem 1fr auto; gap:.7rem;
  align-items:baseline; font-size:.92rem; color:var(--ink-soft);
  padding-bottom:.5rem; border-bottom:1px solid var(--line-soft);
}
.aspects-liste .asp-glyphe{color:var(--brass); text-align:center}
.aspects-liste .asp-orbe{font-family:var(--mono); font-size:.72rem; color:var(--ink-faint)}
.aspects-liste .tendu .asp-glyphe{color:var(--brass)}
.aspects-liste .doux .asp-glyphe{color:var(--accent)}

.repartition{display:flex; flex-wrap:wrap; gap:.5rem; margin-top:1.25rem}
.repartition span{
  font-family:var(--mono); font-size:var(--t-label); letter-spacing:.1em;
  padding:.45rem .8rem; border:1px solid var(--line); border-radius:var(--radius);
  color:var(--ink-soft);
}
.repartition span b{color:var(--ink); font-weight:500}
.repartition span.dominant{border-color:var(--accent); color:var(--accent)}

.commentaire{max-width:66ch}
.commentaire h2{
  font-family:var(--display); font-size:1.75rem; letter-spacing:.02em;
  margin:2.75rem 0 1rem;
}
.commentaire h2:first-child{margin-top:0}
.commentaire p + p{margin-top:1.1rem}
.commentaire p{color:var(--ink-soft)}

/* liste des éphémérides téléchargeables */
.liste-pdf{list-style:none; margin:0; padding:0; display:grid; gap:.6rem}
.liste-pdf li{
  display:flex; align-items:baseline; justify-content:space-between; gap:1rem;
  padding-bottom:.6rem; border-bottom:1px solid var(--line-soft);
}
.liste-pdf a{color:var(--accent); text-decoration:none; text-underline-offset:.2em}
.liste-pdf a:hover{text-decoration:underline}

/* ═══════════════════════════════════════════════════════════════
   LEXIQUE
   ═══════════════════════════════════════════════════════════════ */

/* Un terme expliqué au survol : souligné discrètement, jamais clignotant. */
.terme{
  text-decoration:none; border-bottom:1px dotted var(--ink-faint);
  cursor:help; color:inherit;
}
.terme:hover{border-bottom-color:var(--accent); color:var(--accent)}
th .terme{border-bottom-color:var(--line)}

.intro-carte{
  max-width:70ch; color:var(--ink-soft); font-size:1rem;
  padding-bottom:1.75rem; margin-bottom:2rem;
  border-bottom:1px solid var(--line-soft);
}

.lexique{
  margin-top:clamp(2.5rem,5vw,3.5rem); border:1px solid var(--line);
  border-radius:var(--radius); background:var(--surface);
}
.lexique summary{
  cursor:pointer; list-style:none; padding:1.35rem 1.6rem;
  font-family:var(--display); font-size:1.35rem; letter-spacing:.03em;
  position:relative;
}
.lexique summary::-webkit-details-marker{display:none}
.lexique summary::after{
  content:"+"; position:absolute; right:1.6rem; top:1.35rem;
  font-family:var(--mono); color:var(--accent); font-size:1.1rem; transition:rotate .3s;
}
.lexique[open] summary::after{rotate:45deg}
.defs{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(min(22rem,100%),1fr));
  gap:1.75rem clamp(1.75rem,4vw,3rem);
  padding:0 1.6rem 1.9rem;
  border-top:1px solid var(--line-soft);
}
.defs .def{padding-top:1.5rem}
.def h3{
  font-family:var(--mono); font-size:var(--t-label); font-weight:500;
  letter-spacing:.14em; text-transform:uppercase; color:var(--brass);
  margin-bottom:.6rem;
}
.def p{color:var(--ink-soft); font-size:.95rem; line-height:1.7}

.eph-note{
  margin-top:1.1rem; padding-top:1rem; border-top:1px solid var(--line-soft);
  font-size:.82rem; line-height:1.6; color:var(--ink-faint);
}
.eph-illum{
  display:block; font-family:var(--mono); font-size:var(--t-label);
  letter-spacing:.12em; color:var(--ink-faint); margin-top:.25rem;
}

/* Rubriques d'une lecture : amour, travail, forme. */
.contenu h2.rubrique{
  font-family:var(--mono); font-size:var(--t-label); font-weight:500;
  letter-spacing:.19em; text-transform:uppercase; color:var(--brass);
  margin:2.25rem 0 .5rem; padding-bottom:.5rem;
  border-bottom:1px solid var(--line-soft);
}
.contenu h2.rubrique:first-child{margin-top:0}

/* ═══════════════════════════════════════════════════════════════
   BAROMÈTRE DU JOUR
   ═══════════════════════════════════════════════════════════════ */

.barometre{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(7.5rem,1fr));
  gap:1.25rem 1.75rem;
  padding:1.4rem 1.6rem; margin-bottom:2rem;
  background:var(--ground-2); border:1px solid var(--line);
  border-radius:var(--radius);
}
.barometre .domaine{display:flex; flex-direction:column; gap:.55rem}
.barometre .label{color:var(--ink-faint)}
.pastilles{display:flex; gap:.34rem}
.pastille{
  width:.62rem; height:.62rem; border-radius:50%;
  border:1px solid var(--line); background:transparent;
}
.pastille.pleine{background:var(--accent); border-color:var(--accent)}

/* Dans le panneau de la page d'accueil, en une seule ligne. */
.lecture .barometre{
  grid-template-columns:repeat(4,auto); justify-content:start;
  gap:.9rem 1.5rem; padding:.9rem 1.1rem; margin:0 0 1.5rem;
}
.lecture .barometre .domaine{gap:.4rem}

/* Icônes des domaines, reprises de Lucide. */
.barometre .label{display:flex; align-items:center; gap:.45rem}
.barometre .icone{
  width:.95rem; height:.95rem; flex:none;
  color:var(--brass); stroke-width:1.6;
}

/* ═══════════════════════════════════════════════════════════════
   NOTE DU JOUR
   ═══════════════════════════════════════════════════════════════ */

.note-jour{
  display:flex; align-items:center; gap:clamp(1.25rem,3vw,2rem);
  padding-bottom:1.75rem; margin-bottom:1.75rem;
  border-bottom:1px solid var(--line-soft);
}
.anneau{width:6.5rem; height:6.5rem; flex:none}
.anneau-note{
  font-family:var(--display); font-size:34px; fill:var(--ink); letter-spacing:.02em;
}
.anneau-sur{
  font-family:var(--mono); font-size:9px; fill:var(--ink-faint); letter-spacing:.14em;
}
.note-mots strong{display:block;
  font-family:var(--display); font-size:clamp(1.5rem,3.5vw,2rem);
  font-weight:400; letter-spacing:.02em; color:var(--ink); line-height:1.1;
}
@media(max-width:520px){
  .note-jour{gap:1rem}
  .anneau{width:5.25rem; height:5.25rem}
}

/* La légende des degrés, au pied d'une lecture. */
.legende-degres{
  margin-top:2.5rem; padding-top:1.4rem; border-top:1px solid var(--line-soft);
}
.legende-degres .label{display:block; color:var(--brass); margin-bottom:.6rem}
.legende-degres p{
  margin:0; font-size:.94rem; line-height:1.7; color:var(--ink-faint); max-width:62ch;
}

/* L'abonnement, sur la page « Mon compte ». */
.bloc-abonnement{border-left:2px solid var(--line)}
.bloc-abonnement.ouvert{border-left-color:var(--accent)}
