/* ============================================
   Astrolaabh · Buy - product detail + configurator
   Self-contained: own tokens, header, gallery, drawers.
   ============================================ */
:root {
  --bone: #f1efe8;
  --paper: #f6f4ec;
  --ink-dark: #20251a;
  --ink: #ece7da;
  --gold: #a1793a;
  --gold-bright: #c9a24b;
  --sage: #5b634a;
  --madder: #b23a2a;
  --hair: rgba(32, 37, 26, 0.12);
  --hair-gold: rgba(161, 121, 58, 0.28);
  --font-display: "Sesbania", "Manrope", "Avenir Next", -apple-system, sans-serif;
  --font-ui: "Geist", "Avenir Next", -apple-system, sans-serif;
  --pad-x: clamp(1.25rem, 5vw, 4.5rem);
  --nav-h: 74px;
  --bar-h: 112px;
  --ease: cubic-bezier(0.16, 1, 0.3, 1);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--bone);
  color: var(--ink-dark);
  font-family: var(--font-ui);
  font-weight: 400;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
img { display: block; max-width: 100%; }
a { color: inherit; }


/* ============ Page frame - full-bleed editorial split ============ */
.buy-page { padding: 0; }
.buy-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.04fr) minmax(0, 0.96fr);
  align-items: start;
}

/* Breadcrumbs + back (top of the right column) */
.buy-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: clamp(1.25rem, 3vh, 2rem);
}
/* Buy as a gift — subtle frosted pill, top-right of the configurator */
.gift-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  flex: none;
  padding: 0.5rem 1.1rem;
  border-radius: 999px;
  border: 1px solid var(--hair-gold);
  background: rgba(246, 244, 236, 0.7);
  color: var(--ink-dark);
  font-family: var(--font-ui);
  font-size: 0.8125rem;
  font-weight: 400;
  cursor: pointer;
  transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.buy-top-actions { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; }
/* design-library context chip */
.buy-design-chip {
  border-color: rgba(91, 99, 74, 0.4) !important;
  background: rgba(91, 99, 74, 0.08) !important;
  color: var(--sage) !important;
}
.buy-design-chip i { color: var(--sage) !important; }
.buy-design-chip:hover { border-color: var(--sage) !important; background: rgba(91, 99, 74, 0.14) !important; }
.gift-btn { text-decoration: none; }
.gift-btn i { font-size: 1rem; color: var(--gold); }
.gift-btn:hover { border-color: var(--gold); background: rgba(201, 162, 75, 0.08); }
.gift-btn[aria-pressed="true"] {
  background: var(--sage);
  border-color: var(--sage);
  color: var(--bone);
}
.gift-btn[aria-pressed="true"] i { color: var(--gold-bright); }

/* Gift note reveal - appears once "Buy as a gift" is on */
.gift-panel {
  margin: 0 0 1.15rem;
  padding: 0.9rem 1rem 1rem;
  border: 1px solid var(--hair-gold);
  border-radius: 12px;
  background: linear-gradient(160deg, rgba(201, 162, 75, 0.07), rgba(201, 162, 75, 0.02));
}
.gift-panel[hidden] { display: none; }
.gift-panel .cf-field { margin-bottom: 0.5rem; }
.gift-panel-hint {
  display: flex;
  align-items: flex-start;
  gap: 0.45rem;
  margin: 0;
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.76rem;
  line-height: 1.5;
  color: rgba(32, 37, 26, 0.68);
}
.gift-panel-hint i { color: var(--gold); font-size: 0.95rem; margin-top: 0.1rem; flex: none; }

/* Quiet business/bulk affordance under the steps */
.bulk-hint {
  margin: 0.9rem 0 0;
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.78rem;
  line-height: 1.5;
  color: rgba(32, 37, 26, 0.55);
}
.bulk-hint a { color: var(--gold); text-decoration: underline; text-underline-offset: 2px; }
.bulk-hint a:hover { color: var(--gold-bright); }

/* Small inline "what does this mean" tooltip, used next to jargon (ratti, loose/set, energisation) */
.info-ic {
  display: inline-grid;
  place-items: center;
  width: 18px;
  height: 18px;
  margin-left: 0.3rem;
  border-radius: 50%;
  border: 1px solid var(--hair-gold);
  background: rgba(201, 162, 75, 0.08);
  color: var(--gold);
  font-family: var(--font-display);
  font-style: italic;
  font-size: 0.7rem;
  line-height: 1;
  padding: 0;
  cursor: help;
  position: relative;
  vertical-align: middle;
  transition: background 0.2s ease, color 0.2s ease;
}
.info-ic:hover, .info-ic:focus-visible {
  background: var(--gold);
  color: #fff;
  outline: none;
}
.info-ic::after {
  content: attr(data-tip);
  position: absolute;
  left: 50%;
  bottom: calc(100% + 8px);
  transform: translateX(-50%) translateY(4px);
  width: max-content;
  max-width: 230px;
  padding: 0.6rem 0.75rem;
  border-radius: 10px;
  background: var(--ink-dark);
  color: var(--bone);
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.72rem;
  line-height: 1.45;
  text-align: left;
  white-space: normal;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  box-shadow: 0 14px 30px -14px rgba(20, 24, 16, 0.5);
  transition: opacity 0.2s var(--ease), transform 0.2s var(--ease);
  z-index: 5;
}
.info-ic:hover::after,
.info-ic:focus-visible::after {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(0);
}

/* Combined back + breadcrumb: subtle, clean, single component */
.buy-crumb {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  min-width: 0;
}
.buy-crumb-back {
  flex: none;
  display: inline-grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 1px solid var(--hair);
  color: var(--ink-dark);
  text-decoration: none;
  transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease, transform 0.2s ease;
}
.buy-crumb-back i { font-size: 0.95rem; }
.buy-crumb-back:hover {
  border-color: var(--gold);
  color: var(--gold);
  background: rgba(201, 162, 75, 0.07);
}
.buy-crumb-back:active { transform: translateX(-1px); }
.buy-crumb-trail {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.55rem;
  min-width: 0;
  font-family: var(--font-ui);
  font-size: 0.8125rem;
  font-weight: 300;
  letter-spacing: 0.02em;
  color: rgba(32, 37, 26, 0.55);
}
.buy-crumb-trail li { display: inline-flex; align-items: center; gap: 0.55rem; }
.buy-crumb-trail li + li::before {
  content: "\203A";
  color: rgba(32, 37, 26, 0.32);
}
.buy-crumb-trail a { text-decoration: none; color: rgba(32, 37, 26, 0.55); transition: color 0.2s ease; }
.buy-crumb-trail a:hover { color: var(--gold); }
.buy-crumb-trail [aria-current="page"] { color: var(--ink-dark); }

/* breadcrumb overlaid on the dark stone image (old "back to catalogue" spot) */
.stage-crumb {
  position: absolute;
  left: clamp(1rem, 2vw, 2rem);
  top: clamp(1rem, 2.5vh, 2rem);
  z-index: 2;
  gap: 0.55rem;
}
.stage-crumb .buy-crumb-back {
  border-color: rgba(246, 244, 236, 0.4);
  background: rgba(20, 24, 16, 0.32);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  color: var(--bone);
}
.stage-crumb .buy-crumb-back:hover {
  border-color: rgba(246, 244, 236, 0.65);
  background: rgba(20, 24, 16, 0.5);
  color: #fff;
}
.stage-crumb .buy-crumb-trail {
  padding: 0.42rem 0.9rem;
  border-radius: 999px;
  border: 1px solid rgba(246, 244, 236, 0.35);
  background: rgba(20, 24, 16, 0.32);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  color: rgba(246, 244, 236, 0.85);
}
.stage-crumb .buy-crumb-trail a { color: rgba(246, 244, 236, 0.8); }
.stage-crumb .buy-crumb-trail a:hover { color: #fff; }
.stage-crumb .buy-crumb-trail li + li::before { color: rgba(246, 244, 236, 0.45); }
.stage-crumb .buy-crumb-trail [aria-current="page"] { color: #fff; }

/* right column top: title block on the left, actions aligned to its top */
.config-topbar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: clamp(1rem, 2vw, 2rem);
  flex-wrap: nowrap;
  margin-bottom: clamp(1rem, 2vh, 1.4rem);
  padding-bottom: clamp(0.9rem, 1.8vh, 1.25rem);
  border-bottom: 1px solid var(--hair);
}
.config-topbar .config-head {
  flex: 1 1 auto;
  min-width: 0;
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: 0;
}
/* actions pinned to the top-right corner, in line with the title */
.config-topbar .buy-top-actions { flex: none; justify-content: flex-end; }
@media (max-width: 720px) {
  .config-topbar { flex-wrap: wrap; }
}
.back-link {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-family: var(--font-ui);
  font-size: 0.8125rem;
  color: var(--ink-dark);
  text-decoration: none;
  padding-bottom: 0.2rem;
  border-bottom: 1px solid var(--hair);
  transition: color 0.2s ease, border-color 0.2s ease;
}
.back-link i { font-size: 0.85em; color: var(--gold); }
.back-link:hover { color: var(--gold); border-color: var(--gold); }

/* ============ Left: full-bleed immersive media ============ */
.buy-gallery {
  position: sticky;
  top: var(--nav-h);
  /* fit within the viewport above the fixed purchase bar so the thumbnail
     row is fully visible and the page needs no scrolling */
  height: calc(100dvh - var(--nav-h) - var(--bar-h));
  min-height: 420px;
}
.stage {
  position: relative;
  margin: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background:
    radial-gradient(110% 70% at 50% 22%, var(--glow, rgba(201, 162, 75, 0.28)) 0%, rgba(23, 27, 18, 0) 58%),
    url("assets/consult-card-bg.jpg") center / cover;
}
.stage-media {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  cursor: zoom-in;
  animation: gemFloat 7.5s ease-in-out infinite;
}
/* breathing gold halo behind the cut-out gem */
.stage-media::before {
  content: "";
  grid-area: 1 / 1;
  width: clamp(360px, 52%, 680px);
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle, var(--glow, rgba(201, 162, 75, 0.34)) 0%, rgba(201, 162, 75, 0.08) 42%, transparent 68%);
  filter: blur(6px);
  animation: gemHalo 6s ease-in-out infinite;
  pointer-events: none;
  z-index: 0;
}
.stage.is-photo .stage-media::before { display: none; }
.stage-img { position: relative; z-index: 1; }

@keyframes gemFloat {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}
@keyframes gemHalo {
  0%, 100% { transform: scale(1); opacity: 0.85; }
  50% { transform: scale(1.08); opacity: 1; }
}

/* staggered entrance for the configurator */
.config-head { animation: cfgRise 0.7s var(--ease) both; }
.steps-hint { animation: cfgRise 0.7s var(--ease) 0.08s both; }
.steps { animation: cfgRise 0.7s var(--ease) 0.16s both; }
.config-actions { animation: cfgRise 0.7s var(--ease) 0.24s both; }
.help-wa { animation: cfgRise 0.7s var(--ease) 0.3s both; }
@keyframes cfgRise {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: none; }
}

/* periodic sheen sweeping across the Continue button */
.config-continue { position: relative; overflow: hidden; }
.config-continue::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(105deg, transparent 40%, rgba(255, 249, 232, 0.35) 50%, transparent 60%);
  background-size: 220% 100%;
  background-position: 160% 0;
  animation: btnSheen 5s ease-in-out 2s infinite;
}
@keyframes btnSheen {
  0% { background-position: 160% 0; }
  22%, 100% { background-position: -60% 0; }
}

@media (prefers-reduced-motion: reduce) {
  .stage-media,
  .stage-media::before,
  .config-head, .steps-hint, .steps, .config-actions, .help-wa,
  .config-continue::after {
    animation: none !important;
  }
  .config-head, .steps-hint, .steps, .config-actions, .help-wa { opacity: 1; transform: none; }
}
/* cut-out gem: large, floating on the tinted field */
.stage-img {
  width: clamp(320px, 46%, 620px);
  height: auto;
  filter: drop-shadow(0 40px 60px rgba(20, 24, 16, 0.28));
  transition: transform 0.5s var(--ease);
  will-change: transform;
}
/* photographic views fill the whole panel */
.stage.is-photo .stage-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: none;
}
/* lens zoom: JS sets transform-origin from the pointer */
.stage.is-zooming .stage-img { transform: scale(2.1); transition: transform 0.2s ease; }
.stage.is-photo.is-zooming .stage-img { transform: scale(1.8); }
.stage-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* soft scrims: a whisper at the top for the tag, a deeper vignette at the base for the foot */
.stage-scrim {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(to bottom, rgba(20, 24, 16, 0.28) 0%, transparent 24%),
    linear-gradient(to top, rgba(20, 24, 16, 0.42) 0%, rgba(20, 24, 16, 0.12) 22%, transparent 40%);
}
.stage-tag {
  position: absolute;
  left: clamp(1rem, 2vw, 2rem);
  top: clamp(1rem, 2.5vh, 2rem);
  z-index: 2;
  padding: 0.4rem 0.85rem;
  border-radius: 999px;
  border: 1px solid rgba(246, 244, 236, 0.4);
  background: rgba(20, 24, 16, 0.32);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  font-family: var(--font-ui);
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #f4efe2;
  pointer-events: none;
}
.stage-hint {
  position: absolute;
  right: clamp(1rem, 2vw, 2rem);
  top: clamp(1rem, 2.5vh, 2rem);
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.4rem 0.8rem;
  border-radius: 999px;
  background: rgba(20, 24, 16, 0.32);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(246, 244, 236, 0.28);
  font-family: var(--font-ui);
  font-size: 0.71875rem;
  letter-spacing: 0.04em;
  color: rgba(244, 239, 226, 0.85);
  pointer-events: none;
  transition: opacity 0.3s ease;
}
.stage.is-zooming .stage-hint,
.stage.is-video .stage-hint { opacity: 0; }

/* overlaid foot: seal + thumbnail strip over the base scrim */
.stage-foot {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  padding: clamp(1rem, 3vh, 2rem) clamp(1rem, 2vw, 2rem);
}
.gallery-seal {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  align-self: flex-start;
  max-width: 100%;
  padding: 0.55rem 0.9rem;
  border: 1px solid rgba(246, 244, 236, 0.3);
  border-radius: 999px;
  background: rgba(20, 24, 16, 0.36);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
}
.gallery-seal > img { width: 26px; flex: none; }
.seal-text { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
.seal-text strong {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1rem;
  color: #f6f2e8;
}
.seal-text span {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.72rem;
  color: rgba(244, 239, 226, 0.72);
}
.seal-cert {
  margin-left: 0.4rem;
  padding-left: 0.7rem;
  border-left: 1px solid rgba(246, 244, 236, 0.24);
  font-family: var(--font-ui);
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  color: var(--gold-bright);
  white-space: nowrap;
}

/* thumbnail strip - subtle, over the scrim */
.thumbs {
  display: flex;
  gap: 0.6rem;
  overflow-x: auto;
  padding-bottom: 0.15rem;
  scrollbar-width: none;
}
.thumbs::-webkit-scrollbar { display: none; }
.thumb {
  position: relative;
  flex: none;
  width: 62px;
  height: 62px;
  padding: 0;
  border-radius: 10px;
  border: 1px solid rgba(246, 244, 236, 0.35);
  overflow: hidden;
  background: linear-gradient(160deg, var(--glow, rgba(201, 162, 75, 0.28)) 0%, #f4f1e8 100%);
  cursor: pointer;
  transition: border-color 0.25s ease, box-shadow 0.25s ease, transform 0.3s var(--ease);
}
.thumb:hover { transform: translateY(-2px); border-color: rgba(246, 244, 236, 0.7); }
.thumb.is-active {
  border-color: var(--gold-bright);
  box-shadow: 0 0 0 1px var(--gold-bright);
}
.thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.thumb.thumb-gem img { object-fit: contain; padding: 10px; }
.thumb-play {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: #fff;
  font-size: 1.2rem;
  background: rgba(20, 24, 16, 0.35);
  pointer-events: none;
}
.thumb-label { display: none; }

/* ============ Right: configurator ============ */
.buy-config {
  min-width: 0;
  display: flex;
  justify-content: flex-start;
  padding: clamp(1.5rem, 3.5vh, 2.5rem) clamp(2rem, 4vw, 4rem) clamp(2rem, 5vh, 3rem) clamp(1.75rem, 3.5vw, 3rem);
}
.config-inner {
  width: 100%;
  max-width: 780px;
}
.config-head {
  margin-bottom: 0;
}
.config-planet {
  font-family: var(--font-ui);
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--gold);
  margin: 0 0 0.45rem;
}
.config-planet .glyph { font-size: 1em; letter-spacing: 0; }
.config-name {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(2.25rem, 3.6vw, 3rem);
  line-height: 1;
  letter-spacing: 0.004em;
  color: var(--ink-dark);
  margin: 0 0 clamp(0.5rem, 1.4vh, 0.85rem);
}
.config-name .config-vedic {
  font-weight: 400;
  font-size: 0.55em;
  color: rgba(32, 37, 26, 0.5);
  letter-spacing: 0.01em;
  white-space: nowrap;
}
.config-english {
  font-family: var(--font-display);
  font-style: normal;
  font-size: clamp(1.0625rem, 1.6vw, 1.3125rem);
  color: rgba(32, 37, 26, 0.6);
  margin: 0.2rem 0 clamp(0.45rem, 1.2vh, 0.7rem);
}
.config-specs {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.8125rem;
  letter-spacing: 0.03em;
  color: rgba(32, 37, 26, 0.62);
  margin: 0 0 clamp(0.6rem, 1.6vh, 1rem);
}
/* price on the left, microcopy filling the space on the right */
.price-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem 1.5rem;
  flex-wrap: nowrap;
  margin-top: clamp(0.9rem, 2vh, 1.4rem);
}
.price-row .config-priceline { flex: 0 0 auto; }
.price-row .config-microcopy { flex: 1 1 auto; min-width: 0; }
@media (max-width: 620px) {
  .price-row { flex-wrap: wrap; }
  .price-row .config-microcopy { align-items: flex-start; text-align: left; }
}
.config-priceline {
  display: flex;
  align-items: baseline;
  gap: 0.7rem;
  flex-wrap: wrap;
}
.config-price #livePrice {
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: clamp(1.75rem, 3vw, 2.25rem);
  color: var(--ink-dark);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.01em;
}
.config-taxes {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.75rem;
  color: rgba(32, 37, 26, 0.6);
}

