/* ==========================================================================
   Saniya Gaffar | MAKEUP ARTIST
   A single-page static site. No frameworks, no build step.
   Sections
     01  Tokens
     02  Reset & base
     03  Utilities, type & buttons
     04  Preloader, cursor, progress
     05  Navbar
     06  Hero
     07  Marquee
     08  About
     09  Services
     10  Featured rail
     11  Portfolio / masonry / filters
     12  Bridal
     13  Why choose us
     14  Reviews
     15  Instagram CTA
     16  Book
     17  Contact
     18  Footer
     19  Floating WhatsApp & back-to-top
     20  Lightbox
     21  Scroll reveal
     22  Responsive
   ========================================================================== */


/* ==========================================================================
   01  TOKENS
   ========================================================================== */
:root{
  /* --- palette --- */
  --ivory:        #FBF7F2;
  --ivory-warm:   #F6EFE6;
  --beige:        #F1E7DB;
  --beige-deep:   #E7D9C7;
  --champagne:    #E8D9C3;
  --nude:         #D9BFA8;
  --rose:         #C99A9E;
  --rose-soft:    #E3C4C6;
  --gold:         #C6A15B;
  --gold-light:   #E3C88C;
  --gold-deep:    #8E6F33;
  /* --gold-deep is only 4.0:1 on --ink, under the 4.5:1 text minimum. Use this
     slightly lighter gold for small gold text that sits on the dark ink. */
  --gold-ink:     #A0803B;
  --ink:          #14110F;
  --ink-2:        #1F1A17;
  --ink-3:        #2B2420;
  --muted:        #8A7F76;
  --muted-dark:   #6B615A;
  --white:        #FFFFFF;

  /* --- gradients --- */
  --grad-gold:    linear-gradient(135deg, var(--gold-light) 0%, var(--gold) 48%, var(--gold-deep) 100%);
  --grad-sheen:   linear-gradient(105deg, transparent 20%, rgba(255,255,255,.55) 48%, transparent 72%);

  /* --- type --- */
  --f-display: "Playfair Display", "Times New Roman", Georgia, serif;
  --f-serif:   "Cormorant Garamond", Georgia, "Times New Roman", serif;
  --f-sans:    "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --f-mono:    "Montserrat", -apple-system, "Segoe UI", sans-serif;

  /* --- rhythm --- */
  --container:  1280px;
  --gutter:     clamp(20px, 5vw, 64px);
  --section-y:  clamp(84px, 11vw, 168px);

  /* --- motion --- */
  --ease:       cubic-bezier(.22,.61,.36,1);
  --ease-out:   cubic-bezier(.16,1,.3,1);
  --ease-io:    cubic-bezier(.65,.05,.36,1);
  --dur:        .7s;

  /* --- lines & shadows --- */
  --line:       rgba(20,17,15,.10);
  --line-soft:  rgba(20,17,15,.06);
  --line-light: rgba(255,255,255,.14);
  --sh-sm:      0 2px 10px rgba(20,17,15,.05);
  --sh-md:      0 18px 48px -22px rgba(20,17,15,.28);
  --sh-lg:      0 42px 90px -38px rgba(20,17,15,.42);
  --sh-gold:    0 18px 40px -20px rgba(198,161,91,.55);

  --nav-h: 84px;
}


/* ==========================================================================
   02  RESET & BASE
   ========================================================================== */
*,*::before,*::after{ box-sizing:border-box; }

html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
  /* anchor targets clear the sticky navbar */
  scroll-padding-top: calc(var(--nav-h) + 16px);
}

body{
  margin:0;
  background:var(--ivory);
  color:var(--ink);
  font-family:var(--f-sans);
  font-size:clamp(15px,.42vw + 14px,17px);
  font-weight:300;
  line-height:1.75;
  letter-spacing:.005em;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
body.is-loading{ overflow:hidden; height:100vh; }
body.no-scroll{ overflow:hidden; }

img,svg,video{ display:block; max-width:100%; height:auto; }
img{ background:var(--beige-deep); }
img.is-broken{
  min-height:180px;
  background:
    repeating-linear-gradient(45deg,var(--beige) 0 12px,var(--beige-deep) 12px 24px);
}

a{ color:inherit; text-decoration:none; }
button,input,select,textarea{ font:inherit; color:inherit; }
button{ background:none; border:0; cursor:pointer; }
ul,ol{ margin:0; padding:0; list-style:none; }
h1,h2,h3,h4,p,figure,blockquote{ margin:0; }

::selection{ background:var(--gold); color:var(--white); }

:focus-visible{
  outline:2px solid var(--gold-deep);
  outline-offset:3px;
  border-radius:2px;
}

/* Custom scrollbar (WebKit) */
::-webkit-scrollbar{ width:10px; }
::-webkit-scrollbar-track{ background:var(--ivory-warm); }
::-webkit-scrollbar-thumb{
  background:linear-gradient(var(--nude),var(--gold));
  border:3px solid var(--ivory-warm);
  border-radius:99px;
}

/* Grain overlay used by hero / dark sections */
.grain{
  position:absolute; inset:0; pointer-events:none;
  opacity:.05; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/></filter><rect width='140' height='140' filter='url(%23n)'/></svg>");
}


/* ==========================================================================
   03  UTILITIES, TYPE & BUTTONS
   ========================================================================== */
.container{
  width:100%;
  max-width:var(--container);
  margin-inline:auto;
  padding-inline:var(--gutter);
}

main{ display:block; }
/* the skip link focuses <main>; it is a programmatic target, not a control,
   so it should not paint a focus ring */
main:focus{ outline:none; }
.section{
  position:relative;
  padding-block:var(--section-y);
}
.section--beige{ background:linear-gradient(180deg,var(--ivory-warm),var(--beige) 30%,var(--beige)); }
.section--ink{
  background:
    radial-gradient(120% 80% at 12% 0%, rgba(198,161,91,.13), transparent 60%),
    radial-gradient(90% 70% at 92% 100%, rgba(201,154,158,.10), transparent 60%),
    linear-gradient(170deg,var(--ink) 0%,var(--ink-2) 55%,var(--ink) 100%);
  color:var(--ivory);
}

/* --- headings --- */
.h2{
  font-family:var(--f-display);
  font-weight:400;
  font-size:clamp(2.1rem,5.2vw,4.1rem);
  line-height:1.08;
  letter-spacing:-.015em;
}
.h2 em{
  font-family:var(--f-serif);
  font-style:italic;
  font-weight:300;
  color:var(--gold-deep);
}
.h2--light{ color:var(--ivory); }
.h2--light em{ color:var(--gold-light); }

/* --- eyebrow label --- */
.eyebrow{
  display:inline-flex;
  align-items:center;
  gap:.85em;
  font-family:var(--f-mono);
  font-size:.78rem;
  font-weight:600;
  letter-spacing:.34em;
  text-transform:uppercase;
  color:var(--gold-deep);
  margin-bottom:1.5rem;
}
.eyebrow span{
  display:inline-grid;
  place-items:center;
  width:2.1em; height:2.1em;
  border:1px solid currentColor;
  border-radius:50%;
  font-size:.72rem;
  letter-spacing:0;
}
.eyebrow--light{ color:var(--gold-light); }

/* --- section header --- */
.section__head{ max-width:44rem; margin-bottom:clamp(48px,6vw,84px); }
.section__head--center{ margin-inline:auto; text-align:center; }
.section__head--row{
  max-width:none;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:2rem;
  flex-wrap:wrap;
}
.section__lead{
  margin-top:1.5rem;
  color:var(--muted-dark);
  font-size:1.02rem;
  max-width:36rem;
}
.section__head--center .section__lead{ margin-inline:auto; }

/* --- text links --- */
.link-underline{
  position:relative;
  display:inline-flex;
  align-items:center;
  gap:.6em;
  font-family:var(--f-mono);
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--ink);
  padding-bottom:.35em;
  transition:color .35s var(--ease);
}
.link-underline::after{
  content:"";
  position:absolute; left:0; bottom:0;
  width:100%; height:1px;
  background:currentColor;
  transform-origin:right;
  transform:scaleX(1);
  transition:transform .5s var(--ease);
}
.link-underline:hover{ color:var(--gold-deep); }
.link-underline:hover::after{ transform-origin:left; }
.link-underline i{ transition:transform .4s var(--ease); }
.link-underline:hover i{ transform:translateX(5px); }

/* --- buttons --- */
.btn{
  --btn-bg:var(--ink);
  --btn-fg:var(--ivory);
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.7em;
  padding:1.05em 2.2em;
  border:1px solid transparent;
  border-radius:99px;
  background:var(--btn-bg);
  color:var(--btn-fg);
  font-family:var(--f-mono);
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.2em;
  text-transform:uppercase;
  line-height:1;
  cursor:pointer;
  overflow:hidden;
  isolation:isolate;
  transition:transform .4s var(--ease), box-shadow .4s var(--ease), color .4s var(--ease), border-color .4s var(--ease);
}
.btn i{ font-size:.95em; }

