/* =========================================================================
   Fini le Yoyo — feuille de styles principale
   Charte : clair & chaud (greige/crème), sections « foncées chaudes »,
   touches manuscrites (Caveat). Serif Newsreader, corps Mulish.
   ========================================================================= */

/* ---------- 1. Tokens ---------- */
:root{
  /* Fonds clairs */
  --bg:        #EDE7DC;
  --surface:   #FBF7F0;
  --surface-2: #F4EEE4;
  /* Encre */
  --ink:       #2E2A26;
  --ink-soft:  #5C5448;
  /* Sections foncées chaudes */
  --dark:      #2E2A26;
  --dark-2:    #38332D;
  --dark-ink:  #E9DECF;
  --dark-soft: #B8AC99;
  /* Accents */
  --accent:        #D8714F;
  --accent-deep:   #A8431F;
  --sage:          #7E9B74;
  --sage-deep:     #4B6443;
  /* Utilitaires */
  --line:      #DCD2C2;
  --line-dark: #4A443C;
  --warn:      #C98A2E;

  /* Typo */
  --serif: "Newsreader", Georgia, serif;
  --sans:  "Mulish", system-ui, -apple-system, sans-serif;
  --hand:  "Caveat", "Comic Sans MS", cursive;

  /* Rayons & ombres */
  --r-sm: 10px;
  --r:    16px;
  --r-lg: 24px;
  --r-pill: 999px;
  --shadow:    0 10px 30px rgba(46,42,38,.08);
  --shadow-sm: 0 4px 14px rgba(46,42,38,.07);

  /* Layout */
  --maxw: 1120px;
  --gutter: clamp(20px, 5vw, 48px);
}

/* ---------- 2. Reset léger ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  margin:0;
  font-family:var(--sans);
  font-size:18px;
  line-height:1.7;
  color:var(--ink);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  /* texture papier très subtile */
  background-image:
    radial-gradient(rgba(255,255,255,.5) 1px, transparent 1px),
    radial-gradient(rgba(0,0,0,.012) 1px, transparent 1px);
  background-size: 22px 22px, 22px 22px;
  background-position: 0 0, 11px 11px;
}
img{ max-width:100%; display:block; }
a{ color:var(--accent-deep); text-underline-offset:3px; }
button{ font-family:inherit; }

/* ---------- 3. Typographie ---------- */
h1,h2,h3,h4{
  font-family:var(--serif);
  font-weight:500;
  line-height:1.15;
  color:var(--ink);
  margin:0 0 .5em;
  letter-spacing:-.01em;
}
h1{ font-size:clamp(2.3rem, 5.4vw, 3.6rem); }
h2{ font-size:clamp(1.8rem, 3.6vw, 2.6rem); }
h3{ font-size:clamp(1.25rem, 2.2vw, 1.6rem); }
p{ margin:0 0 1.1em; }
.lead{ font-size:clamp(1.1rem,1.6vw,1.35rem); color:var(--ink-soft); line-height:1.6; }
strong{ font-weight:700; }

/* Accent manuscrit */
.hand{
  font-family:var(--hand);
  font-weight:600;
  color:var(--accent-deep);
  font-size:1.55em;
  line-height:1;
}
.eyebrow{
  font-family:var(--hand);
  font-size:1.7rem;
  color:var(--accent-deep);
  display:inline-block;
  margin-bottom:.1em;
  transform:rotate(-1.2deg);
}
/* souligné dessiné main sous un mot-clé */
.u-hand{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='12' viewBox='0 0 120 12'%3E%3Cpath d='M2 7 C 30 2, 60 11, 90 5 S 116 3, 118 6' fill='none' stroke='%23D8714F' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:left bottom;
  background-size:100% .55em;
  padding-bottom:.12em;
}