/* carat leads over ratti wherever both appear */
.cs-carat {
  font-weight: 600;
  color: var(--ink-dark);
}
.cs-ratti {
  color: rgba(32, 37, 26, 0.5);
}
.spec-carat { font-weight: 600; color: var(--ink-dark); }
.cs-origin { display: inline-flex; align-items: center; gap: 0.22em; white-space: nowrap; }
.cs-origin i { font-size: 0.95em; color: var(--gold); }

/* price microcopy: per-carat / taxes / free energisation — stacked at the right of the price */
.config-microcopy {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  text-align: right;
  gap: 0.12rem;
  margin: 0;
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.78rem;
  line-height: 1.35;
  color: rgba(32, 37, 26, 0.62);
}
.config-microcopy .cm-carat { font-weight: 500; color: rgba(32, 37, 26, 0.82); }
.config-microcopy .cm-free {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-weight: 500;
  color: var(--gold);
}
.config-microcopy .cm-free i { font-size: 0.95rem; }
.steps-hint {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.82rem;
  line-height: 1.5;
  color: rgba(32, 37, 26, 0.68);
  margin: 0 0 clamp(0.5rem, 1.4vh, 0.7rem);
}
.steps-hint span { color: var(--gold); }

/* Inline config block (metal on the product page) */
.config-block {
  margin-top: 1.5rem;
}
.config-block-head {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  margin-bottom: 0.5rem;
}
.config-block-title {
  margin: 0;
  font-family: var(--font-ui);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--gold);
}
.config-block .drawer-helper { margin: 0 0 0.85rem; }
.config-block .opt-list { margin-bottom: 0.9rem; }
.config-block .loose-note { margin: 0; }
/* loose swatch — a hairline diamond, distinct from the metal swatches */
.swatch-loose {
  display: grid;
  place-items: center;
  color: var(--gold);
  background: rgba(161, 121, 58, 0.08);
  border: 1px dashed var(--hair-gold);
}
.swatch-loose i { font-size: 1.15rem; }
.bd-row.bd-muted span { color: rgba(32, 37, 26, 0.5); }

/* Setup page — content can be tall, so top-align it and let the page scroll
   (the shared .buy-config vertically centres, which only suits the short buy page) */
.setup-page .buy-config {
  align-items: flex-start;
  align-self: start;
  height: auto;
}

