/* ==========================================================================
   BLOOM & CO. — Luxury Salon at Home & In-Salon Booking
   Design language: "Ribbon Reveal" — a rose-gold silk ribbon motif that
   threads through section dividers, echoing a hair ribbon / sash.
   Fonts: Fraunces (display serif, luxury editorial) + Outfit (app-grade UI sans)
   ========================================================================== */

/* ---------- Fonts ---------- */
@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;0,9..144,700;1,9..144,500&family=Outfit:wght@300;400;500;600;700;800&display=swap');

/* ---------- Design Tokens ---------- */
:root{
  /* Palette */
  --ivory:#FBF7F3;
  --beige:#F3E7DC;
  --beige-deep:#E9D7C6;
  --pink-soft:#F3D3D6;
  --pink:#EEC0C6;
  --rosegold:#C48A93;
  --rosegold-deep:#B0707C;
  --rosegold-metal:#CBA36B;
  --plum:#3B2A2E;
  --plum-soft:#6E5458;
  --white:#FFFFFF;

  --grad-rosegold: linear-gradient(135deg,#E9C6B8 0%, #D9A0A6 45%, #B0707C 100%);
  --grad-rosegold-soft: linear-gradient(135deg,#F6E3D8 0%, #F1CBCF 100%);
  --grad-bg: radial-gradient(circle at 15% 0%, #FDF3ED 0%, #FBF7F3 45%, #F6ECE3 100%);

  --shadow-sm: 0 2px 10px rgba(59,42,46,0.06);
  --shadow-md: 0 12px 30px -8px rgba(176,112,124,0.28);
  --shadow-lg: 0 25px 60px -15px rgba(59,42,46,0.25);

  --radius-sm: 14px;
  --radius-md: 22px;
  --radius-lg: 32px;
  --radius-pill: 100px;

  --font-display: 'Fraunces', serif;
  --font-body: 'Outfit', sans-serif;

  --header-h: 78px;
  --bottomnav-h: 72px;

  --transition: .35s cubic-bezier(.22,.61,.36,1);
}

[data-theme="dark"]{
  --ivory:#221A1C;
  --beige:#2B2124;
  --beige-deep:#332629;
  --pink-soft:#3A2A2E;
  --pink:#3F2C31;
  --plum:#F6EAE8;
  --plum-soft:#CBB6B9;
  --white:#2A2022;
  --grad-bg: radial-gradient(circle at 15% 0%, #2A2022 0%, #221A1C 45%, #1C1516 100%);
  --shadow-sm: 0 2px 10px rgba(0,0,0,0.35);
  --shadow-lg: 0 25px 60px -15px rgba(0,0,0,0.55);
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth; scroll-padding-top: calc(var(--header-h) + 10px);}
body{
  font-family: var(--font-body);
  background: var(--grad-bg);
  color: var(--plum);
  overflow-x:hidden;
  transition: background var(--transition), color var(--transition);
  padding-bottom: var(--bottomnav-h);
}
@media (min-width: 992px){ body{ padding-bottom:0; } }

h1,h2,h3,h4,.font-display{ font-family: var(--font-display); font-weight:600; color:var(--plum); }
.eyebrow{
  font-family: var(--font-body);
  font-weight:600;
  letter-spacing:.14em;
  text-transform:uppercase;
  font-size:.72rem;
  color: var(--rosegold-deep);
  display:inline-flex;
  align-items:center;
  gap:.5rem;
}
.eyebrow::before{
  content:"";
  width:22px; height:2px;
  background: var(--grad-rosegold);
  display:inline-block;
  border-radius:2px;
}
.section-title{ font-size: clamp(1.7rem, 4vw, 2.6rem); line-height:1.15; margin-top:.5rem;}
.section-sub{ color:var(--plum-soft); font-size:1.02rem; max-width:640px; }
.section-pad{ padding: 4.5rem 0; }
@media (max-width:768px){ .section-pad{ padding: 3rem 0; } }

::selection{ background: var(--pink); color:var(--plum); }

/* ---------- Buttons ---------- */
.btn-gradient{
  background: var(--grad-rosegold);
  border:none;
  color:#fff;
  font-weight:600;
  padding:.85rem 1.8rem;
  border-radius: var(--radius-pill);
  box-shadow: var(--shadow-md);
  transition: transform var(--transition), box-shadow var(--transition);
  font-size:.95rem;
}
.btn-gradient:hover{ transform: translateY(-3px); box-shadow: 0 18px 34px -10px rgba(176,112,124,0.45); color:#fff; }
.btn-gradient:active{ transform: translateY(0); }

.btn-outline-rose{
  background: transparent;
  border:1.5px solid var(--rosegold-deep);
  color: var(--rosegold-deep);
  font-weight:600;
  padding:.8rem 1.7rem;
  border-radius: var(--radius-pill);
  transition: all var(--transition);
}
.btn-outline-rose:hover{ background: var(--rosegold-deep); color:#fff; }

.btn-icon-circle{
  width:46px; height:46px; border-radius:50%;
  display:inline-flex; align-items:center; justify-content:center;
  background: var(--white);
  box-shadow: var(--shadow-sm);
  color: var(--rosegold-deep);
  border:none;
  transition: all var(--transition);
}
.btn-icon-circle:hover{ background:var(--grad-rosegold); color:#fff; transform:translateY(-2px); }

/* ---------- Loading Screen ---------- */
#loader{
  position:fixed; inset:0; z-index:9999;
  background: var(--ivory);
  display:flex; align-items:center; justify-content:center; flex-direction:column; gap:1rem;
  transition: opacity .6s ease, visibility .6s ease;
}
#loader.hide{ opacity:0; visibility:hidden; }
.loader-ribbon{
  width:60px; height:60px;
  border-radius:50%;
  border:3px solid var(--pink-soft);
  border-top-color: var(--rosegold-deep);
  animation: spin 0.9s linear infinite;
}
.loader-text{ font-family:var(--font-display); font-style:italic; color:var(--rosegold-deep); letter-spacing:.05em;}
@keyframes spin{ to{ transform:rotate(360deg);} }

/* ---------- Header ---------- */
#mainHeader{
  position: fixed; top:0; left:0; right:0; z-index:1030;
  height: var(--header-h);
  display:flex; align-items:center;
  background: rgba(251,247,243,0.7);
  backdrop-filter: blur(18px) saturate(160%);
  -webkit-backdrop-filter: blur(18px) saturate(160%);
  border-bottom: 1px solid rgba(255,255,255,0.4);
  transition: box-shadow var(--transition), background var(--transition);
}
[data-theme="dark"] #mainHeader{ background: rgba(34,26,28,0.7); border-color: rgba(255,255,255,0.06); }
#mainHeader.scrolled{ box-shadow: 0 8px 24px -12px rgba(59,42,46,0.18); }

.brand-logo{ display:flex; align-items:center; gap:.6rem; text-decoration:none; }
.brand-mark{
  width:42px; height:42px; border-radius:50%;
  background: var(--grad-rosegold);
  display:flex; align-items:center; justify-content:center;
  color:#fff; font-family:var(--font-display); font-size:1.2rem; font-style:italic;
  box-shadow: var(--shadow-sm);
}
.brand-name{ font-family:var(--font-display); font-size:1.35rem; color:var(--plum); font-weight:600; line-height:1;}
.brand-tag{ font-size:.62rem; letter-spacing:.16em; text-transform:uppercase; color:var(--rosegold-deep); display:block;}

.nav-link-custom{
  font-weight:500; color:var(--plum) !important; position:relative; padding:.5rem .95rem !important; font-size:.92rem;
}
.nav-link-custom::after{
  content:""; position:absolute; left:50%; bottom:.15rem; width:0; height:2px; background:var(--grad-rosegold);
  transition: all var(--transition); transform:translateX(-50%); border-radius:2px;
}
.nav-link-custom:hover::after, .nav-link-custom.active::after{ width:60%; }
.nav-link-custom:hover{ color:var(--rosegold-deep) !important; }

.theme-toggle-btn{
  width:40px;height:40px;border-radius:50%; border:1px solid var(--beige-deep);
  background:var(--white); display:flex; align-items:center; justify-content:center; color:var(--rosegold-deep);
}

/* ---------- Hero ---------- */
.hero{
  position:relative;
  padding-top: calc(var(--header-h) + 2.2rem);
  padding-bottom: 3rem;
  overflow:hidden;
}
.hero-blob{
  position:absolute; border-radius:50%; filter: blur(60px); opacity:.55; z-index:0;
}
.hero-blob.b1{ width:340px; height:340px; background:var(--pink-soft); top:-80px; right:-80px; }
.hero-blob.b2{ width:260px; height:260px; background:var(--beige-deep); bottom:-60px; left:-60px; }

.hero-badge{
  display:inline-flex; align-items:center; gap:.5rem;
  background: var(--white); padding:.5rem 1rem; border-radius:var(--radius-pill);
  box-shadow: var(--shadow-sm); font-size:.8rem; font-weight:600; color:var(--rosegold-deep);
}
.hero h1{
  font-size: clamp(2.2rem, 5.6vw, 3.6rem);
  line-height:1.08;
  margin:1rem 0 1rem;
}
.hero h1 em{ color:var(--rosegold-deep); font-style:italic; }
.hero p.lead{ color:var(--plum-soft); font-size:1.08rem; max-width:520px; }

.hero-media{ position:relative; z-index:1; }
.hero-media img{
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  width:100%; height:auto; object-fit:cover;
}
.hero-float-card{
  position:absolute; background: rgba(255,255,255,0.85);
  backdrop-filter: blur(14px);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-md);
  padding:.9rem 1.1rem;
  display:flex; align-items:center; gap:.7rem;
  animation: floaty 4s ease-in-out infinite;
}
[data-theme="dark"] .hero-float-card{ background: rgba(42,32,34,0.85); }
.hero-float-card.card1{ bottom:-1.3rem; left:-1.2rem; }
.hero-float-card.card2{ top:1.5rem; right:-1.2rem; animation-delay:1.5s; }
@keyframes floaty{ 0%,100%{ transform:translateY(0);} 50%{ transform:translateY(-10px);} }
.hero-float-card .icon-wrap{
  width:40px;height:40px;border-radius:50%; background:var(--grad-rosegold);
  display:flex; align-items:center; justify-content:center; color:#fff; flex-shrink:0;
}
.hero-float-card strong{ font-size:.85rem; display:block; }
.hero-float-card span{ font-size:.72rem; color:var(--plum-soft); }

.feature-pill-row{ display:flex; flex-wrap:wrap; gap:.6rem; margin-top:1.8rem; }
.feature-pill{
  display:flex; align-items:center; gap:.4rem;
  background: var(--white); padding:.5rem .9rem; border-radius:var(--radius-pill);
  font-size:.78rem; font-weight:600; box-shadow:var(--shadow-sm); color:var(--plum);
}
.feature-pill i{ color: var(--rosegold-deep); }

/* ---------- Ribbon Divider (signature element) ---------- */
.ribbon-divider{ width:100%; height:52px; display:block; margin-top:-2px; }
.ribbon-divider path{ fill: none; stroke:url(#ribbonGradient); stroke-width:2.5; }

/* ---------- Generic Section backgrounds ---------- */
.bg-beige{ background: var(--beige); }
.bg-ivory{ background: var(--ivory); }
.bg-glass{
  background: rgba(255,255,255,0.55);
  backdrop-filter: blur(16px);
  border: 1px solid rgba(255,255,255,0.5);
}
[data-theme="dark"] .bg-glass{ background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.08); }

/* ---------- Icon Tiles (About) ---------- */
.icon-tile{
  background: var(--white); border-radius: var(--radius-md); padding:1.6rem;
  box-shadow: var(--shadow-sm); height:100%;
  transition: transform var(--transition), box-shadow var(--transition);
}
.icon-tile:hover{ transform: translateY(-6px); box-shadow: var(--shadow-md); }
.icon-tile .icon-circle{
  width:56px; height:56px; border-radius:18px;
  background: var(--grad-rosegold-soft);
  display:flex; align-items:center; justify-content:center;
  color: var(--rosegold-deep); font-size:1.4rem; margin-bottom:1rem;
}
.icon-tile h5{ font-family:var(--font-body); font-weight:700; font-size:1.02rem; }
.icon-tile p{ color:var(--plum-soft); font-size:.9rem; margin-bottom:0; }

/* ---------- Salon at Home ---------- */
.home-benefit{ display:flex; gap:1rem; align-items:flex-start; margin-bottom:1.4rem; }
.home-benefit .num-icon{
  width:48px;height:48px;border-radius:50%; flex-shrink:0;
  background: var(--white); box-shadow:var(--shadow-sm);
  display:flex; align-items:center; justify-content:center; color:var(--rosegold-deep); font-size:1.1rem;
}
.home-benefit h6{ font-weight:700; margin-bottom:.2rem; }
.home-benefit p{ color:var(--plum-soft); font-size:.88rem; margin-bottom:0;}

.home-image-wrap{ position:relative; }
.home-image-wrap img{ border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); width:100%; }
.home-image-wrap .badge-float{
  position:absolute; bottom:-1rem; right:1rem;
  background: var(--grad-rosegold); color:#fff;
  padding:.9rem 1.3rem; border-radius: var(--radius-md); box-shadow:var(--shadow-md);
  text-align:center;
}
.home-image-wrap .badge-float strong{ display:block; font-family:var(--font-display); font-size:1.5rem; }
.home-image-wrap .badge-float span{ font-size:.7rem; letter-spacing:.06em; }

/* ---------- Search + Filter Bar ---------- */
.service-toolbar{
  background: var(--white); border-radius: var(--radius-pill); box-shadow: var(--shadow-sm);
  padding:.5rem; display:flex; align-items:center; gap:.5rem; max-width:520px; margin:0 auto 1rem;
}
.service-toolbar input{
  border:none; background:transparent; flex:1; padding:.5rem .8rem; font-family:var(--font-body); outline:none; color:var(--plum);
}
.service-toolbar i{ color:var(--rosegold-deep); padding-left:.6rem; }

.filter-chip-row{ display:flex; flex-wrap:wrap; gap:.5rem; justify-content:center; margin-bottom:2.2rem; }
.filter-chip{
  border:1.5px solid var(--beige-deep); background:var(--white); color:var(--plum-soft);
  padding:.45rem 1.1rem; border-radius:var(--radius-pill); font-size:.82rem; font-weight:600;
  cursor:pointer; transition:all var(--transition); user-select:none;
}
.filter-chip.active, .filter-chip:hover{ background: var(--grad-rosegold); border-color:transparent; color:#fff; }

/* ---------- Category Cards ---------- */
.category-card{
  background: var(--white); border-radius: var(--radius-lg); overflow:hidden;
  box-shadow: var(--shadow-sm); height:100%; cursor:pointer;
  transition: transform var(--transition), box-shadow var(--transition);
  position:relative;
}
.category-card:hover{ transform: translateY(-8px); box-shadow: var(--shadow-lg); }
.category-card .cat-img-wrap{ position:relative; height:170px; overflow:hidden; }
.category-card .cat-img-wrap img{ width:100%; height:100%; object-fit:cover; transition: transform .6s ease; }
.category-card:hover .cat-img-wrap img{ transform: scale(1.09); }
.category-card .cat-icon{
  position:absolute; bottom:-22px; left:18px;
  width:52px;height:52px;border-radius:16px; background:var(--grad-rosegold);
  display:flex; align-items:center; justify-content:center; color:#fff; font-size:1.3rem;
  box-shadow: var(--shadow-md);
}
.category-card .cat-body{ padding:2rem 1.3rem 1.3rem; }
.category-card h5{ font-weight:700; font-size:1.02rem; margin-bottom:.3rem; }
.category-card p{ font-size:.84rem; color:var(--plum-soft); margin-bottom:1rem; min-height:40px;}
.category-card .cat-cta{
  display:flex; align-items:center; justify-content:space-between;
  font-size:.82rem; font-weight:700; color:var(--rosegold-deep);
}
.ribbon-badge{
  position:absolute; top:14px; right:14px; z-index:2;
  background: rgba(255,255,255,0.92); color:var(--rosegold-deep);
  font-size:.68rem; font-weight:700; padding:.3rem .7rem; border-radius:var(--radius-pill);
  letter-spacing:.03em; box-shadow: var(--shadow-sm);
}

/* ---------- Today's Special Banner ---------- */
.special-banner{
  background: var(--grad-rosegold);
  border-radius: var(--radius-lg);
  padding: 1.8rem 2rem;
  color:#fff;
  display:flex; align-items:center; justify-content:space-between; gap:1.5rem; flex-wrap:wrap;
  box-shadow: var(--shadow-md);
  position:relative; overflow:hidden;
}
.special-banner::after{
  content:"✦"; position:absolute; font-size:8rem; opacity:.12; right:-1rem; top:-2.5rem; font-family:var(--font-display);
}
.special-banner h4{ color:#fff; margin-bottom:.2rem; }
.special-banner p{ margin-bottom:0; opacity:.9; font-size:.9rem; }

/* ---------- Service item in modal ---------- */
.service-line{
  display:flex; align-items:center; gap:1rem;
  background: var(--beige); border-radius: var(--radius-md);
  padding:.8rem; margin-bottom:.8rem;
  transition: background var(--transition);
}
.service-line:hover{ background: var(--pink-soft); }
.service-line img{ width:64px; height:64px; border-radius:14px; object-fit:cover; flex-shrink:0; }
.service-line .info{ flex:1; min-width:0; }
.service-line .info h6{ font-weight:700; margin-bottom:.15rem; font-size:.92rem; display:flex; align-items:center; gap:.4rem; flex-wrap:wrap;}
.service-line .info .meta{ font-size:.76rem; color:var(--plum-soft); }
.service-line .price{ font-weight:700; color:var(--rosegold-deep); white-space:nowrap; font-family:var(--font-display); font-size:1.05rem;}
.badge-mini{ font-size:.6rem; padding:.18rem .5rem; border-radius:var(--radius-pill); font-weight:700; letter-spacing:.02em;}
.badge-popular{ background:#FCE8CF; color:#9C6A1F; }
.badge-new{ background:#DCF0E3; color:#2E7D4F; }

/* ---------- Packages ---------- */
.package-card{
  background: var(--white); border-radius: var(--radius-lg); padding:2rem 1.6rem;
  box-shadow: var(--shadow-sm); height:100%; position:relative; transition: transform var(--transition), box-shadow var(--transition);
  border: 2px solid transparent;
}
.package-card:hover{ transform: translateY(-6px); box-shadow:var(--shadow-lg); }
.package-card.featured{ border-color: var(--rosegold-deep); }
.package-card .pkg-tag{
  position:absolute; top:-13px; left:50%; transform:translateX(-50%);
  background: var(--grad-rosegold); color:#fff; font-size:.68rem; font-weight:700;
  padding:.35rem 1rem; border-radius:var(--radius-pill); letter-spacing:.05em;
}
.package-card h5{ font-weight:700; }
.package-card .price{ font-family:var(--font-display); font-size:2.2rem; color:var(--rosegold-deep); margin:.4rem 0; }
.package-card .price span{ font-size:.9rem; color:var(--plum-soft); font-family:var(--font-body); }
.package-card ul{ list-style:none; padding:0; margin:1.2rem 0; }
.package-card ul li{ font-size:.86rem; padding:.35rem 0; color:var(--plum-soft); display:flex; gap:.5rem; align-items:flex-start; }
.package-card ul li i{ color:#2E7D4F; margin-top:.2rem; }

/* ---------- Testimonials ---------- */
.testimonial-track-wrap{ overflow:hidden; position:relative; }
.testimonial-track-wrap::before, .testimonial-track-wrap::after{
  content:""; position:absolute; top:0; bottom:0; width:60px; z-index:2; pointer-events:none;
}
.testimonial-track-wrap::before{ left:0; background:linear-gradient(90deg, var(--ivory), transparent); }
.testimonial-track-wrap::after{ right:0; background:linear-gradient(-90deg, var(--ivory), transparent); }
.testimonial-track{ display:flex; gap:1.3rem; width:max-content; animation: scrollX 38s linear infinite; }
.testimonial-track:hover{ animation-play-state:paused; }
@keyframes scrollX{ from{ transform:translateX(0);} to{ transform:translateX(-50%);} }
.testimonial-card{
  width:320px; flex-shrink:0; background:var(--white); border-radius:var(--radius-lg);
  padding:1.6rem; box-shadow:var(--shadow-sm);
}
.testimonial-card .stars{ color:#E6A93C; font-size:.85rem; margin-bottom:.6rem; }
.testimonial-card p{ font-size:.9rem; color:var(--plum-soft); font-style:italic; min-height:80px;}
.testimonial-card .person{ display:flex; align-items:center; gap:.7rem; margin-top:1rem; }
.testimonial-card .person img{ width:44px; height:44px; border-radius:50%; object-fit:cover; }
.testimonial-card .person strong{ font-size:.88rem; display:block; }
.testimonial-card .person span{ font-size:.74rem; color:var(--plum-soft); }

/* ---------- Team ---------- */
.team-card{
  background: var(--white); border-radius: var(--radius-lg); overflow:hidden; box-shadow:var(--shadow-sm);
  transition: transform var(--transition), box-shadow var(--transition);
}
.team-card:hover{ transform: translateY(-8px); box-shadow:var(--shadow-lg); }
.team-card .team-img{ height:230px; overflow:hidden; }
.team-card .team-img img{ width:100%; height:100%; object-fit:cover; transition: transform .5s ease; }
.team-card:hover .team-img img{ transform:scale(1.06); }
.team-card .team-body{ padding:1.2rem; text-align:center; }
.team-card h6{ font-weight:700; margin-bottom:.15rem; }
.team-card .role{ font-size:.78rem; color:var(--rosegold-deep); font-weight:600; margin-bottom:.4rem; }
.team-card .exp{ font-size:.76rem; color:var(--plum-soft); margin-bottom:.7rem;}
.team-card .socials a{
  width:32px; height:32px; border-radius:50%; background:var(--beige); display:inline-flex;
  align-items:center; justify-content:center; color:var(--rosegold-deep); margin:0 .2rem; font-size:.8rem; transition:all var(--transition);
}
.team-card .socials a:hover{ background:var(--grad-rosegold); color:#fff; }

/* ---------- Stats ---------- */
.stats-section{ background: var(--grad-rosegold); border-radius: var(--radius-lg); padding: 3rem 1.5rem; color:#fff; }
.stat-item{ text-align:center; }
.stat-item .stat-num{ font-family:var(--font-display); font-size: clamp(2rem,5vw,3rem); font-weight:700; }
.stat-item .stat-label{ font-size:.82rem; opacity:.9; letter-spacing:.03em; }

/* ---------- Gallery ---------- */
.gallery-grid{ column-count:2; column-gap:.9rem; }
@media(min-width:768px){ .gallery-grid{ column-count:3; } }
.gallery-item{ break-inside:avoid; margin-bottom:.9rem; border-radius:var(--radius-md); overflow:hidden; position:relative; cursor:pointer; box-shadow:var(--shadow-sm); }
.gallery-item img{ width:100%; display:block; transition: transform .5s ease; }
.gallery-item:hover img{ transform:scale(1.08); }
.gallery-item::after{
  content:"\F52A"; font-family:"bootstrap-icons"; position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  color:#fff; font-size:1.6rem; background:rgba(59,42,46,0); transition: background var(--transition), opacity var(--transition); opacity:0;
}
.gallery-item:hover::after{ background:rgba(59,42,46,0.35); opacity:1; }

/* ---------- FAQ ---------- */
.accordion-item{ background:transparent; border:none; margin-bottom:.8rem; border-radius:var(--radius-md) !important; overflow:hidden; box-shadow:var(--shadow-sm); }
.accordion-button{
  font-weight:600; background:var(--white); color:var(--plum); font-family:var(--font-body); font-size:.95rem;
  padding:1.1rem 1.3rem;
}
.accordion-button:not(.collapsed){ background: var(--pink-soft); color:var(--rosegold-deep); box-shadow:none; }
.accordion-button:focus{ box-shadow:none; }
.accordion-button::after{ filter: hue-rotate(280deg) saturate(1.5); }
.accordion-body{ background:var(--white); color:var(--plum-soft); font-size:.9rem; padding-top:0; }

/* ---------- Contact ---------- */
.contact-info-card{
  background: var(--white); border-radius:var(--radius-md); padding:1.3rem; box-shadow:var(--shadow-sm);
  display:flex; align-items:center; gap:1rem; margin-bottom:1rem;
}
.contact-info-card .icon-circle{
  width:48px;height:48px;border-radius:14px; background:var(--grad-rosegold-soft); color:var(--rosegold-deep);
  display:flex; align-items:center; justify-content:center; flex-shrink:0; font-size:1.1rem;
}
.contact-info-card h6{ margin-bottom:.1rem; font-weight:700; font-size:.9rem;}
.contact-info-card p{ margin-bottom:0; font-size:.83rem; color:var(--plum-soft);}
.map-placeholder{
  border-radius:var(--radius-lg); overflow:hidden; height:100%; min-height:280px; box-shadow: var(--shadow-sm);
  filter: sepia(15%) saturate(85%);
}

/* ---------- Footer ---------- */
footer{ background: var(--plum); color: #EADFDD; padding: 3.5rem 0 1.5rem; }
footer h6{ color:#fff; font-weight:700; margin-bottom:1rem; font-size:.92rem; letter-spacing:.03em;}
footer a{ color:#CBB2B4; text-decoration:none; font-size:.86rem; display:block; margin-bottom:.6rem; transition:color .25s; }
footer a:hover{ color:#fff; }
footer .footer-socials a{ display:inline-flex; width:38px; height:38px; border-radius:50%; background:rgba(255,255,255,0.08); align-items:center; justify-content:center; margin:0 .3rem .3rem 0; }
footer .footer-socials a:hover{ background: var(--grad-rosegold); }
footer hr{ border-color: rgba(255,255,255,0.12); }
.footer-bottom{ font-size:.78rem; color:#B69B9D; text-align:center; }

/* ---------- Floating Buttons ---------- */
.fab-stack{ position:fixed; right:1.1rem; bottom: calc(var(--bottomnav-h) + 1rem); z-index:1040; display:flex; flex-direction:column; gap:.7rem; }
@media(min-width:992px){ .fab-stack{ bottom:1.4rem; } }
.fab{
  width:52px; height:52px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  box-shadow: var(--shadow-md); font-size:1.3rem; color:#fff; border:none; transition:transform var(--transition);
}
.fab:hover{ transform: scale(1.08); }
.fab-whatsapp{ background:#25D366; }
.fab-call{ background: var(--grad-rosegold); }
.fab-top{ background: var(--white); color:var(--rosegold-deep); opacity:0; visibility:hidden; transform:translateY(10px); }
.fab-top.show{ opacity:1; visibility:visible; transform:translateY(0); }

/* ---------- Bottom Mobile Nav ---------- */
.bottom-nav{
  position:fixed; bottom:0; left:0; right:0; z-index:1035; height:var(--bottomnav-h);
  background: rgba(255,255,255,0.85); backdrop-filter: blur(18px);
  border-top: 1px solid rgba(255,255,255,0.6);
  display:flex; align-items:center; justify-content:space-around;
  box-shadow: 0 -8px 24px -12px rgba(59,42,46,0.15);
}
[data-theme="dark"] .bottom-nav{ background: rgba(34,26,28,0.9); border-color: rgba(255,255,255,0.06); }
@media(min-width:992px){ .bottom-nav{ display:none; } }
.bottom-nav a{
  display:flex; flex-direction:column; align-items:center; gap:.2rem; text-decoration:none;
  color:var(--plum-soft); font-size:.65rem; font-weight:600; flex:1; padding:.4rem 0;
}
.bottom-nav a i{ font-size:1.15rem; }
.bottom-nav a.active{ color: var(--rosegold-deep); }
.bottom-nav a.book-btn{
  color:#fff;
}
.bottom-nav a.book-btn i{
  background: var(--grad-rosegold); width:38px;height:38px;border-radius:50%; display:flex;align-items:center;justify-content:center;
  margin-top:-18px; box-shadow: var(--shadow-md); font-size:1.05rem;
}

/* ---------- Scroll Reveal ---------- */
.reveal{ opacity:0; transform: translateY(28px); transition: opacity .7s ease, transform .7s ease; }
.reveal.in{ opacity:1; transform:translateY(0); }

/* ---------- Modals ---------- */
.modal-content{ border-radius: var(--radius-lg); border:none; box-shadow: var(--shadow-lg); background:var(--ivory); }
.modal-header{ border-bottom:1px solid var(--beige-deep); padding:1.2rem 1.4rem; }
.modal-title-wrap h5{ margin-bottom:0; }
.modal-title-wrap span{ font-size:.78rem; color:var(--plum-soft); }
.modal-body{ padding:1.4rem; }
.form-control, .form-select{
  border-radius: var(--radius-sm); border:1.5px solid var(--beige-deep); padding:.65rem .9rem; font-size:.9rem;
  background: var(--white); color:var(--plum);
}
.form-control:focus, .form-select:focus{ border-color: var(--rosegold-deep); box-shadow: 0 0 0 .2rem rgba(196,138,147,0.18); background:var(--white); color:var(--plum);}
.form-label{ font-size:.82rem; font-weight:600; color:var(--plum); margin-bottom:.35rem;}
.readonly-field{ background: var(--beige) !important; font-weight:600; color:var(--rosegold-deep) !important;}

/* Lightbox modal */
.lightbox-modal .modal-content{ background:transparent; box-shadow:none; }
.lightbox-modal img{ width:100%; border-radius: var(--radius-md); }

/* ---------- Toast ---------- */
.toast{ border-radius: var(--radius-md); border:none; box-shadow: var(--shadow-lg); overflow:hidden;}
.toast-header{ border-bottom:none; }

/* ---------- Utilities ---------- */
.text-rosegold{ color: var(--rosegold-deep) !important; }
.z-1{ z-index:1; }
@media (prefers-reduced-motion: reduce){
  *{ animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; scroll-behavior:auto !important; }
}
img{ max-width:100%; }
.card-img-skeleton{ background: linear-gradient(90deg, var(--beige) 25%, var(--beige-deep) 37%, var(--beige) 63%); background-size:400% 100%; animation: shimmer 1.4s ease infinite; }
@keyframes shimmer{ 0%{background-position:100% 50%;} 100%{background-position:0 50%;} }

:focus-visible{ outline: 2px solid var(--rosegold-deep); outline-offset:2px; }
