@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600&family=Italiana&display=swap');

:root{
  --bg:#f2eee6;--paper:#fbf8f2;--ink:#1f1c18;--muted:#746d64;--deep:#1e2822;--wine:#6f2c2a;--line:rgba(31,28,24,.16);
  --serif:'Italiana',Georgia,serif;--sans:'DM Sans',Arial,sans-serif;--ease:cubic-bezier(.2,.75,.2,1);
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-weight:300;overflow-x:hidden}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}img{max-width:100%;display:block}
body.is-loading{overflow:hidden}

/* TRANSITIONS */
.page-transition{position:fixed;inset:0;background:var(--deep);z-index:9998;transform:scaleY(0);transform-origin:bottom;pointer-events:none}.page-transition.in{animation:pageIn .72s var(--ease) forwards}.page-transition.out{animation:pageOut .72s var(--ease) forwards}@keyframes pageIn{to{transform:scaleY(1)}}@keyframes pageOut{from{transform:scaleY(1)}to{transform:scaleY(0);transform-origin:top}}
.reveal{opacity:0;transform:translateY(34px);transition:opacity .9s var(--ease),transform .9s var(--ease)}.reveal.is-visible{opacity:1;transform:none}.reveal-left{opacity:0;transform:translateX(-45px);transition:all 1s var(--ease)}.reveal-left.is-visible{opacity:1;transform:none}.reveal-right{opacity:0;transform:translateX(45px);transition:all 1s var(--ease)}.reveal-right.is-visible{opacity:1;transform:none}.clip-reveal{overflow:hidden}.clip-reveal>*{transform:translateY(115%);transition:transform 1s var(--ease)}.clip-reveal.is-visible>*{transform:none}

