/*
Theme Name: Beurre Atelier
Theme URI: https://beurrepatisserie.co.uk
Description: Standalone mobile-first theme for Beurre Patisserie. Direction "Atelier": cream ground, gold hairlines, scalloped frames. Styles the BeurreBros plugin markup contract (.beurre-menu-list, .beurre-allergen-matrix, .beurre-co-*) without touching the plugin.
Author: GNDN
Version: 1.1.5
Requires PHP: 8.0
Text Domain: beurre
*/

/* ---------- Tokens ---------- */
:root {
  --bp-bg: #FAF9F4;
  --bp-bg-alt: #EEEDE4;
  --bp-border: #E3E1D6;
  --bp-ink: #251A17;
  --bp-heading: #1F242E;
  --bp-body: #5c584f;
  --bp-meta: #8c877a;
  --bp-pink: #e796a0;
  --bp-pink-soft: #F7DEE1;
  --bp-gold: #d3af37;
  --bp-gold-deep: #a2865a;
  --bp-dark: #251A17;
  --bp-dark-2: #1E1614;
  --bp-white: #FFFFFF;
  --bp-on-pink: #FAF9F4; /* label colour on a pink fill */
  --bp-font-head: 'Lexend', sans-serif;
  --bp-font-body: 'Work Sans', sans-serif;
  --bp-radius-pill: 999px;
  --bp-radius-card: 18px;
  --bp-arch: 170px 170px 18px 18px;
  --bp-container: 1290px;
  --bp-gutter: 22px;
}
@media (min-width: 900px) { :root { --bp-gutter: 64px; } }

/* Dark palette. Applied by the data-bp-theme attribute that the inline script
   in inc/site-options.php sets on <html> before first paint (no flash).
   Art-directed, not an inversion: gold and pink are lifted for contrast. */
[data-bp-theme="dark"] {
  --bp-bg: #1A1210;
  --bp-bg-alt: #241A17;
  --bp-border: #3A2C28;
  --bp-ink: #F7F3EC;
  --bp-heading: #F7F3EC;
  --bp-body: #CFC5B8;
  --bp-meta: #9A8F82;
  --bp-pink: #EFA7AF;
  --bp-pink-soft: #3A2328;
  --bp-gold: #E0BC55;
  --bp-gold-deep: #C9A74F;
  --bp-white: #221815;
  --bp-on-pink: #251A17; /* dark pink is lighter, so labels flip to ink */
  --bp-dark: #120C0B;
  --bp-dark-2: #0D0908;
}
[data-bp-theme="dark"] .bp-header { background: rgba(26,18,16,.94); }
[data-bp-theme="dark"] .bp-drawer { background: var(--bp-bg); }
/* Dark mode swaps to the real white wordmark (beurre_logo('auto')) — no filter hack. */
[data-bp-theme="dark"] .bp-footer { border-top: 1px solid var(--bp-border); }
[data-bp-theme="dark"] .beurre-allergen-matrix thead th { background: #0D0908; }
[data-bp-theme="dark"] .bp-collab__logos img { filter: saturate(0) invert(1) brightness(1.4); }
[data-bp-theme="dark"] .woocommerce ul.products li.product,
[data-bp-theme="dark"] .bp-card { background: var(--bp-white); }

/* Colour-mode toggle */
.bp-mode { width: 44px; height: 44px; flex: none; border: 1px solid var(--bp-border); border-radius: var(--bp-radius-pill); background: transparent; color: var(--bp-ink); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }
.bp-mode:hover { border-color: var(--bp-gold); color: var(--bp-gold); }
.bp-mode svg { width: 18px; height: 18px; display: block; }
.bp-mode__moon { display: none; }
[data-bp-theme="dark"] .bp-mode__sun { display: none; }
[data-bp-theme="dark"] .bp-mode__moon { display: block; }

/* Seasonal hero layer */
.bp-hero--home { position: relative; overflow: hidden; }
/* Capped height: the background scene draws along the canvas bottom, and a tall
   mobile hero would otherwise push that horizon into the faded-out zone. */
canvas.bp-season { position: absolute; left: 0; right: 0; top: 0; width: 100%; height: min(100%, 100vh); pointer-events: none; z-index: 2; }
.bp-hero--home .bp-container { position: relative; z-index: 3; }
@media (prefers-reduced-motion: reduce) { canvas.bp-season:not([data-force="1"]) { display: none; } }

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bp-bg);
  color: var(--bp-body);
  font-family: var(--bp-font-body);
  font-size: 15px;
  line-height: 1.6;
  text-wrap: pretty;
}
h1, h2, h3, h4, h5, h6 { font-family: var(--bp-font-head); color: var(--bp-ink); margin: 0; line-height: 1.1; font-weight: 300; }
h1 { font-size: clamp(36px, 6vw, 72px); }
h2 { font-size: clamp(28px, 4vw, 48px); }
h3 { font-size: clamp(20px, 2.5vw, 28px); }
p { margin: 0; }
a { color: var(--bp-pink); text-decoration: none; }
a:hover { color: var(--bp-gold); }
img { max-width: 100%; height: auto; display: block; }
:focus-visible { outline: 2px solid var(--bp-gold); outline-offset: 3px; }

.bp-container { width: 100%; max-width: var(--bp-container); margin: 0 auto; padding: 0 var(--bp-gutter); }
.bp-eyebrow { font-family: var(--bp-font-head); font-size: 11px; letter-spacing: .24em; text-transform: uppercase; color: var(--bp-pink); }
.bp-eyebrow--gold { color: var(--bp-gold-deep); }
.bp-rule { display: block; width: 48px; height: 1px; background: var(--bp-gold); }
.bp-center { text-align: center; }
.bp-stack { display: flex; flex-direction: column; gap: 14px; }
.bp-stack--center { align-items: center; text-align: center; }

/* Buttons */
.bp-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; padding: 15px 26px; border-radius: var(--bp-radius-pill); font-family: var(--bp-font-head); font-size: 14px; font-weight: 500; border: 1px solid transparent; cursor: pointer; transition: background .2s, color .2s, border-color .2s; }
.bp-btn--primary { background: var(--bp-pink); color: var(--bp-on-pink); }
.bp-btn--primary:hover { background: var(--bp-gold); color: var(--bp-dark); }
.bp-btn--outline { background: var(--bp-white); color: var(--bp-ink); border-color: var(--bp-gold); }
.bp-btn--outline:hover { background: var(--bp-ink); color: var(--bp-bg); border-color: var(--bp-ink); }
.bp-btn--dark { background: var(--bp-ink); color: var(--bp-bg); }
.bp-link-ul { font-family: var(--bp-font-head); font-size: 13px; letter-spacing: .1em; text-transform: uppercase; color: var(--bp-ink); border-bottom: 1px solid var(--bp-pink); padding: 12px 2px; display: inline-block; }
.bp-link-ul:hover { color: var(--bp-ink); border-color: var(--bp-gold); }

/* Arch frame */
.bp-arch { border-radius: var(--bp-arch); overflow: hidden; background: var(--bp-bg-alt); }
.bp-arch--ring { outline: 1px solid var(--bp-gold); outline-offset: 6px; }
.bp-arch img, .bp-arch video { width: 100%; height: 100%; object-fit: cover; display: block; }
.bp-arch .bp-hero__still { display: none; }
@media (prefers-reduced-motion: reduce) { .bp-arch video { display: none; } .bp-arch .bp-hero__still { display: block; } }

/* ---------- Header ---------- */
.bp-header { position: sticky; top: 0; z-index: 50; background: rgba(250,249,244,.94); backdrop-filter: blur(8px); border-bottom: 1px solid transparent; }
.bp-header.is-scrolled { border-bottom-color: var(--bp-border); }
.bp-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px var(--bp-gutter); max-width: var(--bp-container); margin: 0 auto; }
.bp-logo img { height: 34px; width: auto; }
.bp-logo--dark { display: none; }
[data-bp-theme="dark"] .bp-logo--light { display: none; }
[data-bp-theme="dark"] .bp-logo--dark { display: block; }
.bp-nav { display: none; }
.bp-header__actions { display: none; }
.bp-burger { width: 44px; height: 44px; border: 0; background: none; display: flex; flex-direction: column; justify-content: center; align-items: flex-end; gap: 5px; padding: 10px; cursor: pointer; }
.bp-burger span { display: block; height: 1.5px; background: var(--bp-ink); width: 24px; transition: transform .25s, width .25s, opacity .25s; }
.bp-burger span:nth-child(2) { width: 16px; }
.bp-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(3.5px) rotate(45deg); }
.bp-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.bp-burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-3.5px) rotate(-45deg); width: 24px; }
@media (min-width: 1024px) {
  .bp-header__inner { display: grid; grid-template-columns: 1fr auto 1fr; padding-top: 22px; padding-bottom: 22px; }
  .bp-logo img { height: 40px; }
  .bp-nav { display: flex; gap: 32px; }
  .bp-nav a { font-family: var(--bp-font-head); font-size: 14px; color: var(--bp-ink); padding: 10px 2px; border-bottom: 1px solid transparent; }
  .bp-nav a:hover, .bp-nav .current-menu-item > a, .bp-nav .current-menu-ancestor > a { color: var(--bp-pink); border-bottom-color: var(--bp-pink); }
  .bp-nav .sub-menu { display: none; }
  .bp-header__actions { display: flex; gap: 10px; justify-self: end; align-items: center; }
  .bp-header__actions .bp-btn { min-height: 44px; padding: 12px 22px; font-size: 13px; }
  .bp-header__basket { font-family: var(--bp-font-head); font-size: 13px; color: var(--bp-ink); padding: 12px 4px; }
  .bp-burger { display: none; }
}