/* Setup page — "your selection" chips over the stone media */
.setup-selection {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.ss-chip {
  font-family: var(--font-ui);
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: var(--bone);
  padding: 0.4rem 0.8rem;
  border-radius: 999px;
  background: rgba(17, 20, 12, 0.5);
  border: 1px solid rgba(236, 231, 218, 0.28);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}

/* step rows - compact but breathing */
.steps {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.step {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  width: 100%;
  text-align: left;
  padding: 0.7rem 1rem;
  background: var(--paper);
  border: 1px solid var(--hair);
  border-radius: 12px;
  cursor: pointer;
  font: inherit;
  color: inherit;
  transition: border-color 0.25s ease, box-shadow 0.25s ease, transform 0.3s var(--ease);
}
.step:hover {
  border-color: var(--hair-gold);
  box-shadow: 0 12px 26px -22px rgba(32, 37, 26, 0.4);
  transform: translateY(-1px);
}
.step:focus-visible { outline: 2px solid rgba(161, 121, 58, 0.4); outline-offset: 2px; }

/* locked step — the stone chosen from the catalogue is fixed, not re-selectable */
.step.is-locked {
  cursor: default;
  background: rgba(91, 99, 74, 0.05);
  border-color: var(--hair-gold);
}
.step.is-locked:hover { transform: none; box-shadow: none; border-color: var(--hair-gold); }
.step-locked-tag {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin-left: 0.5rem;
  padding: 0.08rem 0.4rem;
  border-radius: 999px;
  background: rgba(161, 121, 58, 0.12);
  color: var(--gold);
  font-size: 0.9em;
  letter-spacing: 0.08em;
}
.step-locked-tag i { font-size: 1.05em; }
.step-value .cs-carat { font-weight: 600; }
.step-num {
  flex: none;
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  border: 1px solid var(--hair-gold);
  font-family: var(--font-display);
  font-size: 0.875rem;
  color: var(--gold);
}
.step-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 0.05rem; }
.step-label {
  font-family: var(--font-ui);
  font-size: 0.625rem;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(32, 37, 26, 0.5);
}
.step-value {
  font-family: var(--font-ui);
  font-weight: 400;
  font-size: 0.875rem;
  color: var(--ink-dark);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.step-delta {
  flex: none;
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.8125rem;
  color: rgba(32, 37, 26, 0.55);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.step-delta.has-price { color: var(--gold); font-weight: 400; }
.step-cta {
  flex: none;
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  color: var(--sage);
  font-size: 0.85rem;
  transition: color 0.2s ease, background 0.2s ease;
}
.step:hover .step-cta { color: #4c543e; background: rgba(91, 99, 74, 0.1); }

/* completed step badge */
.step-num.is-done {
  border-color: var(--sage);
  background: var(--sage);
  color: #fff;
  font-size: 0.95rem;
}
.step.is-done { border-color: var(--hair); }

/* metal-needs-selection: attention badge + glowing row */
.step-num.is-select {
  border-color: var(--gold);
  background: rgba(161, 121, 58, 0.1);
  color: var(--gold);
  font-size: 1rem;
}
.step.needs-action {
  border-color: var(--hair-gold);
  box-shadow: 0 0 0 1px var(--hair-gold), 0 12px 26px -22px rgba(32, 37, 26, 0.4);
  animation: stepPulse 2.2s var(--ease) infinite;
}
.step.needs-action:hover { animation: none; }
@keyframes stepPulse {
  0%, 100% { box-shadow: 0 0 0 1px var(--hair-gold), 0 12px 26px -22px rgba(32, 37, 26, 0.4); }
  50% { box-shadow: 0 0 0 3px rgba(161, 121, 58, 0.18), 0 12px 26px -22px rgba(32, 37, 26, 0.4); }
}
@media (prefers-reduced-motion: reduce) { .step.needs-action { animation: none; } }

/* CTA rendered as a labelled pill when action is required */
.step-cta.step-cta-pill {
  width: auto;
  gap: 0.3rem;
  padding: 0.28rem 0.7rem;
  border-radius: 999px;
  background: var(--gold);
  color: #fff;
  font-family: var(--font-ui);
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.step:hover .step-cta.step-cta-pill { background: #8a6631; color: #fff; }

.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;
}

/* ============ Full-width sticky buy bar ============ */
.buybar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 120;
  overflow: visible;
  background: rgba(241, 239, 232, 0.94);
  -webkit-backdrop-filter: blur(16px) saturate(1.1);
  backdrop-filter: blur(16px) saturate(1.1);
  border-top: 1px solid var(--hair-gold);
  box-shadow: 0 -10px 44px -26px rgba(32, 37, 26, 0.5);
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.3s ease;
}
/* hidden on the first screen; revealed once the configurator scrolls away */
.buybar.is-hidden {
  transform: translateY(105%);
  opacity: 0;
  pointer-events: none;
}
@media (prefers-reduced-motion: reduce) {
  .buybar { transition: opacity 0.2s ease; }
  .buybar.is-hidden { transform: none; }
}
.bb-error {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  margin: 0;
  padding: 0.55rem var(--pad-x);
  background: rgba(178, 58, 42, 0.1);
  border-bottom: 1px solid rgba(178, 58, 42, 0.3);
  color: #7a2318;
  font-family: var(--font-ui);
  font-size: 0.8rem;
  text-align: center;
}
.bb-error[hidden] { display: none; }
.bb-error i { color: var(--madder); font-size: 0.95rem; }
.bb-trust {
  position: absolute;
  left: 50%;
  bottom: 100%;
  transform: translateX(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 1.5rem;
  white-space: nowrap;
  padding: 0.5rem 1.7rem;
  background: linear-gradient(180deg, #5b634a, #4c543e);
  border: 1px solid #3a4232;
  border-bottom: 0;
  border-radius: 12px 12px 0 0;
  box-shadow: 0 -8px 22px -16px rgba(20, 25, 15, 0.5);
}
.bb-trust span {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-family: var(--font-ui);
  font-weight: 400;
  font-size: 0.6875rem;
  letter-spacing: 0.05em;
  color: rgba(244, 241, 233, 0.9);
}
.bb-trust img { width: 13px; height: auto; }
.bb-trust i { font-size: 0.9rem; color: var(--gold-bright); }
.buybar-inner {
  display: flex;
  align-items: center;
  gap: clamp(1rem, 3vw, 2.5rem);
  max-width: 1400px;
  margin: 0 auto;
  padding: 0.9rem var(--pad-x) calc(0.9rem + env(safe-area-inset-bottom, 0px));
}
.bb-product {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  flex: 1 1 auto;
  min-width: 0;
}
.bb-thumb {
  flex: none;
  width: 56px;
  height: 56px;
  border-radius: 12px;
  border: 1px solid var(--hair);
  background: linear-gradient(160deg, rgba(201, 162, 75, 0.16), #fff);
  display: grid;
  place-items: center;
  overflow: hidden;
}
.bb-thumb img { width: 74%; height: auto; }
.bb-lines { min-width: 0; }
.bb-title {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.1875rem;
  line-height: 1.1;
  color: var(--ink-dark);
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.bb-spec {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.75rem;
  color: rgba(32, 37, 26, 0.55);
  margin: 0.1rem 0 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.bb-bd { position: relative; flex: none; }
.bb-bd-toggle {
  display: grid;
  place-items: center;
  width: 38px; height: 38px;
  border-radius: 50%;
  background: rgba(161, 121, 58, 0.08);
  border: 1px solid var(--hair-gold);
  cursor: pointer;
  color: var(--gold);
  transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}
.bb-bd-toggle:hover { background: rgba(161, 121, 58, 0.16); border-color: var(--gold); }
.bb-bd-toggle.is-open { background: var(--gold); border-color: var(--gold); color: #fff; }
.bb-bd-toggle i { font-size: 1.1rem; }
/* hover tooltip */
.bb-bd-toggle::after {
  content: "Price breakdown";
  position: absolute;
  bottom: calc(100% + 10px);
  right: 0;
  white-space: nowrap;
  background: var(--ink-dark);
  color: var(--bone);
  font-family: var(--font-ui);
  font-size: 0.72rem;
  padding: 0.4rem 0.6rem;
  border-radius: 8px;
  opacity: 0;
  pointer-events: none;
  transform: translateY(4px);
  transition: opacity 0.2s ease, transform 0.2s ease;
}
.bb-bd-toggle:hover::after { opacity: 1; transform: translateY(0); }
.bb-bd-toggle.is-open::after { opacity: 0; }
.bb-bd-pop {
  position: absolute;
  left: auto;
  right: 0;
  bottom: calc(100% + 0.6rem);
  z-index: 10;
  width: 260px;
  padding: 0.85rem 1rem;
  background: var(--paper);
  border: 1px solid var(--hair-gold);
  border-radius: 12px;
  box-shadow: 0 24px 50px -24px rgba(32, 37, 26, 0.5);
}
.bb-bd-pop[hidden] { display: none; }
.bd-row {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.28rem 0;
  font-family: var(--font-ui);
  font-size: 0.8125rem;
  color: rgba(32, 37, 26, 0.68);
}
.bd-row span:last-child { color: var(--ink-dark); font-variant-numeric: tabular-nums; }
.bd-total {
  margin-top: 0.3rem;
  padding-top: 0.5rem;
  border-top: 1px solid var(--hair);
  font-weight: 500;
}
.bd-total span { color: var(--ink-dark) !important; font-weight: 500; }
.bb-total {
  flex: none;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 0.75rem;
  line-height: 1.05;
  padding-left: clamp(1.1rem, 2.5vw, 2rem);
  border-left: 1px solid var(--hair);
}
.bb-total-lines { display: flex; flex-direction: column; align-items: flex-end; }
.bb-total-num {
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: clamp(1.5rem, 2.4vw, 2rem);
  color: var(--ink-dark);
  font-variant-numeric: tabular-nums;
}
.bb-total-note {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.7rem;
  color: rgba(32, 37, 26, 0.6);
}
.bb-actions {
  flex: none;
  display: flex;
  align-items: center;
  gap: 0.7rem;
}
.bb-wa {
  position: relative;
  flex: none;
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  border: 1px solid #1faa54;
  background: #25d366;
  color: #fff;
  font-size: 1.4rem;
  text-decoration: none;
  transition: background 0.2s ease, transform 0.2s ease;
}
.bb-wa:hover { background: #1ebe5a; transform: translateY(-1px); }
/* hover tooltip */
.bb-wa::after {
  content: "Get help on WhatsApp for buying";
  position: absolute;
  bottom: calc(100% + 10px);
  right: 0;
  white-space: nowrap;
  background: var(--ink-dark);
  color: var(--bone);
  font-family: var(--font-ui);
  font-size: 0.72rem;
  letter-spacing: 0.01em;
  padding: 0.45rem 0.7rem;
  border-radius: 8px;
  opacity: 0;
  transform: translateY(4px);
  pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease;
}
.bb-wa:hover::after, .bb-wa:focus-visible::after { opacity: 1; transform: translateY(0); }
.bb-consult {
  flex: none;
  display: inline-flex;
  align-items: center;
  height: 46px;
  padding: 0 1.2rem;
  border-radius: 999px;
  border: 1px solid var(--hair);
  background: rgba(246, 244, 236, 0.6);
  color: var(--ink-dark);
  font-family: var(--font-ui);
  font-size: 0.84rem;
  text-decoration: none;
  white-space: nowrap;
  transition: border-color 0.2s ease, color 0.2s ease;
}
.bb-consult:hover { border-color: var(--hair-gold); color: var(--gold); }
.bb-add {
  position: relative;
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 46px;
  min-width: 180px;
  padding: 0 1.6rem;
  border-radius: 999px;
  background: url("assets/consult-card-bg.jpg") center / cover;
  border: 0;
  color: #ffffff;
  font-family: var(--font-ui);
  font-size: 0.9375rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  cursor: pointer;
  transition: background 0.25s ease, box-shadow 0.25s ease, transform 0.2s ease;
}
.bb-add { box-shadow: 0 4px 14px rgba(20, 25, 15, 0.18); }
.bb-add:hover { background: linear-gradient(rgba(0,0,0,0.22), rgba(0,0,0,0.22)), url("assets/consult-card-bg.jpg") center / cover; box-shadow: 0 8px 20px rgba(20, 25, 15, 0.24); transform: translateY(-1px); }
.bb-add:active { transform: translateY(1px); }
.bb-add:disabled, .bb-add.is-disabled {
  background: rgba(32, 37, 26, 0.14);
  color: rgba(32, 37, 26, 0.4);
  box-shadow: none;
  cursor: not-allowed;
}
/* tooltip explaining why Continue is inactive (shows on hover/tap) */
.bb-add.is-disabled::after {
  content: attr(data-tip);
  position: absolute;
  bottom: calc(100% + 10px);
  left: 50%;
  transform: translateX(-50%) translateY(4px);
  white-space: nowrap;
  background: var(--ink-dark);
  color: var(--bone);
  font-family: var(--font-ui);
  font-weight: 400;
  font-size: 0.72rem;
  letter-spacing: 0.01em;
  padding: 0.45rem 0.7rem;
  border-radius: 8px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease;
  z-index: 10;
}
.bb-add.is-disabled::before {
  content: "";
  position: absolute;
  bottom: calc(100% + 4px);
  left: 50%;
  transform: translateX(-50%);
  border: 5px solid transparent;
  border-top-color: var(--ink-dark);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease;
  z-index: 10;
}
.bb-add.is-disabled:hover::after,
.bb-add.is-disabled:focus-visible::after { opacity: 1; transform: translateX(-50%) translateY(0); }
.bb-add.is-disabled:hover::before,
.bb-add.is-disabled:focus-visible::before { opacity: 1; }
.bb-add span { display: inline-flex; align-items: center; gap: 0.5rem; }
.bb-add .bb-add-done { display: none; }
.bb-add.is-added { background: linear-gradient(rgba(0,0,0,0.35), rgba(0,0,0,0.35)), url("assets/consult-card-bg.jpg") center / cover; }
.bb-add.is-added .bb-add-default { display: none; }
.bb-add.is-added .bb-add-done { display: inline-flex; }

/* ============ Drawers ============ */
.drawer-backdrop {
  position: fixed;
  inset: 0;
  z-index: 150;
  background: rgba(20, 24, 16, 0.45);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
  opacity: 0;
  transition: opacity 0.35s ease;
}
.drawer-backdrop.open { opacity: 1; }
.drawer-backdrop[hidden] { display: none; }
.drawer {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 160;
  width: min(430px, 100%);
  display: flex;
  flex-direction: column;
  background: var(--paper);
  border-left: 1px solid var(--hair-gold);
  box-shadow: -30px 0 80px -40px rgba(20, 24, 16, 0.55);
  transform: translateX(102%);
  transition: transform 0.55s var(--ease);
}
.drawer[hidden] { display: none; }
.drawer.open { transform: none; }
.drawer-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.5rem 1.5rem 1.1rem;
  border-bottom: 1px solid var(--hair);
}
.drawer-step {
  font-family: var(--font-ui);
  font-size: 0.65rem;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--gold);
  margin: 0 0 0.25rem;
}
.drawer-head h2 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.75rem;
  line-height: 1.05;
  color: var(--ink-dark);
  margin: 0;
}
.drawer-close {
  flex: none;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: rgba(32, 37, 26, 0.05);
  border: 1px solid rgba(32, 37, 26, 0.12);
  color: var(--ink-dark);
  cursor: pointer;
  font-size: 1.05rem;
  transition: background 0.2s ease, color 0.2s ease;
}
.drawer-close:hover { background: rgba(32, 37, 26, 0.1); color: var(--gold); }
.drawer-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: 1.3rem 1.5rem 1.5rem;
}

/* sticky drawer footer with the commit action */
.drawer-foot {
  flex: none;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.9rem 1.5rem;
  border-top: 1px solid var(--hair);
  background: var(--paper);
}
.drawer-cancel {
  flex: none;
  height: 46px;
  padding: 0 1.1rem;
  border-radius: 999px;
  border: 1px solid var(--hair);
  background: none;
  cursor: pointer;
  font-family: var(--font-ui);
  font-size: 0.84rem;
  color: rgba(32, 37, 26, 0.65);
  transition: border-color 0.2s ease, color 0.2s ease;
}
.drawer-cancel:hover { border-color: var(--hair-gold); color: var(--ink-dark); }
.drawer-apply {
  flex: 1 1 auto;
  height: 46px;
  border-radius: 999px;
  background: url("assets/consult-card-bg.jpg") center / cover;
  border: 0;
  color: #ffffff;
  cursor: pointer;
  font-family: var(--font-ui);
  font-size: 0.9375rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  box-shadow: 0 4px 14px rgba(20, 25, 15, 0.18);
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.drawer-apply:hover { box-shadow: 0 8px 20px rgba(20, 25, 15, 0.24); transform: translateY(-1px); }
.drawer-apply:active { transform: translateY(1px); }

.drawer-note-hero {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  margin: 0 0 1.1rem;
  padding: 0.9rem 1rem;
  border: 1px solid var(--hair-gold);
  border-radius: 12px;
  background: linear-gradient(160deg, rgba(201, 162, 75, 0.09), rgba(201, 162, 75, 0.03));
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.875rem;
  line-height: 1.55;
  color: rgba(32, 37, 26, 0.75);
}
.drawer-note-hero i { color: var(--gold); font-size: 1.05rem; margin-top: 0.15rem; }

.cert-panel {
  border: 1px solid var(--hair);
  border-radius: 12px;
  background: rgba(246, 244, 236, 0.7);
  padding: 1.1rem 1.2rem;
}
.cert-panel h3 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.25rem;
  color: #1f3324;
  margin: 0 0 0.7rem;
}
.cert-rows { margin: 0; }
.cert-rows > div {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.5rem 0;
  border-bottom: 1px solid var(--hair);
}
.cert-rows > div:last-child { border-bottom: 0; padding-bottom: 0; }
.cert-rows dt {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.8125rem;
  color: rgba(32, 37, 26, 0.55);
  flex: none;
}
.cert-rows dd {
  font-family: var(--font-ui);
  font-weight: 400;
  font-size: 0.8125rem;
  color: var(--ink-dark);
  margin: 0;
  text-align: right;
}
.drawer-fine {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.78rem;
  line-height: 1.6;
  color: rgba(32, 37, 26, 0.65);
  margin: 1rem 0 0;
}
.drawer-helper {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.8125rem;
  line-height: 1.6;
  color: rgba(32, 37, 26, 0.72);
  margin: 1rem 0 0;
  padding-left: 0.9rem;
  border-left: 2px solid var(--hair-gold);
}

/* option cards inside drawers */
.opt-list {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}
.opt-card {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  width: 100%;
  text-align: left;
  padding: 0.9rem 1rem;
  border: 1px solid var(--hair);
  border-radius: 12px;
  background: rgba(246, 244, 236, 0.7);
  cursor: pointer;
  font: inherit;
  color: inherit;
  transition: border-color 0.22s ease, background 0.22s ease, box-shadow 0.22s ease;
}
.opt-card:hover { border-color: var(--hair-gold); }
.opt-card:focus-visible { outline: 2px solid rgba(161, 121, 58, 0.4); outline-offset: 2px; }
.opt-card.is-selected {
  border-color: var(--gold);
  background: linear-gradient(160deg, rgba(201, 162, 75, 0.12), rgba(201, 162, 75, 0.04));
  box-shadow: 0 0 0 1px var(--gold);
}
.opt-card.is-locked { cursor: default; }
.opt-text {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.05rem;
}
.opt-text strong {
  font-family: var(--font-ui);
  font-weight: 500;
  font-size: 0.9375rem;
  color: var(--ink-dark);
}
.opt-text span {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.78rem;
  color: rgba(32, 37, 26, 0.66);
}
.opt-price {
  flex: none;
  font-family: var(--font-ui);
  font-weight: 400;
  font-size: 0.8125rem;
  color: var(--gold);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.opt-ic {
  flex: none;
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border-radius: 10px;
  border: 1px solid var(--hair-gold);
  color: var(--gold);
  font-size: 1.25rem;
}
.opt-swatch {
  flex: none;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  border: 1px solid rgba(32, 37, 26, 0.18);
}
.swatch-panchdhatu { background: linear-gradient(135deg, #b7ad98, #8d8471 55%, #a89f8a); }
.swatch-silver { background: linear-gradient(135deg, #e7e7e5, #b9bcbd 55%, #d9dadb); }
.swatch-gold18 { background: linear-gradient(135deg, #e8cf8f, #c9a24b 55%, #dcbd74); }
.swatch-gold22 { background: linear-gradient(135deg, #dfb964, #a1793a 55%, #c99e4d); }

/* the checkbox-style toggle card gets a square mark */
.opt-toggle::after {
  content: "";
  flex: none;
  width: 18px;
  height: 18px;
  border-radius: 5px;
  border: 1px solid rgba(161, 121, 58, 0.5);
  background: transparent center / 11px no-repeat;
  transition: background-color 0.18s ease, border-color 0.18s ease;
}
.opt-toggle.is-selected::after {
  background-color: var(--gold);
  border-color: var(--gold);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6.4l2.4 2.4 5.6-6.2' fill='none' stroke='white' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

/* ring size chips */
.size-block { margin-top: 1.5rem; }
.size-block-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
}
.size-block h3 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.25rem;
  color: #1f3324;
  margin: 0 0 0.35rem;
}
.size-note {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.78rem;
  color: rgba(32, 37, 26, 0.68);
  margin: 0 0 0.8rem;
}
.size-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
}
.size-chip {
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  border: 1px solid var(--hair);
  background: rgba(246, 244, 236, 0.7);
  font-family: var(--font-ui);
  font-size: 0.8125rem;
  color: var(--ink-dark);
  cursor: pointer;
  font-variant-numeric: tabular-nums;
  transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
}
.size-chip:hover { border-color: var(--hair-gold); }
.size-chip.is-selected {
  border-color: var(--gold);
  background: rgba(161, 121, 58, 0.12);
  color: var(--gold);
  font-weight: 500;
}
.size-block.is-disabled .size-chip {
  opacity: 0.38;
  cursor: not-allowed;
}

/* ============ Zoom overlay (click to enlarge) ============ */
.zoom-overlay {
  position: fixed;
  inset: 0;
  z-index: 220;
  display: grid;
  place-items: center;
  padding: clamp(1rem, 5vh, 3rem);
  background: rgba(20, 24, 16, 0.72);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
.zoom-overlay[hidden] { display: none; }
.zoom-img {
  max-width: min(1080px, 100%);
  max-height: 100%;
  border-radius: 14px;
  cursor: zoom-in;
  transition: transform 0.25s ease;
  will-change: transform;
}
.zoom-img.is-zoomed { transform: scale(2.2); cursor: zoom-out; }
.zoom-close {
  position: absolute;
  top: 1.25rem;
  right: 1.25rem;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: rgba(241, 239, 232, 0.14);
  border: 1px solid rgba(241, 239, 232, 0.3);
  color: var(--ink);
  cursor: pointer;
  font-size: 1.15rem;
  transition: background 0.2s ease;
}
.zoom-close:hover { background: rgba(241, 239, 232, 0.26); }

/* ============ Quick-view lightbox (vault stone + design library thumbnails) ============ */
.lightbox-overlay {
  position: fixed;
  inset: 0;
  z-index: 205;
  display: grid;
  place-items: center;
  padding: clamp(1rem, 4vh, 3rem) 1rem;
}
.lightbox-overlay[hidden] { display: none; }
.lb-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(20, 24, 16, 0.55);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  opacity: 0;
  transition: opacity 0.4s ease;
}
.lightbox-overlay.open .lb-backdrop { opacity: 1; }
.lb-panel {
  position: relative;
  width: min(420px, 100%);
  max-height: 88vh;
  overflow-y: auto;
  background: var(--bone);
  border: 1px solid rgba(161, 121, 58, 0.3);
  border-radius: 20px;
  padding: clamp(1.5rem, 3vw, 2rem);
  box-shadow: 0 50px 100px -40px rgba(20, 24, 16, 0.6);
  opacity: 0;
  transform: translateY(16px) scale(0.98);
  transition: opacity 0.45s ease, transform 0.55s var(--ease);
}
.lightbox-overlay.open .lb-panel { opacity: 1; transform: none; }
.lb-close {
  position: absolute;
  top: 1rem; right: 1rem;
  width: 40px; height: 40px;
  border-radius: 50%;
  display: grid; place-items: center;
  background: rgba(32, 37, 26, 0.05);
  border: 1px solid rgba(32, 37, 26, 0.12);
  color: var(--ink-dark);
  cursor: pointer;
  font-size: 1.05rem;
  transition: background 0.2s ease, color 0.2s ease;
}
.lb-close:hover { background: rgba(32, 37, 26, 0.1); color: var(--gold); }
.lb-media {
  aspect-ratio: 1 / 1;
  border-radius: 14px;
  overflow: hidden;
  background: linear-gradient(158deg, var(--glow, rgba(201, 162, 75, 0.28)) 0%, #efece2 55%, #ffffff 100%);
  display: grid;
  place-items: center;
  margin-bottom: 1.1rem;
}
.lb-media img { width: 64%; height: auto; filter: drop-shadow(0 20px 30px rgba(20, 24, 16, 0.22)); }
.lb-media.is-cover img { width: 100%; height: 100%; object-fit: cover; filter: none; }
.lb-body h3 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.375rem;
  color: #1f3324;
  margin: 0 0 0.35rem;
}
.lb-body p {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.84rem;
  line-height: 1.5;
  color: rgba(32, 37, 26, 0.65);
  margin: 0;
}


/* ============ Drawer tabs ============ */
.drawer-tabs {
  display: flex;
  gap: 0.4rem;
  margin: 1.1rem 1.5rem 1.5rem;
  padding: 0.28rem;
  background: rgba(32, 37, 26, 0.05);
  border: 1px solid var(--hair);
  border-radius: 999px;
}
.design-detail .drawer-tabs { margin: 1.4rem 0 1.5rem; }
.dtab {
  flex: 1 1 0;
  padding: 0.5rem 0.8rem;
  border: 0;
  border-radius: 999px;
  background: none;
  cursor: pointer;
  font-family: var(--font-ui);
  font-size: 0.8125rem;
  font-weight: 400;
  letter-spacing: 0.02em;
  color: rgba(32, 37, 26, 0.6);
  transition: background 0.22s ease, color 0.22s ease, box-shadow 0.22s ease;
}
.dtab.is-active {
  background: var(--paper);
  color: var(--ink-dark);
  font-weight: 500;
  box-shadow: 0 2px 10px -6px rgba(32, 37, 26, 0.5);
}

.drawer-lead {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.84rem;
  line-height: 1.55;
  color: rgba(32, 37, 26, 0.62);
  margin: 0 0 1.1rem;
}
.drawer-lead span { color: var(--gold); }
.drawer-section-label {
  font-family: var(--font-ui);
  font-size: 0.65rem;
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(32, 37, 26, 0.5);
  margin: 0 0 0.7rem;
}

/* ============ Vault filters (stone drawer) ============ */
.vault-filters {
  border: 1px solid var(--hair);
  border-radius: 12px;
  background: rgba(246, 244, 236, 0.7);
  padding: 1rem 1.1rem;
  margin-bottom: 1rem;
}
.vf-range { margin-bottom: 1rem; }
.vf-label {
  display: block;
  font-family: var(--font-ui);
  font-size: 0.5625rem;
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(32, 37, 26, 0.5);
  margin-bottom: 0.5rem;
}
.mini-range {
  position: relative;
  height: 18px;
  margin: 0.2rem 2px 0.5rem;
}
.mini-range::before {
  content: "";
  position: absolute;
  left: 0; right: 0; top: 50%;
  height: 1px;
  transform: translateY(-50%);
  background: var(--hair-gold);
}
.mr-fill {
  position: absolute;
  top: 50%;
  height: 2px;
  transform: translateY(-50%);
  background: var(--gold);
  pointer-events: none;
}
.mini-range input[type="range"] {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 18px;
  margin: 0;
  -webkit-appearance: none;
  appearance: none;
  background: none;
  pointer-events: none;
  outline: none;
  z-index: 3;
}
.mini-range input[type="range"]::-webkit-slider-runnable-track { background: none; height: 18px; }
.mini-range input[type="range"]::-moz-range-track { background: none; }
.mini-range input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 14px; height: 14px;
  margin-top: 2px;
  border-radius: 50%;
  background: var(--bone);
  border: 1.5px solid var(--gold);
  box-shadow: 0 1px 5px rgba(32, 37, 26, 0.28);
  cursor: grab;
  pointer-events: auto;
}
.mini-range input[type="range"]::-moz-range-thumb {
  width: 14px; height: 14px;
  border-radius: 50%;
  background: var(--bone);
  border: 1.5px solid var(--gold);
  box-shadow: 0 1px 5px rgba(32, 37, 26, 0.28);
  cursor: grab;
  pointer-events: auto;
}
.vf-range-out {
  font-family: var(--font-ui);
  font-size: 0.78rem;
  color: var(--ink-dark);
  font-variant-numeric: tabular-nums;
}
.vf-selects {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
}
.vf-select { display: block; min-width: 0; }
.vf-select select {
  width: 100%;
  height: 38px;
  padding: 0 0.7rem;
  border: 1px solid var(--hair);
  border-radius: 8px;
  background: var(--paper);
  font-family: var(--font-ui);
  font-size: 0.84rem;
  color: var(--ink-dark);
  cursor: pointer;
  transition: border-color 0.2s ease;
}
.vf-select select:focus-visible { outline: 2px solid rgba(161, 121, 58, 0.4); outline-offset: 2px; }
.vault-count {
  font-family: var(--font-ui);
  font-size: 0.78rem;
  color: rgba(32, 37, 26, 0.55);
  margin: 0 0 0.7rem;
}
.vault-count b { color: var(--ink-dark); font-weight: 500; }

/* ============ List rows (variants + designs) ============ */
.variant-list {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}
.listrow {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  width: 100%;
  text-align: left;
  padding: 0.7rem 0.85rem;
  border: 1px solid var(--hair);
  border-radius: 12px;
  background: rgba(246, 244, 236, 0.7);
  cursor: pointer;
  font: inherit;
  color: inherit;
  transition: border-color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
}
.listrow:hover { border-color: var(--hair-gold); }
.listrow:focus-visible { outline: 2px solid rgba(161, 121, 58, 0.4); outline-offset: 2px; }
.listrow.is-selected {
  border-color: var(--gold);
  background: linear-gradient(160deg, rgba(201, 162, 75, 0.12), rgba(201, 162, 75, 0.04));
  box-shadow: 0 0 0 1px var(--gold);
}
.listrow-thumb {
  flex: none;
  width: 46px; height: 46px;
  padding: 0;
  margin: 0;
  border-radius: 8px;
  border: 1px solid var(--hair);
  background: #fff center / 74% no-repeat;
  position: relative;
  overflow: hidden;
  cursor: zoom-in;
  transition: border-color 0.2s ease, transform 0.2s ease;
}
.listrow-thumb:hover, .listrow-thumb:focus-visible { border-color: var(--gold); transform: translateY(-1px); }
.listrow-thumb:focus-visible { outline: 2px solid rgba(161, 121, 58, 0.4); outline-offset: 2px; }
.listrow-thumb-cover { background-size: cover; }
.listrow-thumb-zoom {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  background: rgba(20, 24, 16, 0.34);
  color: #fff;
  font-size: 0.9rem;
  opacity: 0;
  transition: opacity 0.2s ease;
  pointer-events: none;
}
.listrow-thumb:hover .listrow-thumb-zoom,
.listrow-thumb:focus-visible .listrow-thumb-zoom { opacity: 1; }
.listrow-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 0.12rem; }
.listrow-top {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.listrow-top b {
  font-family: var(--font-ui);
  font-weight: 500;
  font-size: 0.9375rem;
  color: var(--ink-dark);
}
.listrow-tag {
  font-family: var(--font-ui);
  font-size: 0.6rem;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--gold);
  padding: 0.12rem 0.45rem;
  border: 1px solid var(--hair-gold);
  border-radius: 999px;
}
.listrow-sub {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.78rem;
  color: rgba(32, 37, 26, 0.58);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.listrow-meta {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.72rem;
  color: rgba(32, 37, 26, 0.5);
}
.listrow-meta i { font-size: 0.85em; color: var(--gold); }
.listrow-price {
  flex: none;
  font-family: var(--font-ui);
  font-weight: 500;
  font-size: 0.84rem;
  color: var(--ink-dark);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.list-empty {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.84rem;
  color: rgba(32, 37, 26, 0.55);
  padding: 1rem 0.2rem;
  margin: 0;
}

/* ============ Custom forms ============ */
.custom-form { display: flex; flex-direction: column; gap: 0.9rem; }
.cf-field { display: flex; flex-direction: column; gap: 0.35rem; }
.cf-label {
  font-family: var(--font-ui);
  font-size: 0.65rem;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(32, 37, 26, 0.5);
}
.cf-label em {
  font-style: normal;
  font-weight: 300;
  letter-spacing: 0.04em;
  text-transform: none;
  color: rgba(32, 37, 26, 0.4);
}
.cf-label em.req { color: var(--madder); }
.cf-field input,
.cf-field textarea {
  width: 100%;
  padding: 0.6rem 0.75rem;
  border: 1px solid var(--hair);
  border-radius: 8px;
  background: var(--paper);
  font-family: var(--font-ui);
  font-size: 0.9rem;
  color: var(--ink-dark);
  transition: border-color 0.2s ease;
}
.cf-field textarea { resize: vertical; line-height: 1.5; }
.cf-field input:focus-visible,
.cf-field textarea:focus-visible { outline: none; border-color: var(--gold); }
.cf-field input[readonly] { background: rgba(32, 37, 26, 0.04); color: rgba(32, 37, 26, 0.6); }
.cf-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.9rem; }
.cf-error {
  font-family: var(--font-ui);
  font-size: 0.78rem;
  color: var(--madder);
  margin: 0;
}
.cf-apply {
  margin-top: 0.3rem;
  height: 46px;
  border-radius: 999px;
  background: var(--sage);
  border: 1px solid var(--sage);
  color: var(--bone);
  font-family: var(--font-ui);
  font-size: 0.9rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  cursor: pointer;
  transition: background 0.2s ease;
}
.cf-apply:hover { background: #4c543e; }
.cf-readpair { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; }
.cf-read {
  position: relative;
  border: 1px solid var(--hair);
  border-radius: 8px;
  background: rgba(32, 37, 26, 0.04);
  padding: 0.55rem 0.7rem;
}
.cf-read-label {
  display: block;
  font-family: var(--font-ui);
  font-size: 0.6rem;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(32, 37, 26, 0.45);
  margin-bottom: 0.15rem;
}
.cf-read-val {
  font-family: var(--font-ui);
  font-size: 0.875rem;
  color: var(--ink-dark);
}
.cf-read-change {
  position: absolute;
  top: 0.5rem; right: 0.6rem;
  background: none; border: 0; cursor: pointer;
  font-family: var(--font-ui);
  font-size: 0.7rem;
  color: var(--gold);
  text-decoration: underline;
  padding: 0;
}

/* dropzone */
.dropzone {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.3rem;
  padding: 1.3rem 1rem;
  border: 1.5px dashed var(--hair-gold);
  border-radius: 10px;
  background: rgba(246, 244, 236, 0.6);
  text-align: center;
  cursor: pointer;
  transition: border-color 0.2s ease, background 0.2s ease;
}
.dropzone:hover, .dropzone.is-drag { border-color: var(--gold); background: rgba(201, 162, 75, 0.06); }
.dropzone > i { font-size: 1.5rem; color: var(--gold); }
.dz-text {
  font-family: var(--font-ui);
  font-size: 0.84rem;
  color: rgba(32, 37, 26, 0.7);
}
.dz-browse { color: var(--gold); text-decoration: underline; }
.dz-hint {
  font-family: var(--font-ui);
  font-size: 0.72rem;
  color: rgba(32, 37, 26, 0.45);
}
.dz-files { list-style: none; margin: 0.6rem 0 0; padding: 0; display: flex; flex-direction: column; gap: 0.3rem; }
.dz-files li {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-family: var(--font-ui);
  font-size: 0.78rem;
  color: rgba(32, 37, 26, 0.7);
}
.dz-files i { color: var(--gold); }

/* ============ Metal recommended badge + journal link ============ */
.opt-badge {
  flex: none;
  order: 3;
  font-family: var(--font-ui);
  font-size: 0.58rem;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #4c543e;
  padding: 0.18rem 0.5rem;
  border-radius: 999px;
  background: rgba(91, 99, 74, 0.14);
  border: 1px solid rgba(91, 99, 74, 0.3);
  white-space: nowrap;
}
.opt-price { order: 4; margin-left: auto; }
.opt-card.is-recommended { border-color: rgba(91, 99, 74, 0.4); }
.journal-link {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin-top: 1rem;
  font-family: var(--font-ui);
  font-size: 0.8125rem;
  color: var(--gold);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color 0.2s ease;
}
.journal-link:hover { border-bottom-color: var(--gold); }
.journal-link i { font-size: 1rem; }
.opt-dev {
  font-style: normal;
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.8em;
  color: var(--gold);
  margin-left: 0.35rem;
}

/* ============ Metal: loose vs set choice ============ */
.mount-choice {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.6rem;
  margin-bottom: 1.15rem;
}
.mount-opt {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  padding: 0.75rem 0.85rem;
  border: 1px solid var(--hair);
  border-radius: 12px;
  background: rgba(246, 244, 236, 0.7);
  cursor: pointer;
  text-align: left;
  font: inherit;
  color: inherit;
  transition: border-color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
}
.mount-opt:hover { border-color: var(--hair-gold); }
.mount-opt:focus-visible { outline: 2px solid rgba(161, 121, 58, 0.4); outline-offset: 2px; }
.mount-opt.is-selected {
  border-color: var(--gold);
  background: linear-gradient(160deg, rgba(201, 162, 75, 0.12), rgba(201, 162, 75, 0.04));
  box-shadow: 0 0 0 1px var(--gold);
}
.mount-ic {
  flex: none;
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 9px;
  border: 1px solid var(--hair-gold);
  color: var(--gold);
  font-size: 1.15rem;
}
.mount-text { display: flex; flex-direction: column; min-width: 0; }
.mount-text strong {
  font-family: var(--font-ui);
  font-weight: 500;
  font-size: 0.84rem;
  color: var(--ink-dark);
}
.mount-text span {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.7rem;
  color: rgba(32, 37, 26, 0.66);
}
.metal-set[hidden] { display: none; }
.loose-note {
  display: flex;
  align-items: flex-start;
  gap: 0.65rem;
  margin: 1rem 0 0;
  padding: 1rem 1.1rem;
  border: 1px solid var(--hair-gold);
  border-radius: 12px;
  background: linear-gradient(160deg, rgba(201, 162, 75, 0.09), rgba(201, 162, 75, 0.03));
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.82rem;
  line-height: 1.5;
  color: rgba(32, 37, 26, 0.7);
}
.loose-note[hidden] { display: none; }
.loose-note i { color: var(--gold); font-size: 1rem; margin-top: 0.1rem; flex: none; }

/* ============ Design: form segmented tabs + loose prompt ============ */
.loose-prompt {
  display: flex;
  align-items: flex-start;
  gap: 0.55rem;
  margin: 0 0 1rem;
  padding: 0.8rem 0.95rem;
  border: 1px dashed var(--hair-gold);
  border-radius: 10px;
  background: rgba(201, 162, 75, 0.05);
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.82rem;
  line-height: 1.5;
  color: rgba(32, 37, 26, 0.68);
}
.loose-prompt[hidden] { display: none; }
.loose-prompt i { color: var(--gold); font-size: 1rem; margin-top: 0.1rem; flex: none; }
.seg-tabs {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.4rem;
  padding: 0.3rem;
  background: rgba(32, 37, 26, 0.05);
  border: 1px solid var(--hair);
  border-radius: 12px;
  margin-bottom: 1.1rem;
}
.seg-tab {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  padding: 0.62rem 0.5rem;
  border: 0;
  border-radius: 9px;
  background: none;
  cursor: pointer;
  font-family: var(--font-ui);
  font-size: 0.82rem;
  font-weight: 400;
  letter-spacing: 0.01em;
  color: rgba(32, 37, 26, 0.6);
  transition: background 0.22s ease, color 0.22s ease, box-shadow 0.22s ease;
}
.seg-tab i { font-size: 1.05rem; color: rgba(32, 37, 26, 0.5); transition: color 0.22s ease; }
.seg-tab:hover { color: var(--ink-dark); }
.seg-tab:focus-visible { outline: 2px solid rgba(161, 121, 58, 0.4); outline-offset: 2px; }
.seg-tab.is-selected {
  background: var(--paper);
  color: var(--ink-dark);
  font-weight: 500;
  box-shadow: 0 2px 10px -6px rgba(32, 37, 26, 0.5);
}
.seg-tab.is-selected i { color: var(--gold); }

/* back-to-catalogue link overlaid on the hero image */
.stage-back {
  pointer-events: auto;
  text-decoration: none !important;
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  /* very subtle: faint frosted pill, no hard outline, no underline */
  border-color: rgba(246, 244, 236, 0.18);
  background: rgba(20, 24, 16, 0.22);
  color: rgba(246, 239, 226, 0.85);
  transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}
.stage-back:hover { color: #fff; border-color: rgba(246, 244, 236, 0.4); background: rgba(20, 24, 16, 0.42); }

/* ============ Design type grid ============ */
.type-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.6rem;
  margin-bottom: 1rem;
}
.type-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.4rem;
  padding: 1rem 0.75rem;
  border: 1px solid var(--hair);
  border-radius: 12px;
  background: rgba(246, 244, 236, 0.7);
  cursor: pointer;
  font: inherit;
  color: inherit;
  transition: border-color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
}
.type-card:hover { border-color: var(--hair-gold); }
.type-card:focus-visible { outline: 2px solid rgba(161, 121, 58, 0.4); outline-offset: 2px; }
.type-card.is-selected {
  border-color: var(--gold);
  background: linear-gradient(160deg, rgba(201, 162, 75, 0.12), rgba(201, 162, 75, 0.04));
  box-shadow: 0 0 0 1px var(--gold);
}
.type-ic {
  width: 42px; height: 42px;
  display: grid; place-items: center;
  border-radius: 10px;
  border: 1px solid var(--hair-gold);
  color: var(--gold);
  font-size: 1.4rem;
}
.type-name {
  font-family: var(--font-ui);
  font-weight: 500;
  font-size: 0.875rem;
  color: var(--ink-dark);
}
.type-price {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.72rem;
  color: rgba(32, 37, 26, 0.5);
}

/* size select row (design drawer) */
.size-select-row {
  display: flex;
  align-items: flex-end;
  gap: 1rem;
  padding: 0.9rem 0 0.2rem;
  border-top: 1px solid var(--hair);
  margin-top: 0.2rem;
}
.size-select-row .vf-select { flex: 1 1 auto; }
.size-chart-link {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  height: 38px;
  background: none;
  border: 0;
  border-bottom: 1px solid transparent;
  cursor: pointer;
  padding: 0;
  font-family: var(--font-ui);
  font-size: 0.78rem;
  color: var(--gold);
  text-decoration: none;
  white-space: nowrap;
  transition: border-color 0.2s ease;
}
.size-chart-link:hover { border-bottom-color: var(--gold); }

/* ============ Ring size chart modal ============ */
.sizechart-modal {
  position: fixed;
  inset: 0;
  z-index: 210;
  display: grid;
  place-items: center;
  padding: clamp(1rem, 4vh, 3rem) 1rem;
}
.sizechart-modal[hidden] { display: none; }
.sc-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(20, 24, 16, 0.5);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  opacity: 0;
  transition: opacity 0.4s ease;
}
.sizechart-modal.open .sc-backdrop { opacity: 1; }
.sc-panel {
  position: relative;
  width: min(560px, 100%);
  max-height: 88vh;
  overflow-y: auto;
  background: var(--bone);
  border: 1px solid rgba(161, 121, 58, 0.3);
  border-radius: 18px;
  padding: clamp(1.75rem, 4vw, 2.5rem);
  box-shadow: 0 50px 100px -40px rgba(20, 24, 16, 0.6);
  opacity: 0;
  transform: translateY(16px) scale(0.98);
  transition: opacity 0.45s ease, transform 0.55s var(--ease);
}
.sizechart-modal.open .sc-panel { opacity: 1; transform: none; }
.sc-close {
  position: absolute;
  top: 1rem; right: 1rem;
  width: 40px; height: 40px;
  border-radius: 50%;
  display: grid; place-items: center;
  background: rgba(32, 37, 26, 0.05);
  border: 1px solid rgba(32, 37, 26, 0.12);
  color: var(--ink-dark);
  cursor: pointer;
  font-size: 1.05rem;
  transition: background 0.2s ease, color 0.2s ease;
}
.sc-close:hover { background: rgba(32, 37, 26, 0.1); color: var(--gold); }
.sc-head { margin-bottom: 1.1rem; }
.sc-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-family: var(--font-ui);
  font-size: 0.65rem;
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--gold);
}
.sc-head h2 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.5rem, 3vw, 2rem);
  color: #1f3324;
  margin: 0.3rem 0 0.35rem;
}
.sc-sub {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.84rem;
  line-height: 1.5;
  color: rgba(32, 37, 26, 0.65);
  margin: 0;
}
.sc-table-wrap {
  max-height: 320px;
  overflow-y: auto;
  border: 1px solid var(--hair);
  border-radius: 12px;
}
.sc-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-ui);
  font-variant-numeric: tabular-nums;
}
.sc-table th, .sc-table td {
  padding: 0.55rem 1rem;
  text-align: left;
  font-size: 0.84rem;
  border-bottom: 1px solid var(--hair);
}
.sc-table thead th {
  position: sticky;
  top: 0;
  background: var(--paper);
  font-weight: 500;
  font-size: 0.68rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(32, 37, 26, 0.55);
}
.sc-table tbody tr:last-child td { border-bottom: 0; }
.sc-table tbody tr:hover { background: rgba(201, 162, 75, 0.06); }
.sc-table td:first-child { font-weight: 500; color: var(--ink-dark); }
.sc-how {
  margin-top: 1.25rem;
  padding-top: 1.1rem;
  border-top: 1px solid var(--hair);
}
.sc-how h3 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.25rem;
  color: #1f3324;
  margin: 0 0 0.5rem;
}
.sc-how ul {
  margin: 0;
  padding-left: 1.1rem;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
.sc-how li {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.84rem;
  line-height: 1.5;
  color: rgba(32, 37, 26, 0.68);
}
.sc-how b { font-weight: 500; color: var(--ink-dark); }

/* ============ Quick-facts band (under the hero) ============ */
.quick-facts {
  background: var(--bone, #f4f1e9);
  border-top: 1px solid var(--hair);
  padding: clamp(1.5rem, 4vh, 2.75rem) var(--pad-x);
}
.qf-inner {
  max-width: 1100px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: clamp(0.9rem, 2vh, 1.3rem);
}
/* compact connected facts strip — dense, left-aligned, uses the full width */
/* facts read as a light spec row, not a heavy boxed card */
.qf-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  background: transparent;
  border: 0;
  border-top: 1px solid rgba(201, 162, 75, 0.2);
  border-bottom: 1px solid rgba(201, 162, 75, 0.2);
  border-radius: 0;
  box-shadow: none;
}
.qf-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.22rem;
  padding: 0.75rem 1.15rem;
  text-align: left;
  border-right: 1px solid rgba(201, 162, 75, 0.16);
}
.qf-card:first-child { padding-left: 0.15rem; }
.qf-card:last-child { border-right: 0; }
.qf-k {
  font-family: var(--font-ui);
  font-size: 0.56rem;
  font-weight: 600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: rgba(32, 37, 26, 0.42);
}
.qf-v {
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: 0.9rem;
  line-height: 1.15;
  color: var(--ink-dark);
}
/* weight card leads with carat, ratti quiet inline beside it */
.qf-card--weight .qf-v {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  gap: 0.35rem;
}
.qf-carat {
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: 0.9rem;
  line-height: 1.15;
  color: var(--ink-dark);
}
.qf-ratti {
  font-family: var(--font-ui);
  font-weight: 400;
  font-size: 0.68rem;
  color: rgba(32, 37, 26, 0.42);
}
.qf-sku {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  margin: 0;
  font-family: var(--font-ui);
  font-size: 0.8rem;
  color: rgba(32, 37, 26, 0.6);
}
.qf-sku-k {
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-size: 0.7rem;
  color: rgba(32, 37, 26, 0.5);
}
.qf-sku-v {
  font-weight: 500;
  color: var(--ink-dark);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
}

/* rhythm for the facts + reassurance sections now living inside the panel */
.config-inner > .qf-cards { margin-top: clamp(1.5rem, 3.2vh, 2.2rem); }
.config-inner > .qf-cert { margin-top: clamp(1.4rem, 3vh, 2rem); }
.config-inner > .svc-tiles { margin-top: 1.9rem; }
.config-inner > .qf-sku { margin: 1.1rem 0 0; }

/* small gold eyebrow that heads a section within the panel */
.section-eyebrow {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  margin: clamp(1.5rem, 3.2vh, 2.2rem) 0 0.5rem;
  font-family: var(--font-ui);
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--gold);
}
.section-eyebrow .se-rule {
  width: 26px;
  height: 1px;
  background: linear-gradient(90deg, var(--hair-gold), transparent);
}

/* inline metal picker — options always visible in the panel, no drawer */
.metal-pick {
  margin-top: 0.9rem;
  padding: clamp(0.9rem, 2vh, 1.25rem);
  border: 1px solid var(--hair-gold);
  border-radius: 16px;
  background: rgba(246, 244, 236, 0.5);
  transition: box-shadow 0.45s ease;
}
.metal-pick.is-flash { box-shadow: 0 0 0 3px rgba(161, 121, 58, 0.35); }
.metal-pick-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem 1rem;
  flex-wrap: wrap;
  margin-bottom: 0.55rem;
}
.mp-title {
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-dark);
}
.mp-title .mp-hint { color: rgba(32, 37, 26, 0.45); font-weight: 500; }
.metal-pick .drawer-helper { margin: 0 0 0.7rem; }
/* compact metal rows — title only, tighter height */
.metal-pick .opt-list { margin: 0; gap: 0.4rem; }
.metal-pick .opt-card { padding: 0.5rem 0.85rem; gap: 0.7rem; }
/* subtle radio indicator */
.metal-pick .opt-card::before {
  content: "";
  flex: none;
  order: -1;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  border: 1.5px solid rgba(32, 37, 26, 0.25);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.metal-pick .opt-card[aria-checked="true"]::before,
.metal-pick .opt-card.is-selected::before {
  border-color: var(--gold);
  box-shadow: inset 0 0 0 3.5px var(--gold);
}
.metal-pick .opt-swatch { width: 24px; height: 24px; }
.metal-pick .opt-swatch i { font-size: 0.95rem; }
.metal-pick .opt-text strong { font-size: 0.95rem; }

/* certification — reads as included, not an upsell */
.qf-cert {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.qf-cert-k {
  font-family: var(--font-ui);
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--madder, #8a2b2b);
}
.qf-cert-k .qf-req { color: var(--gold); }
.qf-cert-card {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.9rem 1.2rem;
  background: var(--paper, #fbf9f3);
  border: 1px solid var(--hair-gold);
  border-radius: 12px;
  font-family: var(--font-ui);
  font-size: 0.95rem;
  color: var(--ink-dark);
}
.qf-cert-card i { font-size: 1.2rem; color: var(--gold); }
.qf-cert-card strong { font-weight: 600; }
.qf-cert-dot { color: rgba(32, 37, 26, 0.35); }

/* service rows — proof + guidance CTAs */
/* service tiles — two tinted, gradient-washed action cards side by side */
.svc-tiles {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.8rem;
}
.svc-tile {
  position: relative;
  isolation: isolate;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 0.55rem;
  padding: 0.5rem 0.65rem;
  border-radius: 11px;
  border: 1px solid rgba(201, 162, 75, 0.16);
  text-decoration: none;
  overflow: hidden;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.svc-tile::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
}
.svc-tile--wa::before { background: linear-gradient(135deg, rgba(37, 211, 102, 0.15), rgba(37, 211, 102, 0.02) 58%), #fdfcf8; }
.svc-tile--consult::before { background: linear-gradient(135deg, rgba(161, 121, 58, 0.17), rgba(161, 121, 58, 0.02) 58%), #fdfcf8; }
.svc-tile:hover { transform: translateY(-3px); box-shadow: 0 18px 40px -28px rgba(32, 37, 26, 0.55); }
.svc-ic {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border-radius: 9px;
  font-size: 1rem;
  background: #fff;
  box-shadow: 0 5px 14px -9px rgba(32, 37, 26, 0.45);
}
.svc-tile--wa .svc-ic { color: #1eb055; }
.svc-tile--consult .svc-ic { color: var(--gold); }
.svc-body { display: flex; flex-direction: column; gap: 0.12rem; flex: 1 1 auto; min-width: 0; }
.svc-body strong {
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: 0.8rem;
  line-height: 1.25;
  color: var(--ink-dark);
}
.svc-from { font-weight: 400; font-size: 0.78rem; color: rgba(32, 37, 26, 0.5); white-space: nowrap; }
.svc-body span {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.78rem;
  line-height: 1.35;
  color: rgba(32, 37, 26, 0.58);
}
.svc-go {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  margin: 0 0 0 auto;
  flex: none;
  white-space: nowrap;
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: 0.76rem;
}
.svc-tile--wa .svc-go { color: #1a9c4d; }
.svc-tile--consult .svc-go { color: var(--gold); }
.svc-go i { transition: transform 0.2s ease; }
.svc-tile:hover .svc-go i { transform: translate(2px, -2px); }

@media (max-width: 620px) {
  .qf-cards { grid-template-columns: 1fr; }
  .svc-tiles { grid-template-columns: 1fr; }
}

/* ============ Similar stones ============ */
.similar {
  background: var(--bone, #f4f1e9);
  border-top: 1px solid var(--hair);
  padding: clamp(3rem, 7vh, 5.5rem) var(--pad-x);
}
.similar-inner { max-width: 1180px; margin: 0 auto; text-align: center; }
.similar-eyebrow {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.7rem;
  margin: 0 0 0.9rem;
  font-family: var(--font-ui);
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--gold);
}
.similar-eyebrow .se-rule {
  width: 34px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--hair-gold));
}
.similar-eyebrow .se-rule--r { background: linear-gradient(90deg, var(--hair-gold), transparent); }
.similar-title {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.8rem, 3.4vw, 2.6rem);
  color: var(--ink-dark);
  margin: 0 0 0.5rem;
}
.similar-sub {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.95rem;
  color: rgba(32, 37, 26, 0.6);
  margin: 0 auto clamp(2rem, 4vh, 3rem);
  max-width: 40ch;
}
/* arrow carousel */
.similar-carousel { position: relative; }
.similar-viewport {
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.similar-viewport::-webkit-scrollbar { display: none; }
.similar-track {
  display: flex;
  gap: clamp(1rem, 2vw, 1.5rem);
  padding: 0.4rem 2px;
}
.similar-track > .stone-card {
  flex: 0 0 clamp(250px, 31%, 330px);
  scroll-snap-align: start;
}
.sim-arrow {
  position: absolute;
  top: 42%;
  transform: translateY(-50%);
  z-index: 4;
  width: 46px;
  height: 46px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  border: 1px solid var(--hair-gold);
  background: #fff;
  color: var(--ink-dark);
  cursor: pointer;
  box-shadow: 0 12px 28px -16px rgba(32, 37, 26, 0.5);
  transition: background 0.2s ease, transform 0.2s ease, opacity 0.2s ease;
}
.sim-arrow:hover { background: var(--paper, #fbf9f3); transform: translateY(-50%) scale(1.05); }
.sim-arrow i { font-size: 1.25rem; }
.sim-arrow--prev { left: clamp(-10px, -1vw, 0px); }
.sim-arrow--next { right: clamp(-10px, -1vw, 0px); }
.sim-arrow[disabled] { opacity: 0.3; cursor: default; pointer-events: none; }

/* catalogue-exact card (ported from stones.css) */
.similar .stone-card { position: relative; text-align: left; }
.similar .stone-card-link { text-decoration: none; display: block; transition: transform 0.5s var(--ease); }
.similar .stone-card-link:hover { transform: translateY(-4px); }
.similar .soc-media {
  position: relative;
  aspect-ratio: 1 / 1;
  border: 1px solid var(--hair);
  border-radius: 14px;
  overflow: hidden;
  background:
    radial-gradient(120% 80% at 50% 18%, var(--glow, rgba(201, 162, 75, 0.22)) 0%, rgba(23, 27, 18, 0) 60%),
    url("assets/consult-card-bg.jpg") center / cover;
  display: grid;
  place-items: center;
  transition: border-color 0.35s ease, box-shadow 0.35s ease;
}
.similar .stone-card-link:hover .soc-media { border-color: rgba(32, 37, 26, 0.2); box-shadow: 0 20px 40px -26px rgba(32, 37, 26, 0.35); }
.similar .soc-media img { width: 60%; height: auto; filter: drop-shadow(0 14px 22px rgba(0, 0, 0, 0.16)); transition: transform 0.6s var(--ease); z-index: 1; }
.similar .stone-card-link:hover .soc-media img { transform: scale(1.05); }
.similar .soc-cert { position: absolute; top: 0.7rem; right: 0.7rem; z-index: 3; display: grid; place-items: center; }
.similar .soc-cert-img { width: 20px; height: auto; display: block; filter: drop-shadow(0 1px 3px rgba(20, 24, 16, 0.4)); }
.similar .soc-head { display: flex; align-items: baseline; justify-content: space-between; gap: 0.75rem; margin: 1.1rem 0 0.4rem; }
.similar .soc-planet {
  font-family: var(--font-ui); font-size: 0.625rem; font-weight: 500;
  letter-spacing: 0.26em; text-transform: uppercase; color: var(--gold);
  margin: 0; display: flex; align-items: center; gap: 0.45rem; white-space: nowrap;
}
.similar .soc-planet .glyph { font-size: 0.9rem; opacity: 0.85; }
.similar .soc-carat {
  font-family: var(--font-ui); font-size: 0.8125rem; font-weight: 600; color: var(--ink-dark);
  letter-spacing: 0.01em; white-space: nowrap; font-variant-numeric: tabular-nums;
}
.similar .soc-name {
  font-family: var(--font-ui); font-weight: 600; font-size: 1.125rem; line-height: 1.2;
  letter-spacing: -0.01em; color: var(--ink-dark); margin: 0 0 0.6rem;
}
.similar .soc-sub { display: block; margin-top: 0.1rem; font-family: var(--font-ui); font-weight: 400; font-size: 0.78rem; letter-spacing: 0.01em; color: rgba(32, 37, 26, 0.5); }
.similar .soc-meta { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; margin: 0 0 0.7rem; }
.similar .soc-origin { display: inline-flex; align-items: center; gap: 0.35rem; min-width: 0; font-family: var(--font-ui); font-size: 0.8125rem; font-weight: 500; letter-spacing: 0.01em; color: var(--ink-dark); }
.similar .soc-origin i { display: none; }
.similar .soc-origin::before {
  content: "Origin";
  font-size: 0.56rem; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase;
  color: rgba(32, 37, 26, 0.4); flex: none;
}
.similar .soc-cut { font-family: var(--font-ui); font-weight: 300; font-size: 0.75rem; letter-spacing: 0.01em; color: rgba(32, 37, 26, 0.55); white-space: nowrap; text-align: right; font-variant-numeric: tabular-nums; }
.similar .soc-foot { display: flex; align-items: baseline; justify-content: space-between; gap: 0.75rem; padding-top: 0.7rem; border-top: 1px solid var(--hair); }
.similar .soc-price { font-family: var(--font-ui); font-size: 1.125rem; font-weight: 600; color: var(--ink-dark); margin: 0; font-variant-numeric: tabular-nums; }
.similar .soc-view {
  display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.45rem 0.95rem;
  border: 1px solid rgba(91, 99, 74, 0.5); border-radius: 999px;
  font-family: var(--font-ui); font-size: 0.7rem; font-weight: 500; letter-spacing: 0.06em;
  text-transform: uppercase; color: var(--sage); white-space: nowrap;
  transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.similar .stone-card-link:hover .soc-view { background: rgba(91, 99, 74, 0.1); border-color: var(--sage); }
.similar .soc-view i { display: none; }

/* ============ Responsive ============ */
/* desktop: lock the product view to a single screen — no page scrolling.
   The sticky purchase bar is hidden on this first screen, so the layout claims
   the full height below the nav (no --bar-h reservation, else a bottom gap). */
/* desktop: the gem gallery pins full-height while the product panel scrolls past it */
@media (min-width: 961px) {
  .buy-gallery {
    position: sticky;
    top: var(--nav-h);
    height: calc(100dvh - var(--nav-h));
    align-self: start;
  }
  .buy-config {
    align-items: flex-start;
    overflow: visible;
    padding-bottom: clamp(2.5rem, 6vh, 4.5rem);
  }
}

@media (max-width: 960px) {
  /* stack: image hero on top, then configurator */
  .buy-layout { grid-template-columns: 1fr; }
  .buy-gallery {
    position: static;
    height: clamp(58vh, 62vh, 620px);
    min-height: 360px;
  }
  .buy-config { justify-content: flex-start; }
  .config-inner { max-width: 620px; }
  .drawer { width: 100%; border-left: 0; }
  .pdp-footer { margin-bottom: calc(8.5rem + env(safe-area-inset-bottom, 0px)); }
  .bb-trust { display: none; }
  .bb-consult { display: none; }
  .bb-total { display: none; }
}
@media (max-width: 620px) {
  .cf-grid, .cf-readpair, .vf-selects { grid-template-columns: 1fr; }
  .type-grid { grid-template-columns: 1fr 1fr; }
  .size-select-row { flex-direction: column; align-items: stretch; gap: 0.6rem; }
  .size-chart-link { height: auto; }
  .buy-gallery { height: 52vh; }
  /* stack the bar: product line on top, then full-width CTA */
  .buybar-inner { flex-wrap: wrap; gap: 0.6rem 1rem; }
  .bb-product { flex: 1 1 100%; order: 1; }
  .bb-actions { flex: 1 1 100%; order: 2; }
  .bb-add { flex: 1 1 auto; min-width: 0; }
  .bb-wa { display: none; }
  .pdp-footer { margin-bottom: calc(10rem + env(safe-area-inset-bottom, 0px)); }
  /* keep the breakdown popover from overflowing off the right edge on narrow screens */
  .bb-bd-pop { left: auto; right: 0; width: min(260px, calc(100vw - 2rem)); }
}

/* ============ Reduced motion ============ */
@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; animation: none !important; }
  .stage.is-zooming .stage-img { transform: none; }
  .stage.is-photo.is-zooming .stage-img { transform: none; }
  .stage-hint { display: none; }
  .drawer, .drawer-backdrop,
  .sc-backdrop, .sc-panel, .lb-backdrop, .lb-panel { transition: none; }
}

/* ============================================================
   Unified purchase-journey stepper (shared by buy.html + setup.html)
   Select -> Design -> Energise -> Pay. Gives the shopper a sense of
   where they are across the two pages of the flow.
   ============================================================ */
.flow-steps {
  display: flex; align-items: center; gap: 0.6rem;
  list-style: none; margin: 0 0 1.6rem; padding: 0;
}
.flow-step {
  display: flex; align-items: center; gap: 0.6rem;
  font-family: var(--font-ui); font-size: 0.82rem; font-weight: 500;
  letter-spacing: 0.01em;
  color: rgba(32, 37, 26, 0.4); white-space: nowrap; text-decoration: none;
  transition: color 0.25s ease;
}
.flow-step-n {
  display: grid; place-items: center; flex: none;
  width: 30px; height: 30px; border-radius: 50%;
  font-family: var(--font-ui); font-size: 0.78rem; font-weight: 600;
  color: rgba(32, 37, 26, 0.45);
  background: transparent; border: 1.5px solid rgba(32, 37, 26, 0.14);
  transition: background 0.3s var(--ease), border-color 0.3s var(--ease), color 0.3s var(--ease), box-shadow 0.3s var(--ease);
}
/* upcoming steps: quiet */
.flow-step { }
/* active: solid sage disc with a soft halo */
.flow-step.is-active { color: var(--ink-dark, #20251a); font-weight: 600; }
.flow-step.is-active .flow-step-n {
  background: #4c543e; border-color: #4c543e; color: #f4f1e9;
  box-shadow: 0 0 0 4px rgba(76, 84, 62, 0.14);
}
/* done: gold ring with a check, clickable to jump back */
.flow-step.is-done { color: #8a5f22; cursor: pointer; }
.flow-step.is-done .flow-step-n {
  background: rgba(161, 121, 58, 0.12); border-color: #a1793a;
  font-size: 0; position: relative;
}
.flow-step.is-done .flow-step-n::after {
  content: "\2713"; position: absolute; inset: 0;
  display: grid; place-items: center;
  font-size: 0.82rem; font-weight: 700; color: #8a5f22;
}
.flow-step.is-done:hover .flow-step-n { background: rgba(161, 121, 58, 0.22); }
/* connectors: gold once passed, quiet ahead */
.flow-step-bar {
  flex: 1; max-width: 54px; height: 2px; border-radius: 2px;
  background: rgba(32, 37, 26, 0.12);
  transition: background 0.3s ease;
}
.flow-step.is-done + .flow-step-bar { background: rgba(161, 121, 58, 0.5); }
@media (max-width: 680px) {
  .flow-step-l { display: none; }
  .flow-step-bar { max-width: none; }
}

/* ============================================================
   Need-help WhatsApp CTA (below the picker steps)
   ============================================================ */
/* Inline actions below the configurator (first screen, before the sticky bar) */
.config-actions {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  margin-top: clamp(1.5rem, 3.2vh, 2.2rem);
}
.config-consult {
  flex: 1 1 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 50px;
  padding: 0 1.2rem;
  border-radius: 999px;
  border: 1px solid var(--hair);
  background: rgba(246, 244, 236, 0.6);
  color: var(--ink-dark);
  font-family: var(--font-ui);
  font-size: 0.9rem;
  text-decoration: none;
  white-space: nowrap;
  transition: border-color 0.2s ease, color 0.2s ease;
}
.config-consult:hover { border-color: var(--hair-gold); color: var(--gold); }
.config-continue {
  flex: 1 1 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  height: 50px;
  padding: 0 1.6rem;
  border-radius: 999px;
  background: url("assets/consult-card-bg.jpg") center / cover;
  border: 0;
  color: #fff;
  font-family: var(--font-ui);
  font-size: 0.95rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(20, 25, 15, 0.18);
  transition: background 0.25s ease, box-shadow 0.25s ease, transform 0.2s ease;
}
.config-continue:hover {
  background: linear-gradient(rgba(0,0,0,0.22), rgba(0,0,0,0.22)), url("assets/consult-card-bg.jpg") center / cover;
  box-shadow: 0 8px 20px rgba(20, 25, 15, 0.24);
  transform: translateY(-1px);
}
.config-continue:active { transform: translateY(1px); }

.help-wa {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  margin-top: clamp(0.7rem, 1.8vh, 1.2rem);
  padding: 0.3rem 0.1rem;
  text-decoration: none;
}
.help-wa-ic {
  flex: none;
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: #25d366;
  color: #fff;
  font-size: 1.05rem;
}
.help-wa:hover .help-wa-cta { color: var(--ink-dark); }
.help-wa:hover .help-wa-cta i { transform: translate(1px, -1px); }
.help-wa-cta i { transition: transform 0.2s ease; }
.help-wa-text { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 0.1rem; }
.help-wa-text strong {
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--ink-dark);
  line-height: 1.2;
}
.help-wa-text span {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.8rem;
  color: rgba(32, 37, 26, 0.6);
  line-height: 1.35;
}
.help-wa-cta {
  flex: none;
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-family: var(--font-ui);
  font-weight: 400;
  font-size: 0.78rem;
  letter-spacing: 0.01em;
  color: rgba(32, 37, 26, 0.55);
  white-space: nowrap;
}
.help-wa-cta i { font-size: 0.8rem; }
@media (max-width: 520px) {
  .help-wa-cta span, .help-wa-cta { font-size: 0; gap: 0; }
  .help-wa-cta i { font-size: 1rem; }
}

/* ============================================================
   Hero: top-align the configurator so it uses the upper space
   ============================================================ */
@media (min-width: 961px) {
  .buy-config {
    align-items: flex-start;
    overflow: visible;
    padding-top: clamp(2rem, 6vh, 4.5rem);
  }
}

/* ============================================================
   Product detail — the full record (accordions + guarantee)
   ============================================================ */
.pdp-detail {
  background: var(--bone);
  border-top: 1px solid var(--hair);
}
.pdp-detail-inner {
  max-width: 1080px;
  margin: 0 auto;
  padding: clamp(3rem, 7vh, 5.5rem) var(--pad-x) clamp(2.5rem, 5vh, 3.5rem);
}
.pdp-detail-head { text-align: center; margin-bottom: clamp(2rem, 4vh, 3rem); }
.pdp-eyebrow {
  display: inline-flex; align-items: center; gap: 0.85rem;
  font-family: var(--font-ui);
  font-size: 0.6875rem; font-weight: 500;
  letter-spacing: 0.26em; text-transform: uppercase;
  color: var(--gold);
}
.pdp-eyebrow-rule { width: 42px; height: 1px; background: var(--hair-gold); }
.pdp-detail-title {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.9rem, 4vw, 2.9rem);
  line-height: 1.05;
  color: var(--ink-dark);
  margin: 0.85rem 0 0;
}
.pdp-detail-sub {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: clamp(0.9rem, 1.4vw, 1rem);
  line-height: 1.6;
  color: rgba(32, 37, 26, 0.66);
  max-width: 46ch;
  margin: 0.7rem auto 0;
}

/* Accordions — subtle, hairline-separated */
.acc {
  border-top: 1px solid var(--hair);
  max-width: 860px;
  margin: 0 auto;
}
.acc-item { border-bottom: 1px solid var(--hair); }
.acc-head {
  display: flex; align-items: center; gap: 1rem;
  padding: 1.15rem 0.25rem;
  cursor: pointer;
  list-style: none;
  transition: color 0.2s ease;
}
.acc-head::-webkit-details-marker { display: none; }
.acc-head:hover { color: var(--gold); }
.acc-head:focus-visible { outline: 2px solid rgba(161, 121, 58, 0.4); outline-offset: 3px; border-radius: 6px; }
.acc-ic {
  flex: none;
  display: grid; place-items: center;
  width: 40px; height: 40px;
  border-radius: 50%;
  border: 1px solid var(--hair-gold);
  background: rgba(161, 121, 58, 0.06);
  color: var(--gold);
  font-size: 1.15rem;
}
.acc-title {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.05rem, 1.8vw, 1.3rem);
  color: var(--ink-dark);
  line-height: 1.1;
}
.acc-note {
  margin-left: auto;
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.78rem;
  color: rgba(32, 37, 26, 0.5);
  white-space: nowrap;
}
.acc-chev {
  flex: none;
  display: grid; place-items: center;
  width: 26px; height: 26px;
  color: var(--sage);
  transition: transform 0.3s var(--ease);
}
.acc-item[open] > .acc-head .acc-chev { transform: rotate(180deg); }
.acc-item[open] > .acc-head .acc-title { color: var(--gold); }
.acc-body {
  padding: 0.25rem 0.25rem 1.75rem;
  animation: accReveal 0.35s var(--ease);
}
@keyframes accReveal {
  from { opacity: 0; transform: translateY(-6px); }
  to { opacity: 1; transform: translateY(0); }
}
.acc-lead {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.1rem;
  color: var(--ink-dark);
  margin: 0 0 1.1rem;
}

/* Specification grid */
.spec-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 clamp(2rem, 5vw, 4rem);
  margin: 0;
}
.spec-row {
  display: flex; align-items: baseline; justify-content: space-between; gap: 1rem;
  padding: 0.7rem 0;
  border-bottom: 1px solid var(--hair);
}
.spec-row dt {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.82rem;
  color: rgba(32, 37, 26, 0.6);
}
.spec-row dd {
  margin: 0;
  font-family: var(--font-ui);
  font-weight: 500;
  font-size: 0.88rem;
  text-align: right;
  color: var(--ink-dark);
}

/* Certificate — checkable claims */
.claim-list { list-style: none; margin: 0 0 1.5rem; padding: 0; display: grid; gap: 0.85rem; }
.claim-list li {
  display: flex; align-items: flex-start; gap: 0.7rem;
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.92rem;
  line-height: 1.5;
  color: rgba(32, 37, 26, 0.72);
}
.claim-list li strong { font-weight: 600; color: var(--ink-dark); }
.claim-list li i { color: var(--sage); font-size: 1.2rem; flex: none; margin-top: 0.05rem; }
.lab-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 0.55rem; }
.lab-chip-label {
  font-family: var(--font-ui);
  font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase;
  color: rgba(32, 37, 26, 0.5);
  margin-right: 0.3rem;
}
.lab-chip {
  padding: 0.4rem 0.85rem;
  border-radius: 999px;
  border: 1px solid var(--hair-gold);
  background: rgba(161, 121, 58, 0.05);
  font-family: var(--font-ui);
  font-size: 0.78rem; font-weight: 500;
  color: var(--gold);
}

/* Wear & care — icon-led 2x2 */
.guide-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.4rem 2.5rem; }
.guide-item { display: flex; align-items: flex-start; gap: 0.9rem; }
.guide-ic {
  flex: none;
  display: grid; place-items: center;
  width: 42px; height: 42px;
  border-radius: 12px;
  background: rgba(161, 121, 58, 0.08);
  color: var(--gold);
  font-size: 1.25rem;
}
.guide-item strong {
  display: block;
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--ink-dark);
  margin-bottom: 0.2rem;
}
.guide-item p {
  margin: 0;
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.85rem;
  line-height: 1.5;
  color: rgba(32, 37, 26, 0.66);
}

/* Policy — 3 columns */
.policy-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(1rem, 2vw, 1.5rem); }
.policy-col {
  background: #fbf9f3;
  border: 1px solid var(--hair);
  border-radius: 14px;
  padding: clamp(1.35rem, 2vw, 1.75rem);
}
.policy-head {
  display: flex; align-items: center; gap: 0.7rem;
  margin-bottom: 1rem; padding-bottom: 0.9rem;
  border-bottom: 1px solid var(--hair);
}
.policy-ic {
  flex: none;
  display: grid; place-items: center;
  width: 38px; height: 38px;
  border-radius: 50%;
  background: rgba(161, 121, 58, 0.08);
  color: var(--gold);
  font-size: 1.1rem;
}
.policy-col h3 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.2rem;
  color: var(--ink-dark);
  margin: 0;
  line-height: 1.1;
}
.policy-col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.6rem; }
.policy-col li {
  position: relative;
  padding-left: 1rem;
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.85rem;
  line-height: 1.5;
  color: rgba(32, 37, 26, 0.68);
}
.policy-col li::before {
  content: ""; position: absolute; left: 0; top: 0.6em;
  width: 4px; height: 4px; border-radius: 50%; background: var(--gold);
}
.policy-col li strong { font-weight: 600; color: var(--ink-dark); }

/* Guarantee band — dark sage, full-bleed (now sits right after the configurator) */
.pdp-guarantee {
  background: #3a4232;
  border-top: 1px solid rgba(201, 162, 75, 0.2);
  border-bottom: 1px solid rgba(201, 162, 75, 0.2);
}
.pdp-guarantee-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: clamp(2rem, 4vh, 2.75rem) var(--pad-x);
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: clamp(1.25rem, 3vw, 2.5rem);
}
.pg-item {
  display: flex; flex-direction: column; align-items: center;
  text-align: center; gap: 0.85rem;
  position: relative;
}
/* hairline dividers between pillars */
.pg-item:not(:first-child)::before {
  content: "";
  position: absolute;
  left: calc(-0.5 * clamp(1.25rem, 3vw, 2.5rem));
  top: 6%; bottom: 6%;
  width: 1px;
  background: rgba(201, 162, 75, 0.18);
}
.pg-item > i {
  flex: none;
  display: grid; place-items: center;
  width: 52px; height: 52px;
  border-radius: 50%;
  border: 1px solid rgba(201, 162, 75, 0.4);
  background: rgba(201, 162, 75, 0.08);
  color: var(--gold-bright);
  font-size: 1.5rem;
  line-height: 1;
}
.pg-text { display: flex; flex-direction: column; align-items: center; gap: 0.3rem; min-width: 0; }
.pg-text strong {
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: 0.95rem;
  color: #f4f1e9;
  line-height: 1.2;
}
.pg-text span {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.78rem;
  line-height: 1.5;
  color: rgba(244, 241, 233, 0.66);
  max-width: 22ch;
}

