/* ── TOKENS ─────────────────────────────── */
:root {
  --black:   #0a0a0a;
  --dark:    #111111;
  --card:    #181818;
  --border:  #2a2a2a;
  --gold:    #c9a84c;
  --gold-lt: #e2c47a;
  --gold-dk: #8a6d28;
  --cream:   #f5f0e8;
  --muted:   #bdb8b0;
  --white:   #ffffff;
  --ff-display: 'Cormorant Garamond', Georgia, serif;
  --ff-body:    'Jost', sans-serif;
  --max: 1200px;
  --transition: 0.35s cubic-bezier(0.4,0,0.2,1);
}

/* ── RESET ───────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
.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;
}
html { scroll-behavior: smooth; }
body {
  background: var(--black);
  color: var(--cream);
  font-family: var(--ff-body);
  font-weight: 400;
  font-size: 16px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
ul { list-style: none; }

/* ── UTILITIES ───────────────────────────── */
.container { max-width: var(--max); margin: 0 auto; padding: 0 24px; }
.gold { color: var(--gold); }
.section-label {
  font-family: var(--ff-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 16px;
}

/* First-visit banner (moved from inline styles for maintainability) */
.first-visit-banner {
  background: var(--gold-lt);
  color: var(--dark);
  text-align: center;
  padding: 40px 24px;
}
.first-visit-banner .section-label { color: var(--dark); }
.first-visit-banner .section-title { margin-bottom: 16px; color: var(--dark); }
.first-visit-banner .btn-outline { border-color: var(--dark); color: var(--dark); }
.section-title {
  font-family: var(--ff-display);
  font-size: clamp(2rem, 4vw, 3.2rem);
  font-weight: 300;
  line-height: 1.15;
  color: var(--cream);
}
.about-difference-teaser .section-label,
.about-difference-teaser .section-title,
.about-difference-teaser .muted-lead,
.about-difference-teaser .btn {
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}
.about-difference-teaser .divider {
  margin-left: auto;
  margin-right: auto;
}
.about-difference-teaser {
  border-bottom: 1px solid var(--border);
  background: linear-gradient(180deg, rgba(201,168,76,0.03), transparent 120px), var(--black);
  padding: 80px 24px;
  text-align: center;
}
.divider {
  width: 48px;
  height: 1px;
  background: var(--gold);
  margin: 24px 0;
}
.btn {
  display: inline-block;
  padding: 14px 36px;
  font-family: var(--ff-body);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  transition: var(--transition);
  cursor: pointer;
  border: none;
}
.btn-gold {
  background: var(--gold);
  color: var(--black);
}
.btn-gold:hover { background: var(--gold-lt); }
.btn-outline {
  background: transparent;
  color: var(--gold);
  border: 1px solid var(--gold);
}
.btn-outline:hover {
  background: var(--gold);
  color: var(--black);
}

/* Focus styles for keyboard users */
:focus-visible {
  outline: 3px solid rgba(201,168,76,0.35);
  outline-offset: 3px;
}
.btn:focus-visible,
.nav-links a:focus-visible,
.nav-hamburger:focus-visible,
.mobile-menu a:focus-visible,
.social-link:focus-visible,
.sticky-cta a:focus-visible,
.faq-question:focus-visible,
.featured-item:focus-visible,
.service-card:focus-visible {
  outline: 3px solid rgba(201,168,76,0.35);
  outline-offset: 3px;
}

/* Skip link for keyboard users */
.skip-link {
  position: absolute;
  left: -9999px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
.skip-link:focus,
.skip-link:active {
  left: 16px;
  top: 16px;
  width: auto;
  height: auto;
  padding: 8px 12px;
  background: var(--gold);
  color: var(--black);
  text-decoration: none;
  border-radius: 4px;
  z-index: 9999;
}

/* ── NAV ─────────────────────────────────── */
nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  padding: 0 24px;
  transition: background var(--transition), box-shadow var(--transition);
}
nav.scrolled {
  background: rgba(10,10,10,0.97);
  box-shadow: 0 1px 0 var(--border);
  backdrop-filter: blur(12px);
}
nav.nav-solid {
  background: rgba(10,10,10,0.97);
  box-shadow: 0 1px 0 var(--border);
}
.nav-inner {
  max-width: var(--max);
  margin: 0 auto;
  height: 72px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.nav-logo {
  display: inline-flex;
  align-items: center;
  line-height: 0;
  flex-shrink: 0;
}
.nav-logo img {
  display: block;
  width: auto;
  height: 44px;
}
.footer-brand .nav-logo img {
  width: 200px;
  height: auto;
  max-width: none;
}
.nav-links {
  display: flex;
  gap: 36px;
  align-items: center;
}
.nav-links a {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cream);
  opacity: 0.75;
  transition: opacity var(--transition), color var(--transition);
}
.nav-links a:hover, .nav-links a.active { opacity: 1; color: var(--gold); }
.nav-book {
  background: var(--gold);
  color: var(--black) !important;
  opacity: 1 !important;
  padding: 10px 22px;
  font-weight: 500 !important;
}
.nav-book:hover { background: var(--gold-lt) !important; }
.nav-hamburger {
  display: none;
  flex-direction: column;
  gap: 5px;
  cursor: pointer;
  background: none;
  border: none;
  padding: 4px;
}
.nav-hamburger span {
  display: block;
  width: 24px;
  height: 1.5px;
  background: var(--cream);
  transition: var(--transition);
}
.mobile-menu {
  display: none;
  position: fixed;
  top: 72px; left: 0; right: 0;
  background: rgba(10,10,10,0.98);
  backdrop-filter: blur(16px);
  border-top: 1px solid var(--border);
  padding: 32px 24px 40px;
  z-index: 99;
  flex-direction: column;
  gap: 0;
}
.mobile-menu.open { display: flex; }
.mobile-menu a {
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--cream);
  padding: 16px 0;
  border-bottom: 1px solid var(--border);
  opacity: 0.8;
}
.mobile-menu a:last-child { border-bottom: none; color: var(--gold); opacity: 1; margin-top: 16px; }