.btn::before{
  content:"";
  position:absolute; inset:0; z-index:-1;
  background:var(--grad-sheen);
  transform:translateX(-120%);
  transition:transform .75s var(--ease-out);
}
.btn:hover::before{ transform:translateX(120%); }
.btn:hover{ transform:translateY(-3px); }

.btn--gold{
  --btn-fg:var(--ink);
  background:var(--grad-gold);
  box-shadow:var(--sh-gold);
}
.btn--dark{ --btn-bg:var(--ink); }
.btn--ghost{
  --btn-fg:var(--ink);
  background:transparent;
  border-color:rgba(20,17,15,.28);
}
.btn--ghost:hover{ border-color:var(--gold); color:var(--gold-deep); }
.btn--ghost-light{
  --btn-fg:var(--ivory);
  background:transparent;
  border-color:var(--line-light);
}
.btn--ghost-light:hover{ border-color:var(--gold); color:var(--gold-light); }
.btn--sm{ padding:.85em 1.6em; font-size:.76rem; }
.btn--block{ width:100%; }

.btn[disabled]{ opacity:.55; pointer-events:none; }

/* Skip link */
.skip-link{
  position:fixed; top:12px; left:12px; z-index:999;
  padding:.8em 1.4em;
  background:var(--ink); color:var(--ivory);
  border-radius:99px;
  font-family:var(--f-mono); font-size:.7rem; letter-spacing:.16em; text-transform:uppercase;
  transform:translateY(-200%);
  transition:transform .3s var(--ease);
}
.skip-link:focus{ transform:translateY(0); }


/* ==========================================================================
   04  PRELOADER, CURSOR, PROGRESS
   ========================================================================== */
.preloader{
  position:fixed; inset:0; z-index:1000;
  display:grid; place-items:center;
  background:var(--ink);
  transition:opacity .8s var(--ease), visibility .8s;
}
body:not(.is-loading) .preloader{ opacity:0; visibility:hidden; }

.preloader__inner{ display:grid; justify-items:center; gap:1.6rem; }
.preloader__mark{
  font-family:var(--f-display);
  font-size:2.6rem;
  letter-spacing:.12em;
  background:var(--grad-gold);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
  animation:plPulse 1.8s var(--ease-io) infinite;
}
@keyframes plPulse{ 0%,100%{ opacity:.45; letter-spacing:.12em; } 50%{ opacity:1; letter-spacing:.22em; } }

.preloader__bar{
  display:block;
  width:160px; height:1px;
  background:rgba(255,255,255,.14);
  overflow:hidden;
}
.preloader__bar i{
  display:block; height:100%; width:40%;
  background:var(--grad-gold);
  animation:plSlide 1.4s var(--ease-io) infinite;
}
@keyframes plSlide{
  0%{ transform:translateX(-110%); }
  100%{ transform:translateX(280%); }
}

/* --- custom cursor --- */
.cursor{ display:none; }
@media (hover:hover) and (pointer:fine){
  .cursor{
    display:block; position:fixed; top:0; left:0; z-index:999; pointer-events:none;
    opacity:0; transition:opacity .3s var(--ease);
  }
  /* stays invisible (and out of the layout) until the mouse actually moves */
  .cursor.is-live{ opacity:1; }
  .cursor.is-hidden{ opacity:0; }
  .cursor__dot,.cursor__ring{
    position:absolute; top:0; left:0;
    border-radius:50%;
    transform:translate(-50%,-50%);
  }
  .cursor__dot{
    width:6px; height:6px;
    background:var(--gold-deep);
    transition:opacity .3s, width .3s var(--ease), height .3s var(--ease), background .3s;
  }
  .cursor__ring{
    width:38px; height:38px;
    border:1px solid rgba(198,161,91,.6);
    display:grid; place-items:center;
    transition:width .45s var(--ease), height .45s var(--ease),
               border-color .4s, background-color .4s, opacity .3s;
  }
  .cursor__label{
    font-family:var(--f-mono);
    font-size:.70rem;
    letter-spacing:.16em;
    text-transform:uppercase;
    color:var(--ink);
    opacity:0;
    transform:scale(.6);
    transition:opacity .3s var(--ease), transform .3s var(--ease);
    white-space:nowrap;
  }
  .cursor.is-hover .cursor__ring{ width:74px; height:74px; background:rgba(227,200,140,.22); border-color:var(--gold); }
  .cursor.is-hover .cursor__label{ opacity:1; transform:scale(1); }
}

/* --- scroll progress --- */
.scroll-progress{
  position:fixed; top:0; left:0; right:0; z-index:120;
  height:2px;
  background:transparent;
  pointer-events:none;
}
.scroll-progress i{
  display:block; height:100%; width:0;
  background:var(--grad-gold);
  box-shadow:0 0 12px rgba(198,161,91,.7);
}


/* ==========================================================================
   05  NAVBAR
   ========================================================================== */
/* NOTE: .nav deliberately has NO transform / filter at rest.
   A non-none transform or a backdrop-filter would turn the navbar into the
   containing block for its own position:fixed descendants, which would trap
   the full-screen mobile menu inside a 70px bar. The blur lives on ::before
   (a sibling of the menu, not an ancestor) and the hide transform only
   applies while .is-hidden is set. */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:110;
  height:var(--nav-h);
  display:flex; align-items:center;
  transition:transform .55s var(--ease), height .5s var(--ease),
             box-shadow .5s var(--ease);
}
.nav::before{
  content:"";
  position:absolute; inset:0; z-index:-1;
  background:rgba(251,247,242,.88);
  -webkit-backdrop-filter:blur(16px) saturate(1.3);
  backdrop-filter:blur(16px) saturate(1.3);
  opacity:0;
  pointer-events:none;
  transition:opacity .5s var(--ease);
}
/* transparent over the hero */
.nav__inner{
  width:100%;
  display:flex; align-items:center; justify-content:space-between;
  gap:1.5rem;
}

/* floating pill once scrolled */
.nav.is-stuck{
  height:70px;
  box-shadow:0 1px 0 var(--line-soft), 0 12px 34px -26px rgba(20,17,15,.4);
}
.nav.is-stuck::before{ opacity:1; }
/* hidden on scroll-down, revealed on scroll-up */
.nav.is-hidden{ transform:translateY(-100%); }

.nav__brand{
  display:inline-flex; align-items:center; gap:.85rem;
  position:relative; z-index:112;
}
.nav__brand-mark{
  display:grid; place-items:center;
  width:44px; height:44px;
  border-radius:50%;
  border:1px solid rgba(20,17,15,.22);
  font-family:var(--f-display);
  font-size:.95rem;
  letter-spacing:.08em;
  color:var(--ink);
  background:rgba(255,255,255,.5);
  transition:border-color .4s var(--ease), color .4s var(--ease), transform .5s var(--ease);
}
.nav__brand:hover .nav__brand-mark{ border-color:var(--gold); transform:rotate(-8deg); color:var(--gold-deep); }
.nav__brand-text{ display:grid; line-height:1.15; }
.nav__brand-text strong{
  font-family:var(--f-display);
  font-weight:500;
  font-size:1.06rem;
  letter-spacing:.01em;
}
.nav__brand-text em{
  font-family:var(--f-mono);
  font-style:normal;
  font-size:.70rem;
  font-weight:600;
  letter-spacing:.3em;
  text-transform:uppercase;
  color:var(--muted);
}

.nav__menu{ position:relative; }
.nav__menu ul{
  position:relative; z-index:1;
  display:flex; align-items:center; gap:.35rem;
}
.nav__menu ul a{
  position:relative;
  display:block;
  padding:.7em .95em;
  font-family:var(--f-mono);
  font-size:.7rem;
  font-weight:500;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:rgba(20,17,15,.72);
  transition:color .35s var(--ease);
}
/* animated underline */
.nav__menu ul a::after{
  content:"";
  position:absolute;
  left:.95em; right:.95em; bottom:.42em;
  height:1px;
  background:var(--gold-deep);
  transform:scaleX(0);
  transform-origin:right;
  transition:transform .45s var(--ease);
}
.nav__menu ul a:hover{ color:var(--ink); }
.nav__menu ul a:hover::after,
.nav__menu ul a.is-active::after{ transform:scaleX(1); transform-origin:left; }
.nav__menu ul a.is-active{ color:var(--gold-ink); }

