/*
Theme Name: Psy-92 Sérénité
Theme URI: https://psy-92.fr
Author: Rodolphe Oppenheimer
Description: Thème sur-mesure pour psy-92.fr — psychanalyste & psychothérapeute en téléconsultation. Direction « Sérénité » : ivoire chaud, vert pétrole, ambre.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 8.0
License: GNU General Public License v2 or later
Text Domain: psy92-serenite
*/

:root{
  --ground:#F1EBDF; --paper:#FBF7EF; --ink:#22383A; --ink-soft:#4E5C58;
  --deep:#152726; --accent:#BE823A; --accent-deep:#9A6626; --sage:#88A090;
  --line:rgba(34,56,58,.14); --line-soft:rgba(34,56,58,.08); --ivory:#EFE6D4;
  --serif:Georgia,"Iowan Old Style","Palatino Linotype",Palatino,serif;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --wrap:1120px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--sans);
  font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;height:auto}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}
h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.14;
  letter-spacing:-.01em;color:var(--ink);overflow-wrap:break-word}
a{color:var(--accent-deep);text-decoration:none}
a:hover{text-decoration:underline}
.eyebrow{font-family:var(--sans);font-size:.74rem;letter-spacing:.18em;
  text-transform:uppercase;color:var(--accent-deep);font-weight:600}
.btn{display:inline-flex;align-items:center;gap:.55em;font-family:var(--sans);
  font-weight:600;font-size:.95rem;padding:.85em 1.5em;border-radius:999px;
  background:var(--accent);color:#fff;border:1px solid var(--accent);cursor:pointer;
  transition:transform .18s ease,background .18s ease}
