/* GRENAT — grenat profond, rose, or. Playfair + Jost. Entrée par la porte, film épinglé, services sur crème, réservation WhatsApp. */
@font-face{font-family:"Playfair";src:url("../fonts/playfair.woff2") format("woff2");font-weight:400 900;font-display:swap}
@font-face{font-family:"Playfair";src:url("../fonts/playfair-italic.woff2") format("woff2");font-weight:400 900;font-style:italic;font-display:swap}
@font-face{font-family:"Jost";src:url("../fonts/jost.woff2") format("woff2");font-weight:100 900;font-display:swap}
:root{--wine:#5a0f1e;--wine2:#3d0914;--rose:#f3c7d3;--cream:#f4ede6;--gold:#d9b36a;--ink:#1c0b10;--fd:"Playfair",Georgia,serif;--ft:"Jost",system-ui,sans-serif;--pad:clamp(20px,4vw,64px)}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--wine);color:#fff;font:400 1.02rem/1.6 var(--ft);-webkit-font-smoothing:antialiased;overflow-x:clip}
body.locked{overflow:hidden}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
h1,h2,h3{font-family:var(--fd);font-weight:500;line-height:1;margin:0;letter-spacing:-.01em}
em{font-style:italic;font-weight:400;color:var(--rose)}
.kicker{font:500 .7rem/1 var(--ft);letter-spacing:.28em;text-transform:uppercase;opacity:.8;margin:0 0 16px}
.kicker--gold{color:var(--gold);opacity:1}
:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 24px;border-radius:999px;border:1px solid #fff;background:#fff;color:var(--wine);font:500 .82rem/1 var(--ft);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;transition:background .3s,color .3s,transform .3s}
.btn:hover{background:var(--rose);border-color:var(--rose);transform:translateY(-1px)}
.btn--sm{min-height:44px;padding:10px 20px;font-size:.74rem}
.cursor{position:fixed;left:0;top:0;width:10px;height:10px;border-radius:50%;background:var(--gold);pointer-events:none;z-index:200;transform:translate(-50%,-50%);mix-blend-mode:difference;display:none}
@media (hover:hover) and (pointer:fine){.cursor{display:block}}

/* Porte d'entrée */
.door{position:fixed;inset:0;z-index:100;background:#2a0610;overflow:hidden}
.door__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform-origin:var(--dx,50%) var(--dy,52%);will-change:transform}
.door__veil{position:absolute;inset:0;background:radial-gradient(ellipse 60% 60% at var(--dx,50%) var(--dy,52%),transparent 30%,rgba(42,6,16,.55) 100%);opacity:0;transition:opacity .8s}
.door__ui{position:absolute;inset:0;display:grid;place-items:center;align-content:end;gap:22px;padding-bottom:9vh;text-align:center}
.door__brand{margin:0;font:600 1.1rem/1 var(--ft);letter-spacing:.42em;text-shadow:0 2px 20px rgba(60,5,20,.6);display:grid;gap:8px}
.door__brand span{font:400 .64rem/1 var(--ft);letter-spacing:.3em;text-transform:uppercase;opacity:.85}
.door__btn{min-height:56px;padding:0 36px;border-radius:999px;border:1px solid rgba(255,255,255,.7);background:rgba(90,15,30,.4);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#fff;font:500 .82rem/1 var(--ft);letter-spacing:.3em;text-transform:uppercase;cursor:pointer;transition:background .3s,transform .3s}
.door__btn:hover{background:rgba(90,15,30,.7);transform:scale(1.04)}
.door.opening .door__veil{opacity:1}
.door.gone{display:none}

/* En-tête */
.hdr{position:fixed;inset:0 0 auto;z-index:60;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px var(--pad);opacity:0;transform:translateY(-10px);transition:opacity .8s .2s,transform .8s .2s}
.hdr.on{opacity:1;transform:none}
.hdr__logo{font:600 .95rem/1 var(--ft);letter-spacing:.36em;display:grid;gap:5px}
.hdr__logo span{font:400 .58rem/1 var(--ft);letter-spacing:.22em;text-transform:uppercase;opacity:.8}
.hdr__nav{display:none;gap:28px;font:500 .72rem/1 var(--ft);letter-spacing:.2em;text-transform:uppercase}
.hdr__nav a{padding:8px 0;border-bottom:1px solid transparent}.hdr__nav a:hover{border-color:#fff}
@media (min-width:900px){.hdr__nav{display:flex}}

/* Film épinglé */
.film{height:380vh;position:relative}
.film__pin{position:sticky;top:0;height:100svh;overflow:hidden;background:var(--wine2)}
.film__fig{position:absolute;inset:0;margin:0;opacity:0;will-change:opacity,transform}
.film__fig img{width:100%;height:100%;object-fit:cover;object-position:50% 30%}
.film__fig[data-fi="0"]{opacity:1}
.film__copy{position:absolute;left:var(--pad);right:var(--pad);z-index:2;opacity:0;pointer-events:none;will-change:opacity,transform}
.film__copy--a{top:50%;transform:translateY(-50%);max-width:620px;opacity:1}
.film__copy--b{right:var(--pad);left:auto;bottom:12vh;text-align:right}
.film__copy--c{top:50%;transform:translateY(-50%);text-align:center;display:grid;justify-items:center;gap:26px}
.film__t{font-size:clamp(3rem,7.6vw,7rem);text-shadow:0 2px 30px rgba(40,5,15,.45)}
.film__t .l{display:block;overflow:hidden}.film__t .l i{display:block;font-style:normal}
.film__t--s{font-size:clamp(2.4rem,5.6vw,5rem);position:relative}
.film__t--s small{display:block;font:italic 400 clamp(1rem,1.6vw,1.4rem)/1 var(--fd);color:var(--gold);margin-top:10px;letter-spacing:.02em}
.feat{position:relative;padding:22px 30px;background:rgba(40,5,15,.35);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:4px;min-width:260px}
.feat__frame{position:absolute;inset:-14px;border:1px solid rgba(217,179,106,.9);border-radius:6px;transform:scale(1.25);opacity:0;transition:transform .9s cubic-bezier(.2,.8,.2,1),opacity .9s}
.feat.on .feat__frame{transform:none;opacity:1}
.feat__t{margin:0;font:500 clamp(1.5rem,2.6vw,2.2rem)/1.1 var(--fd)}
.feat__m{margin:6px 0 0;font:500 .72rem/1 var(--ft);letter-spacing:.18em;text-transform:uppercase;color:var(--rose)}
.film__dots{position:absolute;right:var(--pad);top:50%;transform:translateY(-50%);list-style:none;margin:0;padding:0;display:grid;gap:10px;z-index:3}
.film__dots li{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.35);transition:background .3s,transform .3s}
.film__dots li.on{background:var(--gold);transform:scale(1.5)}
.film__hint{position:absolute;left:var(--pad);bottom:26px;margin:0;font:500 .66rem/1 var(--ft);letter-spacing:.3em;text-transform:uppercase;display:flex;align-items:center;gap:12px;z-index:3;transition:opacity .4s}
.film__hint span{width:1px;height:40px;background:#fff;animation:drop 1.8s ease-in-out infinite;transform-origin:top}
@keyframes drop{0%{transform:scaleY(0)}50%{transform:scaleY(1)}100%{transform:scaleY(0);transform-origin:bottom}}
@media (max-width:899px){.film{height:330vh}.film__copy--a{top:auto;bottom:12vh;transform:none}.film__copy--b{text-align:left;left:var(--pad)}.film__t{font-size:clamp(2.6rem,12vw,4rem)}.film__dots{display:none}.film__hint{display:none}}

/* Services */
.svc{position:relative;background:var(--cream);color:var(--ink);padding:clamp(80px,12vh,140px) var(--pad) clamp(60px,10vh,120px);overflow:clip}
.svc__bg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.svc__bg path{fill:none;stroke:var(--wine);stroke-width:46;stroke-linecap:round;opacity:.9;stroke-dasharray:1;stroke-dashoffset:1}
.svc__head{position:relative;text-align:center;margin-bottom:clamp(70px,12vh,140px)}
.svc__t{font-size:clamp(3.4rem,9vw,8rem);font-weight:400}
.svc__t small{display:block;font:italic 400 clamp(1.1rem,2vw,1.6rem)/1 var(--fd);color:var(--wine);margin-top:14px}
.sig{position:relative;max-width:1180px;margin:0 auto clamp(70px,12vh,140px)}
.sig .kicker{color:var(--wine);opacity:.75}
.sig__t{position:relative;z-index:2;display:inline-block;font-size:clamp(2.6rem,6vw,5.2rem);font-weight:400;margin-bottom:34px}
.sig__t::before{content:"";position:absolute;inset:-14px -40px -18px -40px;background:var(--cream,#f4ede6);filter:blur(22px);border-radius:50%;z-index:-1;opacity:.96}
.sig .kicker{position:relative;z-index:2;display:inline-block}
.sig .kicker::before{content:"";position:absolute;inset:-14px -30px;background:var(--cream);filter:blur(18px);border-radius:50%;z-index:-1;opacity:.95}
.sig__t small{font:italic 400 .36em/1 var(--fd);color:var(--wine);margin-left:.4em}
.sig__row{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,2.4vw,36px)}
.sig__c{position:relative;aspect-ratio:1;border-radius:50%;overflow:hidden;background:var(--wine2)}
.sig__c img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.8,.2,1)}
.sig__c:hover img{transform:scale(1.06)}
.sig__c b{position:absolute;left:50%;bottom:9%;transform:translateX(-50%);background:rgba(244,237,230,.92);color:var(--wine);font:500 .68rem/1 var(--ft);letter-spacing:.2em;text-transform:uppercase;padding:9px 14px;border-radius:999px;white-space:nowrap}
.sig__c:nth-child(2){transform:translateY(clamp(20px,5vw,70px))}
@media (max-width:640px){.sig__row{grid-template-columns:1fr 1fr}.sig__c:nth-child(3){grid-column:1/-1;max-width:60%;margin:0 auto}.sig__c:nth-child(2){transform:none}}
.price{position:relative;max-width:1180px;margin:0 auto;background:rgba(244,237,230,.86);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(90,15,30,.15);padding:clamp(28px,4vw,56px);display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(28px,5vw,80px)}
.price__col{margin:0;display:grid;align-content:start}
.price__col div{display:grid;grid-template-columns:1fr auto;align-items:baseline;padding:16px 0 14px;border-bottom:1px solid rgba(90,15,30,.18)}
.price__col dt{font:500 1.1rem/1.2 var(--ft)}
.price__col dd{margin:0;font:400 1.25rem/1 var(--fd);color:var(--wine)}
.price__col dd span{display:block;font:400 .78rem/1.3 var(--ft);color:#6b4a52;margin-top:4px;letter-spacing:.04em;text-align:right}
.price__note{grid-column:1/-1;margin:26px 0 0;font-size:.82rem;color:#6b4a52;letter-spacing:.04em;text-align:center}
@media (max-width:720px){.price{grid-template-columns:1fr}}

/* Réservation */
.book{position:relative;min-height:100svh;display:grid;grid-template-rows:auto auto 1fr auto;justify-items:center;text-align:center;padding-top:clamp(70px,12vh,120px);overflow:clip;background:radial-gradient(ellipse 80% 60% at 50% 100%,#7a1428,var(--wine) 60%)}
.book__t{font-size:clamp(4.4rem,15vw,15rem);font-weight:400;line-height:.86;letter-spacing:-.03em}
.book__t i{font-style:normal;color:var(--gold)}
.book__t small{display:block;font:italic 400 .18em/1 var(--fd);letter-spacing:.02em;margin-top:14px;color:var(--rose)}
.book__row{position:relative;display:grid;justify-items:center;margin-top:28px;z-index:2}
.switch{width:52px;height:30px;border-radius:999px;border:0;background:#fff;position:relative;cursor:pointer;box-shadow:0 10px 30px rgba(20,0,8,.35);transition:background .3s}
.switch span{position:absolute;top:4px;left:4px;width:22px;height:22px;border-radius:50%;background:var(--wine);transition:transform .35s cubic-bezier(.2,.8,.2,1),background .3s}
.switch[aria-pressed="true"]{background:#25d366}.switch[aria-pressed="true"] span{transform:translateX(22px);background:#fff}
.book__wire{width:1px;height:0;background:rgba(255,255,255,.75);transition:height .6s cubic-bezier(.2,.8,.2,1)}
.bubble{display:inline-flex;align-items:center;gap:10px;min-height:52px;padding:12px 22px;border-radius:999px;background:#fff;color:var(--ink);font:500 .95rem/1 var(--ft);box-shadow:0 20px 50px rgba(20,0,8,.4);opacity:0;transform:translateY(-14px) scale(.9);pointer-events:none;transition:opacity .5s,transform .6s cubic-bezier(.2,.8,.2,1)}
.bubble__tag{font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:#25d366}
.book__row.on .book__wire{height:64px}.book__row.on .bubble{opacity:1;transform:none;pointer-events:auto}
.book__img{width:min(100%,1100px);margin-top:-30px;mask-image:linear-gradient(#000 70%,transparent);-webkit-mask-image:linear-gradient(#000 70%,transparent)}
.foot{padding:20px var(--pad) 28px;font-size:.78rem;letter-spacing:.06em;opacity:.8;display:grid;gap:6px}
.foot p{margin:0}.foot a{border-bottom:1px solid currentColor}

[data-rv]{opacity:0;transform:translateY(22px);transition:opacity .9s cubic-bezier(.2,.8,.2,1),transform .9s cubic-bezier(.2,.8,.2,1)}
[data-rv].in{opacity:1;transform:none}
.sig__c[data-rv].in:nth-child(2){transform:translateY(clamp(20px,5vw,70px))}
@media (max-width:640px){.sig__c[data-rv].in:nth-child(2){transform:none}}
@media (prefers-reduced-motion:reduce){[data-rv]{opacity:1;transform:none;transition:none}.film__hint span{animation:none}}