/* ── HERO ─────────────────────────────────── */
.hero {
  position: relative;
  height: 100vh;
  min-height: 640px;
  display: flex;
  align-items: center;
  overflow: hidden;
}
.hero-bg {
  position: absolute;
  inset: 0;
  background-image: url('/img/salon-gallery-1.webp');
  background-size: cover;
  background-position: center 30%;
  transform: scale(1.04);
  animation: heroZoom 12s ease-out forwards;
}
@keyframes heroZoom { to { transform: scale(1); } }
.hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(105deg, rgba(10,10,10,0.88) 0%, rgba(10,10,10,0.55) 55%, rgba(10,10,10,0.2) 100%);
}
.hero-content {
  position: relative;
  z-index: 2;
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 24px;
  padding-top: 72px;
}
.hero-eyebrow {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 20px;
  opacity: 0;
  animation: fadeUp 0.8s 0.3s ease forwards;
}
.hero-title {
  font-family: var(--ff-display);
  font-size: clamp(2.6rem, 6vw, 5.2rem);
  font-weight: 300;
  line-height: 1.08;
  color: var(--white);
  max-width: 620px;
  opacity: 0;
  animation: fadeUp 0.8s 0.5s ease forwards;
}
.hero-title em { font-style: italic; color: var(--gold-lt); }
.hero-sub {
  margin-top: 20px;
  font-size: 15px;
  font-weight: 300;
  color: rgba(245,240,232,0.75);
  max-width: 440px;
  line-height: 1.65;
  opacity: 0;
  animation: fadeUp 0.8s 0.7s ease forwards;
}
.hero-actions {
  margin-top: 40px;
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  opacity: 0;
  animation: fadeUp 0.8s 0.9s ease forwards;
}
/* Inline links sit inside body copy that inherits its colour, and the global
   a{color:inherit;text-decoration:none} makes them invisible. Matches .byb-read-item a. */
.hero-sub-link { color: var(--gold); text-decoration: underline; text-underline-offset: 3px; }
/* Shown only under 768px, where .hero-actions is hidden. Outline, never gold: the
   sticky bar's gold Book button is on screen at the same time. */
/* Sits at 0.8s to keep the hero's fadeUp cascade in order: eyebrow .3, title .5,
   sub .7, rating .8, actions .9, jump 1.0 */
.hero-rating {
  margin-top: 18px;
  font-size: 13px;
  letter-spacing: 0.04em;
  color: rgba(245,240,232,0.75);
  opacity: 0;
  animation: fadeUp 0.8s 0.8s ease forwards;
}
.hero-rating i { color: var(--gold); margin-right: 6px; vertical-align: -1px; }
.hero-jump {
  display: none;
  margin-top: 32px;
  opacity: 0;
  animation: fadeUp 0.8s 1s ease forwards;
}

/* ── PAGE HERO (inner pages) ─────────────── */
.page-hero {
  position: relative;
  padding: 152px 24px 72px;
  overflow: hidden;
  background: var(--dark);
  border-bottom: 1px solid var(--border);
}
.page-hero-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  opacity: 0.12;
  filter: grayscale(30%);
}
.page-hero-content {
  position: relative;
  z-index: 2;
  max-width: var(--max);
  margin: 0 auto;
}
.breadcrumb {
  font-size: 11px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 20px;
}
.breadcrumb a { color: var(--gold); transition: opacity var(--transition); }
.breadcrumb a:hover { opacity: 0.8; }
.breadcrumb span { margin: 0 8px; opacity: 0.4; }
.page-title {
  font-family: var(--ff-display);
  font-size: clamp(2.2rem, 5vw, 4rem);
  font-weight: 300;
  color: var(--white);
  line-height: 1.1;
}
.page-title em { font-style: italic; color: var(--gold-lt); }
.page-subtitle {
  margin-top: 16px;
  font-size: 15px;
  color: rgba(245,240,232,0.65);
  max-width: 520px;
  line-height: 1.7;
}
/* Desktop-only: on mobile the sticky CTA bar carries these actions */
.hero-cta-row {
  margin-top: 28px;
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
}

/* ── TRUST BAR ───────────────────────────── */
.trust-bar {
  background: var(--dark);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  padding: 28px 24px;
}
.trust-inner {
  max-width: var(--max);
  margin: 0 auto;
  display: flex;
  justify-content: space-around;
  align-items: center;
  flex-wrap: wrap;
  gap: 24px;
}
.trust-item { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.trust-number { font-family: var(--ff-display); font-size: 2rem; font-weight: 600; color: var(--gold); line-height: 1; }
.trust-label { font-size: 11px; font-weight: 400; letter-spacing: 0.15em; text-transform: uppercase; color: var(--muted); }
.trust-divider { width: 1px; height: 40px; background: var(--border); }

/* ── SERVICES (homepage) ─────────────────── */
.services {
  padding: 100px 24px;
  background: linear-gradient(180deg, rgba(201,168,76,0.02), transparent 160px), var(--black);
  border-top: 1px solid rgba(201,168,76,0.12);
}
.services-header { max-width: var(--max); margin: 0 auto 56px; }
.services-grid {
  max-width: var(--max);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 2px;
}
.service-card {
  position: relative;
  overflow: hidden;
  aspect-ratio: 4/3;
  cursor: pointer;
  background: var(--card);
  display: block;
  transition: transform 0.15s ease;
}
.service-card:active { transform: scale(0.985); }
.service-card img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.7s cubic-bezier(0.4,0,0.2,1);
  filter: brightness(0.6);
}
.service-card:hover img { transform: scale(1.06); filter: brightness(0.4); }
.service-card-body {
  position: absolute;
  inset: 0;
  padding: 28px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}
.service-card-tag { font-size: 10px; font-weight: 500; letter-spacing: 0.22em; text-transform: uppercase; color: var(--gold); margin-bottom: 8px; }
.service-card-name { font-family: var(--ff-display); font-size: 1.7rem; font-weight: 300; color: var(--white); line-height: 1.1; }
.service-card-price { margin-top: 6px; font-size: 12px; color: rgba(245,240,232,0.6); }
.service-card-cta {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 14px;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--gold);
}
.service-card-cta svg { stroke: var(--gold); flex-shrink: 0; transition: transform 0.3s; }
.service-card:hover .service-card-cta svg,
.service-card:focus-visible .service-card-cta svg { transform: translateX(3px); }
.service-card-arrow {
  position: absolute;
  top: 28px; right: 28px;
  width: 36px; height: 36px;
  border: 1px solid rgba(201,168,76,0.4);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0.6;
  transition: var(--transition);
}
.service-card:hover .service-card-arrow,
.service-card:focus-visible .service-card-arrow { opacity: 1; }
.service-card-arrow svg { stroke: var(--gold); }
.service-card.large { grid-row: span 2; aspect-ratio: unset; }

