/* =========================================================================
   WISDOM & GRACE — SITE STYLESHEET
   =========================================================================
   CONTENT / BRAND NOTES FOR EDITING LATER
   -------------------------------------------------------------------------
   - Color palette combines the real logo (images/logo/ — deep burgundy
     line art) with Leah's own supplied fabric/color references, which are
     named (in order from deepest to lightest): Dusty Rose, Soft Blossom,
     Sage Leaf, Autumn Ivory. Those four names map directly to the tokens
     below — change values in :root and the whole site updates.
   - The overall system deliberately leans neutral (warm ivory, not pink)
     with rose and sage used as accents, not as the base canvas — this
     keeps four named colors from reading as "too much pink."
   - Fonts are loaded from Google Fonts in the <head> of each HTML page.
   - Product/fabric data lives in js/products.js, not here.
   ========================================================================= */

/* -------------------------------------------------------------------------
   1. CSS CUSTOM PROPERTIES (THEME)
   ------------------------------------------------------------------------- */
:root {
  /* Backgrounds — "Autumn Ivory" as the neutral canvas, "Soft Blossom"
     reserved for occasional accent sections rather than the whole page */
  --background: #f3ecdf;        /* Autumn Ivory — main background */
  --background-soft: #eae0cb;   /* deeper warm ivory — alternating sections */
  --background-blossom: #f4dfe1; /* Soft Blossom — used sparingly as an accent tint */
  --background-card: #fffdf9;   /* slightly lifted card surface */

  /* Text */
  --text: #392a22;              /* warm near-black brown */
  --text-muted: #6f5c4e;        /* soft warm taupe — WCAG AA (5.4:1) on --background */
  --text-faint: #786552;        /* muted taupe — WCAG AA (4.7:1) on --background; darkened from an earlier value that failed contrast */

  /* Accents — "Dusty Rose" for primary interactive color, the logo's
     deeper burgundy reserved for hover/emphasis states */
  --accent: #7c3c48;            /* Dusty Rose — buttons, links, active states */
  --accent-dark: #551a24;       /* deep logo burgundy — hover/emphasis */
  --accent-soft: #f4dfe1;       /* Soft Blossom — pale tint for form focus/badges */
  --accent-secondary: #8b9a7e;  /* Sage Leaf — secondary accent */
  --accent-secondary-dark: #5c6b4f; /* deep sage — used for small text on ivory */

  /* Borders + lines */
  --border: #ddd0b3;
  --border-soft: #e8ddc4;

  /* Feedback */
  --error: #9a3b3b;

  /* Typography */
  --font-heading: "Cormorant Garamond", "Georgia", serif;
  --font-body: "Source Sans 3", "Helvetica Neue", Arial, sans-serif;
  --font-accent: "Cormorant Garamond", serif; /* italic decorative use */

  /* Spacing scale */
  --space-xs: 0.5rem;
  --space-sm: 1rem;
  --space-md: 1.75rem;
  --space-lg: 3rem;
  --space-xl: 5rem;
  --space-2xl: 7.5rem;

  /* Layout */
  --content-width: 1180px;
  --content-width-narrow: 760px;
  --radius: 2px;

  /* Motion */
  --transition: 220ms ease;
}

/* -------------------------------------------------------------------------
   2. RESET + BASE
   ------------------------------------------------------------------------- */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}

body {
  margin: 0;
  background-color: var(--background);
  color: var(--text);
  font-family: var(--font-body);
  font-size: 1.0625rem;
  line-height: 1.65;
  overflow-x: hidden;
}

img {
  max-width: 100%;
  display: block;
}

figure {
  margin: 0;
}

a {
  color: inherit;
  text-decoration: none;
}

ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

button {
  font-family: inherit;
  cursor: pointer;
}

h1, h2, h3, h4 {
  font-family: var(--font-heading);
  font-weight: 600;
  line-height: 1.2;
  margin: 0 0 var(--space-sm);
  color: var(--text);
}

h1 { font-size: clamp(2.4rem, 5vw, 3.8rem); font-weight: 600; }
h2 { font-size: clamp(1.9rem, 3.4vw, 2.6rem); }
h3 { font-size: clamp(1.4rem, 2.4vw, 1.75rem); }
h4 { font-size: 1.15rem; font-weight: 600; }

p {
  margin: 0 0 var(--space-sm);
}

/* Editorial italic treatment for a handful of "statement" headings (hero,
   a few section leads) — used selectively, not on every heading, so it
   reads as a deliberate accent rather than a global style. */
.display-italic {
  font-style: italic;
  font-weight: 500;
}

/* Visible, deliberate focus states everywhere (accessibility) */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--accent-dark);
  outline-offset: 3px;
  border-radius: 2px;
}

/* Skip link for keyboard users */
.skip-link {
  position: absolute;
  left: -999px;
  top: auto;
  background: var(--accent-dark);
  color: var(--background);
  padding: 0.75rem 1.25rem;
  z-index: 200;
}
.skip-link:focus {
  left: var(--space-sm);
  top: var(--space-sm);
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}

/* -------------------------------------------------------------------------
   3. LAYOUT HELPERS
   ------------------------------------------------------------------------- */
.container {
  width: 100%;
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 0 var(--space-md);
}

.container-narrow {
  width: 100%;
  max-width: var(--content-width-narrow);
  margin: 0 auto;
  padding: 0 var(--space-md);
}

.section {
  padding: var(--space-xl) 0;
}

.section-soft {
  background-color: var(--background-soft);
}

.section-tight {
  padding: var(--space-lg) 0;
}

.section-header {
  max-width: 640px;
  margin: 0 0 var(--space-lg);
}

.section-header.center {
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}

.eyebrow {
  display: inline-block;
  font-family: var(--font-body);
  font-weight: 700;
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--accent-secondary-dark);
  margin-bottom: var(--space-sm);
}

.lede {
  font-size: 1.15rem;
  color: var(--text-muted);
}

/* Small ornamental divider used between sections/blocks — a hairline with
   a single centered diamond, echoing the fine circular line in the logo. */
.divider {
  position: relative;
  width: 90px;
  height: 1px;
  background-color: var(--border);
  border: none;
  margin: var(--space-md) 0;
}
.divider.center {
  margin-left: auto;
  margin-right: auto;
}
.divider::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 7px;
  height: 7px;
  background-color: var(--accent);
  transform: translate(-50%, -50%) rotate(45deg);
}

/* Large decorative ampersand watermark — a quiet nod to the logo's
   wordmark. Used sparingly (see .hero) so it reads as a signature detail,
   not decoration for its own sake. */
