/* Tim Renov — animations (respecte prefers-reduced-motion) */
@media (prefers-reduced-motion: no-preference){
:root{--ease-out:cubic-bezier(.22,1,.36,1)}
@keyframes tr-up{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
@keyframes tr-down{from{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:none}}
@keyframes tr-arch{from{opacity:0;transform:translateY(40px) scale(.96);clip-path:inset(18% 0 0 0 round 180px 180px 14px 14px)}to{opacity:1;transform:none;clip-path:inset(0 0 0 0 round 180px 180px 14px 14px)}}
@keyframes tr-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes tr-ring{0%,82%,100%{transform:rotate(0)}85%{transform:rotate(-14deg)}88%{transform:rotate(12deg)}91%{transform:rotate(-10deg)}94%{transform:rotate(6deg)}}
@keyframes tr-pulse{0%{box-shadow:0 0 0 0 #c77b4573}70%{box-shadow:0 0 0 14px #c77b4500}100%{box-shadow:0 0 0 0 #c77b4500}}
@keyframes tr-shine{from{transform:translateX(-120%) skewX(-20deg)}to{transform:translateX(320%) skewX(-20deg)}}

/* Header */
html[data-anim] .site-header{animation:tr-down .7s var(--ease-out) both;transition:box-shadow .3s,background-color .3s}
html[data-anim] .site-header[data-scrolled]{box-shadow:0 10px 30px #17263314}

/* Hero : entrée en cascade */
html[data-anim] :is(.hero-copy,.inner-hero,.detail-hero)>*{animation:tr-up .9s var(--ease-out) both}
html[data-anim] :is(.hero-copy,.inner-hero,.detail-hero)>*:nth-child(1){animation-delay:.15s}
html[data-anim] :is(.hero-copy,.inner-hero,.detail-hero)>*:nth-child(2){animation-delay:.27s}
html[data-anim] :is(.hero-copy,.inner-hero,.detail-hero)>*:nth-child(3){animation-delay:.39s}
html[data-anim] :is(.hero-copy,.inner-hero,.detail-hero)>*:nth-child(4){animation-delay:.51s}
html[data-anim] :is(.hero-copy,.inner-hero,.detail-hero)>*:nth-child(n+5){animation-delay:.63s}
html[data-anim] .trust-row>*{animation:tr-up .7s var(--ease-out) both}
html[data-anim] .trust-row>*:nth-child(1){animation-delay:.75s}
html[data-anim] .trust-row>*:nth-child(2){animation-delay:.85s}
html[data-anim] .trust-row>*:nth-child(3){animation-delay:.95s}
html[data-anim] .roof-visual{animation:tr-arch 1.2s .2s var(--ease-out) both;background-position:50% var(--tr-py,50%)}
html[data-anim] .visual-card{animation:tr-up .8s 1s var(--ease-out) both,tr-float 6s 2s ease-in-out infinite}

/* Révélation au scroll (attributs posés par anim.js, uniquement sous la ligne de flottaison) */
html[data-anim] [data-reveal]{opacity:0;transform:translateY(34px);transition:opacity .8s var(--ease-out),transform .8s var(--ease-out);transition-delay:var(--tr-d,0s)}
html[data-anim] [data-reveal][data-in]{opacity:1;transform:none}
html[data-anim] [data-reveal="zoom"]{transform:scale(.94)}
html[data-anim] [data-reveal="zoom"][data-in]{transform:none}

/* Cartes services */
.service-card{transition:transform .45s var(--ease-out),box-shadow .45s var(--ease-out)}
.service-card:hover{transform:translateY(-8px);box-shadow:0 26px 50px #0000003d}
.service-photo{overflow:hidden}
.service-photo img{transition:transform 1.1s var(--ease-out)}
.service-card:hover .service-photo img{transform:scale(1.07)}
.service-card a svg,.section-button svg,.primary-button svg{transition:transform .3s var(--ease-out)}
.service-card:hover a svg,.section-button:hover svg{transform:translateX(5px)}

/* Liens prestations (pages villes / services) */
.local-services>div>a,.cross-links a{transition:transform .35s var(--ease-out),border-color .35s,box-shadow .35s}
.local-services>div>a:hover,.cross-links a:hover{transform:translateY(-4px);border-color:var(--orange);box-shadow:0 14px 30px #1726331a}

/* Boutons : reflet + appel qui sonne */
.primary-button,.call-button{position:relative;overflow:hidden;transition:transform .25s var(--ease-out),filter .25s}
.primary-button:hover,.call-button:hover{transform:translateY(-2px);filter:brightness(1.08)}
.primary-button:before,.call-button:before{content:"";position:absolute;top:0;bottom:0;left:0;width:35%;background:linear-gradient(90deg,#fff0,#ffffff40,#fff0);transform:translateX(-120%) skewX(-20deg);pointer-events:none}
.primary-button:hover:before,.call-button:hover:before{animation:tr-shine .8s var(--ease-out)}
.call-button{animation:tr-pulse 2.6s 2s infinite}
.call-button svg,.phone-card .primary-button svg{animation:tr-ring 4s 2.5s infinite;transform-origin:50% 50%}

/* Galerie */
.future-gallery img,.home-carousel-image img{transition:transform .9s var(--ease-out)}
.future-gallery a:hover img,.future-gallery figure:hover img,.home-carousel-image:hover img{transform:scale(1.05)}
}
