/* Costa Services — Performance & fluidité (V133)
   1. Animations en pause hors écran (classe .cs-off posée par perf.js)
   2. Animations coûteuses réécrites en version GPU (transform), rendu identique
   3. Mode allégé automatique (html.cs-lite) sur machine lente : animations décoratives en boucle coupées,
      états de repos visibles, flous d'arrière-plan décoratifs retirés. Contenu et mise en page inchangés. */

/* ---------- 1. Pause hors écran ---------- */
.cs-off,.cs-off::before,.cs-off::after,
.cs-off *,.cs-off *::before,.cs-off *::after{animation-play-state:paused!important}

/* ---------- 2. Versions GPU (mêmes mouvements, sans repeinte à chaque image) ---------- */
@media (prefers-reduced-motion: no-preference){
  /* Grille du hero : déplacement par transform au lieu de background-position */
  .v3-hero::before,.sol-hero::before,.p26-hero::before{inset:-64px 0 0 -64px;animation:csGrid 24s linear infinite}
  /* Égaliseur du bento : scaleY au lieu de height (plus de recalcul de mise en page) */
  .v3-bento .bt-eq span{height:100%;transform-origin:center;animation-name:csEq}
}
@keyframes csGrid{from{transform:translate3d(0,0,0)}to{transform:translate3d(64px,64px,0)}}
@keyframes csEq{0%,100%{transform:scaleY(.18)}50%{transform:scaleY(1)}}
/* Onde sonore des visuels animés */
.lv-wave span{height:14px;transform-origin:center;animation-name:csWv}
@keyframes csWv{0%,100%{transform:scaleY(.29)}50%{transform:scaleY(1)}}
/* Barre de trajet : scaleX au lieu de width */
@media (prefers-reduced-motion: no-preference){
  .v3-scn .ov-trip .tr i{width:100%;transform-origin:left;animation-name:csTrip}
}
@keyframes csTrip{0%{transform:scaleX(.04)}80%,100%{transform:scaleX(1)}}

/* ---------- 3. Mode allégé (machine lente) ---------- */
html.cs-lite .v3-hero::before,html.cs-lite .sol-hero::before,html.cs-lite .p26-hero::before,
html.cs-lite .v3-hero::after,html.cs-lite .sol-hero::after,html.cs-lite .p26-hero::after,
html.cs-lite .v3-av::after,html.cs-lite .v3-cd::before,
html.cs-lite .v3-bento .bt-eq span,html.cs-lite .v3-bento .bt-live i,html.cs-lite .v3-bento .bt-clock .c,
html.cs-lite .v3-bento .bt-radar i,html.cs-lite .v3-bento .bt-fr .arc,html.cs-lite .v3-bento .bt-fr .city,
html.cs-lite .v3-bento .bt-fr .hq-p,
html.cs-lite .v3-scn .ov-tag .lk,html.cs-lite .v3-scn .ov-ring i,html.cs-lite .v3-scn .ov-chip,
html.cs-lite .v3-scn .ov-trip .tr i,html.cs-lite .v3-scn .ov-win .pg i,html.cs-lite .v3-scn .ov-win .okb,
html.cs-lite .v3-hum .v3-scn-img img,html.cs-lite .v3-il .art img,
html.cs-lite .v3-scn .link,html.cs-lite .v3-scn .pgbar,html.cs-lite .v3-scn .upd,html.cs-lite .v3-scn .tagf,
html.cs-lite .v3-scn .wf path,
html.cs-lite .cu-dot,html.cs-lite .hero-contact,html.cs-lite .hero-contact .hc-av::after,
html.cs-lite .cu-tl-step.next::before,
html.cs-lite .lv-live i,html.cs-lite .lv-call.ring .av,html.cs-lite .lv-wave span,html.cs-lite .lv-cur,
html.cs-lite .lv-cam::before,html.cs-lite .lv-cam em::before,html.cs-lite .lv-cam-img .im,
html.cs-lite .lv-cam-img.mv::after,html.cs-lite .lv-beam .ln,html.cs-lite .lv-mix::before,
html.cs-lite .lv-mix>.lv-p,html.cs-lite .lv-mix>.lv-ph,
html.cs-lite .hero-particles::before,html.cs-lite .hero-particles::after,html.cs-lite .hero-sparkles span,
html.cs-lite .hero-dot,html.cs-lite .hfloat,html.cs-lite .cw-dot,html.cs-lite .cw-notif,html.cs-lite .cw-notif::after{animation:none!important}

/* Panneau du hero : on garde l'apparition, on retire le flottement */
@media (prefers-reduced-motion: no-preference){
  html.cs-lite .v3-panel{animation:v3panel 1s cubic-bezier(.16,.8,.3,1) .4s forwards!important}
}
/* États de repos lisibles (identiques à « Réduire les animations ») */
html.cs-lite .v3-bento .bt-eq span{transform:scaleY(.6)}
html.cs-lite .v3-bento .bt-eq span:nth-child(2n){transform:scaleY(.9)}
html.cs-lite .v3-bento .bt-eq span:nth-child(3n){transform:scaleY(.4)}
html.cs-lite .v3-bento .bt-radar i{opacity:1}
html.cs-lite .v3-bento .bt-radar i:nth-child(1){transform:scale(.4)}
html.cs-lite .v3-bento .bt-radar i:nth-child(2){transform:scale(.7)}
html.cs-lite .v3-bento .bt-fr .arc{stroke-dashoffset:0;opacity:1}
html.cs-lite .v3-bento .bt-fr .city{opacity:1;transform:none}
html.cs-lite .v3-scn .ov-chip,html.cs-lite .v3-scn .ov-win .okb{opacity:1;transform:none}
html.cs-lite .v3-scn .ov-win .pg i,html.cs-lite .v3-scn .pgbar{transform:none}
html.cs-lite .v3-scn .ov-trip .tr i{transform:scaleX(.6)}
html.cs-lite .lv-wave span{transform:scaleY(.6)}
html.cs-lite .lv-wave span:nth-child(2n){transform:scaleY(1)}
/* Flous d'arrière-plan décoratifs (très coûteux sur les anciennes cartes graphiques) */
html.cs-lite #mm-scrim,html.cs-lite .v3-pp figcaption,html.cs-lite .v3-scn .ov-tag,
html.cs-lite .v3-scn .ov-chip,html.cs-lite .v3-scn .ov-trip,html.cs-lite .hfloat{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