.ampersand-mark {
  position: absolute;
  font-family: var(--font-heading);
  font-style: italic;
  font-weight: 500;
  color: var(--accent-secondary);
  opacity: 0.16;
  line-height: 1;
  pointer-events: none;
  user-select: none;
  z-index: 0;
}

/* -------------------------------------------------------------------------
   3b. STAMP BADGE
   -------------------------------------------------------------------------
   A small circular "hand-stamped" mark — one signature ornamental device
   used once (see index.html, the craft section), echoing the arced text
   in the logo without repeating it. Fully original wording/arrangement.
   ------------------------------------------------------------------------- */
.stamp-badge {
  width: 148px;
  height: 148px;
  color: var(--accent-secondary-dark);
  flex-shrink: 0;
}

.stamp-badge .stamp-badge__ring-outer {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.5;
}

.stamp-badge .stamp-badge__ring-inner {
  fill: none;
  stroke: currentColor;
  stroke-width: 0.75;
  stroke-dasharray: 1.5 3;
  opacity: 0.7;
}

.stamp-badge text {
  fill: currentColor;
  font-family: var(--font-body);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.09em;
}

.stamp-badge__center {
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 16px;
  font-weight: 500;
  letter-spacing: 0.06em;
}

.stamp-badge__rule {
  stroke: currentColor;
  stroke-width: 1;
  opacity: 0.6;
}

.craft-signature {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-md);
  margin-top: var(--space-lg);
}

.craft-signature p {
  margin: 0;
  max-width: 260px;
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 1.05rem;
  color: var(--text-muted);
}

@media (max-width: 560px) {
  .craft-signature {
    flex-direction: column;
    text-align: center;
  }
}

/* -------------------------------------------------------------------------
   4. BUTTONS + LINKS
   ------------------------------------------------------------------------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.9rem 1.75rem;
  font-family: var(--font-body);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  border: 1px solid transparent;
  border-radius: var(--radius);
  transition: background-color var(--transition), color var(--transition), border-color var(--transition), transform var(--transition);
  min-height: 44px;
}

.btn-primary {
  background-color: var(--accent);
  color: var(--background);
  border-color: var(--accent);
}
.btn-primary:hover,
.btn-primary:focus-visible {
  background-color: var(--accent-dark);
  border-color: var(--accent-dark);
  transform: translateY(-1px);
}

.btn-outline {
  background-color: transparent;
  color: var(--text);
  border-color: var(--border);
}
.btn-outline:hover,
.btn-outline:focus-visible {
  border-color: var(--accent);
  color: var(--accent);
}

.btn-secondary {
  background-color: var(--accent-secondary);
  color: var(--background);
  border-color: var(--accent-secondary);
}
.btn-secondary:hover,
.btn-secondary:focus-visible {
  background-color: var(--accent-secondary-dark);
  border-color: var(--accent-secondary-dark);
}

.btn-block {
  width: 100%;
}

/* Resets a <button> to look and behave like inline text, for cases where
   a text-link needs to trigger JS rather than navigate to an href. */
.link-button {
  background: none;
  border: none;
  padding: 0;
  font: inherit;
}

/* Understated text link with animated underline */
.text-link {
  position: relative;
  font-weight: 600;
  color: var(--accent-dark);
  padding-bottom: 2px;
  background-image: linear-gradient(currentColor, currentColor);
  background-position: 0 100%;
  background-repeat: no-repeat;
  background-size: 0% 1px;
  transition: background-size var(--transition);
}
.text-link:hover,
.text-link:focus-visible {
  background-size: 100% 1px;
}

/* -------------------------------------------------------------------------
   5. SITE HEADER + NAVIGATION
   -------------------------------------------------------------------------
   Two-tier, centered layout: a full-width row with the logo centered,
   then a hairline-bordered navbar row with the nav links centered and
   the CTA pinned to the right — a quieter, more boutique structure than
   a standard space-between bar.
   ------------------------------------------------------------------------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background-color: rgba(243, 236, 223, 0.94);
  backdrop-filter: saturate(120%) blur(6px);
  border-bottom: 1px solid var(--border-soft);
  transition: box-shadow var(--transition);
}

.site-header.is-scrolled {
  box-shadow: 0 4px 14px rgba(57, 42, 34, 0.08);
}

.site-header__brand-row {
  display: flex;
  justify-content: center;
  padding: 0.85rem var(--space-md) 0.6rem;
}

.site-header__navbar {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0.65rem var(--space-md);
  max-width: var(--content-width);
  margin: 0 auto;
  border-top: 1px solid var(--border-soft);
}

/* Logo — real logo image from images/logo/. To swap in a different
   logo file/version later, just change the <img src> in the HTML;
   height is controlled here so any reasonably-square logo file drops
   in cleanly. */
.site-logo {
  display: inline-flex;
  align-items: center;
}

.site-logo img {
  height: 58px;
  width: auto;
  display: block;
}

.site-footer .site-logo img {
  height: 66px;
}

.site-nav {
  display: flex;
  align-items: center;
}

.site-nav__links {
  display: flex;
  align-items: center;
  gap: var(--space-lg);
}

.site-nav__links a {
  position: relative;
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 0.25rem 0.1rem;
}

.site-nav__links a::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -4px;
  width: 100%;
  height: 1px;
  background-color: var(--accent);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--transition);
}

.site-nav__links a:hover::after,
.site-nav__links a:focus-visible::after,
.site-nav__links a[aria-current="page"]::after {
  transform: scaleX(1);
}

.site-nav__links a[aria-current="page"] {
  color: var(--accent);
}

.site-header__cta {
  position: absolute;
  right: var(--space-md);
  top: 50%;
  transform: translateY(-50%);
}

.nav-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 44px;
  height: 44px;
  background: none;
  border: none;
  padding: 0;
}

.nav-toggle span {
  display: block;
  width: 24px;
  height: 1.5px;
  background-color: var(--text);
  transition: transform var(--transition), opacity var(--transition);
}

.nav-toggle[aria-expanded="true"] span:nth-child(1) {
  transform: translateY(6.5px) rotate(45deg);
}
.nav-toggle[aria-expanded="true"] span:nth-child(2) {
  opacity: 0;
}
.nav-toggle[aria-expanded="true"] span:nth-child(3) {
  transform: translateY(-6.5px) rotate(-45deg);
}