/* ── SERVICE MENU (inner pages) ─────────── */
.service-section { padding: 80px 24px; background: var(--black); }
.service-section-inner { max-width: var(--max); margin: 0 auto; }
.service-category-title {
  font-family: var(--ff-display);
  font-size: clamp(1.6rem, 3vw, 2.4rem);
  font-weight: 300;
  color: var(--cream);
  margin-bottom: 8px;
}
.service-category-desc {
  font-size: 13px;
  color: var(--muted);
  max-width: 560px;
  line-height: 1.7;
  margin-bottom: 36px;
}
/* ── PULL QUOTE (matches .about-intro-text p.lead exactly) ── */
.pull-quote {
  font-family: var(--ff-display);
  font-size: 1.35rem;
  font-weight: 300;
  font-style: italic;
  color: var(--cream);
  line-height: 1.55;
  max-width: 560px;
  margin: 8px 0 36px;
}
/* ── RULE CALLOUT (bordered emphasis box for a key paragraph) ── */
.rule-callout {
  background: var(--card);
  border: 1px solid var(--border);
  border-left: 2px solid var(--gold);
  padding: 24px 28px;
  margin-bottom: 36px;
  max-width: 560px;
}
.rule-callout p.service-category-desc { margin-bottom: 0; max-width: none; }
.price-list { border-top: 1px solid var(--border); }
.price-item {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 18px 0;
  border-bottom: 1px solid var(--border);
  gap: 24px;
  transition: background var(--transition);
}
.price-item:hover { background: rgba(201,168,76,0.03); }
.price-item-name { font-size: 14px; color: var(--cream); font-weight: 300; }
.price-item-sub { font-size: 12px; color: var(--muted); margin-top: 3px; }
.price-item-amount { font-size: 14px; color: var(--gold); font-weight: 500; white-space: nowrap; flex-shrink: 0; }
.price-note { font-size: 11px; color: var(--muted); margin-top: 16px; letter-spacing: 0.05em; }

.service-two-col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px;
}

/* ── COMPARISON TABLE ────────────────────── */
.compare-table-wrap { overflow-x: auto; border: 1px solid var(--border); }
.compare-table {
  width: 100%;
  min-width: 560px;
  border-collapse: collapse;
  font-size: 13px;
}
.compare-table caption { text-align: left; padding: 12px 16px; font-size: 12px; color: var(--muted); }
.compare-table th, .compare-table td {
  padding: 16px 18px;
  text-align: left;
  border-bottom: 1px solid var(--border);
  color: var(--cream);
  font-weight: 300;
  vertical-align: top;
}
.compare-table thead th {
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
  border-bottom: 1px solid var(--border);
}
.compare-table tbody th {
  font-size: 12px;
  letter-spacing: 0.05em;
  color: var(--muted);
  font-weight: 400;
  white-space: nowrap;
}
.compare-table tbody tr:last-child th,
.compare-table tbody tr:last-child td { border-bottom: none; }
.compare-table .compare-col-highlight {
  background: rgba(201,168,76,0.06);
  color: var(--gold-lt);
  position: relative;
}
.compare-table thead th.compare-col-highlight {
  color: var(--gold);
  border-top: 2px solid var(--gold);
}

/* ── TIER GRID (short explainer cards) ───── */
.tier-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  background: var(--border);
  border: 1px solid var(--border);
}
.tier-card { background: var(--black); padding: 24px; }
.tier-card-name {
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 8px;
}
.tier-card-desc { font-size: 13px; color: var(--muted); line-height: 1.6; }
.tier-grid-3 { grid-template-columns: repeat(3, 1fr); }

/* ── FEATURED SERVICES ───────────────────── */
.featured { padding: 100px 24px; background: var(--dark); border-top: 1px solid var(--border); }
.featured-inner { max-width: var(--max); margin: 0 auto; }
.featured-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  margin-bottom: 56px;
  flex-wrap: wrap;
  gap: 24px;
}
.featured-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; }
.featured-item {
  background: var(--card);
  padding: 36px 32px;
  border: 1px solid var(--border);
  transition: border-color var(--transition), background var(--transition);
  position: relative;
  overflow: hidden;
  display: block;
  cursor: pointer;
}
.featured-item::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
  transform: scaleX(0);
  transition: transform 0.5s ease;
}
.featured-item:hover::before { transform: scaleX(1); }
.featured-item:hover { border-color: rgba(201,168,76,0.3); background: #1e1e1e; }
.featured-num { font-family: var(--ff-display); font-size: 3rem; font-weight: 300; color: var(--border); line-height: 1; margin-bottom: 20px; }
/* Make featured numbers more visible using brand gold */
.featured-num { color: var(--gold); }
.featured-name { font-family: var(--ff-display); font-size: 1.35rem; font-weight: 400; color: var(--cream); margin-bottom: 10px; }
.featured-desc { font-size: 13px; color: var(--muted); line-height: 1.6; margin-bottom: 20px; }
.featured-price { font-size: 13px; color: var(--gold); font-weight: 500; letter-spacing: 0.05em; }

/* ── GALLERY ─────────────────────────────── */
.gallery { padding: 100px 24px; background: var(--black); border-top: 1px solid var(--border); }
.gallery-header {
  max-width: var(--max);
  margin: 0 auto 48px;
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  flex-wrap: wrap;
  gap: 20px;
}
.gallery-grid {
  max-width: var(--max);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  grid-template-rows: 260px 260px;
  gap: 3px;
}
.gallery-item { overflow: hidden; background: var(--card); }
.gallery-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: brightness(0.85) saturate(0.9);
  transition: transform 0.6s ease, filter 0.4s ease;
}
.gallery-item:hover img { transform: scale(1.05); filter: brightness(1) saturate(1.1); }
.gallery-item:nth-child(1) { grid-column: span 5; }
.gallery-item:nth-child(2) { grid-column: span 4; }
.gallery-item:nth-child(3) { grid-column: span 3; }
.gallery-item:nth-child(4) { grid-column: span 3; }
.gallery-item:nth-child(5) { grid-column: span 4; }
.gallery-item:nth-child(6) { grid-column: span 5; }