/* ---- Specifications & policy: refined full-width bands ---- */
.spec-band { margin-top: clamp(0.5rem, 2vh, 1.5rem); }
.spec-band-head,
.policy-band .spec-band-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 1rem;
  margin-bottom: 1.4rem; padding-bottom: 0.9rem;
  border-bottom: 1px solid var(--hair);
}
.spec-band-title {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.35rem, 2.4vw, 1.75rem);
  color: var(--ink-dark);
  margin: 0;
}
.spec-band-note {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.82rem;
  letter-spacing: 0.02em;
  color: rgba(32, 37, 26, 0.5);
  white-space: nowrap;
}
.spec-grid { row-gap: 0; }
.spec-row { padding: 0.85rem 0; }
.policy-band {
  margin-top: clamp(2.5rem, 6vh, 4.5rem);
  background: linear-gradient(180deg, #f4efe2, #efe8d6);
  border: 1px solid var(--hair-gold);
  border-radius: 20px;
  padding: clamp(1.75rem, 3.5vw, 2.75rem);
}
.policy-band .spec-band-head { border-bottom-color: var(--hair-gold); }

/* ---- Alternating full-bleed split sections (pukhraj-style) ---- */
.pdp-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: stretch;
  border-top: 1px solid var(--hair);
}
.pdp-split-media {
  position: relative;
  margin: 0;
  align-self: stretch;
  overflow: hidden;
  background: linear-gradient(150deg, rgba(201, 162, 75, 0.14), #ece7db);
}
.pdp-split-media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  min-height: clamp(200px, 24vh, 300px);
  object-fit: cover;
  display: block;
}
.pdp-split-media figcaption {
  position: absolute;
  left: clamp(1rem, 2vw, 1.75rem);
  bottom: clamp(0.9rem, 2vw, 1.5rem);
  margin: 0;
  font-family: var(--font-ui);
  font-size: 0.72rem;
  letter-spacing: 0.02em;
  color: rgba(246, 241, 233, 0.82);
  text-shadow: 0 1px 10px rgba(10, 12, 7, 0.55);
}
.pdp-split-copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(3rem, 7vh, 5rem) clamp(1.5rem, 5vw, 4.5rem);
  max-width: 620px;
}
.pdp-split-lede { margin-bottom: 1.25rem; }
.pdp-split-list { gap: 1rem; }
/* copy sits on the right in a normal split → nudge toward the media gutter */
.pdp-split:not(.pdp-split--rev) .pdp-split-copy { margin-right: auto; }
/* copy sits on the left in a reversed split → nudge toward the media gutter */
.pdp-split--rev .pdp-split-copy { margin-left: auto; }
.pdp-split-idx {
  font-family: var(--font-ui);
  font-size: 0.66rem; font-weight: 600;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--gold);
  margin: 0 0 0.85rem;
}
.pdp-split-h {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.65rem, 3vw, 2.5rem);
  line-height: 1.08;
  color: var(--ink-dark);
  margin: 0 0 0.9rem;
  max-width: 18ch;
}
.pdp-split-lede {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: clamp(0.9rem, 1.3vw, 1rem);
  line-height: 1.6;
  color: rgba(32, 37, 26, 0.66);
  max-width: 42ch;
  margin: 0 0 1.75rem;
}
.pdp-split-list {
  list-style: none; margin: 0; padding: 0;
  display: grid; gap: 1.25rem;
}
.pdp-split-list li { display: flex; align-items: flex-start; gap: 0.9rem; }
.psl-ic {
  flex: none;
  display: grid; place-items: center;
  width: 42px; height: 42px;
  border-radius: 50%;
  border: 1px solid var(--hair-gold);
  background: rgba(161, 121, 58, 0.06);
  color: var(--gold);
  font-size: 1.3rem;
}
.pdp-split-list strong {
  display: block;
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--ink-dark);
  margin-bottom: 0.15rem;
}
.pdp-split-list p {
  margin: 0;
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.85rem;
  line-height: 1.5;
  color: rgba(32, 37, 26, 0.64);
}
.pdp-split .lab-chips { margin-top: 1.75rem; }