@media (max-width: 860px) {
  .site-header__navbar {
    justify-content: flex-start;
    border-top: none;
  }

  .site-header__cta {
    display: none;
  }

  .nav-toggle {
    display: flex;
  }

  .site-nav {
    position: fixed;
    inset: 0 0 0 26%;
    top: 100px;
    flex-direction: column;
    align-items: stretch;
    background-color: var(--background);
    border-left: 1px solid var(--border-soft);
    padding: var(--space-lg) var(--space-md);
    transform: translateX(100%);
    transition: transform var(--transition);
    overflow-y: auto;
  }

  .site-nav.is-open {
    transform: translateX(0);
  }

  .site-nav__links {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-md);
  }

  .site-nav__links a {
    font-size: 1.05rem;
  }
}

@media (max-width: 420px) {
  .site-nav {
    inset: 0;
    top: 92px;
  }
}

/* -------------------------------------------------------------------------
   6. HERO
   ------------------------------------------------------------------------- */
.hero {
  position: relative;
  padding: var(--space-xl) 0;
  overflow: hidden;
}

.hero__grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-xl);
  align-items: center;
}

/* Oversized ampersand watermark, tucked behind the hero media */
.hero .ampersand-mark {
  top: -8%;
  right: -2%;
  font-size: 26rem;
}

@media (max-width: 900px) {
  .hero .ampersand-mark {
    display: none;
  }
}

/* Offset frame behind the hero photo is added via the reusable .art-frame
   class (see section 6b below) placed directly in the HTML. */

.hero__eyebrow-line {
  font-family: var(--font-body);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--accent-secondary-dark);
  font-size: 0.78rem;
  margin-bottom: var(--space-sm);
}

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-md);
  margin-top: var(--space-md);
}

.hero__note {
  margin-top: var(--space-lg);
  font-size: 0.9rem;
  color: var(--text-faint);
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

@media (max-width: 900px) {
  .hero__grid {
    grid-template-columns: 1fr;
    gap: var(--space-lg);
  }
  .hero__media {
    order: -1;
  }
}

/* -------------------------------------------------------------------------
   6b. ART FRAME — reusable offset-border detail for feature-scale photos
   ------------------------------------------------------------------------- */
.art-frame {
  position: relative;
}
.art-frame::before {
  content: "";
  position: absolute;
  top: -16px;
  left: -16px;
  right: 16px;
  bottom: 16px;
  border: 1px solid var(--accent-secondary);
  opacity: 0.55;
  z-index: -1;
}
@media (max-width: 560px) {
  .art-frame::before {
    top: -10px;
    left: -10px;
    right: 10px;
    bottom: 10px;
  }
}

/* -------------------------------------------------------------------------
   7. PHOTO PLACEHOLDER SYSTEM
   ------------------------------------------------------------------------- */
.photo-placeholder {
  position: relative;
  display: flex;
  align-items: flex-end;
  width: 100%;
  background: linear-gradient(160deg, var(--background-soft) 0%, #ddceac 100%);
  border: 1px solid var(--border);
  overflow: hidden;
}

.photo-placeholder__label {
  position: relative;
  width: 100%;
  padding: var(--space-sm);
  background: linear-gradient(0deg, rgba(57, 42, 34, 0.5), transparent);
}

.photo-placeholder__tag {
  display: block;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #fff;
  opacity: 0.85;
  margin-bottom: 0.2rem;
}

.photo-placeholder__desc {
  display: block;
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 0.95rem;
  color: #fff;
}

/* -------------------------------------------------------------------------
   7b. COPY PLACEHOLDER
   -------------------------------------------------------------------------
   Mirrors the visual language of the photo placeholder tag above, but for
   text: a small labeled note marking copy that hasn't been written yet,
   so it reads as an obvious to-do rather than an attempt at real content.
   ------------------------------------------------------------------------- */
.copy-placeholder {
  border: 1px dashed var(--border);
  background-color: var(--background-soft);
  border-radius: var(--radius);
  padding: 0.7rem 0.9rem;
  margin: 0 0 var(--space-sm);
}

.copy-placeholder__tag {
  display: block;
  font-size: 0.66rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent-secondary-dark);
  margin-bottom: 0.2rem;
}

.copy-placeholder__text {
  display: block;
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 0.92rem;
  color: var(--text-muted);
}

/* -------------------------------------------------------------------------
   7c. SCRATCH PREVIEW PHOTOS
   -------------------------------------------------------------------------
   TEMPORARY. These wrap sample/stock images dropped in only so the local
   preview reads better while reviewing design — see images/skirts,
   images/pouches. They are NOT licensed for the live site (several are
   other sellers' actual product photography) and MUST be swapped for
   Leah's real photoshoot images before anything is deployed or shared
   publicly. Same aspect-ratio classes (.ph-hero / .ph-portrait / .ph-square)
   apply as on .photo-placeholder, so swapping back is a one-line change.
   ------------------------------------------------------------------------- */
.photo-frame {
  position: relative;
  width: 100%;
  overflow: hidden;
  border: 1px solid var(--border);
  background-color: var(--background-soft);
}

.photo-frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 450ms ease;
}

/* Aspect ratio variants */
.ph-square { aspect-ratio: 1 / 1; }
.ph-portrait { aspect-ratio: 3 / 4; }
.ph-tall { aspect-ratio: 2 / 3; }
.ph-landscape { aspect-ratio: 4 / 3; }
.ph-wide { aspect-ratio: 16 / 9; }
.ph-hero { aspect-ratio: 4 / 5; }

/* -------------------------------------------------------------------------
   8. INTRODUCTION / TEXT SECTIONS
   ------------------------------------------------------------------------- */
.intro-section {
  text-align: center;
}

.intro-section .container-narrow > p {
  font-size: 1.15rem;
  color: var(--text-muted);
}

/* -------------------------------------------------------------------------
   9. PRODUCT CARDS (featured + grid)
   ------------------------------------------------------------------------- */
.product-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-lg) var(--space-md);
}

.product-card {
  display: flex;
  flex-direction: column;
}

.product-card__media {
  margin-bottom: var(--space-sm);
  transition: transform var(--transition);
}

.product-card a.product-card__link {
  display: block;
  overflow: hidden;
}

.product-card__link:hover .photo-placeholder,
.product-card__link:focus-visible .photo-placeholder,
.product-card__link:hover .photo-frame,
.product-card__link:focus-visible .photo-frame {
  transform: scale(1.015);
  box-shadow: 0 22px 40px -22px rgba(85, 26, 36, 0.4);
}

.photo-placeholder,
.photo-frame {
  transition: transform 450ms ease, box-shadow 450ms ease;
}