/* Gallery page full grid */
.gallery-full { padding: 80px 24px; background: var(--black); }
.gallery-full-inner { max-width: var(--max); margin: 0 auto; }
.gallery-full-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 4px;
  margin-top: 48px;
}
.gallery-full-item {
  overflow: hidden;
  background: var(--card);
  aspect-ratio: 4/3;
  position: relative;
}
.gallery-full-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: brightness(0.85) saturate(0.9);
  transition: transform 0.6s ease, filter 0.4s ease;
}
.gallery-full-item:hover img { transform: scale(1.05); filter: brightness(1) saturate(1.1); }
.gallery-full-item.tall { grid-row: span 2; aspect-ratio: unset; }
.gallery-full-item.wide { grid-column: span 2; }

/* ── BRANDS ──────────────────────────────── */
.brands { padding: 56px 24px; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); background: var(--dark); }
.brands-inner { max-width: var(--max); margin: 0 auto; display: flex; flex-direction: column; align-items: center; gap: 32px; }
.brands-label { font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--muted); }
.brands-list { display: flex; gap: 48px; flex-wrap: wrap; justify-content: center; align-items: center; }
.brand-name { font-family: var(--ff-display); font-size: 1.2rem; font-weight: 600; color: var(--muted); letter-spacing: 0.1em; text-transform: uppercase; }

/* Utility text classes to replace inline styles */
.muted { color: var(--muted); }
.muted-sm { color: var(--muted); font-size: 13px; line-height: 1.6; }
.muted-lead { color: var(--muted); font-size: 14px; line-height: 1.7; max-width: 560px; }
.contact-gold { color: var(--gold-lt); }
.small-link { font-size: 11px; }
.gold-dk-text { color: var(--gold-dk); }

/* ── TESTIMONIALS ────────────────────────── */
.testimonials { padding: 100px 24px; background: var(--black); border-top: 1px solid var(--border); }
.testimonials-inner { max-width: var(--max); margin: 0 auto; }
.testimonials-header { margin-bottom: 56px; }
.reviews-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.reviews-grid--2 { grid-template-columns: repeat(2, 1fr); max-width: 860px; margin: 0 auto; }
.review-card { background: var(--card); border: 1px solid var(--border); padding: 36px 32px; position: relative; }
.review-stars { color: var(--gold); font-size: 14px; letter-spacing: 3px; margin-bottom: 20px; }
.review-text { font-family: var(--ff-display); font-size: 1.05rem; font-weight: 300; font-style: italic; color: var(--cream); line-height: 1.65; margin-bottom: 24px; }
.review-author { font-size: 12px; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase; color: var(--gold); }
.review-platform { font-size: 11px; color: var(--muted); margin-top: 4px; }
.review-quote { position: absolute; top: 24px; right: 28px; font-family: var(--ff-display); font-size: 5rem; line-height: 1; color: var(--border); font-weight: 600; }

/* ── LOCATION ────────────────────────────── */
.location { padding: 100px 24px; background: var(--dark); border-top: 1px solid var(--border); }
.location-inner { max-width: var(--max); margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: start; }
.location-info { display: flex; flex-direction: column; gap: 32px; }
.location-detail { display: flex; gap: 16px; align-items: flex-start; }
.location-icon { width: 36px; height: 36px; border: 1px solid var(--gold-dk); display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 2px; }
.location-icon svg { stroke: var(--gold); }
.location-detail-text strong { display: block; font-size: 12px; font-weight: 500; letter-spacing: 0.15em; text-transform: uppercase; color: var(--gold); margin-bottom: 6px; }
.location-detail-text p { font-size: 14px; color: rgba(245,240,232,0.7); line-height: 1.6; }
.map-container { position: relative; border: 1px solid var(--border); overflow: hidden; }
.map-container iframe { display: block; width: 100%; height: 380px; filter: grayscale(40%); }

/* ── FAQ ─────────────────────────────────── */
.faq { padding: 100px 24px; background: var(--black); border-top: 1px solid var(--border); }
.faq-inner { max-width: 760px; margin: 0 auto; }
.faq-header { margin-bottom: 56px; }
.faq-item { border-bottom: 1px solid var(--border); }
.faq-question {
  width: 100%;
  background: none;
  border: none;
  color: var(--cream);
  font-family: var(--ff-body);
  font-size: 15px;
  font-weight: 400;
  text-align: left;
  padding: 24px 0;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  transition: color var(--transition);
}
.faq-question:hover { color: var(--gold); }
.faq-icon {
  width: 20px; height: 20px;
  flex-shrink: 0;
  border: 1px solid var(--gold-dk);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform var(--transition), background var(--transition);
}
.faq-item.open .faq-icon { transform: rotate(45deg); background: var(--gold); border-color: var(--gold); }
.faq-icon svg { stroke: var(--gold); transition: stroke var(--transition); }
.faq-item.open .faq-icon svg { stroke: var(--black); }
.faq-answer { display: none; padding-bottom: 24px; font-size: 14px; color: rgba(245,240,232,0.65); line-height: 1.8; max-width: 640px; }
.faq-item.open .faq-answer { display: block; }

/* ── CTA BANNER ──────────────────────────── */
.cta-banner { position: relative; padding: 100px 24px; overflow: hidden; text-align: center; }
.cta-banner-bg {
  position: absolute;
  inset: 0;
  background-image: url('/img/salon-gallery-5.webp');
  background-size: cover;
  background-position: center;
  filter: brightness(0.25);
}
.cta-banner-content { position: relative; z-index: 2; max-width: 600px; margin: 0 auto; }
.cta-banner-content .section-label { justify-content: center; display: block; }
.cta-banner .section-title { color: var(--white); margin-bottom: 20px; }
.cta-banner p { font-size: 15px; color: rgba(245,240,232,0.7); margin-bottom: 40px; }
.cta-actions { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; }

/* Flex reverse utility for alternating layouts */
.flex-row-reverse { flex-direction: row-reverse; }

/* ── ABOUT PAGE ──────────────────────────── */
.about-intro { padding: 80px 24px; background: var(--black); }
.about-intro-inner {
  max-width: var(--max);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 80px;
  align-items: center;
}
.about-intro-img {
  position: relative;
  overflow: hidden;
  aspect-ratio: 4/5;
}
.about-intro-img img { width: 100%; height: 100%; object-fit: cover; filter: brightness(0.9) saturate(0.85); }
.about-intro-img::after {
  content: '';
  position: absolute;
  inset: 0;
  border: 1px solid rgba(201,168,76,0.2);
  pointer-events: none;
}
.about-intro-text { display: flex; flex-direction: column; gap: 20px; }
.about-intro-text p { font-size: 15px; color: rgba(245,240,232,0.75); line-height: 1.85; }
.about-intro-text p.lead { font-family: var(--ff-display); font-size: 1.35rem; font-weight: 300; color: var(--cream); line-height: 1.55; font-style: italic; }