/* Drawer (mobile nav) */
.bp-drawer { position: fixed; inset: 0; z-index: 60; background: var(--bp-bg); transform: translateX(100%); transition: transform .3s cubic-bezier(.4,0,.2,1); overflow-y: auto; display: flex; flex-direction: column; }
.bp-drawer[aria-hidden="false"] { transform: none; }
.bp-drawer__top { display: flex; justify-content: space-between; align-items: center; padding: 14px var(--bp-gutter); }
.bp-drawer__menu { list-style: none; margin: 0; padding: 24px var(--bp-gutter); display: flex; flex-direction: column; }
.bp-drawer__menu > li > a { display: block; font-family: var(--bp-font-head); font-size: 28px; font-weight: 300; color: var(--bp-ink); padding: 16px 0; border-bottom: 1px solid var(--bp-gold); }
.bp-drawer__menu .sub-menu { list-style: none; margin: 0; padding: 8px 0 12px; display: flex; flex-wrap: wrap; gap: 8px; }
.bp-drawer__menu .sub-menu a { font-family: var(--bp-font-head); font-size: 13px; padding: 10px 14px; border-radius: var(--bp-radius-pill); border: 1px solid var(--bp-gold); color: var(--bp-ink); display: inline-block; }
.bp-drawer__cta { padding: 12px var(--bp-gutter) 40px; display: flex; flex-direction: column; gap: 10px; margin-top: auto; }
body.bp-drawer-open { overflow: hidden; }

/* ---------- Page hero ---------- */
.bp-hero { padding: 40px 0 0; }
.bp-hero__inner { display: flex; flex-direction: column; gap: 14px; align-items: center; text-align: center; }
.bp-hero h1 { text-wrap: balance; }
.bp-hero p { text-wrap: pretty; }
.bp-hero__actions { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; padding-top: 0; margin: -6px 0 26px; }
.bp-hero__media { margin: 26px auto 0; width: min(100% - 24px, 420px); aspect-ratio: 3 / 4; }
@media (min-width: 1024px) {
  .bp-hero { padding-top: 72px; }
  .bp-hero--home .bp-hero__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }
  .bp-hero--home .bp-hero__inner { align-items: flex-start; text-align: left; max-width: 560px; gap: 22px; }
  .bp-hero--home .bp-hero__actions { justify-content: flex-start; }
  .bp-hero--home .bp-hero__media-wrap { min-width: 0; }
  .bp-hero--home .bp-hero__media { width: auto; margin: 0; aspect-ratio: 4 / 3; border-radius: 260px 260px 20px 20px; }
  .bp-hero--home .bp-arch--ring { outline-offset: 8px; }
}
/* One phrase per line on phones, so no separators at all — a dot at the end of
   a line is junk. Dots only appear once phrases share a line. */
.bp-ticker { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 32px var(--bp-gutter) 0; font-family: var(--bp-font-head); font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--bp-gold-deep); text-align: center; }
@media (min-width: 721px) {
  .bp-ticker { flex-direction: row; flex-wrap: wrap; justify-content: center; align-items: center; gap: 12px 24px; padding-top: 40px; }
  .bp-ticker span + span::before { content: '·'; color: var(--bp-gold); margin-right: 24px; }
}

/* Section chips (menu page anchors) */
.bp-chips { display: grid; grid-auto-flow: column; grid-template-rows: auto auto; justify-content: start; gap: 8px; overflow-x: auto; scrollbar-width: none; padding: 22px var(--bp-gutter) 0; -webkit-overflow-scrolling: touch; }
.bp-chips::-webkit-scrollbar { display: none; }
.bp-chips a { white-space: nowrap; flex: none; text-align: center; font-family: var(--bp-font-head); font-size: 12px; padding: 12px 16px; border-radius: var(--bp-radius-pill); border: 1px solid var(--bp-gold); color: var(--bp-ink); }
.bp-chips a.is-active, .bp-chips a:hover { background: var(--bp-ink); color: var(--bp-bg); border-color: var(--bp-ink); }
@media (min-width: 1024px) { .bp-chips { display: flex; flex-wrap: wrap; justify-content: center; overflow: visible; } }

/* ---------- Sections ---------- */
.bp-section { padding: 48px 0 0; }
.bp-section--alt { background: var(--bp-bg-alt); padding: 36px 0; margin-top: 40px; }
.bp-section__head { display: flex; flex-direction: column; gap: 8px; align-items: center; text-align: center; margin-bottom: 22px; }
@media (min-width: 1024px) { .bp-section { padding-top: 96px; } .bp-section--alt { padding: 80px 0; margin-top: 72px; } .bp-section__head { margin-bottom: 40px; gap: 12px; } }

/* Spotlight layout: sticky photo left, list right (desktop) */
.bp-spotlight { display: flex; flex-direction: column; gap: 22px; }
.bp-spotlight__aside { display: flex; flex-direction: column; gap: 22px; }
.bp-spotlight__aside .bp-arch { display: none; }
@media (min-width: 1024px) {
  .bp-spotlight { display: grid; grid-template-columns: 420px 1fr; gap: 80px; align-items: start; }
  .bp-spotlight__aside { position: sticky; top: 100px; }
  .bp-spotlight__aside .bp-arch { display: block; aspect-ratio: 4 / 5; margin-top: 10px; }
}

/* Service cards */
.bp-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.bp-card { display: flex; flex-direction: column; gap: 10px; padding: 16px; border: 1px solid var(--bp-border); border-radius: var(--bp-radius-card); background: var(--bp-white); color: var(--bp-ink); transition: border-color .2s; }
.bp-card:hover { border-color: var(--bp-gold); color: var(--bp-ink); }
.bp-card__media { aspect-ratio: 1; border-radius: 999px 999px 8px 8px; overflow: hidden; background: var(--bp-bg-alt); }
.bp-card__media img { width: 100%; height: 100%; object-fit: cover; }
.bp-card__title { font-family: var(--bp-font-head); font-size: 14px; font-weight: 500; }
.bp-card__sub { font-size: 13px; color: var(--bp-body); }
@media (min-width: 1024px) {
  .bp-cards { grid-template-columns: repeat(3, 1fr); gap: 24px; }
  .bp-card { padding: 24px; gap: 18px; border-radius: 24px; }
  .bp-card__media { aspect-ratio: 4 / 5; border-radius: 999px 999px 12px 12px; }
  .bp-card__title { font-size: 22px; font-weight: 400; }
  .bp-card__sub { font-size: 14px; }
}

/* Double gold frame box (find us / hours) */
.bp-frame { margin: 48px var(--bp-gutter) 0; padding: 28px 22px; border: 1px solid var(--bp-gold); outline: 1px solid var(--bp-gold); outline-offset: 6px; display: flex; flex-direction: column; gap: 28px; }
.bp-frame__col { display: flex; flex-direction: column; gap: 12px; }
.bp-frame__col + .bp-frame__col { border-top: 1px solid var(--bp-gold); padding-top: 28px; }
.bp-frame__big { font-family: var(--bp-font-head); font-size: 24px; font-weight: 300; color: var(--bp-ink); }
@media (min-width: 1024px) {
  .bp-frame { margin: 96px auto 0; max-width: calc(var(--bp-container) - 2 * var(--bp-gutter)); padding: 56px 64px; display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }
  .bp-frame__col + .bp-frame__col { border-top: 0; border-left: 1px solid var(--bp-gold); padding: 0 0 0 64px; }
  .bp-frame__big { font-size: 28px; }
}

/* ---------- Collaboration band ---------- */
.bp-collab { padding: 40px var(--bp-gutter) 0; }
.bp-collab__inner { max-width: var(--bp-container); margin: 0 auto; background: var(--bp-bg-alt); border-radius: var(--bp-radius-card); padding: 26px 20px; display: flex; flex-direction: column; gap: 20px; }
.bp-collab__head { display: flex; flex-direction: column; gap: 4px; align-items: center; text-align: center; }
.bp-collab__head h2 { font-size: 24px; }
.bp-collab__logos { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(110px, 100%), 1fr)); gap: 18px 16px; align-items: center; min-width: 0; }
.bp-collab__logos li { display: flex; align-items: center; justify-content: center; min-height: 64px; }
.bp-collab__logos img { max-height: 64px; width: auto; max-width: 100%; object-fit: contain; filter: saturate(0); opacity: .85; transition: opacity .2s, filter .2s; }
.bp-collab__logos a:hover img { filter: none; opacity: 1; }
.bp-collab__name { font-family: var(--bp-font-head); font-size: 12px; letter-spacing: .06em; color: var(--bp-meta); text-align: center; line-height: 1.35; }
@media (min-width: 1024px) {
  .bp-collab { padding-top: 80px; }
  .bp-collab__inner { display: grid; grid-template-columns: minmax(180px, 240px) 1fr; gap: 40px; align-items: center; padding: 40px 48px; }
  .bp-collab__head { align-items: flex-start; text-align: left; }
  .bp-collab__head h2 { font-size: 30px; }
  .bp-collab__logos { grid-template-columns: repeat(auto-fit, minmax(min(130px, 100%), 1fr)); gap: 28px 32px; }
  .bp-collab__logos li { min-height: 76px; }
  .bp-collab__logos img { max-height: 76px; }
}