.product-card__link:hover .photo-frame img,
.product-card__link:focus-visible .photo-frame img {
  transform: scale(1.06);
}

.product-card__name {
  font-size: 1.35rem;
  margin-bottom: 0.25rem;
}

.product-card__desc {
  color: var(--text-muted);
  font-size: 0.98rem;
  margin-bottom: 0.5rem;
}

.product-card__price {
  font-weight: 600;
  color: var(--accent-secondary-dark);
  margin-bottom: 0.6rem;
}

.product-card__meta {
  font-size: 0.85rem;
  color: var(--text-faint);
  margin-bottom: var(--space-sm);
}

/* Staggered editorial offsets on wider screens for the second/third card */
@media (min-width: 901px) {
  .product-grid--editorial .product-card:nth-child(2) {
    margin-top: var(--space-lg);
  }
  .product-grid--editorial .product-card:nth-child(3) {
    margin-top: var(--space-xs);
  }
}

@media (max-width: 900px) {
  .product-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 600px) {
  .product-grid {
    grid-template-columns: 1fr;
    gap: var(--space-lg);
  }
}

/* -------------------------------------------------------------------------
   10. ALTERNATING PRODUCT FEATURE (collection page)
   ------------------------------------------------------------------------- */
.feature-product {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: var(--space-xl);
  align-items: center;
  padding: var(--space-xl) 0;
  border-bottom: 1px solid var(--border-soft);
}

.feature-product:last-of-type {
  border-bottom: none;
}

.feature-product--reverse .feature-product__media {
  order: 2;
}

.feature-product__gallery {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-sm);
}

.feature-product__number {
  font-family: var(--font-accent);
  font-style: italic;
  color: var(--accent-secondary);
  font-size: 1rem;
}

.feature-product__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem;
  margin: var(--space-md) 0;
  font-size: 0.92rem;
}

.feature-product__meta dt {
  color: var(--text-faint);
  text-transform: uppercase;
  font-size: 0.72rem;
  letter-spacing: 0.09em;
  margin-bottom: 0.2rem;
}

.feature-product__meta dd {
  margin: 0;
  color: var(--text);
  font-weight: 600;
}

.fabric-preview-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: var(--space-md);
}

.fabric-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.3rem 0.7rem 0.3rem 0.3rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  font-size: 0.8rem;
  color: var(--text-muted);
  background-color: var(--background-card);
}

.fabric-chip--sold-out {
  opacity: 0.55;
}

.fabric-chip__dot {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 1px solid rgba(58, 38, 36, 0.2);
  flex-shrink: 0;
}

@media (max-width: 900px) {
  .feature-product {
    grid-template-columns: 1fr;
  }
  .feature-product--reverse .feature-product__media {
    order: -1;
  }
}

/* -------------------------------------------------------------------------
   11. LIFESTYLE PHOTO GRID
   ------------------------------------------------------------------------- */
.photo-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  grid-auto-rows: 140px;
  gap: var(--space-sm);
}

.photo-grid > div {
  min-width: 0;
  /* Grid items don't stretch their content's height by default when the
     content has an intrinsic size (a real <img>'s aspect ratio), so
     without this the figure renders at its natural height and overflows
     straight through the grid track into whatever section follows. */
  min-height: 0;
}
.photo-grid > div > figure {
  height: 100%;
}

.photo-grid__item--a { grid-column: span 3; grid-row: span 3; }
.photo-grid__item--b { grid-column: span 3; grid-row: span 2; }
.photo-grid__item--c { grid-column: span 2; grid-row: span 2; }
.photo-grid__item--d { grid-column: span 2; grid-row: span 2; }
.photo-grid__item--e { grid-column: span 2; grid-row: span 3; }
.photo-grid__item--f { grid-column: span 3; grid-row: span 2; }


.photo-grid-caption {
  text-align: center;
  margin-top: var(--space-md);
  font-family: var(--font-accent);
  font-style: italic;
  color: var(--text-muted);
}

@media (max-width: 900px) {
  .photo-grid {
    grid-template-columns: repeat(4, 1fr);
    grid-auto-rows: 120px;
  }
  .photo-grid__item--a { grid-column: span 4; grid-row: span 3; }
  .photo-grid__item--b { grid-column: span 2; grid-row: span 2; }
  .photo-grid__item--c { grid-column: span 2; grid-row: span 2; }
  .photo-grid__item--d { grid-column: span 2; grid-row: span 2; }
  .photo-grid__item--e { grid-column: span 2; grid-row: span 2; }
  .photo-grid__item--f { grid-column: span 4; grid-row: span 2; }
}

@media (max-width: 560px) {
  .photo-grid {
    grid-template-columns: repeat(2, 1fr);
    grid-auto-rows: 130px;
  }
  .photo-grid__item--a,
  .photo-grid__item--f { grid-column: span 2; grid-row: span 2; }
  .photo-grid__item--b,
  .photo-grid__item--c,
  .photo-grid__item--d,
  .photo-grid__item--e { grid-column: span 1; grid-row: span 2; }
}

/* -------------------------------------------------------------------------
   12. WHY HANDMADE / VALUE POINTS
   ------------------------------------------------------------------------- */
.value-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-lg);
}

.value-item {
  text-align: left;
}

.value-item__icon {
  width: 36px;
  height: 36px;
  margin-bottom: var(--space-sm);
  color: var(--accent);
}

.value-item__icon svg {
  width: 100%;
  height: 100%;
  stroke: currentColor;
  fill: none;
  stroke-width: 1.2;
}

.value-item h3 {
  margin-bottom: 0.4rem;
}

.value-item p {
  color: var(--text-muted);
  font-size: 0.98rem;
}

@media (max-width: 780px) {
  .value-grid {
    grid-template-columns: 1fr;
    gap: var(--space-lg);
  }
}

/* -------------------------------------------------------------------------
   13. HOW ORDERING WORKS (STEPS)
   ------------------------------------------------------------------------- */
.steps-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: var(--space-md);
  counter-reset: step;
}

.step-item {
  padding: var(--space-md) var(--space-md) var(--space-md) 0;
  border-top: 2px solid var(--accent);
}

.step-item__number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  border: 1px solid var(--border);
  border-radius: 50%;
  font-family: var(--font-heading);
  font-size: 1.3rem;
  color: var(--accent-secondary-dark);
  margin-bottom: 0.7rem;
}

.step-item h3 {
  font-size: 1.1rem;
  margin-bottom: 0.3rem;
}

