/* Blossom Bakery — clean static site */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --cream: #faf6f0;
  --paper: #fffdfb;
  --rose: #d89396;
  --rose-dark: #b8676a;
  --rose-soft: #e8c5c4;
  --sage: #9bb098;
  --ink: #2a2620;
  --ink-soft: #4a423a;
  --muted: #7a7068;
  --border: rgba(42, 38, 32, 0.08);
  --border-strong: rgba(42, 38, 32, 0.16);
  --gold: #c8a65c;

  /* Editorial fluid scale (v2) */
  --fs-display: clamp(56px, 9vw, 128px);
  --fs-h2: clamp(40px, 5.5vw, 72px);
  --fs-h3: clamp(22px, 2.4vw, 28px);
  --fs-body: 17px;
  --fs-eyebrow: 11px;
  --space-section: clamp(96px, 11vw, 160px);
  --space-block: clamp(48px, 6vw, 88px);
}

html { scroll-behavior: smooth; }

body {
  background: var(--cream);
  color: var(--ink);
  font-family: 'Lora', Georgia, 'Times New Roman', serif;
  font-size: 17px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}

a { color: var(--rose-dark); text-decoration: none; }
a:hover { color: var(--ink); }

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

.container { max-width: 1180px; margin: 0 auto; padding: 0 24px; }
.container--narrow { max-width: 760px; }

/* Header — translucent backdrop (cake images bleed through), small sans nav with blush hover pill */
.site-header { padding: 18px 0; border-bottom: 1px solid var(--border); background: color-mix(in oklab, var(--cream) 88%, transparent); -webkit-backdrop-filter: saturate(180%) blur(14px); backdrop-filter: saturate(180%) blur(14px); position: sticky; top: 0; z-index: 10; }
.site-header__inner { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; }
.site-header__brand { display: flex; flex-direction: column; gap: 2px; text-decoration: none; color: var(--ink); flex-shrink: 0; }
.site-header__name { font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif; font-size: 1.85rem; font-weight: 500; font-style: italic; letter-spacing: -0.4px; line-height: 1; color: var(--ink); white-space: nowrap; }
.site-header__tagline { font-size: 0.65rem; color: var(--muted); letter-spacing: 2.5px; text-transform: uppercase; margin-top: 4px; }

.site-nav { flex: 1; }
.site-nav__list { display: flex; flex-wrap: wrap; gap: 4px; list-style: none; justify-content: flex-end; align-items: center; padding: 0; margin: 0; }
.site-nav__item { position: relative; }
.site-nav__list > .site-nav__item > a {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif;
  font-size: 13.5px; font-weight: 500; color: var(--ink);
  padding: 10px 14px; border-radius: 10px;
  transition: background 0.18s, color 0.18s;
  text-decoration: none; letter-spacing: 0.02em;
  display: inline-flex; align-items: center; gap: 6px;
}
/* Blush rounded pill on hover/active — the missing 'tap' feedback */
.site-nav__list > .site-nav__item > a:hover,
.site-nav__list > .site-nav__item > a.active,
.site-nav__list > .site-nav__item.has-dropdown:hover > a,
.site-nav__list > .site-nav__item.has-dropdown:focus-within > a {
  color: var(--ink); background: rgba(232, 165, 165, 0.16);
}

/* Tilde-wave caret — small, soft */
.site-nav__list .caret { width: 11px; height: 5.5px; opacity: 0.5; transition: transform 0.22s, opacity 0.22s; flex-shrink: 0; display: inline-block; vertical-align: middle; }
.site-nav__list .caret svg { display: block; width: 100%; height: 100%; }
.site-nav__item.has-dropdown:hover > a .caret,
.site-nav__item.has-dropdown:focus-within > a .caret { transform: rotate(180deg); opacity: 1; }

/* Dropdown panel — italic Cormorant titles, blush hover */
.site-dropdown {
  position: absolute; top: calc(100% + 14px); left: 50%; transform: translateX(-50%) translateY(-6px);
  background: color-mix(in oklab, var(--cream) 98%, white); border: 1px solid var(--border); border-radius: 16px;
  box-shadow: 0 28px 64px -32px rgba(74, 30, 26, 0.28);
  padding: 14px 0; min-width: 260px;
  opacity: 0; visibility: hidden;
  transition: opacity 0.18s, transform 0.18s, visibility 0.18s;
  z-index: 200;
}
@media (min-width: 881px) {
  .site-nav__item.has-dropdown:hover > .site-dropdown,
  .site-nav__item.has-dropdown:focus-within > .site-dropdown {
    opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0);
  }
}
.site-dropdown ul { list-style: none; padding: 0; margin: 0; }
.site-dropdown li a {
  display: block; padding: 12px 26px; color: var(--ink); text-decoration: none;
  transition: background 0.15s, color 0.15s;
}
.site-dropdown li a:hover { background: rgba(232, 165, 165, 0.18); color: var(--rose-dark); }
.site-dropdown strong {
  display: block; font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif;
  font-size: 1.15rem; font-style: italic; font-weight: 500; letter-spacing: -0.1px; line-height: 1.2;
}
.site-dropdown span {
  display: block; font-size: 0.68rem; color: var(--muted); letter-spacing: 1.4px;
  text-transform: uppercase; margin-top: 4px;
}
.site-nav__item.has-dropdown::after {
  content: ""; position: absolute; top: 100%; left: 0; right: 0; height: 14px;
}

.btn--pill { padding: 10px 22px; border-width: 1px; border-radius: 999px; font-size: 0.78rem; letter-spacing: 0.5px; font-family: 'Inter', -apple-system, sans-serif; font-weight: 500; }

/* Hamburger button — hidden on desktop, shown on mobile */
.mobile-toggle { display: none; background: transparent; border: 0; padding: 8px; cursor: pointer; align-items: center; justify-content: center; gap: 5px; flex-direction: column; width: 36px; height: 36px; }
.mobile-toggle span { display: block; width: 22px; height: 2px; background: var(--ink); border-radius: 2px; transition: transform 0.22s, opacity 0.22s; }
.site-nav.is-open ~ .mobile-toggle span:nth-child(1),
.site-header__inner:has(.site-nav.is-open) .mobile-toggle span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.site-header__inner:has(.site-nav.is-open) .mobile-toggle span:nth-child(2) { opacity: 0; }
.site-header__inner:has(.site-nav.is-open) .mobile-toggle span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

@media (max-width: 880px) {
  .site-header__inner { gap: 14px 18px; flex-wrap: wrap; }
  .mobile-toggle { display: flex; order: 2; }
  .site-header__brand { order: 1; flex: 1; }
  .btn--pill { display: none; }  /* Enquire pill hides on mobile (it's inside the open menu) */

  /* Mobile nav: collapsed by default, full-width vertical when open */
  .site-nav { display: none; flex-basis: 100%; order: 99; padding-top: 12px; border-top: 1px solid var(--border); margin-top: 12px; }
  .site-nav.is-open { display: block; }
  .site-nav__list { flex-direction: column; gap: 0; align-items: stretch; justify-content: flex-start; }
  .site-nav__list > li { border-bottom: 1px solid var(--border); }
  .site-nav__list > li:last-child { border-bottom: 0; }
  .site-nav__list a { font-size: 1rem; padding: 14px 4px; display: block; }

  /* Dropdowns: collapsed by default on mobile, expanded when parent is .is-open.
     Force position:static + transform:none to override any leaked desktop transforms. */
  .site-dropdown { display: none; position: static !important; transform: none !important; opacity: 1 !important; visibility: visible !important; box-shadow: none; border: 0; padding: 4px 0 12px 16px; min-width: 0; background: transparent; }
  .site-nav__item.has-dropdown.is-open > .site-dropdown { display: block; }
  .site-dropdown li a { padding: 8px 0; border-bottom: 0; font-size: 0.92rem; }
  .site-dropdown strong { font-size: 0.95rem; font-style: normal; }
  .site-dropdown span { display: block; font-size: 0.65rem; }

  .site-nav__list .caret { display: none; }
  .site-nav__item.has-dropdown > a::after { content: "+"; float: right; opacity: 0.45; font-weight: 300; padding-left: 8px; }
  .site-nav__item.has-dropdown.is-open > a::after { content: "−"; }
}