.btn:hover{background:var(--accent-deep);transform:translateY(-2px);text-decoration:none;color:#fff}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.btn.ghost:hover{background:var(--paper);border-color:var(--ink);transform:none}
.btn svg{width:1.05em;height:1.05em}

/* header */
.site-header{position:sticky;top:0;z-index:20;background:rgba(241,235,223,.9);
  backdrop-filter:blur(9px);border-bottom:1px solid var(--line-soft)}
.nav{display:flex;align-items:center;justify-content:space-between;height:74px;gap:16px}
.brand{display:flex;align-items:baseline;gap:.5em;font-family:var(--serif);
  font-size:1.4rem;letter-spacing:.01em;color:var(--ink)}
.brand:hover{text-decoration:none}
.brand b{color:var(--accent-deep);font-weight:400}
.brand span{font-size:.64rem;font-family:var(--sans);letter-spacing:.2em;
  text-transform:uppercase;color:var(--ink-soft);align-self:center}
.menu{display:flex;gap:30px;align-items:center;font-size:.92rem;font-weight:500;list-style:none;margin:0;padding:0}
.menu a{color:var(--ink-soft);transition:color .16s}
.menu a:hover{color:var(--ink);text-decoration:none}
.site-header .btn{padding:.62em 1.25em}

/* hero */
.hero{position:relative;overflow:hidden}
.hero .grid{display:grid;grid-template-columns:1.08fr .92fr;gap:52px;
  align-items:center;padding-top:78px;padding-bottom:88px}
.hero h1{font-size:clamp(2.5rem,5.2vw,3.85rem);margin:.5rem 0 1.1rem;text-wrap:balance}
.hero p.lead{font-size:1.18rem;color:var(--ink-soft);max-width:34ch;margin-bottom:2rem}
.cta-row{display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:2.4rem}
.chip{display:inline-flex;align-items:center;gap:.5em;font-size:.85rem;color:var(--ink-soft);
  background:var(--paper);border:1px solid var(--line-soft);padding:.5em 1em;border-radius:999px}
.chip svg{width:15px;height:15px;color:var(--sage)}
.visual{position:relative;aspect-ratio:1/1;display:grid;place-items:center;transition:transform .2s ease-out}
.visual .disc{position:absolute;inset:8%;border-radius:50%;
  background:radial-gradient(circle at 50% 42%,#25403E 0%,#182E2C 62%,#122423 100%)}
.ripple{position:absolute;border-radius:50%;border:1px solid rgba(190,130,58,.42);animation:breathe 7s ease-in-out infinite}
.r1{inset:20%}.r2{inset:31%;animation-delay:.9s}.r3{inset:42%;animation-delay:1.8s}
.seed{position:absolute;width:16px;height:16px;border-radius:50%;background:var(--accent);
  box-shadow:0 0 0 6px rgba(190,130,58,.18)}
@keyframes breathe{0%,100%{transform:scale(1);opacity:.7}50%{transform:scale(1.08);opacity:1}}

/* sections */
.section{padding:84px 0}
.sec-head{max-width:42ch;margin-bottom:40px}
.sec-head h2{font-size:clamp(1.8rem,3.4vw,2.5rem);margin:.6rem 0 .4rem;text-wrap:balance}
.sec-head p{color:var(--ink-soft);margin:0}

.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.card{background:var(--paper);border:1px solid var(--line-soft);border-radius:18px;
  padding:26px 24px 28px;transition:transform .2s ease,border-color .2s;display:block}
.card:hover{transform:translateY(-4px);border-color:var(--accent);text-decoration:none}
.card .ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;
  background:#EDE3D0;color:var(--accent-deep);margin-bottom:16px}
.card .ic svg{width:21px;height:21px}
.card h3{font-size:1.2rem;margin:0 0 .35rem}
.card p{font-size:.95rem;color:var(--ink-soft);margin:0}
.card .more{font-size:.85rem;color:var(--accent-deep);font-weight:600;margin-top:14px;display:inline-flex;gap:.4em;align-items:center}

.split{background:var(--paper);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.split .cols{display:grid;grid-template-columns:1fr 1fr;gap:0}
.split .col{padding:64px 0}
.split .col:first-child{padding-right:56px;border-right:1px solid var(--line)}
.split .col:last-child{padding-left:56px}
.split h3{font-size:1.55rem;margin:.7rem 0}
.split p{color:var(--ink-soft);margin:0}
.split .col small{font-family:var(--sans);font-size:.8rem;letter-spacing:.05em;text-transform:uppercase;color:var(--sage);font-weight:600}

.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;counter-reset:s}
.step{position:relative;padding-top:22px;border-top:2px solid var(--line)}
.step::before{counter-increment:s;content:"0" counter(s);font-family:var(--serif);font-size:1.05rem;color:var(--accent-deep);position:absolute;top:-1.55rem;left:0}
.step h3{font-size:1.2rem;margin:0 0 .3rem}
.step p{color:var(--ink-soft);font-size:.95rem;margin:0}

.band{background:var(--deep);color:var(--ivory)}
.band .wrap{padding:88px 28px;text-align:center}
.band .eyebrow{color:var(--accent)}
.band blockquote{font-family:var(--serif);font-size:clamp(1.6rem,3.6vw,2.35rem);line-height:1.32;max-width:22ch;margin:1rem auto 0;color:#F4ECDC;text-wrap:balance}
.band .sub{color:rgba(239,230,212,.72);margin:1.4rem auto 2.2rem;max-width:46ch;font-size:1.02rem}

.press{text-align:center}
.press .eyebrow{color:var(--ink-soft)}
.press .logos{display:flex;justify-content:center;flex-wrap:wrap;gap:36px 54px;margin-top:24px;font-family:var(--serif);font-size:1.5rem;color:var(--ink);opacity:.62}

.final{background:var(--accent);color:#fff}
.final .wrap{padding:80px 28px;display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap}
.final h2{color:#fff;font-size:clamp(1.8rem,3.6vw,2.6rem);max-width:16ch;margin:0}
.final .btn{background:#fff;color:var(--accent-deep);border-color:#fff}
.final .btn:hover{background:var(--deep);color:#fff;border-color:var(--deep)}

/* interior pages */
.page-top{padding:64px 0 8px}
.entry{max-width:74ch;margin:0 auto;padding:24px 0 40px}
.entry-content{font-size:1.06rem}
.entry-content h1{font-size:clamp(2.1rem,4.4vw,3rem);margin:0 0 1rem;text-wrap:balance}
.entry-content h2{font-size:1.6rem;margin:2.2rem 0 .6rem}
.entry-content h3{font-size:1.25rem;margin:1.8rem 0 .5rem}
.entry-content p{margin:0 0 1.1rem}
.entry-content ul,.entry-content ol{margin:0 0 1.2rem;padding-left:1.3rem}
.entry-content li{margin:.35rem 0}
.entry-content a{text-decoration:underline;text-underline-offset:2px}
.entry-content em{color:var(--ink-soft)}

/* footer */
.site-footer{background:var(--deep);color:rgba(239,230,212,.8);padding:64px 0 40px;margin-top:0}
.site-footer .cols{display:grid;grid-template-columns:2fr 1fr 1fr;gap:40px}
.site-footer .brand{color:var(--ivory)}
.site-footer .brand b{color:var(--accent)}
.site-footer p{max-width:34ch}
.site-footer h4{font-family:var(--sans);font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;color:rgba(239,230,212,.55);margin:0 0 14px;font-weight:600}
.site-footer a{display:block;color:rgba(239,230,212,.8);padding:4px 0;font-size:.95rem}
.site-footer a:hover{color:var(--accent);text-decoration:none}
.site-footer .fine{margin-top:44px;padding-top:22px;border-top:1px solid rgba(239,230,212,.14);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:.82rem;color:rgba(239,230,212,.5)}
.site-footer .fine a{display:inline;color:rgba(239,230,212,.5)}

.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}

/* encart a propos (accueil) */
.about{background:var(--paper);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.about .inner{display:grid;grid-template-columns:auto 1fr;gap:44px;align-items:center;padding:72px 0}
.about .portrait{width:230px;height:230px;object-fit:cover;object-position:center 28%;border-radius:20px}
.about h2{font-size:clamp(1.7rem,3.2vw,2.3rem);margin:.3rem 0 .6rem}
.about p{color:var(--ink-soft);margin:0 0 1.1rem;max-width:54ch}
.about .book{display:inline-flex;align-items:center;gap:14px;background:var(--ground);border:1px solid var(--line-soft);border-radius:14px;padding:12px 16px;margin-bottom:1.3rem}
.about .book img{width:52px;height:auto;border-radius:4px}
.about .book span{font-size:.9rem;color:var(--ink-soft);line-height:1.4}
.about .book b{color:var(--ink);font-weight:600}

/* portrait & livre dans le contenu de la page A propos */
.entry-content .portrait-frame{float:right;width:220px;margin:.2rem 0 18px 28px}
.entry-content .portrait-frame img{width:100%;border-radius:18px;display:block}
.entry-content .portrait-frame figcaption{font-size:.82rem;color:var(--ink-soft);text-align:center;margin-top:8px}
.entry-content .book-inline{width:150px;border-radius:6px;border:1px solid var(--line);float:left;margin:.3rem 22px 12px 0}

/* FAQ */
.faq{max-width:800px;margin:0 auto;padding:8px 0 8px}
.faq-item{border:1px solid var(--line-soft);border-radius:14px;background:var(--paper);margin:0 0 12px;overflow:hidden}
.faq-item summary{list-style:none;cursor:pointer;padding:20px 24px;font-family:var(--serif);font-size:1.18rem;color:var(--ink);display:flex;justify-content:space-between;align-items:center;gap:16px}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"+";font-family:var(--sans);font-size:1.5rem;color:var(--accent-deep);transition:transform .2s;line-height:1}
.faq-item[open] summary::after{transform:rotate(45deg)}
.faq-item .a{padding:0 24px 22px;color:var(--ink-soft)}
.faq-item .a p{margin:0 0 .8rem}
.faq-item .a a{color:var(--accent-deep);text-decoration:underline}

/* en-tete au defilement */
.site-header{transition:box-shadow .25s ease,background .25s ease}
.site-header.scrolled{box-shadow:0 6px 24px rgba(21,39,38,.08);background:rgba(241,235,223,.97)}

/* respiration guidee */
.breathe-sec{background:var(--paper);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.breathe{display:flex;flex-direction:column;align-items:center;gap:26px;min-height:300px;justify-content:center}
.breathe-stage{position:relative;width:200px;height:200px;display:grid;place-items:center}
.breathe-ring{position:absolute;inset:0;width:200px;height:200px;transform:rotate(-90deg)}
.breathe-ring circle{fill:none;stroke:rgba(190,130,58,.7);stroke-width:3;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100}
.breathe.on .breathe-ring circle{animation:ringCycle 10s ease-in-out infinite}
@keyframes ringCycle{0%{stroke-dashoffset:100}50%{stroke-dashoffset:0}100%{stroke-dashoffset:100}}
.breathe-circle{width:120px;height:120px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle at 50% 40%,#25403E,#152726);color:var(--ivory);
  font-family:var(--serif);font-size:1.1rem;transform:scale(1);will-change:transform}
.breathe.on .breathe-circle{animation:breatheCycle 10s ease-in-out infinite}
@keyframes breatheCycle{0%{transform:scale(1)}50%{transform:scale(1.5)}100%{transform:scale(1)}}
.breathe-count{font-size:.85rem;color:var(--ink-soft);min-height:1.2em;font-weight:500}
@media(prefers-reduced-motion:reduce){.breathe.on .breathe-circle{animation:none}}

/* --- micro-finitions --- */
.btn svg{transition:transform .18s ease}
.btn:hover svg{transform:translateX(4px)}
.entry-content a{background-image:linear-gradient(var(--accent-deep),var(--accent-deep));background-size:0 1.5px;background-position:0 100%;background-repeat:no-repeat;transition:background-size .25s ease;text-decoration:none;padding-bottom:1px}
.entry-content a:hover{background-size:100% 1.5px}
.card:hover .ic{transform:scale(1.08) rotate(-3deg);background:var(--accent);color:#fff}
.faq-item[open] .a{animation:faqReveal .28s ease}
@keyframes faqReveal{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
body{animation:pageIn .5s ease both}
@keyframes pageIn{from{opacity:0}to{opacity:1}}

/* --- separateur ondes anime --- */
.wave{line-height:0;overflow:hidden}
.wave svg{display:block;width:200%;height:44px;animation:waveDrift 16s linear infinite}
@keyframes waveDrift{to{transform:translateX(-50%)}}

/* --- illustration en tete de page --- */
.page-illus{display:grid;place-items:center;margin:6px auto -8px}
.page-illus .ring{width:76px;height:76px;border-radius:50%;background:#EDE3D0;color:var(--accent-deep);display:grid;place-items:center}
.page-illus svg{width:36px;height:36px}

/* --- auto-evaluation --- */
.autoeval{max-width:640px;margin:1.6rem auto;background:var(--paper);border:1px solid var(--line-soft);border-radius:18px;padding:28px 26px}
.autoeval .q{margin:0 0 16px;padding:0 0 16px;border-bottom:1px solid var(--line-soft)}
.autoeval .q:last-of-type{border-bottom:none;padding-bottom:6px}
.autoeval .q p{margin:0 0 10px;font-weight:500;color:var(--ink)}
.autoeval .opts{display:flex;flex-wrap:wrap;gap:8px}
.autoeval .opts label{position:relative;font-size:.9rem;color:var(--ink-soft);border:1px solid var(--line);border-radius:999px;padding:.42em .95em;cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.autoeval .opts input{position:absolute;opacity:0;width:0;height:0}
.autoeval .opts label:has(input:checked){background:var(--accent);color:#fff;border-color:var(--accent)}
.autoeval .opts label:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.autoeval .autoeval-go{margin-top:6px}
.autoeval .result{display:none;margin-top:18px;padding:20px 22px;border-radius:14px;background:var(--ground);border:1px solid var(--line-soft)}
.autoeval .result.show{display:block;animation:faqReveal .3s ease}
.autoeval .result h3{margin:0 0 .4rem;font-size:1.25rem}
.autoeval .result p{margin:0 0 .6rem;color:var(--ink-soft)}
.autoeval .disclaimer{font-size:.82rem;color:var(--ink-soft);margin-top:14px}

/* encart auto-evaluation */
.callout{max-width:720px;margin:0 auto;text-align:center;background:var(--paper);border:2px solid var(--accent);border-radius:20px;padding:44px 34px}
.callout .eyebrow{color:var(--accent-deep)}
.callout h2{font-size:clamp(1.6rem,3vw,2.1rem);margin:.5rem 0 .5rem}
.callout p{color:var(--ink-soft);max-width:46ch;margin:0 auto 1.7rem}

/* lien contextuel vers l'auto-evaluation */
.eval-link{text-align:center;padding:6px 0 4px}
.eval-link a{color:var(--accent-deep);font-weight:500}

/* illustrations qui se dessinent */
.page-illus svg path,.page-illus svg circle{stroke-dasharray:1;stroke-dashoffset:1;animation:drawIn 1.1s ease .2s forwards}
@keyframes drawIn{to{stroke-dashoffset:0}}

/* bouton retour en haut */
.to-top{position:fixed;right:20px;bottom:20px;width:46px;height:46px;border-radius:50%;
  background:var(--deep);color:var(--ivory);border:none;display:grid;place-items:center;cursor:pointer;
  opacity:0;transform:translateY(10px);pointer-events:none;transition:opacity .25s ease,transform .25s ease,background .2s ease;z-index:30}
.to-top.show{opacity:1;transform:none;pointer-events:auto}
.to-top:hover{background:var(--accent)}
.to-top svg{width:20px;height:20px}

/* barre de progression de lecture */
.read-progress{position:fixed;top:0;left:0;width:100%;height:3px;z-index:40;background:transparent;pointer-events:none}
.read-progress span{display:block;height:100%;width:0;background:var(--accent);transition:width .1s linear}

@media(prefers-reduced-motion:reduce){
  .breathe.on .breathe-ring circle{animation:none}
  .page-illus svg path,.page-illus svg circle{animation:none;stroke-dashoffset:0}
  .to-top{transition:none}
}

/* frise "parcours" */
.journey{list-style:none;margin:38px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:24px;position:relative}
.journey::before{content:"";position:absolute;top:9px;left:8%;right:8%;height:2px;background:var(--accent);opacity:.5;transform:scaleX(0);transform-origin:left;transition:transform 1s ease .1s;z-index:0}
.journey.in::before{transform:scaleX(1)}
.j-step{position:relative;text-align:center;padding-top:30px;z-index:1;opacity:0;transform:translateY(14px);transition:opacity .6s ease,transform .6s ease}
.journey.in .j-step{opacity:1;transform:none}
.journey.in .j-step:nth-child(2){transition-delay:.12s}
.journey.in .j-step:nth-child(3){transition-delay:.24s}
.journey.in .j-step:nth-child(4){transition-delay:.36s}
.j-dot{position:absolute;top:1px;left:50%;transform:translateX(-50%);width:18px;height:18px;border-radius:50%;background:var(--paper);border:3px solid var(--accent);z-index:2}
.j-step h3{font-size:1.12rem;margin:0 0 .3rem}
.j-step p{font-size:.92rem;color:var(--ink-soft);margin:0}

/* survol des cartes : halo doux qui suit le curseur */
.card{position:relative;overflow:hidden}
.card::after{content:"";position:absolute;inset:0;background:radial-gradient(220px circle at var(--mx,50%) var(--my,50%),rgba(190,130,58,.12),transparent 62%);opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:0}
.card:hover::after{opacity:1}
.card>*{position:relative;z-index:1}

/* transition entre pages */
body.page-leave{animation:pageOut .22s ease forwards}
@keyframes pageOut{from{opacity:1}to{opacity:0}}

@media(max-width:860px){
  .journey{grid-template-columns:1fr;gap:18px}
  .journey::before{display:none}
  .j-step{padding-top:0;padding-left:32px;text-align:left}
  .j-dot{left:6px;top:4px}
}

@media(prefers-reduced-motion:reduce){.wave svg{animation:none}.btn:hover svg{transform:none}body{animation:none}.faq-item[open] .a{animation:none}}

@media(max-width:860px){
  .wrap{padding:0 22px}
  .menu{display:none}
  .nav{height:auto;padding:14px 0;gap:12px}
  .brand{font-size:1.1rem}
  .brand span{display:none}
  .site-header .btn{padding:.55em 1em;font-size:.82rem}
  .section{padding:60px 0}
  .hero .grid{grid-template-columns:1fr;gap:8px;padding-top:44px;padding-bottom:56px}
  .hero p.lead{max-width:none}
  .visual{max-width:300px;margin:12px auto 0}
  .cards,.steps{grid-template-columns:1fr}
  .split .col{padding:48px 0}
  .split .cols{grid-template-columns:1fr}
  .split .col:first-child{padding-right:0;border-right:none;border-bottom:1px solid var(--line);padding-bottom:40px}
  .split .col:last-child{padding-left:0;padding-top:40px}
  .band .wrap{padding:60px 22px}
  .final .wrap{padding:56px 22px}
  .site-footer{padding:52px 0 34px}
  .site-footer .cols{grid-template-columns:1fr}
  .about .inner{grid-template-columns:1fr;gap:22px;padding:52px 0;text-align:center}
  .about .portrait{width:180px;height:180px;margin:0 auto}
  .about p{margin-left:auto;margin-right:auto}
  .about .book{text-align:left}
  .entry-content .portrait-frame{float:none;width:100%;max-width:240px;margin:0 auto 20px}
  .entry-content .book-inline{float:none;display:block;margin:.5rem auto 16px}
}
@media(prefers-reduced-motion:reduce){
  .ripple{animation:none}.reveal{transition:none;opacity:1;transform:none}html{scroll-behavior:auto}
}