/* HEADER */
.header{height:86px;display:flex;align-items:center;justify-content:space-between;padding:0 4vw;position:fixed;top:0;left:0;right:0;z-index:1000;border-bottom:1px solid var(--line);background:rgba(242,238,230,.86);backdrop-filter:blur(14px);transition:.35s}.header.transparent{background:transparent;border-color:rgba(255,255,255,.2);color:#fff}.header.scrolled{background:rgba(242,238,230,.94);color:var(--ink);border-color:var(--line)}.brand{font-family:var(--serif);font-size:1.35rem;letter-spacing:.14em}.nav{display:flex;gap:2rem;align-items:center;font-size:.82rem;letter-spacing:.08em;text-transform:uppercase}.nav a{position:relative}.nav a:not(.nav-cta):after{content:'';position:absolute;left:0;right:100%;bottom:-7px;height:1px;background:currentColor;transition:right .35s}.nav a:hover:after,.nav a.active:after{right:0}.nav-cta{border:1px solid currentColor;padding:.85rem 1.15rem}.menu-btn{display:none;background:none;border:0;color:inherit;width:40px;height:40px}.menu-btn span{display:block;height:1px;background:currentColor;margin:7px 0}

/* INTRO CURTAIN HOME */
.intro-curtain{position:fixed;inset:0;z-index:10000;background:#1d261f;color:#fff;display:grid;place-items:center;transform-origin:top;animation:curtainLift 1.25s var(--ease) 1.25s forwards}.intro-inner{text-align:center;animation:introText .9s ease both}.intro-inner h1{font-family:var(--serif);font-weight:400;font-size:clamp(3.5rem,10vw,8rem);margin:.3rem 0;letter-spacing:.08em}.intro-inner .kicker,.intro-inner .sub{font-size:.72rem;letter-spacing:.24em;text-transform:uppercase}.intro-inner .line{display:block;width:0;height:1px;background:#fff;margin:1rem auto;animation:lineGrow .8s ease .35s forwards}@keyframes introText{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes lineGrow{to{width:120px}}@keyframes curtainLift{to{transform:translateY(-100%)}}

/* COMMON */
main{min-height:70vh}.eyebrow,.section-index{font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;font-weight:500}.display{font-family:var(--serif);font-size:clamp(2.8rem,6vw,6rem);line-height:.98;font-weight:400;margin:.5rem 0 1.2rem}.copy{font-size:1.05rem;line-height:1.85;color:var(--muted);max-width:620px}.section{padding:9rem 7vw}.grid-2{display:grid;grid-template-columns:1.05fr .95fr;gap:8vw;align-items:center}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:2rem;margin-bottom:3rem}.text-link{display:inline-block;margin-top:1.2rem;border-bottom:1px solid currentColor;padding-bottom:.2rem}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:.9rem 1.35rem;border:1px solid transparent;text-transform:uppercase;letter-spacing:.09em;font-size:.72rem;transition:transform .3s,background .3s,color .3s}.btn:hover{transform:translateY(-2px)}.btn-dark{background:var(--deep);color:#fff}.btn-light{background:#fff;color:var(--ink)}.btn-outline{border-color:currentColor}.btn-full{width:100%}.actions{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:2rem}.media{background:linear-gradient(135deg,#cfc5b6,#958d81);min-height:360px;display:grid;place-items:center;color:rgba(255,255,255,.78);letter-spacing:.16em;font-size:.66rem;overflow:hidden;position:relative}.media:before{content:'';position:absolute;inset:-10%;background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.2),transparent 45%);transform:translate3d(var(--px,0),var(--py,0),0);transition:transform .15s linear}.media.tall{min-height:680px}.media.wide{min-height:72vh}.soft-line{height:1px;background:var(--line);width:100%}

/* HOME */
.hero{height:100svh;min-height:720px;position:relative;color:#fff;display:flex;align-items:end;padding:8rem 7vw 6rem;overflow:hidden}.hero-media{position:absolute;inset:0;background:linear-gradient(rgba(10,15,12,.28),rgba(10,15,12,.58)),linear-gradient(120deg,#9f8e7c,#3d4a40);transform:scale(1.08);animation:heroZoom 9s ease-out forwards}.hero-content{position:relative;z-index:2;max-width:900px}.hero h1{font-family:var(--serif);font-size:clamp(4rem,8vw,8.8rem);line-height:.9;font-weight:400;margin:.6rem 0 1.5rem}.hero .lead{max-width:630px;font-size:1.08rem;line-height:1.75}.hero .btn-outline{color:#fff}@keyframes heroZoom{to{transform:scale(1)}}.marquee{overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:1rem 0}.marquee-track{display:flex;width:max-content;gap:2rem;animation:marquee 22s linear infinite;font-family:var(--serif);font-size:2rem}.marquee-track span:after{content:'✦';font-family:var(--sans);font-size:.8rem;margin-left:2rem}@keyframes marquee{to{transform:translateX(-50%)}}.featured-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line)}.ritual-tile{background:var(--paper);padding:2.2rem;min-height:360px;display:flex;flex-direction:column;justify-content:space-between;transition:background .35s,color .35s}.ritual-tile:hover{background:var(--deep);color:#fff}.ritual-tile .num{font-size:.7rem;letter-spacing:.2em}.ritual-tile h3{font-family:var(--serif);font-size:2.2rem;font-weight:400}.immersive{position:relative}.immersive .media{min-height:82vh}.overlay-copy{position:absolute;inset:0;display:flex;align-items:end;padding:7vw;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.45))}.overlay-copy h2{font-family:var(--serif);font-size:clamp(3rem,6vw,6.8rem);font-weight:400;max-width:850px;line-height:1}.journey{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}.journey article{padding:2rem 1.5rem;border-right:1px solid var(--line);min-height:210px}.journey span{font-size:.65rem}.journey h3{font-family:var(--serif);font-size:1.8rem;font-weight:400;margin-top:3rem}.journey p{color:var(--muted)}

/* PAGE HERO VARIANTS */
.page-hero{padding:12rem 7vw 6rem;min-height:62vh;display:flex;flex-direction:column;justify-content:end}.page-hero .copy{max-width:650px}.page-hero.dark{background:var(--deep);color:#fff}.page-hero.dark .copy{color:rgba(255,255,255,.65)}

/* AYURVEDA PAGE */
body[data-page='ayurveda']{background:#e8e0d4}.philo-hero{min-height:100svh;padding:10rem 6vw 5rem;display:grid;grid-template-columns:1fr 1fr;gap:5vw;align-items:end}.philo-word{font-family:var(--serif);font-size:clamp(5rem,13vw,13rem);line-height:.72;letter-spacing:-.03em;opacity:.96}.philo-note{max-width:440px;margin-left:auto}.manifesto{background:var(--deep);color:#fff;padding:12rem 10vw}.manifesto p{font-family:var(--serif);font-size:clamp(2.4rem,5.5vw,5.8rem);line-height:1.08;margin:0}.manifesto em{color:#c8b7a1;font-style:normal}.story-split{display:grid;grid-template-columns:1fr 1fr;min-height:85vh}.story-split .copy-side{padding:8vw;display:flex;flex-direction:column;justify-content:center}.story-split .media{min-height:85vh}

/* SOINS */
body[data-page='soins']{background:#f7f2ea}.rituals-hero{padding:12rem 5vw 4rem;display:grid;grid-template-columns:.8fr 1.2fr;gap:5vw;align-items:end;min-height:75vh}.rituals-hero .big-no{font-family:var(--serif);font-size:clamp(8rem,20vw,18rem);line-height:.65;color:#c7b6a3}.service-list{border-top:1px solid var(--line)}.service-row{display:grid;grid-template-columns:90px 1.4fr .7fr .5fr auto;align-items:center;gap:1rem;padding:2rem 0;border-bottom:1px solid var(--line);transition:padding .3s,background .3s}.service-row:hover{padding-left:1rem;padding-right:1rem;background:rgba(255,255,255,.45)}.service-row h3{font-family:var(--serif);font-size:2rem;font-weight:400;margin:0}.service-row p{color:var(--muted);margin:.25rem 0}.service-row .price{font-weight:500}

/* GALLERY */
body[data-page='galerie']{background:#151a17;color:#f4efe7}.gallery-hero{padding:11rem 5vw 3rem}.gallery-title{font-family:var(--serif);font-size:clamp(5rem,15vw,15rem);line-height:.8;font-weight:400;margin:0}.gallery-mosaic{padding:3rem 4vw 8rem;display:grid;grid-template-columns:repeat(12,1fr);gap:1.1vw}.gallery-item{min-height:340px;background:linear-gradient(135deg,#6e776e,#ad9b86);position:relative;overflow:hidden}.gallery-item:nth-child(1){grid-column:1/8;min-height:72vh}.gallery-item:nth-child(2){grid-column:9/13;margin-top:18vh}.gallery-item:nth-child(3){grid-column:2/6}.gallery-item:nth-child(4){grid-column:7/13;min-height:58vh}.gallery-item:nth-child(5){grid-column:1/5;margin-top:10vh}.gallery-item:nth-child(6){grid-column:6/11}.gallery-item span{position:absolute;left:1.2rem;bottom:1rem;font-size:.68rem;letter-spacing:.16em}.gallery-item:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent,rgba(0,0,0,.35));opacity:.4;transition:.35s}.gallery-item:hover:after{opacity:.75}

/* CONTACT */
body[data-page='contact']{background:#ebe5dc}.contact-hero{min-height:100svh;display:grid;grid-template-columns:1.1fr .9fr;padding-top:86px}.contact-visual{background:linear-gradient(145deg,#7f6e5e,#343c35);position:relative}.contact-visual:after{content:'DAKAR';position:absolute;bottom:3vw;left:3vw;font-family:var(--serif);font-size:clamp(4rem,9vw,9rem);color:#fff}.contact-copy{padding:7vw;display:flex;flex-direction:column;justify-content:center}.contact-list{border-top:1px solid var(--line);margin-top:2rem}.contact-line{display:flex;justify-content:space-between;gap:2rem;padding:1.15rem 0;border-bottom:1px solid var(--line)}

/* FAQ */
.faq{max-width:1000px;margin:auto}.faq details{border-top:1px solid var(--line);padding:1.5rem 0}.faq details:last-child{border-bottom:1px solid var(--line)}.faq summary{cursor:pointer;font-family:var(--serif);font-size:1.7rem;list-style:none}.faq details p{color:var(--muted);max-width:760px;line-height:1.8}.faq summary:after{content:'+';float:right;font-family:var(--sans);font-weight:300}.faq details[open] summary:after{content:'—'}

/* BOOKING */
body[data-page='reservation']{background:#f6f2ea}.booking-hero{padding:11rem 7vw 3rem;display:grid;grid-template-columns:1fr 1fr;gap:6vw}.booking-steps{display:flex;gap:.6rem;align-items:center}.booking-steps span{width:26px;height:26px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;font-size:.65rem}.booking-shell{display:grid;grid-template-columns:.72fr 1.28fr;gap:7vw;padding-top:4rem}.booking-panel{background:#fff;padding:2.6rem;border:1px solid var(--line);box-shadow:0 20px 60px rgba(45,36,25,.06)}label{display:block;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;margin-bottom:1.2rem}input,select,textarea{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;padding:.9rem 0;color:var(--ink);outline:none;margin-top:.45rem}textarea{resize:vertical}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}fieldset{border:0;padding:0;margin:1rem 0}legend{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;margin-bottom:.8rem}.radio{display:flex;gap:.55rem;align-items:center;text-transform:none;letter-spacing:0}.radio input{width:auto;margin:0}.slot-status,.notice,.summary{padding:1rem;background:#f5f1e9;margin:1rem 0;font-size:.9rem;line-height:1.55}.slot-status.full{background:#f5e5e2}.summary{border-left:2px solid var(--wine)}.hidden{display:none!important}

/* CONFIRM */
.confirm-wrap{max-width:760px;margin:auto;padding:13rem 6vw 8rem}.confirm-card{background:#fff;padding:3rem;border:1px solid var(--line)}

/* FOOTER */
.footer{background:#141a16;color:#fff;padding:5rem 5vw 2rem}.footer-brand{font-family:var(--serif);font-size:clamp(3.5rem,10vw,9rem);line-height:1}.footer-meta{display:grid;grid-template-columns:1fr auto auto;gap:2rem;border-top:1px solid rgba(255,255,255,.18);padding-top:1.5rem;margin-top:3rem;color:rgba(255,255,255,.62);font-size:.75rem}

@media(max-width:900px){.header{height:72px}.menu-btn{display:block}.nav{position:fixed;inset:72px 0 auto 0;background:var(--paper);color:var(--ink);display:flex;flex-direction:column;align-items:flex-start;padding:2rem 6vw;gap:1.4rem;transform:translateY(-130%);transition:.45s var(--ease);border-bottom:1px solid var(--line)}.nav.open{transform:none}.hero{padding:7rem 6vw 4rem;min-height:680px}.section{padding:6rem 6vw}.grid-2,.philo-hero,.story-split,.rituals-hero,.contact-hero,.booking-hero,.booking-shell{grid-template-columns:1fr}.philo-hero{padding-top:9rem;min-height:85vh}.philo-note{margin-left:0}.story-split .media{min-height:55vh}.featured-strip{grid-template-columns:1fr}.journey{grid-template-columns:1fr 1fr}.service-row{grid-template-columns:45px 1fr auto}.service-row .desc,.service-row .duration{display:none}.gallery-mosaic{display:block}.gallery-item{min-height:55vh!important;margin:0 0 1rem!important}.contact-visual{min-height:50vh;order:2}.contact-copy{min-height:65vh;padding-top:8rem}.footer-meta{grid-template-columns:1fr}.form-row{grid-template-columns:1fr}.section-heading{align-items:flex-start;flex-direction:column}}
@media(max-width:560px){.journey{grid-template-columns:1fr}.journey article{border-right:0;border-bottom:1px solid var(--line)}.hero h1{font-size:3.7rem}.display{font-size:2.8rem}.booking-panel{padding:1.4rem}.section{padding:5rem 5vw}.page-hero{padding:9rem 5vw 4rem}}
@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.reveal,.reveal-left,.reveal-right{opacity:1;transform:none}.clip-reveal>*{transform:none}}