/* sliding ink pill behind active link */
.nav__menu-ink{
  position:absolute;
  left:0; top:0; height:100%;
  border-radius:99px;
  background:rgba(198,161,91,.12);
  opacity:0;
  transition:transform .55s var(--ease-out), width .55s var(--ease-out), opacity .4s;
  pointer-events:none;
}

.nav__menu-foot{ display:none; }

.nav__actions{ display:flex; align-items:center; gap:1rem; }

/* --- hamburger --- */
.nav__toggle{
  position:relative; z-index:112;
  width:46px; height:46px;
  display:none;
  place-items:center;
  border-radius:50%;
  border:1px solid rgba(20,17,15,.18);
}
.nav__toggle span{
  position:absolute;
  left:12px;
  width:22px; height:1.5px;
  background:var(--ink);
  transition:transform .5s var(--ease), opacity .3s var(--ease), width .4s var(--ease);
}
.nav__toggle span:nth-child(1){ transform:translateY(-6px); }
.nav__toggle span:nth-child(3){ transform:translateY(6px); width:14px; margin-left:auto; }
.nav.is-open .nav__toggle span:nth-child(1){ transform:translateY(0) rotate(45deg); }
.nav.is-open .nav__toggle span:nth-child(2){ opacity:0; transform:scaleX(.2); }
.nav.is-open .nav__toggle span:nth-child(3){ width:22px; margin-left:0; transform:translateY(0) rotate(-45deg); }

.nav-overlay{
  position:fixed; inset:0; z-index:105;
  background:rgba(20,17,15,.42);
  -webkit-backdrop-filter:blur(3px);
  backdrop-filter:blur(3px);
  opacity:0;
  transition:opacity .5s var(--ease);
}
.nav-overlay.is-on{ opacity:1; }


/* ==========================================================================
   06  HERO
   ========================================================================== */
.hero{
  position:relative;
  min-height:100svh;
  display:flex;
  align-items:flex-end;
  padding-block:calc(var(--nav-h) + 60px) clamp(96px,12vh,150px);
  overflow:hidden;
  background:var(--ink);
  isolation:isolate;
}
.hero__media{ position:absolute; inset:0; z-index:-2; }
.hero__img{
  width:100%; height:100%;
  object-fit:cover;
  object-position:50% 32%;
  transform:scale(1.14);
  filter:saturate(.94) contrast(1.02);
  animation:heroZoom 2.4s var(--ease-out) forwards;
}
@keyframes heroZoom{ to{ transform:scale(1); } }

.hero__scrim{
  position:absolute; inset:0;
  background:
    linear-gradient(180deg, rgba(20,17,15,.62) 0%, rgba(20,17,15,.16) 26%, rgba(20,17,15,.48) 62%, rgba(20,17,15,.88) 100%),
    linear-gradient(96deg, rgba(20,17,15,.72) 0%, rgba(20,17,15,.30) 46%, rgba(20,17,15,.05) 78%);
}
.hero__grain{
  position:absolute; inset:0;
  opacity:.07; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/></filter><rect width='140' height='140' filter='url(%23n)'/></svg>");
}

.hero__inner{
  position:relative;
  width:100%;
  color:var(--ivory);
}
.hero__eyebrow{
  display:flex; align-items:center; gap:1rem;
  font-family:var(--f-mono);
  font-size:.76rem;
  font-weight:600;
  letter-spacing:.38em;
  text-transform:uppercase;
  color:var(--gold-light);
  margin-bottom:1.6rem;
}
.hero__eyebrow .rule{
  display:block; width:clamp(28px,7vw,72px); height:1px;
  background:linear-gradient(90deg,transparent,var(--gold-light));
}
.hero__eyebrow .rule:last-child{ background:linear-gradient(90deg,var(--gold-light),transparent); }

.hero__title{
  font-family:var(--f-display);
  font-weight:400;
  font-size:clamp(3.4rem,13.5vw,10.5rem);
  line-height:.92;
  letter-spacing:-.03em;
  margin-bottom:1.5rem;
}
.hero__title .line{ display:block; overflow:hidden; }
.hero__title .line__in{
  display:block;
  transform:translateY(105%);
  animation:lineUp 1.15s var(--ease-out) forwards;
  animation-delay:var(--d,0s);
}
@keyframes lineUp{ to{ transform:translateY(0); } }

.hero__tagline{
  font-family:var(--f-serif);
  font-size:clamp(1.15rem,2.4vw,1.9rem);
  font-weight:300;
  line-height:1.4;
  color:rgba(251,247,242,.9);
  max-width:26ch;
  margin-bottom:2.4rem;
}
.hero__tagline em{ font-style:italic; color:var(--gold-light); }

.hero__cta{
  display:flex; flex-wrap:wrap; gap:.9rem;
  margin-bottom:clamp(48px,7vh,86px);
}
.hero .btn--ghost{
  --btn-fg:var(--ivory);
  border-color:rgba(251,247,242,.42);
}
.hero .btn--ghost:hover{ border-color:var(--gold-light); color:var(--gold-light); }

.hero__stats{
  display:flex; flex-wrap:wrap;
  gap:clamp(1.8rem,5vw,4.5rem);
  padding-top:2rem;
  border-top:1px solid rgba(251,247,242,.16);
  max-width:46rem;
}
.stat{ display:grid; gap:.35rem; }
.stat__num{
  font-family:var(--f-display);
  font-size:clamp(1.8rem,3.4vw,2.9rem);
  line-height:1;
  color:var(--gold-light);
}
.stat__label{
  font-family:var(--f-mono);
  font-size:.72rem;
  font-weight:500;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:rgba(251,247,242,.62);
}

/* scroll cue */
.hero__scroll{
  position:absolute;
  left:var(--gutter); bottom:26px;
  display:inline-flex; align-items:center; gap:.75rem;
  font-family:var(--f-mono);
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.28em;
  text-transform:uppercase;
  color:rgba(251,247,242,.6);
  transition:color .4s var(--ease);
}
.hero__scroll:hover{ color:var(--gold-light); }
.hero__scroll-line{
  position:relative;
  display:block; width:46px; height:1px;
  background:rgba(251,247,242,.28);
  overflow:hidden;
}
.hero__scroll-line::after{
  content:"";
  position:absolute; inset:0;
  background:var(--gold-light);
  animation:cueRun 2.2s var(--ease-io) infinite;
}
@keyframes cueRun{
  0%{ transform:translateX(-100%); }
  60%,100%{ transform:translateX(100%); }
}

/* side vertical label */
.hero__side{
  position:absolute;
  right:calc(var(--gutter) - 6px);
  top:50%;
  transform:translateY(-50%) rotate(90deg);
  transform-origin:center;
  display:inline-flex; align-items:center; gap:1rem;
  font-family:var(--f-mono);
  font-size:.71rem;
  font-weight:500;
  letter-spacing:.34em;
  text-transform:uppercase;
  color:rgba(251,247,242,.42);
  white-space:nowrap;
}
.hero__side i{ display:block; width:34px; height:1px; background:rgba(251,247,242,.3); }


/* ==========================================================================
   07  MARQUEE
   ========================================================================== */
.marquee{
  overflow:hidden;
  padding-block:1.1rem;
  background:var(--ink);
  border-block:1px solid rgba(198,161,91,.28);
  color:var(--champagne);
}
.marquee__track{
  display:flex; align-items:center; gap:2rem;
  width:max-content;
  animation:marquee 34s linear infinite;
}
.marquee__track span{
  font-family:var(--f-serif);
  font-size:clamp(1rem,2vw,1.4rem);
  font-weight:400;
  letter-spacing:.18em;
  text-transform:uppercase;
  white-space:nowrap;
}
.marquee__track i{ color:var(--gold); font-style:normal; }
@keyframes marquee{ to{ transform:translateX(-50%); } }
.marquee:hover .marquee__track{ animation-play-state:paused; }


/* ==========================================================================
   08  ABOUT
   ========================================================================== */
.about__grid{
  display:grid;
  grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);
  gap:clamp(2.5rem,6vw,6rem);
  align-items:center;
}

.about__media{ position:relative; }
.about__frame{
  position:relative;
  z-index:1;
  overflow:hidden;
  border-radius:2px;
  box-shadow:var(--sh-lg);
}
.about__frame img{
  width:100%;
  aspect-ratio:3/4.2;
  object-fit:cover;
  transform:scale(1.02);
  transition:transform 1.2s var(--ease-out);
}
.about__frame:hover img{ transform:scale(1.07); }
.about__frame::after{
  content:"";
  position:absolute; inset:0;
  background:linear-gradient(180deg,transparent 55%,rgba(20,17,15,.35));
}
/* offset outline frame */
.about__frame-outline{
  position:absolute;
  inset:34px -34px -34px 34px;
  border:1px solid var(--gold);
  opacity:.5;
  z-index:0;
  pointer-events:none;
}
.about__badge{
  position:absolute;
  z-index:2;
  right:-18px; bottom:-18px;
  display:flex; align-items:center; gap:.85rem;
  padding:1.1rem 1.4rem;
  background:rgba(251,247,242,.94);
  -webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px);
  border:1px solid var(--line);
  box-shadow:var(--sh-md);
}
.about__badge i{ color:var(--gold-deep); font-size:1.05rem; }
.about__badge span{
  font-family:var(--f-mono);
  font-size:.73rem;
  font-weight:600;
  letter-spacing:.18em;
  text-transform:uppercase;
  line-height:1.6;
}
.about__badge em{
  font-style:normal;
  font-weight:400;
  color:var(--muted);
  letter-spacing:.12em;
}

