:root {
  --ivory: #fbf7f2;
  --paper: #fffdf9;
  --blush: #f3dfdf;
  --rose: #d8a9a7;
  --rose-deep: #a96e6c;
  --sage: #dfe8d8;
  --butter: #f4e9b2;
  --ink: #171511;
  --muted: #6e6962;
  --line: rgba(23, 21, 17, .15);
  --serif: "Bodoni 72", Didot, "Bodoni MT", "Times New Roman", serif;
  --sans: "Avenir Next", Avenir, "Helvetica Neue", Arial, sans-serif;
  --shadow: 0 22px 70px rgba(60, 45, 38, .13);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--ink);
  background: var(--ivory);
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
body.menu-open { overflow: hidden; }
img, video { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, textarea, select { font: inherit; }
button { color: inherit; }
::selection { background: var(--blush); color: var(--ink); }

.skip-link {
  position: fixed; left: 1rem; top: 1rem; z-index: 9999;
  transform: translateY(-180%); background: var(--ink); color: white;
  padding: .75rem 1rem; border-radius: 2rem;
}
.skip-link:focus { transform: translateY(0); }

.content-shell { width: min(1180px, calc(100% - 48px)); margin: 0 auto; }
.section { padding: 120px 0; }
.eyebrow {
  margin: 0 0 22px; font-size: 11px; font-weight: 700; letter-spacing: .22em;
  text-transform: uppercase; color: var(--rose-deep);
}
h1,h2,h3,p { margin-top: 0; }
h1,h2 { font-family: var(--serif); font-weight: 400; letter-spacing: -.035em; }
h1 { font-size: clamp(64px, 8vw, 126px); line-height: .82; }
h2 { font-size: clamp(48px, 6vw, 82px); line-height: .96; }
h3 { font-family: var(--serif); font-weight: 400; font-size: 29px; line-height: 1.05; }
p { color: var(--muted); }

.button {
  display: inline-flex; align-items: center; justify-content: center; gap: .65rem;
  min-height: 52px; padding: 0 28px; border: 1px solid transparent; border-radius: 999px;
  font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .14em;
  cursor: pointer; transition: transform .25s ease, background .25s ease, color .25s ease, border-color .25s ease;
}
.button:hover { transform: translateY(-2px); }
.button:focus-visible, .text-link:focus-visible, a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible {
  outline: 2px solid var(--rose-deep); outline-offset: 4px;
}
.button-small { min-height: 44px; padding: 0 22px; font-size: 11px; background: var(--ink); color: white; }
.button-light { background: var(--paper); color: var(--ink); }
.button-light:hover { background: var(--butter); }
.button-dark { background: var(--ink); color: white; }
.button-dark:hover { background: var(--rose-deep); }
.button-outline { border-color: var(--ink); background: transparent; }
.button-outline:hover { background: var(--ink); color: white; }
.text-link {
  display: inline-flex; align-items: center; gap: .5rem; padding-bottom: 3px; border-bottom: 1px solid currentColor;
  font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .12em;
}
.text-link span { transition: transform .25s ease; }
.text-link:hover span { transform: translate(3px,-3px); }
.text-link-light { color: white; }

/* header */
.site-header {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  transition: background .3s ease, box-shadow .3s ease, transform .3s ease;
}
.site-header.scrolled { background: rgba(251,247,242,.92); backdrop-filter: blur(18px); box-shadow: 0 1px 0 rgba(23,21,17,.08); }
.header-inner { height: 88px; width: min(1320px, calc(100% - 48px)); margin: auto; display: grid; grid-template-columns: 220px 1fr 220px; align-items: center; }
.brand { justify-self: start; width: 136px; filter: drop-shadow(0 1px 8px rgba(255,255,255,.12)); }
.brand img { width: 100%; height: 74px; object-fit: contain; }
.desktop-nav { display: flex; justify-content: center; gap: clamp(22px, 3vw, 46px); }
.desktop-nav a { position: relative; color: white; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .14em; }
.desktop-nav a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: -7px; height: 1px; background: currentColor; transition: right .25s ease; }
.desktop-nav a:hover::after { right: 0; }
.site-header.scrolled .desktop-nav a { color: var(--ink); }
.header-book { justify-self: end; background: rgba(255,255,255,.94); color: var(--ink); }
.site-header.scrolled .header-book { background: var(--ink); color: white; }
.menu-toggle { display: none; width: 44px; height: 44px; border: 0; background: transparent; padding: 10px; cursor: pointer; }
.menu-toggle span { display:block; height:1px; background: currentColor; margin:7px 0; transition:.25s; }
.mobile-menu { position: fixed; inset: 88px 0 0; background: var(--ivory); padding: 42px 24px 60px; z-index: 99; }
.mobile-menu a { display:block; font-family: var(--serif); font-size: 42px; line-height: 1.35; border-bottom:1px solid var(--line); padding: 9px 0; }
.mobile-socials { display:flex; gap:22px; margin-top:32px; }
.mobile-socials a { font-family:var(--sans); font-size:12px; text-transform:uppercase; letter-spacing:.12em; border:0; }