/* ---------- 4. Layout ---------- */
.container{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--gutter); }
.section{ padding:clamp(56px, 9vw, 110px) 0; }
.section--cream{ background:var(--surface); }
.section--soft{ background:var(--surface-2); }
.section--dark{
  background:var(--dark);
  color:var(--dark-ink);
  background-image:linear-gradient(180deg, #322D28, #2A2521);
}
.section--dark h1,.section--dark h2,.section--dark h3{ color:var(--surface); }
.section--dark .lead{ color:var(--dark-soft); }
.section--dark .eyebrow,.section--dark .hand{ color:#E8B59C; }
.center{ text-align:center; }
.measure{ max-width:46ch; }
.measure-wide{ max-width:62ch; }
.mx-auto{ margin-inline:auto; }

/* ---------- 5. Boutons ---------- */
.btn{
  --b:var(--accent);
  display:inline-flex; align-items:center; gap:.5em;
  font-weight:700; font-size:1.02rem;
  padding:.85em 1.6em;
  border:none; border-radius:var(--r-pill);
  background:var(--b); color:#FFF6EF;
  text-decoration:none; cursor:pointer;
  box-shadow:0 6px 18px rgba(168,67,31,.22);
  transition:transform .15s ease, background .2s ease, box-shadow .2s ease;
  white-space:nowrap;
}
.btn:hover{ background:var(--accent-deep); transform:translateY(-2px); box-shadow:0 10px 24px rgba(168,67,31,.28); }
.btn:active{ transform:translateY(0); }
.btn--lg{ font-size:1.12rem; padding:1.05em 2em; }
.btn--ghost{
  background:transparent; color:var(--accent-deep);
  box-shadow:none; border:1.5px solid var(--accent);
}
.btn--ghost:hover{ background:rgba(216,113,79,.08); color:var(--accent-deep); }
.btn--on-dark{ background:var(--accent); color:#FFF6EF; }
.btn-note{ font-size:.92rem; color:var(--ink-soft); margin-top:.7em; }

/* ---------- 6. Cartes ---------- */
.card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r);
  padding:clamp(20px,3vw,30px);
  box-shadow:var(--shadow-sm);
}
.card--media{ padding:0; overflow:hidden; }
.card--media img{ width:100%; height:200px; object-fit:cover; }
.card--media .card-body{ padding:22px 24px 26px; }

/* puces de bénéfices */
.checklist{ list-style:none; padding:0; margin:0; display:grid; gap:.85em; }
.checklist li{ position:relative; padding-left:2.1em; }
.checklist li::before{
  content:""; position:absolute; left:0; top:.15em;
  width:1.4em; height:1.4em;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'%3E%3Cpath d='M3 12 C 6 14, 8 17, 9 18 C 12 12, 16 6, 20 3' fill='none' stroke='%237E9B74' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center;
}

/* ---------- 7. Header / nav ---------- */
.site-header{
  position:sticky; top:0; z-index:50;
  background:rgba(237,231,220,.82);
  backdrop-filter:saturate(140%) blur(10px);
  border-bottom:1px solid var(--line);
}
/* top nav élargie (le corps du site reste à --maxw) pour laisser respirer les liens */
.site-header .container{ max-width:1320px; }
.nav{ display:flex; align-items:center; justify-content:space-between; gap:1rem; min-height:68px; }
.brand{ display:flex; align-items:baseline; gap:.12em; text-decoration:none; color:var(--ink); white-space:nowrap; flex:none; }
.brand b{ font-family:var(--serif); font-weight:600; font-size:1.4rem; letter-spacing:-.01em; }
.brand .yo{ font-family:var(--hand); color:var(--accent-deep); font-size:1.85rem; line-height:0; position:relative; top:.06em; }
.nav-links{ display:flex; gap:1.6rem; list-style:none; margin:0; padding:0; }
.nav-links a{ white-space:nowrap; }
.nav-links a{
  color:var(--ink-soft); text-decoration:none; font-weight:600; font-size:.98rem;
  padding:.3em 0; border-bottom:2px solid transparent; transition:color .15s, border-color .15s;
}
.nav-links a:hover{ color:var(--ink); border-color:var(--accent); }
.nav-cta{ display:flex; align-items:center; gap:.9rem; flex:none; }
.nav-cta .price{ font-weight:700; color:var(--ink); white-space:nowrap; }
/* Lien « Espace membre » dissocié (connexion), distinct des liens de section */
.member-link{
  display:inline-flex; align-items:center; gap:.45em;
  color:var(--ink-soft); text-decoration:none; font-weight:700; font-size:.92rem;
  padding:.5em 1em; border:1.5px solid var(--line); border-radius:var(--r-pill);
  transition:color .15s, border-color .15s, background .15s; white-space:nowrap; flex:none;
}
.member-link svg{ width:17px; height:17px; }
.member-link:hover{ color:var(--accent-deep); border-color:var(--accent); background:rgba(216,113,79,.06); }
.nav-only-mobile{ display:none; } /* présent uniquement dans le menu mobile */
.nav-toggle{ display:none; background:none; border:none; cursor:pointer; padding:8px; color:var(--ink); }
.nav-toggle svg{ width:26px; height:26px; }

/* ---------- 8. Hero ---------- */
.hero{ position:relative; overflow:hidden; }
.hero-grid{
  display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(28px,5vw,64px);
  align-items:center; padding:clamp(48px,7vw,96px) 0 clamp(40px,6vw,80px);
}
.hero h1{ margin-bottom:.35em; }
.hero .accent-word{ color:var(--accent-deep); }
.hero-photo{
  position:relative; border-radius:var(--r-lg); overflow:hidden;
  box-shadow:var(--shadow); border:6px solid var(--surface);
}
.hero-photo img{ width:100%; height:clamp(360px,52vw,540px); object-fit:cover; }
.hero-note{
  position:absolute; right:-6px; bottom:18px;
  background:var(--surface); color:var(--ink);
  font-family:var(--hand); font-size:1.5rem; line-height:1.1;
  padding:.5em .9em; border-radius:14px; box-shadow:var(--shadow);
  transform:rotate(-3deg); max-width:62%;
}
.hero-cta{ display:flex; flex-wrap:wrap; gap:1rem; align-items:center; margin-top:1.6rem; }
.trust-row{ display:flex; flex-wrap:wrap; gap:1.4rem 2rem; margin-top:2rem; color:var(--ink-soft); font-size:.95rem; }
.trust-row span{ display:inline-flex; align-items:center; gap:.5em; }
.trust-row svg{ width:20px; height:20px; color:var(--sage-deep); flex:none; }

/* ---------- 9. Graphe yoyo ---------- */
.yoyo-wrap{
  display:grid; grid-template-columns:1.1fr 1fr; gap:clamp(28px,5vw,56px); align-items:center;
}
.yoyo-figure{
  background:var(--dark-2); border:1px solid var(--line-dark);
  border-radius:var(--r-lg); padding:clamp(18px,3vw,28px);
  box-shadow:0 18px 40px rgba(0,0,0,.28);
}
.yoyo-figure svg{ width:100%; height:auto; display:block; }
.yoyo-legend{ display:flex; gap:1.4rem; flex-wrap:wrap; margin-top:.4rem; font-size:.92rem; color:var(--dark-soft); }
.yoyo-legend i{ display:inline-block; width:14px; height:14px; border-radius:4px; margin-right:.5em; vertical-align:-2px; }
.dot-yoyo{ background:var(--accent); }
.dot-douce{ background:var(--sage); }
.draw{ stroke-dasharray:1; stroke-dashoffset:1; }

/* ---------- 10. Grilles génériques ---------- */
.grid{ display:grid; gap:clamp(18px,2.4vw,28px); }
.grid-2{ grid-template-columns:repeat(2,1fr); }
.grid-3{ grid-template-columns:repeat(3,1fr); }
.split{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,5vw,64px); align-items:center; }
.split--media img{ border-radius:var(--r-lg); box-shadow:var(--shadow); width:100%; height:clamp(300px,40vw,440px); object-fit:cover; }