.about__copy{
  margin-top:2rem;
  display:grid; gap:1.1rem;
  max-width:34rem;
  color:var(--muted-dark);
}

.pillars{
  margin-top:2.6rem;
  display:grid; gap:1.6rem;
}
.pillar{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:1.4rem;
  padding-top:1.5rem;
  border-top:1px solid var(--line);
}
.pillar__num{
  font-family:var(--f-mono);
  font-size:.76rem;
  font-weight:600;
  letter-spacing:.2em;
  color:var(--gold-deep);
  padding-top:.45rem;
}
.pillar h3{
  font-family:var(--f-display);
  font-weight:500;
  font-size:1.35rem;
  letter-spacing:.005em;
  margin-bottom:.35rem;
}
.pillar p{ color:var(--muted-dark); font-size:.97rem; }

.about__cta{
  margin-top:2.4rem;
  display:flex; flex-wrap:wrap; align-items:center; gap:1.6rem;
}


/* ==========================================================================
   09  SERVICES
   ========================================================================== */
.cards{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(290px,1fr));
  gap:clamp(1rem,1.6vw,1.6rem);
}
.card{
  position:relative;
  display:grid;
  align-content:start;
  gap:.85rem;
  padding:clamp(1.8rem,2.6vw,2.6rem);
  background:rgba(255,255,255,.62);
  border:1px solid rgba(255,255,255,.9);
  box-shadow:var(--sh-sm);
  overflow:hidden;
  transition:transform .6s var(--ease-out), box-shadow .6s var(--ease), background-color .6s var(--ease);
}
.card::before{
  content:"";
  position:absolute; inset:0;
  background:linear-gradient(180deg,rgba(255,255,255,.7),rgba(255,255,255,0));
  opacity:0;
  transition:opacity .5s var(--ease);
}
.card::after{
  content:"";
  position:absolute; left:0; top:0; bottom:0;
  width:2px;
  background:var(--grad-gold);
  transform:scaleY(0);
  transform-origin:top;
  transition:transform .6s var(--ease-out);
}
.card:hover{ transform:translateY(-8px); box-shadow:var(--sh-md); }
.card:hover::after{ transform:scaleY(1); }

.card__icon{
  display:grid; place-items:center;
  width:52px; height:52px;
  border-radius:50%;
  border:1px solid rgba(198,161,91,.5);
  color:var(--gold-deep);
  font-size:1.05rem;
  transition:transform .6s var(--ease-out), background-color .5s, color .5s;
}
.card:hover .card__icon{
  transform:rotate(-10deg) scale(1.06);
  background:var(--grad-gold);
  border-color:transparent;
  color:var(--ink);
}
.card__title{
  font-family:var(--f-display);
  font-weight:500;
  font-size:1.45rem;
  letter-spacing:.005em;
}
.card__text{ color:var(--muted-dark); font-size:.96rem; }
.card__line{
  display:block;
  height:1px;
  background:var(--line);
  margin:.5rem 0 .35rem;
  transform:scaleX(1);
  transform-origin:left;
  transition:transform .6s var(--ease-out);
}
.card:hover .card__line{ transform:scaleX(.35); }
.card__cta{
  display:inline-flex; align-items:center; gap:.6em;
  font-family:var(--f-mono);
  font-size:.76rem;
  font-weight:600;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--gold-deep);
}
.card__cta i{ transition:transform .4s var(--ease); }
.card__cta:hover i{ transform:translateX(6px); }


/* ==========================================================================
   10  FEATURED RAIL
   ========================================================================== */
.featured{ overflow:hidden; }
.featured__nav{ display:flex; gap:.6rem; }

.slider-btn{
  display:grid; place-items:center;
  width:48px; height:48px;
  border-radius:50%;
  border:1px solid var(--line);
  color:var(--ink);
  transition:background-color .4s var(--ease), color .4s var(--ease),
             border-color .4s var(--ease), transform .4s var(--ease);
}
.slider-btn:hover{ background:var(--ink); border-color:var(--ink); color:var(--ivory); }
.slider-btn:active{ transform:scale(.94); }
.slider-btn[disabled]{ opacity:.3; pointer-events:none; }

.rail-wrap{ position:relative; }
.rail{
  display:flex;
  gap:clamp(1rem,2vw,1.8rem);
  padding-inline:var(--gutter);
  padding-bottom:1.2rem;
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  scrollbar-width:none;
}
.rail::-webkit-scrollbar{ display:none; }
.rail:focus-visible{ outline:2px solid var(--gold); outline-offset:4px; }
.rail__item{ flex:0 0 auto; scroll-snap-align:start; }

.look{
  position:relative;
  width:clamp(250px,32vw,392px);
  overflow:hidden;
  border-radius:2px;
  box-shadow:var(--sh-md);
  transform-style:preserve-3d;
}
.look img{
  width:100%;
  aspect-ratio:3/4;
  object-fit:cover;
  transition:transform 1.1s var(--ease-out), filter .7s var(--ease);
  filter:saturate(.92);
}
.look:hover img{ transform:scale(1.07); filter:saturate(1); }
.look::after{
  content:"";
  position:absolute; inset:0;
  background:linear-gradient(0deg,rgba(20,17,15,.82) 0%,rgba(20,17,15,.18) 46%,transparent 72%);
  pointer-events:none;
}
.look figcaption{
  position:absolute;
  left:0; right:0; bottom:0; z-index:2;
  padding:clamp(1.1rem,2vw,1.7rem);
  display:grid; gap:.35rem;
}
.look__tag{
  justify-self:start;
  padding:.4em .9em;
  border:1px solid rgba(227,200,140,.6);
  border-radius:99px;
  background:rgba(20,17,15,.35);
  -webkit-backdrop-filter:blur(6px);
  backdrop-filter:blur(6px);
  font-family:var(--f-mono);
  font-size:.70rem;
  font-weight:600;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--gold-light);
}
.look__name{
  font-family:var(--f-display);
  font-size:1.15rem;
  color:var(--ivory);
}


/* ==========================================================================
   11  PORTFOLIO / MASONRY
   ========================================================================== */
.filters{
  display:flex; flex-wrap:wrap;
  gap:.5rem;
  margin-top:2.2rem;
}
.section__head--center .filters{ justify-content:center; }
.filter{
  padding:.7em 1.35em;
  border:1px solid var(--line);
  border-radius:99px;
  font-family:var(--f-mono);
  font-size:.74rem;
  font-weight:600;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--muted-dark);
  transition:background-color .4s var(--ease), color .4s var(--ease),
             border-color .4s var(--ease), transform .4s var(--ease);
}
.filter:hover{ border-color:var(--gold); color:var(--gold-deep); }
.filter.is-active{ background:var(--ink); border-color:var(--ink); color:var(--ivory); }

.masonry{
  columns:3;
  column-gap:clamp(.7rem,1.4vw,1.3rem);
}
.masonry .tile{
  break-inside:avoid;
  margin-bottom:clamp(.7rem,1.4vw,1.3rem);
  opacity:1;
  transition:opacity .5s var(--ease), transform .55s var(--ease-out);
}
.masonry .tile.is-hidden{ display:none; }
.masonry .tile.is-filtered{ opacity:0; transform:scale(.94); pointer-events:none; }

.tile__btn{
  position:relative;
  display:block; width:100%;
  padding:0; border:0;
  overflow:hidden;
  background:var(--beige-deep);
  cursor:pointer;
}
.tile__btn img{
  width:100%;
  aspect-ratio:3/4.5;
  object-fit:cover;
  transition:transform 1.1s var(--ease-out), filter .6s var(--ease);
  filter:saturate(.94);
}
.tile--sq .tile__btn img{ aspect-ratio:1/1; }
.tile--tall .tile__btn img{ aspect-ratio:3/4.9; }
.tile--wide .tile__btn img{ aspect-ratio:3/2.3; }