/* ============================================================
   Consult / efficacy offers (ported from the homepage)
   ============================================================ */
.pdp-offers { background: #faf8f2; }
.pdp-offers-inner {
  max-width: 1180px;
  margin: 0 auto;
  padding: clamp(3rem, 7vh, 5.5rem) var(--pad-x) clamp(2.5rem, 5vh, 4rem);
}
.pdp-offers-title {
  text-align: center;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.9rem, 4vw, 3rem);
  line-height: 1.05;
  color: var(--ink-dark);
  margin: 0 0 clamp(2rem, 4vh, 3rem);
}
.pdp-offers-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1.25rem, 2.5vw, 2rem);
}
.pdp-offer {
  position: relative;
  overflow: hidden;
  min-height: 300px;
  padding: clamp(1.75rem, 3vw, 2.5rem);
  border-radius: 20px;
  border: 1px solid var(--hair-gold);
  background: linear-gradient(105deg, rgba(246, 240, 224, 0.7) 0%, rgba(246, 240, 224, 0.2) 55%, rgba(246, 240, 224, 0) 100%), url("assets/offer-bg.png") center / cover;
  box-shadow: 0 26px 54px -40px rgba(32, 37, 26, 0.5);
}
.pdp-offer-eyebrow {
  font-family: var(--font-ui);
  font-size: 0.62rem; font-weight: 600;
  letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--gold);
  margin: 0 0 0.7rem;
}
.pdp-offer-h {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.4rem, 2.2vw, 1.9rem);
  line-height: 1.08;
  color: var(--ink-dark);
  margin: 0 0 0.9rem;
  max-width: 15ch;
  position: relative; z-index: 2;
}
.pdp-offer-name {
  font-family: var(--font-display);
  font-size: 1.15rem;
  color: var(--ink-dark);
  margin: 0 0 0.35rem;
  position: relative; z-index: 2;
}
.pdp-offer-copy {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.9rem;
  line-height: 1.55;
  color: rgba(32, 37, 26, 0.68);
  margin: 0 0 1.4rem;
  max-width: 30ch;
  position: relative; z-index: 2;
}
.pdp-offer-copy--lead { margin-top: 0.2rem; }
.pdp-offer-actions { display: flex; flex-wrap: wrap; gap: 0.7rem; position: relative; z-index: 2; }
.pdp-btn {
  display: inline-flex; align-items: center;
  height: 42px; padding: 0 1.3rem;
  border-radius: 999px;
  font-family: var(--font-ui); font-size: 0.85rem; font-weight: 500;
  text-decoration: none;
  transition: transform 0.2s ease, box-shadow 0.25s ease, background 0.25s ease;
}
.pdp-btn--fill {
  background: url("assets/consult-card-bg.jpg") center / cover;
  color: #fff;
  box-shadow: 0 4px 14px rgba(20, 25, 15, 0.18);
}
.pdp-btn--fill:hover { transform: translateY(-1px); box-shadow: 0 8px 20px rgba(20, 25, 15, 0.24); }
.pdp-btn--quiet {
  background: rgba(246, 244, 236, 0.5);
  color: var(--ink-dark);
  border: 1px solid rgba(32, 37, 26, 0.28);
}
.pdp-btn--quiet:hover { background: rgba(246, 244, 236, 0.85); border-color: var(--hair-gold); }
.pdp-offer-art {
  position: absolute;
  right: 0; bottom: 0;
  width: clamp(150px, 34%, 260px);
  height: auto;
  pointer-events: none;
  z-index: 1;
}
.pdp-offer-art--gem { right: 0.5rem; bottom: 0.5rem; width: clamp(140px, 30%, 230px); }

