/* ============================================================
   ALPENGLOW  -  DETAILS DE MOUVEMENT
   Complement de frosted-accueil.css. Aucune boucle infinie
   ajoutee : le budget est deja pris par l onde, le halo, le
   rayon et la crete. Tout ce qui suit est declenche par l
   entree dans le champ, le survol ou le focus.
   Transform et opacity uniquement.
   ============================================================ */

/* --- Panoramique stereo -------------------------------------
   Les elements d une cascade n entrent plus tous du meme cote :
   ils alternent. Le son traverse l espace, la lecture aussi.
   14px reste sous la gouttiere minimale : aucun debordement. */
@keyframes fe-rise-pan{
  from{opacity:0;transform:translate3d(var(--fe-pan,0),28px,0);}
  to{opacity:1;transform:none;}
}
.fe-cascade > .fe-rise:nth-child(odd){--fe-pan:-14px;}
.fe-cascade > .fe-rise:nth-child(even){--fe-pan:14px;}
.fe-cascade > .fe-rise.is-in{animation-name:fe-rise-pan;}

/* --- Temps mort d ouverture ---------------------------------
   Le hero ne bouge pas pendant les deux premieres secondes.
   Le rayon respire ensuite, l onde part apres lui. Une entree
   qui ne se precipite pas. */
.fe-hero .fe-beam{animation-delay:2s;}
.fe-hero .fe-echo span{animation-delay:2.6s;}
.fe-hero .fe-echo span:nth-child(2){animation-delay:3.4s;}
.fe-hero .fe-echo span:nth-child(3){animation-delay:4.2s;}

/* --- La reprise ---------------------------------------------
   L angle du rayon du hero revient en pied de page, immobile.
   Meme motif, autre tonalite : ce qui fait tenir un ensemble. */
.fe-foot{position:relative;}
.fe-foot::before{
  content:"";position:absolute;inset:-24px -12% auto;height:180px;
  background:linear-gradient(74deg,transparent 34%,rgb(var(--fe-rgb-cyan)/.14) 50%,transparent 66%);
  pointer-events:none;z-index:0;
}
.fe-foot > *{position:relative;z-index:1;}

/* --- Le filet qui se dessine --------------------------------
   Le soulignement des liens de texte se trace depuis la gauche
   au lieu d apparaitre. Retour d etat, pas decoration. */
.fe-page :where(p,li) a:not(.fe-btn){
  position:relative;text-decoration:none;color:var(--fe-accent);
}
.fe-page :where(p,li) a:not(.fe-btn)::after{
  content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;
  background:currentColor;transform:scaleX(0);transform-origin:left;
  transition:transform var(--fe-dur-hover) var(--fe-ease-glacier);
}
.fe-page :where(p,li) a:not(.fe-btn):hover::after,
.fe-page :where(p,li) a:not(.fe-btn):focus-visible::after{transform:scaleX(1);}
.fe-night-band :where(p,li) a:not(.fe-btn),
.fe-dark :where(p,li) a:not(.fe-btn){color:var(--fe-prism-a);}

/* --- Le filet dore des cartes -------------------------------
   Au survol, la carte ne se souleve pas : son filet s eclaire.
   L elevation reste reservee aux boutons. */
.fe-cell{transition:border-color var(--fe-dur-hover) var(--fe-ease-mist);}
.fe-cell:hover{border-color:rgb(var(--fe-rgb-cyan)/.45);}

/* --- Focus clavier ------------------------------------------
   Un seul anneau, a l accent, sur toute la page. */
.fe-page :where(a,button,summary,[tabindex]):focus-visible{
  outline:2px solid var(--fe-accent);outline-offset:3px;border-radius:var(--fe-r-sm);
}
.fe-night-band :where(a,button,summary):focus-visible,
.fe-dark :where(a,button,summary):focus-visible{outline-color:var(--fe-prism-a);}

@media (prefers-reduced-motion:reduce){
  .fe-cascade > .fe-rise.is-in{animation-name:none;}
  .fe-hero .fe-beam,
  .fe-hero .fe-echo span{animation-delay:0s;}
  .fe-page :where(p,li) a:not(.fe-btn)::after{transition:none;transform:scaleX(1);}
  .fe-cell{transition:none;}
}