.tile__veil{
  position:absolute; inset:0;
  display:grid; place-items:center;
  background:linear-gradient(180deg,rgba(20,17,15,.05),rgba(20,17,15,.5));
  opacity:0;
  transition:opacity .55s var(--ease);
}
.tile__veil i{
  display:grid; place-items:center;
  width:54px; height:54px;
  border-radius:50%;
  border:1px solid rgba(251,247,242,.7);
  color:var(--ivory);
  font-size:.85rem;
  transform:scale(.7) rotate(-45deg);
  transition:transform .55s var(--ease-out);
}
.tile__btn:hover img{ transform:scale(1.07); filter:saturate(1.05); }
.tile__btn:hover .tile__veil{ opacity:1; }
.tile__btn:hover .tile__veil i{ transform:scale(1) rotate(0); }

.tile__cap{
  position:absolute;
  left:0; right:0; bottom:0;
  padding:1.1rem 1.2rem;
  background:linear-gradient(0deg,rgba(20,17,15,.8),transparent);
  color:var(--ivory);
  font-family:var(--f-mono);
  font-size:.71rem;
  font-weight:600;
  letter-spacing:.22em;
  text-transform:uppercase;
  text-align:left;
  transform:translateY(6px);
  opacity:.85;
  transition:transform .5s var(--ease-out), opacity .5s;
}
.tile__btn:hover .tile__cap{ transform:translateY(0); opacity:1; }

.portfolio__foot{
  margin-top:clamp(2.4rem,4vw,3.4rem);
  text-align:center;
  color:var(--muted-dark);
  font-size:.96rem;
}


/* ==========================================================================
   12  BRIDAL
   ========================================================================== */
.bridal__grid{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:clamp(2.5rem,6vw,6rem);
  align-items:center;
}
.bridal__lead{
  margin-top:1.6rem;
  max-width:34rem;
  color:var(--muted-dark);
}
.bridal__lead strong{ color:var(--ink); font-weight:500; }

.steps{
  margin-block:clamp(2.2rem,3.4vw,3.2rem);
  display:grid;
  gap:1px;
  background:var(--line);
  border-block:1px solid var(--line);
}
.step{
  position:relative;
  display:grid;
  grid-template-columns:auto 1fr;
  gap:1.2rem;
  padding:1.4rem 1.2rem;
  background:var(--ivory);
  transition:background-color .45s var(--ease), padding-left .45s var(--ease);
}
.step:hover{ background:var(--ivory-warm); padding-left:1.8rem; }
.step__n{
  font-family:var(--f-mono);
  font-size:.76rem;
  font-weight:600;
  letter-spacing:.16em;
  color:var(--gold-deep);
  padding-top:.35rem;
}
.step h3{
  font-family:var(--f-display);
  font-weight:500;
  font-size:1.2rem;
  margin-bottom:.2rem;
}
.step p{ color:var(--muted-dark); font-size:.95rem; }

.bridal__media{
  position:relative;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:clamp(.8rem,1.6vw,1.4rem);
  padding:0 40px;
}
.bridal__img{
  position:relative;
  z-index:1;
  overflow:hidden;
  box-shadow:var(--sh-lg);
}
.bridal__img--a{ margin-top:clamp(2rem,5vw,4.5rem); }
.bridal__img img{
  width:100%;
  aspect-ratio:3/4.4;
  object-fit:cover;
  transition:transform 1.2s var(--ease-out);
}
.bridal__img--a:hover img{ transform:scale(1.06); }
.bridal__img--b:hover img{ transform:scale(1.06); }
.bridal__img figcaption{
  position:absolute; left:0; right:0; bottom:0;
  padding:1.4rem 1.2rem 1.1rem;
  background:linear-gradient(0deg,rgba(20,17,15,.82),transparent);
  color:var(--ivory);
  font-family:var(--f-mono);
  font-size:.71rem;
  font-weight:600;
  letter-spacing:.22em;
  text-transform:uppercase;
}
.bridal__outline{
  inset:-28px -28px 28px 28px;
  z-index:0;
}


/* ==========================================================================
   13  WHY CHOOSE US
   ========================================================================== */
.reasons{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(268px,1fr));
  gap:1px;
  background:var(--line-light);
  border:1px solid var(--line-light);
}
.reason{
  position:relative;
  padding:clamp(1.8rem,2.8vw,2.8rem);
  background:linear-gradient(170deg,var(--ink-2),var(--ink));
  overflow:hidden;
  transition:background-color .55s var(--ease);
}
.reason::after{
  content:"";
  position:absolute; inset:0;
  background:radial-gradient(90% 70% at 50% 0%,rgba(198,161,91,.16),transparent 70%);
  opacity:0;
  transition:opacity .55s var(--ease);
}
.reason:hover::after{ opacity:1; }
.reason > i{
  display:grid; place-items:center;
  width:50px; height:50px;
  margin-bottom:1.4rem;
  border:1px solid rgba(198,161,91,.45);
  border-radius:50%;
  color:var(--gold-light);
  font-size:1rem;
  transition:transform .6s var(--ease-out), background-color .5s, color .5s, border-color .5s;
}
.reason:hover > i{
  transform:translateY(-4px) rotate(-8deg);
  background:var(--grad-gold);
  border-color:transparent;
  color:var(--ink);
}
.reason h3{
  position:relative;
  font-family:var(--f-display);
  font-weight:500;
  font-size:1.35rem;
  margin-bottom:.6rem;
  color:var(--ivory);
}
.reason p{
  position:relative;
  color:rgba(251,247,242,.62);
  font-size:.95rem;
}


/* ==========================================================================
   14  REVIEWS
   ========================================================================== */
.reviews{ background:linear-gradient(180deg,var(--ivory),var(--ivory-warm)); }

.slider{ position:relative; max-width:52rem; margin-inline:auto; }
.slider__track{
  position:relative;
  min-height:clamp(290px,32vw,340px);
}
.review{
  position:absolute;
  inset:0;
  display:grid;
  align-content:center;
  justify-items:center;
  gap:1.1rem;
  text-align:center;
  padding-inline:clamp(0px,3vw,24px);
  opacity:0;
  visibility:hidden;
  transform:translateY(22px);
  transition:opacity .65s var(--ease), transform .65s var(--ease-out), visibility .65s;
}
.review.is-active{ opacity:1; visibility:visible; transform:none; }
.review__stars{
  display:flex; gap:.35rem;
  color:var(--gold);
  font-size:.8rem;
}
.review__text{
  font-family:var(--f-serif);
  font-size:clamp(1.2rem,2.6vw,1.85rem);
  font-weight:400;
  font-style:italic;
  line-height:1.5;
  color:var(--ink);
  max-width:32ch;
}
.review__meta{
  display:grid;
  gap:.2rem;
}
.review__name{
  font-family:var(--f-display);
  font-size:1.08rem;
  color:var(--ink);
}
.review__role{
  font-family:var(--f-mono);
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--gold-deep);
}
.review__flag{
  display:inline-flex;
  align-items:center;
  gap:.4rem;
  padding:.35em .8em;
  border:1px dashed rgba(198,161,91,.7);
  border-radius:99px;
  font-family:var(--f-mono);
  font-size:.70rem;
  font-weight:600;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--gold-deep);
}

.slider__ui{
  margin-top:1.8rem;
  display:flex; align-items:center; justify-content:center; gap:1.2rem;
}
.slider__dots{ display:flex; gap:.5rem; }
.slider__dot{
  width:7px; height:7px;
  border-radius:50%;
  background:rgba(20,17,15,.2);
  transition:background-color .4s var(--ease), transform .4s var(--ease);
}
.slider__dot.is-active{ background:var(--gold-deep); transform:scale(1.5); }

.reviews__note{
  margin:clamp(2.4rem,4vw,3.4rem) auto 0;
  max-width:44rem;
  /* grid, not flex: as flex items each text run and <code> became its own
     non-wrapping item, which pushed the note wider than narrow phones */
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  align-items:start;
  gap:.85rem;
  padding:1.1rem 1.3rem;
  border:1px dashed rgba(198,161,91,.6);
  background:rgba(227,200,140,.1);
  font-size:.9rem;
  color:var(--muted-dark);
}
.reviews__note > span{ min-width:0; overflow-wrap:anywhere; }
.reviews__note i{ color:var(--gold-deep); margin-top:.28rem; }
.reviews__note code{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:.82em;
  background:rgba(20,17,15,.06);
  padding:.1em .45em;
  border-radius:3px;
}


/* ==========================================================================
   15  INSTAGRAM CTA
   ========================================================================== */
