/* ——— Rideau de transition entre sections ——— */
.fx-curtain{position:fixed;inset:0;z-index:1500;pointer-events:none;display:grid;place-items:center;background:linear-gradient(160deg,oklch(.2036 calc(var(--ol-c-sang)*.579) var(--ol-h-sang)),oklch(.2793 calc(var(--ol-c-sang)*.986) calc(var(--ol-h-sang) + 5.5)) 55%,oklch(.1738 calc(var(--ol-c-sang)*.354) var(--ol-h-sang)));clip-path:inset(100% 0 0 0);transition:clip-path .55s cubic-bezier(.65,0,.35,1)}
.fx-curtain.mid{clip-path:inset(0 0 0 0)}
.fx-curtain span{width:44px;display:block;opacity:0;transition:opacity .25s}
.fx-curtain span svg{width:100%;height:auto;display:block}
.fx-curtain.mid span{opacity:.9}
/* ——— Sortie du préloader en rideau levé ——— */
.preloader{transition:clip-path 1s cubic-bezier(.65,0,.35,1) .15s,visibility 0s 1.2s !important;clip-path:inset(0 0 0 0)}
.preloader.hidden{clip-path:inset(0 0 100% 0);opacity:1 !important}
/* ——— Allumage séquentiel du hero (spots de galerie) ——— */
.hero-content > *{opacity:0;transform:translateY(16px);filter:brightness(.55);transition:opacity 1.1s var(--ease),transform 1.1s var(--ease),filter 1.4s var(--ease)}
.hero-content.lit > *{opacity:1;transform:translateY(0);filter:brightness(1)}
.hero-content.lit > *:nth-child(1){transition-delay:.05s}
.hero-content.lit > *:nth-child(2){transition-delay:.22s}
.hero-content.lit > *:nth-child(3){transition-delay:.42s}
.hero-content.lit > *:nth-child(4){transition-delay:.62s}
/* ——— Balayage lumineux unique sur les images au premier affichage ——— */
.property-media::before,.destination-media::before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(100deg,transparent 38%,oklch(.9418 calc(var(--ol-c-pat)*.225) var(--ol-h-pat) / .28) 50%,transparent 62%);transform:translateX(-140%)}
.first-load .property-card.in .property-media::before{animation:sweepOnce 1.4s var(--ease) .3s forwards}
.destination-card.in .destination-media::before{animation:sweepOnce 1.5s var(--ease) .25s forwards}
@keyframes sweepOnce{to{transform:translateX(140%)}}
/* ——— Lumière qui suit le curseur dans les cartes ——— */
.property-card::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .5s;background:radial-gradient(280px circle at var(--mx,50%) var(--my,50%),oklch(.6789 calc(var(--ol-c-pat)*1.1) var(--ol-h-pat) / .14),transparent 65%)}
.property-card:hover::after{opacity:1}
/* ——— Filet d'or qui se dessine sous les titres de sections ——— */
.section-light h2{position:relative;display:inline-block}
.section-light h2::after{content:"";position:absolute;left:0;bottom:-12px;width:0;height:1px;background:var(--bronze);transition:width 1.2s var(--ease) .5s}
.section-head.in h2::after,.po-body.in h2::after{width:58px}
.po-body h2{position:relative;display:inline-block}
.po-body h2::after{content:"";position:absolute;left:0;bottom:-12px;width:0;height:1px;background:var(--gold-soft);transition:width 1.2s var(--ease) .5s}
/* ——— Bande philosophie : halo qui respire ——— */
.philosophy{position:relative;overflow:hidden}
.philosophy::before{content:"";position:absolute;top:-60%;left:55%;width:44vw;height:220%;pointer-events:none;mix-blend-mode:screen;background:radial-gradient(closest-side,oklch(.7581 calc(var(--ol-c-pat)*.907) var(--ol-h-pat) / .1),transparent 70%);animation:philoGlow 12s var(--ease) infinite alternate}
@keyframes philoGlow{from{opacity:.5;transform:translateX(-6%)}to{opacity:1;transform:translateX(8%)}}
.philosophy-grid{position:relative;z-index:1}
/* ——— Destinations : nom qui s'espaces au survol ——— */
.destination-copy h3{transition:letter-spacing .6s var(--ease),color .4s}
.destination-card:hover .destination-copy h3{letter-spacing:.14em;color:#fff}
/* ——— Fiche : ouverture théâtrale ——— */
dialog.pd[open]{animation:pdIn .65s cubic-bezier(.65,0,.35,1)}
@keyframes pdIn{from{opacity:0;transform:translateY(26px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
dialog.pd[open]::backdrop{animation:bdIn .6s ease}
@keyframes bdIn{from{opacity:0}to{opacity:1}}
dialog.pd[open] .pd-media img{animation:pdImg 1.2s var(--ease) both}
dialog.pd[open] .pd-media img:last-child{animation-delay:.15s}
@keyframes pdImg{from{opacity:0;transform:scale(1.06)}to{opacity:1;transform:scale(1)}}
dialog.pd[open] .pd-body > *{animation:pdTxt .9s var(--ease) both}
dialog.pd[open] .pd-body > *:nth-child(2){animation-delay:.1s}
dialog.pd[open] .pd-body > *:nth-child(3){animation-delay:.18s}
dialog.pd[open] .pd-body > *:nth-child(4){animation-delay:.26s}
dialog.pd[open] .pd-body > *:nth-child(5){animation-delay:.34s}
dialog.pd[open] .pd-body > *:nth-child(6){animation-delay:.42s}
dialog.pd[open] .pd-body > *:nth-child(7){animation-delay:.5s}
@keyframes pdTxt{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
/* ——— Cœur favori : battement doré ——— */
.property-fav.pop{animation:favPop .55s cubic-bezier(.65,0,.35,1)}
@keyframes favPop{0%{transform:scale(1)}40%{transform:scale(1.4);color:var(--gold-soft)}100%{transform:scale(1)}}
/* ——— Rail : changement de section lumineux ——— */
.rail a{transition:color .4s,text-shadow .4s}
.rail a.on{text-shadow:0 0 10px oklch(.7581 calc(var(--ol-c-pat)*.907) var(--ol-h-pat) / .7)}
/* ——— Boutons des filtres au focus ——— */
.search-field select:focus{box-shadow:0 8px 22px -12px oklch(.7581 calc(var(--ol-c-pat)*.907) var(--ol-h-pat) / .35)}
@media (prefers-reduced-motion:reduce){
.fx-curtain,.philosophy::before{display:none !important}
.hero-content > *{opacity:1 !important;transform:none !important;filter:none !important}
.first-load .property-card.in .property-media::before,.destination-card.in::before{animation:none !important}
dialog.pd[open],dialog.pd[open] .pd-media img,dialog.pd[open] .pd-body > *{animation:none !important}
.section-light h2::after,.po-body h2::after{transition:none !important}
}
