:root {
  --ink: #171224;
  --paper: #fff9f6;
  --brand: #5a2aa8;
  --berry: #d63b76;
  --accent: #f4a24a;
  --lilac: #c8b6ff;
  --sage: #d9e7dd;
  --fog: #f1ece8;
  --muted: #655e69;
  --white: #fff;
  --spec-grad: linear-gradient(120deg, #5a2aa8 0%, #d63b76 52%, #f4a24a 100%);
  --shadow: 0 24px 80px rgba(23, 18, 36, 0.14);
  --soft-shadow: 0 14px 42px rgba(23, 18, 36, 0.1);
  --radius: 30px;
  --radius-sm: 18px;
  --shell: min(1380px, calc(100vw - 56px));
  --shine-x: 68%;
  --shine-y: 22%;
  --polish-x: 50%;
  --polish-y: 50%;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 96px; }
body {
  margin: 0;
  min-width: 320px;
  color: var(--ink);
  background:
    radial-gradient(70rem 60rem at var(--shine-x) var(--shine-y), rgba(200, 182, 255, 0.34), transparent 58%),
    radial-gradient(58rem 52rem at 7% 24%, rgba(244, 162, 74, 0.16), transparent 58%),
    linear-gradient(180deg, #fffdfb 0%, var(--paper) 52%, #f8f2ef 100%);
  font: 400 16px/1.65 "Manrope", Arial, sans-serif;
  overflow-x: hidden;
}

body::before {
  content: "";
  position: fixed;
  inset: -20vh -15vw auto;
  height: 72vh;
  pointer-events: none;
  z-index: -1;
  background:
    radial-gradient(circle at var(--polish-x) var(--polish-y), rgba(214, 59, 118, 0.14), transparent 20%),
    radial-gradient(circle at 78% 32%, rgba(90, 42, 168, 0.12), transparent 34%);
  filter: blur(22px);
}

img { display: block; max-width: 100%; }
a { color: inherit; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { text-wrap: balance; }
p { text-wrap: pretty; }

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.skip-link {
  position: fixed;
  top: 10px;
  left: 10px;
  z-index: 1000;
  padding: 12px 18px;
  color: var(--white);
  background: var(--ink);
  border-radius: 999px;
  transform: translateY(-160%);
  transition: transform 0.2s ease;
}
.skip-link:focus { transform: translateY(0); }

:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 4px;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  min-height: 86px;
  padding: 14px max(28px, calc((100vw - 1480px) / 2));
  display: grid;
  grid-template-columns: minmax(220px, 290px) 1fr auto;
  align-items: center;
  gap: 26px;
  background: rgba(255, 249, 246, 0.88);
  border-bottom: 1px solid rgba(23, 18, 36, 0.1);
  backdrop-filter: blur(18px);
}

.brand, .footer-brand { display: inline-flex; align-items: center; text-decoration: none; }
.brand img { width: min(270px, 25vw); height: 56px; object-fit: contain; object-position: left center; }
.footer-brand img { width: 300px; max-width: 100%; }

.site-nav { display: flex; justify-content: center; gap: clamp(14px, 2vw, 32px); }
.site-nav a, .footer-links a {
  position: relative;
  color: var(--muted);
  font-size: 0.84rem;
  font-weight: 700;
  text-decoration: none;
}
.site-nav a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 100%;
  bottom: -7px;
  height: 2px;
  background: var(--spec-grad);
  transition: right 0.2s ease;
}
.site-nav a:hover::after, .site-nav a[aria-current="page"]::after { right: 0; }
.site-nav a[aria-current="page"] { color: var(--ink); }
.header-actions { display: flex; align-items: center; gap: 9px; }

.menu-toggle {
  display: none;
  width: 46px;
  height: 46px;
  border: 1px solid rgba(23, 18, 36, 0.18);
  border-radius: 50%;
  background: var(--paper);
  place-content: center;
  gap: 4px;
  cursor: pointer;
}
.menu-toggle > span:not(.sr-only) { width: 18px; height: 2px; background: var(--ink); border-radius: 5px; }

.button {
  min-height: 46px;
  padding: 11px 20px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border: 1px solid rgba(23, 18, 36, 0.16);
  border-radius: 999px;
  color: var(--ink);
  background: rgba(255, 255, 255, 0.72);
  font-weight: 700;
  text-decoration: none;
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}
.button:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(23, 18, 36, 0.12); }
.button-dark { color: var(--white); background: var(--ink); border-color: var(--ink); }
.button-quiet { background: transparent; }
.button-cream { color: var(--ink); background: var(--paper); border-color: transparent; }
.button-gradient {
  color: var(--white);
  border: 2px solid transparent;
  background: linear-gradient(var(--brand), var(--brand)) padding-box, var(--spec-grad) border-box;
  box-shadow: 0 12px 34px rgba(90, 42, 168, 0.25);
}
.button-large { min-height: 54px; padding: 14px 26px; }