/* numéro de bénéfice manuscrit */
.benefit .num{ font-family:var(--hand); font-size:2.6rem; color:var(--accent); line-height:1; display:block; margin-bottom:.1em; }

/* ---------- 11. Aperçu espace membre ---------- */
.feature{ display:flex; gap:1rem; }
.feature .ic{
  flex:none; width:52px; height:52px; border-radius:14px;
  display:grid; place-items:center; background:var(--surface-2); color:var(--sage-deep);
  border:1px solid var(--line);
}
.feature .ic svg{ width:26px; height:26px; }
.feature h3{ margin-bottom:.25em; }
.feature p{ margin:0; color:var(--ink-soft); font-size:1rem; }

/* ---------- 12. Témoignages ---------- */
.quote{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r);
  padding:26px 26px 22px; box-shadow:var(--shadow-sm); position:relative;
}
.quote p{ font-family:var(--serif); font-size:1.15rem; line-height:1.5; color:var(--ink); }
.quote .who{ font-family:var(--sans); font-size:.95rem; color:var(--ink-soft); font-weight:600; margin:0; }
.quote .stars{ color:var(--warn); letter-spacing:.1em; margin-bottom:.4em; }

/* ---------- 13. Pricing ---------- */
.price-card{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg);
  box-shadow:var(--shadow); padding:clamp(28px,4vw,44px); max-width:600px; margin-inline:auto; text-align:center;
  color:var(--ink); /* la carte est claire : on rétablit l'encre foncée (sinon héritée claire de .section--dark) */
}
.price-card .lead{ color:var(--ink-soft); }
.price-card .tag{ display:inline-block; background:rgba(126,155,116,.16); color:var(--sage-deep); font-weight:700; font-size:.9rem; padding:.35em 1em; border-radius:var(--r-pill); }
.price-big{ font-family:var(--serif); font-size:clamp(3rem,7vw,4.4rem); color:var(--ink); line-height:1; margin:.2em 0 .1em; }
.price-big small{ font-size:1.2rem; color:var(--ink-soft); font-weight:400; }
.price-card .checklist{ text-align:left; max-width:380px; margin:1.6em auto; }

/* ---------- 14. Footer ---------- */
.site-footer{ background:var(--dark); color:var(--dark-soft); padding:56px 0 40px; }
.site-footer a{ color:var(--dark-ink); text-decoration:none; }
.site-footer a:hover{ text-decoration:underline; }
.footer-grid{ display:flex; flex-wrap:wrap; gap:2rem; justify-content:space-between; align-items:flex-start; }
.footer-grid .brand b{ color:var(--surface); }
.footer-links{ display:flex; flex-wrap:wrap; gap:1.2rem 1.8rem; list-style:none; padding:0; margin:0; }
.footer-fine{ border-top:1px solid var(--line-dark); margin-top:2.4rem; padding-top:1.4rem; font-size:.86rem; color:#8C8270; }

/* ---------- 15. Divers ---------- */
.placeholder-note{
  background:rgba(201,138,46,.12); border:1px dashed var(--warn); color:#7a5410;
  border-radius:var(--r-sm); padding:.6em 1em; font-size:.9rem; margin-top:1rem;
}
/* masqué seulement si JS actif (progressive enhancement) ; visible par défaut sinon */
.js .reveal{ opacity:0; transform:translateY(22px); transition:opacity .7s ease, transform .7s ease; }
.reveal.in{ opacity:1; transform:none; }

/* ---------- 16. Responsive ---------- */
@media (max-width:980px){
  body{ font-size:17px; }
  .nav-links{ display:none; }
  .nav-toggle{ display:inline-flex; }
  .nav-cta .btn{ display:none; }                       /* le CTA passe dans le menu (barre allégée) */
  /* Menu mobile en carte flottante : marges sur les côtés, coins arrondis, ombre */
  .nav.open .nav-links{
    display:flex; position:absolute; left:var(--gutter); right:var(--gutter); top:calc(100% + 8px);
    flex-direction:column; gap:0; background:var(--surface);
    border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--shadow);
    padding:.3rem 1.1rem 1rem;
  }
  .nav.open .nav-links a{ display:block; padding:.7em 0; font-size:1.08rem; color:var(--ink); }
  .nav.open .nav-links .nav-menu-cta{ margin-top:.8rem; }
  .nav.open .nav-links .nav-menu-cta a.btn{
    display:block; width:100%; text-align:center; padding:.9em 1em;
    border-bottom:none; color:#FFF6EF; font-size:1.02rem;
  }
  .hero-grid,.yoyo-wrap,.split,.grid-2,.grid-3{ grid-template-columns:1fr; }
  .hero-photo{ order:-1; }
  .nav-cta .price{ display:none; }
  .member-link{ display:none; }                       /* sur mobile : via le menu hamburger */
  .nav.open .nav-links .nav-only-mobile{ display:block; }
}
@media (max-width:560px){
  .footer-grid{ flex-direction:column; gap:1.4rem; }
  .hero-note{ font-size:1.25rem; max-width:75%; }
}
@media (prefers-reduced-motion:reduce){
  *{ scroll-behavior:auto !important; }
  .reveal{ opacity:1; transform:none; transition:none; }
  .draw{ stroke-dashoffset:0 !important; }
}