/* ---------- Footer ---------- */
.bp-footer { margin-top: 48px; background: var(--bp-dark); color: #c9c2b5; }
.bp-footer__skyline { width: 100%; display: block; }
.bp-footer__inner { padding: 28px var(--bp-gutter) 32px; display: flex; flex-direction: column; gap: 20px; max-width: var(--bp-container); margin: 0 auto; }
.bp-footer__logo img { height: 30px; width: auto; }
.bp-footer p { font-size: 13px; line-height: 1.65; }
.bp-footer__cols { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 16px; }
.bp-footer__cols .bp-footer__title { font-family: var(--bp-font-head); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--bp-gold); font-weight: 400; margin-bottom: 8px; display: none; }
.bp-footer__cols ul { list-style: none; margin: 0; padding: 0; display: contents; }
.bp-footer__cols a { font-family: var(--bp-font-head); font-size: 13px; color: var(--bp-bg); padding: 8px 0; display: block; }
.bp-footer__cols a:hover { color: var(--bp-gold); }
.bp-footer__hr { height: 1px; background: var(--bp-gold); opacity: .6; }
.bp-footer__wa { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 12px 18px; border-radius: var(--bp-radius-pill); background: var(--bp-gold); color: var(--bp-dark); font-family: var(--bp-font-head); font-size: 13px; font-weight: 500; align-self: flex-start; }
.bp-footer__wa:hover { background: var(--bp-pink); color: var(--bp-on-pink); }
.bp-footer__wanote { font-size: 12px !important; color: #8f887b; }
.bp-footer__social { display: flex; flex-wrap: wrap; gap: 8px; }
.bp-footer__social a { width: 44px; height: 44px; flex: none; display: inline-flex; align-items: center; justify-content: center; border: 1px solid #4a3a35; border-radius: var(--bp-radius-pill); color: var(--bp-bg); }
.bp-footer__social a svg { width: 18px; height: 18px; display: block; }
.bp-footer__social a:hover { border-color: var(--bp-gold); color: var(--bp-gold); }
.bp-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.bp-footer__legal { font-size: 11px; color: #8f887b; text-align: center; }
.bp-footer__credit { background: var(--bp-dark-2); }
.bp-footer__credit a { display: flex; align-items: center; justify-content: center; gap: 14px; font-family: var(--bp-font-head); font-size: 11px; letter-spacing: .22em; text-transform: uppercase; color: #8f887b; padding: 14px 0; }
.bp-footer__credit a:hover { color: var(--bp-gold); }
/* GNDN mark: typographic 2x2 lockup. Swap for the real SVG when GNDN supply one —
   the .avif in the dev theme does not rasterise reliably in browsers. */
.bp-hanko { width: 28px; height: 28px; flex: none; background: var(--bp-gold); display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; place-items: center; padding: 3px; box-sizing: border-box; font-family: var(--bp-font-head); font-size: 11px; font-weight: 600; line-height: 1; letter-spacing: 0; text-transform: lowercase; color: var(--bp-dark); }
.bp-hanko img { width: 100%; height: 100%; grid-column: 1 / -1; grid-row: 1 / -1; }
@media (min-width: 1024px) {
  .bp-footer { margin-top: 96px; }
  .bp-footer__inner { padding: 40px var(--bp-gutter); display: grid; grid-template-columns: 1.4fr 1fr 1fr 1.2fr; gap: 48px; align-items: start; }
  .bp-footer__brand { display: flex; flex-direction: column; gap: 18px; max-width: 380px; }
  .bp-footer__logo img { height: 36px; }
  .bp-footer p { font-size: 14px; }
  .bp-footer__cols { display: contents; }
  .bp-footer__cols > div { display: flex; flex-direction: column; gap: 4px; }
  .bp-footer__cols .bp-footer__title { display: block; }
  .bp-footer__cols ul { display: flex; flex-direction: column; gap: 4px; }
  .bp-footer__cols a { font-family: var(--bp-font-body); font-size: 14px; padding: 3px 0; }
  .bp-footer__hr { grid-column: 1 / -1; }
  .bp-footer__legal { grid-column: 1 / -1; font-size: 12px; }
  .bp-footer__credit a { padding: 20px 0; }
  .bp-hanko { width: 32px; height: 32px; font-size: 13px; }
}

/* ======================================================================
   BeurreBros plugin contract — menu list
   ====================================================================== */
.beurre-menu-list { column-count: 1 !important; column-gap: 0; display: flex; flex-direction: column; gap: 32px; }
.beurre-term { display: flex; flex-direction: column; gap: 20px; break-inside: avoid; }
.beurre-term.depthwrap-0 { scroll-margin-top: 90px; }
.beurre-section-title { display: flex; align-items: center; gap: 14px; margin: 0; padding: 0; border: 0; font-family: var(--bp-font-head); font-weight: 500; text-transform: uppercase; }
.beurre-section-title::after { content: ''; flex: 1; height: 1px; background: var(--bp-gold); }
.beurre-section-title.depth-0 { font-size: 13px; letter-spacing: .2em; color: var(--bp-gold-deep); }
.beurre-section-title.depth-1 { font-size: 12px; letter-spacing: .16em; color: var(--bp-meta); }
.beurre-section-title.depth-1::after { background: var(--bp-border); }
.beurre-section-title.depth-2 { font-size: 11px; letter-spacing: .14em; color: var(--bp-meta); font-weight: 400; }
.beurre-section-title.depth-2::after { display: none; }
.beurre-section-desc { margin: -8px 0 0; font-size: 13.5px; color: var(--bp-body); text-transform: none; opacity: 1; }
.beurre-menu-sublist { display: flex; flex-direction: column; gap: 0; }
.beurre-menu-sublist.depth-1, .beurre-menu-sublist.depth-2 { padding-left: 0; }
/* Scoped to the plugin wrapper (1.0.2): WordPress also puts .menu-item on every nav <li>,
   so the unscoped rule leaked dashed borders + padding into the header, drawer and footer menus. */
.beurre-menu-list .menu-item { display: flex; flex-direction: column; gap: 8px; margin: 0; padding: 20px 0; border-top: 1px dashed var(--bp-border); clear: none; }
.beurre-menu-list .menu-item:first-child { border-top: 0; padding-top: 0; }
.beurre-menu-list .menu-item::after { display: none; }
.menu-item-title { margin: 0; font-family: var(--bp-font-head); font-size: 16px; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; color: var(--bp-ink); }
.depth-2 .menu-item-title { font-size: 15px; }
.menu-item-desc { margin: 0; font-size: 14px; line-height: 1.55; color: var(--bp-body); text-transform: none; opacity: 1; }
.menu-item-allergens { display: flex !important; align-items: center; gap: 6px; flex-wrap: wrap; margin: 2px 0 0; clear: none !important; float: none !important; }
.menu-item-allergens .allergen-label { font-family: var(--bp-font-body); font-size: 11px; font-weight: 500; letter-spacing: .1em; text-transform: uppercase; color: var(--bp-meta); margin-right: 4px; }
.menu-item-allergens .allergen-link { width: 28px; height: 28px; border-radius: 999px; background: var(--bp-white); border: 1px solid var(--bp-border); display: inline-flex; align-items: center; justify-content: center; padding: 3px; vertical-align: middle; transition: border-color .2s; }
.menu-item-allergens .allergen-link:hover { border-color: var(--bp-gold); }
.menu-item-allergens .beurre-allergen { display: block; width: 100%; height: 100%; line-height: 1; }
.menu-item-allergens .beurre-allergen svg { width: 100%; height: 100%; display: block; }

/* Spotlight variant (home) */
.beurre-spotlight { text-align: center; }
.beurre-spotlight .menu-item { border-top: 0; border-bottom: 1px solid var(--bp-gold); padding: 0 0 18px; margin: 0; }
.beurre-spotlight .menu-item:last-child { border-bottom: 0; }
.beurre-spotlight .menu-item-title { font-size: 15px; letter-spacing: .12em; color: var(--bp-ink); }
.beurre-spotlight .menu-item-desc { font-size: 13.5px; color: var(--bp-body); }
.beurre-spotlight .menu-item-allergens { justify-content: center; }
.beurre-spotlight .beurre-section-title { display: none; }
@media (min-width: 1024px) {
  .beurre-spotlight { text-align: left; }
  .beurre-spotlight .beurre-term, .beurre-spotlight .beurre-menu-sublist { display: contents; }
  .beurre-spotlight { display: grid !important; grid-template-columns: 1fr 1fr; gap: 28px 40px; }
  .beurre-spotlight .menu-item { padding-bottom: 22px; gap: 10px; border-bottom: 1px solid var(--bp-gold) !important; }
  .beurre-spotlight .menu-item-title { font-size: 16px; }
  .beurre-spotlight .menu-item-desc { font-size: 14.5px; line-height: 1.6; }
  .beurre-spotlight .menu-item-allergens { justify-content: flex-start; }
}

/* ======================================================================
   BeurreBros plugin contract — allergen matrix
   ====================================================================== */
.beurre-allergen-matrix-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 0 calc(-1 * var(--bp-gutter)); padding: 0 var(--bp-gutter); }
.beurre-allergen-matrix { border-collapse: separate; border-spacing: 0; width: max-content; min-width: 100%; font-size: 13px; }
.beurre-allergen-matrix thead th { position: sticky; top: 0; z-index: 2; background: var(--bp-dark); color: var(--bp-bg); font-family: var(--bp-font-head); font-weight: 400; font-size: 11px; letter-spacing: .04em; padding: 12px 8px; text-align: center; vertical-align: bottom; border-right: 1px solid #3a2c28; min-width: 64px; }
.beurre-allergen-matrix thead th:first-child { text-align: left; min-width: 160px; }
.beurre-allergen-matrix .head-wrap { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.beurre-allergen-matrix .head-icon { width: 30px; height: 30px; background: var(--bp-bg); border-radius: 999px; padding: 3px; }
.beurre-allergen-matrix .head-icon svg { width: 100%; height: 100%; display: block; }
.beurre-allergen-matrix tbody td { padding: 12px 8px; text-align: center; border-bottom: 1px solid var(--bp-border); color: var(--bp-body); background: var(--bp-bg); }
.beurre-allergen-matrix tbody tr:nth-child(even) td { background: var(--bp-bg-alt); }
.beurre-allergen-matrix tbody .dish-cell.dish-head { position: sticky; left: 0; z-index: 1; text-align: left; font-family: var(--bp-font-head); font-weight: 500; color: var(--bp-ink); font-size: 13px; box-shadow: 1px 0 0 var(--bp-border); }
.beurre-allergen-matrix tbody td.tick-cell { color: var(--bp-gold-deep); font-size: 12px; }
.beurre-allergen-matrix tbody td.tick-cell:not(:empty) { font-weight: 500; }
.bp-allergen-key { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; margin: 28px 0 0; }
.bp-allergen-key a { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--bp-border); border-radius: 12px; background: var(--bp-white); color: var(--bp-ink); font-size: 13px; scroll-margin-top: 90px; }
.bp-allergen-key a img { width: 28px; height: 28px; }

/* ======================================================================
   Custom cake enquiry (theme form) + BeurreBros cake order restyle
   ====================================================================== */
.bp-form { display: flex; flex-direction: column; gap: 18px; max-width: 560px; margin: 28px auto 0; }
.bp-form label { display: flex; flex-direction: column; gap: 6px; }
.bp-form .bp-label, .bp-form label > span:first-child { font-family: var(--bp-font-head); font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--bp-gold-deep); }
.bp-form input[type="text"], .bp-form input[type="email"], .bp-form input[type="tel"], .bp-form input[type="date"], .bp-form input[type="number"], .bp-form select, .bp-form textarea,
.beurre-co-panel input[type="text"], .beurre-co-panel input[type="email"], .beurre-co-panel input[type="tel"], .beurre-co-panel input[type="date"], .beurre-co-panel input[type="number"], .beurre-co-panel select, .beurre-co-panel textarea,
.woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea, .woocommerce form .form-row select {
  font-family: var(--bp-font-body); font-size: 15px; color: var(--bp-ink); background: var(--bp-white); border: 1px solid var(--bp-border); border-radius: 12px; padding: 14px 16px; min-height: 48px; width: 100%; transition: border-color .2s; }
.bp-form textarea, .beurre-co-panel textarea { min-height: 140px; resize: vertical; }
.bp-form input:focus, .bp-form textarea:focus, .bp-form select:focus, .beurre-co-panel input:focus, .beurre-co-panel textarea:focus { border-color: var(--bp-gold); outline: none; }
.bp-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.bp-form__row label { min-width: 0; }
.bp-choices { display: flex; flex-wrap: wrap; gap: 8px; }
.bp-choices label { position: relative; flex-direction: row; }
.bp-choices input { position: absolute; opacity: 0; pointer-events: none; }
.bp-choices span { font-family: var(--bp-font-head); font-size: 13px; padding: 12px 16px; border-radius: var(--bp-radius-pill); border: 1px solid var(--bp-gold); color: var(--bp-ink); cursor: pointer; min-height: 44px; display: inline-flex; align-items: center; }
.bp-choices input:checked + span { background: var(--bp-ink); color: var(--bp-bg); border-color: var(--bp-ink); }
.bp-choices input:focus-visible + span { outline: 2px solid var(--bp-ink); outline-offset: 2px; }
.bp-form .bp-btn { align-self: stretch; margin-top: 6px; }
.bp-form__note { font-size: 12px; color: var(--bp-meta); text-align: center; }
.bp-form__msg { padding: 14px 16px; border-radius: 12px; font-size: 14px; }
.bp-form__msg--ok { background: #EAF2E3; color: #2f5a2a; }
.bp-form__msg--err { background: #F9E3E3; color: #7a2a2a; }
@media (min-width: 1024px) { .bp-form .bp-btn { align-self: center; min-width: 260px; } }

/* Plugin multi-step form ([beurre_cake_order]) — kept available, restyled */
.beurre-co-progress { max-width: 560px; margin: 0 auto 28px; }
.beurre-co-step-dot { width: 32px; height: 32px; border-radius: 999px; border: 1px solid var(--bp-gold); color: var(--bp-gold-deep); background: var(--bp-bg); font-family: var(--bp-font-head); font-size: 12px; display: inline-flex; align-items: center; justify-content: center; }
.beurre-co-step-dot.active { background: var(--bp-pink); border-color: var(--bp-pink); color: var(--bp-on-pink); }
.beurre-co-step-dot.done { background: var(--bp-ink); border-color: var(--bp-ink); color: var(--bp-bg); }
.beurre-co-step-line { flex: 1; height: 1px; background: var(--bp-gold); }
.beurre-co-step-labels span { font-family: var(--bp-font-head); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--bp-meta); }
.beurre-co-step-labels span.active { color: var(--bp-ink); }
.beurre-co-panel { border: 0; padding: 0; margin: 0 auto; max-width: 560px; display: flex; flex-direction: column; gap: 18px; }
.beurre-co-legend { font-family: var(--bp-font-head); font-size: 24px; font-weight: 300; color: var(--bp-ink); padding: 0 0 12px; border-bottom: 1px solid var(--bp-gold); width: 100%; }
.beurre-co-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.beurre-co-cards label, .beurre-co-card { border: 1px solid var(--bp-border); border-radius: var(--bp-radius-card); background: var(--bp-white); padding: 18px; display: flex; flex-direction: column; gap: 6px; text-align: center; cursor: pointer; }
.beurre-co-cards input:checked + *, .beurre-co-card.is-selected { border-color: var(--bp-pink); box-shadow: 0 0 0 1px var(--bp-pink); }
.beurre-co-nav { display: flex; justify-content: space-between; gap: 10px; max-width: 560px; margin: 24px auto 0; }
.beurre-co-btn, .beurre-co-nav button { font-family: var(--bp-font-head); font-size: 14px; font-weight: 500; min-height: 48px; padding: 14px 26px; border-radius: var(--bp-radius-pill); border: 1px solid var(--bp-gold); background: transparent; color: var(--bp-ink); cursor: pointer; }
.beurre-co-btn--primary, .beurre-co-nav button[type="submit"], .beurre-co-nav .beurre-co-next { background: var(--bp-pink); border-color: var(--bp-pink); color: var(--bp-on-pink); }
.beurre-co-btn[disabled], .beurre-co-nav button[disabled] { opacity: .4; cursor: default; }

/* ======================================================================
   WooCommerce (collection-only voucher shop)
   ====================================================================== */
.woocommerce .woocommerce-breadcrumb { font-size: 12px; color: var(--bp-meta); margin-bottom: 8px; }
.woocommerce .woocommerce-breadcrumb a { color: var(--bp-meta); }
.woocommerce-products-header__title.page-title { font-size: clamp(32px, 5vw, 48px); font-weight: 300; }
.woocommerce .woocommerce-result-count { font-size: 13px; color: var(--bp-meta); }
.woocommerce .woocommerce-ordering select { font-family: var(--bp-font-body); font-size: 13px; padding: 12px 40px 12px 16px; border-radius: var(--bp-radius-pill); border: 1px solid var(--bp-border); background: var(--bp-white); min-height: 44px; }
.woocommerce ul.products { display: grid !important; grid-template-columns: 1fr 1fr; gap: 12px; margin: 24px 0 0; padding: 0; list-style: none; }
.woocommerce ul.products::before, .woocommerce ul.products::after { display: none; }
.woocommerce ul.products li.product { width: auto !important; margin: 0 !important; float: none !important; display: flex; flex-direction: column; gap: 10px; padding: 12px; border: 1px solid var(--bp-border); border-radius: var(--bp-radius-card); background: var(--bp-white); }
.woocommerce ul.products li.product a img { border-radius: 999px 999px 8px 8px; aspect-ratio: 1; object-fit: cover; margin: 0; }
.woocommerce ul.products li.product .woocommerce-loop-product__title { font-family: var(--bp-font-head); font-size: 14px; font-weight: 500; color: var(--bp-ink); padding: 0; }
/* Fulfilment eyebrow on voucher cards: emailed vs collect in store.
   Output it from a product attribute/term into a .beurre-fulfilment span. */
.woocommerce ul.products li.product .beurre-fulfilment { font-family: var(--bp-font-head); font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--bp-gold-deep); }
.woocommerce ul.products li.product .price { font-family: var(--bp-font-head); font-size: 14px; color: var(--bp-ink); }
.woocommerce ul.products li.product .button { margin-top: auto; }
@media (min-width: 768px) { .woocommerce ul.products { grid-template-columns: repeat(3, 1fr); gap: 24px; } }
@media (min-width: 1024px) { .woocommerce ul.products { grid-template-columns: repeat(4, 1fr); } .woocommerce ul.products li.product { padding: 16px; } }

.woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce #respond input#submit, .woocommerce a.button.alt, .woocommerce button.button.alt, .wc-block-components-button, .wp-block-button__link {
  font-family: var(--bp-font-head) !important; font-size: 14px !important; font-weight: 500 !important; min-height: 48px; padding: 14px 26px !important; border-radius: var(--bp-radius-pill) !important; background: var(--bp-pink) !important; color: var(--bp-on-pink) !important; border: 0 !important; line-height: 1.2 !important; }
.woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .wc-block-components-button:hover { background: var(--bp-gold) !important; color: var(--bp-dark) !important; }

/* Single product */
.woocommerce div.product { display: flex; flex-direction: column; gap: 24px; }
.woocommerce div.product div.images { width: 100% !important; float: none !important; margin: 0 !important; }
.woocommerce div.product div.images img { border-radius: var(--bp-arch); }
.woocommerce div.product div.summary { width: 100% !important; float: none !important; margin: 0 !important; display: flex; flex-direction: column; gap: 16px; }
.woocommerce div.product .product_title { font-size: clamp(28px, 4vw, 44px); font-weight: 300; }
.woocommerce div.product p.price { font-family: var(--bp-font-head); font-size: 22px; color: var(--bp-ink); }
.woocommerce div.product form.cart .variations td, .woocommerce div.product form.cart .variations th { padding: 0; border: 0; display: block; }
.woocommerce div.product form.cart .variations label { font-family: var(--bp-font-head); font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--bp-gold-deep); }
.beurre-variation-buttons { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 16px; }
.beurre-variation-button { font-family: var(--bp-font-head); font-size: 13px; min-height: 44px; padding: 12px 16px; border-radius: var(--bp-radius-pill); border: 1px solid var(--bp-gold); background: transparent; color: var(--bp-ink); cursor: pointer; }
.beurre-variation-button.is-selected, .beurre-variation-button[aria-pressed="true"] { background: var(--bp-ink); color: var(--bp-bg); border-color: var(--bp-ink); }
.woocommerce div.product form.cart .quantity .qty { min-height: 48px; border-radius: 12px; border: 1px solid var(--bp-border); width: 80px; text-align: center; font-family: var(--bp-font-body); }
.woocommerce div.product .woocommerce-tabs ul.tabs::before, .woocommerce div.product .woocommerce-tabs ul.tabs li { border: 0; background: none; box-shadow: none; }
.woocommerce div.product .woocommerce-tabs ul.tabs li::before, .woocommerce div.product .woocommerce-tabs ul.tabs li::after { display: none; }
.woocommerce div.product .woocommerce-tabs ul.tabs { padding: 0; margin: 0 0 16px; border-bottom: 1px solid var(--bp-gold); display: flex; gap: 16px; }
.woocommerce div.product .woocommerce-tabs ul.tabs li a { font-family: var(--bp-font-head); font-size: 13px; letter-spacing: .08em; text-transform: uppercase; color: var(--bp-meta); padding: 12px 0; }
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a { color: var(--bp-ink); border-bottom: 1px solid var(--bp-pink); }
@media (min-width: 1024px) { .woocommerce div.product { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: start; } .woocommerce div.product .woocommerce-tabs, .woocommerce div.product .related { grid-column: 1 / -1; } }
/* Mobile sticky add-to-basket bar (from woocommerce-mobile.js) */
.beurre-sticky-atc { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; background: rgba(250,249,244,.96); backdrop-filter: blur(8px); border-top: 1px solid var(--bp-border); padding: 10px var(--bp-gutter) calc(10px + env(safe-area-inset-bottom)); display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.beurre-sticky-atc .price { font-family: var(--bp-font-head); font-size: 16px; color: var(--bp-ink); }
@media (min-width: 1024px) { .beurre-sticky-atc { display: none; } }

/* Basket (Cart block) + Checkout (classic shortcode via Elementor Pro widget) */
.wc-block-components-product-name, .wc-block-components-totals-item__label { font-family: var(--bp-font-head); color: var(--bp-ink); }
.wc-block-components-sidebar-layout .wc-block-components-sidebar { background: var(--bp-white); border: 1px solid var(--bp-border); border-radius: var(--bp-radius-card); padding: 16px; }
.woocommerce-checkout .woocommerce { display: flex; flex-direction: column; gap: 24px; }
.woocommerce-checkout h3 { font-size: 22px; padding-bottom: 12px; border-bottom: 1px solid var(--bp-gold); }
.woocommerce form .form-row label { font-family: var(--bp-font-head); font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--bp-gold-deep); }
.woocommerce form .form-row.woocommerce-invalid .select2-container, .woocommerce form .form-row.woocommerce-invalid input.input-text { border-color: #b3423f; }
.woocommerce-checkout #order_review { background: var(--bp-white); border: 1px solid var(--bp-border); border-radius: var(--bp-radius-card); padding: 16px; }
.woocommerce-checkout table.shop_table { border: 0; font-size: 14px; }
.woocommerce-checkout table.shop_table th, .woocommerce-checkout table.shop_table td { border-color: var(--bp-border); padding: 12px 0; }
.woocommerce-checkout #payment { background: transparent; border-radius: 0; }
.woocommerce-checkout #payment ul.payment_methods { border-bottom: 1px solid var(--bp-border); padding: 0 0 16px; }
.woocommerce-checkout #payment div.payment_box { background: var(--bp-bg-alt); border-radius: 12px; color: var(--bp-body); }
.woocommerce-checkout #payment div.payment_box::before { border-bottom-color: var(--bp-bg-alt); }
#billing_country_field { display: none !important; } /* hidden field printed by beurre-square-billing-country mu-plugin; must stay in the DOM */
@media (min-width: 1024px) { .woocommerce-checkout .woocommerce form.checkout { display: grid; grid-template-columns: 1.2fr 1fr; gap: 48px; align-items: start; } .woocommerce-checkout #order_review_heading { grid-column: 2; } .woocommerce-checkout #order_review { grid-column: 2; position: sticky; top: 100px; padding: 24px; } .woocommerce-checkout #customer_details { grid-column: 1; grid-row: 1 / span 3; } }
.woocommerce-notices-wrapper .woocommerce-message, .woocommerce-message, .woocommerce-info, .woocommerce-error { border-top: 0; border-left: 3px solid var(--bp-gold); background: var(--bp-white); border-radius: 12px; color: var(--bp-body); }
.woocommerce-message::before, .woocommerce-info::before { color: var(--bp-gold); }

/* ---------- Content pages (Elementor bodies, legal, FAQ) ---------- */
.bp-content { padding: 32px 0 0; }
.bp-content .entry-content { max-width: 720px; margin: 0 auto; font-size: 16px; line-height: 1.7; }
.bp-content .entry-content h2, .bp-content .entry-content h3 { margin: 32px 0 12px; }
.bp-content .entry-content p, .bp-content .entry-content ul, .bp-content .entry-content ol { margin: 0 0 16px; }
.bp-content .entry-content a { text-decoration: underline; text-underline-offset: 3px; }
.elementor-page .bp-content .entry-content { max-width: none; }

/* Utilities */
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px,1px,1px,1px); }
.bp-skip { position: absolute; left: -9999px; top: 8px; z-index: 100; background: var(--bp-ink); color: var(--bp-bg); padding: 10px 14px; border-radius: 8px; }
.bp-skip:focus { left: 8px; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; animation: none !important; } }

