/* =========================================================================
   1. DESIGN TOKENS
   Palette: soft lavender-white base, deep amethyst + orchid pink accents,
   a restrained warm-gold hairline for "premium" moments only.
   Type: Cormorant Garamond (display, used sparingly & large) / Jost (body)
   / Sora (small-caps utility labels, numerals).
   ========================================================================= */
:root{
  --c-white:      #FBF8FF;
  --c-white-2:    #F3EDFB;
  --c-lavender:   #C7B3E6;
  --c-orchid:     #E39FC2;
  --c-purple:     #5B3A8E;
  --c-purple-dk:  #3B2560;
  --c-purple-mid: #7C4DA8;
  --c-gold:       #C9A45C;
  --c-ink:        #241B33;
  --c-ink-soft:   #5B5270;

  --font-display: 'Cormorant Garamond', serif;
  --font-body:    'Jost', sans-serif;
  --font-utility: 'Sora', sans-serif;

  --radius-lg: 28px;
  --radius-md: 18px;
  --radius-sm: 10px;

  --shadow-glass: 0 8px 32px rgba(91,58,142,0.14);
  --ease: cubic-bezier(0.22,1,0.36,1);
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  font-family:var(--font-body);
  color:var(--c-ink);
  background:var(--c-white);
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{ font-family:var(--font-display); color:var(--c-purple-dk); margin:0; }
p{ line-height:1.7; color:var(--c-ink-soft); }
.footer-text-white{ color:var(--bs-light); }
a{ text-decoration:none; color:inherit; }

a, a:link, a:visited, a:hover, a:focus, a:active,
.nav-link-item, .bn-item, .btn-luxe, .book-btn,
.footer-links a, .social-row a{
  text-decoration:none !important;
}
img{ max-width:100%; }
.eyebrow{
  font-family:var(--font-utility); font-size:.72rem; letter-spacing:.28em;
  text-transform:uppercase; color:var(--c-gold); font-weight:600;
}
.section-title{ font-size:clamp(2.2rem,5vw,3.4rem); font-weight:500; }
.section-title em{ font-style:italic; color:var(--c-orchid); }
.section-pad{ padding:6.5rem 0; position:relative; }
@media(max-width:767px){ .section-pad{ padding:4rem 0 5.5rem; } }

/* Glassmorphism helper */
.glass{
  background:rgba(255,255,255,0.55);
  backdrop-filter:blur(18px) saturate(140%);
  -webkit-backdrop-filter:blur(18px) saturate(140%);
  border:1px solid rgba(206, 190, 245, 0.6);
  
}
@media (prefers-reduced-motion: reduce){
  *{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
}
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible{
  outline:2px solid var(--c-gold); outline-offset:3px;
}
.skip-link{
  position:absolute; left:-999px; top:0; background:var(--c-purple); color:#fff;
  padding:.6rem 1rem; z-index:9999; border-radius:0 0 8px 0;
}
.skip-link:focus{ left:0; }

/* =========================================================================
   2. INTRO / LOADER
   ========================================================================= */
#intro{
  position:fixed; inset:0; z-index:10000; background:linear-gradient(180deg,#1a1130,#3b2560 55%,#7c4da8);
  display:flex; align-items:center; justify-content:center; flex-direction:column;
  transition:opacity 1s var(--ease), visibility 1s var(--ease);
 
  overflow-y:auto;
  justify-content:safe center;
}
#intro.hide{ opacity:0; visibility:hidden; pointer-events:none; }
#intro-canvas{ position:absolute; inset:0; width:100%; height:100%; }
.intro-logo-wrap{ position:relative; z-index:2; text-align:center; opacity:0; transform:translateY(18px); transition:all 1.1s var(--ease); }
.intro-logo-wrap.show{ opacity:1; transform:translateY(0); }
.intro-logo{ font-family:var(--font-display); font-size:clamp(2.2rem,7vw,4rem); color:#fff; letter-spacing:.02em; font-style:italic; }
.intro-logo .dot{ color:var(--c-gold); font-style:normal; }
.intro-tag{ font-family:var(--font-utility); letter-spacing:.35em; font-size:.7rem; color:rgba(255,255,255,.75); text-transform:uppercase; margin-top:.6rem; }
.intro-progress{ position:absolute; bottom:9%; left:50%; transform:translateX(-50%); width:200px; height:2px; background:rgba(255,255,255,.25); z-index:2; border-radius:2px; overflow:hidden; }
.intro-progress-bar{ height:100%; width:0%; background:linear-gradient(90deg,var(--c-gold),var(--c-orchid)); transition:width .3s linear; }
.intro-skip{
  position:absolute; top:1.5rem; right:1.5rem; z-index:3; background:rgba(255,255,255,.12); color:#fff;
  border:1px solid rgba(255,255,255,.3); border-radius:999px; padding:.4rem 1rem; font-family:var(--font-utility); font-size:.72rem;
  letter-spacing:.1em; cursor:pointer;
}
.intro-book-btn{
  margin-top:1.4rem; position:relative; z-index:2; background:linear-gradient(90deg,var(--c-gold),var(--c-orchid));
  color:#fff; border:none; border-radius:999px; padding:.6rem 1.6rem; font-family:var(--font-utility);
  font-size:.75rem; letter-spacing:.08em; text-transform:uppercase; cursor:pointer;
  display:inline-flex; align-items:center; gap:.4rem;
}

/* =========================================================================
   3. CUSTOM CURSOR (desktop only)
   ========================================================================= */
.cursor-dot, .cursor-ring{
  position:fixed; top:0; left:0; pointer-events:none; z-index:9998; border-radius:50%;
  transform:translate(-50%,-50%); mix-blend-mode:normal;
}
.cursor-dot{ width:6px; height:6px; background:var(--c-gold); transition:opacity .2s; }
.cursor-ring{ width:34px; height:34px; border:1.5px solid rgba(124,77,168,.55); transition:width .2s,height .2s,border-color .2s,opacity .2s; }
.cursor-ring.active{ width:56px; height:56px; border-color:var(--c-orchid); background:rgba(227,159,194,.12); }
/* Decorative only — not a content icon, so hiding it on touch devices (no hover concept) is correct and not in scope of the icon-visibility fix. */
@media (hover:none){ .cursor-dot,.cursor-ring{ display:none; } }

/* =========================================================================
   4. NAVIGATION — desktop top bar + mobile bottom app nav
   ========================================================================= */
.top-nav{
  position:fixed; top:0; left:0; right:0; z-index:2000; padding:1.1rem 0;
  transition:background .4s var(--ease), padding .4s var(--ease), box-shadow .4s var(--ease);
}
.top-nav.scrolled{ background:rgba(251,248,255,.85); backdrop-filter:blur(14px); padding:.6rem 0; box-shadow:0 4px 24px rgba(91,58,142,.08); }
.top-nav .brand{ font-family:var(--font-display); font-style:italic; font-size:1.5rem; color:var(--c-purple-dk); }
.top-nav .brand .dot{ color:var(--c-orchid); }
.top-nav ul{ list-style:none; display:flex; gap:1.9rem; margin:0; padding:0; }
.top-nav a.nav-link-item{ font-family:var(--font-utility); font-size:.76rem; letter-spacing:.06em; text-transform:uppercase; color:var(--c-ink); position:relative; padding:.3rem 0;text-decoration:none; }
.top-nav a.nav-link-item::after{ content:''; position:absolute; left:0; bottom:-2px; height:2px; width:0; background:var(--c-orchid); transition:width .3s var(--ease); }
.top-nav a.nav-link-item.active::after, .top-nav a.nav-link-item:hover::after{ width:100%; }
.nav-cta{
  font-family:var(--font-utility); font-size:.74rem; letter-spacing:.08em; text-transform:uppercase;
  background:linear-gradient(135deg,var(--c-purple),var(--c-purple-mid)); color:#fff !important; padding:.65rem 1.4rem;
  border-radius:999px; box-shadow:0 6px 18px rgba(91,58,142,.32);
}
/* Desktop text nav links are replaced by the icon-based bottom-nav below 992px — intentional, not an icon-hiding bug. */
@media(max-width:991px){ .top-nav ul{ display:none; } }

.bottom-nav{
  position:fixed; bottom:0; left:0; right:0; z-index:2000; display:flex; overflow-x:auto;
  padding:.5rem .3rem calc(.5rem + env(safe-area-inset-bottom));
  background:rgba(251,248,255,.92); backdrop-filter:blur(16px); border-top:1px solid rgba(124,77,168,.12);
  scrollbar-width:none;
}
.bottom-nav::-webkit-scrollbar{ display:none; }
@media(min-width:992px){ .bottom-nav{ display:none; } }
.bottom-nav .bn-item{
  flex:0 0 auto; min-width:64px; display:flex; flex-direction:column; align-items:center; gap:.2rem;
  padding:.35rem .5rem; font-family:var(--font-utility); font-size:.6rem; color:var(--c-ink-soft);
  transition:transform .35s var(--ease), color .3s;
}
.bottom-nav .bn-item i{ font-size:1.15rem; transition:transform .35s var(--ease), filter .35s; }
.bottom-nav .bn-item.active{ color:var(--c-purple); transform:translateY(-4px) scale(1.08); }
.bottom-nav .bn-item.active i{ filter:drop-shadow(0 0 8px rgba(227,159,194,.85)); animation:bnFloat 1.8s ease-in-out infinite; }
.bottom-nav .bn-item.active::before{
  content:''; position:absolute; margin-top:-1.6rem; width:5px; height:5px; border-radius:50%; background:var(--c-orchid);
}
@keyframes bnFloat{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-3px); } }



/* -------------------------------------------------------------------------
   3. BOTTOM NAV 
   ------------------------------------------------------------------------- */
.bottom-nav{
  overflow-x:auto;
  overflow-y:hidden;
  flex-wrap:nowrap;           
  -webkit-overflow-scrolling:touch;      
  scroll-snap-type:x proximity;        
  justify-content:flex-start; 
}
.bottom-nav .bn-item{
  scroll-snap-align:center;
  flex-shrink:0;                        
}

/* -------------------------------------------------------------------------
   4. QUICK BOOK MODAL — mobile responsive
   ------------------------------------------------------------------------- */

#quickBookModal{
  z-index:5000;
}
#quickBookModal ~ .modal-backdrop,
.modal-backdrop{
  z-index:4990 !important;
}
@media(max-width:575px){
  #quickBookModal .modal-dialog{
    margin:.75rem;
    max-width:calc(100% - 1.5rem);
  }
  #quickBookModal .modal-header{
    padding:1rem 1.2rem;
  }
  #quickBookModal .modal-title{
    font-size:1.05rem;
  }
  #quickBookModal .modal-body{
    padding:1.2rem;
  }
  #quickBookModal .form-control-luxe{
    font-size:.9rem;
    padding:.65rem .9rem;
  }
  #quickBookModal button[type="submit"]{
    font-size:.8rem;
    padding:.75rem;
  }
}
@media(max-width:360px){
  #quickBookModal .modal-dialog{
    margin:.5rem;
    max-width:calc(100% - 1rem);
  }
  #quickBookModal .modal-body{
    padding:1rem;
  }
}
/* =========================================================================
   5. BUTTONS
   ========================================================================= */
