/* GAUTIER VDO — Motion design (78.9.78)
   Uniquement de l'affichage : apparitions au défilement, compteurs, barres, survols.
   Si le JavaScript échoue, tout redevient visible après 2,5 s. Désactivé si l'appareil demande moins d'animations. */
html.gvdm-js body.gvdp-galerie .gx-hero-in>*:not(.gvdm-in),html.gvdm-js body.gvdp-galerie .gx-head>*:not(.gvdm-in),html.gvdm-js body.gvdp-galerie .gx-screen:not(.gvdm-in),html.gvdm-js body.gvdp-galerie .gx-list:not(.gvdm-in),html.gvdm-js body.gvdp-galerie .gx-list .w-film:not(.gvdm-in),html.gvdm-js body.gvdp-galerie .gx-cta>*:not(.gvdm-in),html.gvdm-js body.gvdp-portail .px-hello>*:not(.gvdm-in),html.gvdm-js body.gvdp-portail .px-visual:not(.gvdm-in),html.gvdm-js body.gvdp-portail .px-stats .p-stat:not(.gvdm-in),html.gvdm-js body.gvdp-portail .px-alert:not(.gvdm-in),html.gvdm-js body.gvdp-portail .px-head:not(.gvdm-in),html.gvdm-js body.gvdp-portail .px-card:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .dx-panel:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .dx-section-title:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .projecthero:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .pendingCommentsCard:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .progressCard:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-pv2-hero-copy>*:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-pv2-meta>div:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-private-note:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-pv2-progress:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-pv2-stage:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-current:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-checklist>div:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-final-validation:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-client-notifications:not(.gvdm-in),html.gvdm-js .gvd-premium details.gvd-history:not(.gvdm-in),html.gvdm-js .gvd-premium details.gvd-shoot-docs:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-video-review:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-video-type-tabs>button:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-bottom>.gvd-box:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-deliverable-card:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-resource-card:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-info-card:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-contact:not(.gvdm-in),html.gvdm-js .gvd-premium .gvd-delivered-cta:not(.gvdm-in),html.gvdm-js body.gvdp-galerie .w-intro>*:not(.gvdm-in),html.gvdm-js body.gvdp-galerie .w-heading>*:not(.gvdm-in),html.gvdm-js body.gvdp-galerie .w-player-shell:not(.gvdm-in),html.gvdm-js body.gvdp-galerie .w-now:not(.gvdm-in),html.gvdm-js body.gvdp-galerie .w-films>*:not(.gvdm-in),html.gvdm-js body.gvdp-galerie .w-cta:not(.gvdm-in),html.gvdm-js body.gvdp-visionnage .hero>*:not(.gvdm-in),html.gvdm-js body.gvdp-visionnage .card:not(.gvdm-in),html.gvdm-js body.gvdp-portail .p-hero-in>*:not(.gvdm-in),html.gvdm-js body.gvdp-portail .p-stat:not(.gvdm-in),html.gvdm-js body.gvdp-portail .p-validation-alert:not(.gvdm-in),html.gvdm-js body.gvdp-portail .p-section>*:not(.p-grid):not(.gvdm-in),html.gvdm-js body.gvdp-portail .p-card:not(.gvdm-in),html.gvdm-js body.gvdp-transfert .hero>*:not(.gvdm-in),html.gvdm-js body.gvdp-transfert .drop:not(.gvdm-in),html.gvdm-js body.gvdp-transfert .sentFile:not(.gvdm-in),html.gvdm-js body.gvdp-transfert .foot:not(.gvdm-in),html.gvdm-js body.gvdp-livrables .top:not(.gvdm-in),html.gvdm-js body.gvdp-livrables .file:not(.gvdm-in),html.gvdm-js body.gvdp-livrables .card:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard section.hero:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .stat:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .taskStrip:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .toolbar:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .clientCard:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .clientHead:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .clientCoverHero:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .prodCard:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .infoCard:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .settingsCard:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .versionCard:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .videoSeries:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .activityCard:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard .galleryAdminRow:not(.gvdm-in),html.gvdm-js body.gvdp-dashboard section.wide:not(.gvdm-in){opacity:0;transform:translate3d(0,26px,0) scale(.985);filter:none;animation:gvdm-failsafe 0s 2.5s forwards}
@keyframes gvdm-failsafe{to{opacity:1;transform:none}}
html.gvdm-js body.gvdp-galerie .gx-hero-in>*.gvdm-in,html.gvdm-js body.gvdp-galerie .gx-head>*.gvdm-in,html.gvdm-js body.gvdp-galerie .gx-screen.gvdm-in,html.gvdm-js body.gvdp-galerie .gx-list.gvdm-in,html.gvdm-js body.gvdp-galerie .gx-list .w-film.gvdm-in,html.gvdm-js body.gvdp-galerie .gx-cta>*.gvdm-in,html.gvdm-js body.gvdp-portail .px-hello>*.gvdm-in,html.gvdm-js body.gvdp-portail .px-visual.gvdm-in,html.gvdm-js body.gvdp-portail .px-stats .p-stat.gvdm-in,html.gvdm-js body.gvdp-portail .px-alert.gvdm-in,html.gvdm-js body.gvdp-portail .px-head.gvdm-in,html.gvdm-js body.gvdp-portail .px-card.gvdm-in,html.gvdm-js body.gvdp-dashboard .dx-panel.gvdm-in,html.gvdm-js body.gvdp-dashboard .dx-section-title.gvdm-in,html.gvdm-js body.gvdp-dashboard .projecthero.gvdm-in,html.gvdm-js body.gvdp-dashboard .pendingCommentsCard.gvdm-in,html.gvdm-js body.gvdp-dashboard .progressCard.gvdm-in,html.gvdm-js .gvd-premium .gvd-pv2-hero-copy>*.gvdm-in,html.gvdm-js .gvd-premium .gvd-pv2-meta>div.gvdm-in,html.gvdm-js .gvd-premium .gvd-private-note.gvdm-in,html.gvdm-js .gvd-premium .gvd-pv2-progress.gvdm-in,html.gvdm-js .gvd-premium .gvd-pv2-stage.gvdm-in,html.gvdm-js .gvd-premium .gvd-current.gvdm-in,html.gvdm-js .gvd-premium .gvd-checklist>div.gvdm-in,html.gvdm-js .gvd-premium .gvd-final-validation.gvdm-in,html.gvdm-js .gvd-premium .gvd-client-notifications.gvdm-in,html.gvdm-js .gvd-premium details.gvd-history.gvdm-in,html.gvdm-js .gvd-premium details.gvd-shoot-docs.gvdm-in,html.gvdm-js .gvd-premium .gvd-video-review.gvdm-in,html.gvdm-js .gvd-premium .gvd-video-type-tabs>button.gvdm-in,html.gvdm-js .gvd-premium .gvd-bottom>.gvd-box.gvdm-in,html.gvdm-js .gvd-premium .gvd-deliverable-card.gvdm-in,html.gvdm-js .gvd-premium .gvd-resource-card.gvdm-in,html.gvdm-js .gvd-premium .gvd-info-card.gvdm-in,html.gvdm-js .gvd-premium .gvd-contact.gvdm-in,html.gvdm-js .gvd-premium .gvd-delivered-cta.gvdm-in,html.gvdm-js body.gvdp-galerie .w-intro>*.gvdm-in,html.gvdm-js body.gvdp-galerie .w-heading>*.gvdm-in,html.gvdm-js body.gvdp-galerie .w-player-shell.gvdm-in,html.gvdm-js body.gvdp-galerie .w-now.gvdm-in,html.gvdm-js body.gvdp-galerie .w-films>*.gvdm-in,html.gvdm-js body.gvdp-galerie .w-cta.gvdm-in,html.gvdm-js body.gvdp-visionnage .hero>*.gvdm-in,html.gvdm-js body.gvdp-visionnage .card.gvdm-in,html.gvdm-js body.gvdp-portail .p-hero-in>*.gvdm-in,html.gvdm-js body.gvdp-portail .p-stat.gvdm-in,html.gvdm-js body.gvdp-portail .p-validation-alert.gvdm-in,html.gvdm-js body.gvdp-portail .p-section>*:not(.p-grid).gvdm-in,html.gvdm-js body.gvdp-portail .p-card.gvdm-in,html.gvdm-js body.gvdp-transfert .hero>*.gvdm-in,html.gvdm-js body.gvdp-transfert .drop.gvdm-in,html.gvdm-js body.gvdp-transfert .sentFile.gvdm-in,html.gvdm-js body.gvdp-transfert .foot.gvdm-in,html.gvdm-js body.gvdp-livrables .top.gvdm-in,html.gvdm-js body.gvdp-livrables .file.gvdm-in,html.gvdm-js body.gvdp-livrables .card.gvdm-in,html.gvdm-js body.gvdp-dashboard section.hero.gvdm-in,html.gvdm-js body.gvdp-dashboard .stat.gvdm-in,html.gvdm-js body.gvdp-dashboard .taskStrip.gvdm-in,html.gvdm-js body.gvdp-dashboard .toolbar.gvdm-in,html.gvdm-js body.gvdp-dashboard .clientCard.gvdm-in,html.gvdm-js body.gvdp-dashboard .clientHead.gvdm-in,html.gvdm-js body.gvdp-dashboard .clientCoverHero.gvdm-in,html.gvdm-js body.gvdp-dashboard .prodCard.gvdm-in,html.gvdm-js body.gvdp-dashboard .infoCard.gvdm-in,html.gvdm-js body.gvdp-dashboard .settingsCard.gvdm-in,html.gvdm-js body.gvdp-dashboard .versionCard.gvdm-in,html.gvdm-js body.gvdp-dashboard .videoSeries.gvdm-in,html.gvdm-js body.gvdp-dashboard .activityCard.gvdm-in,html.gvdm-js body.gvdp-dashboard .galleryAdminRow.gvdm-in,html.gvdm-js body.gvdp-dashboard section.wide.gvdm-in{animation:gvdm-rise .9s cubic-bezier(.16,1,.3,1) var(--gvdm-d,0ms) both}
@keyframes gvdm-rise{from{opacity:0;transform:translate3d(0,26px,0) scale(.985)}to{opacity:1;transform:none}}