/* ---------- Fix 1.0.2 (Claude Code, dev review): header grid ----------
 * The dark-mode toggle (.bp-mode) is a 4th child of .bp-header__inner, but the desktop
 * grid only had 3 columns, so .bp-header__actions (Basket + "Order a cake") wrapped onto a
 * second row. Give the toggle its own column and keep the nav centred between the 1fr tracks.
 * Also: the nav prints <li> straight into <nav> (items_wrap %3$s) — drop list markers. */
.bp-nav__list > li { list-style: none; }
@media (min-width: 1024px) {
  .bp-header__inner { grid-template-columns: 1fr auto 1fr auto; column-gap: 16px; align-items: center; }
  .bp-header__inner > .bp-mode { justify-self: end; }
}

/* ======================================================================
   1.0.3 — dev review against the .dc.html design preview (Claude Code)
   ====================================================================== */

/* Desktop nav: items with children get a hover/focus dropdown. The site menu has sub-pages
   (Allergens, FAQs, Our team, Wholesale) that were unreachable from the header because the
   handoff hid every .sub-menu; the mock shows a flat nav, so this is styled quietly. */
@media (min-width: 1024px) {
  .bp-nav__list > li { position: relative; }
  .bp-nav .sub-menu { display: none; position: absolute; top: 100%; left: 50%; transform: translateX(-50%); min-width: 200px; margin: 0; padding: 18px 8px 8px; list-style: none; z-index: 70; }
  .bp-nav .sub-menu::before { content: ''; position: absolute; inset: 10px 0 0; background: var(--bp-white); border: 1px solid var(--bp-border); border-radius: 14px; box-shadow: 0 12px 32px rgba(37,26,23,.10); z-index: -1; }
  .bp-nav__list > li:hover > .sub-menu, .bp-nav__list > li:focus-within > .sub-menu { display: block; }
  .bp-nav .sub-menu li { list-style: none; }
  .bp-nav .sub-menu a { display: block; padding: 10px 14px; border-radius: 10px; border-bottom: 0; font-size: 13px; white-space: nowrap; }
  .bp-nav .sub-menu a:hover, .bp-nav .sub-menu .current-menu-item > a { background: var(--bp-bg-alt); color: var(--bp-ink); border-bottom: 0; }
  .bp-nav__list > li.menu-item-has-children > a::after { content: ''; display: inline-block; width: 5px; height: 5px; margin: 0 0 3px 7px; border-right: 1px solid currentColor; border-bottom: 1px solid currentColor; transform: rotate(45deg); opacity: .7; }
}
[data-bp-theme="dark"] .bp-nav .sub-menu::before { background: var(--bp-bg-alt); }