.insta__inner{ display:grid; justify-items:center; }
.insta__card{
  position:relative;
  display:grid;
  justify-items:center;
  gap:.55rem;
  width:min(100%,760px);
  padding:clamp(2.4rem,5vw,4.2rem) clamp(1.6rem,4vw,3.6rem);
  text-align:center;
  background:linear-gradient(170deg,rgba(255,255,255,.9),rgba(255,255,255,.55));
  border:1px solid rgba(255,255,255,.9);
  box-shadow:var(--sh-md);
  overflow:hidden;
  transition:transform .6s var(--ease-out), box-shadow .6s var(--ease);
}
.insta__card:hover{ transform:translateY(-6px); box-shadow:var(--sh-lg); }
.insta__glow{
  position:absolute; top:-40%; left:50%;
  width:min(120%,700px); aspect-ratio:1;
  transform:translateX(-50%);
  background:radial-gradient(circle,rgba(201,154,158,.28),rgba(198,161,91,.14) 42%,transparent 66%);
  opacity:0;
  transition:opacity .7s var(--ease);
}
.insta__card:hover .insta__glow{ opacity:1; }
.insta__icon{
  position:relative;
  font-size:2.4rem;
  background:var(--grad-gold);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
  transition:transform .6s var(--ease-out);
}
.insta__card:hover .insta__icon{ transform:translateY(-4px) scale(1.08); }
.insta__handle{
  position:relative;
  font-family:var(--f-mono);
  font-size:.76rem;
  font-weight:600;
  letter-spacing:.3em;
  text-transform:uppercase;
  color:var(--gold-deep);
}
.insta__card h3{
  position:relative;
  font-family:var(--f-display);
  font-weight:400;
  font-size:clamp(1.7rem,3.4vw,2.7rem);
  margin-top:.4rem;
}
.insta__text{
  position:relative;
  max-width:34ch;
  color:var(--muted-dark);
  font-size:.98rem;
}
.insta__cta{
  position:relative;
  margin-top:1.2rem;
  display:inline-flex; align-items:center; gap:.6em;
  font-family:var(--f-mono);
  font-size:.78rem;
  font-weight:600;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--ink);
  padding-bottom:.35em;
  border-bottom:1px solid var(--gold);
  transition:color .35s var(--ease);
}
.insta__cta i{ transition:transform .4s var(--ease); }
.insta__card:hover .insta__cta{ color:var(--gold-deep); }
.insta__card:hover .insta__cta i{ transform:translateX(6px); }


/* ==========================================================================
   16  BOOK
   ========================================================================== */
.book__grid{
  display:grid;
  grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);
  gap:clamp(2.4rem,5vw,5rem);
  align-items:start;
}
.book__lead{
  margin-top:1.5rem;
  max-width:32rem;
  color:rgba(251,247,242,.66);
}
.book__points{
  margin-top:2rem;
  display:grid;
  gap:.7rem;
}
.book__points li{
  display:flex; align-items:center; gap:.75rem;
  font-family:var(--f-mono);
  font-size:.74rem;
  font-weight:500;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:rgba(251,247,242,.78);
}
.book__points i{ color:var(--gold-light); font-size:.8rem; }
.book__direct{
  margin-top:2.6rem;
  padding-top:2rem;
  border-top:1px solid var(--line-light);
}
.book__direct p{
  margin-bottom:1rem;
  font-family:var(--f-serif);
  font-size:1.2rem;
  font-style:italic;
  color:var(--gold-light);
}

.book__form{
  position:relative;
  padding:clamp(1.6rem,3vw,2.8rem);
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1.2rem 1.1rem;
  background:rgba(255,255,255,.045);
  border:1px solid var(--line-light);
  -webkit-backdrop-filter:blur(6px);
  backdrop-filter:blur(6px);
}
.field{ display:grid; gap:.5rem; }
.field--full{ grid-column:1/-1; }
.field label{
  font-family:var(--f-mono);
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:rgba(251,247,242,.6);
}
.field input,
.field select,
.field textarea{
  width:100%;
  padding:.9em 1em;
  background:rgba(251,247,242,.05);
  border:1px solid var(--line-light);
  border-radius:2px;
  color:var(--ivory);
  font-size:.94rem;
  font-weight:300;
  transition:border-color .4s var(--ease), background-color .4s var(--ease);
  -webkit-appearance:none;
  appearance:none;
}
.field textarea{ resize:vertical; min-height:112px; line-height:1.7; }
.field input::placeholder,
.field textarea::placeholder{ color:rgba(251,247,242,.32); }
.field input:focus,
.field select:focus,
.field textarea:focus{
  outline:none;
  border-color:var(--gold);
  background:rgba(251,247,242,.09);
}
.field input[type="date"]{ color-scheme:dark; }
.field select{
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23C6A15B' stroke-width='1.5'/></svg>");
  background-repeat:no-repeat;
  background-position:right 1em center;
  padding-right:2.6em;
  cursor:pointer;
}
.field select option{ background:var(--ink-2); color:var(--ivory); }
.field.is-invalid input,
.field.is-invalid select,
.field.is-invalid textarea{ border-color:#c56b5e; }
.field__err{
  display:none;
  font-family:var(--f-mono);
  font-size:.71rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:#e09184;
}
.field.is-invalid .field__err{ display:block; }
.field__hint{
  font-family:var(--f-mono);
  font-size:.70rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:rgba(251,247,242,.36);
}
.book__form .btn--block{ grid-column:1/-1; margin-top:.4rem; }
.book__legal{
  grid-column:1/-1;
  font-size:.8rem;
  line-height:1.6;
  color:rgba(251,247,242,.42);
}


/* ==========================================================================
   17  CONTACT
   ========================================================================== */
.contact__grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
  gap:clamp(1rem,1.8vw,1.6rem);
}
.contact-card{
  position:relative;
  display:grid;
  align-content:start;
  gap:.5rem;
  padding:clamp(1.8rem,2.8vw,2.6rem);
  background:rgba(255,255,255,.6);
  border:1px solid var(--line);
  transition:transform .55s var(--ease-out), box-shadow .55s var(--ease), border-color .55s;
}
.contact-card:hover{ transform:translateY(-6px); box-shadow:var(--sh-md); border-color:rgba(198,161,91,.5); }
.contact-card__icon{
  display:grid; place-items:center;
  width:48px; height:48px;
  margin-bottom:.6rem;
  border-radius:50%;
  background:var(--grad-gold);
  color:var(--ink);
  font-size:1.05rem;
}
.contact-card h3{
  font-family:var(--f-mono);
  font-size:.73rem;
  font-weight:600;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--gold-deep);
}
.contact-card__val{
  font-family:var(--f-display);
  font-size:1.3rem;
  color:var(--ink);
}
.contact-card__note{ font-size:.92rem; color:var(--muted-dark); margin-bottom:.5rem; }
.contact-card__tag{
  justify-self:start;
  margin-top:.4rem;
  padding:.4em .9em;
  border:1px solid rgba(198,161,91,.6);
  border-radius:99px;
  font-family:var(--f-mono);
  font-size:.70rem;
  font-weight:600;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--gold-deep);
}


/* ==========================================================================
   18  FOOTER
   ========================================================================== */