.about-values { padding: 80px 24px; background: var(--dark); border-top: 1px solid var(--border); }
.about-values-inner { max-width: var(--max); margin: 0 auto; }
.values-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; margin-top: 48px; }
.value-card {
  background: var(--card);
  padding: 40px 32px;
  border: 1px solid var(--border);
  transition: border-color var(--transition);
}
.value-card:hover { border-color: rgba(201,168,76,0.3); }
.value-icon { width: 40px; height: 40px; border: 1px solid var(--gold-dk); display: flex; align-items: center; justify-content: center; margin-bottom: 24px; }
.value-icon svg { stroke: var(--gold); }
.value-title { font-family: var(--ff-display); font-size: 1.3rem; font-weight: 400; color: var(--cream); margin-bottom: 12px; }
.value-desc { font-size: 13px; color: var(--muted); line-height: 1.7; }

/* ── CONTACT PAGE ────────────────────────── */
.contact-section { padding: 80px 24px; background: var(--black); }
.contact-inner {
  max-width: var(--max);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: 72px;
  align-items: start;
}
.contact-info { display: flex; flex-direction: column; gap: 32px; }
.contact-form-wrap {
  background: var(--card);
  border: 1px solid var(--border);
  padding: 48px 40px;
}
.contact-form-wrap h3 {
  font-family: var(--ff-display);
  font-size: 1.6rem;
  font-weight: 300;
  color: var(--cream);
  margin-bottom: 32px;
}
.form-group { margin-bottom: 20px; }
.form-group label {
  display: block;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 8px;
}
.form-group input,
.form-group select,
.form-group textarea {
  width: 100%;
  background: var(--black);
  border: 1px solid var(--border);
  color: var(--cream);
  font-family: var(--ff-body);
  font-size: 14px;
  font-weight: 300;
  padding: 13px 16px;
  transition: border-color var(--transition);
  outline: none;
  -webkit-appearance: none;
}
.form-group select { cursor: pointer; }
.form-group textarea { resize: vertical; min-height: 120px; }
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus { border-color: var(--gold); }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.form-submit { width: 100%; margin-top: 8px; }

/* ── FOOTER ──────────────────────────────── */
footer { background: var(--dark); border-top: 1px solid var(--border); padding: 64px 24px 32px; }
.footer-inner { max-width: var(--max); margin: 0 auto; }
.footer-top { display: grid; grid-template-columns: 1.8fr 1fr 1fr 1fr; gap: 48px; margin-bottom: 56px; }
.footer-brand .nav-logo { display: block; margin-bottom: 16px; font-size: 2rem; }
.footer-brand p { font-size: 13px; color: var(--muted); line-height: 1.7; max-width: 260px; }
.footer-col h4 { font-size: 11px; font-weight: 500; letter-spacing: 0.2em; text-transform: uppercase; color: var(--gold); margin-bottom: 20px; }
.footer-col ul { display: flex; flex-direction: column; gap: 10px; }
.footer-col ul li { font-size: 13px; color: var(--muted); }
.footer-col ul li a { font-size: 13px; color: var(--muted); transition: color var(--transition); }
.footer-col ul li a:hover { color: var(--cream); }
.footer-social { display: flex; gap: 12px; margin-top: 20px; }
.social-link { width: 36px; height: 36px; border: 1px solid var(--border); display: flex; align-items: center; justify-content: center; transition: border-color var(--transition), background var(--transition); }
.social-link:hover { border-color: var(--gold); background: rgba(201,168,76,0.1); }
.social-link svg { stroke: var(--muted); transition: stroke var(--transition); }
.social-link:hover svg { stroke: var(--gold); }
.social-link i { color: var(--muted); font-size: 16px; line-height: 1; transition: color var(--transition); }
.social-link:hover i { color: var(--gold); }
.footer-bottom { border-top: 1px solid var(--border); padding-top: 28px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; }
.footer-bottom p { font-size: 12px; color: var(--muted); }

/* ── STICKY CTA (mobile) ─────────────────── */
.sticky-cta {
  display: none;
  position: fixed;
  bottom: 0; left: 0; right: 0;
  z-index: 90;
  background: var(--dark);
  border-top: 1px solid var(--border);
  padding: 12px 16px;
  gap: 10px;
}
.sticky-cta a { flex: 1; display: flex; align-items: center; justify-content: center; gap: 7px; padding: 13px; font-size: 12px; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase; }
.sticky-cta a i { font-size: 15px; line-height: 1; }
.sticky-call { border: 1px solid var(--gold); color: var(--gold); flex: 0.85; }
.sticky-book { background: var(--gold); color: var(--black); flex: 1.3; }
.sticky-call-icon { flex: 0 0 44px !important; padding: 0; }
.sticky-call-icon i { font-size: 19px; }

/* 3-button sticky rows (Book + WhatsApp + icon-only Call) need a tighter fit
   than the 2-button rows above, or "Book Instantly"/"WhatsApp Us" wrap to 2 lines */
.sticky-cta:has(.sticky-call-icon) a:not(.sticky-call-icon) {
  padding: 12px 4px;
  font-size: 10px;
  letter-spacing: 0.04em;
}
.sticky-cta:has(.sticky-call-icon) a:not(.sticky-call-icon) i { font-size: 13px; }

/* Icon + text spacing on non-flex CTA buttons (hero, nav, mid-page banners) */
.btn i, .nav-book i { margin-right: 7px; font-size: 13px; vertical-align: -2px; }