.btn-luxe{
  font-family:var(--font-utility); font-size:.78rem; letter-spacing:.08em; text-transform:uppercase;
  padding:.85rem 1.9rem; border-radius:999px; border:none; cursor:pointer; display:inline-flex; align-items:center; gap:.5rem;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease);
}
.btn-luxe:hover{ transform:translateY(-3px); }
.btn-luxe-primary{ background:linear-gradient(135deg,var(--c-purple),var(--c-orchid)); color:#fff; box-shadow:0 10px 26px rgba(124,77,168,.35); }
.btn-luxe-ghost{ background:transparent; color:var(--c-purple-dk); border:1.5px solid var(--c-purple-mid); }
.btn-luxe-ghost:hover{ background:rgba(124,77,168,.08); }

/* =========================================================================
   6. HERO
   ========================================================================= */
#home{ position:relative; min-height:100vh; display:flex; align-items:center; overflow:hidden;
  background:radial-gradient(ellipse at 20% 20%,#F3EDFB 0%,var(--c-white) 55%); padding-top:6rem; }
#hero-canvas{ position:absolute; inset:0; z-index:0; opacity:.9; }
.hero-content{ position:relative; z-index:2; }
.hero-content h1{ font-size:clamp(2.6rem,6.5vw,4.6rem); line-height:1.05; }
.hero-content h1 em{ font-style:italic; color:var(--c-orchid); }
.hero-sub{ max-width:520px; font-size:1.05rem; margin:1.2rem 0 2rem; }
.hero-stats-strip{ display:flex; gap:2.4rem; margin-top:3rem; flex-wrap:wrap; }
.hero-stats-strip .num{ font-family:var(--font-display); font-size:2rem; color:var(--c-purple); }
.hero-stats-strip .lbl{ font-family:var(--font-utility); font-size:.65rem; letter-spacing:.08em; text-transform:uppercase; color:var(--c-ink-soft); }
.hero-img-wrap {
  border-radius: 24px;
  overflow: hidden;
  box-shadow: 0 25px 60px rgba(91,58,142,0.28);
  width: 100%;
  max-width: 100%;
}
.hero-img {
  width: 100%;
  height: 420px;
  object-fit: cover;
  display: block;
  border-radius: 24px;
  transition: transform .6s var(--ease);
}
.hero-img-wrap:hover .hero-img{ transform: scale(1.04); }
@media (min-width: 1400px){
  .hero-img{ height: 380px; }
}
@media (max-width: 991px){
  .hero-img-wrap{ margin-top: 2.5rem; }
  .hero-img{ height: 320px; }
}
@media (max-width: 575px){
  .hero-img{ height: 240px; }
  .hero-img-wrap{ border-radius: 18px; }
  .hero-img{ border-radius: 18px; }
}
/* =========================================================================
   7. ABOUT + counters
   ========================================================================= */
.about-img-wrap{ position:relative; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow-glass); }
.about-img-wrap img{ display:block; width:100%; height:520px; object-fit:cover; }
.about-badge{ position:absolute; bottom:1.2rem; left:1.2rem; padding:1rem 1.3rem; border-radius:var(--radius-md); }
.about-badge .num{ font-family:var(--font-display); font-size:2.2rem; color:var(--c-purple); }
.counter-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1.2rem; margin-top:3rem; }
@media(max-width:767px){ .counter-grid{ grid-template-columns:repeat(2,1fr); } }
.counter-card{ text-align:center; padding:1.6rem 1rem; border-radius:var(--radius-md); }
.counter-card .num{ font-family:var(--font-display); font-size:2.4rem; color:var(--c-purple); }
.counter-card .lbl{ font-family:var(--font-utility); font-size:.68rem; text-transform:uppercase; letter-spacing:.06em; color:var(--c-ink-soft); margin-top:.3rem; }