.step-item p {
  color: var(--text-muted);
  font-size: 0.92rem;
}

.steps-cta {
  text-align: center;
  margin-top: var(--space-md);
}

@media (max-width: 1080px) {
  .steps-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
@media (max-width: 700px) {
  .steps-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 460px) {
  .steps-grid {
    grid-template-columns: 1fr;
  }
}

/* -------------------------------------------------------------------------
   14. CRAFT / PROCESS SECTION (replaces testimonials)
   ------------------------------------------------------------------------- */
.craft-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-lg);
}

.craft-item {
  border-top: 1px solid var(--border);
  padding-top: var(--space-md);
}

.craft-item h3 {
  font-size: 1.15rem;
}

.craft-item p {
  color: var(--text-muted);
  font-size: 0.96rem;
}

@media (max-width: 780px) {
  .craft-grid {
    grid-template-columns: 1fr;
    gap: var(--space-lg);
  }
}

/* -------------------------------------------------------------------------
   15. MAKER / ABOUT PREVIEW
   ------------------------------------------------------------------------- */
.maker-section {
  display: grid;
  grid-template-columns: 0.85fr 1.15fr;
  gap: var(--space-xl);
  align-items: center;
}

.maker-section__media {
  max-width: 420px;
}

@media (max-width: 900px) {
  .maker-section {
    grid-template-columns: 1fr;
  }
  .maker-section__media {
    max-width: 320px;
    margin: 0 auto;
  }
}

/* -------------------------------------------------------------------------
   16. CLOSING CTA BAND
   ------------------------------------------------------------------------- */
.cta-band {
  text-align: center;
  background-color: var(--accent-soft);
  border-top: 1px solid var(--border-soft);
  border-bottom: 1px solid var(--border-soft);
}

.cta-band__actions {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: var(--space-sm);
  margin-top: var(--space-md);
}

/* -------------------------------------------------------------------------
   17. FOOTER
   -------------------------------------------------------------------------
   A full-bleed, deep sage band (borrowed as a principle, not a copy, from
   the heritage-brand convention of a dark footer against a light site).
   The logo — a maroon mark on a pale blush square — sits inside a small
   ivory "plaque" so it reads as a deliberate emblem rather than a box.
   ------------------------------------------------------------------------- */
.site-footer {
  background-color: #4d5940;
  color: #ece3d1;
  padding: var(--space-xl) 0 var(--space-md);
}

.site-footer__grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr;
  gap: var(--space-lg);
  margin-bottom: var(--space-lg);
}

.site-footer__brand .site-logo {
  display: inline-flex;
  padding: 8px;
  margin-bottom: 0.9rem;
  background-color: var(--background);
  border-radius: 50%;
  box-shadow: 0 6px 18px rgba(20, 15, 8, 0.28);
}

.site-footer__brand .site-logo img {
  border-radius: 50%;
}

.site-footer__brand p {
  color: #d8cfb8;
  font-size: 0.92rem;
  max-width: 320px;
}

.site-footer h4 {
  font-size: 0.75rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #d6ccb3;
  margin-bottom: var(--space-sm);
}

.site-footer__links li {
  margin-bottom: 0.55rem;
}

.site-footer__links a {
  font-size: 0.95rem;
  color: #ece3d1;
}
.site-footer__links a:hover,
.site-footer__links a:focus-visible {
  color: var(--background-blossom);
}

.site-footer__contact p {
  font-size: 0.95rem;
  color: #d8cfb8;
  margin-bottom: 0.5rem;
}
.site-footer__contact a {
  color: #ece3d1;
}
.site-footer__contact a:hover,
.site-footer__contact a:focus-visible {
  color: var(--background-blossom);
}

.site-footer__bottom {
  padding-top: var(--space-md);
  border-top: 1px solid rgba(236, 227, 209, 0.18);
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.5rem;
  font-size: 0.82rem;
  color: #d6ccb3;
}

.site-footer__glory {
  font-family: var(--font-accent);
  font-style: italic;
}

@media (max-width: 780px) {
  .site-footer__grid {
    grid-template-columns: 1fr 1fr;
  }
  .site-footer__brand {
    grid-column: 1 / -1;
  }
}

@media (max-width: 480px) {
  .site-footer__grid {
    grid-template-columns: 1fr;
  }
}

/* -------------------------------------------------------------------------
   18. PAGE HERO (interior pages: Collection / About / Order / Thank you)
   ------------------------------------------------------------------------- */
.page-hero {
  padding: var(--space-xl) 0 var(--space-lg);
  text-align: center;
  background-color: var(--background-soft);
  border-bottom: 1px solid var(--border-soft);
}

.page-hero .eyebrow {
  display: block;
}

.page-hero p {
  max-width: 560px;
  margin: 0 auto;
  color: var(--text-muted);
  font-size: 1.1rem;
}

/* -------------------------------------------------------------------------
   19. COLLECTION SECTION INTROS (Skirts / Quilted Pouches)
   ------------------------------------------------------------------------- */
.collection-jump {
  display: flex;
  justify-content: center;
  gap: var(--space-lg);
  flex-wrap: wrap;
  padding: var(--space-md) 0 0;
}

.collection-jump a {
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-muted);
}

.collection-jump a:hover,
.collection-jump a:focus-visible {
  color: var(--accent);
}

.collection-divider {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  margin: 0 0 var(--space-lg);
}

.collection-divider::before,
.collection-divider::after {
  content: "";
  flex: 1;
  height: 1px;
  background-color: var(--border);
}

/* -------------------------------------------------------------------------
   20. FORMS (order form + generic form styling)
   ------------------------------------------------------------------------- */
.form-section {
  padding: var(--space-lg) 0;
  border-bottom: 1px solid var(--border-soft);
}

.form-section:last-of-type {
  border-bottom: none;
}

.form-section[hidden] {
  display: none;
}

.form-section__title {
  font-size: 1rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent-secondary-dark);
  margin-bottom: 0.2rem;
}

.form-section__step {
  font-family: var(--font-accent);
  font-style: italic;
  color: var(--text-faint);
  font-size: 0.9rem;
}

.form-section__helptext {
  color: var(--text-muted);
  font-size: 0.95rem;
  margin-top: -0.3rem;
}

.field {
  margin-bottom: var(--space-md);
}

.field-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-md);
}

.field-row--three {
  grid-template-columns: repeat(3, 1fr);
}

.field label,
fieldset legend {
  display: block;
  font-weight: 600;
  font-size: 0.92rem;
  margin-bottom: 0.4rem;
  color: var(--text);
}