.text-link, .text-button {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 0;
  color: var(--ink);
  background: none;
  border: 0;
  font-weight: 700;
  text-decoration-thickness: 1px;
  text-underline-offset: 5px;
  cursor: pointer;
}
.text-link span { transition: transform 0.2s ease; }
.text-link:hover span { transform: translateX(4px); }
.kicker {
  margin-bottom: 16px;
  color: var(--brand);
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.section-shell { width: var(--shell); margin-inline: auto; }

.hero {
  position: relative;
  width: var(--shell);
  min-height: min(820px, calc(100vh - 86px));
  margin: 26px auto 70px;
  padding: clamp(42px, 6vw, 92px);
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(420px, 1.1fr);
  align-items: center;
  gap: clamp(34px, 6vw, 90px);
  overflow: hidden;
  border: 1px solid transparent;
  border-radius: 46px;
  background:
    linear-gradient(135deg, rgba(255, 249, 246, 0.92), rgba(250, 239, 244, 0.86)) padding-box,
    var(--spec-grad) border-box;
  box-shadow: var(--shadow);
}
.hero::before, .page-hero::before, .services-preview::before {
  content: "";
  position: absolute;
  width: 640px;
  aspect-ratio: 1;
  right: -220px;
  top: -320px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(244, 162, 74, 0.3), rgba(214, 59, 118, 0.1) 46%, transparent 68%);
  pointer-events: none;
}
.hero-copy { position: relative; z-index: 2; }
.hero h1, .page-hero h1 {
  margin-bottom: 28px;
  font-family: "Fraunces", Georgia, serif;
  font-size: clamp(4rem, 7.3vw, 8.25rem);
  font-weight: 600;
  line-height: 0.88;
  letter-spacing: -0.065em;
}
.hero h1 span {
  color: transparent;
  background: var(--spec-grad);
  -webkit-background-clip: text;
  background-clip: text;
}
.hero-lede { max-width: 650px; margin-bottom: 30px; color: var(--muted); font-size: 1.14rem; }
.hero-actions { display: flex; align-items: center; gap: 22px; flex-wrap: wrap; }
.micro-proof { margin-top: 34px; display: flex; flex-wrap: wrap; gap: 10px; }
.micro-proof span { padding: 8px 12px; border: 1px solid rgba(23, 18, 36, 0.12); border-radius: 999px; color: var(--muted); font-size: 0.74rem; font-weight: 700; }

.hero-work { position: relative; min-height: 620px; }
.hero-photo { position: absolute; overflow: hidden; border: 8px solid rgba(255, 249, 246, 0.95); border-radius: 28px; box-shadow: var(--soft-shadow); background: var(--fog); }
.hero-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.45s ease; }
.hero-photo:hover img { transform: scale(1.035); }
.hero-photo-main { inset: 32px 82px 28px 24px; }
.hero-photo-main img { object-position: 64% center; }
.hero-photo-main span { position: absolute; left: 18px; bottom: 18px; padding: 9px 13px; color: var(--ink); background: rgba(255, 249, 246, 0.9); border-radius: 999px; font-size: 0.72rem; font-weight: 700; }
.hero-photo-top { width: 190px; height: 230px; right: -10px; top: 0; transform: rotate(5deg); }
.hero-photo-bottom { width: 190px; height: 240px; right: 0; bottom: 0; transform: rotate(-4deg); }
.hero-stamp { position: absolute; left: -10px; bottom: 8px; width: 112px; filter: drop-shadow(0 15px 28px rgba(23, 18, 36, 0.24)); transform: rotate(-8deg); }

