/* Panne progressive fictive : les archives restent en place. */
.rv-feather-storm{position:fixed;inset:0;z-index:110;pointer-events:none;visibility:hidden;opacity:0;overflow:hidden;color:#dfc5bb;background:#080509;transition:opacity .7s,visibility .7s}
.rv-feather-storm.is-prelude{visibility:visible;opacity:1;background:transparent}
.rv-feather-storm.is-prelude:before{content:"";position:absolute;inset:0;opacity:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0 4px,#c351651c 5px 6px);animation:rv-fault-flicker 2.2s steps(1) infinite}
.rv-feather-storm.is-prelude:after{content:"SIGNAL INSTABLE · CAM 01";position:absolute;right:25px;bottom:65px;color:#cc6371;font:11px monospace;letter-spacing:.18em;opacity:0;animation:rv-fault-warning 4s steps(1) infinite}
.rv-feather-storm.is-crash{visibility:visible;opacity:1;animation:rv-crash-flash .38s steps(1) 1}
.rv-feather-storm.is-recovery{visibility:visible;opacity:0;transition:opacity 1.8s}
.rv-crash-shake{width:100%;height:100%;display:grid;place-items:center;padding:24px;box-sizing:border-box}
.is-crash .rv-crash-shake{animation:rv-fault-shake .16s steps(2,end) infinite}
.rv-crash-terminal{max-width:660px;width:100%;border:1px solid #632b38;padding:clamp(20px,5vw,48px);background:linear-gradient(150deg,#120a11,#060507);box-shadow:0 0 110px #8c203526,inset 0 0 65px #270b18;opacity:0}
.is-crash .rv-crash-terminal{opacity:1}
.rv-crash-code{font:12px/1.75 monospace;letter-spacing:.13em;color:#a75263;white-space:normal;margin-bottom:30px}
.rv-crash-line{font:clamp(16px,3vw,28px)/1.3 monospace;letter-spacing:.1em;color:#e5a8b1;text-shadow:2px 0 #4f9aa0,-2px 0 #b72248}
.rv-crash-cursor{animation:rv-blink .45s steps(1) infinite}
.rv-crash-raven{font:italic clamp(20px,3vw,29px)/1.55 Georgia,serif;color:#e8d8cb;margin-top:38px;opacity:0}
.rv-crash-sign{font:italic 22px Georgia,serif;text-align:right;color:#ad7882;margin-top:20px;opacity:0}
.is-crash .rv-crash-raven{animation:rv-reveal .8s ease 2.2s forwards}
.is-crash .rv-crash-sign{animation:rv-reveal .8s ease 3.1s forwards}
@keyframes rv-reveal{to{opacity:1}}
@keyframes rv-blink{50%{opacity:0}}
@keyframes rv-fault-shake{0%,85%{transform:translate(0)}90%{transform:translate(3px,-1px)}95%{transform:translate(-2px,1px)}}
@keyframes rv-fault-flicker{0%,72%,82%,90%,100%{opacity:0}73%,81%,91%{opacity:.3}79%,94%{opacity:.55}}
@keyframes rv-fault-warning{0%,75%,100%{opacity:0}76%,84%{opacity:.75}}
@keyframes rv-crash-flash{0%{background:#a44c65}20%{background:#080509}40%{background:#8d263f}60%,100%{background:#080509}}
@media(prefers-reduced-motion:reduce){.rv-feather-storm,.rv-crash-shake,.rv-crash-terminal{animation:none!important;transition:none!important}}

/* Préambule véritablement graduel : aucun écran noir pendant ces paliers. */
.rv-feather-storm.is-prelude{background:transparent!important}
.rv-feather-storm.is-prelude .rv-crash-terminal{opacity:0!important}
.rv-feather-storm.rv-stage-0:before,.rv-feather-storm.rv-stage-0:after{animation:none!important;opacity:0!important}
.rv-feather-storm.rv-stage-1:before{animation-duration:6s;opacity:.13}
.rv-feather-storm.rv-stage-1:after{animation:none;opacity:0}
.rv-feather-storm.rv-stage-2:before{animation-duration:3.5s}
.rv-feather-storm.rv-stage-2:after{animation-duration:5s}
.rv-feather-storm.rv-stage-3:before{animation-duration:.8s}
.rv-feather-storm.rv-stage-3:after{animation-duration:1.2s}