.field .hint {
  display: block;
  font-weight: 400;
  font-size: 0.82rem;
  color: var(--text-faint);
  margin-top: 0.3rem;
}

input[type="text"],
input[type="email"],
input[type="tel"],
input[type="number"],
textarea,
select {
  width: 100%;
  padding: 0.85rem 1rem;
  font-family: var(--font-body);
  font-size: 1rem;
  color: var(--text);
  background-color: var(--background-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  transition: border-color var(--transition), box-shadow var(--transition);
  min-height: 48px;
}

textarea {
  min-height: 120px;
  resize: vertical;
}

input:focus,
textarea:focus,
select:focus {
  border-color: var(--accent);
  outline: none;
  box-shadow: 0 0 0 3px var(--accent-soft);
}

input[aria-invalid="true"],
textarea[aria-invalid="true"] {
  border-color: var(--error);
}

fieldset {
  border: none;
  padding: 0;
  margin: 0 0 var(--space-md);
}

/* Selectable option cards (product cards on the order form) */
.option-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: var(--space-sm);
}

.option-card {
  position: relative;
}

.option-card input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}

.option-card label {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: var(--space-sm);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background-color: var(--background-card);
  cursor: pointer;
  transition: border-color var(--transition), background-color var(--transition), transform var(--transition);
  font-weight: 400;
  height: 100%;
}

.option-card input:checked + label {
  border-color: var(--accent);
  background-color: var(--accent-soft);
  box-shadow: inset 0 0 0 1px var(--accent);
}

.option-card input:focus-visible + label {
  outline: 2px solid var(--accent-dark);
  outline-offset: 2px;
}

.option-card__thumb {
  width: 100%;
  aspect-ratio: 3 / 4;
}

.option-card__name {
  font-family: var(--font-heading);
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--text);
}

.option-card__price {
  font-size: 0.85rem;
  color: var(--text-muted);
}

.option-group-label {
  font-family: var(--font-accent);
  font-style: italic;
  color: var(--text-muted);
  font-size: 0.95rem;
  margin: var(--space-md) 0 var(--space-xs);
}
.option-group-label:first-child {
  margin-top: 0;
}

/* -------------------------------------------------------------------------
   21. FABRIC CARDS
   -------------------------------------------------------------------------
   Editorial, image-first fabric selectors. Built to hold real close-up
   fabric photography (see FABRICS in js/products.js) — until real photos
   exist, the swatch shows a soft placeholder gradient in the fabric's
   tone instead of a plain color dot.
   ------------------------------------------------------------------------- */
.fabric-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(128px, 1fr));
  gap: var(--space-sm);
}

.fabric-card {
  position: relative;
}

.fabric-card input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}

.fabric-card label {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  cursor: pointer;
}

.fabric-card__swatch {
  position: relative;
  width: 100%;
  aspect-ratio: 1 / 1;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  transition: box-shadow var(--transition), transform var(--transition);
}

.fabric-card label:hover .fabric-card__swatch {
  transform: translateY(-2px);
}

.fabric-card input:checked + label .fabric-card__swatch {
  box-shadow: 0 0 0 2px var(--background), 0 0 0 4px var(--accent);
}

.fabric-card input:focus-visible + label .fabric-card__swatch {
  outline: 2px solid var(--accent-dark);
  outline-offset: 3px;
}

.fabric-card__name {
  font-size: 0.88rem;
  font-weight: 600;
  text-align: center;
  color: var(--text);
}

.fabric-card--sold-out .fabric-card__swatch {
  filter: grayscale(65%);
  opacity: 0.55;
}

.fabric-card--sold-out .fabric-card__name {
  color: var(--text-faint);
}

.fabric-card--sold-out label {
  cursor: not-allowed;
}

.fabric-card__sold-out-tag {
  position: absolute;
  inset: auto 0 0 0;
  text-align: center;
  padding: 0.3rem 0.25rem;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #fff;
  background: linear-gradient(0deg, rgba(58, 38, 36, 0.72), transparent);
}

.fabric-note {
  margin-top: var(--space-sm);
  font-size: 0.88rem;
  color: var(--text-muted);
  font-style: italic;
}

/* -------------------------------------------------------------------------
   22. MEASUREMENT HELP (accessible <details>/<summary> accordion)
   ------------------------------------------------------------------------- */
.measure-help {
  margin-top: var(--space-sm);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius);
  background-color: var(--background-card);
}

.measure-help summary {
  list-style: none;
  cursor: pointer;
  padding: 0.85rem 1rem;
  font-weight: 600;
  font-size: 0.92rem;
  color: var(--accent-dark);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}

.measure-help summary::-webkit-details-marker {
  display: none;
}

.measure-help summary::after {
  content: "+";
  font-family: var(--font-heading);
  font-size: 1.3rem;
  line-height: 1;
  color: var(--accent);
  transition: transform var(--transition);
}

.measure-help[open] summary::after {
  transform: rotate(45deg);
}

.measure-help__body {
  padding: 0 1rem 1.1rem;
  color: var(--text-muted);
  font-size: 0.92rem;
}

.measure-help__body dt {
  font-weight: 600;
  color: var(--text);
  margin-top: 0.7rem;
}
.measure-help__body dt:first-child {
  margin-top: 0;
}
.measure-help__body dd {
  margin: 0.15rem 0 0;
}

/* Simple pill-style options (customer type / delivery) */
.pill-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
}

.pill-card {
  position: relative;
}

.pill-card input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}

.pill-card label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 58px;
  padding: 0.7rem 1.25rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  background-color: var(--background-card);
  font-weight: 600;
  font-size: 0.92rem;
  cursor: pointer;
  transition: border-color var(--transition), background-color var(--transition), color var(--transition);
}

.pill-card input:checked + label {
  background-color: var(--accent);
  border-color: var(--accent);
  color: var(--background);
}

.pill-card input:focus-visible + label {
  outline: 2px solid var(--accent-dark);
  outline-offset: 2px;
}

/* Lace trim upgrade card */
.lace-option {
  display: flex;
  align-items: flex-start;
  gap: 0.9rem;
  padding: var(--space-md);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background-color: var(--background-card);
  cursor: pointer;
  transition: border-color var(--transition), background-color var(--transition);
  max-width: 480px;
}

.lace-option:has(input:checked) {
  border-color: var(--accent);
  background-color: var(--accent-soft);
}