.choice-band { display: grid; grid-template-columns: 1fr 1fr; background: var(--ink); color: var(--paper); }
.choice-band > a { min-height: 176px; padding: 34px max(34px, calc((100vw - 1380px) / 2)); display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 24px; text-decoration: none; border-right: 1px solid rgba(255, 255, 255, 0.16); transition: background 0.2s ease; }
.choice-band > a:first-child { padding-left: max(34px, calc((100vw - 1380px) / 2)); }
.choice-band > a:last-child { padding-right: max(34px, calc((100vw - 1380px) / 2)); }
.choice-band > a:hover { background: #241b37; }
.choice-band small { display: block; margin-bottom: 5px; color: var(--lilac); font-weight: 700; }
.choice-band strong { display: block; font-family: "Fraunces", Georgia, serif; font-size: clamp(1.2rem, 2vw, 1.65rem); line-height: 1.15; }
.choice-number { color: var(--accent); font: 600 2.5rem/1 "Fraunces", Georgia, serif; }
.choice-band b { font-size: 1.8rem; }

.work-preview, .team-preview, .visit-section { padding-block: clamp(88px, 10vw, 150px); }
.section-heading { margin-bottom: 48px; display: grid; grid-template-columns: 1.15fr 0.7fr auto; align-items: end; gap: 30px; }
.section-heading h2, .service-intro h2, .shop-copy h2, .visit-address h2, .client-section-heading h2, .booking-sidebar h2 {
  margin-bottom: 0;
  font: 600 clamp(2.8rem, 5vw, 5.6rem)/0.95 "Fraunces", Georgia, serif;
  letter-spacing: -0.045em;
}
.section-heading > p { margin-bottom: 0; color: var(--muted); }

.lookbook-grid { display: grid; grid-template-columns: 1.25fr 0.8fr 0.8fr; grid-template-rows: 540px; gap: 18px; }
.look { position: relative; overflow: hidden; border-radius: var(--radius); color: var(--white); background: var(--fog); box-shadow: var(--soft-shadow); }
.look img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.45s ease; }
.look:hover img { transform: scale(1.035); }
.look span { position: absolute; left: 18px; bottom: 18px; padding: 9px 13px; border-radius: 999px; background: rgba(23, 18, 36, 0.78); font-size: 0.76rem; font-weight: 700; }
.look-wide img { object-position: center; }

.services-preview { position: relative; overflow: hidden; padding-block: clamp(90px, 10vw, 150px); color: var(--paper); background: linear-gradient(180deg, var(--ink), #241a36); }
.services-preview::before { top: -280px; right: auto; left: -200px; background: radial-gradient(circle, rgba(90, 42, 168, 0.56), rgba(214, 59, 118, 0.18) 48%, transparent 68%); }
.services-preview .section-shell { position: relative; display: grid; grid-template-columns: 0.72fr 1.28fr; gap: clamp(50px, 8vw, 130px); }
.service-intro { align-self: start; position: sticky; top: 130px; }
.service-intro .kicker { color: var(--accent); }
.service-intro p:not(.kicker) { max-width: 500px; margin: 28px 0; color: rgba(255, 249, 246, 0.7); }
.service-list a { min-height: 102px; display: grid; grid-template-columns: 58px 1fr auto; align-items: center; gap: 18px; color: var(--paper); border-bottom: 1px solid rgba(255, 255, 255, 0.15); text-decoration: none; }
.service-list span { color: var(--accent); font-weight: 700; }
.service-list strong { font: 600 clamp(1.5rem, 2.2vw, 2.2rem)/1 "Fraunces", Georgia, serif; }
.service-list small { color: rgba(255, 249, 246, 0.62); }

.team-heading { grid-template-columns: 1.2fr 0.65fr; }
.team-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.process-card {
  min-height: 390px;
  padding: clamp(28px, 4vw, 54px);
  display: flex;
  flex-direction: column;
  border: 1px solid transparent;
  border-radius: var(--radius);
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.86), rgba(247, 238, 243, 0.76)) padding-box, var(--spec-grad) border-box;
  box-shadow: var(--soft-shadow);
}
.process-card > span { width: 52px; height: 52px; display: grid; place-items: center; color: var(--white); background: var(--brand); border-radius: 50%; font-weight: 700; }
.process-card h3 { margin: auto 0 18px; font: 600 clamp(1.8rem, 3vw, 3rem)/1 "Fraunces", Georgia, serif; }
.process-card p { color: var(--muted); }
.process-card a { margin-top: 12px; font-weight: 700; text-underline-offset: 5px; }
.process-card-dark { color: var(--paper); background: linear-gradient(var(--ink), var(--ink)) padding-box, var(--spec-grad) border-box; }
.process-card-dark p { color: rgba(255, 249, 246, 0.7); }
.process-card-dark > span { color: var(--ink); background: var(--accent); }