/* ============================================================
   Footer (self-contained; sits above the fixed purchase bar)
   ============================================================ */
.pdp-footer {
  background: #20251a;
  color: rgba(236, 231, 218, 0.85);
  margin-bottom: var(--bar-h);
}
.pdp-footer-top {
  max-width: 1180px;
  margin: 0 auto;
  padding: clamp(3rem, 6vh, 4.5rem) var(--pad-x) clamp(2rem, 4vh, 3rem);
  display: grid;
  grid-template-columns: 1.1fr 1.9fr;
  gap: clamp(2rem, 5vw, 4rem);
}
.pdp-footer-eyebrow {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1rem;
  color: var(--gold-bright);
  margin: 0 0 0.6rem;
}
.pdp-footer-eyebrow em { font-style: normal; }
.pdp-footer-cta-line {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.3rem, 2.2vw, 1.7rem);
  line-height: 1.15;
  color: #f4f1e9;
  margin: 0;
  max-width: 18ch;
}
.pdp-footer-cols {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(1.25rem, 3vw, 2.5rem);
}
.pdp-footer-col h6 {
  font-family: var(--font-ui);
  font-size: 0.66rem; font-weight: 600;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--gold);
  margin: 0 0 0.9rem;
}
.pdp-footer-col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.6rem; }
.pdp-footer-col a {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.85rem;
  color: rgba(236, 231, 218, 0.7);
  text-decoration: none;
  transition: color 0.2s ease;
}
.pdp-footer-col a:hover { color: var(--gold-bright); }
.pdp-footer-bottom {
  max-width: 1180px;
  margin: 0 auto;
  padding: 1.25rem var(--pad-x);
  border-top: 1px solid rgba(236, 231, 218, 0.12);
  display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
  font-family: var(--font-ui); font-size: 0.78rem;
  color: rgba(236, 231, 218, 0.55);
}
.pdp-footer-legal { display: flex; gap: 1.25rem; }
.pdp-footer-legal a { color: rgba(236, 231, 218, 0.6); text-decoration: none; }
.pdp-footer-legal a:hover { color: var(--gold-bright); }