/* Footer: the email pill's text ran out of the 1.2fr column (nowrap). */
.bp-footer__wa { white-space: normal; text-align: center; line-height: 1.3; max-width: 100%; }
.bp-footer__hours { color: #c9c2b5; }

/* Our Menu: page-our-menu.php wraps each shortcode as .bp-menu-section > h3 + .beurre-menu-list,
   so the .beurre-term gap never applied and the section title sat on the first dish.
   Desktop = 3-column grid per section, as the mock. */
.bp-menu-section .beurre-section-title { margin-bottom: 22px; }
@media (min-width: 1024px) {
  .bp-menu-section .beurre-menu-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 40px; row-gap: 0; }
  .bp-menu-section .beurre-menu-list .menu-item { border-top: 1px dashed var(--bp-border); padding: 20px 0; }
  .bp-menu-section .beurre-menu-list .menu-item:nth-child(-n+3) { border-top: 0; padding-top: 0; }
}

/* Shop / product wrapper (woocommerce.php). woocommerce_content() prints eyebrow, title,
   description, result count, ordering and the loop as siblings, so the container is a
   two-column grid: everything spans, except count (left) and sort (right). */
.bp-woo { padding-top: 40px; }
.bp-woo .bp-container { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 16px; row-gap: 12px; align-items: center; }
.bp-woo .bp-container > * { grid-column: 1 / -1; min-width: 0; }
.bp-woo__eyebrow { text-align: center; }
.bp-woo .page-title { text-align: center; margin: 0; }
.bp-woo .page-description { max-width: 560px; margin: 0 auto; text-align: center; color: var(--bp-body); font-size: 15px; line-height: 1.7; }
.bp-woo .page-description::before { content: ''; display: block; width: 48px; height: 1px; background: var(--bp-gold); margin: 0 auto 16px; }
.bp-woo .page-description p { margin: 0; }
.bp-woo .woocommerce-result-count { grid-column: 1; margin: 24px 0 0; float: none; }
.bp-woo .woocommerce-ordering { grid-column: 2; margin: 24px 0 0; float: none; justify-self: end; }
.bp-woo ul.products { margin-top: 8px; }
.bp-woo .woocommerce-breadcrumb { margin: 0 0 8px; }
.bp-crumb-sep { color: var(--bp-border); padding: 0 4px; }
@media (min-width: 1024px) { .bp-woo { padding-top: 72px; } }

/* Hero lede (Custom cakes, Team) */
.bp-hero__lede { max-width: 560px; color: var(--bp-body); font-size: 15px; line-height: 1.7; }
.bp-hero__lede--small { font-size: 13px; color: var(--bp-meta); margin-top: -6px; }

/* ---- Theme-owned About / Team / FAQs / Contact (the mocks define these; the Elementor bodies
   they replace stay in WordPress — delete the page-*.php to fall back). ---- */