/* =========================================================================
   8. SERVICES GRID
   ========================================================================= */
.services-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1.4rem; }
@media(max-width:991px){ .services-grid{ grid-template-columns:repeat(3,1fr); } }
@media(max-width:575px){ .services-grid{ grid-template-columns:repeat(2,1fr); gap:.9rem; } }
.service-card{
  border-radius:var(--radius-md); overflow:hidden; position:relative; background:#fff; box-shadow:0 6px 20px rgba(91,58,142,.1);
  transition:transform .45s var(--ease), box-shadow .45s var(--ease); transform-style:preserve-3d;
}
.service-card:hover{ transform:translateY(-8px); box-shadow:0 18px 40px rgba(91,58,142,.22); }
.service-card .img-wrap{ height:150px; overflow:hidden; }
.service-card img{ width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease); }
.service-card:hover img{ transform:scale(1.08); }
.service-card .body{ padding:1rem 1.1rem 1.2rem; }
.service-card h3{ font-size:1.15rem; margin-bottom:.25rem; }
.service-card p{ font-size:.82rem; margin-bottom:.6rem; }
.service-meta{ display:flex; justify-content:space-between; align-items:center; font-family:var(--font-utility); font-size:.72rem; color:var(--c-ink-soft); margin-bottom:.7rem; }
.service-meta .price{ color:var(--c-gold); font-weight:600; }
.service-card .book-btn{ width:100%; font-size:.68rem; padding:.55rem; }