/* hero */
.hero { min-height: 100svh; position: relative; background: #3a322d; color: white; overflow: hidden; }
.hero-slides, .hero-slide, .hero-scrim { position: absolute; inset: 0; }
.hero-slide { opacity: 0; transform: scale(1.035); transition: opacity 1.2s ease, transform 8s ease; }
.hero-slide.is-active { opacity: 1; transform: scale(1); }
.hero-slide img, .hero-slide video { width: 100%; height: 100%; object-fit: cover; }
.hero-slide video, .film-video { backface-visibility:hidden; transform:translateZ(0); will-change:opacity, transform; }
.hero-scrim { background: linear-gradient(90deg, rgba(15,12,10,.65) 0%, rgba(15,12,10,.32) 48%, rgba(15,12,10,.09) 100%), linear-gradient(0deg, rgba(10,8,7,.23), transparent 45%); }
.hero-content { position: relative; z-index: 2; min-height: 100svh; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; padding-top: 90px; }
.hero-eyebrow { color: rgba(255,255,255,.8); }
.hero h1 { max-width: 930px; margin-bottom: 34px; text-shadow: 0 2px 30px rgba(0,0,0,.08); }
.hero h1 em { font-style: italic; font-weight: 400; }
.hero-copy { max-width: 540px; margin-bottom: 36px; color: rgba(255,255,255,.85); font-size: 18px; line-height: 1.7; }
.hero-actions { display:flex; gap:28px; align-items:center; flex-wrap:wrap; }
.hero-controls { position:absolute; right:42px; bottom:38px; z-index:3; display:flex; align-items:center; gap:15px; }
.hero-arrow { width:42px; height:42px; border:1px solid rgba(255,255,255,.45); border-radius:50%; color:white; background:rgba(0,0,0,.08); cursor:pointer; }
.hero-dots { display:flex; gap:7px; }
.hero-dot { width:22px; height:2px; border:0; padding:0; background:rgba(255,255,255,.4); cursor:pointer; transition:.3s; }
.hero-dot.is-active { width:42px; background:white; }
.scroll-cue { position:absolute; left:34px; bottom:38px; z-index:3; display:flex; align-items:center; gap:12px; color:white; font-size:10px; text-transform:uppercase; letter-spacing:.18em; }
.scroll-cue i { display:block; width:36px; height:1px; background:white; }

.hero.is-brand-slide .hero-scrim { background: transparent; }
.hero.is-brand-slide .hero-content { opacity: 0; pointer-events: none; }
.hero.is-brand-slide .scroll-cue { opacity: 0; pointer-events: none; }
.hero.is-brand-slide .hero-arrow { border-color: rgba(53,42,46,.24); color: var(--ink); background: rgba(255,255,255,.55); }
.hero.is-brand-slide .hero-dot { background: rgba(53,42,46,.24); }
.hero.is-brand-slide .hero-dot.is-active { background: var(--ink); }

/* intro */
.intro-section { background: var(--paper); }
.intro-grid { display:grid; grid-template-columns: 150px 1.25fr .9fr; gap: clamp(30px,5vw,90px); align-items:start; }
.intro-mark img { width:104px; opacity:.72; }
.intro-heading h2 { max-width: 650px; margin:0; }
.intro-copy { padding-top: 45px; }
.intro-copy p { font-size: 17px; line-height: 1.8; }
.intro-copy .text-link { margin-top: 16px; color: var(--ink); }



/* booking ribbon */
.booking-ribbon {
  background: linear-gradient(90deg, rgba(243,223,223,.72) 0%, rgba(255,253,249,.96) 52%, rgba(235,225,216,.88) 100%);
  border-top: 1px solid rgba(23,21,17,.08);
  border-bottom: 1px solid rgba(23,21,17,.08);
}
.booking-ribbon-inner {
  min-height: 94px;
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(280px, .95fr) auto;
  align-items: center;
  gap: 24px;
  padding: 20px 0;
}
.booking-ribbon-copywrap { min-width: 0; }
.booking-ribbon .eyebrow { margin-bottom: 8px; }
.booking-ribbon-copy, .booking-ribbon-note { margin: 0; color: var(--ink); }
.booking-ribbon-copy { font-size: 15px; line-height: 1.55; letter-spacing: .02em; }
.booking-ribbon-copy strong { font-weight: 700; }
.booking-ribbon-note { font-size: 11px; line-height: 1.55; text-transform: uppercase; letter-spacing: .16em; color: var(--rose-deep); text-align: center; }
.booking-ribbon-button { justify-self: end; white-space: nowrap; }

/* artist section */
.artist-section { background: linear-gradient(180deg, #fffaf7 0%, #f7eceb 100%); }
.artist-grid { display: grid; grid-template-columns: .92fr 1.08fr; gap: clamp(34px, 5vw, 88px); align-items: center; }
.artist-photo { margin: 0; overflow: hidden; background: #eadfdc; box-shadow: var(--shadow); }
.artist-photo img { width: 100%; height: 100%; display: block; object-fit: cover; object-position: center top; aspect-ratio: 4 / 5; }
.artist-copy h2 { margin-bottom: 22px; }
.artist-copy > p:not(.eyebrow) { font-size: 17px; line-height: 1.85; max-width: 640px; }
.artist-highlights { display: flex; flex-wrap: wrap; gap: 10px; margin: 30px 0 36px; }
.artist-highlights span {
  border: 1px solid rgba(23,21,17,.14);
  background: rgba(255,255,255,.68);
  border-radius: 999px;
  padding: 10px 14px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ink);
}

/* signature */
.signature-section { background: var(--blush); }
.signature-grid { display:grid; grid-template-columns: 1.1fr .95fr .55fr; gap: 34px; align-items:center; }
.signature-image { margin:0; overflow:hidden; background:#ddd; }
.signature-image img { width:100%; height:100%; object-fit:cover; transition: transform .8s ease; }
.signature-image:hover img { transform:scale(1.025); }
.signature-main { height: 690px; }
.signature-small { height: 440px; transform: translateY(78px); }
.signature-copy { padding: 0 18px; }
.signature-copy h2 { font-size: clamp(48px,5vw,72px); }
.signature-copy > p:not(.eyebrow) { font-size:17px; line-height:1.8; }
.signature-list { margin: 38px 0; border-top: 1px solid rgba(23,21,17,.2); }
.signature-list div { display:grid; grid-template-columns: 48px 1fr; gap:14px; border-bottom:1px solid rgba(23,21,17,.2); padding:17px 0; align-items:start; }
.signature-list span { font-size:10px; letter-spacing:.15em; color:var(--rose-deep); }
.signature-list p { margin:0; color:var(--ink); font-size:14px; }

/* services */
.services-section { background: var(--ivory); }
.section-heading.centered { text-align:center; max-width:760px; margin:0 auto 64px; }
.section-heading.centered h2 { margin-bottom:24px; }
.section-heading.centered > p:last-child { font-size:17px; max-width:600px; margin:0 auto; }
.service-grid { display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.service-card { padding:42px 36px 46px; border-right:1px solid var(--line); min-height:560px; display:flex; flex-direction:column; }
.service-card:last-child { border-right:0; }
.service-number { font-size:10px; letter-spacing:.16em; color:var(--rose-deep); }
.service-card h3 { margin:68px 0 24px; font-size:38px; }
.service-card > p { line-height:1.8; }
.service-card ul { list-style:none; padding:20px 0 0; margin:0 0 34px; border-top:1px solid var(--line); }
.service-card li { padding:8px 0; color:var(--muted); font-size:14px; }
.service-card li::before { content:"—"; margin-right:10px; color:var(--rose-deep); }
.service-card .text-link { margin-top:auto; align-self:flex-start; }
.service-note { max-width:780px; margin:34px auto 0; text-align:center; }
.service-note p { font-size:13px; }
.service-note strong { color:var(--ink); }

/* film */
.film-section { background:#171511; color:white; }
.film-grid { min-height:780px; display:grid; grid-template-columns: 42% 58%; }
.film-copy { display:flex; align-items:center; }
.film-copy-inner { width:min(500px, calc(100% - 80px)); margin-left:max(40px, calc((100vw - 1180px)/2)); }
.film-copy .eyebrow { color:var(--butter); }
.film-copy h2 { color:white; }
.film-copy p:not(.eyebrow) { color:rgba(255,255,255,.66); max-width:400px; }
.film-switcher { display:flex; gap:10px; margin-top:40px; }
.film-tab { border:1px solid rgba(255,255,255,.25); color:white; background:transparent; border-radius:999px; padding:10px 18px; font-size:10px; text-transform:uppercase; letter-spacing:.14em; cursor:pointer; }
.film-tab.is-active { background:white; color:var(--ink); border-color:white; }
.film-stage { position:relative; overflow:hidden; background:#221f1d; min-height:780px; display:grid; place-items:center; }
.film-stage::before { content:""; position:absolute; inset:0; background:radial-gradient(circle at center, rgba(255,255,255,.06), transparent 60%); }
.film-video { position:absolute; height:86%; max-width:64%; width:auto; opacity:0; transform:scale(.98); transition: opacity .9s ease, transform .9s ease; box-shadow:0 30px 90px rgba(0,0,0,.4); object-fit:cover; }
.film-video.is-active { opacity:1; transform:scale(1); }
.soundless-indicator { position:absolute; right:28px; bottom:26px; color:rgba(255,255,255,.62); background:rgba(0,0,0,.25); border:1px solid rgba(255,255,255,.18); border-radius:999px; padding:9px 13px; font-size:9px; text-transform:uppercase; letter-spacing:.14em; }
.soundless-indicator span { display:inline-block; width:6px; height:6px; border-radius:50%; background:var(--butter); margin-right:7px; }

/* portfolio */
.portfolio-section { background:var(--paper); }
.portfolio-head { display:flex; justify-content:space-between; gap:40px; align-items:flex-end; margin-bottom:48px; }
.portfolio-head h2 { margin:0; }
.gallery-filters { display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.filter-button { border:1px solid var(--line); background:transparent; border-radius:999px; padding:9px 15px; font-size:10px; text-transform:uppercase; letter-spacing:.12em; cursor:pointer; }
.filter-button.is-active { background:var(--ink); border-color:var(--ink); color:white; }
.gallery { display:grid; grid-template-columns:repeat(4,1fr); grid-auto-rows: 270px; gap:14px; }
.gallery-item { position:relative; border:0; padding:0; overflow:hidden; background:#ddd; cursor:zoom-in; text-align:left; }
.gallery-item.gallery-tall { grid-row: span 2; }
.gallery-item[hidden] { display:none; }
.gallery-item img { width:100%; height:100%; object-fit:cover; transition: transform .6s ease, filter .6s ease; }
.gallery-item span { position:absolute; left:18px; bottom:16px; padding:7px 11px; background:rgba(255,253,249,.88); backdrop-filter:blur(6px); border-radius:999px; font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.12em; opacity:0; transform:translateY(8px); transition:.3s; }
.gallery-item:hover img { transform:scale(1.035); filter:saturate(1.03); }
.gallery-item:hover span { opacity:1; transform:none; }
.instagram-cta { margin-top:38px; padding-top:28px; border-top:1px solid var(--line); display:flex; justify-content:space-between; gap:24px; align-items:center; }
.instagram-cta p { margin:0; }

/* bridal */
.bridal-section { position:relative; background:#ebe1d8; overflow:hidden; }
.bridal-backdrop { position:absolute; inset:0; opacity:.13; background-image:radial-gradient(circle at 20% 30%, #fff 0 1px, transparent 1.5px),radial-gradient(circle at 75% 70%, #fff 0 1px, transparent 1.5px); background-size:38px 38px,52px 52px; }
.bridal-layout { position:relative; display:grid; grid-template-columns:1fr 1fr; gap:100px; }
.bridal-copy { position:sticky; top:150px; align-self:start; }
.bridal-copy h2 { max-width:590px; }
.bridal-copy > p:not(.eyebrow) { max-width:520px; font-size:17px; line-height:1.8; margin-bottom:34px; }
.bridal-steps { border-top:1px solid rgba(23,21,17,.22); }
.bridal-steps article { display:grid; grid-template-columns:70px 1fr; gap:18px; padding:36px 0; border-bottom:1px solid rgba(23,21,17,.22); }
.bridal-steps article > span { font-size:10px; letter-spacing:.14em; color:var(--rose-deep); }
.bridal-steps h3 { font-size:30px; margin-bottom:10px; }
.bridal-steps p { margin:0; }

/* experience */
.experience-section { background:var(--ivory); }
.experience-grid { display:grid; grid-template-columns:.9fr 1.1fr; gap:100px; }
.experience-title { border-right:1px solid var(--line); padding-right:70px; }
.experience-title h2 { font-size:clamp(48px,5.3vw,74px); }
.experience-points article { display:grid; grid-template-columns:32px 180px 1fr; gap:22px; align-items:start; padding:30px 0; border-bottom:1px solid var(--line); }
.experience-points article:first-child { padding-top:0; }
.experience-points span { color:var(--rose-deep); }
.experience-points h3 { font-family:var(--sans); font-size:12px; text-transform:uppercase; letter-spacing:.12em; font-weight:700; margin:4px 0; }
.experience-points p { margin:0; }

/* reviews */
.reviews-section { background:var(--sage); }
.reviews-shell { display:grid; grid-template-columns:1.1fr .9fr; gap:100px; align-items:center; }
.reviews-heading h2 { max-width:620px; }
.reviews-heading > p:last-child { max-width:650px; font-size:17px; line-height:1.8; }
.review-placeholder { min-height:360px; border:1px solid rgba(23,21,17,.2); display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:40px; background:rgba(255,255,255,.24); }
.review-placeholder img { width:92px; margin-bottom:25px; opacity:.65; }
.review-placeholder p { color:var(--ink); font-family:var(--serif); font-size:30px; }

/* faq */
.faq-section { background:var(--paper); }
.faq-grid { display:grid; grid-template-columns:.7fr 1.3fr; gap:100px; }
.faq-list { border-top:1px solid var(--line); }
details { border-bottom:1px solid var(--line); }
summary { position:relative; list-style:none; cursor:pointer; padding:28px 48px 28px 0; font-family:var(--serif); font-size:27px; }
summary::-webkit-details-marker { display:none; }
summary::after { content:"+"; position:absolute; right:5px; top:25px; font-family:var(--sans); font-weight:300; }
details[open] summary::after { content:"−"; }
details p { max-width:720px; margin:0; padding:0 60px 28px 0; }

/* contact */
.contact-section { padding:0; display:grid; grid-template-columns:45% 55%; min-height:900px; background:var(--blush); }
.contact-art { position:relative; min-height:900px; overflow:hidden; }
.contact-art img { width:100%; height:100%; object-fit:cover; object-position:center top; position:absolute; inset:0; }
.contact-panel { padding:100px clamp(38px,6vw,100px); align-self:center; }
.contact-intro { max-width:660px; margin-bottom:46px; }
.contact-intro h2 { margin-bottom:22px; }
.contact-intro > p:last-child { font-size:17px; }
.booking-form { display:grid; gap:22px; max-width:760px; }
.form-row.two-col { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.booking-form label, .booking-form legend { display:grid; gap:8px; font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.11em; color:var(--ink); }
.booking-form label > span, .booking-form legend > span { color:var(--rose-deep); }
.booking-form input, .booking-form select, .booking-form textarea { width:100%; border:0; border-bottom:1px solid rgba(23,21,17,.35); background:rgba(255,255,255,.38); border-radius:0; padding:13px 12px; color:var(--ink); font-size:15px; text-transform:none; letter-spacing:0; outline:none; }
.booking-form textarea { resize:vertical; }
.booking-form input:focus, .booking-form select:focus, .booking-form textarea:focus { background:rgba(255,255,255,.7); border-color:var(--ink); }
.booking-form fieldset { border:0; padding:0; margin:0; }
.booking-form legend { margin-bottom:10px; }
.service-options { display:flex; flex-wrap:wrap; gap:9px; }
.service-options label { display:block; cursor:pointer; }
.service-options input { position:absolute; opacity:0; pointer-events:none; }
.service-options span { display:block; padding:10px 15px; border:1px solid rgba(23,21,17,.25); border-radius:999px; color:var(--ink)!important; transition:.2s; }
.service-options input:checked + span { background:var(--ink); color:white!important; border-color:var(--ink); }
.consent-label { grid-template-columns:20px 1fr!important; gap:10px!important; align-items:start; text-transform:none!important; letter-spacing:0!important; font-weight:500!important; font-size:12px!important; color:var(--muted)!important; }
.consent-label input { width:16px; margin-top:2px; accent-color:var(--ink); }
.consent-label span { color:inherit!important; }
.form-submit { justify-self:start; margin-top:8px; }
.form-status { min-height:1.5em; margin:0; font-size:13px; color:var(--ink); }
.form-status.is-success { color:#386040; }
.form-status.is-error { color:#8a3e3e; }
.form-fineprint { margin:0; font-size:12px; }
.form-fineprint a { text-decoration:underline; }
.hp-field { position:absolute!important; left:-10000px!important; width:1px!important; height:1px!important; opacity:0!important; }

/* footer */
.site-footer { background:#171511; color:white; padding:80px 0 28px; }
.footer-grid { display:grid; grid-template-columns:1.1fr 1fr .7fr; gap:70px; align-items:start; padding-bottom:64px; }
.footer-brand img { width:180px; filter:invert(1) grayscale(1) brightness(3); margin-bottom:18px; }
.footer-brand p { color:rgba(255,255,255,.58); font-size:13px; }
.footer-links { display:grid; grid-template-columns:1fr 1fr; gap:30px; }
.footer-label { color:rgba(255,255,255,.4)!important; font-size:9px!important; text-transform:uppercase; letter-spacing:.16em; }
.footer-links a { display:block; color:rgba(255,255,255,.82); font-size:14px; padding:4px 0; }
.footer-book p { color:white; font-family:var(--serif); font-size:32px; line-height:1.1; }
.footer-bottom { border-top:1px solid rgba(255,255,255,.13); padding-top:24px; display:flex; justify-content:space-between; gap:20px; color:rgba(255,255,255,.45); font-size:10px; text-transform:uppercase; letter-spacing:.1em; }

/* lightbox */
.lightbox { width:100vw; max-width:none; height:100vh; max-height:none; margin:0; border:0; padding:0; background:rgba(15,13,12,.96); color:white; }
.lightbox::backdrop { background:rgba(15,13,12,.96); }
.lightbox[open] { display:grid; grid-template-columns:80px 1fr 80px; place-items:center; }
.lightbox figure { margin:0; max-width:min(86vw,1000px); max-height:88vh; display:grid; place-items:center; }
.lightbox img { max-width:100%; max-height:82vh; object-fit:contain; box-shadow:0 20px 80px rgba(0,0,0,.35); }
.lightbox figcaption { margin-top:12px; font-size:10px; text-transform:uppercase; letter-spacing:.12em; color:rgba(255,255,255,.65); }
.lightbox-close { position:fixed; top:18px; right:24px; width:46px; height:46px; border:1px solid rgba(255,255,255,.3); border-radius:50%; background:transparent; color:white; font-size:28px; cursor:pointer; }
.lightbox-arrow { width:48px; height:48px; border:1px solid rgba(255,255,255,.28); border-radius:50%; background:transparent; color:white; cursor:pointer; }

/* reveal */
.reveal { opacity:0; transform:translateY(20px); transition:opacity .75s ease, transform .75s ease; }
.reveal.in-view { opacity:1; transform:none; }

@media (max-width: 1020px) {
  .section { padding:90px 0; }
  .header-inner { grid-template-columns:1fr auto auto; gap:16px; }
  .desktop-nav { display:none; }
  .header-book { margin-left:auto; }
  .menu-toggle { display:block; color:white; }
  .site-header.scrolled .menu-toggle { color:var(--ink); }
  .brand { width:116px; }
  .hero-content { padding-top:100px; }
  .hero h1 { font-size:clamp(62px,11vw,100px); }
  .intro-grid { grid-template-columns:100px 1fr; }
  .intro-copy { grid-column:2; padding-top:0; max-width:620px; }
  .signature-grid { grid-template-columns:1fr 1fr; }
  .signature-main { height:610px; }
  .signature-small { display:none; }
  .service-grid { grid-template-columns:1fr; border:0; gap:14px; }
  .service-card { min-height:0; border:1px solid var(--line)!important; }
  .service-card h3 { margin-top:36px; }
  .film-grid { grid-template-columns:1fr 1fr; }
  .film-copy-inner { margin-left:40px; }
  .gallery { grid-template-columns:repeat(3,1fr); }
  .bridal-layout, .experience-grid, .reviews-shell, .faq-grid { gap:60px; }

  .booking-ribbon-inner { grid-template-columns: 1fr; align-items: flex-start; gap: 14px; }
  .booking-ribbon-note { text-align: left; }
  .booking-ribbon-button { justify-self: start; }
  .artist-grid { grid-template-columns: 1fr; gap: 34px; }
  .contact-section { grid-template-columns:38% 62%; }
  .contact-panel { padding:80px 40px; }
  .footer-grid { grid-template-columns:1fr 1fr; }
  .footer-book { grid-column:1/-1; display:flex; justify-content:space-between; align-items:center; border-top:1px solid rgba(255,255,255,.13); padding-top:30px; }
  .footer-book p { margin:0; }
}

@media (max-width: 760px) {
  .content-shell { width:min(100% - 32px, 1180px); }
  .section { padding:72px 0; }
  .header-inner { width:calc(100% - 28px); height:76px; grid-template-columns:1fr auto; }
  .header-book { display:none; }
  .brand { width:104px; }
  .brand img { height:60px; }
  .mobile-menu { inset:76px 0 0; }
  h2 { font-size:clamp(44px,13vw,64px); }
  .hero { min-height: 92svh; }
  .hero-content { min-height:92svh; padding:130px 0 110px; justify-content:flex-end; }
  .hero h1 { font-size:clamp(56px,18vw,82px); line-height:.88; }
  .hero-copy { font-size:16px; max-width:390px; }
  .hero-scrim { background:linear-gradient(0deg, rgba(12,9,8,.72) 0%, rgba(12,9,8,.25) 58%, rgba(12,9,8,.18) 100%); }
  .hero-controls { right:16px; bottom:18px; }
  .scroll-cue { display:none; }
  .hero-actions { gap:18px; }
  .hero-arrow { display:none; }
  .intro-grid { display:block; }
  .intro-mark { margin-bottom:34px; }
  .intro-mark img { width:82px; }
  .intro-heading { margin-bottom:34px; }
  .intro-copy { padding:0; }
  .signature-grid { display:block; }
  .signature-main { height:520px; margin-bottom:48px; }
  .signature-copy { padding:0; }
  .signature-small { display:block; height:360px; width:72%; margin:54px 0 0 auto; transform:none; }
  .service-card { padding:34px 26px 36px; }
  .service-card h3 { font-size:34px; }
  .film-grid { display:block; }
  .film-copy { min-height:420px; }
  .film-copy-inner { width:calc(100% - 32px); margin:0 auto; }
  .film-stage { min-height:650px; }
  .film-video { height:90%; max-width:88%; }
  .portfolio-head { display:block; }
  .gallery-filters { justify-content:flex-start; margin-top:24px; }
  .gallery { grid-template-columns:repeat(2,1fr); grid-auto-rows:220px; gap:8px; }
  .gallery-item span { opacity:1; transform:none; font-size:8px; left:9px; bottom:9px; }
  .instagram-cta { align-items:flex-start; flex-direction:column; }
  .bridal-layout, .experience-grid, .reviews-shell, .faq-grid { display:block; }

  .booking-ribbon-inner { min-height: auto; padding: 18px 0; }
  .booking-ribbon-copy { font-size: 14px; }
  .booking-ribbon-note { font-size: 10px; line-height: 1.6; }
  .booking-ribbon-button { min-height: 42px; }
  .artist-copy > p:not(.eyebrow) { font-size: 16px; }
  .bridal-copy { position:static; margin-bottom:54px; }
  .bridal-steps article { grid-template-columns:48px 1fr; }
  .experience-title { border-right:0; padding:0; margin-bottom:48px; }
  .experience-points article { grid-template-columns:26px 1fr; }
  .experience-points article p { grid-column:2; }
  .reviews-heading { margin-bottom:44px; }
  .review-placeholder { min-height:300px; }
  .faq-grid > div:first-child { margin-bottom:40px; }
  summary { font-size:24px; }
  .contact-section { display:block; }
  .contact-art { min-height:520px; }
  .contact-panel { padding:72px 20px; }
  .form-row.two-col { grid-template-columns:1fr; }
  .site-footer { padding-top:60px; }
  .footer-grid { grid-template-columns:1fr; gap:40px; }
  .footer-book { grid-column:auto; display:block; }
  .footer-book p { margin-bottom:20px; }
  .footer-bottom { flex-direction:column; }
  .lightbox[open] { grid-template-columns:1fr; }
  .lightbox-arrow { position:fixed; top:50%; z-index:3; }
  .lightbox-prev { left:12px; }
  .lightbox-next { right:12px; }
}

@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 { opacity:1; transform:none; }
}


/* beauty edit */
.beauty-edit { background: linear-gradient(180deg, var(--ivory) 0%, var(--paper) 100%); }
.beauty-edit-grid { display:grid; grid-template-columns: .9fr 1fr 1fr; gap: 22px; align-items: stretch; }
.beauty-edit-copy { background: rgba(255,255,255,.74); border:1px solid var(--line); padding: clamp(28px, 3vw, 44px); display:flex; flex-direction:column; justify-content:center; }
.beauty-edit-copy h2 { margin-bottom: 20px; }
.beauty-edit-copy p { line-height: 1.8; }
.beauty-edit-copy .button { margin-top: 20px; align-self:flex-start; }
.beauty-edit-card { margin:0; position:relative; overflow:hidden; min-height: 520px; background:#eee; }
.beauty-edit-card img { width:100%; height:100%; object-fit:cover; transition: transform .7s ease; }
.beauty-edit-card:hover img { transform: scale(1.03); }
.beauty-edit-card figcaption { position:absolute; left:18px; bottom:18px; background:rgba(255,253,249,.9); backdrop-filter: blur(6px); padding:10px 14px; border-radius:999px; font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.14em; }
.beauty-edit-card-large { min-height: 620px; }

@media (max-width: 980px) {
  .beauty-edit-grid { grid-template-columns: 1fr; }
  .beauty-edit-card, .beauty-edit-card-large { min-height: 400px; }
}

/* =========================================================
   DAISY ARTISTRY — WEDDING PASTEL UNITY PASS
   Keeps the full site in one soft ivory / blush / champagne
   visual family while preserving contrast and hierarchy.
   ========================================================= */
:root {
  --ivory: #fbf6f0;
  --paper: #fffaf6;
  --blush: #f4e3e6;
  --blush-soft: #f8edef;
  --champagne: #eee3d8;
  --rose: #d8aaa9;
  --rose-deep: #a86f70;
  --ink: #3c312e;
  --muted: #776a65;
  --line: rgba(60, 49, 46, .14);
  --shadow: 0 24px 70px rgba(103, 75, 68, .12);
}

body {
  background: var(--ivory);
}

/* A repeating wedding-light rhythm: ivory → blush → ivory → champagne. */
.intro-section { background: var(--paper); }
.signature-section { background: var(--blush); }
.services-section { background: var(--ivory); }
.portfolio-section { background: var(--paper); }
.bridal-section { background: var(--champagne); }
.experience-section { background: var(--blush-soft); }
.beauty-edit { background: linear-gradient(180deg, var(--ivory) 0%, #f9e9eb 100%); }
.reviews-section { background: var(--champagne); }
.faq-section { background: var(--paper); }
.contact-section { background: var(--blush); }

/* Replace the large black motion block with a soft editorial blush/champagne treatment. */
.film-section {
  background: #f1e3df;
  color: var(--ink);
  border-top: 1px solid rgba(60,49,46,.08);
  border-bottom: 1px solid rgba(60,49,46,.08);
}
.film-copy .eyebrow { color: var(--rose-deep); }
.film-copy h2 { color: var(--ink); }
.film-copy p:not(.eyebrow) { color: var(--muted); }
.film-stage {
  background: linear-gradient(145deg, #ead7d5 0%, #f8eee9 54%, #efe3d7 100%);
}
.film-stage::before {
  background: radial-gradient(circle at 50% 40%, rgba(255,255,255,.58), rgba(255,255,255,0) 63%);
}
.film-video {
  box-shadow: 0 32px 90px rgba(91,63,58,.18);
  border: 1px solid rgba(255,255,255,.72);
}
.film-tab {
  border-color: rgba(60,49,46,.22);
  color: var(--ink);
  background: rgba(255,255,255,.32);
}
.film-tab:hover { background: rgba(255,255,255,.62); }
.film-tab.is-active {
  background: var(--paper);
  color: var(--ink);
  border-color: rgba(60,49,46,.16);
  box-shadow: 0 8px 28px rgba(91,63,58,.08);
}
.soundless-indicator {
  color: var(--ink);
  background: rgba(255,250,246,.82);
  border-color: rgba(60,49,46,.13);
  box-shadow: 0 10px 32px rgba(91,63,58,.08);
}
.soundless-indicator span { background: var(--rose-deep); }

/* Keep controls in the same soft palette instead of hard black. */
.button-dark,
.button-small,
.service-options input:checked + span,
.filter-button.is-active {
  background: #9b6868;
  border-color: #9b6868;
  color: #fff;
}
.button-dark:hover,
.button-small:hover,
.button-outline:hover {
  background: #825858;
  border-color: #825858;
  color: #fff;
}
.button-outline { border-color: rgba(60,49,46,.55); }
.site-header.scrolled .header-book {
  background: #9b6868;
  color: white;
}

/* Soft card surfaces so adjacent sections still feel intentionally related. */
.service-card,
.beauty-edit-copy,
.review-placeholder {
  background: rgba(255,250,246,.54);
}
.service-card {
  border-color: rgba(60,49,46,.12);
}
.beauty-edit-copy {
  border-color: rgba(60,49,46,.11);
  box-shadow: 0 20px 60px rgba(91,63,58,.06);
}
.gallery-item,
.signature-image,
.beauty-edit-card {
  background: #eadfda;
}

/* Contact fields stay light instead of introducing gray/black blocks. */
.booking-form input,
.booking-form select,
.booking-form textarea {
  background: rgba(255,250,246,.46);
  border-bottom-color: rgba(60,49,46,.28);
}
.booking-form input:focus,
.booking-form select:focus,
.booking-form textarea:focus {
  background: rgba(255,250,246,.8);
  border-color: var(--rose-deep);
}

/* Footer now completes the pastel pattern rather than abruptly turning black. */
.site-footer {
  background: #e8d4d2;
  color: var(--ink);
  border-top: 1px solid rgba(60,49,46,.1);
}
.footer-brand img {
  filter: none;
}
.footer-brand p,
.footer-links a,
.footer-label,
.footer-bottom {
  color: var(--muted) !important;
}
.footer-book p { color: var(--ink); }
.footer-bottom {
  border-top-color: rgba(60,49,46,.14);
}
.footer-book {
  border-top-color: rgba(60,49,46,.14) !important;
}

/* Slightly warmer scrolled header for continuity. */
.site-header.scrolled {
  background: rgba(255,250,246,.94);
  box-shadow: 0 1px 0 rgba(60,49,46,.08);
}

/* Mobile keeps the same light family. */
.mobile-menu { background: var(--paper); }

/* Functional lightbox remains dark so photography is viewed accurately. */
.lightbox,
.lightbox::backdrop { background: rgba(36,28,26,.96); }

/* =========================================================
   DAISY ARTISTRY — STRICT PASTEL UNITY FINAL
   Visual system intentionally limited to two page-surface
   families: warm bridal ivory and petal blush.
   ========================================================= */
:root {
  --ivory: #fffaf6;
  --paper: #fffaf6;
  --blush: #f7e8ec;
  --blush-soft: #f7e8ec;
  --champagne: #fffaf6;
  --sage: #f7e8ec;
  --butter: #fffaf6;
  --rose: #d9a7b2;
  --rose-deep: #a86f7c;
  --ink: #302b2d;
  --muted: #70666a;
  --line: rgba(48,43,45,.13);
  --shadow: 0 22px 65px rgba(110,83,91,.11);
}

body,
.mobile-menu { background: #fffaf6; }

/* Deliberate two-colour rhythm across the entire page. */
.intro-section,
.services-section,
.portfolio-section,
.experience-section,
.reviews-section,
.contact-section {
  background: #fffaf6;
}

.signature-section,
.film-section,
.bridal-section,
.beauty-edit,
.faq-section,
.site-footer {
  background: #f7e8ec;
}

/* Motion portfolio stays fully within the same blush/ivory system. */
.film-section {
  color: var(--ink);
  border-color: rgba(48,43,45,.08);
}
.film-copy .eyebrow { color: var(--rose-deep); }
.film-copy h2 { color: var(--ink); }
.film-copy p:not(.eyebrow) { color: var(--muted); }
.film-stage {
  background: #fffaf6;
  border-left: 1px solid rgba(48,43,45,.08);
}
.film-stage::before {
  background: radial-gradient(circle at 50% 40%, rgba(247,232,236,.78), rgba(255,250,246,0) 66%);
}
.film-video {
  border: 1px solid rgba(216,167,178,.24);
  box-shadow: 0 28px 70px rgba(110,83,91,.16);
}
.film-tab {
  color: var(--ink);
  background: rgba(255,250,246,.58);
  border-color: rgba(168,111,124,.22);
}
.film-tab:hover,
.film-tab.is-active {
  background: #fffaf6;
  color: var(--rose-deep);
  border-color: rgba(168,111,124,.34);
}
.soundless-indicator {
  color: var(--ink);
  background: rgba(255,250,246,.92);
  border-color: rgba(168,111,124,.16);
}
.soundless-indicator span { background: var(--rose-deep); }

/* Bridal section: blush only — remove the beige/champagne cast. */
.bridal-section { background: #f7e8ec; }
.bridal-backdrop {
  opacity: .18;
  background-image:
    radial-gradient(circle at 20% 30%, rgba(255,255,255,.95) 0 1px, transparent 1.5px),
    radial-gradient(circle at 75% 70%, rgba(255,255,255,.95) 0 1px, transparent 1.5px);
}

/* Beauty edit: no tan gradient, just blush with ivory cards. */
.beauty-edit { background: #f7e8ec; }
.beauty-edit-copy,
.review-placeholder,
.service-card {
  background: rgba(255,250,246,.76);
}
.beauty-edit-copy,
.review-placeholder,
.service-card {
  border-color: rgba(168,111,124,.14);
}

/* Gallery and media placeholders use blush-neutral surfaces only. */
.gallery-item,
.signature-image,
.beauty-edit-card {
  background: #f2dfe4;
}

/* Controls are all one dusty-rose accent, never black/brown/green. */
.button-dark,
.button-small,
.service-options input:checked + span,
.filter-button.is-active,
.site-header.scrolled .header-book {
  background: #a86f7c;
  border-color: #a86f7c;
  color: #fff;
}
.button-dark:hover,
.button-small:hover,
.button-outline:hover {
  background: #925f6b;
  border-color: #925f6b;
  color: #fff;
}
.button-light { background: #fffaf6; color: var(--ink); }
.button-light:hover { background: #f7e8ec; }
.button-outline { border-color: rgba(168,111,124,.5); }

/* Booking panel stays ivory; fields use a whisper of blush. */
.contact-panel { background: #fffaf6; }
.booking-form input,
.booking-form select,
.booking-form textarea {
  background: #fdf3f5;
  border-bottom-color: rgba(168,111,124,.28);
}
.booking-form input:focus,
.booking-form select:focus,
.booking-form textarea:focus {
  background: #fff;
  border-color: var(--rose-deep);
}
.service-options span { border-color: rgba(168,111,124,.26); }
.consent-label input { accent-color: var(--rose-deep); }
.form-status.is-success { color: var(--rose-deep); }
.form-status.is-error { color: #8f5260; }

/* Footer is petal blush — no dark/brown block. */
.site-footer {
  background: #f7e8ec;
  color: var(--ink);
  border-top-color: rgba(168,111,124,.14);
}
.footer-brand img { filter: none; }
.footer-brand p,
.footer-links a,
.footer-label,
.footer-bottom { color: var(--muted) !important; }
.footer-book p { color: var(--ink); }
.footer-bottom,
.footer-book { border-top-color: rgba(168,111,124,.15) !important; }

/* Header surface matches the ivory pages exactly. */
.site-header.scrolled {
  background: rgba(255,250,246,.96);
  box-shadow: 0 1px 0 rgba(168,111,124,.12);
}

/* Keep fallbacks neutral-pastel if media is still loading. */
.hero { background: #f7e8ec; }

/* Lightbox is functional media chrome only; use neutral charcoal rather than brown. */
.lightbox,
.lightbox::backdrop { background: rgba(35,31,33,.97); }


/* =========================================================
   DAISY ARTISTRY — ATLAS COUTURE PASS
   Signature editorial touches, micro-motion, and conversion polish
   ========================================================= */

.hero::after {
  content: "";
  position: absolute;
  inset: auto auto 11% 8%;
  width: 210px;
  height: 210px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,.17) 0%, rgba(255,255,255,0) 70%);
  pointer-events: none;
  z-index: 1;
}
.hero-slide.is-active img, .hero-slide.is-active video {
  animation: coutureDrift 15s ease-in-out both;
}
@keyframes coutureDrift {
  0% { transform: scale(1.03) translate3d(0, 0, 0); }
  50% { transform: scale(1.06) translate3d(0, -8px, 0); }
  100% { transform: scale(1.03) translate3d(0, 0, 0); }
}

.editorial-story { background: linear-gradient(180deg, #fffaf6 0%, #f7e8ec 100%); position: relative; overflow: hidden; }
.editorial-story::before {
  content: "✿";
  position: absolute;
  right: max(24px, calc((100vw - 1180px)/2));
  top: 54px;
  font-size: 40px;
  color: rgba(168,111,124,.18);
}
.editorial-grid { display:grid; grid-template-columns: .85fr 1fr .56fr; gap: 24px; align-items:center; }
.editorial-copy { padding-right: 12px; }
.editorial-copy h2 { max-width: 580px; }
.editorial-copy > p:not(.eyebrow) { font-size: 17px; line-height: 1.85; max-width: 500px; }
.editorial-meta { display:flex; flex-wrap:wrap; gap: 10px; margin: 28px 0 34px; }
.editorial-meta span { padding: 10px 14px; border-radius: 999px; background: rgba(255,250,246,.85); border: 1px solid rgba(168,111,124,.16); font-size: 10px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--rose-deep); }
.editorial-frame { margin: 0; overflow: hidden; background: #f2dfe4; box-shadow: var(--shadow); }
.editorial-frame img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.1s ease; }
.editorial-frame:hover img { transform: scale(1.04); }
.editorial-main { min-height: 700px; }
.editorial-accent { min-height: 410px; transform: translateY(80px); }

.recent-strip { background: #fffaf6; }
.recent-strip-head { display:flex; justify-content:space-between; gap:28px; align-items:flex-end; margin-bottom: 30px; }
.recent-strip-head h2 { margin:0; }
.recent-strip-grid { display:grid; grid-template-columns: repeat(4,1fr); gap: 14px; }
.recent-strip-card { position:relative; overflow:hidden; min-height: 260px; background:#f2dfe4; }
.recent-strip-card img { width:100%; height:100%; object-fit:cover; transition: transform .85s ease, filter .5s ease; }
.recent-strip-card:hover img { transform: scale(1.05); filter: saturate(1.03); }
.recent-strip-card span { position:absolute; left:14px; bottom:14px; padding: 8px 12px; border-radius:999px; background: rgba(255,250,246,.9); font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.14em; }

.reviews-shell { gap: 70px; }
.review-placeholder { box-shadow: 0 18px 50px rgba(110,83,91,.08); }
.review-placeholder::before { content: "Kind words belong here"; display:block; font-size:10px; letter-spacing:.14em; text-transform:uppercase; color: var(--rose-deep); margin-bottom: 12px; }

.booking-reassurance { display:flex; flex-wrap:wrap; gap:10px; margin: 0 0 26px; }
.booking-reassurance span { display:inline-flex; align-items:center; min-height:38px; padding: 0 14px; border-radius:999px; background:#fdf3f5; border:1px solid rgba(168,111,124,.18); color: var(--rose-deep); font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; }
.contact-panel { position: relative; }
.contact-panel::before { content: "✿"; position:absolute; right: clamp(18px, 4vw, 42px); top: 42px; font-size: 32px; color: rgba(168,111,124,.18); }
.form-submit { box-shadow: 0 12px 26px rgba(168,111,124,.15); }

.mobile-book-pill {
  position: fixed;
  left: 50%;
  bottom: max(16px, env(safe-area-inset-bottom));
  transform: translate(-50%, 110px);
  min-width: 180px;
  min-height: 52px;
  padding: 0 24px;
  border-radius: 999px;
  background: #a86f7c;
  color: #fff;
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 110;
  box-shadow: 0 18px 38px rgba(110,83,91,.28);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  transition: transform .35s ease, opacity .35s ease;
  opacity: 0;
}
.mobile-book-pill.is-visible { transform: translate(-50%, 0); opacity: 1; }

[data-parallax] { will-change: transform; }

@media (max-width: 1020px) {
  .editorial-grid { grid-template-columns: 1fr 1fr; }
  .editorial-copy { grid-column: 1 / -1; }
  .editorial-accent { transform: none; min-height: 320px; }
  .recent-strip-grid { grid-template-columns: repeat(2,1fr); }
}
@media (max-width: 760px) {
  .editorial-story::before, .contact-panel::before { display:none; }
  .editorial-grid { display:block; }
  .editorial-main { min-height: 520px; margin-bottom: 18px; }
  .editorial-accent { min-height: 280px; width: 70%; margin: 18px 0 0 auto; }
  .recent-strip-head { display:block; }
  .recent-strip-head .text-link { margin-top: 18px; }
  .recent-strip-grid { grid-template-columns: 1fr 1fr; gap: 8px; }
  .recent-strip-card { min-height: 200px; }
  .booking-reassurance { gap: 8px; }
  .mobile-book-pill { display:inline-flex; }
}
@media (prefers-reduced-motion: reduce) {
  .hero-slide.is-active img, .hero-slide.is-active video { animation: none; }
}


/* =========================================================
   FINAL BUTTON-UP PASS — HERO BRAND VISIBILITY + PHONE CTA
   ========================================================= */

/* Revert the landing logo closer to the original feel, but give it stronger contrast on bright hero media. */
.site-header:not(.scrolled) .brand {
  position: relative;
  width: 150px;
  padding: 0;
  border-radius: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
  backdrop-filter: none;
}
.site-header:not(.scrolled) .brand::before {
  content: "";
  position: absolute;
  inset: 8px -10px 10px -10px;
  border-radius: 18px;
  background: radial-gradient(circle at 50% 50%, rgba(16,12,14,.52) 0%, rgba(16,12,14,.30) 44%, rgba(16,12,14,0) 78%);
  filter: blur(10px);
  z-index: -1;
  pointer-events: none;
}
.site-header:not(.scrolled) .brand img {
  filter: brightness(.34) contrast(1.62) saturate(.82) drop-shadow(0 1px 0 rgba(255,255,255,.32)) drop-shadow(0 10px 24px rgba(10,8,10,.58));
}
.site-header.scrolled .brand { transition: filter .3s ease, background .3s ease, box-shadow .3s ease, padding .3s ease; }

.header-inner { grid-template-columns: 220px 1fr 330px; }
.header-actions { justify-self:end; display:flex; align-items:center; gap:10px; }
.header-actions .button { min-height: 42px; padding: 0 17px; }
.header-call { background: rgba(255,250,246,.94); color: var(--rose-deep); border-color: rgba(255,255,255,.7); }
.site-header.scrolled .header-call { background: #f7e8ec; border-color: rgba(168,111,124,.18); color: var(--rose-deep); }
.header-call:hover { background:#fff; color:#925f6b; }

.hero-call-button {
  background: rgba(247,232,236,.92);
  color: var(--ink);
  border-color: rgba(255,255,255,.72);
  box-shadow: 0 10px 28px rgba(35,31,33,.12);
}
.hero-call-button:hover { background:#fffaf6; color:var(--rose-deep); }

.contact-call-link {
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin-top: 10px;
  color:var(--rose-deep);
  font-weight:700;
  font-size:13px;
  letter-spacing:.02em;
}
.contact-call-link span { color:var(--ink); font-weight:600; }
.contact-call-link:hover { text-decoration:underline; text-underline-offset:4px; }

.mobile-action-dock {
  position: fixed;
  left: 50%;
  bottom: max(16px, env(safe-area-inset-bottom));
  transform: translate(-50%, 110px);
  display: none;
  gap: 8px;
  z-index: 110;
  opacity: 0;
  transition: transform .35s ease, opacity .35s ease;
  padding: 7px;
  border-radius: 999px;
  background: rgba(255,250,246,.92);
  border: 1px solid rgba(168,111,124,.14);
  box-shadow: 0 18px 38px rgba(110,83,91,.24);
  backdrop-filter: blur(14px);
}
.mobile-action-dock.is-visible { transform: translate(-50%, 0); opacity: 1; }
.mobile-action-dock a {
  min-width: 116px;
  min-height: 46px;
  padding:0 18px;
  border-radius:999px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:11px;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.mobile-call-pill { background:#f7e8ec; color:var(--rose-deep); }
.mobile-book-pill {
  position:static;
  transform:none;
  min-width:116px;
  min-height:46px;
  padding:0 18px;
  opacity:1;
  display:inline-flex;
  background:#a86f7c;
  color:#fff;
  box-shadow:none;
}
.mobile-book-pill.is-visible { transform:none; opacity:1; }

@media (max-width: 1120px) {
  .header-inner { grid-template-columns: 190px 1fr 286px; }
  .header-actions .button { padding: 0 13px; font-size:10px; }
}
@media (max-width: 1020px) {
  .header-inner { grid-template-columns:1fr auto auto; }
  .header-actions { margin-left:auto; }
  .header-call { display:none; }
}
@media (max-width: 760px) {
  .site-header:not(.scrolled) .brand { width:116px; padding:0; border-radius:0; }
  .header-actions { display:none; }
  .mobile-action-dock { display:flex; }
  .mobile-book-pill { display:inline-flex; }
}


/* =========================================================
   FINAL MOBILE VIEWPORT LOCK
   Prevents sideways canvas drift / rubber-banding on phones.
   ========================================================= */
html, body {
  width: 100%;
  max-width: 100%;
  overflow-x: clip;
  overscroll-behavior-x: none;
}
body {
  position: relative;
  touch-action: pan-y;
  -webkit-text-size-adjust: 100%;
}
main, header, footer, section, nav, .content-shell, .header-inner {
  min-width: 0;
  max-width: 100%;
}
img, video, svg, canvas, iframe {
  max-width: 100%;
}

@supports not (overflow: clip) {
  html, body { overflow-x: hidden; }
}

@media (max-width: 760px) {
  html, body {
    width: 100%;
    max-width: 100vw;
    overflow-x: clip;
    overscroll-behavior-x: none;
  }
  body { touch-action: pan-y; }
  #main, .site-header, .site-footer, .hero, .section, .contact-section, .film-section {
    width: 100%;
    max-width: 100vw;
    overflow-x: clip;
  }
  .content-shell {
    width: min(calc(100% - 32px), 1180px);
    max-width: calc(100% - 32px);
  }
  .lightbox { width: 100%; max-width: 100%; }
  .mobile-action-dock { max-width: calc(100vw - 20px); }
}


/* =========================================================
   IOS / MOBILE CANVAS HARD LOCK — FINAL
   Prevents horizontal document drift and pinch-driven canvas offset.
   ========================================================= */
html {
  width: 100% !important;
  max-width: 100% !important;
  overflow-x: hidden !important;
  overscroll-behavior-x: none;
  -webkit-text-size-adjust: 100%;
}
body {
  width: 100% !important;
  min-width: 100% !important;
  max-width: 100% !important;
  overflow-x: hidden !important;
  overscroll-behavior-x: none;
  position: relative;
  left: 0;
  right: 0;
}
#main,
.site-header,
.site-footer,
.hero,
.hero-slides,
.hero-slide,
.hero-scrim,
.section,
.contact-section,
.film-section {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  overflow-x: hidden !important;
}
.hero-slides,
.hero-slide,
.hero-scrim {
  left: 0 !important;
  right: 0 !important;
}

@media (max-width: 760px) {
  html, body {
    overflow-x: hidden !important;
    max-width: 100% !important;
    touch-action: pan-y;
  }
  #main,
  .site-header,
  .site-footer,
  .hero,
  .hero-slides,
  .hero-slide,
  .hero-scrim,
  .section,
  .contact-section,
  .film-section {
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: hidden !important;
  }
  .hero-slide img,
  .hero-slide video {
    min-width: 100% !important;
    width: 100% !important;
    max-width: none !important;
  }
  .content-shell {
    width: calc(100% - 32px) !important;
    max-width: calc(100% - 32px) !important;
    margin-left: auto !important;
    margin-right: auto !important;
  }
  .header-inner {
    width: calc(100% - 28px) !important;
    max-width: calc(100% - 28px) !important;
  }
}

/* =========================================================
   CUSTOMER CLOSEOUT — ALWAYS-IVORY HERO HEADER
   Keeps the navigation in the wedding pastel system from the
   first frame while still overlaying the hero at full height.
   ========================================================= */
.site-header,
.site-header.scrolled {
  background: rgba(255,250,246,.965) !important;
  color: var(--ink);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  border-bottom: 1px solid rgba(168,111,124,.12);
}
.site-header { box-shadow: none !important; }
.site-header.scrolled { box-shadow: 0 8px 28px rgba(110,83,91,.08) !important; }

.desktop-nav a,
.site-header:not(.scrolled) .desktop-nav a,
.site-header.scrolled .desktop-nav a {
  color: var(--ink) !important;
}
.menu-toggle,
.site-header:not(.scrolled) .menu-toggle,
.site-header.scrolled .menu-toggle {
  color: var(--ink) !important;
}

/* Keep the original transparent logo treatment, now crisp and dark on ivory. */
.site-header:not(.scrolled) .brand,
.site-header.scrolled .brand {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
}
.site-header:not(.scrolled) .brand::before { display: none !important; }
.site-header:not(.scrolled) .brand img,
.site-header.scrolled .brand img {
  filter: brightness(.42) contrast(1.55) saturate(.85) !important;
}

/* Header actions remain soft and consistent from first paint through scroll. */
.header-call,
.site-header:not(.scrolled) .header-call,
.site-header.scrolled .header-call {
  background: #f7e8ec !important;
  border-color: rgba(168,111,124,.18) !important;
  color: var(--rose-deep) !important;
}
.header-book,
.site-header:not(.scrolled) .header-book,
.site-header.scrolled .header-book {
  background: #a86f7c !important;
  border-color: #a86f7c !important;
  color: #fff !important;
}


/* =========================================================
   MOBILE NAV OVERLAY FIX — SAFARI / IOS
   Keep the menu outside the fixed/backdrop-filter header so
   it cannot be clipped by the viewport hard-lock rules.
   ========================================================= */
.mobile-menu {
  position: fixed !important;
  top: 76px !important;
  right: 0 !important;
  bottom: 0 !important;
  left: 0 !important;
  width: 100% !important;
  max-width: 100% !important;
  height: auto !important;
  padding: 34px 24px calc(46px + env(safe-area-inset-bottom)) !important;
  background: rgba(255,250,246,.985) !important;
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
  overflow-x: hidden !important;
  overflow-y: auto !important;
  overscroll-behavior: contain;
  z-index: 105 !important;
}
.mobile-menu[hidden] { display: none !important; }
.mobile-menu.is-open { display: block !important; }
.mobile-menu > a {
  display: block;
  color: var(--ink);
  font-family: var(--serif);
  font-size: clamp(38px, 11vw, 52px);
  line-height: 1.15;
  border-bottom: 1px solid rgba(168,111,124,.16);
  padding: 12px 0;
}
.mobile-menu .mobile-socials {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  margin-top: 28px;
}
.mobile-menu .mobile-socials a {
  font-family: var(--sans);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  border: 0;
  padding: 6px 0;
  color: var(--rose-deep);
}
.menu-toggle { position: relative; z-index: 111; }
.menu-toggle[aria-expanded="true"] span:first-child { transform: translateY(4px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] span:last-child { transform: translateY(-4px) rotate(-45deg); }
body.menu-open { overflow: hidden !important; }
@media (min-width: 1021px) {
  .mobile-menu { display: none !important; }
}

.hero-slide[data-hero-brand-slide="true"] { background: #fcf8f4; }
.hero-slide[data-hero-brand-slide="true"] img { object-fit: contain; object-position: center center; padding: clamp(1.5rem, 3vw, 2.75rem); }
