.theme-le-coeur-revelateur{--bg:#090909;--surface:#161313;--ink:#eee9df;--ink-muted:#b9b0a6;--accent:#c94b43;--accent-2:#d9c7a2;--font-display:"Instrument Serif",Georgia,serif;--font-body:"Literata",Georgia,serif}
.story-hero{min-height:78svh;position:relative;isolation:isolate;overflow:hidden}.story-hero::before{content:"";position:absolute;inset:0;z-index:-2;background:linear-gradient(180deg,rgba(0,0,0,.18),var(--bg) 96%),var(--hero) center/cover no-repeat;filter:saturate(.72) contrast(1.05)}.story-hero::after{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(circle at 50% 35%,transparent,rgba(0,0,0,.58) 76%)}.story-hero h1{font-family:var(--font-display);font-size:clamp(4rem,12vw,10rem);line-height:.82;max-width:10ch;text-wrap:balance}.story-kicker{letter-spacing:.16em;text-transform:uppercase;font-size:.75rem}.hero-hook{font-family:var(--font-display);font-size:clamp(1.6rem,4vw,3.2rem);max-width:22ch;margin-top:2rem;color:var(--accent-2)}.chapter{transition:background .8s ease}.chapter[data-mood="m2"]{--accent:#d9c7a2}.illu__frame img{filter:saturate(.75) contrast(1.08)}
/* Immersion V2 : pulsation, culpabilité, pression */
.theme-le-coeur-revelateur{position:relative;background:radial-gradient(circle at 50% 18%,#171010 0,var(--bg) 42rem);transition:background 1.6s ease}
.theme-le-coeur-revelateur::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(circle at 50% 50%,transparent 48%,rgb(45 0 0/.32) 100%);opacity:.35;animation:heart-vignette 3.2s ease-in-out infinite}
.theme-le-coeur-revelateur[data-mood="m2"]::before{opacity:.55;animation-duration:2.15s}.theme-le-coeur-revelateur[data-mood="m3"]::before{opacity:.78;animation-duration:1.12s}
.theme-le-coeur-revelateur .chapter__title{text-shadow:0 0 1.8rem rgb(201 75 67/.12)}
.theme-le-coeur-revelateur .illu__frame{border:1px solid rgb(201 75 67/.16)}
.theme-le-coeur-revelateur .illu.is-revealed .illu__frame{animation:heart-frame 3.2s ease-in-out 2}
.theme-le-coeur-revelateur #page-2 .illu.is-revealed .illu__frame{animation-duration:2.15s}.theme-le-coeur-revelateur #page-3 .illu.is-revealed .illu__frame{animation:heart-frame 1.12s ease-in-out 5}
.theme-le-coeur-revelateur #page-3 .illu.is-revealed img{animation:guilt-shiver 5.2s steps(1,end) 1.2s 2}
@keyframes heart-vignette{0%,100%{transform:scale(1);filter:brightness(.9)}45%{transform:scale(1.012);filter:brightness(1.08)}52%{transform:scale(1.02);filter:brightness(1.15)}65%{transform:scale(1)}}
@keyframes heart-frame{0%,100%{box-shadow:0 1.4rem 4rem rgb(0 0 0/.28)}48%{box-shadow:0 1.4rem 5rem rgb(80 0 0/.45),0 0 0 1px rgb(201 75 67/.2)}55%{box-shadow:0 1.4rem 5rem rgb(110 0 0/.5),0 0 1.6rem rgb(201 75 67/.12)}}
@keyframes guilt-shiver{0%,92%,100%{transform:translate(0) scale(1)}93%{transform:translate(-2px,1px) scale(1.004)}94%{transform:translate(2px,-1px) scale(1.004)}95%{transform:translate(-1px,0) scale(1.002)}}

.theme-le-coeur-revelateur[data-mood="m4"]::before{opacity:.88;animation-duration:.82s}.theme-le-coeur-revelateur[data-mood="m5"]::before{opacity:.96;animation-duration:.62s}.theme-le-coeur-revelateur[data-mood="m4"] .story,.theme-le-coeur-revelateur[data-mood="m5"] .story{filter:drop-shadow(0 0 2rem rgb(80 0 0/.12))}.theme-le-coeur-revelateur #page-5 .illu.is-revealed .illu__frame{animation:heart-frame .72s ease-in-out 7}.theme-le-coeur-revelateur #page-5 .illu.is-revealed img{animation:guilt-shiver 2.8s steps(1,end) .5s 3}

.theme-le-coeur-revelateur[data-mood="m4"]::before{opacity:.88;animation-duration:.82s}.theme-le-coeur-revelateur[data-mood="m5"]::before{opacity:.96;animation-duration:.62s}.theme-le-coeur-revelateur[data-mood="m4"] .story,.theme-le-coeur-revelateur[data-mood="m5"] .story{filter:drop-shadow(0 0 2rem rgb(80 0 0/.12))}.theme-le-coeur-revelateur #page-5 .illu.is-revealed .illu__frame{animation:heart-frame .72s ease-in-out 7}.theme-le-coeur-revelateur #page-5 .illu.is-revealed img{animation:guilt-shiver 2.8s steps(1,end) .5s 3}

/* V3.2 : immersion renforcée; le titre reste géré par le lecteur commun */
body::before,body::after{pointer-events:none;position:fixed;content:"";inset:0;z-index:0}
.scene-figure{position:relative;overflow:hidden;isolation:isolate}
.scene-figure::after{content:"";position:absolute;inset:-8%;pointer-events:none;z-index:2;opacity:0}
body.effects-off::before,body.effects-off::after,body.effects-off .scene-figure::after{animation:none!important;opacity:0!important}
@media (prefers-reduced-motion:reduce){body::before,body::after,.scene-figure::after,.scene-figure img,.story-part p{animation:none!important;transform:none!important}}
body::before{background:radial-gradient(circle at 50% 48%,transparent 30%,rgba(45,0,0,.18) 68%,rgba(18,0,0,.52) 100%);animation:heartVeil 4.8s ease-in-out infinite}body[data-mood="m4"]::before{animation-duration:2.5s}body[data-mood="m5"]::before{animation-duration:1.35s}body::after{height:5px;bottom:auto;background:rgba(120,0,0,.35);filter:blur(8px);opacity:.3;animation:heartLine 4.8s ease-in-out infinite}body[data-mood="m5"] .scene-figure::after{opacity:.42;background:radial-gradient(circle,rgba(145,0,0,.2),transparent 62%);animation:heartShock 1.35s ease-in-out infinite}@keyframes heartVeil{0%,100%{opacity:.55;transform:scale(1)}45%{opacity:.8;transform:scale(1.008)}52%{opacity:.98;transform:scale(1.018)}60%{opacity:.7;transform:scale(1.005)}}@keyframes heartLine{0%,100%{opacity:.15}50%{opacity:.7}}@keyframes heartShock{0%,100%{transform:scale(1)}48%{transform:scale(1.018)}52%{transform:translateX(1px) scale(1.025)}}
/* V3.3 : alignement du hero sur le composant historique du lecteur */
.story-hero > div {
  position: relative;
  z-index: 1;
  width: min(100%, 76rem);
  margin-inline: auto;
  padding: clamp(5.5rem, 10vh, 7rem) var(--gutter) clamp(3rem, 8vh, 5rem);
  box-sizing: border-box;
}
@media (max-width: 640px) {
  .story-hero > div { padding-top: 5.25rem; padding-bottom: 2.75rem; }
  .story-hero h1 { font-size: clamp(3.4rem, 18vw, 6rem); }
}

/* ===== V4.2.5 : le battement du mur (piloté par scripts/themes/le-coeur-revelateur.js) ===== */
@property --amp { syntax: "<number>"; inherits: false; initial-value: 0; }
.heart-pulse {
  position: fixed; inset: 0; z-index: 1; pointer-events: none; opacity: 0; --amp: 0; transition: --amp 1.4s ease;
  background: radial-gradient(ellipse at 50% 50%, transparent 36%, rgb(150 8 8 / calc(var(--amp) * .5)) 100%);
}
/* les anciennes pulsations d'ambiance, qui tournaient en boucle sans lien avec le texte, sont remplacées par celle-ci */
body.has-heart::before { animation: none !important; opacity: .35 !important; }
body.has-heart::after { animation: none !important; opacity: 0 !important; }
.heart-veins { position: fixed; inset: 0; z-index: 1; pointer-events: none; opacity: .5; }
.heart-veins svg { width: 100%; height: 100%; }
.heart-veins path { fill: none; stroke: #8a1a1a; stroke-width: 1.6px; vector-effect: non-scaling-stroke; stroke-linecap: round; stroke-dasharray: 5000; stroke-dashoffset: 5000; }
.heart-veins.is-drawn path { animation: vein-draw 4.6s ease-out forwards; }
.heart-veins.is-drawn path:nth-child(2) { animation-delay: .9s; }
.heart-veins.is-drawn path:nth-child(3) { animation-delay: 1.5s; }
.heart-veins.is-drawn path:nth-child(4) { animation-delay: 2.1s; }
@keyframes vein-draw { to { stroke-dashoffset: 0; } }
body.effects-off .heart-pulse, body.effects-off .heart-veins { display: none; }