@media(max-width:991px){
  .service-card{
    display:flex;
    flex-direction:column;
    height:100%;
  }
  .service-card .body{
    display:flex;
    flex-direction:column;
    flex:1 1 auto;
  }
  .service-card .book-btn{
    margin-top:auto;
  }
}

/* =========================================================================
   9. THERAPISTS
   ========================================================================= */
.therapist-card{ perspective:1200px; }
.therapist-inner{ border-radius:var(--radius-lg); overflow:hidden; background:#fff; box-shadow:0 10px 28px rgba(91,58,142,.12); transition:transform .4s var(--ease), box-shadow .4s var(--ease); }
.therapist-card:hover .therapist-inner{ transform:translateY(-10px) rotateX(2deg); box-shadow:0 24px 50px rgba(91,58,142,.25); }
.therapist-inner .photo{ height:300px; overflow:hidden; }
.therapist-inner img{ width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease); }
.therapist-card:hover img{ transform:scale(1.07); }
.therapist-inner .info{ padding:1.3rem; }
.therapist-inner h3{ font-size:1.35rem; }
.therapist-inner .spec{ font-family:var(--font-utility); font-size:.7rem; letter-spacing:.06em; text-transform:uppercase; color:var(--c-orchid); margin:.2rem 0 .6rem; }
.therapist-inner .meta-row{ display:flex; gap:1rem; font-size:.78rem; color:var(--c-ink-soft); margin-bottom:.6rem; }

