/* ============================================
   Elia Martine — Stylesheet
   ============================================ */

[data-aos="fade-up"] { transform: translate3d(0, 20px, 0) !important; }
[data-aos="fade-up"].aos-animate { transform: translate3d(0, 0, 0) !important; }
[data-aos="fade-left"] { transform: translate3d(20px, 0, 0) !important; }
[data-aos="fade-left"].aos-animate { transform: translate3d(0, 0, 0) !important; }
[data-aos="fade-right"] { transform: translate3d(-20px, 0, 0) !important; }
[data-aos="fade-right"].aos-animate { transform: translate3d(0, 0, 0) !important; }

:root {
  --primary: #9b8779;
  --primary-hover: #8b7968;
  --header-bg: #222;
  --text: #2e2e2e;
  --text-light: #999;
  --bg: #ecebe9;
  --bg-cream: #ecebe9;
  --border: #ddd;
  --border-warm: #e6ddd8;
  --text-default: #2e2e2e;
  --error: #c0392b;
  --success: #4caf50;
  --font-heading: 'STIX Two Text', serif;
  --font-body: 'Montserrat', sans-serif;
}

/* --- Reset --- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--font-body);
  font-size: 16px;
  color: #333;
  background: var(--bg);
  line-height: 30px;
  padding-top: 100px;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--primary); text-decoration: none; transition: color .2s; }
a:hover { color: var(--primary-hover); }
ul { list-style: none; }
h1, h2, h3, h4 {
  font-family: var(--font-heading);
  font-weight: 400;
  text-transform: uppercase;
  letter-spacing: -0.02em;
  line-height: 1.2;
  color: rgb(34, 34, 34);
}
h1 { font-size: clamp(36px, 6vw, 80px); }
h2 { font-size: 35px; line-height: 50px; letter-spacing: -1.1px; }
h3 { font-size: clamp(18px, 2vw, 24px); }
h2 em { font-style: italic; }
p { color: rgb(46, 46, 46); }
button, input, select, textarea { font-family: inherit; font-size: inherit; border: none; outline: none; background: none; }

/* --- Utility --- */
.container { max-width: 1200px; margin: 0 auto; padding: 0 24px; }
.container--wide { max-width: 1600px; }
.text-center { text-align: center; }
.text-right { text-align: right; }
.text-muted { color: var(--text-light); }
.section { padding: 80px 0; }
.section--white { background: #fff; }
.section--padded-sm { padding: 24px 0 60px; }
.section--cream { background: var(--bg-cream); }
.prose { }
.prose p { margin-bottom: 24px; }
.prose p:last-child { margin-bottom: 0; }
.narrow { max-width: 1220px; margin-left: auto; margin-right: auto; }
.narrow--sm { max-width: 1060px; margin-left: auto; margin-right: auto; }
.narrow--xs { max-width: 960px; margin-left: auto; margin-right: auto; }
.narrow--form { max-width: 600px; margin-left: auto; margin-right: auto; }
.narrow--lg { max-width: 900px; margin-left: auto; margin-right: auto; }
.mt-0 { margin-top: 0; }
.mt-8 { margin-top: 8px; }
.mt-16 { margin-top: 16px; }
.mt-20 { margin-top: 20px; }
.mt-40 { margin-top: 40px; }
.mt-48 { margin-top: 48px; }
.mb-8 { margin-bottom: 8px; }
.mb-24 { margin-bottom: 24px; }
.mb-32 { margin-bottom: 32px; }
.mb-40 { margin-bottom: 40px; }
.pt-0 { padding-top: 0; }
.pt-48 { padding-top: 48px; }
.pb-48 { padding-bottom: 48px; }
.aspect-square { width: 100%; aspect-ratio: 1/1; object-fit: cover; }
.section--accent { background: #9b8779; color: #fff; }
.section--accent h2, .section--accent h3 { color: #fff; }
.section--accent p { color: rgba(255,255,255,.85); }
.section--dark-text,
.section--dark-text h2, .section--dark-text h3 { color: var(--text); }
.section--dark-text p { color: var(--text); }

/* About — cover image + text | image */
.about-know { padding: 0; overflow: hidden; }
.about-know__cover {
  width: 100%;
  height: 400px;
  overflow: hidden;
}
.about-know__cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
}
.about-know__layout {
  display: grid;
  grid-template-columns: 1fr 2fr 1fr;
  min-height: 550px;
}
.about-know__layout--single { grid-template-columns: 1fr; min-height: auto; }
.about-know__layout--single-img {
  grid-template-columns: 2fr 1fr;
}
.about-know__img { overflow: hidden; }
.about-know__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .6s ease;
}
.about-know__img:hover img { transform: scale(1.05); }
.about-know__text {
  padding: 60px 80px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
@media (max-width: 900px) {
  .about-know__cover { height: 300px; }
  .about-know__layout,
  .about-know__layout--single-img {
    grid-template-columns: 1fr;
  }
  .about-know { padding: 0; }
  .about-know__img--left,
  .about-know__img--right { display: none; }
  .about-know__layout { min-height: auto; }
  .about-know__text { padding: 40px 24px; }
}


/* ============================================
   HEADER — dark #222, burger nav
   Desktop: expands below header bar
   Mobile: fullscreen overlay
   ============================================ */
.site-header {
  position: absolute;
  top: 0; left: 0; right: 0;
  z-index: 1000;
  background: var(--header-bg);
  height: 100px;
}
.nav {
  position: relative;
  width: 100%;
  padding: 0 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 100%;
}
.nav__logo img { height: 54px; width: auto; }

.nav__burger {
  cursor: pointer;
  display: flex;
  flex-direction: column;
  gap: 5px;
  z-index: 1001;
  padding: 8px;
  width: 40px;
}
.nav__burger span {
  display: block;
  width: 24px;
  height: 2px;
  background: #fff;
  transition: transform .3s, opacity .3s;
}
.nav__burger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav__burger.open span:nth-child(2) { opacity: 0; }
.nav__burger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Desktop: slide in from right within header bar */
.nav__links {
  position: absolute;
  top: 0; right: 48px;
  height: 100px;
  background: var(--header-bg);
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 32px;
  padding: 0 24px;
  transform: translateX(100%);
  opacity: 0;
  transition: transform .35s ease, opacity .3s ease;
  z-index: 999;
}
.nav__links.open { transform: translateX(0); opacity: 1; }
.nav__links li a,
.nav__links li span {
  color: #fff;
  font-family: var(--font-body);
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  white-space: nowrap;
  transition: color .2s;
  cursor: pointer;
}
.nav__links li a:hover,
.nav__links li a.active { color: var(--primary); }

/* Dropdown inside nav panel */
.nav__dropdown { position: relative; }
.nav__dropdown-menu {
  display: none;
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  padding: 16px 24px;
  min-width: 180px;
  text-align: center;
  background: #222;
  border-radius: 3px;
}
.nav__dropdown.open .nav__dropdown-menu {
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: center;
}
.nav__dropdown-menu a { font-size: 13px !important; color: #ccc !important; }
.nav__dropdown-menu a:hover,
.nav__dropdown-menu a.active { color: var(--primary) !important; }
.nav__dropdown-toggle { display: inline-flex; align-items: center; gap: 4px; }
.nav__dropdown-toggle::after { content: '+'; font-size: 13px; font-weight: 600; line-height: 1; }
.nav__dropdown.open .nav__dropdown-toggle::after { content: '\2212'; }
@media (min-width: 901px) {
  .nav__dropdown:hover .nav__dropdown-menu { display: flex; flex-direction: column; gap: 10px; align-items: center; }
  .nav__dropdown:hover .nav__dropdown-toggle::after { content: '\2212'; }
}

/* Mobile: fullscreen overlay */
@media (max-width: 900px) {
  .nav__links {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    height: auto;
    flex-direction: column;
    justify-content: center;
    gap: 24px;
    padding: 0;
    transform: translateX(100%);
  }
  .nav__links li a,
  .nav__links li span { font-size: 18px; }
  .nav__dropdown-menu {
    position: static;
    transform: none;
    min-width: 0;
    padding: 8px 0 0 0;
  }
}


/* ============================================
   HERO — bg image, text at bottom
   ============================================ */
.hero {
  position: relative;
  min-height: 85vh;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  overflow: hidden;
  color: #ece9e8;
  margin-top: -1px;
}
.hero--full { min-height: 85vh; }
.hero--short { min-height: 85vh; }
.hero--dashboard { min-height: 0; height: 300px; align-items: center; padding: 60px 0 0; box-sizing: border-box; }
.hero--dashboard .hero__content { padding: 24px; }
.hero--dashboard .hero__content h1 { font-size: clamp(22px, 3vw, 36px); }
.hero--dashboard .hero__content p { color: #fff; }
.hero--dashboard-sub { padding: 10px 0 0; }
.hero--dashboard-sub .hero__content h1 { margin-bottom: 0; }
.hero--dashboard-sub .hero__content h1,
.hero--dashboard-sub .hero__content p { animation: none; }
@media (max-width: 600px) {
  .hero--dashboard { height: 200px; padding-top: 50px; }
  .hero--dashboard .hero__content h1 { font-size: 24px !important; }
  .hero--dashboard-sub { padding-top: 8px; }
}
.hero--contact { min-height: 55vh; }
.hero--about { min-height: 85vh; overflow: visible; margin-bottom: 0; }
.hero--about .hero__bg { background-position: center center; }
.hero--about .hero__content {
  position: absolute;
  bottom: 0;
  left: 0; right: 0;
  z-index: 2;
  padding: 0;
  max-width: none;
}
.hero--about .hero__content h1 {
  font-size: clamp(48px, 12vw, 150px);
  font-weight: 400;
  line-height: 1;
  letter-spacing: -0.02em;
  margin-bottom: -0.45em;
}

/* Gallery hero */
.hero--gallery { min-height: calc(100vh - 100px); margin-bottom: 0; align-items: flex-end; }
.hero--gallery .hero__bg::after { content: ''; display: block; position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,.5), transparent); }
.hero--gallery .hero__content { padding-bottom: 5%; }
.hero--gallery .hero__content h1 { font-size: clamp(40px, 8vw, 80px); letter-spacing: -1.1px; animation: galleryFadeUp 1.2s ease-out both; }
.hero--gallery .hero__content .hero__subtitle { animation: galleryFadeUp 1.2s ease-out .15s both; }
@keyframes galleryFadeUp {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
.hero__subtitle {
  display: block;
  font-family: var(--font-body);
  font-size: clamp(13px, 2vw, 20px);
  letter-spacing: 0.08em;
  margin-top: 8px;
}

/* Crossfade carousel */
.hero--carousel { min-height: 85svh; }
.hero__slide {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center top;
  opacity: 0;
  transition: opacity 1.5s ease-in-out;
}
.hero__slide.active { opacity: 1; }
.hero__slide--home-1 { background-image: url('/assets/images/home-hero-1.jpg'); }
.hero__slide--home-2 { background-image: url('/assets/images/home-hero-2.jpg'); }
.hero__slide--home-3 { background-image: url('/assets/images/home-hero-3.jpg'); background-position: center center; }
.hero__slide--home-4 { background-image: url('/assets/images/home-hero-4.jpg'); }
.hero--plain {
  min-height: 0;
  padding: 80px 0;
  background: var(--bg-cream);
  color: var(--text);
  align-items: center;
}
.hero__bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center top;
  z-index: 0;
}
.hero__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
}
.hero--video-paused .hero__video { cursor: pointer; }
.hero--video-paused::after {
  content: '';
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 60px; height: 60px;
  background: rgba(0,0,0,.4);
  border-radius: 50%;
  z-index: 2;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpolygon points='8,5 19,12 8,19'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 24px;
}
.hero__bg::after {
  display: none;
}
.hero--plain .hero__bg::after { display: none; }
.hero__content {
  position: relative;
  z-index: 1;
  text-align: center;
  max-width: 900px;
  padding: 40px 24px 60px;
}
.hero__content--wait { opacity: 0 !important; transform: translate3d(0, 20px, 0) !important; transition: none !important; }
.hero__content h1 {
  margin-bottom: 16px;
  text-shadow: 0 2px 20px rgba(0,0,0,.3);
  color: #ece9e8;
  font-size: clamp(40px, 8vw, 120px);
  animation: heroFadeUp .8s ease-out both;
}
.hero__content p {
  animation: heroFadeUp .8s ease-out .2s both;
}
.hero__content .btn {
  animation: heroFadeUp .8s ease-out .4s both;
}
@keyframes heroFadeUp {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}
.hero__content p {
  font-size: 15px;
  max-width: 680px;
  margin: 0 auto 24px;
  opacity: .9;
}
.hero--plain .hero__content h1 { text-shadow: none; color: var(--text); }
.hero--plain .hero__content p { color: var(--text); }


/* ============================================
   BUTTONS
   ============================================ */
.btn {
  display: inline-block;
  padding: 10px 24px;
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 600;
  text-transform: none;
  letter-spacing: 0.12em;
  cursor: pointer;
  border-radius: 3px;
  transition: background .2s, color .2s, border-color .2s;
}
.btn--primary { background: var(--primary); color: #fff; border: 1px solid var(--primary); }
.btn--primary:hover { background: var(--primary-hover); border-color: var(--primary-hover); color: #fff; }
.btn--primary:disabled, .btn--primary[disabled] { opacity: 0.5; cursor: not-allowed; pointer-events: none; }
.btn--outline { background: transparent; color: var(--text); border: 1px solid var(--text); }
.btn--outline:hover { background: var(--text); color: #fff; }
.btn--white { background: transparent; color: #fff; border: 1px solid #fff; text-transform: uppercase; }
.btn--white:hover { background: #fff; color: var(--text); }
.btn--dark { background: rgb(51, 51, 51); color: #fff; border: 1px solid rgb(51, 51, 51); font-size: 15px; font-weight: 400; line-height: 18px; letter-spacing: -1.1px; border-radius: 6px; }
.btn--dark:hover { background: #9b8779; border-color: #9b8779; color: #fff; }
.btn--dark:disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; }
.btn--solid-dark { background: #000; color: #fff; border: 1px solid #000; }
.btn--solid-dark:hover { background: #222; border-color: #222; color: #fff; }


/* ============================================
   GRID / TWO-COL
   ============================================ */
.grid { display: grid; gap: 32px; }
.grid--3 { grid-template-columns: repeat(3, 1fr); }
.grid--4 { grid-template-columns: repeat(4, 1fr); }
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; }
.two-col--form { display: grid; grid-template-columns: 3fr 2fr; gap: 40px; align-items: stretch; }
.two-col--form-img img { width: 100%; height: 100%; object-fit: cover; }


/* ============================================
   SERVICE CARDS
   ============================================ */
.service-card { text-align: center; display: block; color: inherit; }
.service-card:hover { color: inherit; }
.service-card__img { position: relative; overflow: hidden; }
.service-card__img img { width: 100%; aspect-ratio: 3/4; object-fit: cover; display: block; transition: transform .6s ease; }
.service-card:hover .service-card__img img { transform: scale(1.05); }
.service-card__overlay {
  position: absolute; inset: 0;
  background: rgba(0,0,0,.55);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 24px;
  opacity: 0;
  transition: opacity .35s ease;
}
.service-card:hover .service-card__overlay { opacity: 1; }
.service-card__overlay h4 { color: #fff; font-size: 22px; font-weight: 400; line-height: 1.2em; margin-bottom: 12px; }
.service-card__overlay p { line-height: 1.8; color: #fff; margin: 0; }
.service-card h3 {
  position: absolute; bottom: 0; left: 0; right: 0;
  margin: 0; padding: 24px 16px 20px;
  background: linear-gradient(to top, rgba(0,0,0,.75) 0%, rgba(0,0,0,.35) 30%, transparent 55%);
  color: #fff; font-size: 22px; font-weight: 400; line-height: 1.2em;
  transition: opacity .35s ease;
}
.service-card:hover h3 { opacity: 0; }

/* Private Clients — service sections */
.pc-service__img { overflow: hidden; }
.pc-service__img img {
  width: 100%;
  aspect-ratio: 3/4;
  object-fit: cover;
  transition: transform .6s ease;
}
.pc-service__img:hover img { transform: scale(1.05); }
.pc-service__img--grayscale img { filter: grayscale(1); }


/* ============================================
   PORTFOLIO GRID
   ============================================ */
.portfolio-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.portfolio-grid--4 { grid-template-columns: repeat(4, 1fr); }
.portfolio-card { position: relative; overflow: hidden; display: block; aspect-ratio: 3/4; }
.portfolio-card__img {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transition: transform .5s ease;
}
.portfolio-card:hover .portfolio-card__img { transform: scale(1.05); }
.portfolio-card__overlay {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: flex-end;
  padding: 24px;
  background: rgba(0,0,0,.55);
  color: #fff;
  opacity: 0;
  transition: opacity .3s;
}
.portfolio-card:hover .portfolio-card__overlay { opacity: 1; }
.portfolio-card__name { font-family: var(--font-heading); font-size: 28px; text-transform: uppercase; letter-spacing: -0.02em; text-align: center; }
.portfolio-card__location { font-size: 14px; letter-spacing: 0.05em; opacity: .8; margin-top: 4px; }
.portfolio-card__label {
  position: absolute; bottom: 0; left: 0; right: 0;
  margin: 0; padding: 24px 16px 20px;
  background: linear-gradient(to top, rgba(0,0,0,.55) 0%, rgba(0,0,0,.2) 30%, transparent 55%);
  color: #fff; font-family: var(--font-heading); font-size: 22px;
  text-transform: uppercase; letter-spacing: -0.02em; text-align: center;
  transition: opacity .3s;
  display: none;
}
.portfolio-card:hover .portfolio-card__label { opacity: 0; }

/* ============================================
   MASONRY — CSS columns layout for editorial
   ============================================ */
.masonry {
  position: relative;
  --masonry-cols: 3;
  --masonry-gap: 16px;
}
.masonry--4 { --masonry-cols: 4; }
.masonry__item {
  position: absolute;
  overflow: hidden;
  cursor: pointer;
  text-decoration: none;
  color: inherit;
  transition: transform .5s ease, opacity .5s ease;
}
.masonry__item img {
  width: 100%;
  display: block;
  transition: transform .5s ease, opacity .5s ease;
}
.masonry__item img[loading="lazy"] {
  opacity: 0;
}
.masonry__item img.loaded {
  opacity: 1;
}
.masonry__item:hover img {
  transform: scale(1.05);
}
.masonry__overlay {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 2px; padding-top: 10px;
  background: rgba(0,0,0,.55);
  color: #fff; opacity: 0; transition: opacity .3s;
}
.masonry__item:hover .masonry__overlay { opacity: 1; }
.masonry__item:hover .masonry__label { opacity: 0; }
.masonry__name { font-family: var(--font-heading); font-size: 28px; text-transform: uppercase; letter-spacing: -0.02em; text-align: center; line-height: 1.1; }
.masonry__location { font-size: 13px; letter-spacing: 0.12em; opacity: .8; text-transform: uppercase; }
.masonry__label {
  position: absolute; bottom: 0; left: 0; right: 0;
  margin: 0; padding: 12px 16px 14px;
  background: linear-gradient(to top, rgba(0,0,0,.55) 0%, rgba(0,0,0,.2) 30%, transparent 55%);
  color: #fff; font-family: var(--font-heading); font-size: 18px;
  text-transform: uppercase; letter-spacing: 0.02em; text-align: center;
  transition: opacity .3s;
  display: none;
}
@media (max-width: 900px) {
  .masonry, .masonry--4 { --masonry-cols: 2; }
}
@media (max-width: 480px) {
  .masonry { --masonry-gap: 8px; }
}

/* ============================================
   BRIDES CAROUSEL — 3 visible, arrows to slide
   ============================================ */
.brides-carousel { position: relative; padding: 0 56px; }
.brides-carousel__viewport { overflow: hidden; }
.brides-carousel__track {
  display: flex; gap: 16px;
  transition: transform .5s ease;
}
.brides-carousel__card {
  position: relative; overflow: hidden; display: block;
  height: 600px; flex: 0 0 calc((100% - 32px) / 3); max-width: 420px;
}
.brides-carousel__img {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transition: transform .5s ease;
}
.brides-carousel__card:hover .brides-carousel__img { transform: scale(1.05); }
.brides-carousel__overlay {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 24px;
  background: rgba(0,0,0,.45);
  color: #fff;
  opacity: 0;
  transition: opacity .3s;
}
.brides-carousel__card:hover .brides-carousel__overlay { opacity: 1; }
.brides-carousel__name {
  font-family: var(--font-heading); font-size: 32px;
  text-transform: uppercase; letter-spacing: -0.02em;
}
.brides-carousel__location { font-size: 16px; letter-spacing: 0.05em; opacity: .8; margin-top: 6px; }
.brides-carousel__arrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  background: rgba(0,0,0,.5); border: none; cursor: pointer;
  color: #fff; font-size: 0; width: 48px; height: 48px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%; transition: background .2s; z-index: 2;
}
.brides-carousel__arrow:hover { background: rgba(0,0,0,.75); }
.brides-carousel__prev { left: 0; }
.brides-carousel__next { right: 0; }

@media (max-width: 900px) {
  .brides-carousel { padding: 0 56px; }
  .brides-carousel__card { flex: 0 0 calc((100% - 16px) / 2); }
}
@media (max-width: 600px) {
  .brides-carousel { padding: 0; }
  .brides-carousel__card { flex: 0 0 100%; max-width: none; }
  .brides-carousel__prev { left: 8px; }
  .brides-carousel__next { right: 8px; }
}


/* ============================================
   CTA SECTION
   ============================================ */
.cta-section { padding: 80px 0; background: #fff; text-align: center; }
.cta-section h2 { margin-bottom: 16px; text-transform: none; }
.cta-section p { max-width: 860px; margin: 0 auto 28px; }
.cta-section .btn { font-size: 15px; font-weight: 400; line-height: 18px; letter-spacing: -1.1px; border-radius: 6px; }


/* ============================================
   INSTAGRAM GRID — full-width edge-to-edge
   ============================================ */
.instagram-section { position: relative; overflow: hidden; }
.instagram-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 0; transition: opacity .3s; }
.instagram-grid img { width: 100%; aspect-ratio: 1; object-fit: cover; display: block; filter: brightness(.7); transition: filter .3s; }
.instagram-section:hover .instagram-grid img { filter: brightness(.5); }
.instagram-section__overlay {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  pointer-events: none;
}
.instagram-section__overlay a {
  pointer-events: auto;
  font-size: 12px;
  text-shadow: 0 2px 10px rgba(0,0,0,.4);
}
.instagram-section__overlay a:hover {
  background: rgba(255,255,255,.2);
  color: #fff;
  border-color: #fff;
}
@media (max-width: 768px) {
  .instagram-section__overlay a { font-size: 8px; padding: 4px 8px; }
  .instagram-section--mobile-four .instagram-grid { grid-template-columns: repeat(4, 1fr); }
  .instagram-section--mobile-four .instagram-grid img:first-child,
  .instagram-section--mobile-four .instagram-grid img:last-child { display: none; }
}


/* ============================================
   GALLERY
   ============================================ */
.gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.gallery img { width: 100%; aspect-ratio: 1; object-fit: cover; cursor: pointer; transition: transform .3s; }
.gallery img:hover { transform: scale(1.03); }


/* ============================================
   LIGHTBOX
   ============================================ */
.lightbox { position: fixed; inset: 0; background: rgba(0,0,0,.9); display: flex; align-items: center; justify-content: center; z-index: 9999; cursor: default; opacity: 0; visibility: hidden; transition: opacity .3s ease, visibility .3s ease; }
.lightbox.active { opacity: 1; visibility: visible; }
.lightbox__stage { position: relative; width: 80vw; height: 90vh; }
.lightbox__img { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); max-width: 100%; max-height: 100%; object-fit: contain; cursor: default; transition: opacity .25s ease; }
.lightbox__img--a { z-index: 1; }
.lightbox__img--b { z-index: 0; opacity: 0; }
.lightbox__counter { position: absolute; top: 20px; left: 24px; color: rgba(255,255,255,.7); font-size: 14px; letter-spacing: 0.1em; font-family: var(--font-body); }
.lightbox__close { position: absolute; top: 20px; right: 24px; color: #fff; font-size: 36px; cursor: pointer; line-height: 1; z-index: 1; }
.lightbox__prev,
.lightbox__next { position: absolute; top: 50%; transform: translateY(-50%); color: #fff; font-size: 56px; cursor: pointer; user-select: none; padding: 16px; line-height: 1; opacity: .7; transition: opacity .2s; }
.lightbox__prev:hover, .lightbox__next:hover { opacity: 1; }
.lightbox__prev { left: 12px; }
.lightbox__next { right: 12px; }
@media (max-width: 768px) {
  .lightbox__prev, .lightbox__next { font-size: 36px; padding: 12px; }
  .lightbox__prev { left: 4px; }
  .lightbox__next { right: 4px; }
}


/* ============================================
   SCROLLING MARQUEE
   ============================================ */
.marquee { overflow: hidden; white-space: nowrap; padding: 14px 0; background: var(--bg); }
.marquee__inner {
  display: inline-block;
  animation: marquee 80s linear infinite;
  font-family: var(--font-heading);
  font-size: 16px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--primary);
}
.marquee--accent { background: #9b8779; height: 100px; display: flex; align-items: center; }
.marquee--accent .marquee__inner { color: rgb(236, 235, 233); font-size: 3.5rem; font-weight: 200; text-transform: uppercase; letter-spacing: 2.5px; }
@keyframes marquee { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } }


/* ============================================
   FORMS — inline (contact, join team)
   ============================================ */
.form-section__heading { font-style: normal; margin-bottom: 8px; text-transform: none; }
.form-section__sub { margin-bottom: 32px; }

.form-inline label {
  display: block; font-size: 11px; text-transform: uppercase;
  letter-spacing: 0.08em; color: var(--text); margin-bottom: 6px; font-weight: 500;
}
.form-inline input[type="text"],
.form-inline input[type="email"],
.form-inline input[type="password"],
.form-inline input[type="tel"],
.form-inline select,
.form-inline textarea {
  display: block; width: 100%; padding: 12px 14px;
  border: 1px solid var(--border); background: #fff; border-radius: 3px;
  font-size: 14px; color: var(--text); transition: border-color .2s;
}
.form-inline input:focus,
.form-inline select:focus,
.form-inline textarea:focus { border-color: var(--primary); }
.form-inline textarea { min-height: 100px; resize: vertical; }
.form-inline select { cursor: pointer; appearance: auto; height: 46px; }
.form-inline select:invalid { color: #bbb; }
.form-inline select option { color: var(--text); }
.form-inline select option[disabled] { color: #bbb; }
.form-inline input[type="text"],
.form-inline input[type="email"],
.form-inline input[type="password"],
.form-inline input[type="tel"] { height: 46px; box-sizing: border-box; }
.form-inline ::placeholder { color: #bbb; }
.form-inline input[data-datepicker] { cursor: pointer; }

.form-row { margin-bottom: 14px; }
.form-row--two { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 14px; }
.form-actions { margin-top: 24px; display: flex; justify-content: center; gap: 12px; }
.form-actions .btn { padding: 10px 24px; text-align: center; text-transform: uppercase; }

.form-errors {
  display: none; padding: 12px 16px; background: #fdecea;
  color: var(--error); border: 1px solid var(--error); border-radius: 4px; font-size: 14px; font-weight: 500; margin-bottom: 20px;
}
.form-errors.visible { display: block; }
.form-success {
  display: none; padding: 14px 24px; background: #edf7ee;
  color: var(--success); border: 1px solid #c8e6c9; font-size: 14px; margin-bottom: 20px;
  max-width: 480px; margin-left: auto; margin-right: auto; text-align: center; border-radius: 6px;
}
.form-success.visible { display: block; }

/* Toast notifications */
.toast-wrap { position: fixed; top: 24px; left: 0; right: 0; display: flex; justify-content: center; pointer-events: none; z-index: 10000; }
.toast { padding: 14px 32px; border-radius: 8px; font-size: 14px; color: #fff; pointer-events: auto; animation: toastIn .3s ease-out; box-shadow: 0 4px 20px rgba(0,0,0,.18); }
.toast--success { background: #4caf50; }
.toast--error { background: #c0392b; }
.toast--leaving { animation: toastOut .3s ease-in forwards; }
@keyframes toastIn { from { opacity: 0; transform: translateY(-12px); } to { opacity: 1; transform: translateY(0); } }
@keyframes toastOut { from { opacity: 1; transform: translateY(0); } to { opacity: 0; transform: translateY(-12px); } }


/* ============================================
   FORMS — split layout (login, register, reset)
   ============================================ */
.form-page { min-height: calc(100dvh - 100px); display: flex; }
.form-page__image { flex: 1; min-height: 100%; position: relative; overflow: hidden; }
.form-page__image::after {
  content: '';
  position: absolute;
  inset: 0;
  background: inherit;
  background-size: cover;
  background-position: var(--img-pos, center);
  transition: transform .6s ease;
}
.form-page__image:hover::after { transform: scale(1.05); }
.form-page__image--villa { background-image: url('/assets/images/decorative-villa.webp'); }
.form-page__image--couple { background-image: url('/assets/images/decorative-couple.webp'); --img-pos: center top; }
.form-page__body { flex: 1; display: flex; align-items: center; justify-content: center; padding: 60px 40px; background: var(--bg); }
.form-card { width: 100%; max-width: 400px; }
.form-card--wide { max-width: 480px; }
.form-card h2 { margin-bottom: 32px; font-size: 32px; font-weight: 400; letter-spacing: 0.5px; text-align: center; }

.pw-wrap { position: relative; }
.pw-wrap input { padding-right: 40px; }
.pw-toggle { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); cursor: pointer; font-size: 18px; color: var(--text-light); user-select: none; }

.form-options { display: flex; justify-content: space-between; align-items: center; font-size: 13px; margin-bottom: 24px; }
.form-options label { display: flex; align-items: center; gap: 6px; cursor: pointer; }
.form-options input[type="checkbox"] { width: 14px; height: 14px; accent-color: var(--primary); }
.form-forgot { color: var(--primary); font-size: 13px; cursor: pointer; background: none; border: none; }
.form-forgot:hover { text-decoration: underline; }
.form-row--password, .form-options {
  transition: opacity .3s ease, max-height .4s ease, margin .3s ease;
  overflow: hidden;
}
.form-row--password.hiding, .form-options.hiding {
  opacity: 0; max-height: 0 !important; margin: 0; padding: 0; pointer-events: none;
}
.form-back { display: none; }
.form-back.showing { display: block; }
.form-link { text-align: center; margin-top: 24px; font-size: 13px; color: var(--text-light); }
.form-link a { color: var(--primary); }

.form-card .form-row label {
  display: block; font-size: 11px; text-transform: uppercase;
  letter-spacing: 0.08em; color: var(--text); margin-bottom: 6px; font-weight: 500;
}
.form-card .form-row input,
.form-card .form-row select,
.form-card .form-row textarea {
  width: 100%; padding: 12px 14px; border: 1px solid var(--border); border-radius: 3px;
  font-size: 14px; color: var(--text); background: #fff; transition: border-color .2s;
}
.form-card .form-row input:focus { border-color: var(--primary); }
.form-card .form-row input.error,
.field-error { border-color: var(--error) !important; }


/* ============================================
   CONTENT PAGES (legal, privacy, etc.)
   ============================================ */
.content-page { padding: 80px 0; }
.content-page__inner { max-width: 800px; margin: 0 auto; padding: 0 24px; }
.content-page h1 { margin-bottom: 32px; font-size: clamp(28px, 4vw, 48px); }
.content-page h2 { margin-top: 36px; margin-bottom: 12px; font-size: 20px; }
.content-page h3 { margin-top: 24px; margin-bottom: 8px; font-size: 16px; }
.content-page p { margin-bottom: 12px; color: #555; }
.content-page ul { padding-left: 20px; margin-bottom: 16px; list-style: disc; }
.content-page li { font-size: 14px; margin-bottom: 6px; color: #555; }
.content-page a { color: var(--primary); }
.content-page__inner--error { text-align: center; padding: 80px 20px; }
.content-page__inner--error h1 { font-size: 72px; margin-bottom: 8px; color: #9b8779; }
.content-page__inner--error p { font-size: 18px; margin-bottom: 32px; color: #666; }


/* ============================================
   PRICES PAGE
   ============================================ */
.prices-hero {
  position: relative; min-height: 60vh;
  display: flex; align-items: center; justify-content: center;
  text-align: center; color: #fff; overflow: hidden;
}
.prices-hero__bg { position: absolute; inset: 0; background-size: cover; background-position: center; }
.prices-hero__bg::after { content: ''; position: absolute; inset: 0; background: rgba(0,0,0,.35); }
.prices-hero__content { position: relative; z-index: 1; }
.prices-hero__year { font-size: 18px; margin-top: 8px; }
.prices-intro { text-align: center; max-width: 760px; margin: 0 auto 40px; }
.prices-hero__logo { font-family: var(--font-heading); font-size: 20px; font-style: italic; margin-bottom: 12px; }

.prices-section { padding: 60px 0; background: var(--bg-cream); }
.prices-table { width: 100%; border-collapse: collapse; margin: 24px 0 40px; }
.prices-table td { padding: 14px 0; border-bottom: 1px solid var(--border-warm); font-size: 14px; }
.prices-table td:last-child { text-align: right; font-weight: 500; white-space: nowrap; }
.prices-divider { width: 100%; min-height: 40vh; background-size: cover; background-position: center; }
.prices-disclaimer { background: var(--primary); color: #fff; padding: 24px; text-align: center; font-size: 13px; }


/* ============================================
   FOOTER — white bg
   ============================================ */
.site-footer { background: #fff; padding: 60px 24px 40px; text-align: center; }
.site-footer__logo { height: 64px; width: auto; margin: 0 auto 8px; }
.site-footer__divider { width: 60px; height: 1px; background: var(--border-warm); margin: 0 auto 40px; }
.site-footer__links { display: flex; justify-content: center; gap: 24px; flex-wrap: nowrap; }
.site-footer__links a { font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-light); white-space: nowrap; }
@media (max-width: 600px) {
  .site-footer__links { flex-wrap: wrap; gap: 12px 20px; }
}
.site-footer__links a:hover { color: var(--primary); }

/* ============================================
   ACCORDION (FAQ)
   ============================================ */
.accordion { max-width: 1000px; margin: 0 auto; }
.accordion__item { border-top: 1px solid var(--border); }
.accordion__item:first-child { border-top: none; }
.accordion__item:last-child { border-bottom: none; }
.accordion__toggle {
  width: 100%; display: flex; justify-content: space-between; align-items: center;
  padding: 18px 0; background: none; border: none; cursor: pointer;
  font-family: var(--font-body); font-size: 17px; font-weight: 500; color: var(--text);
  text-align: left;
}
.accordion__toggle:hover { color: var(--primary); }
.accordion__icon {
  font-size: 14px; transition: transform .3s;
}
.accordion__toggle[aria-expanded="true"] .accordion__icon { transform: rotate(180deg); }
.accordion__body {
  max-height: 0; overflow: hidden; transition: max-height .3s ease;
}
.accordion__body p {
  padding: 10px 30px 20px 30px;
}

/* ============================================
   REVIEWS CAROUSEL
   ============================================ */
.reviews-title { color: #fff; margin-bottom: 40px; font-size: 40px; line-height: 50px; letter-spacing: -1.1px; }
.bridal-full-img { width: 100%; height: 70vh; object-fit: cover; display: block; }
.join-team__title { font-size: clamp(28px, 5vw, 60px); font-weight: 400; line-height: 1.28; color: var(--primary); }
.dash-intro__title { font-size: clamp(22px, 3vw, 32px); font-weight: 400; line-height: 1.4; }
.reviews-section { padding-bottom: 100px; height: 460px; }
.reviews-carousel { position: relative; max-width: 1000px; margin: 0 auto; }
.reviews-carousel__track { position: relative; overflow: hidden; }
.reviews-carousel__slide {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0; padding: 0 60px;
  opacity: 0; transition: opacity .6s ease; pointer-events: none;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
}
.reviews-carousel__slide.active { opacity: 1; pointer-events: auto; }
.reviews-carousel__slide p {
  font-family: var(--font-body); font-weight: 400;
  font-size: 16px; color: rgba(255,255,255,.9);
  font-style: normal; margin-bottom: 16px;
}
.reviews-carousel__slide strong {
  font-family: var(--font-heading); font-weight: 400;
  font-size: 1.25rem; color: #fff; letter-spacing: -0.02em;
  text-transform: none;
}
.reviews-carousel__arrows {
  position: absolute; top: 50%; left: 0; right: 0;
  display: flex; justify-content: space-between; pointer-events: none;
  transform: translateY(-50%);
}
.reviews-carousel__arrow {
  pointer-events: auto; background: none; border: none; cursor: pointer;
  color: rgba(255,255,255,.7); font-size: 28px; padding: 8px;
  transition: color .2s;
}
.reviews-carousel__arrow:hover { color: #fff; }
.reviews-carousel__dots {
  display: flex; justify-content: center; gap: 16px; margin-top: 24px;
}
.reviews-carousel__dot {
  width: 9px; height: 9px; border-radius: 50%;
  background: rgba(255,255,255,.4); border: none; cursor: pointer;
  transition: background .2s;
}
.reviews-carousel__dot.active { background: #fff; }


/* ============================================
   DASHBOARD
   ============================================ */
.dash-tabs {
  display: flex; justify-content: center; gap: 32px;
  padding: 20px 24px; background: #fff;
  border-bottom: 1px solid var(--border);
}
.dash-tabs__link {
  font-family: var(--font-body); font-size: 14px;
  text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--text); padding: 8px 0;
  transition: color .2s;
}
.dash-tabs__link:hover { color: var(--primary); }
.dash-tabs__link.active { color: var(--primary); border-bottom: 2px solid var(--primary); }
.dash-tabs + .section { padding-top: 48px; }

.dash-schedule-images { position: relative; padding-bottom: 40px; padding-right: 40px; }
.dash-schedule-images__main { width: 85%; display: block; object-fit: cover; aspect-ratio: 3/4; }
.dash-schedule-images__overlay { position: absolute; bottom: 0; right: 0; width: 55%; object-fit: cover; aspect-ratio: 3/4; border: 6px solid var(--cream); }

@keyframes dashImgRevealLeft {
  from { opacity: 0; transform: translateX(-30px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes dashImgRevealUp {
  from { opacity: 0; transform: translateY(30px); }
  to   { opacity: 1; transform: translateY(0); }
}
.dash-img-reveal--delayed { animation-delay: .3s; }
.dash-schedule-images__main.dash-img-reveal { opacity: 0; animation: dashImgRevealLeft .8s ease-in-out both; }
.dash-schedule-images__overlay.dash-img-reveal { opacity: 0; animation: dashImgRevealUp .8s ease-in-out both; }

.bridal-payment-summary--centered { margin: 0 auto 24px; text-align: left; width: 100%; }
.payment-content--centered { text-align: center; display: flex; flex-direction: column; justify-content: center; }
.bp-overlay { display: none; position: fixed; inset: 0; z-index: 9999; background: rgba(255,255,255,.95); backdrop-filter: blur(6px); align-items: center; justify-content: center; flex-direction: column; gap: 24px; text-align: center; padding: 40px; }
.bp-overlay.active { display: flex; }
.bp-overlay__spinner { width: 52px; height: 52px; border: 3px solid #e8e0d8; border-top-color: #8b7355; border-radius: 50%; animation: bp-spin .8s linear infinite; }
.bp-overlay__icon { display: none; width: 52px; height: 52px; color: #c45; margin: 0 auto; }
.bp-overlay__title { font-family: var(--font-heading, serif); font-size: 26px; color: #2c2c2c; letter-spacing: .02em; margin: 0; }
.bp-overlay__subtitle { font-size: 15px; color: #888; margin: 0; max-width: 400px; }
.bp-overlay__actions { display: none; margin-top: 8px; flex-direction: column; align-items: center; gap: 10px; }
.bp-overlay__retry { padding: 12px 32px; background: #8b7355; color: #fff; border-radius: 6px; font-size: 14px; text-decoration: none; letter-spacing: .03em; cursor: pointer; }
.bp-overlay__return { font-size: 13px; color: #888; text-decoration: underline; }

.bridal-payment-row { display: flex; justify-content: space-between; align-items: center; padding: 10px 0; border-bottom: 1px solid #f0ebe8; gap: 24px; }
.bridal-payment-row:last-child { border-bottom: none; }
.bridal-payment-label { font-size: 14px; color: #666; }
.bridal-payment-value { font-size: 14px; font-weight: 600; color: #2e2e2e; }
.bridal-payment-balance { padding-top: 14px; margin-top: 4px; border-top: 2px solid #e0d8d2; border-bottom: none; }
.bridal-payment-balance .bridal-payment-label { font-weight: 600; color: #2e2e2e; font-size: 15px; }
.bridal-payment-balance .bridal-payment-value { font-size: 15px; }

.bridal-invoice-actions { text-align: center; margin-top: 20px; display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
.bridal-payment-history h3 { text-align: center; font-family: "STIX Two Text", serif; font-size: 32px; font-weight: 400; text-transform: uppercase; margin: 0 0 20px; color: #2e2e2e; letter-spacing: 0.5px; }
.bridal-history-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.bridal-history-table thead th { font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em; color: #999; font-weight: 500; padding: 10px 12px; text-align: left; border-bottom: 2px solid #e0d8d2; }
.bridal-history-table th.col-status,
.bridal-history-table td.col-status,
.bridal-history-table th.col-actions,
.bridal-history-table td.col-actions { text-align: center; }
.bridal-history-table tbody td { padding: 14px 12px; border-bottom: 1px solid #f0ebe8; color: #444; vertical-align: middle; }
.bridal-history-table tbody tr:last-child td { border-bottom: none; }
.bridal-history-badge { display: inline-block; padding: 3px 10px; border-radius: 12px; font-size: 11px; font-weight: 500; text-transform: uppercase; letter-spacing: 0.03em; line-height: 1.6; }
.bridal-history-badge--green { background: #e8f5e9; color: #4caf50; }
.bridal-history-badge--amber { background: #fff3e0; color: #e8a735; }
.bridal-history-badge--red { background: #ffebee; color: #e53935; }
.bridal-history-badge--gray { background: #f5f5f5; color: #999; }
.bridal-history-badge--deposit { background: #f3e5f5; color: #7e57c2; }
.bridal-history-badge--balance { background: #e3f2fd; color: #2196f3; }
.bridal-history-link { font-size: 13px; color: var(--primary); text-decoration: underline; }
.bridal-history-link:hover { color: var(--text); }
.bridal-history-download { display: inline-flex; align-items: center; justify-content: center; color: #999; padding: 4px; margin-left: 4px; transition: color .2s; }
.bridal-history-download:hover { color: var(--primary); }

.dash-steps { display: grid; grid-template-columns: 2fr 3fr; background: var(--primary); }
.dash-steps__image { position: relative; overflow: hidden; background: var(--primary); }
.dash-steps__image img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 20%; display: block; transition: transform .6s ease; }
.dash-steps__image:hover img { transform: scale(1.05); }
.dash-steps__content {
  background: var(--primary); color: #fff;
  padding: 60px 48px;
  display: flex; flex-direction: column; justify-content: center;
}
.dash-steps__content h3 { color: var(--text); font-size: 28px; margin-bottom: 40px; font-weight: 400; text-align: center; }
.dash-steps__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 40px 48px; }
.dash-steps__item h4 {
  font-family: var(--font-body); font-size: 14px; font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.04em;
  margin-bottom: 8px; color: #fff;
}
.dash-steps__content .dash-steps__item p { color: var(--text); }

@media (max-width: 900px) {
  .dash-steps { grid-template-columns: 1fr; }
  .dash-steps__image { max-height: 400px; }
  .dash-steps__image[data-aos="fade-right"] { transform: translate3d(0, 20px, 0); }
  .dash-steps__image[data-aos="fade-right"].aos-animate { transform: translate3d(0, 0, 0); }
  .dash-steps__content { padding: 40px 24px; }
  .dash-tabs { gap: 20px; }
  .dash-tabs__link { font-size: 13px; }
}
@media (max-width: 600px) {
  .dash-steps__grid { grid-template-columns: 1fr; gap: 24px; }
  .dash-tabs { gap: 12px; flex-wrap: wrap; }
}


/* ============================================
   RESPONSIVE
   ============================================ */
@media (max-width: 900px) {
  .grid--3 { grid-template-columns: repeat(2, 1fr); }
  .grid--4 { grid-template-columns: repeat(2, 1fr); }
  .two-col { grid-template-columns: 1fr; gap: 32px; }
  .two-col > * { text-align: center !important; }
  .two-col--form { grid-template-columns: 1fr; }
  .two-col--form-img { order: -1; }
  .two-col--form-img[data-aos="fade-left"],
  .two-col > [data-aos="fade-left"],
  .two-col > [data-aos="fade-right"] { transform: translate3d(0, 20px, 0) !important; }
  .two-col--form-img[data-aos="fade-left"].aos-animate,
  .two-col > [data-aos="fade-left"].aos-animate,
  .two-col > [data-aos="fade-right"].aos-animate { transform: translate3d(0, 0, 0) !important; }
  .dash-schedule-images { max-width: 240px; margin: 0 auto; padding-bottom: 24px; padding-right: 24px; }
  .pc-service__img { order: -1; }
  .pc-service__img img { width: 60%; aspect-ratio: auto; object-fit: contain; margin: 0 auto; display: block; }
  .pc-service h2 { font-size: 26px; }
  .pc-service [data-aos="fade-left"],
  .pc-service [data-aos="fade-right"] { opacity: 0 !important; transform: translate3d(0, 20px, 0) !important; transition: opacity .6s ease, transform .6s ease !important; }
  .pc-service [data-aos="fade-left"].aos-animate,
  .pc-service [data-aos="fade-right"].aos-animate { opacity: 1 !important; transform: translate3d(0, 0, 0) !important; }
  .portfolio-grid { grid-template-columns: repeat(2, 1fr); }
  .portfolio-grid--4 { grid-template-columns: repeat(2, 1fr); }
  .form-page { flex-direction: column; }
  .form-page__image { min-height: 300px; flex: none; }
  .form-page__body { padding: 40px 24px; }
}

@media (max-width: 600px) {
  .grid--3 { grid-template-columns: 1fr; }
  .portfolio-grid { grid-template-columns: 1fr; }
  .portfolio-grid--4 { grid-template-columns: repeat(2, 1fr); }
  .form-row--two { grid-template-columns: 1fr; }
  html { background: var(--header-bg); }
  body { padding-top: 85px; }
  .site-header { height: 85px; }
  .nav__logo img { height: 43px; }
  .hero { min-height: 50vh; }
  .hero--dashboard { min-height: 0; }
  .hero--full { min-height: 50vh; }
  .hero--contact { min-height: 420px; }
  .section { padding: 32px 0; }
  .section--cream { padding-top: 52px; }
  .cta-section { padding: 32px 0; }
  h2 { font-size: 22px; line-height: 30px; letter-spacing: -0.5px; }
  p { font-size: 13px; line-height: 25px; }
  .gallery { grid-template-columns: repeat(2, 1fr); }
  .nav__links li a, .nav__links li span { font-size: 18px; }
  .marquee--accent { height: 75px; }
  .marquee--accent .marquee__inner { font-size: 18px; }
  .bridal-full-img { height: 320px; }
  .reviews-title { font-size: 28px; margin-top: 20px; margin-bottom: 20px; }
  .reviews-carousel { max-width: 100%; }
  .reviews-carousel__arrows { display: none; }
  .reviews-carousel__slide { padding: 0 20px; }
  .reviews-carousel__slide p { font-size: 13px; line-height: 19px; }
  .reviews-carousel__slide strong { font-size: 15px; }
  .reviews-section { height: 400px; }
  .accordion__toggle { font-size: 14px; }
  .cta-section--lg { padding: 60px 0; }
}

/* ── Dashboard: Users & User Detail ────────── */
.dash-toolbar { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; justify-content: space-between; margin-bottom: 24px; }
.dash-search { display: flex; gap: 8px; }
.dash-search input { padding: 8px 14px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px; min-width: 220px; }
.dash-filters { display: flex; flex-wrap: wrap; gap: 6px; }
.dash-filter { padding: 5px 14px; border-radius: 20px; background: #f0ece8; color: #666; text-decoration: none; font-size: 13px; transition: all .2s; }
.dash-filter:hover { background: #e0dbd5; }
.dash-filter.active { background: var(--primary); color: #fff; }

.dash-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.dash-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.dash-table th, .dash-table td { padding: 12px 16px; text-align: left; border-bottom: 1px solid #eee; }
.dash-table th { background: #f9f7f5; font-weight: 500; color: #666; white-space: nowrap; }
.dash-table th a { color: inherit; text-decoration: none; }
.dash-table th a:hover { color: var(--primary); }
.dash-table tbody tr:hover { background: #faf8f6; }

.dash-pagination { display: flex; align-items: center; justify-content: center; gap: 16px; margin-top: 24px; }
.dash-pagination__info { font-size: 14px; color: #888; }

.badge { display: inline-block; padding: 3px 10px; border-radius: 12px; font-size: 12px; font-weight: 500; text-transform: capitalize; }
.badge--dark   { background: #333; color: #fff; }
.badge--gray   { background: #e0e0e0; color: #555; }
.badge--orange { background: #fff3e0; color: #e65100; }
.badge--blue   { background: #e3f2fd; color: #1565c0; }
.badge--red    { background: #fce4ec; color: #c62828; }
.badge--green  { background: #e8f5e9; color: #2e7d32; }
.badge--purple { background: #f3e5f5; color: #6a1b9a; }

/* Detail bar + sub-tabs */
.dash-detail-bar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; }
.dash-detail-bar strong { font-size: 1.1rem; margin-right: 12px; }

.dash-subtabs { display: flex; flex-wrap: wrap; gap: 4px; border-bottom: 2px solid #eee; margin-bottom: 24px; }
.dash-subtab { padding: 10px 20px; background: none; border: none; cursor: pointer; font-family: inherit; font-size: 14px; color: #888; border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all .2s; }
.dash-subtab:hover { color: var(--primary); }
.dash-subtab.active { color: var(--primary); border-bottom-color: var(--primary); font-weight: 500; }

.dash-subtab-content { display: none; }
.dash-subtab-content.active { display: block; }

.dash-cards-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); gap: 24px; }

.dash-card { background: #fff; border-radius: 8px; padding: 24px; border: 1px solid #eee; }
.dash-card h3 { font-family: 'STIX Two Text', serif; font-style: italic; font-size: 1.1rem; margin-bottom: 16px; color: var(--primary); }

.dash-detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 24px; }
.dash-detail { display: flex; flex-direction: column; gap: 3px; }
.dash-detail label { font-size: 12px; color: #999; text-transform: uppercase; letter-spacing: .04em; }
.dash-detail span, .dash-detail a { font-size: 14px; }

.dash-actions-row { display: flex; flex-wrap: wrap; gap: 10px; }

.dash-role-select { padding: 4px 8px; border: 1px solid #ccc; border-radius: 4px; font-size: 14px; }

@media (max-width: 768px) {
  .dash-cards-grid { grid-template-columns: 1fr; }
  .dash-detail-grid { grid-template-columns: 1fr; }
  .dash-toolbar { flex-direction: column; align-items: stretch; }
}

/* ─── Services Review ────────────────────────── */
.bridal-proposal-review-heading { text-align: center; font-family: "STIX Two Text", serif; font-size: 32px; font-weight: 400; text-transform: uppercase; margin: 0 0 30px; color: #2e2e2e; letter-spacing: 0.5px; }
.bridal-services-review { max-width: 900px; width: 100%; border-radius: 8px; padding: 40px; }
.bridal-review-dots { flex: 1; border-bottom: 1px dotted #ccc; min-width: 20px; margin-left: 10px; }
.bridal-proposal-review-line:has(.bridal-review-dots) { align-items: center; }
.bridal-proposal-review-line:has(.bridal-review-dots) .rl { flex: none; }
.bridal-review-qty { font-size: 13px; color: #999; margin-left: 4px; }
.bridal-services-paid .rl { color: #4caf50 !important; }
.bridal-services-paid .rr { color: #4caf50 !important; }
.bridal-services-tc-heading { margin-top: 48px; font-size: 26px; }
.bridal-services-tc { max-width: 900px; width: 100%; margin: 0 auto; }
@media (max-width: 480px) {
  .bridal-services-review { padding: 24px 20px; }
  .bridal-services-tc { padding: 16px; }
  .bridal-services-tc-heading { margin-top: 36px; font-size: 22px; }
}

/* ─── Proposal Form ──────────────────────────── */
.bridal-proposal { max-width: 900px; width: 100%; margin: 0 auto; font-family: "Montserrat", sans-serif; }
.bridal-proposal * { box-sizing: border-box; }
.bridal-proposal h3 { text-align: center; font-family: "STIX Two Text", serif; font-size: 32px; font-weight: 400; text-transform: uppercase; margin: 0 0 30px; color: #2e2e2e; letter-spacing: 0.5px; }
.bridal-proposal-page { display: none; width: 100%; }
.bridal-proposal-page.active { display: block; }
.bridal-proposal-cols { display: flex; gap: 20px; align-items: stretch; }
.bridal-proposal-cols > div { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.bridal-proposal-cols > div > .bridal-proposal-group { flex: 1; }
.bridal-proposal-field { margin-bottom: 15px; }
.bridal-proposal-field label { display: block; font-family: "Montserrat", sans-serif; font-size: 13px; font-weight: 500; text-transform: uppercase; color: #2e2e2e; margin-bottom: 5px; letter-spacing: 0.3px; }
.bridal-proposal-field label .req { color: #c0392b; }
.bridal-proposal-field input[type="text"],
.bridal-proposal-field input[type="email"],
.bridal-proposal-field input[type="tel"],
.bridal-proposal-field input[type="password"],
.bridal-proposal-field input[type="date"],
.bridal-proposal-field input[type="number"],
.bridal-proposal-field select { width: 100%; padding: 10px 12px; border: 1px solid #ddd; border-radius: 4px; font-size: 15px; font-family: "Montserrat", sans-serif; color: #2e2e2e; background: #fff; transition: border-color 0.15s; box-sizing: border-box; height: 42px; }
.bridal-proposal-field input:focus { border-color: #9b8779; outline: none; }
.bridal-proposal-field input.has-error { border-color: var(--error); }
.bridal-proposal-field .field-error { color: #b07070; font-size: 13px; margin-top: 4px; display: none; font-family: "Montserrat", sans-serif; }
.bridal-proposal-field .field-error.visible { display: block; }

.bridal-proposal-group { margin-top: 15px; margin-bottom: 0; padding-bottom: 0; border-bottom: none; }
.bridal-proposal-group--last { border-bottom: none; padding-bottom: 0; }
.bridal-proposal-cols > div:last-child .bridal-proposal-group { border-bottom: none; }
.bridal-proposal-group-label { font-family: "Montserrat", sans-serif; font-size: 11px; font-weight: 600; text-transform: uppercase; color: #999; letter-spacing: 1.5px; }
.bridal-proposal-group-label--divider { margin: 10px 0 10px; padding-top: 20px; border-top: 1px solid #e0e0e0; }
.bridal-proposal-group-label--divider:first-of-type { margin-top: 0; padding-top: 0; border-top: none; }
.bridal-proposal-check { display: flex; align-items: center; flex-wrap: wrap; padding: 4px 0; cursor: pointer; font-size: 14px; font-family: "Montserrat", sans-serif; color: #333; }
.bridal-proposal-check input[type="checkbox"] { margin-right: 8px; accent-color: #9b8779; width: 16px; height: 16px; cursor: pointer; flex-shrink: 0; }
.bridal-proposal-check > span:first-of-type { cursor: pointer; flex: 1; }
.bridal-proposal-agree { display: flex; justify-content: center; margin-bottom: 15px; }

.bridal-proposal-inline-qty { display: flex; align-items: center; gap: 0; margin-left: auto; opacity: 0; pointer-events: none; transition: opacity 0.15s; flex-shrink: 0; }
.bridal-proposal-check input[type="checkbox"]:checked ~ .bridal-proposal-inline-qty { opacity: 1; pointer-events: auto; }
.bp-qty-group { display: inline-flex; align-items: stretch; border: 1px solid #ccc; border-radius: 5px; overflow: hidden; }
.bridal-proposal-inline-qty input[type="number"] { width: 34px; padding: 4px 0; border: none; border-left: 1px solid #e0e0e0; border-right: 1px solid #e0e0e0; font-size: 13px; font-family: "Montserrat", sans-serif; text-align: center; background: #fff; -moz-appearance: textfield; outline: none; }
.bridal-proposal-inline-qty input[type="number"]::-webkit-outer-spin-button,
.bridal-proposal-inline-qty input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.bp-qty-btn { display: flex; align-items: center; justify-content: center; width: 28px; border: none; background: #faf9f7; color: #666; font-size: 14px; cursor: pointer; padding: 0; line-height: 1; font-family: "Montserrat", sans-serif; }
.bp-qty-btn:hover { background: #f0eeeb; }
.bp-qty-btn:active { background: #e8e5e2; }
.bp-qty-btn:disabled { opacity: 0.4; cursor: default; background: #faf9f7; }
.bridal-proposal-inline-qty em { font-style: normal; font-size: 12px; color: #888; white-space: nowrap; margin-left: 6px; width: 58px; display: inline-block; }
.bridal-proposal-check-hint { display: none; width: 100%; font-style: normal; font-size: 12px; color: #888; margin: 6px 0 4px 24px; font-family: "Montserrat", sans-serif; font-weight: normal; white-space: nowrap; }
.bridal-proposal-check input[type="checkbox"]:checked ~ .bridal-proposal-check-hint { display: block; }

.bridal-proposal-nav { display: flex; gap: 15px; margin-top: 25px; justify-content: space-between; }
.bridal-proposal-btn { display: inline-block; background-color: #9b8779; color: white; border: none; font-family: 'Montserrat', sans-serif; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.3px; padding: 8px 16px; transition: background 0.2s; border-radius: 3px; cursor: pointer; text-align: center; }
.bridal-proposal-btn:hover,
.bridal-proposal-btn:focus { background: #8b7968; color: white; text-decoration: none; }
.bridal-proposal-btn.prev { background: #555; color: #fff; }
.bridal-proposal-btn.prev:hover,
.bridal-proposal-btn.prev:focus { background: #444; color: #fff; }
.bridal-proposal-btn.submit { letter-spacing: 0.5px; }
.bridal-proposal-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.bridal-proposal-btn--outline { background: transparent; color: #9b8779; border: 1px solid #9b8779; }
.bridal-proposal-btn--outline:hover { background: #f5f1ee; color: #8b7968; }

.bridal-proposal-review { background: #fff; border: none; border-radius: 10px; padding: 30px; margin: 0 auto; box-shadow: 0 1px 3px rgba(0,0,0,.06); }
.bridal-proposal-review + .bridal-proposal-review { margin-top: 20px; }
.bridal-proposal-review-line { display: flex; align-items: baseline; padding: 4px 0; color: #222; font-size: 14px; font-family: "Montserrat", sans-serif; }
.bridal-proposal-review-line .rl { flex: 1; font-weight: 500; }
.bridal-proposal-review-line .rr { text-align: right; min-width: 100px; max-width: 320px; padding-left: 8px; font-weight: 500; overflow-wrap: break-word; word-break: break-word; }
.bridal-proposal-review-label { color: #9b8779; font-family: "Montserrat", sans-serif; font-size: 14px; font-weight: 500; text-transform: uppercase; letter-spacing: 0.3px; padding: 4px 0 2px; margin-top: 28px; margin-bottom: 8px; text-align: center; }
.bridal-proposal-review-label:first-child { margin-top: 0; }
.bridal-proposal-review-sub { color: #999; font-family: "Montserrat", sans-serif; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; padding: 2px 0; margin-top: 10px; }
.bridal-proposal-review-sub:first-child,
.bridal-proposal-review-label + .bridal-proposal-review-sub { margin-top: 0; }
.bridal-proposal-review-sep { border-top: 1px solid #e6ddd8; margin: 20px 0; }
.bridal-proposal-review-line.subtotal { color: #888; padding: 1px 0; }
.bridal-proposal-review-line.subtotal .rl { font-size: 14px; font-weight: 400; }
.bridal-proposal-review-line.subtotal .rl::after { content: none; }
.bridal-proposal-review-line.subtotal .rr { font-size: 14px; font-weight: 400; }
.bridal-proposal-review-line.tax { color: #888; padding: 1px 0; }
.bridal-proposal-review-line.tax .rl { font-size: 14px; font-weight: 400; }
.bridal-proposal-review-line.tax .rl::after { content: none; }
.bridal-proposal-review-line.tax .rr { font-size: 14px; font-weight: 400; }
.bridal-proposal-review-line.total { color: #222; padding-top: 6px; }
.bridal-proposal-review-line.total .rl { font-family: "Montserrat", sans-serif; font-size: 28px; font-weight: 400; text-transform: uppercase; }
.bridal-proposal-review-line.total .rr { font-size: 28px; font-weight: 400; }
.bridal-proposal-review-line.deposit { color: #222; padding: 2px 0; }
.bridal-proposal-review-line.deposit .rl { font-size: 14px; font-weight: 400; }
.bridal-proposal-review-line.deposit .rr { font-size: 14px; font-weight: 400; }
.bridal-proposal-review-line.deposit-total .rl { font-size: 14px; font-weight: 600; }
.bridal-proposal-review-line.deposit-total .rr { font-size: 14px; font-weight: 600; }
.bridal-proposal-review-line.remaining { color: #888; padding: 2px 0; }
.bridal-proposal-review-line.remaining .rl { font-size: 14px; font-weight: 400; }
.bridal-proposal-review-line.remaining .rr { font-size: 14px; font-weight: 400; }

.bridal-proposal-tc { max-height: 500px; overflow-y: auto; padding: 20px; background: #faf9f8; border-radius: 10px; margin-bottom: 20px; font-size: 14px; line-height: 1.7; color: #333; font-family: "Montserrat", sans-serif; box-shadow: 0 1px 3px rgba(0,0,0,.06); }
.bridal-proposal-tc h5 { font-family: "Montserrat", sans-serif; font-size: 14px; font-weight: 600; margin: 18px 0 6px; color: #2e2e2e; text-transform: uppercase; letter-spacing: 0.5px; }
.bridal-proposal-tc h5:first-child { margin-top: 0; }
.bridal-proposal-tc p { margin: 0 0 10px; }
.bridal-proposal-tc ul { margin: 0 0 10px; padding-left: 20px; }

.bridal-proposal-deposit { margin: 30px 0 20px; max-width: 300px; margin-left: auto; font-family: "Montserrat", sans-serif; }
.bp-deposit-row { display: flex; justify-content: space-between; align-items: baseline; padding: 4px 0; font-size: 14px; color: #555; }
.bp-deposit-label { font-weight: 400; }
.bp-deposit-val { font-weight: 400; }
.bp-deposit-sep { border-top: 1px solid #ddd; margin: 6px 0; }
.bp-deposit-total { font-size: 15px; color: #222; }
.bp-deposit-total .bp-deposit-label,
.bp-deposit-total .bp-deposit-val { font-weight: 600; }

.bridal-proposal-info { margin-top: 16px; padding: 12px 16px; background: #faf9f7; border-radius: 8px; font-size: 13px; color: var(--admin-text-light, #888); text-align: center; }
.bb-footer-note { max-width: 900px; margin-left: auto; margin-right: auto; }

.bridal-proposal-errors { background: #fdf2f2; border: 1px solid #e8c4c4; border-radius: 6px; padding: 12px 16px; margin: 20px 0; display: none; font-family: "Montserrat", sans-serif; }
.bridal-proposal-errors.visible { display: block; }
.bridal-proposal-errors p { color: #c0392b; font-size: 14px; margin: 4px 0; }

/* Processing overlay */
#bp-processing-overlay { display: none; position: fixed; inset: 0; z-index: 9999; background: rgba(255,255,255,.95); backdrop-filter: blur(6px); align-items: center; justify-content: center; flex-direction: column; gap: 24px; text-align: center; padding: 40px; }
#bp-overlay-spinner { width: 52px; height: 52px; border: 3px solid #e8e0d8; border-top-color: #8b7355; border-radius: 50%; animation: bp-spin .8s linear infinite; }
#bp-overlay-icon { display: none; width: 52px; height: 52px; color: #c45; margin: 0 auto; }
#bp-overlay-title { font-family: var(--font-heading, serif); font-size: 26px; color: #2c2c2c; letter-spacing: .02em; margin: 0; }
#bp-overlay-subtitle { font-size: 15px; color: #888; margin: 0; max-width: 400px; }
#bp-overlay-actions { display: none; margin-top: 8px; flex-direction: column; align-items: center; gap: 10px; }
.bp-overlay-btn { padding: 12px 32px; background: #8b7355; color: #fff; border-radius: 6px; font-size: 14px; text-decoration: none; letter-spacing: .03em; cursor: pointer; }
.bp-overlay-link { font-size: 13px; color: #888; text-decoration: underline; }
@keyframes bp-spin { to { transform: rotate(360deg); } }

@media (max-width: 768px) {
  .bridal-proposal h3 { font-size: 24px; }
  .bridal-proposal-cols { flex-direction: column; gap: 0; }
  .bridal-proposal-group { padding-bottom: 0; margin-bottom: 0; }
  .bridal-proposal-review { padding: 20px 15px; }
  .bridal-proposal-nav { gap: 10px; }
}

/* ─── Booking Form ───────────────────────────── */
.bridal-booking { max-width: 900px; width: 100%; margin: 0 auto; font-family: "Montserrat", sans-serif; }
.bridal-booking * { box-sizing: border-box; }
.bridal-booking h3 { text-align: center; font-family: "STIX Two Text", serif; font-size: 32px; font-weight: 400; text-transform: uppercase; margin: 0 0 30px; color: #2e2e2e; letter-spacing: 0.5px; }
.bridal-booking-page { display: none; width: 100%; }
.bridal-booking-page.active { display: block; }
.bridal-booking-cols { display: flex; gap: 20px; }
.bridal-booking-cols > div { flex: 1; min-width: 0; }
.bridal-booking-cols--3 > div { flex: 1; }
.bridal-booking-cols--narrow > div { flex: 0; min-width: 150px; }
.bridal-booking-field { margin-bottom: 10px; }
.bridal-booking-field label { display: block; font-family: "Montserrat", sans-serif; font-size: 13px; font-weight: 500; text-transform: uppercase; color: #2e2e2e; margin-bottom: 5px; letter-spacing: 0.3px; }
.bridal-booking-field label .req { color: #c0392b; }
.bridal-booking-field input[type="text"],
.bridal-booking-field input[type="email"],
.bridal-booking-field input[type="tel"],
.bridal-booking-field input[type="url"],
.bridal-booking-field input[type="date"],
.bridal-booking-field input[type="time"],
.bridal-booking-field input[type="number"],
.bridal-booking-field textarea { width: 100%; padding: 10px 12px; border: 1px solid #ddd; border-radius: 4px; font-size: 15px; font-family: "Montserrat", sans-serif; color: #2e2e2e; background: #fff; transition: border-color 0.15s; }
.bridal-booking-field input:focus,
.bridal-booking-field textarea:focus { border-color: #9b8779; outline: none; }
.bridal-booking-field input.has-error,
.bridal-booking-field textarea.has-error { border-color: var(--error); }
.bridal-upload.has-error .bridal-upload-zone { border-color: var(--error); }
.bridal-booking-field textarea { resize: vertical; min-height: 80px; line-height: 1.5; }
.bridal-booking-readonly { background: #f5f5f5 !important; color: #888 !important; cursor: default; }

.bridal-booking-add-more { margin-bottom: 20px; }
.bridal-booking-svc-list { display: flex; gap: 24px; margin-bottom: 20px; justify-content: center; }
.bridal-booking-conditional-fields { margin-top: 4px; }
.bridal-booking-party-details { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.bridal-booking-guest-details { margin-top: 20px; }
@media (max-width: 600px) {
  .bridal-booking-party-details { grid-template-columns: 1fr; gap: 0; }
}

.bb-service-hint { font-size: 13px; color: #888; margin-bottom: 20px; text-align: center; }
.bb-cta-text { font-size: 13px; color: #888; margin-bottom: 20px; }
.bb-subheading--spaced { margin-top: 30px !important; }
.bb-field--flex { flex: 1; min-width: 150px; }

.maps-preview-wrap { margin-top: 8px; overflow: hidden; max-height: 0; opacity: 0; transition: max-height 0.3s ease, opacity 0.3s ease; }
.maps-preview-wrap.visible { max-height: 260px; opacity: 1; }
.maps-preview-error { color: var(--error); font-size: 13px; font-family: "Montserrat", sans-serif; padding: 4px 0; }
.maps-preview-embed iframe { width: 100%; height: 200px; border: 1px solid #ddd; border-radius: 4px; }
.maps-preview-embed[data-map-query] { margin-top: 8px; }
.maps-preview-embed[data-map-query] iframe { width: 100%; height: 200px; border: 1px solid #ddd; border-radius: 4px; }
.maps-preview-loading { font-size: 13px; color: #999; font-family: "Montserrat", sans-serif; }
.maps-preview-link { font-size: 13px; color: #9b8779; font-family: "Montserrat", sans-serif; text-decoration: underline; }
.bb-guest-group-centered { max-width: 280px; margin: 0 0 20px; }
.bb-review-pricing { margin-top: 20px; }
.bb-review-bride-wrap { text-align: center; margin-bottom: 16px; }
.bridal-proposal-review-sub--nested { font-size: 11px; margin-top: 4px; }
.bb-celebration-row { display: flex; align-items: center; gap: 12px; }
.bb-celebration-input { flex: 1; margin-bottom: 0; }
.bb-celebration-input--readonly { background-color: #f5f5f5; opacity: 0.5; }
.bb-celebration-check { font-size: 13px; white-space: nowrap; margin: 0; padding: 0; text-transform: none; color: #aaa; align-self: center; }
.bb-celebration-check input[type="checkbox"] { position: relative; top: 2px; }
.bb-celebration-check span { margin-left: 3px; }
.bb-modal-overlay { position: fixed; inset: 0; z-index: 9999; display: flex; align-items: center; justify-content: center; }
.bb-modal-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.45); }
.bb-modal-dialog { position: relative; background: #fff; border-radius: 12px; padding: 32px 28px 24px; max-width: 380px; width: 90%; text-align: center; box-shadow: 0 8px 30px rgba(0,0,0,.18); }
.bb-modal-title { font-size: 15px; font-weight: 600; margin-bottom: 8px; }
.bb-modal-message { font-size: 13px; color: #666; margin-bottom: 20px; }
.bb-modal-btn { padding: 8px 24px; border: none; border-radius: 8px; background: var(--color-primary, #b48c6f); color: #fff; font-size: 13px; font-weight: 500; cursor: pointer; }

.bridal-booking-add-cta { text-align: center; }
.bridal-booking-add-cta .bridal-proposal-btn--outline { margin-bottom: 20px; }

.bridal-booking-errors { background: #fdf2f2; border: 1px solid #e8c4c4; border-radius: 6px; padding: 12px 16px; margin-top: 20px; display: none; font-family: "Montserrat", sans-serif; }
.bridal-booking-errors.visible { display: block; }
.bridal-booking-errors p { color: #c0392b; font-size: 14px; margin: 4px 0; }

/* Upload row (left-aligned, no spacers) */
.bridal-upload-row { display: flex; gap: 20px; margin-bottom: 20px; }

/* Upload component */
.bridal-upload { position: relative; width: 140px; height: 140px; flex-shrink: 0; }
.bridal-upload--multi { width: 100%; height: auto; flex-shrink: 1; }
.bridal-upload-zone, .bridal-upload-preview { width: 140px; height: 140px; box-sizing: border-box; }
.bridal-upload--multi .bridal-upload-zone { flex: 1 1 140px; min-width: 100px; height: 140px; width: auto; }
.bridal-upload-zone { border: 2px dashed #d5cdc7; border-radius: 8px; padding: 20px; text-align: center; cursor: pointer; transition: border-color 0.2s, background 0.2s; background: #faf9f8; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.bridal-upload-zone.bb-fade-in { animation: bb-fade-in 0.3s ease; }
.bridal-upload-zone:hover,
.bridal-upload-zone.dragover { border-color: #9b8779; background: #f5f1ee; }
.bridal-upload-zone svg { display: block; margin: 0 auto 8px; color: #9b8779; }
.bridal-upload-zone span { display: block; font-size: 13px; color: #888; font-family: "Montserrat", sans-serif; }
.bridal-upload-zone input[type="file"] { display: none; }

.bridal-upload-preview { position: relative; border-radius: 8px; overflow: hidden; border: 1px solid #ddd; }
.bridal-upload-preview.bb-fade-in { animation: bb-fade-in 0.3s ease; }
@keyframes bb-fade-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } }
.bridal-upload-preview.bb-fade-out { animation: bb-fade-out 0.2s ease forwards; }
@keyframes bb-fade-out { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.95); } }
.bridal-upload-preview img { width: 100%; height: 100%; object-fit: cover; display: block; cursor: pointer; border-radius: 8px; }
.bridal-upload-remove { position: absolute; top: 4px; right: 4px; z-index: 1; width: 22px; height: 22px; border-radius: 50%; border: none; cursor: pointer; padding: 0; background: #fff; box-shadow: 0 1px 4px rgba(0,0,0,0.25); font-size: 0; color: transparent; transition: background 0.15s; }
.bridal-upload-remove::before,
.bridal-upload-remove::after { content: ''; position: absolute; top: 50%; left: 50%; width: 10px; height: 1.5px; background: #888; border-radius: 1px; transition: background 0.15s; }
.bridal-upload-remove::before { transform: translate(-50%, -50%) rotate(45deg); }
.bridal-upload-remove::after { transform: translate(-50%, -50%) rotate(-45deg); }
.bridal-upload-remove:hover { background: #c0392b; }
.bridal-upload-remove:hover::before,
.bridal-upload-remove:hover::after { background: #fff; }

.bridal-upload-preview.loading img { opacity: 0.4; }
.bridal-upload-loading { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 24px; height: 24px; border: 3px solid #ddd; border-top-color: #9b8779; border-radius: 50%; animation: bb-spin 0.6s linear infinite; }
@keyframes bb-spin { to { transform: translate(-50%, -50%) rotate(360deg); } }

/* Multi-upload grid */
.bridal-upload--multi .bridal-upload-previews { display: flex; gap: 8px; flex-wrap: wrap; }
.bridal-upload--multi .bridal-upload-preview { width: 140px; height: 140px; }
.bridal-upload--multi .bridal-upload-preview img { width: 100%; height: 100%; object-fit: cover; }

/* Booking review */
.bridal-booking-review .bridal-proposal-review-line .rr { font-size: 14px; font-weight: 500; max-width: 400px; overflow-wrap: break-word; word-break: break-word; }
@media (max-width: 768px) { .bridal-booking-review .bridal-proposal-review-line .rr { max-width: 320px; } }
.bridal-booking-review .rr a { color: #9b8779; text-decoration: none; }
.bridal-booking-review .rr a[target="_blank"]::after { content: none; }
.bridal-booking-review .rr a:hover { text-decoration: none; opacity: 0.7; }
.bridal-booking-review .bridal-proposal-review-line .rl { font-size: 14px; }
.bridal-booking-review .bridal-proposal-review-line.total .rl { font-size: 28px; font-weight: 400; text-transform: uppercase; }
.bridal-booking-review .bridal-proposal-review-line.total .rr { font-size: 28px; font-weight: 400; max-width: none; }
.bridal-review-multiline .rl { flex: none; }
.bridal-review-multiline-text { text-align: right; font-size: 14px; font-weight: 500; color: #222; line-height: 1.5; white-space: pre-wrap; word-break: break-word; padding-left: 12px; max-width: 400px; margin-left: auto; }
@media (max-width: 768px) { .bridal-review-multiline-text { max-width: 320px; } }
.bb-review-ref-line { align-items: center; }
.bb-review-ref-line .rl { flex: none; }
.bb-review-ref-right { margin-left: auto; }
.bb-review-ref-right .bb-review-thumbs { margin-top: 0; justify-content: flex-end; }
.bb-review-thumbs { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 8px; margin-bottom: 4px; }
.bb-review-thumb { width: 56px; height: 56px; min-width: 56px; min-height: 56px; flex-shrink: 0; border-radius: 8px; overflow: hidden; border: 1px solid #e6ddd8; cursor: pointer; transition: transform 0.2s; }
.bb-review-thumb:hover { transform: scale(1.05); }
.bb-review-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bb-review-bride-photo { display: inline-block; width: 80px; height: 80px; border-radius: 50%; overflow: hidden; border: 3px solid #e6ddd8; cursor: pointer; transition: transform 0.2s; }
.bb-review-bride-photo:hover { transform: scale(1.05); }
.bb-review-bride-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Lightbox */
.bridal-lightbox { position: fixed; inset: 0; background: rgba(0,0,0,0.85); z-index: 999999; display: none; align-items: center; justify-content: center; cursor: pointer; opacity: 0; transition: opacity 0.2s; }
.bridal-lightbox.active { display: flex; opacity: 1; }
.bridal-lightbox img { max-width: 90vw; max-height: 90vh; object-fit: contain; border-radius: 8px; cursor: pointer; }
.bridal-lightbox-close { position: absolute; top: 16px; right: 20px; background: none; border: none; color: #fff; font-size: 36px; cursor: pointer; line-height: 1; z-index: 1; padding: 0; opacity: 0.8; transition: opacity 0.15s; }
.bridal-lightbox-close:hover { opacity: 1; }

@media (max-width: 768px) {
  .bridal-booking h3 { font-size: 24px; }
  .bridal-booking-cols { flex-direction: column; gap: 0; }
  .bridal-upload-row { gap: 12px; flex-wrap: wrap; }
  .bridal-upload-row > .bridal-booking-field:last-child { flex-basis: 100%; min-width: 0; }
  .bridal-upload, .bridal-upload-zone, .bridal-upload-preview { width: 120px; height: 120px; }
  .bridal-upload--multi { width: 100%; height: auto; }
  .bridal-upload--multi .bridal-upload-zone { flex: 1 1 100px; min-width: 80px; height: 100px; width: auto; }
  .bridal-upload--multi .bridal-upload-preview { width: 100px; height: 100px; }
  .bridal-upload-zone { padding: 15px; }
}

/* ─── intl-tel-input ─────────────────────────── */
.iti { width: 100%; }
.iti input[type="tel"] { border-radius: 4px !important; }
.iti__flag-container { z-index: 2; }
.iti--separate-dial-code .iti__selected-flag { background: #faf8f7 !important; border-right: 1px solid #e0d8d2; border-radius: 4px 0 0 4px !important; padding: 0 14px; height: 100%; }
.iti--separate-dial-code .iti__selected-flag:hover { background: #f3eeeb !important; }
.iti__selected-dial-code { font-family: "Montserrat", sans-serif; font-size: 13px; color: #2e2e2e; }
.iti__arrow { border-top-color: #999; margin-left: 4px; }
.iti__country-list { font-family: "Montserrat", sans-serif; font-size: 13px; border-radius: 6px; border: 1px solid #e0d8d2; box-shadow: 0 4px 16px rgba(0,0,0,0.08); max-height: 220px; top: 100% !important; margin-top: 5px !important; left: 0; }
.iti__country { padding: 6px 10px; }
.iti__country.iti__highlight { background-color: #faf8f7; }
.iti__country.iti__active { background-color: #f3eeeb; }
.iti__country-name { color: #2e2e2e; }
.iti__dial-code { color: #999; }
.iti__divider { border-bottom: 1px solid #e0d8d2; margin: 4px 0; }
.iti__search-input { font-family: "Montserrat", sans-serif; font-size: 13px; border: 1px solid #ddd; border-radius: 4px; padding: 6px 8px; }
.iti__search-input:focus { border-color: #9b8779; outline: none; }

/* ─── Flatpickr Custom Theme ─────────────────── */
.flatpickr-calendar.arrowTop::before,
.flatpickr-calendar.arrowTop::after { display: none; }
.flatpickr-calendar { border-radius: 8px; box-shadow: 0 4px 20px rgba(0,0,0,0.12); font-family: "Montserrat", sans-serif; font-size: 12px; width: 280px !important; padding: 0; }
.flatpickr-calendar.open { margin-top: 5px; margin-left: -1px; }
.flatpickr-innerContainer { padding: 4px 8px 8px; }
.flatpickr-rContainer { width: 100%; }
.flatpickr-months { background: transparent; height: 36px; align-items: center; border-bottom: 1px solid #f0ebe8; }
.flatpickr-months .flatpickr-month { background: transparent; color: #333; height: 36px; }
.flatpickr-months .flatpickr-prev-month,
.flatpickr-months .flatpickr-next-month { color: #9b8779; fill: #9b8779; height: 36px !important; padding: 8px !important; }
.flatpickr-months .flatpickr-prev-month:hover,
.flatpickr-months .flatpickr-next-month:hover { color: #8b7968 !important; fill: #8b7968 !important; }
.flatpickr-months .flatpickr-prev-month:hover svg,
.flatpickr-months .flatpickr-next-month:hover svg { fill: #8b7968 !important; stroke: #8b7968 !important; }
.flatpickr-current-month { height: 36px; padding: 0 50px 0 36px !important; font-size: 13px; position: relative !important; display: flex !important; align-items: center !important; justify-content: space-between !important; left: 0 !important; width: 100% !important; box-sizing: border-box !important; }
.flatpickr-current-month .flatpickr-monthDropdown-months { font-family: "Montserrat", sans-serif !important; font-weight: 500 !important; font-size: 13px !important; color: #333 !important; text-transform: uppercase !important; letter-spacing: 0.5px !important; -webkit-appearance: none !important; background: transparent !important; width: auto !important; margin: 0 !important; padding: 0 !important; line-height: 36px !important; height: 36px !important; text-align: left !important; }
.flatpickr-current-month .flatpickr-monthDropdown-months:hover { background: transparent !important; }
.flatpickr-current-month .numInputWrapper:hover { background: transparent !important; }
.flatpickr-current-month input.cur-year { font-family: "Montserrat", sans-serif !important; font-weight: 500 !important; font-size: 13px !important; color: #333 !important; width: 5ch !important; padding: 0 !important; margin: 0 !important; line-height: 36px !important; height: 36px !important; text-align: right !important; }
.flatpickr-current-month .numInputWrapper { width: auto !important; margin: 0 !important; height: 36px !important; }
.flatpickr-current-month .numInputWrapper span { display: block !important; right: -18px; opacity: 0; transition: opacity 0.15s; background: none !important; border: none !important; height: 40% !important; }
.flatpickr-current-month .numInputWrapper span.arrowUp { top: calc(15% + 1px) !important; }
.flatpickr-current-month .numInputWrapper span.arrowDown { top: auto !important; bottom: calc(15% - 1px) !important; }
.flatpickr-current-month .numInputWrapper:hover span { opacity: 0.6; }
.flatpickr-current-month .numInputWrapper:hover span:hover { opacity: 1; }
span.flatpickr-weekday { color: #999; font-weight: 600; font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px; }
.flatpickr-weekdays { padding: 4px 0 0; }
.flatpickr-days { width: 264px !important; overflow: hidden !important; }
.dayContainer { min-width: 264px !important; max-width: 264px !important; border: none; }
.flatpickr-day { max-width: 36px; width: 36px; height: 36px; line-height: 36px; font-size: 14px; border-radius: 50%; margin: 0; border: none !important; box-shadow: none !important; }
.flatpickr-day.selected,
.flatpickr-day.selected:hover { background: #9b8779 !important; color: #fff !important; }
.flatpickr-day:hover { background: #f5f1ef; }
.flatpickr-day.today { background: #f0ebe8 !important; color: #2e2e2e !important; }
.flatpickr-day.today:hover { background: #e6ddd8 !important; }
.flatpickr-day.today.selected { background: #9b8779 !important; color: #fff !important; }
.flatpickr-innerContainer { border-bottom: none; }
.flatpickr-time input:hover,
.flatpickr-time input:focus,
.flatpickr-time .flatpickr-am-pm:hover,
.flatpickr-time .flatpickr-am-pm:focus { background: #f5f1ef; }
.flatpickr-time .flatpickr-am-pm.selected { background: #9b8779; color: #fff; }
input.flatpickr-input[placeholder] { color: #999; }
input.flatpickr-input::placeholder { color: #bbb; }

/* ── Cookie Consent Banner ─────────────────── */
.cookie-consent {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 9999;
  background: #fff; border-top: 1px solid #e5e0da;
  box-shadow: 0 -4px 20px rgba(0,0,0,.08);
  padding: 1.25rem 1.5rem;
  animation: cookieSlideUp .4s ease-out;
}
@keyframes cookieSlideUp {
  from { transform: translateY(100%); opacity: 0; }
  to   { transform: translateY(0); opacity: 1; }
}
.cookie-consent__inner {
  max-width: 960px; margin: 0 auto;
  display: flex; align-items: center; gap: 1.5rem;
}
.cookie-consent__text {
  font-size: .875rem; line-height: 1.5; color: #555; margin: 0; flex: 1;
}
.cookie-consent__text a { color: #9b8779; text-decoration: underline; }
.cookie-consent__actions { display: flex; gap: .75rem; flex-shrink: 0; }
.cookie-consent__btn {
  padding: .55rem 1.25rem; border-radius: 6px; font-size: .85rem;
  font-weight: 500; cursor: pointer; border: 1px solid #ccc;
  transition: background .2s, border-color .2s;
}
.cookie-consent__btn--decline {
  background: transparent; color: #777;
}
.cookie-consent__btn--decline:hover { background: #f5f1ef; border-color: #bbb; }
.cookie-consent__btn--accept {
  background: #9b8779; color: #fff; border-color: #9b8779;
}
.cookie-consent__btn--accept:hover { background: #8a776a; border-color: #8a776a; }

@media (max-width: 600px) {
  .cookie-consent__inner { flex-direction: column; text-align: center; gap: 1rem; }
  .cookie-consent__actions { width: 100%; justify-content: center; }
}