.lace-option input {
  margin-top: 0.3rem;
  width: 18px;
  height: 18px;
  accent-color: var(--accent);
  flex-shrink: 0;
}

.lace-option__name {
  font-family: var(--font-heading);
  font-size: 1.1rem;
  font-weight: 600;
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
}

.lace-option__price {
  font-family: var(--font-body);
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--accent-secondary-dark);
}

.lace-option__desc {
  font-size: 0.92rem;
  color: var(--text-muted);
  margin: 0.2rem 0 0;
}

.conditional-field {
  margin-top: var(--space-md);
  padding: var(--space-md);
  background-color: var(--background-soft);
  border: 1px dashed var(--border);
  border-radius: var(--radius);
}

.conditional-field[hidden] {
  display: none;
}

/* -------------------------------------------------------------------------
   23. FORM VALIDATION MESSAGES
   ------------------------------------------------------------------------- */
.field-error {
  margin: 0.4rem 0 0;
  font-size: 0.85rem;
  color: var(--error);
  font-weight: 600;
}

.form-error-summary {
  margin-bottom: var(--space-lg);
  padding: var(--space-md);
  border: 1px solid var(--error);
  border-radius: var(--radius);
  background-color: #fbf0ef;
  color: var(--error);
}

.form-error-summary[hidden] {
  display: none;
}

.form-error-summary__heading {
  font-weight: 700;
  margin: 0 0 0.4rem;
}

.form-error-summary ul {
  list-style: disc;
  padding-left: 1.25rem;
  margin: 0;
}

.form-error-summary li {
  margin-bottom: 0.2rem;
}

/* -------------------------------------------------------------------------
   23b. MULTI-ITEM ORDERS
   -------------------------------------------------------------------------
   A single order request can include up to three items. Each item is a
   self-contained card (product, fabric, measurements, lace); "+ Add
   Another Item" reveals the next one and "Remove Last Item" hides it
   again (see js/order.js — items are always in the static HTML so
   Netlify's form scanner can detect every field).
   ------------------------------------------------------------------------- */
.order-item {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: var(--space-md) var(--space-lg);
  margin-bottom: var(--space-lg);
  background-color: var(--background-card);
}

.order-item__header {
  margin-bottom: var(--space-sm);
  padding-bottom: var(--space-sm);
  border-bottom: 1px solid var(--border-soft);
}

.order-item__eyebrow {
  margin-bottom: 0.15rem;
}

.order-item__title {
  font-size: 1.4rem;
  margin-bottom: 0;
}

.order-item .form-section:last-child {
  border-bottom: none;
  padding-bottom: 0;
}
.order-item .form-section:first-of-type {
  padding-top: 0;
}

.order-items-control {
  display: flex;
  align-items: center;
  gap: var(--space-md);
  margin: 0 0 0.6rem;
}

.order-items-hint {
  margin-bottom: var(--space-lg);
}

@media (max-width: 560px) {
  .order-item {
    padding: var(--space-md);
  }
}

/* -------------------------------------------------------------------------
   24. ORDER PAGE LAYOUT + SUMMARY PANEL
   ------------------------------------------------------------------------- */
.order-layout {
  display: grid;
  grid-template-columns: 1fr 340px;
  grid-template-rows: auto auto;
  gap: var(--space-xl);
  align-items: start;
}

/* Left column: the multi-step fields, then the submit button below them */
.order-fields {
  grid-column: 1;
  grid-row: 1;
}

.form-submit-section {
  grid-column: 1;
  grid-row: 2;
}

/* Right column: summary stays sticky and spans the full height of both rows */
.order-summary {
  grid-column: 2;
  grid-row: 1 / 3;
  position: sticky;
  top: 100px;
  background-color: var(--background-card);
  border: 1px solid var(--border);
  padding: var(--space-md);
}

.order-summary h2 {
  font-size: 1.2rem;
  margin-bottom: var(--space-sm);
}

.order-summary dl {
  margin: 0 0 var(--space-md);
}

.summary-item {
  margin-bottom: var(--space-md);
  padding-bottom: var(--space-md);
  border-bottom: 1px solid var(--border);
}
.summary-item:last-child {
  border-bottom: none;
  padding-bottom: 0;
  margin-bottom: var(--space-md);
}

.summary-item__title {
  font-family: var(--font-heading);
  font-size: 1.05rem;
  font-weight: 600;
  margin-bottom: 0.4rem;
}

.summary-item__rows {
  margin: 0;
}

.order-summary-row {
  display: flex;
  justify-content: space-between;
  gap: var(--space-sm);
  padding: 0.6rem 0;
  border-bottom: 1px solid var(--border-soft);
  font-size: 0.92rem;
}

.order-summary-row[hidden] {
  display: none;
}

.order-summary-row dt {
  color: var(--text-muted);
  flex-shrink: 0;
}

.order-summary-row dd {
  margin: 0;
  font-weight: 600;
  text-align: right;
}

.order-summary-total {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding-top: var(--space-sm);
  font-size: 1.15rem;
}

.order-summary-total dd {
  font-family: var(--font-heading);
  font-weight: 700;
  color: var(--accent-secondary-dark);
}

.order-reassurance {
  font-size: 0.88rem;
  color: var(--text-faint);
  margin-top: var(--space-sm);
}

.form-submit-note {
  font-size: 0.9rem;
  color: var(--text-muted);
  margin-bottom: var(--space-sm);
}

@media (max-width: 980px) {
  .order-layout {
    grid-template-columns: 1fr;
  }
  /* Stack in source order: fields, then summary, then submit — this puts
     the summary panel directly above the submit button on mobile. */
  .order-fields,
  .order-summary,
  .form-submit-section {
    grid-column: 1;
    grid-row: auto;
  }
  .order-summary {
    position: static;
  }
}

/* -------------------------------------------------------------------------
   25. THANK YOU PAGE
   ------------------------------------------------------------------------- */
.thank-you {
  text-align: center;
  padding: var(--space-2xl) 0;
}

.thank-you__check {
  width: 56px;
  height: 56px;
  margin: 0 auto var(--space-md);
  color: var(--accent);
}

.next-steps-card {
  max-width: 460px;
  margin: var(--space-lg) auto 0;
  padding: var(--space-lg);
  background-color: var(--background-card);
  border: 1px solid var(--border);
  text-align: left;
}

.next-steps-card h2 {
  font-size: 1.15rem;
  text-align: center;
  margin-bottom: var(--space-md);
}

.next-steps-card ol {
  counter-reset: nextstep;
  display: grid;
  gap: var(--space-sm);
}