/* ── ANIMATIONS ──────────────────────────── */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.reveal {
  opacity: 0;
  transform: translateY(32px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal.visible { opacity: 1; transform: translateY(0); }

/* ── OCCASIONS PAGE ──────────────────────── */
.occasion-section { padding: 100px 24px; background: var(--black); }
.occasion-section-inner { max-width: var(--max); margin: 0 auto; }
.occasion-cluster { margin-top: 96px; }
.occasion-cluster:first-child { margin-top: 8px; }
.occasion-cluster-head { display: flex; align-items: baseline; gap: 18px; margin-bottom: 32px; }
.occasion-cluster-num {
  font-family: var(--ff-display);
  font-size: 1.1rem;
  font-weight: 300;
  font-style: italic;
  color: var(--gold-dk);
  flex-shrink: 0;
}
.occasion-cluster-label {
  font-family: var(--ff-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--gold);
}
.occasion-cluster-head::after { content: ""; flex-grow: 1; height: 1px; background: var(--border); }

/* Hero cards: always full-width horizontal banners, never a multi-column
   grid — a 2-col grid orphans a lone hero into empty space whenever a
   cluster has an odd count, which is most of them. Double-bezel framing
   (outer shell + inset inner border) per high-end-visual-design, kept
   sharp-edged (no border-radius) to match the site's existing geometry
   instead of that skill's default rounded squircles. */
.occasion-hero { margin-bottom: 28px; }
.occasion-hero-shell {
  background: rgba(201,168,76,0.04);
  border: 1px solid var(--border);
  padding: 6px;
}
.occasion-hero-card {
  display: grid;
  grid-template-columns: 42% 58%;
  min-height: 380px;
  background: var(--card);
  box-shadow: inset 0 0 0 1px rgba(201,168,76,0.08);
}
.occasion-hero-media { background-size: cover; background-position: center; }
.occasion-hero-content { padding: 56px 56px; display: flex; flex-direction: column; justify-content: center; gap: 16px; }
.occasion-hero-icon { font-size: 20px; color: var(--gold); margin-bottom: 4px; }
.occasion-hero-title { font-family: var(--ff-display); font-size: clamp(1.7rem, 2.6vw, 2.3rem); font-weight: 300; color: var(--cream); }
.occasion-hero-desc { font-size: 14.5px; color: var(--muted); line-height: 1.85; max-width: 46em; }
.occasion-hero-links { font-size: 11px; color: rgba(245,240,232,0.5); line-height: 1.7; }
.occasion-hero-links a { color: var(--gold); }
.occasion-hero-links a:hover { text-decoration: underline; }
.occasion-hero-btn { margin-top: 8px; align-self: flex-start; }

/* Compact occasions: a divided editorial list, not a bordered-tile grid.
   Reads like a treatment menu; avoids repeating the same bordered-box
   pattern 13 times. */
.occasion-list { border-top: 1px solid var(--border); }
.occasion-row {
  display: grid;
  grid-template-columns: 32px 1fr auto;
  gap: 28px;
  align-items: center;
  padding: 30px 4px;
  border-bottom: 1px solid var(--border);
  transition: background var(--transition);
}
.occasion-row:hover { background: rgba(201,168,76,0.03); }
.occasion-row-icon { font-size: 19px; color: var(--gold-dk); transition: color var(--transition); }
.occasion-row:hover .occasion-row-icon { color: var(--gold); }
.occasion-row-title { font-family: var(--ff-display); font-size: 1.2rem; font-weight: 400; color: var(--cream); margin-bottom: 6px; }
.occasion-row-desc { font-size: 13px; color: var(--muted); line-height: 1.7; margin-bottom: 8px; max-width: 46em; }
.occasion-row-links { font-size: 11px; color: rgba(245,240,232,0.5); line-height: 1.6; }
.occasion-row-links a { color: var(--gold); }
.occasion-row-links a:hover { text-decoration: underline; }
.occasion-row-btn {
  display: inline-flex;
  align-items: center;
  padding: 11px 24px;
  font-family: var(--ff-body);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  border: 1px solid var(--gold);
  color: var(--gold);
  background: transparent;
  transition: var(--transition);
  white-space: nowrap;
}
.occasion-row-btn:hover { background: var(--gold); color: var(--black); }
.occasion-row-btn i { margin-right: 6px; font-size: 12px; }

/* ── RESPONSIVE ──────────────────────────── */
@media (max-width: 1024px) {
  .featured-list { grid-template-columns: repeat(2, 1fr); }
  .reviews-grid  { grid-template-columns: repeat(2, 1fr); }
  .footer-top    { grid-template-columns: 1fr 1fr; }
  .location-inner { grid-template-columns: 1fr; gap: 48px; }
  .about-intro-inner { grid-template-columns: 1fr; gap: 48px; }
  .about-intro-img { aspect-ratio: 16/9; }
  .contact-inner { grid-template-columns: 1fr; gap: 48px; }
  .service-two-col { grid-template-columns: 1fr; gap: 48px; }
  .values-grid { grid-template-columns: repeat(2, 1fr); }
  .occasion-hero-card { grid-template-columns: 38% 62%; min-height: 320px; }
  .occasion-hero-content { padding: 40px; }
  .occasion-row { grid-template-columns: 28px 1fr auto; gap: 20px; }
  .gallery-full-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
  .hero-bg { background-image: url('/img/salon-gallery-1.webp'); }
  /* Shorter than 100vh so the trust bar peeks above the fold; min-height must drop
     with it or a short phone screen overrides the vh value entirely. */
  .hero { height: 82vh; min-height: 560px; }
  .about-difference-teaser { padding: 56px 24px; }
  .hero-content { padding-top: 20px; } /* .hero already vertically centers content on tall phone screens; the desktop-sized 72px nav clearance just pushes text down further and leaves too much empty space above it */
  .nav-links { display: none; }
  .nav-hamburger { display: flex; }
  .trust-divider { display: none; }
  .services-grid { grid-template-columns: 1fr 1fr; }
  /* .large drops its desktop 2-row span on mobile; without an aspect-ratio its height
     would come from the image's 909x515 ratio, which is too short for the absolutely
     positioned card body once the CTA line is included (tag clipped at 320px). */
  .service-card.large { grid-row: span 1; aspect-ratio: 4/3; }
  /* The CTA line now carries the tap affordance on touch, so the corner badge is
     redundant; hover never fires on mobile to differentiate them anyway. */
  .service-card-arrow { display: none; }
  .featured-list { grid-template-columns: 1fr; }
  .gallery-grid { grid-template-columns: 1fr 1fr; grid-template-rows: auto; }
  .gallery-item { grid-column: span 1 !important; aspect-ratio: 1; }
  .reviews-grid  { grid-template-columns: 1fr; }
  .footer-top    { grid-template-columns: 1fr 1fr; }
  .sticky-cta    { display: flex; }
  .hero-cta-row  { display: none; }
  .hero-actions  { display: none; } /* homepage hero: mobile uses the sticky bar instead, avoids duplicate CTAs */
  .hero-jump     { display: inline-block; }
  footer         { padding-bottom: 80px; }
  .cta-actions   { flex-direction: column; align-items: center; }
  .values-grid   { grid-template-columns: 1fr; }
  .occasion-cluster { margin-top: 64px; }
  .occasion-hero-shell { padding: 4px; }
  .occasion-hero-card { grid-template-columns: 1fr; min-height: 0; }
  .occasion-hero-media { aspect-ratio: 16/10; }
  .occasion-hero-content { padding: 32px 28px; }
  .occasion-row { grid-template-columns: 1fr; row-gap: 14px; padding: 26px 4px; }
  .occasion-row-icon { display: none; }
  .occasion-row-btn { justify-self: flex-start; }
  .gallery-full-grid { grid-template-columns: 1fr 1fr; }
  .gallery-full-item.wide { grid-column: span 1; }
  .gallery-full-item.tall { grid-row: span 1; aspect-ratio: 1; }
  .contact-form-wrap { padding: 32px 24px; }
  .form-row { grid-template-columns: 1fr; }
  .tier-grid, .tier-grid-3 { grid-template-columns: 1fr; }
  .compare-table-wrap { -webkit-overflow-scrolling: touch; }
}
@media (max-width: 480px) {
  .services-grid { grid-template-columns: 1fr; }
  .footer-top    { grid-template-columns: 1fr; }
  .gallery-full-grid { grid-template-columns: 1fr; }
}

/* ── BEFORE YOU BOOK (quiz tool, /before-you-book/) ──────────────────
   All selectors are namespaced `.byb-*` and are used on that page only.
   Nothing above this block is modified, so a visual iteration here carries
   zero cross-page risk. See docs/briefs/brief-before-you-book.md §5.2.
   z-index stays inside the existing site scale (2 / 90 / 99 / 100).
──────────────────────────────────────────────────────────────────────── */

.byb-wrap { max-width: 720px; margin: 0 auto; padding: 0 24px; }

/* The navbar is fixed, so anything scrolled to by anchor or by scrollIntoView
   needs clearance or its top hides underneath. Belt and braces alongside
   ensureBelowNav() in js/before-you-book.js. */
.byb-card, #bybRead, #bybFallback { scroll-margin-top: 96px; }

.byb-card {
  background: var(--card);
  border: 1px solid var(--border);
  padding: 40px;
  /* Reserved height so advancing a question never shifts the page (CLS). */
  min-height: 420px;
  display: flex;
  flex-direction: column;
  /* Stops a swipe inside the card triggering pull-to-refresh mid-quiz. */
  overscroll-behavior: contain;
}
.byb-card:focus { outline: none; }
.byb-card:focus-visible { outline: 2px solid var(--gold); outline-offset: 4px; }

/* Entering: ease-out. Leaving: ease-in, and faster. */
.byb-card { animation: bybIn 200ms cubic-bezier(0, 0, 0.2, 1); }
.byb-card.byb-leaving { animation: bybOut 150ms cubic-bezier(0.4, 0, 1, 1) forwards; }
@keyframes bybIn  { from { opacity: 0; transform: translateX(12px); } to { opacity: 1; transform: none; } }
@keyframes bybOut { from { opacity: 1; transform: none; } to { opacity: 0; transform: translateX(-12px); } }

/* ── Intro ── */
.byb-intro-title {
  font-family: var(--ff-display);
  font-size: 34px;
  font-weight: 400;
  line-height: 1.25;
  margin-bottom: 18px;
}
.byb-intro-lede { color: var(--muted); margin-bottom: 28px; }
.byb-start { align-self: flex-start; }
.byb-intro-note {
  margin-top: 20px;
  font-size: 13px;
  color: var(--gold-dk);
  line-height: 1.6;
}

/* ── Progress ── */
.byb-progress { margin-bottom: 28px; }
.byb-progress-text {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 10px;
}
.byb-progress-track { height: 2px; background: var(--border); width: 100%; }
.byb-progress-fill {
  display: block;
  height: 100%;
  background: var(--gold);
  transition: width 200ms cubic-bezier(0, 0, 0.2, 1);
}

/* ── Question ── */
.byb-fieldset { border: 0; padding: 0; margin: 0; }
.byb-legend {
  font-family: var(--ff-display);
  font-size: 29px;
  font-weight: 400;
  line-height: 1.3;
  color: var(--cream);
  padding: 0;
  margin-bottom: 8px;
}
.byb-help { font-size: 14px; color: var(--gold-dk); margin-bottom: 24px; }
.byb-legend + .byb-options { margin-top: 24px; }
.byb-options { display: flex; flex-direction: column; gap: 12px; }

.byb-option { position: relative; }
/* The radio stays in the accessibility tree and keeps keyboard behaviour;
   it is the label that is painted. Never display:none, which would remove it
   from tab order entirely. */
.byb-radio {
  position: absolute;
  opacity: 0;
  width: 1px; height: 1px;
  margin: 0;
}
.byb-option-label {
  display: flex;
  align-items: center;
  gap: 14px;
  min-height: 56px;              /* well past the 44px minimum */
  padding: 14px 18px;
  background: var(--dark);
  border: 1px solid var(--border);
  color: var(--cream);
  font-size: 15px;
  line-height: 1.45;
  cursor: pointer;
  transition: border-color 200ms ease-out, background 200ms ease-out;
}
.byb-option-label i { color: var(--gold); font-size: 20px; flex: none; }
.byb-option-text { display: flex; flex-direction: column; }
.byb-option-sub {
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--gold-dk);
  margin-top: 3px;
}
/* Hover is an enhancement only; nothing depends on it. */
.byb-option-label:hover { border-color: var(--gold-dk); background: #1c1c1c; }
.byb-option-label:active { background: #202020; }
.byb-radio:focus-visible + .byb-option-label {
  outline: 2px solid var(--gold);
  outline-offset: 2px;
}
.byb-radio:checked + .byb-option-label {
  border-color: var(--gold);
  background: #1f1c14;
}

/* ── Back / restart ── */
.byb-back, .byb-restart {
  margin-top: auto;
  padding-top: 26px;
  background: none;
  border: none;
  color: var(--gold-dk);
  font-family: var(--ff-body);
  font-size: 13px;
  letter-spacing: 0.1em;
  cursor: pointer;
  align-self: flex-start;
  transition: color 200ms ease-out;
}
.byb-back i { margin-right: 6px; vertical-align: -1px; }
.byb-back:hover, .byb-restart:hover { color: var(--gold); }
.byb-back:focus-visible, .byb-restart:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 3px;
}
.byb-result-foot {
  margin-top: auto;
  display: flex;
  gap: 28px;
  align-items: baseline;
  flex-wrap: wrap;
}
.byb-result-foot .byb-back, .byb-result-foot .byb-restart { margin-top: 0; }

/* ── Result: the visitor's own answers, shown before the recommendation ── */
.byb-recap {
  border-left: 1px solid var(--gold-dk);
  padding-left: 16px;
  margin-bottom: 24px;
}
.byb-recap-label {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--gold-dk);
  margin-bottom: 6px;
}
.byb-recap-text {
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--muted);
}