/* =========================================================================
   17. Pages intérieures (légales, contact, paiement, merci)
   ========================================================================= */
/* En-tête allégé des pages intérieures */
.subheader .nav{ min-height:64px; }
.subheader .back{ color:var(--ink-soft); text-decoration:none; font-weight:600; font-size:.95rem; }
.subheader .back:hover{ color:var(--accent-deep); }

/* Bloc de contenu type "page" (légales, merci…) */
.page{ max-width:760px; margin-inline:auto; padding:clamp(40px,7vw,80px) var(--gutter); }
.page h1{ margin-bottom:.3em; }
.page h2{ font-size:1.4rem; margin-top:1.8em; }
.page p, .page li{ color:var(--ink-soft); }
.page ul{ padding-left:1.2em; }
.page li{ margin:.3em 0; }
.page strong{ color:var(--ink); }
.page-date{ color:var(--ink-soft); font-size:.9rem; font-style:italic; margin-bottom:2.2em; }
.page-center{ text-align:center; min-height:56vh; display:flex; flex-direction:column; justify-content:center; }

/* Formulaire de contact */
.contact-card{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg); padding:clamp(22px,3.5vw,38px); box-shadow:var(--shadow-sm); }
.form-group{ margin-bottom:1.2rem; }
.form-group label{ display:block; font-weight:700; font-size:.92rem; margin-bottom:.4rem; color:var(--ink); }
.form-group input, .form-group textarea{
  width:100%; padding:.85rem 1rem; font:inherit; color:var(--ink);
  background:#fff; border:1.5px solid var(--line); border-radius:10px; box-sizing:border-box;
}
.form-group input:focus, .form-group textarea:focus{ outline:none; border-color:var(--accent); }
.form-group textarea{ min-height:140px; resize:vertical; }
.contact-direct{ text-align:center; font-size:.92rem; color:var(--ink-soft); margin-top:1.4rem; }

/* Code d'accès (merci-achat) */
.code-box{ font-family:var(--hand); }
.code-value{
  font-family:"Courier New",monospace; font-size:1.7rem; font-weight:700; letter-spacing:.1em;
  padding:1rem 1.6rem; border:2px dashed var(--accent); border-radius:12px; display:inline-block;
  color:var(--accent-deep); background:var(--surface);
}

/* ----- Paiement (checkout intégré Stripe) ----- */
.co-wrap{ max-width:1000px; margin:0 auto; padding:clamp(28px,5vw,56px) var(--gutter) 4rem; }
.co-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(28px,4vw,48px); align-items:start; }
.co-form h1{ font-size:1.9rem; margin:0 0 1.4rem; }
.co-label{ display:block; font-weight:700; font-size:.92rem; margin:0 0 .4rem; }
.co-input{ width:100%; padding:.85rem 1rem; font:inherit; color:var(--ink); background:#fff; border:1.5px solid var(--line); border-radius:10px; box-sizing:border-box; }
.co-input:focus{ outline:none; border-color:var(--accent); }
.co-hint{ font-size:.85rem; color:var(--ink-soft); margin:.4rem 0 1.6rem; }
#payment-element{ margin-bottom:1.4rem; min-height:40px; }
.co-pay{ width:100%; justify-content:center; }
.co-pay:disabled{ opacity:.6; cursor:not-allowed; }
.co-error{ color:var(--accent-deep); font-size:.92rem; min-height:1.2em; margin:.8rem 0 0; text-align:center; }
.co-note{ font-size:.82rem; color:var(--ink-soft); text-align:center; margin:1rem 0 0; }
.co-back{ font-size:.85rem; color:var(--ink-soft); text-align:center; margin:.9rem 0 0; }
.co-summary{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg); padding:1.8rem; position:sticky; top:1.5rem; box-shadow:var(--shadow-sm); }
.co-summary h2{ font-size:1.25rem; margin:0 0 1.2rem; }
.co-line{ display:flex; justify-content:space-between; font-size:.95rem; padding-bottom:1.1rem; border-bottom:1px solid var(--line); color:var(--ink); }
.co-total{ display:flex; justify-content:space-between; align-items:baseline; padding-top:1.1rem; margin-top:1.1rem; border-top:1px solid var(--line); font-family:var(--serif); }
.co-total span:last-child{ font-size:1.6rem; color:var(--ink); }
.co-total span:first-child{ font-size:1rem; color:var(--ink-soft); }
.co-total-note{ font-size:.8rem; color:var(--ink-soft); margin:.5rem 0 0; text-align:right; }
.co-secure{ display:inline-flex; align-items:center; gap:.4rem; color:var(--ink-soft); font-size:.85rem; }
.co-secure svg{ width:15px; height:15px; }