.shop-preview { display: grid; grid-template-columns: 1fr 0.8fr; min-height: 650px; color: var(--paper); background: var(--spec-grad); }
.shop-copy { padding: clamp(54px, 9vw, 140px) max(34px, calc((100vw - 1380px) / 2)); padding-right: clamp(50px, 8vw, 120px); display: flex; flex-direction: column; align-items: flex-start; justify-content: center; }
.shop-copy .kicker { color: var(--paper); }
.shop-copy p:not(.kicker) { max-width: 580px; margin-block: 28px; color: rgba(255, 249, 246, 0.84); }
.shop-image { min-height: 650px; overflow: hidden; }
.shop-image img { width: 100%; height: 100%; object-fit: cover; object-position: 70% center; }

.visit-section { display: grid; grid-template-columns: 0.85fr 1.15fr; gap: clamp(50px, 8vw, 120px); }
.visit-address p:last-child { margin-top: 24px; color: var(--muted); }
.visit-actions a { min-height: 94px; display: grid; grid-template-columns: 120px 1fr; align-items: center; border-bottom: 1px solid rgba(23, 18, 36, 0.16); text-decoration: none; }
.visit-actions span { color: var(--brand); font-size: 0.76rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }
.visit-actions b { font-size: 1.06rem; }

.site-footer { padding: 64px max(28px, calc((100vw - 1380px) / 2)) 28px; display: grid; grid-template-columns: 1fr 1fr 0.7fr; align-items: start; gap: 38px; background: var(--paper); border-top: 1px solid rgba(23, 18, 36, 0.12); }
.footer-links { display: grid; grid-template-columns: repeat(2, minmax(130px, 1fr)); gap: 13px 24px; }
.footer-meta { color: var(--muted); font-size: 0.84rem; }
.concept-note { grid-column: 1 / -1; margin: 38px 0 0; padding-top: 20px; color: var(--muted); border-top: 1px solid rgba(23, 18, 36, 0.1); font-size: 0.72rem; }
.mobile-actions { display: none; }

