/* Micro-interactions discrètes de la page d’accueil */
.site-nav a{transition:color .2s ease,background-color .2s ease,transform .2s ease;}
.site-nav .nav-cta:hover{transform:translateY(-2px);background:#31007A;border-color:#31007A;}
.home-about>.option-photo img,.home-recap .option-photo img{transition:transform .55s cubic-bezier(.2,.7,.2,1);}
.home-about>.option-photo:hover img,.home-recap .option-photo:hover img{transform:scale(1.035);}
.home-about>div h2,.home-recap h2,.home-committee h2{transition:color .25s ease;}
.home-recap .edition-option{transition:transform .3s ease,box-shadow .3s ease;}
.home-recap .edition-option:hover{transform:translateY(-5px);box-shadow:0 20px 40px rgba(0,0,0,.2);}
.team-list .row-team{transition:background-color .25s ease,padding-left .25s ease;}
.team-list .row-team:hover{background:rgba(145,71,255,.06);padding-left:8px;}
.p3-main .proposal-photo img{animation:hero-photo-drift 18s ease-in-out infinite alternate;}
@keyframes hero-photo-drift{from{transform:scale(1.015)}to{transform:scale(1.055) translate3d(-.4%,.25%,0)}}
.motion-ready .scroll-reveal{opacity:0;transform:translate3d(0,24px,0);transition:opacity .7s ease var(--reveal-delay,0ms),transform .7s cubic-bezier(.2,.7,.2,1) var(--reveal-delay,0ms);}
.motion-ready .scroll-reveal.is-visible{opacity:1;transform:translate3d(0,0,0);}
@media(hover:none){.home-recap .edition-option:hover{transform:none;box-shadow:0 14px 34px rgba(0,0,0,.12)}.team-list .row-team:hover{padding-left:0;background:transparent}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.motion-ready .scroll-reveal{opacity:1;transform:none}}/* Au survol, le cadre photo grandit : l’image ne zoome pas à l’intérieur */
.home-about>.option-photo,.home-recap .option-photo{position:relative;z-index:0;transition:width .28s ease,height .28s ease,margin .28s ease,box-shadow .28s ease;}
.home-about>.option-photo img,.home-recap .option-photo img{transition:none;}
.home-about>.option-photo:hover,.home-recap .option-photo:hover{width:calc(100% + 12px);height:calc(100% + 12px);margin:-6px;z-index:3;box-shadow:0 12px 30px rgba(49,0,122,.2);}
.home-about>.option-photo:hover img,.home-recap .option-photo:hover img{transform:none;}/* Agrandissement du cadre photo animé de façon fluide, sans zoom interne */
.home-about>.option-photo,.home-recap .option-photo{transition:transform .42s cubic-bezier(.2,.7,.2,1),box-shadow .42s ease;}
.home-about>.option-photo:hover{width:auto;height:100%;margin:0;transform:scale(1.06);z-index:3;box-shadow:0 12px 30px rgba(49,0,122,.2);}
.home-recap .option-photo:hover{width:auto;height:178px;margin:0;transform:scale(1.06);z-index:3;box-shadow:0 12px 30px rgba(49,0,122,.2);}
.home-about>.option-photo:hover img,.home-recap .option-photo:hover img{transform:none;}
@media(max-width:760px){.home-recap .option-photo:hover{height:145px;}}/* Durée et courbe harmonisées pour tous les survols */
.site-nav a{transition:color .4s cubic-bezier(.22,1.2,.36,1),background-color .4s cubic-bezier(.22,1.2,.36,1),transform .4s cubic-bezier(.22,1.2,.36,1),border-color .4s cubic-bezier(.22,1.2,.36,1);}
.home-about>.option-photo,.home-recap .option-photo{transition:transform .4s cubic-bezier(.22,1.2,.36,1),box-shadow .4s cubic-bezier(.22,1.2,.36,1);}
.home-recap .edition-option{transition:transform .4s cubic-bezier(.22,1.2,.36,1),box-shadow .4s cubic-bezier(.22,1.2,.36,1);}
.team-list .row-team{transition:background-color .4s cubic-bezier(.22,1.2,.36,1),padding-left .4s cubic-bezier(.22,1.2,.36,1);}/* Les cartes Tournoi et Nouvelle LAN restent fixes au survol */
.home-recap .edition-option{transition:none;}
.home-recap .edition-option:hover{transform:none;box-shadow:0 14px 34px rgba(0,0,0,.12);}/* Apparition d’accueil au chargement : photo puis titre */
.p3-main .proposal-photo{animation:hero-photo-enter .95s cubic-bezier(.2,.7,.2,1) both;}
.p3-main .p3-copy{animation:hero-copy-enter .8s cubic-bezier(.2,.7,.2,1) .18s both;}
@keyframes hero-photo-enter{from{opacity:0;transform:translate3d(0,18px,0) scale(.99)}to{opacity:1;transform:translate3d(0,0,0) scale(1)}}
@keyframes hero-copy-enter{from{opacity:0;transform:translate3d(0,18px,0)}to{opacity:1;transform:translate3d(0,0,0)}}/* Apparition plus progressive du hero et décalage visible entre les éléments */
.p3-main .proposal-photo{animation:hero-photo-enter 1.5s cubic-bezier(.2,.7,.2,1) .12s both;}
.p3-main .p3-copy{animation:none;}
.p3-main .hero-title-line{display:block;opacity:0;animation:hero-copy-enter 1.05s cubic-bezier(.2,.7,.2,1) both;}
.p3-main .hero-title-line-one{-webkit-text-fill-color:#FFFFFF;animation-delay:.48s;}
.p3-main .hero-title-line-two{-webkit-text-fill-color:#9147FF;animation-delay:1.05s;}
.motion-ready .scroll-reveal{transition:opacity .95s ease var(--reveal-delay,0ms),transform .95s cubic-bezier(.2,.7,.2,1) var(--reveal-delay,0ms);}/* Le titre se dévoile par fondu d’opacité, ligne par ligne */
.p3-main .hero-title-line{opacity:1;transform:none;animation:none;}
html.hero-fade-ready .p3-main .hero-title-line{opacity:0;transition:opacity 1.8s ease;}
html.hero-fade-ready .p3-main .hero-title-line.hero-line-visible{opacity:1;}/* Fondu d’opacité autonome et progressif du titre d’accueil */
.p3-main .hero-title-line{opacity:0;transform:none;animation:hero-text-fade 2.4s ease-in-out both;}
.p3-main .hero-title-line-one{-webkit-text-fill-color:#FFFFFF;animation-delay:.25s;}
.p3-main .hero-title-line-two{-webkit-text-fill-color:#9147FF;animation-delay:.85s;}
@keyframes hero-text-fade{from{opacity:0}to{opacity:1}}/* Garder les fondus explicitement demandés, même si le système réduit les animations */
@media(prefers-reduced-motion:reduce){
  .p3-main .hero-title-line{animation-duration:2.4s!important;}
  .p3-main .hero-title-line-one{animation-delay:.25s!important;}
  .p3-main .hero-title-line-two{animation-delay:.85s!important;}
  .motion-ready .scroll-reveal{opacity:0!important;transform:translate3d(0,24px,0)!important;transition-duration:.95s!important;}
  .motion-ready .scroll-reveal.is-visible{opacity:1!important;transform:translate3d(0,0,0)!important;}
}