.bp-page { padding-bottom: 8px; }
.bp-split { display: flex; flex-direction: column; gap: 28px; margin-top: 32px; }
.bp-split__media { width: min(100%, 420px); margin: 0 auto; aspect-ratio: 4 / 5; }
.bp-prose { display: flex; flex-direction: column; gap: 14px; color: var(--bp-body); font-size: 15px; line-height: 1.7; }
.bp-actions { display: flex; flex-wrap: wrap; gap: 10px; padding-top: 6px; }
.bp-section__title { margin: 8px 0 22px; font-size: 26px; }
.bp-section--centre { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 14px; }
.bp-section--centre .bp-btn { margin-top: 6px; }
@media (min-width: 1024px) {
  .bp-split { display: grid; grid-template-columns: 420px 1fr; gap: 64px; align-items: center; margin-top: 56px; }
  .bp-split__media { width: 100%; margin: 0; }
  .bp-prose { font-size: 16px; }
  .bp-section__title { font-size: 34px; margin-bottom: 28px; }
}

.bp-tiles { display: grid; grid-template-columns: 1fr; gap: 12px; }
.bp-tiles + .bp-tiles { margin-top: 12px; }
.bp-tile { background: var(--bp-white); border: 1px solid var(--bp-border); border-radius: var(--bp-radius-card); padding: 20px; display: flex; flex-direction: column; gap: 8px; margin: 0; }
.bp-tile h3 { font-family: var(--bp-font-head); font-weight: 500; font-size: 15px; }
.bp-tile p { color: var(--bp-body); font-size: 14px; line-height: 1.65; }
.bp-tile--alt { background: var(--bp-bg-alt); border-color: transparent; }
.bp-fact__value { font-family: var(--bp-font-head); font-size: 15px; color: var(--bp-ink); }
@media (min-width: 768px) { .bp-tiles { grid-template-columns: 1fr 1fr; gap: 16px; } .bp-tiles--3 { grid-template-columns: repeat(3, 1fr); } .bp-tiles + .bp-tiles { margin-top: 16px; } }

.bp-team { display: grid; grid-template-columns: 1fr; gap: 20px; margin-top: 32px; }
.bp-team__card { display: flex; flex-direction: column; gap: 6px; }
.bp-team__media { aspect-ratio: 4 / 5; margin-bottom: 8px; }
.bp-team__media--empty { display: flex; align-items: center; justify-content: center; color: var(--bp-meta); font-family: var(--bp-font-head); font-size: 11px; letter-spacing: .16em; text-transform: uppercase; background: repeating-linear-gradient(135deg, var(--bp-bg-alt) 0 12px, var(--bp-white) 12px 24px); }
.bp-team__name { font-family: var(--bp-font-head); font-weight: 500; font-size: 16px; letter-spacing: .04em; color: var(--bp-ink); }
.bp-team__role { font-family: var(--bp-font-head); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--bp-gold-deep); }
.bp-team__bio { color: var(--bp-body); font-size: 14px; line-height: 1.65; }
@media (min-width: 768px) { .bp-team { grid-template-columns: 1fr 1fr; gap: 24px; } }
@media (min-width: 1024px) { .bp-team { grid-template-columns: repeat(4, 1fr); margin-top: 56px; } }

.bp-accordion { display: flex; flex-direction: column; margin: 32px auto 0; border-top: 1px solid var(--bp-border); max-width: 760px; }
.bp-accordion details { border-bottom: 1px solid var(--bp-border); }
.bp-accordion summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 18px 0; font-family: var(--bp-font-head); font-weight: 400; font-size: 17px; color: var(--bp-ink); }
.bp-accordion summary::-webkit-details-marker { display: none; }
.bp-accordion summary::after { content: '+'; flex: none; width: 28px; height: 28px; border: 1px solid var(--bp-gold); border-radius: var(--bp-radius-pill); display: inline-flex; align-items: center; justify-content: center; color: var(--bp-gold-deep); font-size: 18px; line-height: 1; }
.bp-accordion details[open] summary::after { content: '–'; }
.bp-accordion details p { padding: 0 0 20px; color: var(--bp-body); font-size: 15px; line-height: 1.7; max-width: 640px; }
.bp-accordion summary:focus-visible { outline: 2px solid var(--bp-ink); outline-offset: 2px; }
.bp-note { text-align: center; color: var(--bp-body); font-size: 14px; margin-top: 28px; }
.bp-note a { text-decoration: underline; text-underline-offset: 3px; }

.bp-contact { display: flex; flex-direction: column; gap: 28px; margin-top: 32px; }
.bp-contact__col { display: flex; flex-direction: column; gap: 24px; }
.bp-contact__group { display: flex; flex-direction: column; gap: 8px; }
.bp-contact__group p { color: var(--bp-body); font-size: 15px; line-height: 1.75; }
.bp-contact__group .bp-eyebrow { color: var(--bp-gold-deep); }
.bp-contact__small { font-size: 13px !important; color: var(--bp-meta) !important; }
.bp-contact__map { border-radius: var(--bp-radius-card); overflow: hidden; border: 1px solid var(--bp-border); background: var(--bp-bg-alt); aspect-ratio: 4 / 3; }
.bp-contact__map iframe { width: 100%; height: 100%; border: 0; display: block; }
.bp-link { font-family: var(--bp-font-head); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--bp-ink); border-bottom: 1px solid var(--bp-pink); padding-bottom: 4px; align-self: flex-start; }
.bp-link:hover { color: var(--bp-pink); }
.bp-social { display: flex; gap: 8px; }
.bp-social a { width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--bp-border); border-radius: var(--bp-radius-pill); color: var(--bp-ink); background: var(--bp-white); }
.bp-social a svg { width: 18px; height: 18px; display: block; }
.bp-social a:hover { border-color: var(--bp-gold); color: var(--bp-gold-deep); }
@media (min-width: 1024px) {
  .bp-contact { display: grid; grid-template-columns: 1fr 1.2fr; gap: 64px; align-items: start; margin-top: 56px; }
}

/* 1.0.3b — after the first screenshot pass */
/* Footer email pill: .bp-footer__cols a (block, 8px 0 padding, cream text) out-specified .bp-footer__wa,
   so the pill lost its padding and colour and its text spilled past the gold. */
.bp-footer .bp-footer__cols a.bp-footer__wa { display: inline-flex; align-items: center; justify-content: center; align-self: flex-start; min-height: 44px; padding: 12px 18px; border-radius: var(--bp-radius-pill); background: var(--bp-gold); color: var(--bp-dark); font-family: var(--bp-font-head); font-size: 13px; font-weight: 500; line-height: 1.3; white-space: normal; text-align: center; max-width: 100%; overflow-wrap: anywhere; }
.bp-footer .bp-footer__cols a.bp-footer__wa:hover { background: var(--bp-pink); color: var(--bp-on-pink); }
/* Partner logos: SVGs with only a viewBox collapse to 0 width in a flex item when sized by max-height
   (Chrome). Give them a fixed height and let width follow the ratio. */
.bp-collab__logos li { min-width: 0; }
.bp-collab__logos img { height: 64px; max-height: none; width: auto; max-width: 100%; }
@media (min-width: 1024px) { .bp-collab__logos img { height: 76px; } }
/* Light/dark toggle: `.bp-mode svg {display:block}` beat `.bp-mode__moon {display:none}`, so both
   glyphs showed at once. */
.bp-mode .bp-mode__moon { display: none; }
[data-bp-theme="dark"] .bp-mode .bp-mode__sun { display: none; }
[data-bp-theme="dark"] .bp-mode .bp-mode__moon { display: block; }
/* Product: the mock has no "SKU: N/A · Category" line. */
.woocommerce div.product .product_meta { display: none; }

/* ======================================================================
   1.0.4 — client review, 20 Sep 2026
   ====================================================================== */

/* Allergen matrix.
   (a) The wrap had side padding inside the scrollport, so scrolled cells showed through it to the
       LEFT of the pinned dish column. No padding now.
   (b) A header cannot stick to the viewport inside a horizontally scrolling box, so the wrap is a
       two-axis scroll area with a capped height: the header row pins to its top, the dish column
       to its left, and the corner cell pins both ways. */
.beurre-allergen-matrix-wrap { margin: 0; padding: 0; overflow: auto; -webkit-overflow-scrolling: touch; max-height: min(72vh, 680px); border: 1px solid var(--bp-border); border-radius: var(--bp-radius-card); background: var(--bp-bg); }
.beurre-allergen-matrix thead th { top: 0; z-index: 3; }
.beurre-allergen-matrix thead th:first-child { position: sticky; left: 0; z-index: 4; }
.beurre-allergen-matrix tbody .dish-cell.dish-head { z-index: 2; }
.bp-notice { margin-top: 24px; padding: 22px; border: 1px solid var(--bp-gold); border-radius: var(--bp-radius-card); background: var(--bp-white); display: flex; flex-direction: column; gap: 12px; color: var(--bp-body); font-size: 14px; line-height: 1.7; }
.bp-notice strong { color: var(--bp-ink); font-weight: 600; }
.bp-notice__by { display: flex; flex-direction: column; gap: 4px; font-family: var(--bp-font-head); font-size: 16px; color: var(--bp-ink); padding-bottom: 12px; border-bottom: 1px solid var(--bp-border); }
@media (min-width: 1024px) { .bp-notice { padding: 32px 36px; font-size: 15px; } }

/* Footer: air above the skyline so the tower no longer touches the top edge; plain-text email. */
.bp-footer { padding-top: 28px; }
@media (min-width: 1024px) { .bp-footer { padding-top: 48px; } }
.bp-footer .bp-footer__cols a.bp-footer__email { display: inline; padding: 0; font-family: var(--bp-font-body); font-size: inherit; color: var(--bp-bg); text-decoration: underline; text-decoration-color: rgba(211,175,55,.6); text-underline-offset: 4px; }
.bp-footer .bp-footer__cols a.bp-footer__email:hover { color: var(--bp-gold); }
.bp-footer .bp-footer__cols a.bp-footer__wa { margin: 6px 0 10px; }
.bp-contact__group p a:not(.bp-btn) { text-decoration: underline; text-underline-offset: 4px; text-decoration-color: var(--bp-gold); color: var(--bp-ink); }

