/* L'Encre Interdite — intro premier chargement. Vanilla, aucune dépendance.
   Une seule molette : --ei-d (durée de l'animation, hors fondu de sortie). */

.ei-intro{--ei-d:4200ms;--ei-accent:#CDA862;--ei-bg:#15100D;--ei-ink:#F4EBDC;--ei-muted:#CFC0AC;position:fixed;inset:0;z-index:99999;background:var(--ei-bg);overflow:hidden;opacity:1;transition:opacity 700ms cubic-bezier(.4,0,.2,1)}
.ei-intro[hidden]{display:none}
.ei-intro.is-out{opacity:0;pointer-events:none}
body.ei-intro-lock{overflow:hidden}

/* fonds */
.ei-intro__wash{position:absolute;inset:-6%;background:radial-gradient(58% 46% at 50% 34%,rgba(106,31,34,.52),transparent 68%),radial-gradient(80% 60% at 50% 116%,rgba(51,32,42,.7),transparent 62%)}
.ei-intro.is-playing .ei-intro__wash{animation:ei-push var(--ei-d) linear both}
.ei-intro__vignette{position:absolute;inset:0;background:radial-gradient(72% 62% at 50% 46%,transparent 42%,rgba(8,5,4,.86) 100%)}
@keyframes ei-push{from{transform:scale(1)}50%{transform:scale(1.055)}to{transform:scale(1)}}

/* poussière */
.ei-intro__dust{position:absolute;inset:0;opacity:0}
.ei-intro.is-playing .ei-intro__dust{animation:ei-fade calc(var(--ei-d)*.22) linear calc(var(--ei-d)*.04) both}
.ei-intro__mote{position:absolute;border-radius:50%;background:var(--ei-accent);will-change:transform,opacity}
.ei-intro.is-playing .ei-intro__mote{animation:ei-drift var(--ei-md) linear var(--ei-delay) infinite,ei-twinkle var(--ei-td) ease-in-out var(--ei-delay) infinite alternate}
@keyframes ei-drift{from{transform:translate3d(0,6vh,0)}to{transform:translate3d(var(--ei-dx),-14vh,0)}}
@keyframes ei-twinkle{from{opacity:.16}to{opacity:.6}}

/* scène */
.ei-intro__stage{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:min(5vmin,44px);padding:6vmin;box-sizing:border-box;text-align:center;transform:translateY(11vmin)}
.ei-intro.is-playing .ei-intro__stage{animation:ei-drift-up calc(var(--ei-d)*.30) cubic-bezier(.22,1,.36,1) calc(var(--ei-d)*.45) both}
@keyframes ei-drift-up{from{transform:translateY(11vmin)}to{transform:translateY(0)}}

/* sceau */
.ei-intro__seal{position:relative;width:min(38vmin,380px);aspect-ratio:1;flex:none;display:grid;place-items:center}
.ei-intro.is-playing .ei-intro__seal{animation:ei-shrink calc(var(--ei-d)*.30) cubic-bezier(.22,1,.36,1) calc(var(--ei-d)*.45) both}
@keyframes ei-shrink{from{transform:scale(1)}to{transform:scale(.92)}}
.ei-intro__halo{position:absolute;width:118%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--ei-accent) 24%,transparent),color-mix(in srgb,var(--ei-accent) 7%,transparent) 46%,transparent 70%);opacity:0}
.ei-intro.is-playing .ei-intro__halo{animation:ei-halo calc(var(--ei-d)*.26) ease-out calc(var(--ei-d)*.24) both,ei-breathe 3.4s ease-in-out calc(var(--ei-d)*.5) infinite alternate}
@keyframes ei-halo{from{opacity:0}to{opacity:.5}}
@keyframes ei-breathe{from{transform:scale(1)}to{transform:scale(1.05)}}
.ei-intro__bloom{position:absolute;width:7%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#FFF6E2,var(--ei-accent) 42%,transparent 72%);opacity:0}
.ei-intro.is-playing .ei-intro__bloom{animation:ei-bloom calc(var(--ei-d)*.30) cubic-bezier(.34,1.56,.64,1) calc(var(--ei-d)*.02) both}
@keyframes ei-bloom{0%{opacity:0;transform:scale(.4);filter:blur(2px)}22%{opacity:1}100%{opacity:0;transform:scale(3.4);filter:blur(12px)}}
.ei-intro__rings{position:absolute;inset:0;width:100%;height:100%;opacity:0;overflow:visible}
.ei-intro.is-playing .ei-intro__rings{animation:ei-fade calc(var(--ei-d)*.10) linear calc(var(--ei-d)*.04) both}
.ei-intro__rings circle{fill:none;stroke:var(--ei-accent);stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;transform:rotate(-90deg);transform-origin:50% 50%}
.ei-intro.is-playing .ei-intro__ring-o{animation:ei-draw calc(var(--ei-d)*.24) cubic-bezier(.77,0,.18,1) calc(var(--ei-d)*.05) both}
.ei-intro.is-playing .ei-intro__ring-i{animation:ei-draw calc(var(--ei-d)*.26) cubic-bezier(.77,0,.18,1) calc(var(--ei-d)*.10) both}
@keyframes ei-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
.ei-intro__logo{position:relative;width:76%;height:auto;opacity:0;filter:drop-shadow(0 0 26px color-mix(in srgb,var(--ei-accent) 33%,transparent))}
.ei-intro.is-playing .ei-intro__logo{animation:ei-logo calc(var(--ei-d)*.25) cubic-bezier(.22,1,.36,1) calc(var(--ei-d)*.23) both}
@keyframes ei-logo{from{opacity:0;transform:scale(.84)}to{opacity:1;transform:scale(1)}}

/* nom */
.ei-intro__name{margin:0;font-family:"Cormorant",Georgia,serif;font-weight:500;font-size:clamp(34px,7.2vw,112px);line-height:1.02;letter-spacing:.035em;color:var(--ei-ink);text-wrap:balance}
.ei-intro__name span{display:inline-block;opacity:0}
.ei-intro.is-playing .ei-intro__name span{animation:ei-letter calc(var(--ei-d)*.18) cubic-bezier(.22,1,.36,1) calc(var(--ei-d)*.50 + var(--ei-i)*24ms) both}
.ei-intro__name span:first-child{color:var(--ei-accent)}
@keyframes ei-letter{from{opacity:0;transform:translateY(.34em);filter:blur(7px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}

/* signature */
.ei-intro__sig{display:flex;flex-direction:column;align-items:center;gap:min(3vmin,30px)}
.ei-intro__rule-row{display:flex;align-items:center;justify-content:center;gap:min(2.6vmin,26px)}
.ei-intro__rule{width:0;height:1px;background:var(--ei-accent);opacity:.62}
.ei-intro.is-playing .ei-intro__rule{animation:ei-rule calc(var(--ei-d)*.28) cubic-bezier(.77,0,.18,1) calc(var(--ei-d)*.72) both}
@keyframes ei-rule{from{width:0}to{width:min(17vw,168px)}}
.ei-intro__label{font-family:"JetBrains Mono",ui-monospace,monospace;font-size:clamp(12px,1.4vw,21px);font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--ei-accent);white-space:nowrap;opacity:0}
.ei-intro.is-playing .ei-intro__label{animation:ei-fade calc(var(--ei-d)*.17) ease-out calc(var(--ei-d)*.76) both}
.ei-intro__tag{font-family:"Albert Sans",system-ui,sans-serif;font-weight:300;font-size:clamp(14px,1.9vw,29px);letter-spacing:.04em;color:var(--ei-muted);opacity:0}
.ei-intro.is-playing .ei-intro__tag{animation:ei-rise calc(var(--ei-d)*.20) cubic-bezier(.22,1,.36,1) calc(var(--ei-d)*.80) both}
@keyframes ei-rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@keyframes ei-fade{from{opacity:0}to{opacity:1}}

/* passer l'intro */
.ei-intro__skip{position:absolute;right:max(3vw,18px);bottom:max(3vh,18px);appearance:none;background:none;border:1px solid color-mix(in srgb,var(--ei-accent) 34%,transparent);border-radius:0;color:var(--ei-muted);font-family:"JetBrains Mono",ui-monospace,monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;padding:10px 16px;cursor:pointer;opacity:0;transition:opacity .4s,color .2s,border-color .2s}
.ei-intro.is-playing .ei-intro__skip{opacity:.55}
.ei-intro__skip:hover{color:var(--ei-ink);border-color:var(--ei-accent)}
.ei-intro__skip:focus-visible{opacity:1;outline:2px solid var(--ei-accent);outline-offset:3px}

/* garde-fous */
@media (max-width:767px){.ei-intro__dust{display:none}.ei-intro__stage{gap:min(4vmin,28px)}}
@media (prefers-reduced-motion:reduce){.ei-intro{display:none!important}}