@media (max-width: 760px) {
  .pdp-offers-grid { grid-template-columns: 1fr; }
  .pdp-offer-art { width: clamp(120px, 30%, 200px); }
  .pdp-footer-top { grid-template-columns: 1fr; }
}
@media (max-width: 520px) {
  .pdp-footer-cols { grid-template-columns: 1fr 1fr; }
}

/* Detail — responsive */
@media (max-width: 860px) {
  .pdp-guarantee-inner { grid-template-columns: repeat(2, 1fr); gap: 1.5rem; }
  /* stack splits: media on top, copy below — keep source order per section */
  .pdp-split, .pdp-split--rev { grid-template-columns: 1fr; }
  .pdp-split--rev .pdp-split-media { order: -1; }
  .pdp-split-media img { min-height: clamp(280px, 42vh, 380px); }
  .pdp-split-copy { max-width: 640px; margin: 0 auto; }
}
@media (max-width: 720px) {
  .spec-grid { grid-template-columns: 1fr; gap: 0; }
  .policy-grid { grid-template-columns: 1fr; gap: 2rem; }
  .spec-band-note { display: none; }
}
@media (max-width: 520px) {
  .pdp-guarantee-inner { grid-template-columns: 1fr; }
}

/* ---- loose-stone confirm modal ---- */
.confirm-modal { position: fixed; inset: 0; z-index: 200; display: grid; place-items: center; }
.confirm-modal[hidden] { display: none; }
.cm-backdrop { position: absolute; inset: 0; background: rgba(20, 24, 16, 0.5); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.cm-panel { position: relative; width: min(420px, calc(100vw - 2.5rem)); background: #fbf9f3; border: 1px solid rgba(161, 121, 58, 0.3); border-radius: 18px; padding: 2rem 1.9rem; text-align: center; box-shadow: 0 40px 80px -30px rgba(20, 24, 16, 0.6); }
.cm-ic { display: grid; place-items: center; width: 52px; height: 52px; margin: 0 auto 1rem; border-radius: 50%; background: rgba(161, 121, 58, 0.1); border: 1px solid rgba(161, 121, 58, 0.3); color: var(--gold, #a1793a); font-size: 1.6rem; }
.cm-panel h2 { font-family: var(--font-display); font-weight: 400; font-size: 1.5rem; margin: 0 0 0.7rem; color: var(--ink-dark, #20251a); }
.cm-panel p { font-family: var(--font-ui); font-weight: 300; font-size: 0.9rem; line-height: 1.55; color: rgba(32, 37, 26, 0.7); margin: 0 0 1.5rem; }
.cm-panel strong { font-weight: 600; color: var(--ink-dark, #20251a); }
.cm-actions { display: flex; gap: 0.7rem; justify-content: center; flex-wrap: wrap; }
.cm-cancel, .cm-confirm { height: 44px; padding: 0 1.4rem; border-radius: 999px; font-family: var(--font-ui); font-size: 0.88rem; font-weight: 500; cursor: pointer; }
.cm-cancel { background: transparent; border: 1px solid rgba(32, 37, 26, 0.25); color: var(--ink-dark, #20251a); }
.cm-cancel:hover { background: rgba(32, 37, 26, 0.05); }
.cm-confirm { background: #4c543e; border: 1px solid #4c543e; color: #f4f1e9; }
.cm-confirm:hover { background: #3c4231; }

@media (max-width: 860px) { .pg-item::before { display: none; } }

/* tertiary "learn more" link (metal drawer) */
.tertiary-link {
  display: inline-flex; align-items: center; gap: 0.4rem;
  margin-top: 0.75rem;
  font-family: var(--font-ui); font-size: 0.8rem; font-weight: 400;
  color: #8a5f22; text-decoration: none;
  transition: color 0.2s ease;
}
.tertiary-link:hover { color: #a1793a; }
.tertiary-link i { font-size: 0.9rem; }
.tertiary-link i:last-child { font-size: 0.72rem; }

/* ============ Config add-ons (metal + design pickers) ============ */
.addons { margin-top: clamp(1.6rem, 3.4vh, 2.4rem); }
/* mount decision — selectable option cards */
.mount-choice {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.7rem;
}
@media (max-width: 560px) { .mount-choice { grid-template-columns: 1fr; } }
.mount-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.2rem;
  padding: 0.95rem 1rem 1rem;
  text-align: left;
  border: 1px solid var(--hair);
  border-radius: 15px;
  background: #fdfcf8;
  cursor: pointer;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}
.mount-card:hover { border-color: var(--hair-gold); }
.mount-card.is-selected {
  border-color: var(--gold);
  background: rgba(201, 162, 75, 0.06);
  box-shadow: 0 0 0 1px var(--gold);
}
.mount-card-check {
  position: absolute;
  top: 0.7rem; right: 0.7rem;
  display: grid; place-items: center;
  width: 20px; height: 20px;
  border-radius: 50%;
  border: 1.5px solid rgba(32, 37, 26, 0.2);
  color: transparent;
  font-size: 0.7rem;
  transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.mount-card.is-selected .mount-card-check {
  background: var(--gold);
  border-color: var(--gold);
  color: #fff;
}
.mount-card-ic { display: none; }
.mount-card-t {
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: 0.92rem;
  color: var(--ink-dark);
}
.mount-card-s {
  font-family: var(--font-ui);
  font-weight: 300;
  font-size: 0.75rem;
  line-height: 1.3;
  color: rgba(32, 37, 26, 0.55);
}
/* metal + design grouped as one card with an internal divider (one unit, not two boxes) */
.addon-rows {
  display: flex; flex-direction: column; gap: 0;
  margin-top: clamp(1rem, 2.4vh, 1.5rem);
  background: #fdfcf8;
  border: 1px solid var(--hair);
  border-radius: 14px;
  overflow: hidden;
}
.addon-row {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  width: 100%;
  text-align: left;
  padding: 0.95rem 1.05rem;
  background: transparent;
  border: 0;
  border-radius: 0;
  cursor: pointer;
  transition: background 0.2s ease;
}
.addon-row + .addon-row { border-top: 1px solid var(--hair); }
.addon-row:hover { background: rgba(201, 162, 75, 0.05); }
.addon-row.is-disabled { opacity: 0.45; pointer-events: none; filter: grayscale(0.4); }
.addon-ic {
  flex: none;
  display: grid; place-items: center;
  width: 40px; height: 40px;
  border-radius: 11px;
  background: rgba(161, 121, 58, 0.1);
  color: var(--gold);
  font-size: 1.25rem;
}
.addon-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 0.1rem; }
.addon-label {
  font-family: var(--font-ui); font-size: 0.6rem; font-weight: 600;
  letter-spacing: 0.16em; text-transform: uppercase; color: rgba(32, 37, 26, 0.45);
}
.addon-value { font-family: var(--font-ui); font-weight: 600; font-size: 0.95rem; color: var(--ink-dark); }
/* placeholder value (e.g. "Not selected") reads quieter — italic, lighter */
.addon-value.is-unset { font-style: italic; font-weight: 300; color: rgba(32, 37, 26, 0.5); }
.addon-delta {
  flex: none;
  font-family: var(--font-ui); font-weight: 400; font-size: 0.85rem;
  color: rgba(32, 37, 26, 0.55); font-variant-numeric: tabular-nums; white-space: nowrap;
}
.addon-delta.has-price { color: var(--gold); }
.addon-cta {
  flex: none;
  display: inline-flex; align-items: center; gap: 0.25rem;
  font-family: var(--font-ui); font-weight: 500; font-size: 0.72rem;
  letter-spacing: 0.04em; text-transform: uppercase; color: rgba(32, 37, 26, 0.4);
  transition: color 0.2s ease;
}
.addon-row:hover .addon-cta { color: rgba(32, 37, 26, 0.6); }
.addon-cta i { font-size: 0.85rem; }
.addon-note {
  margin: 0.7rem 0 0;
  display: flex; align-items: center; gap: 0.45rem;
  font-family: var(--font-ui); font-weight: 300; font-size: 0.82rem; color: rgba(32, 37, 26, 0.62);
}
.addon-note i { color: var(--gold); }

/* metal drawer: radio on the opt-cards */
.metal-opts .opt-card { padding: 0.6rem 0.9rem; }
.metal-opts .opt-card::before {
  content: ""; flex: none; order: -1;
  width: 15px; height: 15px; border-radius: 50%;
  border: 1.5px solid rgba(32, 37, 26, 0.25);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.metal-opts .opt-card[aria-checked="true"]::before,
.metal-opts .opt-card.is-selected::before {
  border-color: var(--gold); box-shadow: inset 0 0 0 3.5px var(--gold);
}

/* design drawer */
.dsize-row { display: flex; align-items: flex-end; gap: 0.8rem; margin-bottom: 1rem; flex-wrap: wrap; }
.dsize-field { display: flex; flex-direction: column; gap: 0.3rem; font-family: var(--font-ui); font-size: 0.78rem; color: rgba(32, 37, 26, 0.6); }
.dsize-field select {
  min-width: 140px; padding: 0.55rem 2rem 0.55rem 0.75rem; border-radius: 10px;
  border: 1px solid var(--hair); color: var(--ink-dark);
  font-family: var(--font-ui); font-size: 0.9rem;
  -webkit-appearance: none; -moz-appearance: none; appearance: none;
  background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23a1793a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 0.8rem center / 0.7rem;
}
.dsize-chart {
  display: inline-flex; align-items: center; gap: 0.35rem; height: 40px; padding: 0 0.9rem;
  border-radius: 999px; border: 1px solid var(--hair); background: transparent;
  font-family: var(--font-ui); font-size: 0.8rem; color: var(--ink-dark); cursor: pointer;
}
.design-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.8rem; }
.dcard {
  display: flex; flex-direction: column; text-align: left;
  background: #fdfcf8; border: 1px solid var(--hair); border-radius: 14px; overflow: hidden; cursor: pointer;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}
.dcard:hover { border-color: var(--hair-gold); box-shadow: 0 14px 30px -24px rgba(32, 37, 26, 0.45); transform: translateY(-2px); }
.dcard.is-selected { border-color: var(--gold); box-shadow: 0 0 0 2px rgba(161, 121, 58, 0.35); }
.dcard-media {
  position: relative; aspect-ratio: 1 / 1; display: grid; place-items: center;
  background: radial-gradient(120% 80% at 50% 20%, rgba(201,162,75,0.16), transparent 60%), #24291a;
}
.dcard-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.dcard-tag {
  position: absolute; top: 0.55rem; left: 0.55rem; z-index: 2;
  display: inline-flex; align-items: center; gap: 0.3rem;
  padding: 0.25rem 0.5rem; border-radius: 999px;
  font-family: var(--font-ui); font-size: 0.58rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase;
  -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
}
.dcard-tag i { font-size: 0.85em; }
.dcard-tag--loved { color: #3f6b3a; background: rgba(63, 107, 58, 0.14); border: 1px solid rgba(63, 107, 58, 0.32); }
.dcard-tag--popular { color: #8a5a1f; background: rgba(201, 162, 75, 0.2); border: 1px solid rgba(161, 121, 58, 0.4); }
.dcard-body { display: flex; align-items: baseline; justify-content: space-between; gap: 0.5rem; padding: 0.7rem 0.8rem 0.85rem; }
.dcard-name { font-family: var(--font-ui); font-weight: 600; font-size: 0.9rem; color: var(--ink-dark); }
.dcard-price { font-family: var(--font-ui); font-weight: 400; font-size: 0.78rem; color: rgba(32, 37, 26, 0.55); font-variant-numeric: tabular-nums; white-space: nowrap; }
.design-custom { display: flex; flex-direction: column; gap: 0.9rem; }

/* ============ Energisation upsell modal ============ */
.energise-modal { position: fixed; inset: 0; z-index: 200; display: grid; place-items: center; }
.energise-modal[hidden] { display: none; }
.em-backdrop { position: absolute; inset: 0; background: rgba(20, 24, 16, 0.55); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.em-panel {
  position: relative; z-index: 1; width: min(92vw, 460px); max-height: 90vh; overflow: auto;
  background: #fdfcf8; border-radius: 20px; border: 1px solid var(--hair-gold);
  box-shadow: 0 40px 90px -40px rgba(20, 24, 16, 0.7);
}
.em-close {
  position: absolute; top: 0.8rem; right: 0.8rem; z-index: 2;
  width: 34px; height: 34px; border-radius: 50%; border: 0;
  background: rgba(255, 255, 255, 0.85); color: var(--ink-dark); cursor: pointer; display: grid; place-items: center;
}
.em-media { height: 150px; overflow: hidden; }
.em-media img { width: 100%; height: 100%; object-fit: cover; }
.em-body { padding: 1.3rem 1.5rem 1.5rem; }
.em-eyebrow { margin: 0 0 0.3rem; font-family: var(--font-ui); font-size: 0.66rem; font-weight: 600; letter-spacing: 0.2em; text-transform: uppercase; color: var(--gold); }
.em-body h2 { margin: 0 0 0.4rem; font-family: var(--font-display); font-weight: 500; font-size: 1.5rem; color: var(--ink-dark); }
.em-lede { margin: 0 0 1rem; font-family: var(--font-ui); font-weight: 300; font-size: 0.88rem; line-height: 1.5; color: rgba(32, 37, 26, 0.66); }
.em-opts { display: flex; flex-direction: column; gap: 0.55rem; }
.em-opt {
  display: flex; align-items: center; gap: 0.7rem; width: 100%; text-align: left;
  padding: 0.7rem 0.85rem; border-radius: 13px; border: 1px solid var(--hair); background: #fff; cursor: pointer;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.em-opt.is-selected { border-color: var(--gold); box-shadow: 0 0 0 2px rgba(161, 121, 58, 0.28); }
.em-opt-radio { flex: none; width: 16px; height: 16px; border-radius: 50%; border: 1.5px solid rgba(32,37,26,0.25); transition: border-color 0.2s, box-shadow 0.2s; }
.em-opt.is-selected .em-opt-radio { border-color: var(--gold); box-shadow: inset 0 0 0 4px var(--gold); }
.em-opt-text { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 0.05rem; }
.em-opt-text strong { font-family: var(--font-ui); font-weight: 600; font-size: 0.92rem; color: var(--ink-dark); }
.em-opt-text span { font-family: var(--font-ui); font-weight: 300; font-size: 0.76rem; color: rgba(32, 37, 26, 0.58); }
.em-opt-price { flex: none; font-family: var(--font-ui); font-weight: 600; font-size: 0.85rem; color: var(--gold); font-variant-numeric: tabular-nums; }
.em-opt-price.em-opt-free { color: #4e8f3e; }
.em-blog {
  display: inline-flex; align-items: center; gap: 0.4rem; margin: 0.9rem 0 0;
  font-family: var(--font-ui); font-size: 0.8rem; font-weight: 500; color: var(--gold); text-decoration: none;
}
.em-blog i:last-child { font-size: 0.7rem; }
.em-actions { display: flex; flex-direction: column; gap: 0.6rem; margin-top: 1.2rem; }
.em-continue {
  width: 100%; min-height: 50px; border: 0; border-radius: 999px;
  background: url("assets/consult-card-bg.jpg") center / cover, var(--gold);
  color: #fff; font-family: var(--font-ui); font-weight: 600; font-size: 0.95rem; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem;
  transition: filter 0.2s ease, transform 0.2s ease;
}
.em-continue:hover { filter: brightness(1.06); transform: translateY(-1px); }
.em-skip {
  width: 100%; min-height: 44px; border-radius: 999px;
  background: transparent; border: 1px solid rgba(32, 37, 26, 0.2); color: var(--ink-dark);
  font-family: var(--font-ui); font-weight: 500; font-size: 0.88rem; cursor: pointer;
  transition: background 0.2s ease, border-color 0.2s ease;
}
.em-skip:hover { background: rgba(32, 37, 26, 0.04); border-color: var(--gold); }

@media (max-width: 620px) {
  .design-grid { grid-template-columns: 1fr; }
}

/* design drawer: class display rules beat the [hidden] attribute — restore it */
.design-grid[hidden], .design-custom[hidden], .dsize-row[hidden] { display: none !important; }

/* ============ Design lightbox (enlarged view + auto thumbnails) ============ */
.dcard-tools {
  position: absolute; bottom: 0.5rem; right: 0.5rem; z-index: 2;
  display: flex; gap: 0.4rem;
  opacity: 0; transform: translateY(4px); transition: opacity 0.2s ease, transform 0.2s ease;
}
.dcard:hover .dcard-tools { opacity: 1; transform: none; }
.dcard-tool {
  width: 28px; height: 28px; border-radius: 50%;
  background: rgba(255, 255, 255, 0.9); color: var(--ink-dark);
  display: grid; place-items: center; font-size: 0.85rem; cursor: pointer;
  box-shadow: 0 4px 12px -6px rgba(0, 0, 0, 0.5);
  transition: background 0.2s ease, color 0.2s ease;
}
.dcard-tool:hover { background: #fff; color: var(--gold); }

/* design lightbox — story view (same popup, back-to-selection control) */
.dlb-story {
  position: absolute; inset: 0; z-index: 3;
  display: none; flex-direction: column;
  background: #f3efe4;   /* paper, to sit under the anatomy sketch */
  border-radius: inherit; overflow: hidden;
}
.dlb-overlay.is-story .dlb-story { display: flex; }
.dlb-story-sketch {
  flex: 1 1 auto; width: 100%; min-height: 0;
  object-fit: contain; padding: 0.6rem 0.6rem 0.3rem; background: #f3efe4;
}
.dlb-story-cap {
  flex: none; padding: 0.85rem 1.1rem;
  background: rgba(20, 24, 16, 0.92);
}
.dlb-story-eyebrow {
  font-family: var(--font-ui); font-size: 0.6rem; font-weight: 600;
  letter-spacing: 0.18em; text-transform: uppercase; color: var(--gold-bright, #c9a24b); margin: 0 0 0.3rem;
}
.dlb-story-text {
  font-family: var(--font-display); font-weight: 400; font-size: clamp(0.95rem, 1.4vw, 1.2rem);
  line-height: 1.35; color: #f4f1e9; margin: 0; max-width: 46ch;
}
.dlb-back {
  position: absolute; top: 1rem; left: 1rem; z-index: 5;
  display: none; align-items: center; gap: 0.4rem;
  height: 34px; padding: 0 0.9rem; border-radius: 999px;
  background: rgba(255, 255, 255, 0.92); border: 0; cursor: pointer;
  font-family: var(--font-ui); font-size: 0.8rem; font-weight: 500; color: var(--ink-dark);
  box-shadow: 0 6px 16px -8px rgba(0, 0, 0, 0.5);
}
.dlb-overlay.is-story .dlb-back { display: inline-flex; }
.dlb-info-r { display: flex; align-items: center; gap: 1rem; }
.dlb-story-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem;
  height: 40px; padding: 0 1.1rem; border-radius: 999px; cursor: pointer;
  background: transparent; border: 1px solid rgba(32, 37, 26, 0.22); color: var(--ink-dark);
  font-family: var(--font-ui); font-size: 0.82rem; font-weight: 500;
  transition: background 0.2s ease, border-color 0.2s ease;
}
.dlb-story-btn[hidden] { display: none; }
.dlb-story-btn:hover { background: rgba(32, 37, 26, 0.04); border-color: var(--gold); }
.dlb-overlay.is-story .dlb-thumbs,
.dlb-overlay.is-story .dlb-story-btn { display: none; }

.dlb-overlay {
  position: fixed; inset: 0; z-index: 210;
  display: flex; align-items: center; justify-content: center;
  gap: clamp(0.5rem, 2.5vw, 2rem); padding: 1rem;
}
.dlb-overlay[hidden] { display: none; }
.dlb-backdrop { position: absolute; inset: 0; background: rgba(20,24,16,0.62); -webkit-backdrop-filter: blur(5px); backdrop-filter: blur(5px); }
.dlb-panel {
  position: relative; z-index: 1; width: min(88vw, 480px); max-height: 92vh;
  display: flex; flex-direction: column;
  background: #fdfcf8; border-radius: 20px; border: 1px solid var(--hair-gold);
  box-shadow: 0 40px 90px -40px rgba(20,24,16,0.7); padding: 1rem 1rem 1.2rem;
}
.dlb-close { position: absolute; top: 0.75rem; right: 0.75rem; z-index: 3; width: 34px; height: 34px; border-radius: 50%; border: 0; background: rgba(255,255,255,0.9); color: var(--ink-dark); cursor: pointer; display: grid; place-items: center; }
.dlb-stage { position: relative; flex: 0 1 auto; min-height: 0; aspect-ratio: 1 / 1; max-height: 46vh; border-radius: 14px; overflow: hidden; background: radial-gradient(120% 80% at 50% 20%, rgba(201,162,75,0.14), transparent 60%), #24291a; display: grid; place-items: center; }
.dlb-stage img { max-width: 82%; max-height: 82%; width: auto; height: auto; filter: drop-shadow(0 18px 30px rgba(0,0,0,0.4)); }
.dlb-nav { position: relative; z-index: 1; flex: none; width: 48px; height: 48px; border-radius: 50%; border: 1px solid rgba(246,244,236,0.4); background: rgba(255,255,255,0.14); color: #fff; cursor: pointer; display: grid; place-items: center; -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); transition: background 0.2s ease, transform 0.2s ease; }
.dlb-nav:hover { background: rgba(255,255,255,0.28); transform: scale(1.06); }
.dlb-nav i { font-size: 1.3rem; }
.dlb-thumbs { display: flex; gap: 0.5rem; margin-top: 0.8rem; }
.dlb-thumb { position: relative; flex: 1 1 0; aspect-ratio: 1 / 1; border-radius: 12px; overflow: hidden; border: 0; background: #24291a; cursor: pointer; padding: 0; }
.dlb-thumb img { width: 100%; height: 100%; object-fit: cover; }
.dlb-ring {
  position: absolute; inset: 0; border-radius: 12px; pointer-events: none; padding: 2.5px;
  background: conic-gradient(from -90deg, var(--gold) calc(var(--p, 0) * 1turn), rgba(255,255,255,0.28) 0);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude; opacity: 0;
}
.dlb-thumb.is-active .dlb-ring { opacity: 1; }
.dlb-thumb.is-active { box-shadow: 0 0 0 1px var(--gold); }
.dlb-info { display: flex; align-items: center; justify-content: space-between; gap: 0.8rem; margin-top: 0.95rem; }
.dlb-tag { display: inline-block; margin-bottom: 0.25rem; padding: 0.2rem 0.5rem; border-radius: 999px; font-family: var(--font-ui); font-size: 0.56rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; }
.dlb-tag--loved { color: #3f6b3a; background: rgba(63,107,58,0.14); }
.dlb-tag--popular { color: #8a5a1f; background: rgba(201,162,75,0.2); }
.dlb-name { margin: 0; font-family: var(--font-display); font-weight: 500; font-size: 1.35rem; color: var(--ink-dark); }
.dlb-price { font-family: var(--font-ui); font-weight: 600; font-size: 1rem; color: var(--gold); font-variant-numeric: tabular-nums; white-space: nowrap; }
.dlb-cta {
  width: 100%; margin-top: 1rem; min-height: 50px; border: 0; border-radius: 999px;
  background: url("assets/consult-card-bg.jpg") center / cover, var(--gold); color: #fff;
  font-family: var(--font-ui); font-weight: 600; font-size: 0.95rem; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem;
  transition: filter 0.2s ease, transform 0.2s ease;
}
.dlb-cta:hover { filter: brightness(1.06); transform: translateY(-1px); }

/* keep the design-lightbox controls visible without scrolling */
.dlb-thumbs, .dlb-info, .dlb-cta { flex: none; }
@media (max-width: 640px) {
  .dlb-nav { position: fixed; top: 50%; transform: translateY(-50%); z-index: 3; background: rgba(20,24,16,0.5); }
  .dlb-prev { left: 0.5rem; } .dlb-next { right: 0.5rem; }
  .dlb-panel { width: 94vw; }
}

/* custom design form (no price — quoted later) */
.dc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.8rem; }
.dc-drop {
  display: flex; align-items: center; justify-content: center; gap: 0.5rem;
  margin-top: 0.4rem; padding: 1.1rem; border: 1.5px dashed var(--hair-gold); border-radius: 12px;
  background: rgba(201,162,75,0.05); color: rgba(32,37,26,0.6);
  font-family: var(--font-ui); font-size: 0.85rem; cursor: pointer; text-align: center;
  transition: border-color 0.2s ease, background 0.2s ease;
}
.dc-drop:hover { border-color: var(--gold); background: rgba(201,162,75,0.08); }
.dc-drop i { font-size: 1.2rem; color: var(--gold); }
.dc-files { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.5rem; }
.dc-file { display: inline-flex; align-items: center; gap: 0.3rem; padding: 0.25rem 0.55rem; border-radius: 999px; background: rgba(32,37,26,0.06); font-family: var(--font-ui); font-size: 0.72rem; color: var(--ink-dark); }
.dc-note { display: flex; align-items: flex-start; gap: 0.4rem; margin: 0.3rem 0 0; font-family: var(--font-ui); font-weight: 300; font-size: 0.76rem; line-height: 1.4; color: rgba(32,37,26,0.6); }
.dc-note i { color: var(--gold); margin-top: 0.1rem; }

/* loose note shows only in Stone-only mode (class display beats [hidden]) */
.addon-note[hidden] { display: none !important; }

/* main gallery: progress ring on the active thumbnail (auto-advance) */
.thumb { position: relative; }
.thumb-ring {
  position: absolute; inset: 0; border-radius: 12px; pointer-events: none; padding: 2px;
  background: conic-gradient(from -90deg, var(--gold) calc(var(--p, 0) * 1turn), rgba(246,244,236,0.28) 0);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude; opacity: 0;
}
.thumb.is-active .thumb-ring { opacity: 1; }

/* validation: highlight rows + subtle alert */
.addon-row.needs-attention { border-color: var(--gold); box-shadow: 0 0 0 2px rgba(161,121,58,0.35); animation: addonNudge 0.4s ease; }
@keyframes addonNudge { 0%,100%{transform:none;} 25%{transform:translateX(-3px);} 75%{transform:translateX(3px);} }
.addon-alert { display: flex; align-items: center; gap: 0.4rem; margin: 0.6rem 0 0; font-family: var(--font-ui); font-weight: 500; font-size: 0.8rem; color: var(--madder, #b23a2a); }
.addon-alert[hidden] { display: none; }
.addon-alert i { font-size: 1rem; }

/* add-on row icon reflects the current selection */
.addon-ic.has-img { padding: 0; overflow: hidden; background: #24291a; }
.addon-ic.has-img img { width: 100%; height: 100%; object-fit: cover; }
.addon-ic.addon-swatch { background: none; box-shadow: inset 0 0 0 1px rgba(32,37,26,0.12); }

/* facts strip: subtle, not a filled card that reads like a button */
.qf-cards { background: transparent; border-color: var(--hair); box-shadow: none; }

/* custom-form select: match the themed text inputs (no native chrome) */
.design-custom select, .custom-mount select {
  width: 100%;
  -webkit-appearance: none; -moz-appearance: none; appearance: none;
  padding: 0.7rem 2.2rem 0.7rem 0.85rem;
  border: 1px solid var(--hair);
  border-radius: 12px;
  background-color: #fffdf8;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23a1793a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.85rem center;
  font-family: var(--font-ui); font-size: 0.9rem; color: var(--ink-dark);
  cursor: pointer;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.design-custom select:focus, .custom-mount select:focus { outline: none; border-color: var(--gold); box-shadow: 0 0 0 2px rgba(161,121,58,0.18); }

/* custom-design mount panel */
.addon-rows[hidden], .custom-mount[hidden], .config-actions[hidden] { display: none !important; }
.custom-mount { display: flex; flex-direction: column; gap: 0.9rem; margin-top: 1rem; }
.cm-quote-btn {
  margin-top: 0.2rem; min-height: 50px; border: 0; border-radius: 999px;
  background: url("assets/consult-card-bg.jpg") center / cover, #4c543e; color: #fff;
  font-family: var(--font-ui); font-weight: 600; font-size: 0.95rem; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem;
  transition: filter 0.2s ease, transform 0.2s ease;
}
.cm-quote-btn:hover { filter: brightness(1.06); transform: translateY(-1px); }
.cm-quote-btn:disabled { opacity: 0.7; cursor: default; }
.cm-quote-btn.needs-attention { animation: addonNudge 0.4s ease; box-shadow: 0 0 0 3px rgba(161,121,58,0.4); }
.cm-quote-done {
  display: flex; align-items: flex-start; gap: 0.5rem; margin: 0;
  padding: 0.8rem 0.9rem; border-radius: 12px;
  background: rgba(40, 140, 90, 0.08); border: 1px solid rgba(40, 140, 90, 0.28);
  font-family: var(--font-ui); font-size: 0.82rem; line-height: 1.4; color: #2b6b46;
}
.cm-quote-done[hidden] { display: none; }
.cm-quote-done i { color: #2f8a56; font-size: 1.05rem; flex: none; }

/* energise modal: "Included" is low-priority (grey, not gold) */
.em-opt[data-energise="recorded"] .em-opt-price { color: rgba(32, 37, 26, 0.5); font-weight: 500; }