/* ── Result ── */
.byb-result-title {
  font-family: var(--ff-display);
  font-size: 33px;
  font-weight: 400;
  line-height: 1.25;
  margin-bottom: 12px;
}
.byb-result-price {
  color: var(--gold);
  font-size: 15px;
  letter-spacing: 0.04em;
  margin-bottom: 22px;
}
.byb-result-why { margin-bottom: 22px; }
.byb-result-next { color: var(--muted); margin-bottom: 26px; }

/* The costly signal. Set apart so it reads as an admission, not body copy. */
.byb-aside {
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  padding: 20px 0;
  margin-bottom: 24px;
}
.byb-aside p {
  font-family: var(--ff-display);
  font-size: 19px;
  font-style: italic;
  line-height: 1.5;
  color: var(--gold-lt);
}

.byb-result-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 22px;
}
.byb-result-actions .btn { text-align: center; }
.byb-result-caveat {
  font-size: 13px;
  color: var(--gold-dk);
  line-height: 1.6;
  margin-bottom: 26px;
}

/* ── No-JS fallback ── */
.byb-fallback { background: var(--card); border: 1px solid var(--border); padding: 32px; }
.byb-fallback h2 { font-family: var(--ff-display); font-size: 25px; font-weight: 400; margin-bottom: 12px; }
.byb-fallback p { color: var(--muted); margin-bottom: 16px; }