/* Wholesale: tier cards + the "Talk to us" frame sitting closer to them than the home frame does. */
.bp-tiers { display: grid; grid-template-columns: 1fr; gap: 14px; margin-top: 32px; }
.bp-tier { background: var(--bp-white); border: 1px solid var(--bp-border); border-radius: 24px; padding: 16px; display: flex; flex-direction: column; gap: 10px; }
.bp-tier__media { display: block; aspect-ratio: 16 / 10; border-radius: 14px; overflow: hidden; background: var(--bp-bg-alt); margin-bottom: 6px; }
.bp-tier__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.bp-tier h2, .bp-tier h3 { font-family: var(--bp-font-head); font-weight: 400; font-size: 18px; }
.bp-tier p { color: var(--bp-body); font-size: 14px; line-height: 1.7; }
.bp-frame--tight { margin-top: 32px; }
.bp-frame .bp-frame__col p a:not(.bp-btn) { text-decoration: underline; text-underline-offset: 4px; text-decoration-color: var(--bp-gold); color: var(--bp-ink); }
@media (min-width: 1024px) {
  .bp-tiers { grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 56px; }
  .bp-tier { padding: 22px; }
  .bp-frame--tight { margin-top: 40px; }
}

/* Custom cakes: photo strip, then "good to know" beside the form on desktop. */
.bp-cake-gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; align-items: end; margin-top: 28px; }
.bp-cake-gallery .bp-arch { aspect-ratio: 3 / 4; border-radius: 120px 120px 14px 14px; }
.bp-cake-gallery .bp-arch:nth-child(2) { aspect-ratio: 3 / 4.4; }
.bp-cake-split { display: flex; flex-direction: column; gap: 28px; margin-top: 40px; }
.bp-cake-aside { display: flex; flex-direction: column; gap: 12px; }
.bp-cake-aside h2 { font-size: 26px; }
.bp-facts { margin: 8px 0 0; display: flex; flex-direction: column; }
.bp-facts > div { display: grid; grid-template-columns: 96px 1fr; gap: 12px; padding: 14px 0; border-top: 1px solid var(--bp-border); }
.bp-facts > div:last-child { border-bottom: 1px solid var(--bp-border); }
.bp-facts dt { font-family: var(--bp-font-head); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--bp-gold-deep); padding-top: 3px; }
.bp-facts dd { margin: 0; color: var(--bp-body); font-size: 14px; line-height: 1.65; }
.bp-cake-form .bp-form { margin-left: 0; margin-right: 0; max-width: none; }
@media (min-width: 1024px) {
  .bp-cake-gallery { gap: 28px; max-width: 880px; margin: 48px auto 0; }
  .bp-cake-gallery .bp-arch { border-radius: 170px 170px 18px 18px; }
  .bp-cake-split { display: grid; grid-template-columns: 380px minmax(0, 1fr); gap: 72px; align-items: start; margin-top: 72px; }
  .bp-cake-aside { position: sticky; top: 110px; }
  .bp-cake-aside h2 { font-size: 34px; }
}
.bp-cake-form .bp-form { margin-top: 0; }

/* 1.0.4 — checkout / basket */
.bp-checkout__body, .bp-basket__body { margin-top: 36px; }
@media (min-width: 1024px) { .bp-checkout__body, .bp-basket__body { margin-top: 56px; } }
.bp-checkout__body .woocommerce-form-login-toggle, .bp-checkout__body .woocommerce-form-coupon-toggle { margin-bottom: 8px; }
.woocommerce-checkout #order_review_heading { margin-bottom: -8px; }
.woocommerce-checkout table.shop_table .product-name { text-align: left; }
.woocommerce-checkout table.shop_table .product-total, .woocommerce-checkout table.shop_table tfoot td { text-align: right; }
.woocommerce-checkout #payment .place-order { padding: 16px 0 0; }
.woocommerce-checkout #payment #place_order { width: 100%; float: none; }
.wc-block-cart__submit-button, .wc-block-cart__submit-button:hover, .wc-block-components-button { text-decoration: none !important; }
/* Enquiry forms: full-width submit on desktop too, as the mocks. */
@media (min-width: 1024px) { .bp-form .bp-btn { align-self: stretch; } }
/* Checkout: Woo's .col2-set floats each column at 48% — inside the theme grid that left "Your details"
   a quarter of the page wide. Checkbox labels are sentences, not eyebrows. */