.page-hero {
  position: relative;
  width: var(--shell);
  min-height: 450px;
  margin: 26px auto 0;
  padding: clamp(50px, 7vw, 100px);
  display: grid;
  grid-template-columns: 1fr 0.75fr;
  align-items: end;
  gap: 50px;
  overflow: hidden;
  border: 1px solid transparent;
  border-radius: 44px 44px 0 0;
  background: linear-gradient(rgba(255,255,255,.8), rgba(255,255,255,.8)) padding-box, var(--spec-grad) border-box;
}
.page-hero h1 { margin-bottom: 0; font-size: clamp(4rem, 8vw, 8rem); }
.page-hero-copy { position: relative; z-index: 2; padding-bottom: 10px; }
.page-hero-copy p { max-width: 580px; color: var(--muted); font-size: 1.08rem; }
.butter { background: linear-gradient(135deg, #fff3da, #fbe5d1) padding-box, var(--spec-grad) border-box; }
.lilac { background: linear-gradient(135deg, #efe9ff, #f9eef6) padding-box, var(--spec-grad) border-box; }
.mint { background: linear-gradient(135deg, #eaf4ef, #f8f5ec) padding-box, var(--spec-grad) border-box; }
.coral { background: linear-gradient(135deg, #fde8ed, #fff0db) padding-box, var(--spec-grad) border-box; }
.night { color: var(--paper); background: linear-gradient(135deg, #171224, #2b1c40) padding-box, var(--spec-grad) border-box; }
.night .kicker { color: var(--accent); }
.night .page-hero-copy p { color: rgba(255, 249, 246, 0.72); }

.page-content { width: var(--shell); margin: 0 auto; padding-block: clamp(80px, 9vw, 130px); }
.service-editorial { margin-top: clamp(60px, 8vw, 110px); display: grid; grid-template-columns: 0.9fr 1.1fr; align-items: stretch; overflow: hidden; color: var(--paper); background: var(--ink); border-radius: var(--radius); }
.service-editorial img { width: 100%; min-height: 500px; height: 100%; object-fit: cover; object-position: center 48%; }
.service-editorial div { padding: clamp(42px, 7vw, 100px); align-self: center; }
.service-editorial .kicker { color: var(--accent); }
.service-editorial h2 { max-width: 620px; margin: 16px 0 24px; font: 600 clamp(2.7rem, 5vw, 5.8rem)/0.94 "Fraunces", Georgia, serif; }
.service-editorial p:last-child { max-width: 600px; color: rgba(255, 249, 246, 0.72); }
.page-intro { max-width: 880px; margin-bottom: 64px; color: var(--muted); font-size: clamp(1.2rem, 2.4vw, 1.8rem); }

.service-catalog { border-top: 1px solid rgba(23, 18, 36, 0.18); }
.service-row { padding: clamp(34px, 5vw, 70px) 0; display: grid; grid-template-columns: 70px minmax(250px, 0.75fr) 1fr; gap: 32px; border-bottom: 1px solid rgba(23, 18, 36, 0.16); }
.service-row > span { color: var(--brand); font-weight: 700; }
.service-row h2 { font: 600 clamp(2rem, 4vw, 4rem)/0.95 "Fraunces", Georgia, serif; }
.service-details > p:first-child { color: var(--brand); font-weight: 700; }
.service-details > p:not(:first-child), .service-details li { color: var(--muted); }
.service-details ul { margin: 20px 0 28px; padding-left: 20px; }
.policy-note { margin-top: 80px; padding: clamp(30px, 5vw, 64px); display: grid; grid-template-columns: 0.55fr 1fr; gap: 44px; color: var(--paper); border-radius: var(--radius); background: linear-gradient(var(--ink), var(--ink)) padding-box, var(--spec-grad) border-box; border: 1px solid transparent; }
.policy-note h2 { font: 600 clamp(2rem, 4vw, 3.8rem)/1 "Fraunces", Georgia, serif; }
.policy-note p { color: rgba(255, 249, 246, 0.74); }

.portfolio-grid { display: grid; grid-template-columns: repeat(3, 1fr); grid-auto-rows: 480px; gap: 18px; }
.portfolio-item { position: relative; margin: 0; overflow: hidden; border-radius: var(--radius); background: var(--fog); box-shadow: var(--soft-shadow); }
.portfolio-item img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.45s ease; }
.portfolio-item:hover img { transform: scale(1.03); }
.portfolio-item-wide { grid-column: span 2; }
.portfolio-item figcaption { position: absolute; inset: auto 16px 16px; padding: 12px 14px; display: flex; justify-content: space-between; gap: 18px; color: var(--paper); background: rgba(23, 18, 36, 0.8); border-radius: 14px; backdrop-filter: blur(10px); }
.portfolio-item figcaption span { color: rgba(255, 249, 246, 0.68); font-size: 0.78rem; }

.intake-layout { display: grid; grid-template-columns: 0.68fr 1.32fr; align-items: start; gap: clamp(46px, 8vw, 120px); }
.intake-sidebar { position: sticky; top: 130px; }
.intake-sidebar h2 { font: 600 clamp(2.4rem, 4.5vw, 4.8rem)/0.96 "Fraunces", Georgia, serif; }
.intake-sidebar ol { margin: 30px 0; padding-left: 23px; color: var(--muted); }
.privacy-callout { padding: 22px; color: var(--muted); background: var(--sage); border-radius: var(--radius-sm); font-size: 0.86rem; }
.intake-form, .booking-form, .team-login { padding: clamp(28px, 5vw, 58px); border: 1px solid transparent; border-radius: var(--radius); background: linear-gradient(rgba(255,255,255,.86), rgba(255,255,255,.86)) padding-box, var(--spec-grad) border-box; box-shadow: var(--soft-shadow); }
.field { margin-bottom: 24px; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.field label, .field legend { display: block; margin-bottom: 9px; font-weight: 700; }
.field small { display: block; margin-top: 8px; color: var(--muted); }
.field input:not([type="radio"]):not([type="checkbox"]), .field select, .field textarea {
  width: 100%;
  min-height: 52px;
  padding: 13px 15px;
  color: var(--ink);
  background: rgba(255, 249, 246, 0.92);
  border: 1px solid rgba(23, 18, 36, 0.18);
  border-radius: 13px;
}
.field textarea { min-height: 126px; resize: vertical; }
fieldset.field { padding: 0; border: 0; }
.radio-options, .check-options { display: flex; flex-wrap: wrap; gap: 9px; }
.radio-options label, .check-options label { margin: 0; padding: 10px 13px; border: 1px solid rgba(23, 18, 36, 0.14); border-radius: 999px; background: var(--paper); font-size: 0.82rem; cursor: pointer; }
.radio-options input, .check-options input { margin-right: 7px; accent-color: var(--brand); }
.upload-preview { margin-top: 14px; }
.upload-preview img { width: 150px; height: 150px; object-fit: cover; border-radius: var(--radius-sm); }
.form-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 16px; }
.form-result, .booking-result { margin-top: 28px; padding: 24px; color: var(--paper); background: var(--ink); border-radius: var(--radius-sm); }
.form-result { display: none; }
.form-result.is-visible { display: block; }
.form-result pre, .saved-intake pre { max-height: 280px; overflow: auto; padding: 16px; color: inherit; background: rgba(255,255,255,.08); border-radius: 12px; white-space: pre-wrap; font: 400 0.82rem/1.55 "Manrope", Arial, sans-serif; }

.client-nav { padding-block: 30px; display: flex; gap: 10px; flex-wrap: wrap; }
.client-nav a { padding: 10px 16px; color: var(--muted); border: 1px solid rgba(23, 18, 36, 0.14); border-radius: 999px; font-weight: 700; text-decoration: none; }
.client-section { padding-top: 70px; }
.client-section-heading { max-width: 760px; margin-bottom: 46px; }
.client-section-heading > p:last-child { margin-top: 24px; color: var(--muted); }
.booking-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.booking-empty, .booking-card { min-height: 230px; padding: 28px; border-radius: var(--radius); background: linear-gradient(180deg, #fff, #f7f0f4); border: 1px solid rgba(23, 18, 36, 0.12); box-shadow: var(--soft-shadow); }
.booking-empty { grid-column: 1 / -1; display: grid; place-items: center; text-align: center; color: var(--muted); }
.booking-card { display: flex; flex-direction: column; }
.booking-card .booking-code { color: var(--brand); font-size: 0.74rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }
.booking-card h3 { margin: auto 0 12px; font: 600 2rem/1 "Fraunces", Georgia, serif; }
.booking-card p { margin-bottom: 8px; color: var(--muted); font-size: 0.84rem; }
.booking-card button { align-self: flex-start; margin-top: 16px; color: #9f214d; }
.booking-section { padding-block: clamp(80px, 10vw, 140px); background: linear-gradient(180deg, #21172f, var(--ink)); color: var(--paper); }
.booking-layout { display: grid; grid-template-columns: 0.7fr 1.3fr; align-items: start; gap: clamp(48px, 8vw, 120px); }
.booking-sidebar { position: sticky; top: 130px; }
.booking-sidebar .kicker { color: var(--accent); }
.booking-sidebar > p:not(.kicker) { margin-top: 26px; color: rgba(255, 249, 246, 0.7); }
.saved-intake { margin-top: 26px; padding: 20px; color: var(--paper); background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.14); border-radius: var(--radius-sm); }
.saved-intake .text-button { color: var(--accent); }
.booking-form { color: var(--ink); }
.team-access { padding-top: 100px; }
.team-login { max-width: 760px; margin-bottom: 38px; }
.team-message { margin: 18px 0 0; color: #9f214d; font-weight: 700; }
.team-schedule { padding: clamp(28px, 5vw, 56px); color: var(--paper); background: var(--ink); border-radius: var(--radius); }
.team-schedule-heading { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 30px; }
.team-schedule h3 { margin: 0; font: 600 clamp(2rem, 4vw, 4rem)/1 "Fraunces", Georgia, serif; }
.team-schedule .text-button { color: var(--accent); }
.team-row { padding: 18px 0; display: grid; grid-template-columns: 130px 1fr 1fr auto; gap: 20px; border-top: 1px solid rgba(255,255,255,.14); }
.team-row span { color: rgba(255,249,246,.64); }

.shop-grid { display: grid; gap: 22px; }
.product-card { min-height: 440px; display: grid; grid-template-columns: 0.9fr 1.1fr; overflow: hidden; border: 1px solid rgba(23, 18, 36, 0.12); border-radius: var(--radius); background: var(--white); box-shadow: var(--soft-shadow); }
.product-visual { min-height: 380px; display: grid; place-items: center; overflow: hidden; background: linear-gradient(145deg, #f4e9f0, #e9e0ff); }
.product-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 65% center; }
.product-symbol { color: var(--paper); background: var(--spec-grad); }
.product-symbol span { font: 600 7rem/1 "Fraunces", Georgia, serif; }
.product-symbol small { position: absolute; margin: 100px 0 0 120px; font-weight: 700; letter-spacing: 0.12em; }
.product-gift { display: flex; flex-direction: column; gap: 18px; color: var(--ink); background: var(--sage); font-weight: 700; letter-spacing: 0.12em; text-align: center; }
.product-gift img { width: 116px; }
.product-info { padding: clamp(30px, 5vw, 68px); display: flex; flex-direction: column; align-items: flex-start; justify-content: center; }
.product-info > p { color: var(--brand); font-size: 0.74rem; font-weight: 700; letter-spacing: 0.13em; text-transform: uppercase; }
.product-info h2 { font: 600 clamp(2.2rem, 4vw, 4rem)/1 "Fraunces", Georgia, serif; }
.product-info > span { max-width: 560px; margin-bottom: 28px; color: var(--muted); }
.shop-status { margin-top: 26px; padding: 22px 28px; display: flex; justify-content: space-between; gap: 28px; color: var(--paper); background: var(--ink); border-radius: var(--radius-sm); }
.shop-status span { color: rgba(255, 249, 246, 0.68); }

@media (max-width: 1180px) {
  .site-header { grid-template-columns: minmax(190px, 250px) 1fr auto; gap: 16px; }
  .site-nav { gap: 14px; }
  .site-nav a { font-size: 0.76rem; }
  .button-quiet { display: none; }
  .hero { grid-template-columns: 0.95fr 1.05fr; padding: 52px; }
  .hero-work { min-height: 540px; }
  .hero-photo-top, .hero-photo-bottom { width: 155px; }
  .section-heading { grid-template-columns: 1fr 0.75fr; }
  .section-heading .text-link { grid-column: 2; }
  .portfolio-grid { grid-template-columns: repeat(2, 1fr); }
  .booking-list { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 920px) {
  :root { --shell: min(100% - 32px, 760px); }
  .site-header { min-height: 74px; padding: 10px 16px; grid-template-columns: 1fr auto auto; }
  .brand img { width: 210px; height: 50px; }
  .menu-toggle { display: grid; }
  .site-nav { position: absolute; top: calc(100% + 1px); left: 16px; right: 16px; padding: 20px; display: none; flex-direction: column; align-items: flex-start; gap: 16px; background: var(--paper); border: 1px solid rgba(23,18,36,.12); border-radius: 0 0 20px 20px; box-shadow: var(--shadow); }
  .site-nav.is-open { display: flex; }
  .site-nav a { font-size: 0.92rem; }
  .header-actions .button-dark { min-height: 44px; padding: 10px 16px; font-size: 0.78rem; }
  .hero { min-height: auto; margin-top: 16px; padding: 46px 28px; grid-template-columns: 1fr; border-radius: 32px; }
  .hero-work { min-height: 560px; }
  .choice-band { grid-template-columns: 1fr; }
  .choice-band > a { padding: 28px 24px; min-height: 140px; border-right: 0; border-bottom: 1px solid rgba(255,255,255,.14); }
  .lookbook-grid { grid-template-columns: 1.2fr 0.8fr; grid-template-rows: 360px 280px; }
  .look-wide { grid-row: span 2; }
  .services-preview .section-shell, .visit-section, .intake-layout, .booking-layout { grid-template-columns: 1fr; }
  .service-intro, .intake-sidebar, .booking-sidebar { position: static; }
  .team-grid { grid-template-columns: 1fr; }
  .process-card { min-height: 320px; }
  .shop-preview { grid-template-columns: 1fr; }
  .service-editorial { grid-template-columns: 1fr; }
  .service-editorial img { min-height: 420px; max-height: 620px; }
  .shop-image { min-height: 430px; }
  .site-footer { grid-template-columns: 1fr 1fr; }
  .footer-meta { grid-column: 2; }
  .page-hero { grid-template-columns: 1fr; min-height: 390px; border-radius: 32px 32px 0 0; }
  .service-row { grid-template-columns: 52px 1fr; }
  .service-details { grid-column: 2; }
  .policy-note { grid-template-columns: 1fr; }
  .team-row { grid-template-columns: 100px 1fr; }
  .team-row > :nth-child(3), .team-row > :nth-child(4) { grid-column: 2; }
}

@media (max-width: 640px) {
  :root { --shell: calc(100% - 24px); }
  body { padding-bottom: 64px; }
  .site-header { grid-template-columns: 1fr auto; }
  .brand img { width: 184px; }
  .header-actions { display: none; }
  .hero { padding: 38px 22px; margin-bottom: 40px; }
  .hero h1, .page-hero h1 { font-size: clamp(3.7rem, 19vw, 6rem); }
  .hero-work { min-height: 440px; }
  .hero-photo-main { inset: 26px 44px 26px 0; }
  .hero-photo-top { width: 118px; height: 155px; right: -8px; }
  .hero-photo-bottom { width: 118px; height: 164px; right: -4px; }
  .hero-stamp { width: 78px; left: -4px; }
  .micro-proof span { font-size: 0.68rem; }
  .section-heading, .team-heading { grid-template-columns: 1fr; }
  .section-heading .text-link { grid-column: auto; }
  .lookbook-grid { grid-template-columns: 1fr 1fr; grid-template-rows: 380px 220px; }
  .look-wide { grid-column: 1 / -1; grid-row: auto; }
  .services-preview .section-shell { gap: 42px; }
  .service-list a { grid-template-columns: 40px 1fr; padding-block: 18px; }
  .service-list small { grid-column: 2; }
  .shop-copy { padding: 70px 24px; }
  .visit-section { gap: 36px; }
  .visit-actions a { grid-template-columns: 90px 1fr; }
  .site-footer { padding: 52px 24px 20px; grid-template-columns: 1fr; }
  .footer-meta { grid-column: auto; }
  .footer-links { grid-template-columns: 1fr 1fr; }
  .page-hero { width: calc(100% - 24px); min-height: 340px; margin-top: 12px; padding: 38px 24px; }
  .page-content { padding-block: 70px; }
  .service-row { grid-template-columns: 38px 1fr; gap: 18px; }
  .portfolio-grid { grid-template-columns: 1fr; grid-auto-rows: 480px; }
  .portfolio-item-wide { grid-column: auto; }
  .portfolio-item figcaption { flex-direction: column; gap: 3px; }
  .field-row { grid-template-columns: 1fr; gap: 0; }
  .intake-form, .booking-form, .team-login { padding: 24px 18px; }
  .booking-list { grid-template-columns: 1fr; }
  .booking-section { padding-block: 70px; }
  .team-schedule { padding: 28px 20px; }
  .team-schedule-heading { align-items: flex-start; flex-direction: column; }
  .team-row { grid-template-columns: 1fr; }
  .team-row > * { grid-column: auto !important; }
  .product-card { grid-template-columns: 1fr; }
  .product-visual { min-height: 330px; }
  .shop-status { flex-direction: column; }
  .mobile-actions { position: fixed; left: 0; right: 0; bottom: 0; z-index: 120; height: 64px; display: grid; grid-template-columns: 1fr 1fr; background: var(--paper); border-top: 1px solid rgba(23,18,36,.14); }
  .mobile-actions a { display: grid; place-items: center; font-size: 0.78rem; font-weight: 700; text-decoration: none; }
  .mobile-actions a:last-child { color: var(--white); background: var(--brand); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; }
}