@media(max-width:767px){
  .therapist-card .spec,
  .therapist-card .meta-row,
  .therapist-card .info p{
    display:none;
  }
  .therapist-card .info{
    padding:.8rem .6rem;
    text-align:center;
  }
  .therapist-card .info h3{
    font-size:.95rem;
    margin:0;
  }
  .therapist-card .book-btn{
    display:flex;
    align-items:center;
    justify-content:center;
    width:auto;
    max-width:100%;
    margin-top:.5rem;
    font-size:.65rem;
    padding:.5rem .9rem;
  }
}
/* =========================================================================
   10. EXPERIENCE TIMELINE
   ========================================================================= */
.exp-track{ position:relative; padding-left:2.4rem; }
.exp-track::before{ content:''; position:absolute; left:11px; top:6px; bottom:6px; width:2px; background:linear-gradient(180deg,var(--c-orchid),var(--c-purple)); }
.exp-step{ position:relative; padding-bottom:2.6rem; opacity:0; transform:translateX(-16px); transition:all .7s var(--ease); }
.exp-step.in{ opacity:1; transform:translateX(0); }
.exp-step::before{ content:attr(data-n); position:absolute; left:-2.4rem; top:0; width:26px; height:26px; border-radius:50%; background:#fff; border:2px solid var(--c-purple-mid); color:var(--c-purple); font-family:var(--font-utility); font-size:.68rem; display:flex; align-items:center; justify-content:center; }
.exp-step h4{ font-size:1.3rem; }
.exp-step p{ font-size:.9rem; margin:.2rem 0 0; max-width:520px; }

/* =========================================================================
   11. GALLERY (masonry via CSS columns)
   ========================================================================= */
.gallery-masonry{ columns:4 220px; column-gap:1rem; }
@media(max-width:767px){ .gallery-masonry{ columns:2 160px; } }
.gallery-item{ break-inside:avoid; margin-bottom:1rem; border-radius:var(--radius-md); overflow:hidden; position:relative; cursor:zoom-in; }
.gallery-item img{ width:100%; display:block; transition:transform .5s var(--ease); }
.gallery-item:hover img{ transform:scale(1.06); }
.gallery-item::after{ content:'\F52A'; font-family:'bootstrap-icons'; position:absolute; inset:0; display:flex; align-items:center; justify-content:center; background:rgba(59,37,96,.35); color:#fff; font-size:1.4rem; opacity:0; transition:opacity .35s; pointer-events:none; }
.gallery-item:hover::after{ opacity:1; }
#galleryLightbox{ position:fixed; inset:0; z-index:9500; background:rgba(0,0,0,.92); display:none; align-items:center; justify-content:center; padding:2rem; }
#galleryLightbox.is-open{ display:flex; }
#galleryLightboxImg{ max-width:92vw; max-height:88vh; width:auto; height:auto; object-fit:contain; border-radius:var(--radius-md); box-shadow:0 10px 40px rgba(0,0,0,.6); user-select:none; }
#galleryLightboxClose,#galleryLightboxPrev,#galleryLightboxNext{ position:absolute; display:flex; align-items:center; justify-content:center; width:46px; height:46px; border:0; border-radius:50%; background:rgba(0,0,0,.5); color:#fff; font-size:2rem; line-height:1; cursor:pointer; transition:background .2s; }
#galleryLightboxClose:hover,#galleryLightboxPrev:hover,#galleryLightboxNext:hover{ background:rgba(0,0,0,.8); }
#galleryLightboxClose{ top:1.25rem; right:1.25rem; font-size:1.7rem; }
#galleryLightboxPrev{ left:1rem; top:50%; transform:translateY(-50%); }
#galleryLightboxNext{ right:1rem; top:50%; transform:translateY(-50%); }
@media(max-width:600px){
  #galleryLightbox{ padding:1rem; }
  #galleryLightboxImg{ max-width:calc(100vw - 2rem); max-height:80vh; }
  #galleryLightboxClose{ top:.75rem; right:.75rem; width:42px; height:42px; }
  #galleryLightboxPrev,#galleryLightboxNext{ width:44px; height:44px; }
  #galleryLightboxPrev{ left:.5rem; }
  #galleryLightboxNext{ right:.5rem; }
}

/* =========================================================================
   12. WHY US
   ========================================================================= */
.why-card{
  height:100%;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  border-radius:var(--radius-md);
  padding:1.8rem 1.4rem;
  text-align:center;
  transition:transform .4s var(--ease);
}
.why-card:hover{ transform:translateY(-6px); }
.why-card i{ font-size:1.8rem; color:var(--c-purple); }
.why-card h4{ font-size:1.1rem; margin-top:.8rem; }
.why-card p{ font-size:.82rem; margin-top:.3rem; }
#whyGrid > [class*="col-"]{ display:flex; }

/* =========================================================================
   13. REVIEWS CAROUSEL
   ========================================================================= */

.review-track-wrap{ overflow-x:clip; overflow-y:visible; }
#reviews.section-relative{ overflow:visible; }
.review-track{ display:flex; gap:1.4rem; transition:transform .6s var(--ease); }
.review-card{ flex:0 0 100%; max-width:560px; margin:0 auto; border-radius:var(--radius-lg); padding:2.2rem; text-align:center; }
@media(min-width:768px){ .review-card{ flex:0 0 calc(50% - .7rem); } }
.review-card .stars{ color:var(--c-gold); font-size:1.1rem; letter-spacing:.15em; }
.review-card p{ font-style:italic; font-size:1rem; margin:1rem 0; }
.review-card .who{ font-family:var(--font-utility); font-size:.75rem; letter-spacing:.05em; text-transform:uppercase; color:var(--c-purple); }
.review-nav{ display:flex; justify-content:center; gap:.8rem; margin-top:1.5rem; }
.review-nav button{ width:34px; height:34px; border-radius:50%; border:1px solid var(--c-purple-mid); background:#fff; color:var(--c-purple); }
.overall-rating{ text-align:center; margin-bottom:2.5rem; }
.overall-rating .big{ font-family:var(--font-display); font-size:3.2rem; color:var(--c-purple); }

/* =========================================================================
   14. FAQ ACCORDION (custom, no bootstrap JS needed)
   ========================================================================= */
.faq-item{ border-bottom:1px solid rgba(124,77,168,.18); }
.faq-q{ width:100%; text-align:left; background:none; border:none; padding:1.2rem .2rem; display:flex; justify-content:space-between; align-items:center; font-family:var(--font-body); font-size:1.02rem; color:var(--c-purple-dk); cursor:pointer; }
.faq-q i{ transition:transform .35s var(--ease); color:var(--c-orchid); }
.faq-item.open .faq-q i{ transform:rotate(45deg); }
.faq-a{ max-height:0; overflow:hidden; transition:max-height .4s var(--ease); }
.faq-a p{ padding:0 .2rem 1.2rem; font-size:.9rem; }

/* =========================================================================
   15. CONTACT / BOOKING
   ========================================================================= */
.booking-card{ border-radius:var(--radius-lg); padding:2.2rem; }
.form-control-luxe{
  width:100%; background:rgba(255,255,255,.7); border:1px solid rgba(124,77,168,.25); border-radius:var(--radius-sm);
  padding:.75rem 1rem; font-family:var(--font-body); margin-bottom:1rem; font-size:.92rem;
}
.form-control-luxe:focus{ outline:none; border-color:var(--c-orchid); box-shadow:0 0 0 3px rgba(227,159,194,.2); }
.info-line{ display:flex; gap:.8rem; align-items:flex-start; margin-bottom:1.2rem; }
.info-line i{ color:var(--c-purple); font-size:1.1rem; margin-top:.15rem; }
.map-placeholder{ height:260px; border-radius:var(--radius-md); background:linear-gradient(135deg,#E9DFF7,#F6E4EE); display:flex; align-items:center; justify-content:center; color:var(--c-purple); font-family:var(--font-utility); font-size:.8rem; letter-spacing:.05em; }
/* =========================================================================
   16. FLOATING SOCIAL / FINGERPRINT BUTTON
   ========================================================================= */
   
.fp-fab{ position:fixed; bottom:calc(var(--bottom-nav-h, 62px) + env(safe-area-inset-bottom) + .9rem); right:1.3rem; z-index:2100; }
@media(min-width:992px){ .fp-fab{ bottom:2rem; } }

.fp-btn{
  width:58px; height:58px; border-radius:50%; border:none; cursor:pointer;
  background:linear-gradient(135deg,var(--c-purple),var(--c-orchid)); color:#fff; font-size:1.35rem;
  box-shadow:0 10px 26px rgba(124,77,168,.45); position:relative; animation:fpBounce 3s ease-in-out infinite;
}
@keyframes fpBounce{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-6px); } }
.fp-btn::before{ content:''; position:absolute; inset:-6px; border-radius:50%; border:1.5px solid rgba(227,159,194,.6); animation:fpRipple 2.2s ease-out infinite; }
@keyframes fpRipple{ 0%{ transform:scale(1); opacity:.8; } 100%{ transform:scale(1.6); opacity:0; } }

.fp-menu{ position:absolute; bottom:70px; right:4px; width:0; height:0; }
.fp-menu a{
  position:absolute; width:44px; height:44px; border-radius:50%; background:#fff; color:var(--c-purple);
  display:flex; align-items:center; justify-content:center; box-shadow:0 6px 18px rgba(91,58,142,.25);
  opacity:0; transform:translate(0,0) scale(.3); transition:all .45s var(--ease);

  pointer-events:none;
}
.fp-fab.open .fp-menu a{ opacity:1; pointer-events:auto; }

@media(min-width:577px){
  .fp-fab.open .fp-menu a:nth-child(1){ transform:translate(-50px,-45px) scale(1); }
  .fp-fab.open .fp-menu a:nth-child(2){ transform:translate(-50px,-94px) scale(1); }
  .fp-fab.open .fp-menu a:nth-child(3){ transform:translate(-50px,-142px) scale(1); }
  .fp-fab.open .fp-menu a:nth-child(4){ transform:translate(-50px,-190px) scale(1); }
  .fp-fab.open .fp-menu a:nth-child(5){ transform:translate(-50px,-240px) scale(1); }
  .fp-fab.open .fp-menu a:nth-child(6){ transform:translate(-50px,-290px) scale(1); }
}
@media(min-width:992px){ .fp-fab{ bottom:2.5rem; right:1.5rem; } }
@media(max-width:576px){
  .fp-fab{ right:12px; bottom:calc(var(--bottom-nav-h, 62px) + env(safe-area-inset-bottom) + .7rem); }
  .fp-btn{ width:48px; height:48px; font-size:1.15rem; }

  .fp-menu{
    bottom:60px;
    left:50%;
    right:auto;
    transform:translateX(-50%);
    display:flex;
    flex-direction:column-reverse;
    align-items:center;
    gap:.55rem;
    width:auto;
    height:auto;
  }
  .fp-menu a{
    position:static;
    width:38px; height:38px;
    transform:scale(.3);
  }
  .fp-fab.open .fp-menu a{
    transform:scale(1);
  }
}

/* ---- Extra small phones ≤360px — even tighter ---- */
@media(max-width:360px){
  .fp-fab{ right:10px; bottom:calc(var(--bottom-nav-h, 62px) + env(safe-area-inset-bottom) + .55rem); }
  .fp-btn{ width:44px; height:44px; font-size:1.05rem; }

  .fp-menu{ bottom:52px; gap:.45rem; }
  .fp-menu a{ width:34px; height:34px; }
}

.sound-toggle{
  position:fixed; top:1.1rem; right:1.1rem; z-index:2100; width:38px; height:38px; border-radius:50%;
  background:rgba(255,255,255,.7); backdrop-filter:blur(10px); border:1px solid rgba(124,77,168,.2);
  display:flex; align-items:center; justify-content:center; color:var(--c-purple); cursor:pointer;
}

.ambient-canvas{ position:absolute; inset:0; z-index:0; pointer-events:none; }
.section-relative{ position:relative; overflow:hidden; }

footer{ background:var(--c-purple-dk); color:rgba(255,255,255,.75); padding:3rem 0 7rem; }
@media(min-width:992px){ footer{ padding-bottom:3rem; } }
footer a{ color:rgba(255,255,255,.85); }
footer h5{ color:#fff; font-family:var(--font-display); font-style:italic; }
.footer-links{ list-style:none; padding:0; margin-top:0 !important; margin-bottom:0; }
.footer-links li{ margin:0 0 .65rem; font-size:.88rem; line-height:1.7; }
footer .row > .col-md-4:nth-child(2),
footer .row > .footer-contact {
  margin-top:30px;
}
/* =========================================================
   MOBILE FOOTER - EXPLORE + CONTACT SIDE BY SIDE
   ========================================================= */

@media (max-width: 767px) {

  footer .row {
    display: flex;
    flex-wrap: wrap;
  }

  footer .row > .col-md-4:first-child {
    width: 100%;
  }


  footer .row > .col-md-4:nth-child(2),
  footer .row > .col-md-4:nth-child(3) {
    width: 50%;
    padding-left: 12px;
    padding-right: 12px;
  }

  footer .footer-contact p {
    display: flex;
    align-items: flex-start;
    gap: .6rem;
    overflow-wrap: anywhere;
    margin-bottom: .65rem;
  }

  footer .footer-contact p i {
    flex: 0 0 1rem;
    text-align: center;
    margin-top: .2rem;
  }

  footer .footer-contact a {
    overflow-wrap: anywhere;
  }

}
.social-row a{ display:inline-flex; width:36px; height:36px; border-radius:50%; background:rgba(255,255,255,.1); align-items:center; justify-content:center; margin-right:.5rem; }

.reveal{ opacity:0; transform:translateY(28px); transition:opacity .8s var(--ease), transform .8s var(--ease); }
.reveal.in{ opacity:1; transform:translateY(0); }



