/* ORNA — animations fluides */
:root{--orna-ease:cubic-bezier(.16,1,.3,1);--orna-ease-soft:cubic-bezier(.22,.61,.36,1)}
html{scroll-behavior:smooth}
html,body{overflow-x:clip}
.orna-parallax-frame{overflow:hidden}
/* Apparition au scroll */
html body .orna-reveal{opacity:0;transform:var(--orna-from,translate3d(0,28px,0));transform-origin:var(--orna-origin,50% 50%);filter:blur(var(--orna-blur,4px));transition:opacity .85s var(--orna-ease),transform var(--orna-dur,1.1s) var(--orna-ease),filter .85s var(--orna-ease),letter-spacing 1.4s var(--orna-ease);transition-delay:calc(var(--orna-delay,0ms) * 1.2 + var(--orna-stagger,0ms));will-change:opacity,transform}
html body .orna-reveal.orna-visible{opacity:1;transform:none;filter:none}
html body img.orna-reveal{transform:var(--orna-img-from,scale(1.06));clip-path:var(--orna-clip,inset(10% 0 0 0));filter:none;transition:opacity 1.2s var(--orna-ease),transform 1.8s var(--orna-ease),clip-path 1.4s var(--orna-ease)}
html body img.orna-reveal.orna-visible{transform:none;clip-path:inset(0 0 0 0)}
html body h1.orna-reveal{transform:translate3d(0,22px,0);letter-spacing:.04em;transition-property:opacity,transform,filter,letter-spacing;transition-duration:1.2s,1.4s,1.2s,1.6s}
html body h1.orna-reveal.orna-visible{letter-spacing:normal}
/* Transition entre les pages */
#main.orna-page-enter{animation:ornaPageIn .8s var(--orna-ease) both}
@keyframes ornaPageIn{from{opacity:0;transform:translate3d(0,14px,0)}to{opacity:1;transform:none}}
/* Barre de progression de lecture */
.orna-progress{position:fixed;top:0;left:0;height:2px;width:100%;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,#b08d57,#e2c48a);z-index:1000;pointer-events:none}
/* En-tête : ombre douce après le scroll */
#header{transition:box-shadow .5s var(--orna-ease-soft),background-color .5s var(--orna-ease-soft)}
body.orna-scrolled #header{box-shadow:0 8px 30px -18px rgba(31,27,24,.35)}
/* Boutons et liens */
.button,.btn,button,.home-return{transition:transform .45s var(--orna-ease),box-shadow .45s var(--orna-ease),background-color .35s ease,color .35s ease}
.button:hover,.btn:hover,.home-return:hover{transform:translateY(-2px);box-shadow:0 12px 26px -14px rgba(31,27,24,.45)}
.button:active,.btn:active{transform:translateY(0) scale(.98)}
/* Images : léger zoom au survol */
.home-story-image,.history-photo{overflow:hidden}
.home-story-image img,.history-photo img{transition:transform 1.4s var(--orna-ease)}
.home-story-image:hover img,.history-photo:hover img{transform:scale(1.04)}
/* Parallaxe */
[data-orna-parallax]{will-change:transform}
/* Changement d'image */
img.orna-img-swap{animation:ornaImgSwap .9s var(--orna-ease) both}
@keyframes ornaImgSwap{0%{opacity:0;transform:scale(1.05);filter:blur(8px) saturate(.85)}60%{filter:blur(0) saturate(1)}100%{opacity:1;transform:scale(1);filter:none}}
.orna-img-frame{overflow:hidden}
/* fin image */
/* Images premium */
.orna-pframe{overflow:hidden;isolation:isolate;background:linear-gradient(110deg,#ede6dc 30%,#f7f2ea 50%,#ede6dc 70%) 0 0/250% 100%;animation:ornaShimmer 1.6s linear infinite}
.orna-pframe.is-loaded{animation:none;background:transparent}
.orna-pframe.orna-rel{position:relative}
@keyframes ornaShimmer{to{background-position:-150% 0}}
.orna-pframe img{transition:transform 1.6s var(--orna-ease),filter .8s ease}
/* Rideau à l'apparition */
.orna-pframe::before{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:#f5f1eb;transform-origin:var(--orna-curtain-origin,50% 0);transform:var(--orna-curtain,scaleY(1));transition:transform 1.25s cubic-bezier(.77,0,.18,1)}
.orna-pframe::before{box-shadow:inset 0 -2px 0 #c9a46a}
.orna-pframe.orna-in::before{transform:var(--orna-curtain-out,scaleY(0))}
/* Reflet lumineux au survol */
.orna-pframe::after{content:"";position:absolute;inset:-20% -60%;z-index:2;pointer-events:none;background:linear-gradient(105deg,transparent 40%,rgba(255,248,235,.38) 50%,transparent 60%);transform:translateX(-70%);opacity:0}
.orna-pframe:hover::after{animation:ornaShine 1.3s var(--orna-ease-soft) forwards}
@keyframes ornaShine{0%{opacity:1;transform:translateX(-70%)}100%{opacity:1;transform:translateX(70%)}}
html body .orna-pframe:hover img{transform:scale(1.06);filter:saturate(1.08) contrast(1.03)}
/* Inclinaison 3D */
.orna-tilt{transition:transform .9s var(--orna-ease),box-shadow .9s var(--orna-ease);will-change:transform}
.orna-tilt:hover{box-shadow:0 30px 60px -30px rgba(31,27,24,.45)}
/* fin premium */

/* Animations par section */
/* Citation : zoom depuis un flou profond */
.quote{--orna-from:scale(.92);--orna-blur:14px;--orna-dur:1.6s}
.quote .orna-reveal{letter-spacing:.06em}
.quote .orna-reveal.orna-visible{letter-spacing:normal}
/* Catalogue : cartes qui se redressent en 3D, en cascade */
.home-catalog{perspective:1200px}
.home-catalog{--orna-from:perspective(1200px) rotateX(18deg) translate3d(0,60px,0);--orna-origin:50% 100%;--orna-img-from:scale(1.15);--orna-clip:inset(0 0 100% 0);--orna-curtain:scaleY(1);--orna-curtain-origin:50% 100%;--orna-dur:1.3s}
/* Parfumeuses : portraits qui éclosent */
.home-perfumers{--orna-from:scale(.6);--orna-blur:6px;--orna-img-from:scale(.7) rotate(-6deg);--orna-clip:circle(0% at 50% 50%);--orna-dur:1.2s}
.home-perfumers img.orna-reveal.orna-visible{clip-path:circle(75% at 50% 50%)}
/* Composition : le texte glisse depuis la gauche, l'image se dévoile de droite à gauche */
.composition-reference{--orna-from:translate3d(-70px,0,0);--orna-blur:3px;--orna-curtain:scaleX(1);--orna-curtain-origin:0 50%;--orna-curtain-out:scaleX(0);--orna-img-from:scale(1.2)}
.composition-reference .orna-pframe::before{transform-origin:0 50%}
/* Histoire : arrivée depuis la droite, rideau horizontal */
.home-story{--orna-from:translate3d(70px,0,0);--orna-blur:3px;--orna-clip:inset(0 0 0 100%);--orna-img-from:scale(1.12);--orna-curtain:scaleX(1);--orna-curtain-origin:100% 50%;--orna-curtain-out:scaleX(0)}
/* Invitation contact : lettres qui se resserrent */
.contact-invitation{--orna-from:translate3d(0,16px,0);--orna-blur:8px;--orna-dur:1.5s}
.contact-invitation h2.orna-reveal,.contact-invitation h1.orna-reveal{letter-spacing:.18em}
.contact-invitation h2.orna-reveal.orna-visible,.contact-invitation h1.orna-reveal.orna-visible{letter-spacing:normal}
/* Page produit */
.rf-product{--orna-from:translate3d(0,22px,0)}
.rf-product .rf-stage,.rf-product .gallery-main{--orna-from:translate3d(-50px,0,0) scale(.97);--orna-curtain:scaleX(1);--orna-curtain-origin:100% 50%;--orna-curtain-out:scaleX(0)}
.rf-notes{--orna-from:translate3d(0,40px,0) scale(.9);--orna-dur:1.2s}
.rf-notes img.orna-reveal{--orna-img-from:rotate(-25deg) scale(.6);--orna-clip:circle(0% at 50% 50%)}
.rf-notes img.orna-reveal.orna-visible{clip-path:circle(75% at 50% 50%)}
.rf-story{--orna-from:scale(1.08);--orna-blur:10px;--orna-dur:1.8s}
.rf-product details{--orna-from:translate3d(40px,0,0)}
/* Notre histoire : alternance gauche / droite */
.history-intro{--orna-from:translate3d(0,40px,0);--orna-blur:10px;--orna-dur:1.5s}
.history-page > section:nth-of-type(odd){--orna-from:translate3d(-60px,0,0);--orna-curtain:scaleX(1);--orna-curtain-origin:0 50%;--orna-curtain-out:scaleX(0)}
.history-page > section:nth-of-type(even){--orna-from:translate3d(60px,0,0);--orna-curtain:scaleX(1);--orna-curtain-origin:100% 50%;--orna-curtain-out:scaleX(0)}
/* Contact : blocs qui basculent doucement */
.contact-grid{--orna-from:perspective(900px) rotateY(-12deg) translate3d(30px,0,0);--orna-origin:0 50%;--orna-dur:1.3s}
/* Titres de page : apparition en flou */
.page-title{--orna-from:scale(.96);--orna-blur:12px;--orna-dur:1.4s}
/* fin sections */
@media (prefers-reduced-motion:reduce){
 .orna-pframe::before{display:none}
 .orna-pframe::after{display:none}
 .orna-pframe img,.orna-tilt{transition:none!important;transform:none!important}
 img.orna-img-swap{animation:none}
 html{scroll-behavior:auto}
 html body .orna-reveal,html body img.orna-reveal{opacity:1!important;transform:none!important;filter:none!important;clip-path:none!important;transition:none!important}
 #main.orna-page-enter{animation:none}
 .orna-progress{display:none}
 [data-orna-parallax]{transform:none!important}
}