/* ════════════════════════════════════════════════════════════
   AURORA MAGIC — effets & animations partagés (site + admin)
   Fluide, discret, magique. Respecte prefers-reduced-motion.
   ════════════════════════════════════════════════════════════ */

/* ---- Transitions de page (admin) : entrée soyeuse ---- */
.page.active{animation:auPageIn .45s cubic-bezier(.22,1,.36,1)}
@keyframes auPageIn{
  from{opacity:0;transform:translateY(14px) scale(.995);filter:blur(4px)}
  to{opacity:1;transform:none;filter:none}
}

/* ---- Apparition au scroll (site) : posée par JS, jamais bloquante ---- */
.au-reveal{opacity:0;transform:translateY(26px) scale(.985);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1)}
.au-reveal.au-vu{opacity:1;transform:none}

/* ---- Ripple sur les boutons ---- */
.btn-primary,.btn-secondary,.btn{position:relative;overflow:hidden}
.au-ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.35);transform:scale(0);animation:auRipple .6s ease-out;pointer-events:none}
@keyframes auRipple{to{transform:scale(3);opacity:0}}

/* ---- Tilt 3D doux (posé par JS via variables) ---- */
.au-tilt{transform:perspective(900px) rotateX(var(--au-rx,0deg)) rotateY(var(--au-ry,0deg)) translateY(var(--au-ty,0));transition:transform .18s ease-out;will-change:transform}

/* ---- Lueur magique au survol des cartes ---- */
.au-lueur{position:relative}
.au-lueur::after{
  content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;
  background:radial-gradient(260px circle at var(--au-mx,50%) var(--au-my,50%),rgba(167,139,250,.14),transparent 65%);
  transition:opacity .35s;
}
.au-lueur:hover::after{opacity:1}

/* ---- Compteur : petit pop quand un chiffre finit de monter ---- */
@keyframes auPop{0%{transform:scale(1)}55%{transform:scale(1.12)}100%{transform:scale(1)}}
.au-pop{animation:auPop .4s cubic-bezier(.34,1.56,.64,1)}

/* ---- Liens de nav : soulignement qui balaie ---- */
nav a:not(.btn){position:relative}
nav a:not(.btn)::after{
  content:'';position:absolute;left:0;bottom:-3px;height:2px;width:100%;
  background:linear-gradient(90deg,#a78bfa,#22d3ee);
  transform:scaleX(0);transform-origin:right;transition:transform .35s cubic-bezier(.22,1,.36,1);
}
nav a:not(.btn):hover::after{transform:scaleX(1);transform-origin:left}

/* ---- Poussière d'étoiles sur les boutons primaires ---- */
.au-etoile{position:absolute;pointer-events:none;font-size:10px;animation:auEtoile .9s ease-out forwards}
@keyframes auEtoile{
  from{opacity:1;transform:translate(0,0) scale(.6) rotate(0)}
  to{opacity:0;transform:translate(var(--au-ex,20px),var(--au-ey,-26px)) scale(1.25) rotate(160deg)}
}

/* ════════ EASTER EGGS ════════ */

/* Triforce discret (footer) : trois triangles CSS, rien de plus */
.au-triforce{display:inline-block;width:22px;height:19px;position:relative;opacity:.14;cursor:pointer;transition:opacity .4s,filter .4s;vertical-align:middle}
.au-triforce:hover{opacity:.9;filter:drop-shadow(0 0 6px #ffd700)}
.au-triforce i{position:absolute;width:0;height:0;border-left:5.5px solid transparent;border-right:5.5px solid transparent;border-bottom:9.5px solid #d4af37}
.au-triforce i:nth-child(1){left:5.5px;top:0}
.au-triforce i:nth-child(2){left:0;top:9.5px}
.au-triforce i:nth-child(3){left:11px;top:9.5px}

/* Moment triforce : assemblage plein écran */
#au-tri-moment{position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;pointer-events:none;background:radial-gradient(circle,rgba(0,0,0,.35),rgba(0,0,0,.7))}
#au-tri-moment .t{position:absolute;width:0;height:0;border-left:44px solid transparent;border-right:44px solid transparent;border-bottom:76px solid #ffd700;filter:drop-shadow(0 0 24px rgba(255,215,0,.9));animation:auTriIn 1s cubic-bezier(.22,1,.36,1) forwards}
#au-tri-moment .t1{animation-delay:.05s;--tx:0px;--ty:-76px;transform:translate(0,-260px);opacity:0}
#au-tri-moment .t2{animation-delay:.2s;--tx:-44px;--ty:0px;transform:translate(-260px,180px);opacity:0}
#au-tri-moment .t3{animation-delay:.35s;--tx:44px;--ty:0px;transform:translate(260px,180px);opacity:0}
@keyframes auTriIn{to{transform:translate(var(--tx),var(--ty));opacity:1}}
#au-tri-moment .msg{position:absolute;bottom:22%;color:#ffd700;font-weight:800;letter-spacing:2px;font-size:1rem;text-shadow:0 0 20px rgba(255,215,0,.6);animation:auMsgIn .8s .9s both}
@keyframes auMsgIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
#au-tri-moment.au-sort{animation:auSort .6s ease forwards}
@keyframes auSort{to{opacity:0}}

/* Plume du credo : chute en spirale */
.au-plume{position:fixed;z-index:99999;pointer-events:none;font-size:30px;animation:auPlume 3.4s cubic-bezier(.45,.05,.55,.95) forwards;filter:drop-shadow(0 2px 6px rgba(0,0,0,.4))}
@keyframes auPlume{
  0%{transform:translate(0,-60px) rotate(0)}
  25%{transform:translate(-46px,25vh) rotate(-38deg)}
  50%{transform:translate(38px,50vh) rotate(30deg)}
  75%{transform:translate(-30px,75vh) rotate(-24deg)}
  100%{transform:translate(0,105vh) rotate(12deg);opacity:0}
}

/* Toast discret (évolutions & credo) */
.au-toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%) translateY(20px);z-index:99999;
  background:rgba(13,14,30,.92);border:1px solid rgba(167,139,250,.4);border-radius:40px;
  padding:10px 22px;color:#efeaff;font-weight:700;font-size:.9rem;opacity:0;
  backdrop-filter:blur(10px);box-shadow:0 8px 30px rgba(0,0,0,.4);
  animation:auToast 2.6s cubic-bezier(.22,1,.36,1) forwards;pointer-events:none}
@keyframes auToast{
  0%{opacity:0;transform:translateX(-50%) translateY(20px)}
  12%,82%{opacity:1;transform:translateX(-50%) translateY(0)}
  100%{opacity:0;transform:translateX(-50%) translateY(-8px)}
}

/* Étincelle discrète (déclencheur évolutions, footer admin/site) */
.au-spark{display:inline-block;opacity:.25;cursor:pointer;transition:opacity .3s,transform .3s;user-select:none}
.au-spark:hover{opacity:1;transform:rotate(20deg) scale(1.2)}

/* ---- Respect du mode réduit : on coupe tout ---- */
@media(prefers-reduced-motion:reduce){
  .page.active,.au-reveal,.au-ripple,.au-tilt,.au-pop,.au-etoile,#au-tri-moment .t,.au-plume,.au-toast{animation:none!important;transition:none!important}
  .au-reveal{opacity:1!important;transform:none!important}
}