@media (max-width:760px){
  .co-grid{ grid-template-columns:1fr; gap:1.8rem; }
  .co-summary{ position:static; order:-1; }
}

/* =========================================================================
   18. Espace membre
   ========================================================================= */
/* ----- Barre membre ----- */
.member-bar{ position:sticky; top:0; z-index:50; background:rgba(251,247,240,.9); backdrop-filter:saturate(140%) blur(10px); border-bottom:1px solid var(--line); }
.member-bar-in{ display:flex; align-items:center; gap:1rem; min-height:64px; }
.member-links{ display:flex; gap:1.3rem; margin-left:1.4rem; flex:1; }
.member-links a{ color:var(--ink-soft); text-decoration:none; font-weight:600; font-size:.95rem; padding:.3em 0; border-bottom:2px solid transparent; }
.member-links a:hover{ color:var(--ink); }
.member-links a.on{ color:var(--accent-deep); border-color:var(--accent); }
.member-bar-right{ display:flex; align-items:center; gap:.8rem; margin-left:auto; }
.member-back-top{ color:var(--ink-soft); text-decoration:none; font-weight:600; font-size:.88rem; white-space:nowrap; }
.member-back-top:hover{ color:var(--accent-deep); }
.member-logout{ background:none; border:1.5px solid var(--line); color:var(--ink-soft); border-radius:var(--r-pill); padding:.45em 1em; font-weight:600; font-size:.88rem; cursor:pointer; }
.member-logout:hover{ border-color:var(--accent); color:var(--accent-deep); }
.member-burger{ display:none; flex-direction:column; gap:5px; background:none; border:none; cursor:pointer; padding:6px; }
.member-burger span{ display:block; width:24px; height:2px; background:var(--ink); border-radius:2px; }
.member-drawer{ display:none; }
@media (max-width:980px){
  .member-links{ display:none; }
  .member-logout{ display:none; }
  .member-back-top{ display:none; }
  .member-burger{ display:flex; }
  .member-drawer{ display:block; max-height:0; overflow:hidden; transition:max-height .3s ease; border-top:1px solid var(--line); }
  .member-bar.drawer-open .member-drawer{ max-height:520px; }
  .member-drawer nav{ display:flex; flex-direction:column; padding:.4rem var(--gutter) 1rem; }
  .member-drawer a, .member-drawer button{ text-align:left; background:none; border:none; font:inherit; cursor:pointer; color:var(--ink); text-decoration:none; font-weight:600; padding:.8em 0; border-bottom:1px solid var(--line); }
  .member-drawer .member-back{ color:var(--ink-soft); }
  .member-drawer .member-logout2{ color:var(--accent-deep); }
}

/* ----- Conteneur des pages membres ----- */
.member-main{ padding:clamp(28px,5vw,52px) 0 clamp(48px,8vw,90px); }
.member-main .container{ max-width:980px; }
.member-head{ margin-bottom:1.6rem; }
.member-head h1{ margin-bottom:.1em; }
.member-head .hand{ display:block; font-size:1.7rem; }