/* Titres : les mots montent un par un */
.gvdm-w{display:inline-block;overflow:hidden;vertical-align:bottom;padding-bottom:.08em;margin-bottom:-.08em}
.gvdm-w>span{display:inline-block;animation:gvdm-word 1.1s cubic-bezier(.16,1,.3,1) var(--gvdm-d,0ms) both}
@keyframes gvdm-word{from{transform:translate3d(0,105%,0) rotate(2deg)}to{transform:none}}

@media (prefers-reduced-motion:no-preference){
/* Couvertures : lent zoom cinéma (effet Ken Burns) */
:is(#gvd-client-tracking-page,body) .gvd-premium .gvd-pv2-hero{isolation:isolate}
:is(#gvd-client-tracking-page,body) .gvd-premium .gvd-pv2-hero:after{content:""!important;display:block!important;position:absolute!important;inset:0;z-index:-1;background:inherit;animation:gvdm-kb 26s ease-in-out infinite alternate;transform-origin:60% 40%}
body.gvdp-galerie .w-hero:before,body.gvdp-portail .p-hero:before{content:"";position:absolute;inset:0;background:inherit;animation:gvdm-kb 26s ease-in-out infinite alternate;transform-origin:55% 45%}
@keyframes gvdm-kb{from{transform:scale(1)}to{transform:scale(1.09) translate3d(-1%,-1%,0)}}
/* Lumière qui suit la souris sur la couverture */
:is(#gvd-client-tracking-page,body) .gvd-premium .gvd-pv2-hero-inner:before{content:"";position:absolute;inset:-200px;pointer-events:none;background:radial-gradient(420px circle at var(--gvdm-x,70%) var(--gvdm-y,30%),rgba(255,255,255,.22),transparent 60%);opacity:var(--gvdm-o,0);transition:opacity .6s}
/* Barres de progression qui se remplissent */
:is(.gvd-pv2-bar i,.gvd-bar i,body.gvdp .p-bar i,body.gvdp-dashboard .bar i,body.gvdp-dashboard .dx-prog i b){animation:gvdm-fill 1.8s cubic-bezier(.16,1,.3,1) .35s both}
@keyframes gvdm-fill{from{width:0}}
/* Étape active : onde qui pulse autour de l'icône */
:is(#gvd-client-tracking-page,body) .gvd-premium .gvd-pv2-stage.is-active .gvd-pv2-ico:before{content:"";position:absolute;inset:-2px;border-radius:50%;border:1.5px solid #8C6A3F;animation:gvdm-ring 2.4s cubic-bezier(.2,.8,.2,1) infinite}
@keyframes gvdm-ring{0%{transform:scale(1);opacity:.8}100%{transform:scale(1.9);opacity:0}}
/* Sous-étapes qui s'allument l'une après l'autre */
html.gvdm-js .gvd-pv2-stage.gvdm-in li{animation:gvdm-li .6s cubic-bezier(.16,1,.3,1) both}
html.gvdm-js .gvd-pv2-stage.gvdm-in li:nth-child(2){animation-delay:.08s}html.gvdm-js .gvd-pv2-stage.gvdm-in li:nth-child(3){animation-delay:.16s}html.gvdm-js .gvd-pv2-stage.gvdm-in li:nth-child(4){animation-delay:.24s}html.gvdm-js .gvd-pv2-stage.gvdm-in li:nth-child(5){animation-delay:.32s}
@keyframes gvdm-li{from{opacity:0;transform:translateX(-10px)}}
/* Survols */
:is(#gvd-client-tracking-page,body) .gvd-premium :is(.gvd-deliverable-card,.gvd-info-card,.gvd-current,.gvd-bottom>.gvd-box,.gvd-contact),body.gvdp :is(.p-card,.clientCard,.versionCard,.w-film,.sentFile,.stat,.p-stat){transition:transform .45s cubic-bezier(.16,1,.3,1),box-shadow .45s ease,border-color .3s}
:is(#gvd-client-tracking-page,body) .gvd-premium :is(.gvd-deliverable-card,.gvd-info-card):hover,body.gvdp :is(.p-card,.clientCard,.versionCard,.w-film,.stat,.p-stat):hover{transform:translateY(-4px);box-shadow:0 22px 48px -26px rgba(22,21,20,.35)}
:is(#gvd-client-tracking-page,body) .gvd-premium .gvd-resource-card{transition:transform .35s cubic-bezier(.16,1,.3,1)}
:is(#gvd-client-tracking-page,body) .gvd-premium .gvd-resource-card:hover{transform:translateX(6px)}
:is(#gvd-client-tracking-page,body) .gvd-premium :is(a,button):not(.gvd-video-type-tabs button):active,body.gvdp :is(a,button):active{transform:scale(.97)}
:is(#gvd-client-tracking-page,body) .gvd-premium :is(.gvd-review-primary,.gvd-final-open,.gvd-deliverable-master-download,.gvd-contact-action a,.gvd-delivered-cta a):hover{transform:translateY(-2px);box-shadow:0 14px 30px -14px rgba(140,106,63,.6)}
/* Image des vidéos : léger zoom au survol */
body.gvdp :is(.w-film-thumb,.versionThumb,.p-cover,.clientCover){overflow:hidden}
body.gvdp :is(.w-film,.versionCard,.p-card,.clientCard):hover :is(.w-film-thumb,.versionThumb,.p-cover,.clientCover){background-size:110% auto}
:is(#gvd-client-tracking-page,body) .gvd-premium .gvd-video-type-tabs button img,body.gvdp .w-film img{transition:transform .8s cubic-bezier(.16,1,.3,1)}
:is(#gvd-client-tracking-page,body) .gvd-premium .gvd-video-type-tabs button:hover img,body.gvdp .w-film:hover img{transform:scale(1.06)}
/* Zone de dépôt du transfert qui « respire » */
body.gvdp-transfert .zone{animation:gvdm-breathe 3.2s ease-in-out infinite}
@keyframes gvdm-breathe{0%,100%{border-color:rgba(140,106,63,.3)}50%{border-color:rgba(140,106,63,.85)}}
/* Barre de lecture de la page */
.gvdm-scroll{position:fixed;left:0;top:0;height:2px;width:100%;z-index:99999;background:#8C6A3F;transform-origin:0 50%;transform:scaleX(var(--gvdm-p,0));pointer-events:none}
body.admin-bar .gvdm-scroll{top:32px}
}
@media (prefers-reduced-motion:reduce){.gvdm-w>span{animation:none}}