/* Hero */
.hero { padding: 64px 0 48px; text-align: center; }
.hero h1 { font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif; font-size: clamp(2.4rem, 5vw, 3.6rem); font-weight: 500; letter-spacing: -0.5px; line-height: 1.1; margin-bottom: 24px; color: var(--ink); }
.hero h1 em { color: var(--rose-dark); font-style: italic; }
.hero p.lede { font-size: 1.12rem; color: var(--muted); max-width: 620px; margin: 0 auto; }
.hero__cta { display: inline-block; margin-top: 32px; padding: 14px 32px; background: var(--rose-dark); color: var(--cream); border-radius: 999px; font-size: 0.95rem; letter-spacing: 1px; text-transform: uppercase; transition: background 0.2s; }
.hero__cta:hover { background: var(--ink); color: var(--cream); }

/* Section headers */
section { padding: 56px 0; }
section.alt { background: #fff; }

/* Page rhythm — alternating cream (body default) / pure white to match
   the homepage's hero → categories → story cadence. Every other
   content section flips to #fff (matches the existing `.alt` treatment
   so cream and white feel like the same brand pairing across the site).
   The `body` prefix lifts specificity above section-type classes that
   manage their own backgrounds (.cup-hero, .cup-ink-cta, .section-ink),
   so those bespoke layouts stay untouched. */
body main > .prose-section:nth-of-type(even),
body main > .wedding-section:nth-of-type(even),
body main > section:not([class]):nth-of-type(even) {
  background: #fff;
}
.section-eyebrow { text-align: center; font-size: 0.78rem; letter-spacing: 3px; text-transform: uppercase; color: var(--gold); margin-bottom: 8px; }
.section-title { text-align: center; font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif; font-size: clamp(1.8rem, 3.5vw, 2.4rem); font-weight: 500; margin-bottom: 12px; }
.section-intro { text-align: center; max-width: 620px; margin: 0 auto 40px; color: var(--muted); }

/* Product grid (homepage categories) — refined: hairline border, subtle hover */
.cat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 28px; }
.cat-card { display: block; background: transparent; border-radius: 4px; overflow: hidden; transition: transform 0.3s; }
.cat-card:hover { transform: translateY(-2px); }
.cat-card__img { aspect-ratio: 4 / 5; background: var(--cream); overflow: hidden; border-radius: 4px; }
.cat-card__img img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s cubic-bezier(.2,.6,.2,1); }
.cat-card:hover .cat-card__img img { transform: scale(1.04); }
.cat-card__body { padding: 18px 4px 6px; display: flex; justify-content: space-between; align-items: baseline; gap: 16px; }
.cat-card__title { font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif; font-size: 1.4rem; font-weight: 500; font-style: italic; color: var(--ink); letter-spacing: -0.01em; }
.cat-card__meta { font-family: 'Inter', sans-serif; font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--muted); text-align: right; max-width: 50%; line-height: 1.4; }

/* About teaser — refined editorial layout */
.about-teaser { display: grid; grid-template-columns: 1fr 1.1fr; gap: 80px; align-items: center; }
@media (max-width: 880px) { .about-teaser { grid-template-columns: 1fr; gap: 40px; } }
.about-teaser__img { border-radius: 4px; overflow: hidden; aspect-ratio: 4/5; }
.about-teaser__img img { width: 100%; height: 100%; object-fit: cover; }
.about-teaser h2 { font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif; font-size: clamp(1.8rem, 3vw, 2.2rem); margin-bottom: 16px; }
.about-teaser p { color: var(--ink-soft); margin-bottom: 14px; line-height: 1.85; }
.about-teaser .signature { font-family: 'Cormorant Garamond', serif; font-style: italic; color: var(--rose-dark); font-size: 1.15rem; margin-top: 10px; }

/* Photo gallery (used on product pages) */
.photo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.photo-grid img { aspect-ratio: 1 / 1; object-fit: cover; border-radius: 8px; transition: transform 0.3s; }
.photo-grid img:hover { transform: scale(1.02); }

/* Product page (e.g. wedding cakes) */
.page-hero { padding: clamp(80px, 10vw, 140px) 0 clamp(48px, 6vw, 80px); text-align: center; }
.page-hero .eyebrow { font-size: 0.78rem; letter-spacing: 3px; text-transform: uppercase; color: var(--gold); }
.page-hero .eyebrow:empty { display: none; }
.page-hero h1 { font-family: 'Cormorant Garamond', Georgia, serif; font-size: var(--fs-display); font-weight: 400; letter-spacing: -0.035em; line-height: 0.95; color: var(--ink); max-width: 14ch; margin: 8px auto 0; }
.page-hero p.subtitle { font-size: 1.1rem; color: var(--muted); margin-top: 14px; max-width: 620px; margin-left: auto; margin-right: auto; }

.feature-list { list-style: none; padding: 0; max-width: 620px; margin: 0 auto; }
.feature-list li { padding: 10px 0; padding-left: 28px; position: relative; color: var(--ink); }
.feature-list li::before { content: '✓'; position: absolute; left: 0; color: var(--sage); font-weight: 700; }

