/* Loader d'entrée et feedback léger des actions. Un filet CSS le ferme si le JS échoue. */
#loader{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;background:radial-gradient(circle at 50% 40%,#fff 0%,#fff4f6 48%,#fbe3e9 100%);pointer-events:auto;opacity:1;visibility:visible;transition:opacity .65s ease,visibility .65s ease;animation:loader-failsafe 1ms 8s forwards;}
#loader.is-finished{opacity:0;visibility:hidden;pointer-events:none;animation:none;}
.loader-brand{z-index:1;position:relative;display:flex;flex-direction:column;align-items:center;gap:12px;padding:28px;text-align:center;color:var(--rose);animation:loader-float 2.4s ease-in-out infinite;}
.loader-brand img{width:92px;height:auto;filter:drop-shadow(0 10px 22px rgba(180,29,89,.13));animation:loader-logo 2s ease-in-out infinite;}
.loader-brand::after{content:'';position:absolute;inset:-28px -58px;background:url('../images/loading/gold-sparkles.svg') center/contain no-repeat;opacity:.62;pointer-events:none;animation:loader-twinkle 2.8s ease-in-out infinite;z-index:-1}\n.loader-starfield{position:absolute;inset:0;overflow:hidden;pointer-events:none}\n.loader-star{position:absolute;color:var(--gold);font-size:var(--star-size);line-height:1;text-shadow:0 0 10px rgba(205,157,82,.36);opacity:.18;animation:loader-star-drift var(--star-duration) ease-in-out var(--star-delay) infinite alternate;will-change:transform,opacity}\n.loader-star:nth-child(3n){color:var(--rose);font-size:calc(var(--star-size) * .8)}\n.loader-star:nth-child(4n){filter:drop-shadow(0 0 5px rgba(211,164,91,.6))}
.loader-brand strong{font:600 20px 'Cormorant Garamond',serif;letter-spacing:.22em}.loader-brand small{color:var(--mut);font-size:11px;letter-spacing:.06em}
.loader-sparkle{position:absolute;top:13px;right:20px;color:var(--gold);font-size:28px;animation:loader-twinkle 1.8s ease-in-out infinite}
.loader-line{width:120px;height:3px;overflow:hidden;border-radius:99px;background:#f0cbd5;margin-top:5px}.loader-line i{display:block;width:40%;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--rose),var(--gold));animation:loader-progress 1.2s ease-in-out infinite}
@keyframes loader-failsafe{to{opacity:0;visibility:hidden;pointer-events:none}}
@keyframes loader-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes loader-logo{0%,100%{transform:scale(.98)}50%{transform:scale(1.035)}}@keyframes loader-twinkle{0%,100%{opacity:.45;transform:rotate(0) scale(.8)}50%{opacity:1;transform:rotate(18deg) scale(1.15)}}@keyframes loader-progress{0%{transform:translateX(-110%)}100%{transform:translateX(360%)}}\n@keyframes loader-star-drift{0%{opacity:.12;transform:translate3d(0,8px,0) rotate(0deg) scale(.65)}45%{opacity:.8}100%{opacity:.95;transform:translate3d(0,-13px,0) rotate(35deg) scale(1.2)}}
@media(prefers-reduced-motion:reduce){.loader-star{animation:none!important;opacity:.35}.loader-brand,.loader-brand img,.loader-sparkle,.loader-line i{animation:none!important}.loader-line i{width:100%}}