/* ── Entry block, used on the five hair pages ── */
.byb-entry {
  background: var(--card);
  border: 1px solid var(--border);
  border-left: 2px solid var(--gold);
  padding: 28px 30px;
  margin: 40px 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}
.byb-entry-copy h3 {
  font-family: var(--ff-display);
  font-size: 23px;
  font-weight: 400;
  margin-bottom: 6px;
}
.byb-entry-copy p { color: var(--muted); font-size: 15px; max-width: 52ch; }
.byb-entry .btn { flex: none; }

/* ── Static prose section ── */
.byb-read-item { border-top: 1px solid var(--border); padding: 24px 0; }
.byb-read-item:last-child { border-bottom: 1px solid var(--border); }
.byb-read-item h3 {
  font-family: var(--ff-display);
  font-size: 22px;
  font-weight: 400;
  margin-bottom: 4px;
}
.byb-read-price {
  color: var(--gold);
  font-size: 13px;
  letter-spacing: 0.04em;
  margin-bottom: 10px;
}
.byb-read-item p { color: var(--muted); }
.byb-read-item a { color: var(--gold); text-decoration: underline; text-underline-offset: 3px; }

/* ── Responsive ── */
@media (max-width: 768px) {
  .byb-wrap { padding: 0 20px; }
  .byb-card { padding: 28px 22px; min-height: 400px; }
  .byb-legend { font-size: 25px; }
  .byb-intro-title { font-size: 28px; }
  .byb-result-title { font-size: 27px; }
  .byb-aside p { font-size: 17px; }
  .byb-result-actions .btn { width: 100%; }
  .byb-entry { flex-direction: column; align-items: flex-start; }
  .byb-entry .btn { width: 100%; text-align: center; }
}
@media (max-width: 480px) {
  .byb-card { padding: 24px 18px; }
  .byb-legend { font-size: 23px; }
  .byb-option-label { font-size: 14.5px; padding: 13px 15px; }
}

/* Motion conveys direction, but never at the cost of accessibility. */
@media (prefers-reduced-motion: reduce) {
  .byb-card, .byb-card.byb-leaving { animation: none; }
  .byb-progress-fill, .byb-option-label, .byb-back, .byb-restart { transition: none; }
}

/* ICON-SUBSET:START (auto-generated, see scripts/build-icon-subset.py) */
/* RemixIcon 4.3.0, subset to the 23 icon classes
   actually used on the site (replaces the jsdelivr-hosted webfont).
   Regenerate with `python3 scripts/build-icon-subset.py` after adding
   any new ri-* class to any HTML file, or the new icon renders as a
   blank box. Do not hand-edit this block. */
@font-face {
  font-family: "remixicon";
  font-style: normal;
  font-weight: 400;
  font-display: block;
  src: url(data:font/woff2;base64,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) format("woff2");
}
[class^="ri-"], [class*=" ri-"] {
  font-family: 'remixicon' !important;
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.ri-award-line:before { content: "\ea8a"; }
.ri-briefcase-line:before { content: "\eaf5"; }
.ri-cake-2-line:before { content: "\eb19"; }
.ri-calendar-check-line:before { content: "\eb23"; }
.ri-contacts-line:before { content: "\ebd2"; }
.ri-facebook-line:before { content: "\ecbd"; }
.ri-group-line:before { content: "\ede3"; }
.ri-heart-3-line:before { content: "\ee0b"; }
.ri-heart-line:before { content: "\ee0f"; }
.ri-home-smile-2-line:before { content: "\ee2d"; }
.ri-instagram-line:before { content: "\ee66"; }
.ri-line-chart-line:before { content: "\eeab"; }
.ri-parent-line:before { content: "\efca"; }
.ri-passport-line:before { content: "\efd2"; }
.ri-phone-line:before { content: "\efec"; }
.ri-plant-line:before { content: "\f007"; }
.ri-presentation-line:before { content: "\f350"; }
.ri-restaurant-line:before { content: "\f084"; }
.ri-sparkling-2-line:before { content: "\f36b"; }
.ri-star-fill:before { content: "\f186"; }
.ri-team-line:before { content: "\f1ee"; }
.ri-user-star-line:before { content: "\f276"; }
.ri-whatsapp-line:before { content: "\f2bc"; }
/* ICON-SUBSET:END */