.flavour-list {
  columns: 2;
  column-gap: 72px;
  max-width: 760px;
  margin: 0 auto;
  padding: 32px 40px;
  background: color-mix(in oklab, var(--paper) 92%, var(--rose-soft));
  border: 1px solid var(--border);
  border-radius: 14px;
  list-style: none;
}
@media (max-width: 700px) { .flavour-list { columns: 1; padding: 24px 22px; } }
.flavour-list li { padding: 8px 0; break-inside: avoid; color: var(--ink); line-height: 1.55; }
.flavour-list li strong { color: var(--ink); font-weight: 600; }
.flavour-list__tag { display: inline-block; margin-left: 6px; padding: 1px 8px; font-size: 0.72rem; letter-spacing: 0.04em; color: var(--rose-dark, #8c5a5a); background: var(--cream); border: 1px solid var(--border); border-radius: 999px; white-space: nowrap; vertical-align: middle; }

/* Footer */
.site-footer { background: var(--ink); color: #ddd; padding: 80px 0 36px; margin-top: 0; }
.site-footer a { color: rgba(250, 246, 240, 0.65); transition: color 0.18s; }
.site-footer a:hover { color: #faf6f0; }
.site-footer__links { display: grid; grid-template-columns: 1fr 1fr; column-gap: 24px; }
.site-footer__grid { display: grid; grid-template-columns: 1.6fr 1fr 1.2fr; gap: clamp(48px, 8vw, 120px); margin-bottom: 64px; }
@media (max-width: 880px) { .site-footer__grid { grid-template-columns: 1fr 1fr; gap: 56px; } }
@media (max-width: 540px) { .site-footer__grid { grid-template-columns: 1fr; gap: 40px; } }
.site-footer h4 { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 1.3rem; font-weight: 500; margin-bottom: 16px; color: var(--cream); }
.site-footer p, .site-footer li { font-size: 14px; color: rgba(250, 246, 240, 0.65); line-height: 1.8; }
.site-footer ul { list-style: none; padding: 0; }
.site-footer__bottom { border-top: 1px solid rgba(255,255,255,0.08); padding-top: 24px; font-family: 'Inter', sans-serif; font-size: 11px; letter-spacing: 0.14em; color: rgba(250,246,240,0.4); text-align: center; }

/* Utility */
.btn { display: inline-block; padding: 12px 28px; background: var(--rose-dark); color: var(--cream); border-radius: 999px; font-size: 0.9rem; letter-spacing: 1px; text-transform: uppercase; transition: background 0.2s; }
.btn:hover { background: var(--ink); color: var(--cream); }
.btn--outline { background: transparent; border: 2px solid var(--rose-dark); color: var(--rose-dark); }
.btn--outline:hover { background: var(--rose-dark); color: var(--cream); }

/* ======= Dark-ink section (Wedding Cakes 'stress-free' panel) ======= */
.section-ink { background: var(--ink); color: var(--cream); padding: clamp(72px, 9vw, 120px) 0; }
.section-ink .section-eyebrow { color: rgba(250, 246, 240, 0.55); letter-spacing: 3px; text-transform: uppercase; font-size: 0.7rem; }
.section-ink .section-eyebrow--rose { color: #e8a5a5; }
.section-ink .section-title { color: var(--cream); font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif; font-size: clamp(2.2rem, 4.5vw, 3.4rem); font-weight: 400; line-height: 1.05; letter-spacing: -0.5px; margin-top: 12px; }
.section-ink .accent-rose { color: #e8a5a5; font-style: italic; }
.section-ink .section-head { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 24px; margin-bottom: 56px; padding-bottom: 24px; border-bottom: 1px solid rgba(250, 246, 240, 0.15); }
.section-ink .section-num { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: clamp(56px, 7vw, 96px); color: rgba(250, 246, 240, 0.18); line-height: 1; }
.section-ink .steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 36px; }
.section-ink .step__num { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 56px; color: #e8a5a5; line-height: 1; margin-bottom: 14px; }
.section-ink .step h3 { font-family: 'Cormorant Garamond', serif; font-size: 1.25rem; font-weight: 500; color: var(--cream); margin-bottom: 8px; }
.section-ink .step p { color: rgba(250, 246, 240, 0.78); font-size: 0.95rem; line-height: 1.6; }
.section-ink .steps-cta { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; margin-top: 56px; }
.section-ink .btn { background: transparent; border: 1px solid rgba(250, 246, 240, 0.4); color: var(--cream); }
.section-ink .btn:hover { background: var(--cream); color: var(--ink); border-color: var(--cream); }
.section-ink .btn--rose { background: var(--rose-dark); border-color: var(--rose-dark); color: var(--cream); }
.section-ink .btn--rose:hover { background: var(--cream); color: var(--ink); border-color: var(--cream); }
@media (max-width: 880px) {
  .section-ink .steps { grid-template-columns: 1fr 1fr; gap: 28px; }
  .section-ink .section-head { grid-template-columns: 1fr; gap: 12px; }
  .section-ink .section-num { font-size: 48px; }
}
@media (max-width: 540px) {
  .section-ink .steps { grid-template-columns: 1fr; gap: 24px; }
}

/* Wedding Cakes page: multi-section layout matching the WP weddings-4 structure */
.wedding-section { padding: 56px 0 32px; }
.wedding-section__heading { text-align: center; font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif; font-size: clamp(1.6rem, 3vw, 2.2rem); font-weight: 500; color: var(--ink); margin-bottom: 24px; }
.wedding-section__p { font-size: 1.02rem; color: var(--ink); line-height: 1.8; margin-bottom: 14px; }
.wedding-section__p:last-of-type { margin-bottom: 0; }
.wedding-photo-grid { margin-top: 32px; }
.wedding-photo-grid img { aspect-ratio: 1 / 1; object-fit: cover; border-radius: 8px; }

/* Wedding section refinements */
.wedding-section { padding: 64px 0 32px; }
.wedding-section + .wedding-section { padding-top: 32px; border-top: 1px solid var(--border); }
.wedding-section__eyebrow { text-align: center; font-size: 0.72rem; letter-spacing: 3px; text-transform: uppercase; color: var(--rose-dark); margin-bottom: 8px; font-weight: 500; }
.wedding-section__heading { text-align: center; font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif; font-size: clamp(1.7rem, 3vw, 2.4rem); font-weight: 500; color: var(--ink); margin-bottom: 28px; letter-spacing: -0.3px; }
.wedding-section__heading + .wedding-section__p { max-width: 620px; margin-left: auto; margin-right: auto; text-align: center; }
.wedding-section__p { font-size: 1.02rem; color: var(--ink); line-height: 1.8; margin-bottom: 14px; }
.wedding-section__p--note { font-size: 0.92rem; color: var(--muted); text-align: center; }
.wedding-photo-grid { margin-top: 32px; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.wedding-photo-grid img { aspect-ratio: 1 / 1; object-fit: cover; border-radius: 8px; }

/* Price table — Lambeth cake sizes */
.price-table { width: 100%; max-width: 720px; margin: 32px auto; border-collapse: collapse; background: #fff; border: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
.price-table caption { caption-side: top; font-size: 0.72rem; letter-spacing: 2.5px; text-transform: uppercase; color: var(--muted); padding-bottom: 12px; text-align: left; padding-left: 4px; }
.price-table thead { background: var(--cream); }
.price-table th { text-align: left; font-family: 'Cormorant Garamond', serif; font-size: 0.95rem; font-weight: 600; color: var(--ink); padding: 14px 20px; letter-spacing: 0.3px; }
.price-table td { padding: 14px 20px; border-top: 1px solid var(--border); font-size: 0.95rem; color: var(--ink); }
.price-table td:last-child { color: var(--rose-dark); font-weight: 600; font-family: 'Cormorant Garamond', serif; font-size: 1.05rem; font-style: italic; }
.price-table tbody tr:hover { background: rgba(232, 165, 165, 0.05); }
@media (max-width: 540px) { .price-table th, .price-table td { padding: 10px 12px; font-size: 0.88rem; } }

/* Taster cupcakes price cards */
.taster-prices { display: flex; gap: 20px; justify-content: center; margin: 28px 0; flex-wrap: wrap; }
.taster-price-card { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 22px 36px; text-align: center; min-width: 140px; transition: transform 0.18s, box-shadow 0.18s; }
.taster-price-card:hover { transform: translateY(-2px); box-shadow: 0 12px 30px -16px rgba(74, 30, 26, 0.2); }
.taster-price-card strong { display: block; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 1.3rem; color: var(--ink); font-weight: 500; }
.taster-price-card span { display: block; margin-top: 6px; color: var(--rose-dark); font-size: 1.4rem; font-family: 'Cormorant Garamond', serif; font-weight: 600; }
/* Taster cupcakes price cards — v2 variant used on wedding-cakes
   (moved here 2026-05-11 from wedding-bakes inline styles). */
.taster-prices-v2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; max-width: 480px; margin: 36px auto 0; }
.taster-prices-v2__card { text-align: center; padding: 28px 16px; border: 1px solid var(--border); border-radius: 4px; }
.taster-prices-v2__qty { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 28px; color: var(--rose-dark); margin-bottom: 8px; }
.taster-prices-v2__price { font-family: 'Inter', sans-serif; font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--muted); font-weight: 500; }

/* Sweet-treat list */
.treat-list { list-style: none; padding: 0; max-width: 580px; margin: 24px auto; display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 6px 18px; }
.treat-list li { font-size: 0.95rem; color: var(--ink); padding-left: 16px; position: relative; }
.treat-list li::before { content: "✿"; position: absolute; left: 0; color: var(--rose-dark); font-size: 0.7em; top: 2px; }

/* Afternoon Tea menu cards */
.tea-menu-section { padding: 56px 0; background: #fff; border-top: 1px solid var(--border); }
.tea-menu-section .wedding-section__eyebrow { color: var(--rose-dark); margin-bottom: 8px; text-align: center; }
.tea-menu-section .wedding-section__heading { margin-bottom: 36px; text-align: center; }
.tea-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 24px; }
.tea-card { background: var(--cream); border: 1px solid var(--border); border-radius: 14px; overflow: hidden; display: flex; flex-direction: column; transition: transform 0.18s, box-shadow 0.18s; }
.tea-card:hover { transform: translateY(-3px); box-shadow: 0 18px 36px -22px rgba(74, 30, 26, 0.22); }
.tea-card__photo { aspect-ratio: 4 / 3; overflow: hidden; background: #fff; }
.tea-card__photo img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.4s; }
.tea-card:hover .tea-card__photo img { transform: scale(1.04); }
.tea-card__body { padding: 22px 24px 24px; display: flex; flex-direction: column; flex: 1; }
.tea-card__head { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; margin-bottom: 10px; }
.tea-card__name { font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif; font-size: 1.3rem; font-weight: 500; color: var(--ink); line-height: 1.2; flex: 1; }
.tea-card__price { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 1.1rem; color: var(--rose-dark); font-weight: 600; white-space: nowrap; }
.tea-card__desc { font-size: 0.92rem; color: var(--ink); line-height: 1.6; margin-bottom: 12px; flex: 1; }
.tea-card__serves { font-size: 0.7rem; letter-spacing: 1.6px; text-transform: uppercase; color: var(--muted); margin-bottom: 12px; }
.tea-card__thumbs { display: flex; gap: 6px; margin-top: 8px; }
.tea-card__thumbs img { width: 56px; height: 56px; object-fit: cover; border-radius: 6px; }

.intro-p { font-size: 1.25rem; color: var(--ink); line-height: 1.75; margin-bottom: 14px; max-width: 640px; margin-left: auto; margin-right: auto; text-align: center; }
.intro-p:last-child { margin-bottom: 0; }
.intro-p:empty { display: none; }
/* Contact form intro is left-aligned + body-sized */
.enquiry-form .intro-p { font-size: 1.02rem; text-align: left; max-width: none; margin-left: 0; margin-right: 0; }

/* Everyday Cakes — twelve-flavour grid cards (speciality-and-everyday-cakes.html) */
.cake-card__name { font-size: 28px; text-align: center; }
.cake-card__desc { text-align: center; }
.cake-card__diet { font-size: 17px; }
.cake-card__price { color: #4a423a; font-size: 28px; }

/* Cupcakes page — box builder, editorial gallery, ordering steps, centred dark CTA */
.page-hero h1 em { font-style: italic; color: var(--rose-dark); }
.page-hero__lede { max-width: 560px; margin: 16px auto 24px; color: var(--muted); font-size: 1.05rem; line-height: 1.7; }

.box-builder-section { padding: 56px 0; background: #fff; border-top: 1px solid var(--border); }
.box-builder { background: var(--cream); border: 1px solid var(--border); border-radius: 18px; padding: 40px; display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; }
.box-builder__form > * { margin-bottom: 0; }
.box-builder__heading { font-family: 'Cormorant Garamond', serif; font-size: clamp(1.7rem, 3vw, 2.4rem); font-weight: 500; color: var(--ink); letter-spacing: -0.3px; margin: 6px 0 12px; line-height: 1.1; }
.box-builder__heading em { font-style: italic; color: var(--rose-dark); }
.box-builder__intro { color: var(--muted); margin-bottom: 24px; font-size: 0.95rem; }
.box-builder__group { margin: 22px 0; }
.box-builder__label { font-size: 0.7rem; letter-spacing: 2px; text-transform: uppercase; color: var(--muted); margin-bottom: 10px; font-weight: 500; }
.box-builder .chip-row { display: flex; gap: 8px; flex-wrap: wrap; }
.box-builder .chip-row button {
  padding: 10px 18px; border: 1px solid var(--border); background: transparent; border-radius: 999px;
  cursor: pointer; font-family: inherit; font-size: 0.88rem; color: var(--ink);
  transition: all 0.18s;
}
.box-builder .chip-row button:hover { border-color: var(--rose-dark); color: var(--rose-dark); }
.box-builder .chip-row button.on { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.box-builder__summary { display: flex; justify-content: space-between; align-items: flex-end; gap: 20px; padding-top: 24px; border-top: 1px solid var(--border); margin-top: 24px; }
.box-builder__pick { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 1.3rem; color: var(--ink); margin-top: 6px; line-height: 1.2; }
.box-builder__preview { aspect-ratio: 1 / 1; border-radius: 14px; overflow: hidden; background: #fff; }
.box-builder__preview img { width: 100%; height: 100%; object-fit: cover; transition: opacity 0.3s; }
@media (max-width: 880px) { .box-builder { grid-template-columns: 1fr; padding: 28px; gap: 32px; } }

/* Cupcake gallery — bento-ish grid with featured + thumbs */
.cupcake-gallery { display: grid; grid-template-columns: repeat(12, 1fr); gap: 16px; margin-top: 24px; }
.cupcake-figure { grid-column: span 4; margin: 0; position: relative; border-radius: 12px; overflow: hidden; background: var(--cream); }
.cupcake-figure img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; transition: transform 0.4s; }
.cupcake-figure:hover img { transform: scale(1.04); }
.cupcake-figure figcaption { padding: 14px 16px; }
.cupcake-figure figcaption strong { display: block; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 1.15rem; font-weight: 500; color: var(--ink); }
.cupcake-figure figcaption span { display: block; font-size: 0.7rem; letter-spacing: 1.6px; text-transform: uppercase; color: var(--muted); margin-top: 4px; }
.cupcake-figure--small { grid-column: span 3; background: transparent; border-radius: 8px; }
.cupcake-figure--small img { aspect-ratio: 1 / 1; border-radius: 8px; }
@media (max-width: 880px) {
  .cupcake-figure { grid-column: span 6; }
  .cupcake-figure--small { grid-column: span 6; }
}

/* Cupcake ordering steps */
.cupcake-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; margin-top: 24px; }
.cupcake-step { padding: 8px 0; }
.cupcake-step__num { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 2.6rem; color: var(--rose-dark); line-height: 1; margin-bottom: 12px; }
.cupcake-step h3 { font-family: 'Cormorant Garamond', serif; font-size: 1.25rem; font-weight: 500; color: var(--ink); margin-bottom: 6px; letter-spacing: -0.1px; }
.cupcake-step p { font-size: 0.92rem; color: var(--ink); line-height: 1.6; }
@media (max-width: 880px) { .cupcake-steps { grid-template-columns: 1fr 1fr; gap: 24px; } }
@media (max-width: 540px) { .cupcake-steps { grid-template-columns: 1fr; gap: 20px; } }

/* Centred ink CTA */
.section-ink--centered { text-align: center; }
.section-ink--centered .section-eyebrow { display: inline-block; margin-bottom: 12px; }
.section-ink--centered .section-title { color: var(--cream); }

/* ======= Contact page ======= */
.contact-grid { display: grid; grid-template-columns: 1.3fr 1fr; gap: 64px; align-items: flex-start; }
@media (max-width: 980px) { .contact-grid { grid-template-columns: 1fr; gap: 40px; } }

.enquiry-form { background: var(--cream); border: 1px solid var(--border); border-radius: 18px; padding: 40px; }
.enquiry-form__heading { font-family: 'Cormorant Garamond', serif; font-size: clamp(1.7rem, 3.4vw, 2.4rem); font-weight: 500; color: var(--ink); letter-spacing: -0.3px; margin: 6px 0 28px; line-height: 1.1; }
.enquiry-form__footer { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 14px; margin-top: 8px; }
.enquiry-form__note { color: var(--muted); font-size: 0.78rem; letter-spacing: 0.5px; }
@media (max-width: 540px) { .enquiry-form { padding: 28px; } }

.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-bottom: 18px; }
@media (max-width: 600px) { .field-row { grid-template-columns: 1fr; } }
.field { margin-bottom: 18px; }
.field label { display: block; font-size: 0.7rem; letter-spacing: 2px; text-transform: uppercase; color: var(--muted); margin-bottom: 8px; font-weight: 500; }
.field input, .field textarea, .field select {
  width: 100%; padding: 14px 16px; border: 1px solid var(--border); border-radius: 8px;
  background: #fff; color: var(--ink);
  font-family: 'Lora', Georgia, serif; font-size: 1rem;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.field input:focus, .field textarea:focus, .field select:focus { outline: none; border-color: var(--rose-dark); box-shadow: 0 0 0 3px rgba(184, 103, 106, 0.1); }
.field textarea { resize: vertical; min-height: 130px; font-family: 'Lora', Georgia, serif; }
.field select { cursor: pointer; appearance: none; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 5'><path d='M1 1l3 3 3-3' stroke='%237a7068' stroke-width='1.4' fill='none' stroke-linecap='round'/></svg>"); background-repeat: no-repeat; background-position: right 18px center; padding-right: 40px; }

/* Sidebar */
.contact-aside { display: flex; flex-direction: column; gap: 32px; }
.contact-aside__phone { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 1.6rem; font-weight: 500; color: var(--ink); margin: 8px 0 4px; }
.contact-aside__email, .contact-aside__address, .contact-aside__small { color: var(--ink); margin: 0; line-height: 1.6; }
.contact-aside__small { font-size: 0.88rem; color: var(--muted); }

.hours-list { list-style: none; padding: 0; margin: 0; }
.hours-list li { display: flex; justify-content: space-between; padding: 6px 0; font-size: 0.95rem; color: var(--ink); border-bottom: 1px dashed var(--border); }
.hours-list li:last-child { border-bottom: 0; }
.hours-list__time { font-family: 'Cormorant Garamond', serif; font-style: italic; color: var(--rose-dark); }
.hours-list__time--closed { color: var(--muted); font-style: normal; font-size: 0.85rem; }

.map-frame { margin-top: 14px; aspect-ratio: 5/3; border-radius: 12px; overflow: hidden; border: 1px solid var(--border); }
.map-frame iframe { width: 100%; height: 100%; border: 0; filter: saturate(0.6) contrast(0.95); }

.social-pills { display: flex; gap: 10px; flex-wrap: wrap; }
.social-pills a { padding: 10px 18px; border: 1px solid var(--border); border-radius: 999px; font-size: 0.85rem; color: var(--ink); transition: border-color 0.18s, color 0.18s; }
.social-pills a:hover { border-color: var(--rose-dark); color: var(--rose-dark); }

/* FAQ accordion */
.faq-list { margin-top: 24px; }
.faq { border-top: 1px solid var(--border); padding: 22px 0; cursor: pointer; }
.faq:last-child { border-bottom: 1px solid var(--border); }
.faq__q { display: flex; justify-content: space-between; align-items: center; gap: 16px; font-family: 'Cormorant Garamond', serif; font-size: 1.25rem; font-style: italic; color: var(--ink); }
.faq__a { max-height: 0; overflow: hidden; transition: max-height 0.3s ease, padding-top 0.3s ease; color: var(--ink); font-size: 0.95rem; line-height: 1.7; }
.faq.open .faq__a { max-height: 240px; padding-top: 14px; }
.faq__plus { font-family: 'Lora', Georgia, serif; font-size: 1.6rem; font-weight: 200; color: var(--rose-dark); transition: transform 0.2s; flex-shrink: 0; }
.faq.open .faq__plus { transform: rotate(45deg); }

/* Toast */
#toast {
  position: fixed; bottom: 24px; left: 50%;
  transform: translateX(-50%) translateY(80px);
  background: var(--ink); color: var(--cream);
  padding: 14px 28px; border-radius: 999px;
  transition: transform 0.4s; font-size: 0.92rem;
  z-index: 200; box-shadow: 0 18px 36px -16px rgba(74, 30, 26, 0.4);
}
#toast.show { transform: translateX(-50%) translateY(0); }

/* ======= Cupcakes page (v2-elegance translation) ======= */

/* Eyebrow — small caps, rose-dark, 28px line accent on left */
.cup-eyebrow { font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--rose-dark); font-weight: 500; margin: 0 0 18px; display: inline-flex; align-items: center; gap: 10px; }
.cup-eyebrow::before { content: ""; width: 28px; height: 1px; background: var(--rose-dark); display: inline-block; }
.cup-eyebrow--center { display: flex; justify-content: center; }
.cup-eyebrow--rose { color: var(--rose); }
.cup-eyebrow--rose::before { background: var(--rose); }

/* Hero — huge editorial type */
.cup-hero { padding: clamp(48px, 7vw, 96px) 0 clamp(72px, 9vw, 120px); text-align: center; background: var(--cream); }
.cup-hero__title { font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif; font-size: clamp(48px, 8vw, 112px); font-weight: 400; letter-spacing: -0.035em; line-height: 0.95; color: var(--ink); margin: 16px auto 0; max-width: 14ch; }
.cup-hero__title em { font-style: italic; color: var(--rose-dark); font-weight: 500; }
.cup-hero__lede { max-width: 520px; margin: 28px auto 0; font-size: 18px; line-height: 1.55; color: var(--muted); }
.cup-hero__cta { margin-top: 28px; display: flex; justify-content: center; }

/* Buttons — pill, ink fill, capslock micro letters */
.cup-btn { display: inline-flex; align-items: center; gap: 10px; padding: 16px 28px; border-radius: 999px; font-family: 'Lora', sans-serif; font-size: 13px; letter-spacing: 0.06em; font-weight: 500; cursor: pointer; border: 1px solid transparent; transition: transform 0.22s, box-shadow 0.22s, background 0.22s; text-decoration: none; background: var(--ink); color: var(--cream); }
.cup-btn:hover { transform: translateY(-1px); box-shadow: 0 12px 28px -10px rgba(74, 30, 26, 0.35); background: var(--ink); color: var(--cream); }
.cup-btn--rose { background: var(--rose-dark); color: #fff; }
.cup-btn--rose:hover { background: var(--ink); color: var(--cream); }

/* Builder section + panel */
.cup-builder-section { padding: 48px 0 64px; background: var(--cream); }
.cup-builder { background: #fffdfb; border: 1px solid var(--border); border-radius: 18px; padding: 48px; display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: stretch; box-shadow: 0 30px 80px -50px rgba(74, 30, 26, 0.18); }
.cup-builder__form { display: flex; flex-direction: column; }
.cup-builder__heading { font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif; font-size: clamp(34px, 4vw, 52px); font-weight: 400; color: var(--ink); letter-spacing: -0.03em; margin: 4px 0 14px; line-height: 1; }
.cup-builder__heading em { font-style: italic; color: var(--rose-dark); font-weight: 500; }
.cup-builder__intro { color: var(--muted); margin-bottom: 24px; font-size: 15px; line-height: 1.6; }
.cup-builder__group { margin: 18px 0; }
.cup-builder__label { font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--muted); margin-bottom: 10px; font-weight: 500; }

/* Chips — clean pill outline, dark fill when on */
.cup-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.cup-chips button { padding: 10px 18px; border: 1px solid var(--border); background: transparent; border-radius: 999px; cursor: pointer; font-family: 'Lora', Georgia, serif; font-size: 13px; color: var(--ink); transition: all 0.18s; }
.cup-chips button:hover { border-color: var(--rose-dark); color: var(--rose-dark); }
.cup-chips button.on { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.cup-chips button.on:hover { background: var(--ink); color: var(--cream); }

/* Selection summary + enquire */
.cup-builder__summary { display: flex; justify-content: space-between; align-items: flex-end; gap: 18px; padding-top: 24px; border-top: 1px solid var(--border); margin-top: 20px; }
.cup-builder__pick { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 22px; color: var(--ink); margin-top: 6px; line-height: 1.2; letter-spacing: -0.01em; }
.cup-builder__preview { aspect-ratio: 1 / 1; border-radius: 14px; overflow: hidden; background: var(--cream); }
.cup-builder__preview img { width: 100%; height: 100%; object-fit: cover; transition: opacity 0.3s; }
@media (max-width: 980px) { .cup-builder { grid-template-columns: 1fr; padding: 32px; gap: 32px; } }

/* Section head with N° numeral */
.cup-section-head { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 24px; margin-bottom: 56px; padding-bottom: 24px; border-bottom: 1px solid var(--border); }
.cup-section-head__title { font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif; font-size: clamp(36px, 4.5vw, 64px); font-weight: 400; color: var(--ink); letter-spacing: -0.02em; line-height: 1.05; max-width: 720px; }
.cup-section-head__title em { font-style: italic; color: var(--rose-dark); }
.cup-section-head__num { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: clamp(60px, 7vw, 96px); color: rgba(184, 103, 106, 0.45); line-height: 1; }
@media (max-width: 720px) {
  .cup-section-head { grid-template-columns: 1fr; gap: 14px; margin-bottom: 36px; }
  .cup-section-head__num { font-size: clamp(48px, 7vw, 64px); justify-self: end; }
}

.cup-gallery-section { padding: 96px 0 64px; }
.cup-gallery { display: grid; grid-template-columns: repeat(12, 1fr); gap: 28px; }
.cup-card { margin: 0; position: relative; cursor: pointer; }
.cup-card__photo { border-radius: 12px; overflow: hidden; background: var(--cream); aspect-ratio: 4 / 5; }
.cup-card__photo img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s ease; }
.cup-card:hover .cup-card__photo img { transform: scale(1.04); }
.cup-card--feature { grid-column: span 4; }
.cup-card--small { grid-column: span 3; }
.cup-card--small .cup-card__photo { aspect-ratio: 1 / 1; }
.cup-card figcaption { display: flex; justify-content: space-between; align-items: baseline; margin-top: 16px; padding: 0 4px; }
.cup-card figcaption strong { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 22px; font-weight: 500; color: var(--ink); }
.cup-card figcaption span { font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--muted); margin-top: 4px; }
@media (max-width: 880px) {
  .cup-gallery { grid-template-columns: repeat(6, 1fr); }
  .cup-card--feature, .cup-card--small { grid-column: span 6; }
}

/* Steps section */
.cup-steps-section { padding: 96px 0; background: #fff; }
.cup-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 36px; }
.cup-step__num { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 56px; color: var(--rose-dark); line-height: 1; margin-bottom: 14px; }
.cup-step h3 { font-family: 'Cormorant Garamond', serif; font-size: 22px; font-weight: 500; font-style: italic; color: var(--ink); margin-bottom: 8px; letter-spacing: -0.1px; }
.cup-step p { font-size: 14px; color: var(--ink); line-height: 1.65; }
@media (max-width: 880px) { .cup-steps { grid-template-columns: 1fr 1fr; gap: 28px; } }
@media (max-width: 540px) { .cup-steps { grid-template-columns: 1fr; gap: 24px; } }

/* Dark ink CTA */
.cup-ink-cta { background: var(--ink); color: var(--cream); padding: clamp(72px, 9vw, 120px) 0; text-align: center; }
.cup-ink-cta__heading { font-family: 'Cormorant Garamond', serif; font-size: clamp(44px, 6vw, 84px); font-weight: 400; color: var(--cream); letter-spacing: -0.03em; margin: 12px 0 28px; line-height: 1; }
.cup-ink-cta__heading em { font-style: italic; color: var(--rose); font-weight: 500; }

/* ======= Contact page — v2 polish overrides ======= */

/* Form panel: cleaner white card, stronger contrast against the cream page */
.enquiry-form { background: #fffdfb; padding: 44px; }
@media (max-width: 540px) { .enquiry-form { padding: 28px; } }

/* Select — full appearance suppression + smaller, more elegant chevron */
.field select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-color: #fff;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' stroke='%23b8676a' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat: no-repeat;
  background-position: right 16px center;
  background-size: 11px 7px;
  padding-right: 38px;
}

/* Phone number — much more prominent, italic Cormorant */
.contact-aside__phone { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 2rem; font-weight: 500; color: var(--ink); margin: 6px 0 6px; line-height: 1; letter-spacing: -0.5px; }
.contact-aside__email { font-size: 0.95rem; color: var(--muted); }

/* Hours — bigger, tighter spacing matching v2 */
.hours-list { color: var(--ink); font-size: 1rem; }
.hours-list li { padding: 4px 0; line-height: 1.9; border-bottom: 0; }
.hours-list li:not(:last-child) { border-bottom: 0; }
.hours-list__time { font-family: 'Lora', Georgia, serif; font-style: normal; color: var(--ink); font-weight: 500; letter-spacing: 0.5px; }
.hours-list__time--closed { color: var(--muted); font-weight: 400; }

/* Tighten sidebar spacing overall */
.contact-aside { gap: 28px; }
.contact-aside__address { font-size: 0.95rem; color: var(--ink); line-height: 1.7; }

/* Eyebrow inside sidebar — slightly smaller */
.contact-aside .wedding-section__eyebrow { margin-bottom: 4px; font-size: 0.65rem; }

/* =====================================================================
   v2 — Editorial refinement layer
   New, additive classes (prefixed where needed). Existing classes kept.
   ===================================================================== */

/* Eyebrow with hairline accent */
.eyebrow-v2 {
  font-family: 'Inter', sans-serif;
  font-size: var(--fs-eyebrow);
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--rose-dark);
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  gap: 12px;
}
.eyebrow-v2::before {
  content: ""; width: 32px; height: 1px;
  background: var(--rose-dark); display: inline-block;
}
.eyebrow-v2--center { display: flex; justify-content: center; }
.eyebrow-v2--soft { color: var(--rose-soft); }
.eyebrow-v2--soft::before { background: var(--rose-soft); }

/* Editorial page hero */
.page-hero-v2 {
  padding: clamp(80px, 10vw, 140px) 0 clamp(64px, 8vw, 112px);
  text-align: center;
}
.page-hero-v2__numeral {
  font-family: 'Inter', sans-serif;
  font-size: 0.78rem;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 12px;
}
.page-hero-v2 h1 {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: var(--fs-display);
  font-weight: 400;
  letter-spacing: -0.035em;
  line-height: 0.95;
  color: var(--ink);
  max-width: 14ch;
  margin: 0 auto;
}
.page-hero-v2 h1 em {
  font-style: italic; font-weight: 500; color: var(--rose-dark);
}
.page-hero-v2__lede {
  max-width: 720px;
  margin: 32px auto 0;
  color: var(--muted);
  font-size: var(--fs-body);
  line-height: 1.7;
  text-wrap: pretty;
}

.rule-v2 {
  width: 64px; height: 1px;
  background: var(--border-strong);
  margin: 0 auto;
}

/* Collapse template-scaffold placeholders that Helen left empty. The
   page hero lede, eyebrow rows and section headings are still in the
   HTML so the editor's selectors keep matching — but when nothing has
   been typed in, the element should claim no vertical space. Without
   this, an unused eyebrow still renders its decorative ::before stub
   and an empty h2 still claims a line-height worth of gap, which
   stacks alongside the section padding to produce an alarming void
   below the page title. */
.page-hero-v2__numeral:empty,
.page-hero-v2__lede:empty,
.eyebrow-v2:empty,
.prose-section__heading:empty,
.cup-eyebrow:empty,
.cup-section-head__title:empty,
.cup-section-head__num:empty,
.cup-hero__lede:empty,
.cup-builder__heading:empty,
.cup-builder__intro:empty,
.cup-builder__label:empty,
.cup-step__num:empty,
.tea-item__numeral:empty,
.tea-item__name:empty,
.tea-item__price:empty,
.tea-item__desc:empty,
.tea-item__serves:empty,
.stat__label:empty,
.stat__num:empty,
.stat-strip__label:empty,
.stat-strip__value:empty,
.info-strip__label:empty,
.info-strip__value:empty,
.section-eyebrow:empty,
.cat-card__meta:empty {
  display: none;
}
/* When BOTH children of a prose-section head are empty the head itself
   should collapse — :empty alone won't match because the element still
   contains its (now display:none) children. :has lets us look inside. */
.prose-section__head:not(:has(.eyebrow-v2:not(:empty), .prose-section__heading:not(:empty))) {
  display: none;
}
/* Tighten the section's own padding-top when its head has collapsed.
   The full --space-section gap is there to breathe a heading off from
   the section above; with no heading at all there's nothing to breathe,
   so drop to --space-block (~half the gap). */
.prose-section:has(.prose-section__head:not(:has(.eyebrow-v2:not(:empty), .prose-section__heading:not(:empty)))),
.prose-section:not(:has(.prose-section__head)) {
  padding-top: var(--space-block);
}

/* Prose section */
.prose-section { padding: var(--space-section) 0 0; }
.prose-section__head { text-align: center; margin-bottom: var(--space-block); }
.prose-section__heading {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: var(--fs-h2);
  font-weight: 400;
  letter-spacing: -0.025em;
  line-height: 1.05;
  color: var(--ink);
  margin: 20px auto 0;
  max-width: 16ch;
  text-wrap: balance;
}
.prose-section__heading em {
  font-style: italic; color: var(--rose-dark); font-weight: 500;
}
.prose {
  max-width: 820px;
  margin: 0 auto;
  font-size: 28px;
  line-height: 1.45;
  color: var(--ink-soft);
  text-wrap: pretty;
}
.prose p + p { margin-top: 0.8em; }
/* Generated-page intro when the rich-text edit contains block tags
   (<ul>/<table>/etc). Matches the typography the legacy <p>-wrapped
   intro would have rendered with, but allows block content as a child
   without producing invalid <p><ul>... markup. Used by build.py's
   render_page when _intro_has_block is true. */
.prose-intro { font-size: 1.05rem; color: var(--ink); line-height: 1.85; }
.prose-intro ul, .prose-intro ol { padding-left: 1.4em; margin: 0.6em 0; }
.prose-intro li { margin: 0.25em 0; }
.prose-intro table { width: 100%; border-collapse: collapse; margin: 0.9em 0; }
.prose-intro th, .prose-intro td { padding: 0.5em 0.75em; border-bottom: 1px solid var(--border, #e6dccf); text-align: left; vertical-align: top; }
.prose-note {
  max-width: 520px;
  margin: 28px auto 0;
  text-align: center;
  font-size: 14px;
  color: var(--muted);
  font-style: italic;
  font-family: 'Cormorant Garamond', serif;
}

/* Editorial photo mosaic */
.mosaic {
  margin-top: var(--space-block);
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 16px;
}
.mosaic figure {
  margin: 0; overflow: hidden;
  background: var(--paper);
  border-radius: 4px;
}
.mosaic img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 1.2s cubic-bezier(.2,.6,.2,1);
}
.mosaic figure:hover img { transform: scale(1.04); }

.mosaic--hero figure:nth-child(1) { grid-column: span 7; aspect-ratio: 4/5; }
.mosaic--hero figure:nth-child(2) { grid-column: span 5; aspect-ratio: 4/5; }
.mosaic--hero figure:nth-child(3) { grid-column: span 4; aspect-ratio: 1/1; }
.mosaic--hero figure:nth-child(4) { grid-column: span 4; aspect-ratio: 1/1; }
.mosaic--hero figure:nth-child(5) { grid-column: span 4; aspect-ratio: 1/1; }
.mosaic--hero figure:nth-child(6) { grid-column: span 6; aspect-ratio: 4/3; }
.mosaic--hero figure:nth-child(7) { grid-column: span 6; aspect-ratio: 4/3; }

.mosaic--five figure:nth-child(1) { grid-column: span 6; aspect-ratio: 4/5; }
.mosaic--five figure:nth-child(2) { grid-column: span 6; aspect-ratio: 4/5; }
.mosaic--five figure:nth-child(3) { grid-column: span 4; aspect-ratio: 1/1; }
.mosaic--five figure:nth-child(4) { grid-column: span 4; aspect-ratio: 1/1; }
.mosaic--five figure:nth-child(5) { grid-column: span 4; aspect-ratio: 1/1; }

@media (max-width: 760px) {
  .mosaic--hero figure, .mosaic--five figure {
    grid-column: span 12 !important;
    aspect-ratio: 4/5 !important;
  }
}

/* Refined price table */
.price-block { max-width: 640px; margin: var(--space-block) auto 0; }
.price-table-v2 {
  width: 100%;
  border-collapse: collapse;
  font-family: 'Lora', Georgia, serif;
}
.price-table-v2 caption {
  caption-side: top;
  font-family: 'Inter', sans-serif;
  font-size: 11px; letter-spacing: 0.24em;
  text-transform: uppercase; color: var(--muted);
  padding-bottom: 24px; text-align: center; font-weight: 500;
}
.price-table-v2 th, .price-table-v2 td {
  padding: 22px 8px;
  border-bottom: 1px solid var(--border);
  text-align: left;
  font-size: 16px;
}
.price-table-v2 thead th {
  font-family: 'Inter', sans-serif;
  font-size: 10px; letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--muted); font-weight: 500;
  padding-bottom: 14px;
}
.price-table-v2 tbody tr:last-child td { border-bottom: 0; }
.price-table-v2 td:last-child {
  text-align: right;
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 22px; font-weight: 500;
  color: var(--rose-dark);
  white-space: nowrap;
}
.price-table-v2 td:nth-child(2) { color: var(--muted); font-size: 14px; }
.price-table-v2 td:first-child {
  font-family: 'Cormorant Garamond', serif;
  font-size: 19px; color: var(--ink);
}

/* Refined dark ink section (steps) */
.ink-section {
  background: var(--ink);
  color: var(--cream);
  padding: var(--space-section) 0;
  margin-top: var(--space-section);
}
.ink-section__head {
  text-align: center;
  margin-bottom: var(--space-block);
}
.ink-section__heading {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: var(--fs-h2);
  font-weight: 400;
  letter-spacing: -0.025em;
  line-height: 1.05;
  color: var(--cream);
  margin: 20px auto 0;
  max-width: 14ch;
}
.ink-section__heading em {
  font-style: italic; color: var(--rose-soft); font-weight: 500;
}
.steps-v2 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 48px 40px;
  max-width: 1100px;
  margin: 0 auto;
}
/* Five-step variant: row 1 = 1·2·3, row 2 = 4·empty·5 so the bottom
   row spans the full width like the top, leaving the centre cell
   open (a deliberate breath between Final balance and Delivery). */
.steps-v2 .step-v2:nth-child(4) { grid-column: 1; }
.steps-v2 .step-v2:nth-child(5) { grid-column: 3; }
@media (max-width: 720px) {
  .steps-v2 { grid-template-columns: 1fr; }
  .steps-v2 .step-v2:nth-child(4),
  .steps-v2 .step-v2:nth-child(5) { grid-column: auto; }
}
.step-v2__num {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 48px;
  color: var(--rose-soft);
  line-height: 1;
  margin-bottom: 20px;
  display: block;
}
.step-v2 h3 {
  font-family: 'Cormorant Garamond', serif;
  font-size: 24px;
  font-weight: 500;
  color: var(--ink);
  margin-bottom: 12px;
  letter-spacing: -0.01em;
}
.step-v2 p {
  color: var(--ink);
  font-size: 15px;
  line-height: 1.7;
}
/* Dark-background variant — when .step-v2 is wrapped in .section-ink, cream text returns */
.section-ink .step-v2 h3 { color: var(--cream); }
.section-ink .step-v2 p { color: rgba(250, 246, 240, 0.72); }
.ink-section__cta {
  text-align: center;
  margin-top: var(--space-block);
}
.btn-ink-v2 {
  display: inline-block;
  padding: 16px 36px;
  background: var(--rose-dark);
  color: var(--cream);
  border-radius: 999px;
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 500;
  border: 1px solid var(--rose-dark);
  transition: all 0.25s;
}
.btn-ink-v2:hover { background: var(--cream); color: var(--ink); border-color: var(--cream); }

@media (max-width: 880px) {
  .steps-v2 { grid-template-columns: 1fr 1fr; gap: 40px 32px; }
}
@media (max-width: 540px) {
  .steps-v2 { grid-template-columns: 1fr; gap: 36px; }
}

/* Closing CTA */
.closing-cta {
  padding: var(--space-section) 0;
  text-align: center;
  background: var(--paper);
}
.closing-cta__heading {
  font-family: 'Cormorant Garamond', serif;
  font-size: var(--fs-h2);
  font-weight: 400;
  letter-spacing: -0.025em;
  line-height: 1.05;
  max-width: 14ch;
  margin: 20px auto 0;
}
.closing-cta__heading em { font-style: italic; color: var(--rose-dark); font-weight: 500; }
.closing-cta__contact {
  margin-top: 36px;
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 22px;
  color: var(--ink);
}
.closing-cta__small {
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  letter-spacing: 0.12em;
  color: var(--muted);
  margin-top: 8px;
}
.btn-primary-v2 {
  display: inline-block;
  margin-top: 36px;
  padding: 16px 36px;
  background: var(--ink);
  color: var(--cream);
  border-radius: 999px;
  font-family: 'Inter', sans-serif;
  font-size: 12px; letter-spacing: 0.18em;
  text-transform: uppercase; font-weight: 500;
  transition: all 0.25s;
}
.btn-primary-v2:hover { background: var(--rose-dark); }

/* Small subdued note inside .prose blocks (e.g. delivery caveat) */
.prose__note { font-size: 0.92rem; color: var(--muted); font-style: italic; margin-top: 16px; }
/* Wedding gallery — promoted from wedding-bakes.html inline styles
   so wedding-cakes.html (and any future page) can use .wb-gallery too.
   Append this block to styles.css. */

.wb-gallery {
  max-width: 1100px;
  margin: 32px auto 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}
.wb-gallery img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 4px;
  display: block;
}
@media (max-width: 760px) {
  .wb-gallery { grid-template-columns: repeat(2, 1fr); }
}
/* Empty placeholder slots — visible only inside the editor (override
   injected by editor-app.jsx). Once Helen swaps a placeholder for a
   real photo, the src no longer matches and the rule lapses on its
   own, so the swapped image renders normally on the public site.
   Broad selector covers both gallery cells AND in-prose photo slots. */
img[src*="_add-photo.svg"] { display: none; }
/* In-prose photo helper. After Helen fills a placeholder, the src
   changes, so the same <img> just renders as a centred prose photo. */
.prose-photo {
  display: block;
  width: 100%;
  max-width: 320px;
  height: auto;
  margin: 32px auto;
  border-radius: 4px;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}


/* Customer Reviews — editorial grid of testimonial cards */
.reviews-intro { padding: 48px 0 16px; }
.reviews-intro__lede { font-size: 1.1rem; color: var(--ink); line-height: 1.7; text-align: center; max-width: 620px; margin: 0 auto; }
.reviews-intro__note { font-size: 0.92rem; color: var(--muted); line-height: 1.7; text-align: center; max-width: 580px; margin: 18px auto 0; }
.reviews-intro__note a { color: var(--rose-dark); border-bottom: 1px solid currentColor; }
.reviews-grid-section { padding: 48px 0 80px; }
.reviews-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; max-width: 1180px; margin: 0 auto; }
@media (max-width: 880px) { .reviews-grid { grid-template-columns: 1fr 1fr; gap: 18px; } }
@media (max-width: 540px) { .reviews-grid { grid-template-columns: 1fr; } }
.review-card { background: #fffdfb; border: 1px solid var(--border); border-radius: 14px; padding: 28px 26px; display: flex; flex-direction: column; gap: 16px; transition: transform 0.18s, box-shadow 0.18s; }
.review-card:hover { transform: translateY(-2px); box-shadow: 0 18px 40px -22px rgba(74, 30, 26, 0.18); }
.review-card__stars { color: var(--rose-dark); font-size: 0.9rem; letter-spacing: 4px; }
.review-card__quote { font-family: 'Cormorant Garamond', 'Playfair Display', Georgia, serif; font-size: 1.1rem; font-style: italic; line-height: 1.55; color: var(--ink); margin: 0; flex: 1; }
.review-card__author { display: flex; flex-direction: column; gap: 2px; padding-top: 8px; border-top: 1px solid var(--border); }
.review-card__author strong { font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 500; font-size: 1.05rem; color: var(--ink); }
.review-card__author span { font-size: 0.7rem; letter-spacing: 1.6px; text-transform: uppercase; color: var(--muted); }
/* Hide unfilled placeholder testimonial cards on the public site —
   Helen sees and taps them inside the editor (the editor's IFRAME_CSS
   override re-shows them via display: flex !important). Once she
   types into the quote, :has(.review-card__quote:empty) stops
   matching and the card becomes visible on the live page. */
.review-card:has(.review-card__quote:empty) { display: none; }

/* Skip-to-content link — accessibility nicety for keyboard / screen-reader
   users. Visible only when focused. */
.skip-link {
  position: absolute; left: 0; top: -40px; z-index: 9999;
  background: var(--ink); color: var(--cream);
  padding: 10px 18px; border-radius: 0 0 4px 0;
  font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500;
  text-decoration: none; letter-spacing: 0.04em;
  transition: top 0.18s;
}
.skip-link:focus { top: 0; outline: 2px solid var(--rose-dark); outline-offset: 2px; }

/* Cookie consent banner — injected by blossom-analytics.js on first visit.
   Sticky at the bottom on desktop, full-width sheet on mobile. */
#cookie-banner {
  position: fixed; left: 16px; right: 16px; bottom: 16px;
  max-width: 720px; margin: 0 auto;
  background: var(--ink); color: var(--cream);
  border-radius: 14px;
  padding: 18px 22px;
  display: flex; flex-wrap: wrap; gap: 12px 24px;
  align-items: center; justify-content: space-between;
  box-shadow: 0 12px 32px rgba(0,0,0,0.18);
  font-family: 'Inter', sans-serif;
  z-index: 9998;
  animation: cookie-rise 0.32s ease-out;
}
@keyframes cookie-rise { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
.cookie-banner__text { font-size: 14px; line-height: 1.55; margin: 0; flex: 1 1 320px; }
.cookie-banner__text a { color: var(--cream); text-decoration: underline; }
.cookie-banner__actions { display: flex; gap: 10px; flex-shrink: 0; }
.cookie-banner__btn {
  font-family: 'Inter', sans-serif; font-size: 13px; font-weight: 600;
  padding: 10px 20px; border-radius: 999px;
  cursor: pointer; border: 1px solid transparent;
  letter-spacing: 0.04em;
  transition: background 0.18s, color 0.18s;
}
.cookie-banner__btn--reject { background: transparent; color: var(--cream); border-color: rgba(250,246,240,0.4); }
.cookie-banner__btn--reject:hover { background: rgba(250,246,240,0.1); }
.cookie-banner__btn--accept { background: var(--rose-dark); color: var(--cream); }
.cookie-banner__btn--accept:hover { background: #b85b5e; }
@media (max-width: 540px) {
  #cookie-banner { left: 8px; right: 8px; bottom: 8px; padding: 14px 16px; }
  .cookie-banner__actions { width: 100%; justify-content: flex-end; }
}
