/* Keyframes du prototype Camille v4 (identiques), plus inkOut (referencee mais absente du prototype). */
@keyframes riseIn{from{opacity:0;transform:translateY(22px);filter:blur(4px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
@keyframes inkLetter{0%{opacity:0;transform:scale(1.6) translateY(-6px);filter:blur(6px)}60%{opacity:1;filter:blur(0)}100%{opacity:1;transform:scale(1) translateY(0);filter:blur(0)}}
@keyframes flameA{0%,100%{transform:scale(1,1) skewX(0)}20%{transform:scale(1.06,.94) skewX(3deg)}45%{transform:scale(.94,1.1) skewX(-4deg)}70%{transform:scale(1.03,.97) skewX(2deg)}}
@keyframes flameB{0%,100%{transform:scale(1,1) translateX(0);opacity:.9}30%{transform:scale(.9,1.15) translateX(1px);opacity:1}60%{transform:scale(1.1,.9) translateX(-1px);opacity:.75}}
@keyframes flameC{0%,100%{transform:scale(1);opacity:.8}50%{transform:scale(1.12,1.25);opacity:1}}
@keyframes lightBreathe{0%,100%{opacity:.75;transform:translate(-50%,-50%) scale(1)}33%{opacity:.95;transform:translate(-50%,-50%) scale(1.06)}66%{opacity:.65;transform:translate(-50%,-50%) scale(.96)}}
@keyframes flickerFast{0%,100%{transform:scale(1);opacity:1}20%{transform:scale(.7,1.2);opacity:.6}40%{transform:scale(1.1,.8);opacity:1}60%{transform:scale(.8);opacity:.5}80%{transform:scale(1.05);opacity:.9}}
@keyframes shake{0%,100%{transform:translate(0,0)}10%{transform:translate(-10px,3px) rotate(-.4deg)}20%{transform:translate(9px,-4px) rotate(.4deg)}30%{transform:translate(-7px,5px)}40%{transform:translate(7px,-3px)}50%{transform:translate(-5px,3px)}60%{transform:translate(5px,-4px)}70%{transform:translate(-3px,2px)}80%{transform:translate(2px,-1px)}90%{transform:translate(-1px,1px)}}
@keyframes jolt{0%{transform:translate(0,0)}15%{transform:translate(-14px,6px) rotate(-1deg)}30%{transform:translate(12px,-6px) rotate(1deg)}45%{transform:translate(-8px,3px)}60%{transform:translate(6px,-3px)}100%{transform:translate(0,0)}}
@keyframes tremble{0%,100%{transform:translate(0,0) rotate(0)}33%{transform:translate(.7px,-.5px) rotate(.25deg)}66%{transform:translate(-.6px,.6px) rotate(-.25deg)}}
@keyframes blobIn{0%{transform:scale(0)}100%{transform:scale(1)}}
@keyframes drip{0%{transform:scaleY(0)}100%{transform:scaleY(1)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeOut{from{opacity:1}to{opacity:0}}
@keyframes blackHold{0%{opacity:0}10%{opacity:1}85%{opacity:1}100%{opacity:0}}
@keyframes crackDraw{from{stroke-dashoffset:1600}to{stroke-dashoffset:0}}
@keyframes shard3d{0%{opacity:1;transform:perspective(900px) translate3d(0,0,0) rotateX(0) rotateY(0)}100%{opacity:0;transform:perspective(900px) translate3d(var(--dx),var(--dy),240px) rotateX(var(--rx)) rotateY(var(--ry))}}
@keyframes glitchA{0%{transform:translateX(0)}10%{transform:translateX(-14px)}20%{transform:translateX(9px)}30%{transform:translateX(-5px)}40%{transform:translateX(16px)}50%{transform:translateX(-11px)}60%{transform:translateX(3px)}70%{transform:translateX(-18px)}80%{transform:translateX(7px)}90%{transform:translateX(-2px)}100%{transform:translateX(0)}}
@keyframes crtOff{0%{transform:scale(1,1);filter:brightness(1)}45%{transform:scale(1,.012);filter:brightness(3)}70%{transform:scale(.6,.004);filter:brightness(6)}100%{transform:scale(0,.002);filter:brightness(0)}}
@keyframes crtOn{0%{transform:scale(0,.002);filter:brightness(0)}30%{transform:scale(1,.01);filter:brightness(4)}100%{transform:scale(1,1);filter:brightness(1)}}
@keyframes scanRoll{0%{transform:translateY(-110%)}100%{transform:translateY(110%)}}
@keyframes flashFlicker{0%,100%{opacity:0}8%{opacity:.9}12%{opacity:0}30%{opacity:.6}34%{opacity:0}55%{opacity:1}60%{opacity:0}}
@keyframes claw{0%{transform:rotate(var(--a)) scaleX(0)}100%{transform:rotate(var(--a)) scaleX(1)}}
@keyframes handSweep{0%{transform:translate(-140%,20%) rotate(-25deg);opacity:0}15%{opacity:.95}85%{opacity:.9}100%{transform:translate(160%,-30%) rotate(10deg);opacity:0}}
@keyframes lidOpen{0%{clip-path:ellipse(50% 0% at 50% 50%)}100%{clip-path:ellipse(50% 50% at 50% 50%)}}
@keyframes lidBlink{0%,92%,100%{clip-path:ellipse(50% 50% at 50% 50%)}96%{clip-path:ellipse(50% 2% at 50% 50%)}}
@keyframes wipeWord{from{clip-path:inset(-20% 100% -20% 0)}to{clip-path:inset(-20% 0 -20% 0)}}
@keyframes quill{from{left:0}to{left:100%}}
@keyframes greenWipe{from{clip-path:circle(0% at 50% 40%)}to{clip-path:circle(160% at 50% 40%)}}
@keyframes heartbeat{0%,100%{transform:scale(1)}14%{transform:scale(1.18)}28%{transform:scale(1)}42%{transform:scale(1.12)}56%{transform:scale(1)}}
@keyframes heartScreen{0%,100%{transform:scale(1)}14%{transform:scale(1.018)}28%{transform:scale(1)}42%{transform:scale(1.012)}56%{transform:scale(1)}}
@keyframes pulseRing{0%{transform:scale(.9);opacity:.8}100%{transform:scale(1.7);opacity:0}}
@keyframes glow{0%,100%{opacity:.55}50%{opacity:1}}
@keyframes drift{0%{transform:translateY(0) translateX(0);opacity:0}15%{opacity:.7}85%{opacity:.5}100%{transform:translateY(-120px) translateX(18px);opacity:0}}
@keyframes dust{0%{transform:translate(0,0);opacity:0}10%{opacity:.6}90%{opacity:.3}100%{transform:translate(var(--dx),-140px);opacity:0}}
@keyframes rise{0%{transform:translateY(0);opacity:0}20%{opacity:1}100%{transform:translateY(-80vh);opacity:0}}
@keyframes smoke{0%{transform:translate(-50%,0) scale(.6);opacity:.5}100%{transform:translate(-40%,-120px) scale(1.8);opacity:0}}
@keyframes cursor{0%,100%{opacity:1}50%{opacity:0}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes slideDown{from{transform:translateY(-130%)}to{transform:translateY(0)}}
@keyframes silhouette{0%{opacity:0;transform:translateX(40px) scale(.9)}30%{opacity:.9}70%{opacity:.9;transform:translateX(0) scale(1)}100%{opacity:0;transform:translateX(-14px) scale(1.06)}}
@keyframes breathe{0%,100%{transform:scale(1);opacity:.3}50%{transform:scale(1.25);opacity:.6}}
@keyframes wobble{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}
@keyframes blink{0%,90%,100%{transform:scaleY(1)}95%{transform:scaleY(.05)}}
@keyframes sealPress{0%{transform:scale(1)}40%{transform:scale(.86)}100%{transform:scale(1)}}
@keyframes photoGhost{0%,80%,100%{opacity:0}84%,92%{opacity:.85}}
@keyframes ouijaGlide{0%{transform:translate(0,0)}30%{transform:translate(120px,-40px)}60%{transform:translate(-60px,60px)}100%{transform:translate(90px,20px)}}
@keyframes aberr{0%,100%{text-shadow:0 0 0 transparent}25%{text-shadow:-3px 0 rgba(255,60,60,.8),3px 0 rgba(80,240,255,.8)}50%{text-shadow:2px 0 rgba(255,60,60,.8),-2px 0 rgba(80,240,255,.8)}75%{text-shadow:-1px 0 rgba(255,60,60,.8),1px 0 rgba(80,240,255,.8)}}
@keyframes candleLean{0%{transform:skewX(0) scaleY(1)}40%{transform:skewX(28deg) scaleY(.8)}70%{transform:skewX(45deg) scaleY(.35);opacity:.8}100%{transform:skewX(60deg) scaleY(0);opacity:0}}
@keyframes handprint{0%{opacity:0;transform:scale(.7)}60%{opacity:.5}100%{opacity:.35;transform:scale(1)}}
@keyframes wordFlash{0%,100%{opacity:0}10%,14%{opacity:.9}18%{opacity:0}}
@keyframes fogDrift{0%{transform:translate(-8%,-4%) scale(1)}50%{transform:translate(6%,3%) scale(1.15)}100%{transform:translate(-8%,-4%) scale(1)}}
@keyframes fogDrift2{0%{transform:translate(6%,4%) scale(1.1)}50%{transform:translate(-7%,-5%) scale(1)}100%{transform:translate(6%,4%) scale(1.1)}}
@keyframes converge{0%{transform:translate(var(--dx),var(--dy)) scale(.4);opacity:0}30%{opacity:1}100%{transform:translate(0,0) scale(1);opacity:0}}
@keyframes ember{0%{transform:translate(0,0) scale(1);opacity:1}100%{transform:translate(var(--dx),-180px) scale(.2);opacity:0}}
@keyframes burnGrow{0%{clip-path:circle(0% at var(--cx) var(--cy))}100%{clip-path:circle(150% at var(--cx) var(--cy))}}
@keyframes ripple{0%{transform:translate(-50%,-50%) scale(.15);opacity:.9}100%{transform:translate(-50%,-50%) scale(1);opacity:0}}
@keyframes catWalk{0%{left:-30%}70%,100%{left:46%}}
@keyframes legs{0%,100%{transform:rotate(-14deg)}50%{transform:rotate(14deg)}}
@keyframes screenFlicker{0%,100%{filter:brightness(1)}20%{filter:brightness(.25)}30%{filter:brightness(1.15)}50%{filter:brightness(.5)}60%{filter:brightness(1)}}
@keyframes waxDrip{0%{transform:scaleY(0)}100%{transform:scaleY(1)}}
@keyframes edgePulse{0%{opacity:.9}100%{opacity:0}}
@keyframes lidWide{0%{clip-path:ellipse(50% 0% at 50% 50%)}30%{clip-path:ellipse(50% 46% at 50% 50%)}72%{clip-path:ellipse(50% 46% at 50% 50%)}100%{clip-path:ellipse(50% 0% at 50% 50%)}}
@keyframes dawn{from{opacity:0}to{opacity:1}}
@keyframes doorOut{0%{transform:perspective(1100px) rotateY(0)}100%{transform:perspective(1100px) rotateY(-97deg)}}
@keyframes doorIn{0%{transform:perspective(1100px) rotateY(97deg)}100%{transform:perspective(1100px) rotateY(0)}}
@keyframes cubeOut{0%{transform:perspective(1100px) translateZ(0) rotateY(0)}100%{transform:perspective(1100px) translateZ(-260px) rotateY(-90deg)}}
@keyframes cubeIn{0%{transform:perspective(1100px) translateZ(-260px) rotateY(90deg)}100%{transform:perspective(1100px) translateZ(0) rotateY(0)}}
@keyframes fallOut{0%{transform:perspective(1100px) rotateX(0);opacity:1}100%{transform:perspective(1100px) rotateX(-94deg);opacity:.1}}
@keyframes fallIn{0%{transform:perspective(1100px) translateZ(-700px) translateY(-240px) rotateX(20deg);opacity:0}100%{transform:perspective(1100px) translateZ(0) translateY(0) rotateX(0);opacity:1}}
@keyframes flipOut{0%{transform:perspective(1100px) rotateY(0)}100%{transform:perspective(1100px) rotateY(92deg)}}
@keyframes flipIn{0%{transform:perspective(1100px) rotateY(-92deg)}100%{transform:perspective(1100px) rotateY(0)}}
@keyframes tunnelOut{0%{transform:scale(1);opacity:1;filter:blur(0)}100%{transform:scale(8);opacity:0;filter:blur(14px)}}
@keyframes tunnelIn{0%{transform:scale(.12);opacity:0;filter:blur(10px)}100%{transform:scale(1);opacity:1;filter:blur(0)}}
@keyframes coinSpin{0%{transform:perspective(600px) rotateY(540deg) scale(.3);opacity:0}100%{transform:perspective(600px) rotateY(0) scale(1);opacity:1}}
@keyframes orbit{from{transform:rotateX(74deg) rotateZ(0)}to{transform:rotateX(74deg) rotateZ(360deg)}}
@keyframes orbit2{from{transform:rotateX(74deg) rotateY(24deg) rotateZ(360deg)}to{transform:rotateX(74deg) rotateY(24deg) rotateZ(0)}}
@keyframes globeSpin{from{transform:rotateY(0)}to{transform:rotateY(360deg)}}
@keyframes nameTilt{0%,100%{transform:perspective(500px) rotateX(22deg)}50%{transform:perspective(500px) rotateX(-8deg)}}
@keyframes starFloat{0%,100%{transform:translateZ(0)}50%{transform:translateZ(60px)}}
@keyframes inkOut{from{opacity:1}to{opacity:0}}