.woocommerce-checkout #customer_details .col-1, .woocommerce-checkout #customer_details .col-2 { float: none; width: 100%; max-width: none; }
.woocommerce form .form-row label.checkbox, .woocommerce form .form-row label.woocommerce-form__label-for-checkbox, .woocommerce-checkout .woocommerce-terms-and-conditions-wrapper label { font-family: var(--bp-font-body); font-size: 13px; letter-spacing: 0; text-transform: none; color: var(--bp-body); line-height: 1.6; }
.woocommerce-checkout #order_review_heading { margin-top: 28px; }
@media (min-width: 1024px) { .woocommerce-checkout #order_review_heading { margin-top: 0; } }

/* 1.0.6 — team of two sits centred rather than left in a 4-col grid; FAQ sections. */
@media (min-width: 768px) { .bp-team--2 { grid-template-columns: repeat(2, minmax(0, 340px)); justify-content: center; gap: 40px; } }
@media (min-width: 1024px) { .bp-team--2 { grid-template-columns: repeat(2, minmax(0, 360px)); gap: 56px; } }
.bp-team--2 .bp-team__card { text-align: center; align-items: center; }
.bp-faq-section { max-width: 760px; margin: 40px auto 0; }
.bp-faq-section__title { font-family: var(--bp-font-head); font-weight: 500; font-size: 13px; letter-spacing: .2em; text-transform: uppercase; color: var(--bp-gold-deep); display: flex; align-items: center; gap: 14px; margin: 0 0 6px; }
.bp-faq-section__title::after { content: ''; flex: 1; height: 1px; background: var(--bp-gold); }
.bp-faq-section .bp-accordion { margin-top: 0; border-top: 0; }
.bp-accordion details p a { text-decoration: underline; text-underline-offset: 3px; }
@media (min-width: 1024px) { .bp-faq-section { margin-top: 56px; } }
/* Home hero: the section clips overflow (for the season canvas) and the arch was its last child, so the
   gold ring — drawn 6–8px OUTSIDE the image — was sliced off along the bottom. Room for it now. */
.bp-hero--home { padding-bottom: 16px; }
.bp-hero--home + .bp-ticker { padding-top: 20px; }
@media (min-width: 1024px) { .bp-hero--home { padding-bottom: 20px; } .bp-hero--home + .bp-ticker { padding-top: 28px; } }

/* 1.0.6 — dark mode. --bp-bg flips to near-black in dark mode, so it must not colour text on surfaces
   that are dark in BOTH modes (footer, credit band, allergen table header). Those get a fixed token. */
:root { --bp-on-dark: #FAF9F4; }
.bp-footer__cols a, .bp-footer__social a, .bp-footer .bp-footer__cols a.bp-footer__email { color: var(--bp-on-dark); }
.beurre-allergen-matrix thead th { color: var(--bp-on-dark); }
.beurre-allergen-matrix .head-icon { background: var(--bp-on-dark); }

/* 1.0.6 — allergen icons were CROPPED, not scaled. The BeurreBros plugin inlines 32×32 SVGs, but its
   wp_kses allow-list spells the attribute 'viewBox'; kses lower-cases attribute names before matching, so
   the viewBox is stripped and CSS width/height only shrink the viewport (you saw the top-left ~20px of a
   32px drawing). Theme-side fix, no plugin edit: render each SVG at its native 32px and scale it with a
   transform. Still correct if the plugin is fixed later (one-word fix there: 'viewbox' in lower case). */
.menu-item-allergens .allergen-link { position: relative; overflow: hidden; padding: 0; }
.menu-item-allergens .beurre-allergen { position: absolute; inset: 0; }
.menu-item-allergens .beurre-allergen svg { position: absolute; left: 50%; top: 50%; width: 32px; height: 32px; max-width: none; transform: translate(-50%, -50%) scale(.64); transform-origin: center; }
.beurre-allergen-matrix .head-icon { position: relative; overflow: hidden; padding: 0; display: block; }
.beurre-allergen-matrix .head-icon svg { position: absolute; left: 50%; top: 50%; width: 32px; height: 32px; max-width: none; transform: translate(-50%, -50%) scale(.72); transform-origin: center; }

/* 1.0.6 — dark-mode sweep: Woo's own whites. */
.woocommerce div.product .woocommerce-tabs ul.tabs li.active { background: transparent; }
.woocommerce div.product form.cart .quantity .qty, .woocommerce .woocommerce-ordering select { background: var(--bp-white); color: var(--bp-ink); }

/* 1.0.8 — mobile browsers composite a playing <video> on its own layer, and a parent's
   overflow:hidden + border-radius does not reliably clip that layer (the hero clip showed as a square-
   cornered rectangle poking out of the arch on Android). Round the media itself and give the arch its own
   stacking context. No mask here on purpose: a mask would also cut off the gold ring (it is an outline). */
.bp-arch { isolation: isolate; }
.bp-arch > video, .bp-arch > img { border-radius: inherit; }
.bp-arch > video { transform: translateZ(0); backface-visibility: hidden; }

/* ======================================================================
   1.0.9 — audit of 20 Sep 2026 (~/beurre-retheme/AUDIT-2026-09-20.md)
   ====================================================================== */

/* H1 · Light-mode text contrast. The handoff's own constraint 8 asks for 4.5:1; its light tokens gave
   2.1–3.4:1. Pink and gold stay for FILLS, rules and borders; text gets darker siblings. Scoped to
   :not(dark) because a second :root block would out-order the dark palette (same specificity). */
:root { --bp-pink-text: var(--bp-pink); }
html:not([data-bp-theme="dark"]) { --bp-on-pink: #251A17; --bp-pink-text: #A93F55; --bp-gold-deep: #76622F; --bp-meta: #6B675C; }
a { color: var(--bp-pink-text); }
.bp-eyebrow { color: var(--bp-pink-text); }
.bp-eyebrow--gold { color: var(--bp-gold-deep); }
.bp-link:hover { color: var(--bp-pink-text); }
@media (min-width: 1024px) { .bp-nav a:hover, .bp-nav .current-menu-item > a, .bp-nav .current-menu-ancestor > a { color: var(--bp-pink-text); } }
/* …but on the always-dark footer the LIGHT pink is the readable one. M5: those links were colour-only. */
.bp-footer__legal a { color: #f0aab3; text-decoration: underline; text-underline-offset: 3px; }
.bp-form__note a { text-decoration: underline; text-underline-offset: 3px; }

/* H4 · Focus: a 2px ink ring (16:1 on cream, flips to cream in dark mode); inputs no longer remove it. */
:focus-visible { outline: 2px solid var(--bp-ink); outline-offset: 3px; }
.bp-form input:focus-visible, .bp-form textarea:focus-visible, .bp-form select:focus-visible,
.beurre-co-panel input:focus-visible, .beurre-co-panel textarea:focus-visible,
.woocommerce form .form-row input.input-text:focus-visible, .woocommerce form .form-row textarea:focus-visible { outline: 2px solid var(--bp-ink); outline-offset: 2px; border-color: var(--bp-ink); }
.bp-footer :focus-visible, .beurre-allergen-matrix thead :focus-visible { outline-color: var(--bp-on-dark); }
.bp-choices input:focus-visible + span { outline: 2px solid var(--bp-ink); }

/* C3 · The closed drawer was only translated off-screen: 22–28 invisible tab stops on every page. */
.bp-drawer { visibility: hidden; transition: transform .3s cubic-bezier(.4,0,.2,1), visibility 0s linear .3s; }
.bp-drawer[aria-hidden="false"] { visibility: visible; transition-delay: 0s; }
.bp-drawer > nav { display: contents; }

/* H5 · Desktop header needs ~1160px. From 1024 to 1199 the logo collapsed to 0px and nav labels wrapped
   (iPad landscape, small laptop windows) — that range now keeps the burger. */
.bp-logo { flex: none; }
.bp-logo img { max-width: none; }
.bp-nav__list { display: flex; gap: 32px; align-items: center; list-style: none; margin: 0; padding: 0; }
@media (min-width: 1024px) and (max-width: 1199.98px) {
  .bp-header__inner { display: flex; }
  .bp-nav, .bp-header__actions { display: none; }
  .bp-burger { display: flex; }
}
@media (min-width: 1200px) {
  .bp-drawer { display: none; }
  .bp-nav a { white-space: nowrap; }
}
@media (min-width: 1200px) and (max-width: 1299.98px) { .bp-nav__list { gap: 20px; } }

/* M2 · One heading, not an <h2> that just says "with". */
.bp-collab__title { display: flex; flex-direction: column; gap: 4px; }
.bp-collab__title .bp-eyebrow { font-weight: 400; line-height: 1.4; }

/* M7 · Pause control on the hero clip / seasonal canvas. */
.bp-hero__media-wrap { position: relative; }
.bp-hero__pause { position: absolute; right: 18px; bottom: 18px; z-index: 4; width: 44px; height: 44px; border-radius: var(--bp-radius-pill); border: 1px solid rgba(250,249,244,.7); background: rgba(37,26,23,.55); color: #FAF9F4; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; backdrop-filter: blur(4px); }
.bp-hero__pause svg { width: 18px; height: 18px; display: block; }
.bp-hero__pause .bp-hero__play-i, .bp-hero__pause[aria-pressed="true"] .bp-hero__pause-i { display: none; }
.bp-hero__pause[aria-pressed="true"] .bp-hero__play-i { display: block; }
/* 1.1.4: the ring was cream = the page background. Two-tone (ink ring, cream halo) so it reads on the clip and on the page. */
.bp-hero__pause:focus-visible { outline: 2px solid #251A17; outline-offset: -7px; }
@media (prefers-reduced-motion: reduce) { .bp-hero__pause { display: none; } }

/* H10 · Team portraits collapsed to 0×0 until the lazy image arrived (CLS 0.75 on mobile). */
.bp-team__media { width: 100%; }

/* M6 · required marker; L4 · 16px inputs so iOS does not zoom the page on focus. */
.bp-req { color: var(--bp-pink-text); text-decoration: none; font-weight: 600; letter-spacing: 0; }
.bp-form input[type="text"], .bp-form input[type="email"], .bp-form input[type="tel"], .bp-form input[type="date"], .bp-form input[type="number"], .bp-form select, .bp-form textarea,
.woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea, .woocommerce form .form-row select { font-size: 16px; }

/* H14 · Print. The allergen table printed 646 of 1,452px with no hint that rows were missing. */
@media print {
  .bp-header, .bp-drawer, .bp-footer, .cky-consent-container, .cky-btn-revisit-wrapper, .bp-skip, .bp-chips, .beurre-mobile-atc, .bp-hero__pause, canvas.bp-season { display: none !important; }
  body { background: #fff; color: #000; }
  .beurre-allergen-matrix-wrap { overflow: visible !important; max-height: none !important; border: 0; }
  .beurre-allergen-matrix { width: 100%; font-size: 8.5pt; }
  .beurre-allergen-matrix thead th, .beurre-allergen-matrix thead th:first-child, .beurre-allergen-matrix tbody .dish-cell.dish-head, .beurre-allergen-matrix tbody th { position: static; }
  .beurre-allergen-matrix thead th { background: #fff !important; color: #000 !important; border-bottom: 1.5pt solid #000; }
  tr, .bp-notice, .menu-item { break-inside: avoid; }
  details > * { display: block !important; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 8pt; }
  a[href^="mailto"]::after, a[href*="wa.me"]::after { content: ""; }
}

/* beurre-menu 1.6.1 prints dish names as <th scope="row">: give row headers the cell styling <td> had. */
.beurre-allergen-matrix tbody th { padding: 12px 8px; border-bottom: 1px solid var(--bp-border); background: var(--bp-bg); font-weight: 500; text-align: left; }
.beurre-allergen-matrix tbody tr:nth-child(even) th { background: var(--bp-bg-alt); }
.beurre-allergen-matrix-wrap:focus-visible { outline: 2px solid var(--bp-ink); outline-offset: 3px; }

/* Form result message: leave room for the sticky header when the redirect lands on #form-id. */
form.bp-form, .bp-form__msg { scroll-margin-top: 120px; }
/* The open drawer is a modal: CookieYes' box (z-index 9999999) sat on top of its lower buttons on a first visit. */
.bp-drawer[aria-hidden="false"] { z-index: 10000000; }

/* Hero: still image underneath (the LCP element), clip fades in over it once it is actually playing. */
.bp-hero__media { position: relative; }
.bp-arch .bp-hero__still { display: block; }
.bp-hero__media > video { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; transition: opacity .6s ease; }
.bp-hero__media > video.is-ready { opacity: 1; }

.bp-allergen-key__icon { flex: none; width: 28px; height: 28px; display: block; }
.bp-allergen-key__icon svg { width: 100%; height: 100%; display: block; }

/* ======================================================================
   1.1.0 — own cookie consent, self-hosted fonts, click-to-load map
   ====================================================================== */
@font-face { font-family: 'Lexend'; font-style: normal; font-weight: 300 600; font-display: swap; src: url(assets/fonts/lexend-latin-var.woff2) format('woff2'); }
@font-face { font-family: 'Work Sans'; font-style: normal; font-weight: 400 600; font-display: swap; src: url(assets/fonts/work-sans-latin-var.woff2) format('woff2'); }

.bp-consent { position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 9000; max-width: 440px; margin: 0; padding: 16px 18px; display: flex; flex-direction: column; gap: 12px; background: var(--bp-white); color: var(--bp-body); border: 1px solid var(--bp-border); border-radius: var(--bp-radius-card); box-shadow: 0 12px 40px rgba(37,26,23,.18); font-size: 13px; line-height: 1.55; }
.bp-consent[hidden] { display: none; }
.bp-consent p { margin: 0; }
.bp-consent strong { display: block; font-family: var(--bp-font-head); font-weight: 500; font-size: 14px; color: var(--bp-ink); margin-bottom: 2px; }
.bp-consent a { text-decoration: underline; text-underline-offset: 3px; }
.bp-consent__actions { display: flex; gap: 8px; }
.bp-consent__actions .bp-btn { flex: 1; min-height: 44px; padding: 10px 16px; font-size: 13px; }
@media (min-width: 768px) { .bp-consent { left: 24px; right: auto; bottom: 24px; } }
.bp-footer__cookie { background: none; border: 0; padding: 0; font: inherit; color: #f0aab3; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.bp-footer__cookie:hover { color: var(--bp-gold); }

.bp-contact__map { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; background: repeating-linear-gradient(135deg, var(--bp-bg-alt) 0 12px, var(--bp-white) 12px 24px); }
.bp-contact__map.is-loaded { display: block; background: var(--bp-bg-alt); }
.bp-contact__map .bp-contact__small { margin: 0; }
@media print { .bp-consent { display: none !important; } }

/* ---------- 1.1.3 · hero pause control made discreet ----------
   It has to exist (WCAG 2.2.2: the clip and the seasonal canvas auto-play for more than 5 s), but it read as a
   video-player button stuck on the photo. Now: a 28px translucent dot with a 10px glyph, tucked into the corner,
   inside the same 44px tap target. Full strength on hover / keyboard focus, and while paused (so "play" is findable). */
.bp-hero__pause { right: 6px; bottom: 6px; border: 0; backdrop-filter: none; -webkit-backdrop-filter: none;
	background: radial-gradient(circle, rgba(37,26,23,.42) 0 14px, transparent 14.5px); opacity: .75; transition: opacity .2s ease; }
.bp-hero__pause svg { width: 10px; height: 10px; }
.bp-hero__pause:hover, .bp-hero__pause:focus-visible, .bp-hero__pause[aria-pressed="true"] { opacity: 1; background: radial-gradient(circle, rgba(37,26,23,.7) 0 14px, transparent 14.5px); }
.bp-hero__pause:focus-visible { background: radial-gradient(circle, rgba(37,26,23,.7) 0 14px, transparent 14.5px 17px, #FAF9F4 17.5px 19.5px, transparent 20px); }