.footer{
  position:relative;
  padding-block:clamp(3rem,6vw,5rem) 2rem;
  background:
    radial-gradient(100% 70% at 50% 0%, rgba(198,161,91,.14), transparent 62%),
    linear-gradient(180deg,var(--ink-2),#0C0A09);
  color:rgba(251,247,242,.7);
  overflow:hidden;
}
.footer__glow{
  position:absolute;
  left:50%; bottom:-46%;
  width:min(900px,120%); aspect-ratio:1;
  transform:translateX(-50%);
  background:radial-gradient(circle,rgba(198,161,91,.16),transparent 62%);
  pointer-events:none;
}
.footer__top{
  position:relative;
  display:grid;
  grid-template-columns:1.3fr .8fr 1.1fr;
  gap:clamp(2rem,4vw,4rem);
  padding-bottom:clamp(2.4rem,4vw,3.4rem);
  border-bottom:1px solid var(--line-light);
}
.footer__mark{
  display:grid; place-items:center;
  width:60px; height:60px;
  margin-bottom:1.1rem;
  border:1px solid rgba(198,161,91,.45);
  border-radius:50%;
  font-family:var(--f-display);
  font-size:1.2rem;
  letter-spacing:.08em;
  background:var(--grad-gold);
  color:var(--ink);
}
.footer__name{
  font-family:var(--f-display);
  font-size:1.7rem;
  color:var(--ivory);
}
.footer__role{
  font-family:var(--f-mono);
  font-size:.71rem;
  font-weight:600;
  letter-spacing:.28em;
  text-transform:uppercase;
  color:var(--gold-light);
}
.footer__h{
  font-family:var(--f-mono);
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.28em;
  text-transform:uppercase;
  color:var(--gold-light);
  margin-bottom:1.1rem;
}
.footer__nav ul{ display:grid; gap:.55rem; }
.footer__nav a{
  position:relative;
  display:inline-block;
  font-size:.92rem;
  transition:color .35s var(--ease), transform .4s var(--ease);
}
.footer__nav a::after{
  content:"";
  position:absolute; left:0; bottom:-2px;
  width:100%; height:1px;
  background:var(--gold);
  transform:scaleX(0);
  transform-origin:right;
  transition:transform .45s var(--ease);
}
.footer__nav a:hover{ color:var(--gold-light); }
.footer__nav a:hover::after{ transform:scaleX(1); transform-origin:left; }
.footer__cta p{
  margin-bottom:1.4rem;
  font-size:.94rem;
  color:rgba(251,247,242,.6);
  max-width:26rem;
}
.footer__bottom{
  position:relative;
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  align-items:center;
  gap:1rem;
  padding-top:2rem;
  font-size:.8rem;
  color:rgba(251,247,242,.42);
}
/* Colophon: the last line on the page. Separated from the copyright row by a
   hairline and centred, so it reads as a signature rather than as another
   copyright notice. */
.footer__sig{
  position:relative;
  margin:1.4rem 0 0;
  padding-top:1.4rem;
  border-top:1px solid var(--line-light);
  text-align:center;
  font-family:var(--f-serif);
  font-style:italic;
  font-size:1.05rem;
  letter-spacing:.04em;
  color:var(--gold-light);
}
/* Developer credit. Inherits the signature's colour and italic serif so it reads
   as part of the line rather than a separate link; the underline only appears on
   hover/focus so the resting footer stays quiet.

   Tap target: the link is pulled up with a negative margin equal to half its
   extra height, so the clickable box grows to ~44px for touch while the text
   itself stays on the original baseline. A positive padding-block would have
   added 19px to the line box and visibly loosened the colophon. */
.footer__credit{
  display:inline-block;
  padding-block:.55rem;
  margin-block:-.55rem;
  color:inherit;
  text-decoration:none;
  border-bottom:1px solid transparent;
  transition:border-color .3s ease;
}
/* The credit opens WhatsApp, so the underline picks up WhatsApp green rather
   than the gold of the surrounding signature — the destination is legible
   before you commit to the tap. */
.footer__credit:hover,
.footer__credit:focus-visible{
  border-bottom-color:#25be5f;
}


/* ==========================================================================
   19  FLOATING WHATSAPP, INSTAGRAM & BACK-TO-TOP
   ========================================================================== */
/* The wrapper exists only to give the fixed quick-action controls a landmark.
   A plain block is deliberate: display:contents has a history of dropping
   elements from the accessibility tree in some engines. All children are
   position:fixed, so this empty block adds no layout. */
.floating{ display:block; }

.wa-float{
  position:fixed;
  right:clamp(16px,2.6vw,32px);
  bottom:clamp(16px,2.6vw,32px);
  z-index:115;
  display:inline-flex;
  align-items:center;
  gap:.7rem;
  height:58px;
  padding:0 1.35rem;
  border-radius:99px;
  background:#1FA855;
  color:#fff;
  font-family:var(--f-mono);
  font-size:.76rem;
  font-weight:600;
  letter-spacing:.16em;
  text-transform:uppercase;
  box-shadow:0 16px 34px -14px rgba(31,168,85,.75);
  transform:translateY(140%);
  transition:transform .7s var(--ease-out), box-shadow .4s var(--ease), background-color .4s;
}
.wa-float i{ font-size:1.5rem; }
.wa-float__label{ white-space:nowrap; }
.wa-float:hover{ transform:translateY(-4px); background:#25be5f; }
body.wa-ready .wa-float{ transform:translateY(0); }
.wa-float__pulse{
  position:absolute; inset:0;
  border-radius:inherit;
  border:1.5px solid #1FA855;
  animation:waPulse 2.6s var(--ease-out) infinite;
  pointer-events:none;
}
@keyframes waPulse{
  0%{ transform:scale(1); opacity:.7; }
  70%,100%{ transform:scale(1.35); opacity:0; }
}

/* Instagram sits directly above the WhatsApp pill in the same corner stack.
   Same geometry and entrance as .wa-float so the pair reads as one control
   group; only the fill differs.

   The gradient is painted on the element's own background rather than on a
   ::before with z-index:-1. A negative-z-index child sitting behind white text
   is fragile on mobile WebKit, and if the gradient fails to paint the button
   becomes white-on-nothing — i.e. invisible. A real background cannot fail that
   way, and the solid colour underneath it is a second safety net. */
.ig-float{
  position:fixed;
  right:clamp(16px,2.6vw,32px);
  bottom:calc(clamp(16px,2.6vw,32px) + 68px);
  z-index:115;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.7rem;
  height:58px;
  padding:0 1.35rem;
  border-radius:99px;
  color:#fff;
  background-color:#ee2a7b;
  background-image:linear-gradient(45deg,#f9ce34 0%,#ee2a7b 50%,#6228d7 100%);
  font-family:var(--f-mono);
  font-size:.76rem;
  font-weight:600;
  letter-spacing:.16em;
  text-transform:uppercase;
  box-shadow:0 16px 34px -14px rgba(214,48,108,.6),
             0 16px 34px -20px rgba(88,60,220,.7);
  transform:translateY(140%);
  transition:transform .7s var(--ease-out), box-shadow .4s var(--ease),
             filter .4s var(--ease);
}
.ig-float:hover{ transform:translateY(-4px); filter:brightness(1.08); box-shadow:0 22px 40px -14px rgba(238,42,123,.7); }
body.wa-ready .ig-float{ transform:translateY(0); }
.ig-float i{ font-size:1.5rem; }
.ig-float__label{ white-space:nowrap; }
.ig-float__pulse{
  position:absolute; inset:0;
  border-radius:inherit;
  border:1.5px solid rgba(238,42,123,.75);
  animation:waPulse 2.6s var(--ease-out) infinite;
  pointer-events:none;
}

/* Clear of the two stacked pills above it: 68px offset + 58px height + 8px gap. */
.to-top{
  position:fixed;
  right:clamp(16px,2.6vw,32px);
  bottom:calc(clamp(16px,2.6vw,32px) + 142px);
  z-index:114;
  display:grid;
  place-items:center;
  width:46px; height:46px;
  border-radius:50%;
  background:var(--ivory);
  border:1px solid var(--line);
  color:var(--ink);
  font-size:.8rem;
  box-shadow:var(--sh-md);
  opacity:0;
  visibility:hidden;
  transform:translateY(14px);
  transition:opacity .45s var(--ease), transform .45s var(--ease),
             visibility .45s, background-color .4s, color .4s;
}
.to-top.is-on{ opacity:1; visibility:visible; transform:none; }
.to-top:hover{ background:var(--ink); color:var(--gold-light); border-color:var(--ink); }


/* ==========================================================================
   20  LIGHTBOX
   ========================================================================== */
.lightbox{
  position:fixed; inset:0; z-index:200;
  display:grid;
  place-items:center;
  padding:clamp(16px,4vw,56px);
  background:rgba(12,10,9,.94);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  opacity:0;
  transition:opacity .45s var(--ease);
}
.lightbox[hidden]{ display:none; }
.lightbox.is-open{ opacity:1; }

.lightbox__fig{
  display:grid;
  gap:1rem;
  justify-items:center;
  max-width:min(92vw,900px);
  transform:scale(.94);
  opacity:0;
  transition:transform .55s var(--ease-out), opacity .45s var(--ease);
}
.lightbox.is-open .lightbox__fig{ transform:scale(1); opacity:1; }
.lightbox__fig img{
  max-width:100%;
  max-height:78vh;
  width:auto;
  object-fit:contain;
  box-shadow:0 50px 110px -40px rgba(0,0,0,.9);
}
.lightbox__fig figcaption{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:.4rem 1.2rem;
  text-align:center;
}
#lbCap{
  font-family:var(--f-serif);
  font-style:italic;
  font-size:1.15rem;
  color:var(--ivory);
}
#lbCount{
  font-family:var(--f-mono);
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.24em;
  color:var(--gold-light);
  padding-top:.4rem;
}

.lightbox__close,
.lightbox__nav{
  position:absolute;
  display:grid; place-items:center;
  width:52px; height:52px;
  border-radius:50%;
  border:1px solid rgba(251,247,242,.28);
  color:var(--ivory);
  background:rgba(251,247,242,.06);
  transition:background-color .4s var(--ease), color .4s var(--ease),
             border-color .4s, transform .4s var(--ease);
}
.lightbox__close{ top:clamp(14px,2.6vw,28px); right:clamp(14px,2.6vw,28px); }
.lightbox__nav--prev{ left:clamp(10px,2.4vw,28px); top:50%; transform:translateY(-50%); }
.lightbox__nav--next{ right:clamp(10px,2.4vw,28px); top:50%; transform:translateY(-50%); }
.lightbox__close:hover,
.lightbox__nav:hover{
  background:var(--grad-gold);
  border-color:transparent;
  color:var(--ink);
}
.lightbox__nav--prev:hover{ transform:translateY(-50%) scale(1.06); }
.lightbox__nav--next:hover{ transform:translateY(-50%) scale(1.06); }
.lightbox__close[disabled],
.lightbox__nav[disabled]{ opacity:.25; pointer-events:none; }

/* swipe feedback on touch devices */
.lightbox.is-swipe-prev .lightbox__fig{ transform:translateX(26px) scale(.97); }
.lightbox.is-swipe-next .lightbox__fig{ transform:translateX(-26px) scale(.97); }


/* ==========================================================================
   21  SCROLL REVEAL
   ========================================================================== */
[data-reveal]{
  opacity:0;
  transform:translateY(34px);
  transition:opacity .85s var(--ease), transform .85s var(--ease-out);
  transition-delay:var(--rd,0s);
}
[data-reveal].is-in{ opacity:1; transform:none; }

/* reveal + image clip */
.reveal{
  opacity:0;
  transform:translateY(30px);
  transition:opacity .9s var(--ease), transform .9s var(--ease-out);
  transition-delay:var(--rd,0s);
}
.reveal.is-in{ opacity:1; transform:none; }

.reveal-img{
  opacity:0;
  clip-path:inset(0 0 100% 0);
  transform:translateY(24px);
  transition:opacity .5s var(--ease), transform .9s var(--ease-out),
             clip-path 1.1s var(--ease-out);
  transition-delay:var(--rd,0s);
}
.reveal-img.is-in{ opacity:1; clip-path:inset(0 0 0 0); transform:none; }

@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  .reveal,.reveal-img,[data-reveal]{
    opacity:1 !important;
    transform:none !important;
    clip-path:none !important;
  }
}