/* ----- Statut du jour (carte héro du dashboard) ----- */
.status-card{ border-radius:var(--r-lg); padding:clamp(24px,4vw,40px); border:1px solid var(--line); box-shadow:var(--shadow-sm); position:relative; overflow:hidden; }
.status--leger{ background:linear-gradient(135deg,#EAF0E6,#F6F2E9); }
.status--normal{ background:linear-gradient(135deg,#F7E7DD,#FBF3EC); }
.status-tag{ display:inline-flex; align-items:center; gap:.45em; font-weight:700; font-size:.85rem; padding:.35em 1em; border-radius:var(--r-pill); background:#fff; }
.status--leger .status-tag{ color:var(--sage-deep); }
.status--normal .status-tag{ color:var(--accent-deep); }
.status-card h2{ font-size:clamp(1.6rem,3.2vw,2.3rem); margin:.5rem 0 .3rem; }
.status-card p{ color:var(--ink-soft); max-width:54ch; margin:0; }
.status-emoji{ position:absolute; right:clamp(14px,3vw,28px); top:clamp(10px,2vw,20px); font-size:clamp(3rem,8vw,5rem); opacity:.5; line-height:1; }
.status-actions{ display:flex; flex-wrap:wrap; gap:.8rem; align-items:center; margin-top:1.4rem; }
.done-pill{ display:inline-flex; align-items:center; gap:.5em; font-weight:700; color:var(--sage-deep); }
.done-pill svg{ width:22px; height:22px; }

/* ----- Grille du dashboard ----- */
.dash-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(16px,2.2vw,24px); margin-top:clamp(18px,2.6vw,28px); }
.dash-grid .col-2{ grid-column:span 2; }
@media (max-width:760px){ .dash-grid{ grid-template-columns:1fr; } .dash-grid .col-2{ grid-column:auto; } }

.stat{ text-align:center; }
.stat .big{ font-family:var(--serif); font-size:2.6rem; line-height:1; color:var(--ink); }
.stat .lbl{ color:var(--ink-soft); font-size:.9rem; margin-top:.3em; }
.stat .flame{ font-size:1.6rem; }

/* ----- Badges ----- */
.badges{ display:flex; flex-wrap:wrap; gap:.7rem; }
.badge{ display:flex; flex-direction:column; align-items:center; gap:.2rem; width:84px; text-align:center; padding:.7rem .3rem; border-radius:var(--r); border:1px solid var(--line); background:var(--surface-2); }
.badge .ic{ font-size:1.7rem; line-height:1; filter:grayscale(1); opacity:.35; }
.badge.on{ background:#fff; border-color:var(--accent); }
.badge.on .ic{ filter:none; opacity:1; }
.badge .bn{ font-size:.72rem; font-weight:700; color:var(--ink); line-height:1.1; }

/* ----- Progression poids ----- */
.poids-row{ display:flex; gap:.6rem; align-items:flex-end; flex-wrap:wrap; }
.poids-row .form-group{ margin:0; }
.poids-row input{ max-width:140px; }
.sparkline{ width:100%; height:70px; margin-top:.6rem; }
.soft-note{ font-size:.86rem; color:var(--ink-soft); }

/* ----- Recette du jour & cartes outils ----- */
.mini-recipe{ display:flex; gap:1rem; align-items:center; }
.mini-recipe .thumb{ width:88px; height:88px; border-radius:14px; object-fit:cover; flex:none; background:var(--surface-2); border:1px solid var(--line); display:grid; place-items:center; color:var(--sage-deep); }
.tool-cards{ display:grid; grid-template-columns:repeat(2,1fr); gap:clamp(14px,2vw,20px); }
@media (max-width:560px){ .tool-cards{ grid-template-columns:1fr; } }
.tool-card{ display:flex; gap:.9rem; align-items:flex-start; text-decoration:none; color:inherit; }
.tool-card:hover{ border-color:var(--accent); }
.tool-card .ic{ flex:none; width:46px; height:46px; border-radius:12px; display:grid; place-items:center; background:var(--surface-2); color:var(--sage-deep); border:1px solid var(--line); }
.tool-card .ic svg{ width:24px; height:24px; }
.tool-card h3{ margin:0 0 .15em; font-size:1.15rem; }
.tool-card p{ margin:0; font-size:.92rem; color:var(--ink-soft); }

/* ----- Calendrier ----- */
.cal-top{ display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:1rem; }
.cal-nav{ display:flex; align-items:center; gap:.6rem; }
.cal-nav button{ background:var(--surface); border:1px solid var(--line); border-radius:10px; width:38px; height:38px; cursor:pointer; font-size:1.1rem; color:var(--ink); }
.cal-nav button:hover{ border-color:var(--accent); color:var(--accent-deep); }
.cal-month{ font-family:var(--serif); font-size:1.3rem; min-width:11ch; text-align:center; }
.cal-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
.cal-dow{ text-align:center; font-size:.78rem; font-weight:700; color:var(--ink-soft); padding:.3rem 0; }
.cal-day{ aspect-ratio:1/1; border-radius:12px; border:1px solid var(--line); background:#fff; cursor:pointer; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; padding:2px; position:relative; transition:transform .12s ease; }
.cal-day:hover{ transform:translateY(-2px); }
.cal-day .num{ font-weight:700; font-size:.95rem; color:var(--ink); }
.cal-day .dt{ font-size:.62rem; font-weight:700; text-transform:uppercase; letter-spacing:.03em; }
.cal-day.leger{ background:#EFF3EB; } .cal-day.leger .dt{ color:var(--sage-deep); }
.cal-day.normal{ background:#FAEEE6; } .cal-day.normal .dt{ color:var(--accent-deep); }
.cal-day.empty{ background:transparent; border:none; cursor:default; }
.cal-day.today{ outline:2.5px solid var(--ink); outline-offset:-1px; }
.cal-day.done::after{ content:"✓"; position:absolute; top:3px; right:5px; font-size:.8rem; font-weight:800; color:var(--sage-deep); }
.cal-day.done{ box-shadow:inset 0 0 0 2px var(--sage); }
.cal-legend{ display:flex; gap:.6rem; flex-wrap:wrap; margin-top:1.1rem; font-size:.85rem; color:var(--ink-soft); }
.cal-legend span{ display:inline-flex; align-items:center; background:var(--surface-2); border:1px solid var(--line); border-radius:var(--r-pill); padding:.3em .8em; }
.cal-legend i{ display:inline-block; width:13px; height:13px; border-radius:4px; margin-right:.5em; }

/* bandeau « statut du jour » (calendrier) */
.today-banner{ display:flex; align-items:center; gap:.9rem; border-radius:var(--r); padding:.9rem 1.1rem; margin-bottom:1.4rem; border:1px solid var(--line); }
.today-banner.leger{ background:#EFF3EB; border-color:#CFE0C6; }
.today-banner.normal{ background:#FAEEE6; border-color:#EAD7C9; }
.today-banner .tb-emoji{ font-size:1.8rem; line-height:1; flex:none; }
.today-banner strong{ font-family:var(--serif); font-weight:500; font-size:1.1rem; }
.today-banner.leger strong{ color:var(--sage-deep); }
.today-banner.normal strong{ color:var(--accent-deep); }
.today-banner .tb-msg{ font-size:.92rem; color:var(--ink-soft); }

/* ----- Compteur ----- */
.search-box{ position:relative; }
.search-box input{ width:100%; padding:.9rem 1rem; font:inherit; border:1.5px solid var(--line); border-radius:12px; background:#fff; box-sizing:border-box; }
.search-box input:focus{ outline:none; border-color:var(--accent); }
.results{ list-style:none; margin:.8rem 0 0; padding:0; display:grid; gap:.4rem; max-height:360px; overflow:auto; }
.results li{ display:flex; align-items:center; gap:.8rem; padding:.6rem .8rem; border:1px solid var(--line); border-radius:10px; background:var(--surface); }
.results .nm{ flex:1; font-weight:600; }
.results .fam{ font-size:.78rem; color:var(--ink-soft); }
.results .kcal{ font-weight:700; color:var(--accent-deep); white-space:nowrap; }
.results .add{ border:none; background:var(--sage); color:#fff; border-radius:999px; width:30px; height:30px; font-size:1.1rem; cursor:pointer; line-height:1; }
.meal{ margin-top:1.4rem; }
.meal-list{ list-style:none; padding:0; margin:0; display:grid; gap:.4rem; }
.meal-list li{ display:flex; align-items:center; gap:.6rem; padding:.5rem .7rem; border-bottom:1px solid var(--line); }
.meal-list .rm{ margin-left:auto; border:none; background:none; color:var(--accent-deep); cursor:pointer; font-size:1.1rem; }
.meal-objectif{ display:flex; align-items:flex-end; justify-content:space-between; gap:1rem; margin:1.3rem 0 .6rem; }
.meal-total{ display:flex; align-items:baseline; gap:.3rem; }
.meal-num{ font-family:var(--serif); font-size:2.6rem; line-height:1; color:var(--ink); }
.meal-unit{ font-size:1rem; color:var(--ink-soft); }
.meal-target{ text-align:right; font-size:.85rem; color:var(--ink-soft); line-height:1.3; }
.meal-target strong{ color:var(--sage-deep); font-size:1.05rem; }
.gauge{ height:16px; border-radius:999px; background:var(--surface-2); overflow:hidden; border:1px solid var(--line); }
.gauge > i{ display:block; height:100%; background:var(--sage); border-radius:999px; transition:width .3s ease; }
.gauge.over > i{ background:var(--warn); }

/* ----- Recettes ----- */
.recipe-filters{ display:flex; flex-wrap:wrap; gap:.5rem; margin-bottom:1.4rem; }
.recipe-filters button{ border:1.5px solid var(--line); background:var(--surface); border-radius:var(--r-pill); padding:.45em 1.1em; font-weight:600; font-size:.9rem; cursor:pointer; color:var(--ink-soft); }
.recipe-filters button.on{ background:var(--accent); color:#FFF6EF; border-color:var(--accent); }
.recipe-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:clamp(16px,2.4vw,24px); }
@media (max-width:680px){ .recipe-grid{ grid-template-columns:1fr; } }
.recipe-card{ overflow:hidden; padding:0; }
.recipe-photo{ position:relative; height:180px; background:linear-gradient(135deg,#EFF3EB,#FAEEE6); display:grid; place-items:center; color:var(--sage-deep); border-bottom:1px solid var(--line); overflow:hidden; }
.recipe-photo .recipe-ph svg{ width:46px; height:46px; opacity:.45; }
.recipe-photo img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.recipe-kcal{ position:absolute; top:10px; left:10px; background:var(--surface); color:var(--accent-deep); font-weight:700; font-size:.82rem; padding:.3em .8em; border-radius:var(--r-pill); box-shadow:var(--shadow-sm); }
.recipe-body{ padding:20px 22px 24px; }
.recipe-body h3{ margin:.1em 0 .4em; }
.recipe-meta{ display:flex; gap:.8rem; margin-bottom:.2em; }
.recipe-meta .repas{ font-size:.74rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--sage-deep); background:#EFF3EB; padding:.25em .7em; border-radius:var(--r-pill); }
.recipe-meta .kc{ color:var(--accent-deep); font-weight:700; }
.recipe-body h4{ font-family:var(--sans); font-size:.85rem; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-soft); margin:1em 0 .4em; }
.recipe-body ul, .recipe-body ol{ margin:0; padding-left:1.2em; color:var(--ink-soft); font-size:.95rem; }
.recipe-body li{ margin:.2em 0; }
.recipe-atout{ margin-top:.9em; font-size:.9rem; background:#EFF3EB; border-radius:10px; padding:.6em .9em; color:var(--sage-deep); }

/* ----- Méthode (page de lecture, visuelle) ----- */
.methode-intro{ background:#EFF3EB; border:1px solid #CFE0C6; border-radius:var(--r-lg); padding:clamp(16px,2.4vw,24px) clamp(18px,2.6vw,28px); margin-bottom:.6rem; }
.methode-intro .lead{ margin:0; color:var(--ink); }

.methode-sec{ margin-top:clamp(2rem,4vw,3rem); }
.sec-head{ display:flex; align-items:center; gap:.75rem; margin-bottom:.7rem; padding-top:1.4rem; border-top:1px solid var(--line); }
.sec-num{ flex:none; width:2rem; height:2rem; border-radius:999px; background:var(--accent); color:#FFF6EF; font-family:var(--serif); font-weight:500; display:grid; place-items:center; font-size:1.05rem; }
.sec-head h2{ margin:0; font-size:clamp(1.3rem,2.4vw,1.6rem); }

/* étapes en timeline */
.methode-steps{ counter-reset:st; list-style:none; padding:0; margin:1rem 0; display:grid; gap:1rem; position:relative; }
.methode-steps::before{ content:""; position:absolute; left:.85em; top:.6em; bottom:.6em; width:2px; background:var(--line); }
.methode-steps li{ position:relative; padding-left:2.7em; color:var(--ink-soft); }
.methode-steps li::before{ counter-increment:st; content:counter(st); position:absolute; left:0; top:-.1em; width:1.7em; height:1.7em; border-radius:999px; background:var(--accent); color:#FFF6EF; font-family:var(--serif); display:grid; place-items:center; font-size:.95rem; box-shadow:0 0 0 4px var(--surface); }

/* protocole : deux cartes jour léger / jour plaisir */
.rythme{ display:grid; grid-template-columns:1fr auto 1fr; gap:1rem; align-items:stretch; margin:1.2rem 0 .4rem; }
.rythme-jour{ border-radius:var(--r); padding:1.3rem 1.1rem; text-align:center; border:1px solid var(--line); display:flex; flex-direction:column; gap:.35rem; }
.rythme-jour.leger{ background:#EFF3EB; border-color:#CFE0C6; }
.rythme-jour.normal{ background:#FAEEE6; border-color:#EAD7C9; }
.rj-emoji{ font-size:2rem; line-height:1; }
.rj-label{ font-family:var(--serif); font-size:1.2rem; }
.rythme-jour.leger .rj-label{ color:var(--sage-deep); }
.rythme-jour.normal .rj-label{ color:var(--accent-deep); }
.rj-val{ font-size:.92rem; color:var(--ink-soft); line-height:1.4; }
.rythme-sep{ display:flex; align-items:center; justify-content:center; font-size:1.6rem; color:var(--ink-soft); }
.rythme-note{ text-align:center; color:var(--ink-soft); }
@media (max-width:560px){ .rythme{ grid-template-columns:1fr; gap:.7rem; } .rythme-sep{ transform:rotate(90deg); } }

.methode-quote{ font-family:var(--serif); font-style:italic; font-size:clamp(1.3rem,2.6vw,1.6rem); line-height:1.4; color:var(--ink); background:var(--surface-2); border-left:4px solid var(--accent); border-radius:0 var(--r) var(--r) 0; padding:1rem 1.3rem; margin:1.4rem 0; position:relative; }
.methode-quote::before{ content:"“"; font-family:var(--serif); font-size:3rem; color:var(--accent); line-height:0; position:absolute; left:.5rem; top:1.2rem; opacity:.25; }
.methode-puces{ margin:1rem 0; }
.methode-ccl{ background:#EFF3EB; border-radius:var(--r); padding:.9em 1.1em; color:var(--sage-deep); font-weight:600; }
.methode-disclaimer{ margin-top:2.6rem; font-size:.9rem; color:var(--ink-soft); background:var(--surface-2); border:1px solid var(--line); border-left:4px solid var(--warn); border-radius:var(--r); padding:1rem 1.2rem; }
.methode-disclaimer strong{ color:var(--ink); }

/* FAQ méthode — questions/réponses repliables */
.methode-faq .sec-num{ font-weight:600; }
.faq-item{ border:1px solid var(--line); border-radius:var(--r); background:var(--surface); margin:.7rem 0; overflow:hidden; }
.faq-item summary{ cursor:pointer; list-style:none; padding:.95rem 2.6rem .95rem 1.2rem; font-weight:600; color:var(--ink); position:relative; }
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::after{ content:"+"; position:absolute; right:1.1rem; top:50%; transform:translateY(-50%); font-size:1.4rem; line-height:1; color:var(--accent); }
.faq-item[open] summary::after{ content:"–"; }
.faq-item summary:hover{ color:var(--accent); }
.faq-a{ padding:0 1.2rem 1.1rem; color:var(--ink-soft); }
.faq-a p{ margin:0; }

/* loader simple */
.loader{ text-align:center; color:var(--ink-soft); padding:2rem; }