.next-steps-card li {
  counter-increment: nextstep;
  display: flex;
  gap: 0.75rem;
  font-size: 0.95rem;
  color: var(--text-muted);
}

.next-steps-card li::before {
  content: counter(nextstep);
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background-color: var(--accent-soft);
  color: var(--accent-dark);
  font-weight: 700;
  font-size: 0.8rem;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* -------------------------------------------------------------------------
   26. ABOUT PAGE SPECIFIC
   ------------------------------------------------------------------------- */
.values-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-lg) var(--space-xl);
}

@media (max-width: 700px) {
  .values-list {
    grid-template-columns: 1fr;
  }
}

.glory-line {
  text-align: center;
  font-family: var(--font-accent);
  font-style: italic;
  font-size: 1.1rem;
  color: var(--text-muted);
  padding: var(--space-lg) 0;
}

/* -------------------------------------------------------------------------
   27. SCROLL REVEAL ANIMATION (progressive enhancement)
   ------------------------------------------------------------------------- */
.reveal {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 600ms ease, transform 600ms ease;
}

.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* -------------------------------------------------------------------------
   28. UTILITIES
   ------------------------------------------------------------------------- */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.text-center { text-align: center; }
.mt-lg { margin-top: var(--space-lg); }
.mb-0 { margin-bottom: 0; }

/* -------------------------------------------------------------------------
   29. RESPONSIVE — GLOBAL TYPE + SPACING ADJUSTMENTS
   ------------------------------------------------------------------------- */
@media (max-width: 900px) {
  :root {
    --space-xl: 3.5rem;
    --space-2xl: 5rem;
  }
}

@media (max-width: 480px) {
  .container,
  .container-narrow {
    padding: 0 var(--space-sm);
  }
  .field-row,
  .field-row--three {
    grid-template-columns: 1fr;
    gap: var(--space-sm);
  }
  .site-logo img {
    height: 42px;
  }
}

/* -------------------------------------------------------------------------
   30. ORDER WIZARD
   -------------------------------------------------------------------------
   Turns the order form into a Typeform-style one-question-at-a-time flow.
   js/order-wizard.js adds "wizard-active" to <body> once it runs and
   toggles "is-active" onto exactly one step at a time — every rule below
   is scoped to that class, so if the script fails to load, order.html
   still renders (and works) as the original single-page scrolling form.
   ------------------------------------------------------------------------- */
.wizard-progress,
.wizard-step-count,
.wizard-nav {
  display: none;
}

.wizard-progress {
  height: 4px;
  max-width: 640px;
  margin: 0 auto var(--space-xs);
  background-color: var(--border-soft);
  border-radius: 999px;
  overflow: hidden;
}

.wizard-progress__fill {
  height: 100%;
  width: 0%;
  background-color: var(--accent);
  transition: width 320ms ease;
}

.wizard-step-count {
  max-width: 640px;
  margin: 0 auto var(--space-lg);
  text-align: center;
  font-family: var(--font-accent);
  font-style: italic;
  color: var(--text-faint);
  font-size: 0.88rem;
}

body.wizard-active .wizard-progress,
body.wizard-active .wizard-step-count {
  display: block;
}

/* One step visible at a time */
body.wizard-active .order-item > .form-section,
body.wizard-active .order-fields > .form-section,
body.wizard-active .order-items-control-wrap,
body.wizard-active .wizard-review-step {
  display: none;
}

body.wizard-active .order-item > .form-section.is-active,
body.wizard-active .order-fields > .form-section.is-active,
body.wizard-active .order-items-control-wrap.is-active,
body.wizard-active .wizard-review-step.is-active {
  display: block;
  animation: wizardStepIn 420ms ease;
}

@keyframes wizardStepIn {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  body.wizard-active .form-section.is-active,
  body.wizard-active .order-items-control-wrap.is-active,
  body.wizard-active .wizard-review-step.is-active {
    animation: none;
  }
}

/* Center every step as a single, generous "question" rather than a
   stacked form — reusing the same card language (option/fabric/pill
   cards) already used elsewhere on the site. */
body.wizard-active .order-layout {
  display: block;
}

body.wizard-active .order-item {
  border: none;
  padding: 0;
  margin: 0;
  background: none;
}

body.wizard-active .order-item__header {
  display: none;
}

body.wizard-active .form-section,
body.wizard-active .order-items-control-wrap,
body.wizard-active .wizard-review-step {
  max-width: 640px;
  margin: 0 auto;
  padding: var(--space-md) 0;
  border-bottom: none;
}

body.wizard-active .form-section__title {
  font-family: var(--font-heading);
  font-size: 1.75rem;
  font-weight: 600;
  text-transform: none;
  letter-spacing: 0;
  color: var(--text);
  margin-bottom: var(--space-md);
}

body.wizard-active .order-summary {
  position: static;
  margin: 0 auto var(--space-lg);
}

body.wizard-active .order-summary h2 {
  font-family: var(--font-heading);
  font-size: 1.75rem;
  font-weight: 600;
}

body.wizard-active .form-submit-section {
  padding-top: 0;
}

/* "Add another item?" branch step — read as a friendly, centered prompt */
.order-items-control-wrap .form-section__title,
.order-items-control-wrap .order-items-hint {
  text-align: center;
}

.order-items-control-wrap .order-items-hint {
  max-width: 480px;
  margin-left: auto;
  margin-right: auto;
}

.order-items-control-wrap .order-items-control {
  justify-content: center;
  margin: var(--space-md) 0 0;
}

.order-items-control-wrap #wizard-continue-btn {
  display: block;
  margin: var(--space-md) auto 0;
}

.wizard-step-error {
  text-align: center;
}

/* Sticky Back / Next controls */
.wizard-nav {
  align-items: center;
  justify-content: space-between;
  gap: var(--space-md);
  max-width: 640px;
  margin: var(--space-lg) auto 0;
  padding: var(--space-md) 0;
  border-top: 1px solid var(--border-soft);
  background-color: var(--background);
  position: sticky;
  bottom: 0;
  box-shadow: 0 -2px 10px rgba(57, 42, 34, 0.06);
}

body.wizard-active .wizard-nav {
  display: flex;
}

.wizard-nav__back:disabled {
  opacity: 0.35;
  cursor: default;
  pointer-events: none;
}

.wizard-nav__next {
  min-width: 140px;
}

.wizard-nav__next[hidden] {
  display: none;
}

@media (max-width: 480px) {
  body.wizard-active .form-section__title {
    font-size: 1.4rem;
  }
}