/* ==========================================================================
   22  RESPONSIVE
   ========================================================================== */
@media (max-width:1100px){
  .hero__side{ display:none; }
  .masonry{ columns:2; }
  .about__grid{ grid-template-columns:1fr; gap:3.5rem; }
  .about__media{ max-width:480px; }
  .bridal__grid{ grid-template-columns:1fr; }
  .bridal__media{ max-width:560px; padding-inline:0; }
  .book__grid{ grid-template-columns:1fr; }
  .footer__top{ grid-template-columns:1fr 1fr; }
  .footer__brand{ grid-column:1/-1; }
}

@media (max-width:900px){
  :root{ --nav-h:72px; }

  /* --- mobile menu --- */
  .nav__actions .btn{ display:none; }
  .nav__toggle{ display:grid; }

  .nav__menu{
    position:fixed;
    inset:0;
    z-index:111;
    display:flex;
    flex-direction:column;
    justify-content:center;
    gap:2.5rem;
    padding:calc(var(--nav-h) + 24px) var(--gutter) 40px;
    background:linear-gradient(170deg,var(--ivory),var(--beige));
    clip-path:circle(0% at calc(100% - 46px) 46px);
    transition:clip-path .75s var(--ease-io), visibility .75s var(--ease-io);
    visibility:hidden;
  }
  .nav.is-open .nav__menu{
    clip-path:circle(150% at calc(100% - 46px) 46px);
    visibility:visible;
  }
  .nav__menu ul{
    flex-direction:column;
    align-items:stretch;
    gap:.2rem;
  }
  .nav__menu ul a{
    padding:.55em 0;
    font-family:var(--f-display);
    font-size:clamp(1.8rem,8vw,2.6rem);
    font-weight:400;
    letter-spacing:-.01em;
    text-transform:none;
    color:var(--ink);
    opacity:0;
    transform:translateY(24px);
    transition:opacity .5s var(--ease), transform .6s var(--ease-out), color .3s;
  }
  .nav.is-open .nav__menu ul a{
    opacity:1;
    transform:none;
    transition-delay:calc(.12s + var(--i,0) * .055s);
  }
  .nav__menu ul a::after{ display:none; }
  /* the mobile panel is ivory, so the original deep gold is fine here */
  .nav__menu ul a.is-active{ color:var(--gold-deep); }
  .nav__menu-ink{ display:none; }

  .nav__menu-foot{
    display:grid;
    gap:1.4rem;
    justify-items:start;
    opacity:0;
    transform:translateY(20px);
    transition:opacity .5s var(--ease), transform .6s var(--ease-out);
  }
  .nav.is-open .nav__menu-foot{ opacity:1; transform:none; transition-delay:.45s; }
  .nav__social{
    display:inline-flex; align-items:center; gap:.7rem;
    font-family:var(--f-mono);
    font-size:.78rem;
    font-weight:600;
    letter-spacing:.2em;
    text-transform:uppercase;
    color:var(--muted-dark);
  }
  .nav__social i{ font-size:1.15rem; color:var(--gold-deep); }

  .nav__brand-mark{
    background:rgba(255,255,255,.7);
  }

  /* --- hero --- */
  .hero{
    min-height:100svh;
    padding-block:calc(var(--nav-h) + 48px) 92px;
    align-items:flex-end;
  }
  .hero__img{ object-position:58% 30%; }
  .hero__scrim{
    background:
      linear-gradient(180deg,rgba(20,17,15,.66) 0%,rgba(20,17,15,.22) 24%,rgba(20,17,15,.62) 60%,rgba(20,17,15,.94) 100%),
      linear-gradient(90deg,rgba(20,17,15,.55),rgba(20,17,15,.1));
  }
  .hero__title{ font-size:clamp(3.2rem,17vw,6rem); }
  .hero__stats{
    gap:1.4rem 2.2rem;
    width:100%;
  }
  .stat{ flex:1 1 26%; min-width:88px; }
  .hero__scroll{ left:50%; transform:translateX(-50%); bottom:14px; }

  /* --- section head --- */
  .section__head--row{ flex-direction:column; align-items:flex-start; }

  /* --- featured rail --- */
  .look{ width:min(78vw,330px); }

  /* --- reviews --- */
  .slider__track{ min-height:330px; }

  /* --- book form --- */
  .book__form{ grid-template-columns:1fr; }

  /* --- footer --- */
  .footer__top{ grid-template-columns:1fr; }
  .footer__bottom{ flex-direction:column; align-items:flex-start; }
}

@media (max-width:640px){
  .masonry{ columns:2; column-gap:.55rem; }
  .masonry .tile{ margin-bottom:.55rem; }
  /* All nine portfolio tiles stay visible here. Hiding .tile--wide removed the
     8th and 9th images on phones, so the gallery showed only seven. */

  .hero__cta{ width:100%; }
  .hero__cta .btn{ flex:1 1 100%; }

  .cards{ grid-template-columns:1fr; }
  .bridal__media{ grid-template-columns:1fr 1fr; gap:.55rem; }
  .bridal__img figcaption{ font-size:.70rem; padding:.9rem .7rem; }

  .about__frame-outline{ inset:20px -18px -18px 18px; }
  .about__badge{
    right:-8px; bottom:-14px;
    padding:.85rem 1rem;
  }

  /* icon-only floating WhatsApp + Instagram */
  .wa-float{
    width:56px; height:56px;
    padding:0;
    justify-content:center;
    border-radius:50%;
  }
  .wa-float__label{ display:none; }
  /* Stacks above the WhatsApp circle, and pushes .to-top up by one more step
     so the three controls never overlap. */
  .ig-float{
    width:56px; height:56px;
    padding:0;
    justify-content:center;
    border-radius:50%;
    bottom:calc(clamp(16px,2.6vw,32px) + 62px);
  }
  .ig-float__label{ display:none; }
  /* Clear both circles: 62px offset + 56px height + 8px gap. */
  .to-top{ bottom:calc(clamp(16px,2.6vw,32px) + 134px); width:42px; height:42px; }

  .section__head--center .filters{ justify-content:flex-start; }
  .filter{ padding:.62em 1.05em; font-size:.71rem; letter-spacing:.14em; }
  .lightbox__nav{ width:44px; height:44px; }
  .lightbox__fig img{ max-height:70vh; }
}

@media (hover:none){
  .tile__veil{ opacity:.55; }
  .card:hover{ transform:none; }
}

/* Print — fall back to a clean, readable document */
@media print{
  .nav,.preloader,.cursor,.wa-float,.ig-float,.to-top,.lightbox,.marquee,.scroll-progress{ display:none !important; }
  .reveal,.reveal-img{ opacity:1 !important; transform:none !important; clip-path:none !important; }
  .section--ink,.why,.book{ background:#fff !important; color:#000 !important; }
}