/*
Theme Name:  Lady B's Soap Co.
Theme URI:   https://ladybsoapco.com
Description: Child theme for Lady B's Soap Co. — Direction 1a redesign. All custom CSS for the
             redesign lives in this file (build spec §0.3 / non-negotiable #4). Colors and type
             are set in Elementor Global Colors / Global Fonts; the variables below mirror them
             for the handful of rules Elementor cannot express.
Author:      Lady B's Soap Co.
Template:    hello-elementor
Version:     1.0.0
Text Domain: ladybsoapco-child
*/

/* ---------------------------------------------------------------------------
   NO RED (house rule): the parent theme's reset (Hello Elementor reset.css) paints every
   button raspberry (#c36) and fills it red on hover AND focus. Brand green instead.
   Red buttons read as "stop"; red is only ever used when Jon asks for it.
   --------------------------------------------------------------------------- */
[type="button"],[type="submit"],button{border-color:var(--forest);color:var(--forest)}
[type="button"]:focus,[type="button"]:hover,[type="submit"]:focus,[type="submit"]:hover,button:focus,button:hover{background-color:var(--forest);color:var(--cream)}


/* ---------------------------------------------------------------------------
   Build spec §6 — verbatim. Do not edit values here without updating the spec.
   --------------------------------------------------------------------------- */

:root{
  --honey:#C8860A; --honey-text:#9A6A08; --forest:#2D5016; --brown:#6B3A2A;
  --cream:#FDF6E3; --cream-deep:#F7EDD5; --gold-light:#F5D88A;
  --ink:#2C2C2C; --ink-muted:#5B5346; --rule:#E8D9B5; --rule-strong:#C6B48E;
}
/* squared corners everywhere — this direction has no rounded cards */
.woocommerce ul.products li.product img,.elementor-button,input,select,textarea{border-radius:0!important}

/* eyebrow label */
.lb-eyebrow{font:700 12.5px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;
  letter-spacing:.26em;text-transform:uppercase;color:var(--honey-text)}

/* hero: whole artwork visible, desktop only */
.lb-hero{aspect-ratio:1024/572;background-size:100% 100%;background-position:center;
  display:flex;align-items:flex-end;position:relative}
.lb-hero::before{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(59,36,24,0) 0%,rgba(59,36,24,.20) 42%,rgba(59,36,24,.58) 100%)}
.lb-hero>*{position:relative}
.lb-hero h1{font:400 clamp(40px,7.5vw,96px)/.94 Georgia,serif;letter-spacing:-.02em;
  color:var(--cream);text-shadow:0 2px 18px rgba(45,28,12,.35);margin:0}
@media(max-width:767px){.lb-hero{aspect-ratio:4/5;background-size:cover}}

/* marquee */
@keyframes lb-marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.lb-marquee{overflow:hidden;background:var(--forest);padding:15px 0}
.lb-marquee__track{display:flex;gap:44px;width:max-content;
  font:400 19px/1 Georgia,serif;letter-spacing:.06em;color:var(--gold-light);
  animation:lb-marquee 34s linear infinite}
@media(prefers-reduced-motion:reduce){.lb-marquee__track{animation:none}}

/* product cards: CTAs aligned regardless of description length */
.woocommerce ul.products li.product{display:flex;flex-direction:column;gap:14px}
.woocommerce ul.products li.product .lb-note{flex:1}
.woocommerce ul.products li.product .button{
  border:1px solid var(--forest);background:none;color:var(--forest);
  font:700 12.5px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.16em;
  text-transform:uppercase;padding:13px;text-align:center;transition:background .15s ease,color .15s ease}
.woocommerce ul.products li.product .button:hover{background:var(--forest);color:var(--cream)}
.woocommerce ul.products li.product .woocommerce-loop-product__title{
  font:400 26px/1.1 Georgia,serif;color:var(--brown)}

a{color:var(--honey-text)}a:hover{color:var(--forest)}

/* ---------------------------------------------------------------------------
   Header & footer — README §2 and §11. Values are from the design spec;
   colors reference the Elementor Global Colors mirrored in :root above.
   --------------------------------------------------------------------------- */

.lb-skip{position:absolute;left:-9999px}
.lb-skip:focus{left:8px;top:8px;z-index:100;background:var(--cream);color:var(--forest);
  padding:12px 18px;border:1px solid var(--forest)}

/* announcement bar */
.lb-announce{background:var(--forest);color:var(--cream);text-align:center;padding:11px 20px;
  font:600 12.5px/1.3 'Helvetica Neue',Helvetica,Arial,sans-serif;
  letter-spacing:.2em;text-transform:uppercase}

/* header */
.lb-header{background:var(--cream);border-bottom:1px solid var(--rule);padding:24px 44px 28px;
  position:sticky;top:0;z-index:40;transition:padding .15s ease}
.lb-header__inner{display:flex;align-items:center;gap:32px}
.lb-header__logo{flex:0 0 auto;line-height:0}
.lb-logo{height:116px;width:auto;display:block;transition:height .15s ease}
.lb-logo--text{font:400 34px/1 Georgia,serif;color:var(--brown);height:auto}
.lb-header.is-stuck{padding:12px 44px}
.lb-header.is-stuck .lb-logo{height:64px}

/* nav */
.lb-nav{flex:1 1 auto;display:flex;justify-content:center}
.lb-nav__list{display:flex;align-items:center;gap:26px;list-style:none;margin:0;padding:0}
.lb-nav__list a{font:400 13.5px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink);text-decoration:none;transition:color .15s ease}
.lb-nav__list a:hover,.lb-nav__list a:focus-visible{color:var(--forest)}
.lb-nav__list .current-menu-item>a{box-shadow:inset 0 -1px 0 0 var(--honey)}

/* header actions */
.lb-header__actions{flex:0 0 auto;display:flex;align-items:center;gap:16px}
.lb-search,.lb-bag{font:700 12.5px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.14em;
  text-transform:uppercase;text-decoration:none;cursor:pointer;transition:background .15s ease,color .15s ease}
.lb-search{background:none;border:0;color:var(--ink);padding:7px 4px}
.lb-search:hover{color:var(--forest)}
.lb-bag{border:1px solid var(--forest);color:var(--forest);padding:7px 13px;position:relative}
.lb-bag:hover,.lb-bag:focus-visible{background:var(--forest);color:var(--cream)}
/* Lizzy sits on top of the Basket button, paws on its top edge. She rides the
   sticky header everywhere; pointer-events off so she never blocks a tap. */
.lb-bag__bee{position:absolute;right:2px;
  bottom:calc(100% - 4px);width:46px;height:auto;pointer-events:none;
  filter:drop-shadow(0 2px 3px rgba(38,52,38,.22))}
.lb-searchbox{padding:18px 44px 0}
.lb-searchbox input[type=search]{border:0;border-bottom:1px solid var(--rule-strong);background:none;
  padding:10px 0;width:100%;max-width:420px;font:400 16px/1.4 'Helvetica Neue',Helvetica,Arial,sans-serif}

/* mobile toggle — hidden on desktop */
.lb-nav-toggle{display:none;background:none;border:0;cursor:pointer;padding:10px;
  min-width:44px;min-height:44px}
.lb-nav-toggle__bars,.lb-nav-toggle__bars::before,.lb-nav-toggle__bars::after{
  display:block;width:22px;height:1.5px;background:var(--ink);content:""}
.lb-nav-toggle__bars::before{transform:translateY(-7px)}
.lb-nav-toggle__bars::after{transform:translateY(5.5px)}

/* footer */
.lb-footer{background:var(--cream);padding:72px 64px 40px}
.lb-footer__cols{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:44px}
.lb-footer__logo{height:64px;width:auto;display:block}
.lb-footer__tagline{font:400 26px/1.3 Parisienne,Georgia,serif;color:var(--forest);margin:16px 0 0}
.lb-footer__heading{font:400 21px/1.2 Georgia,serif;color:var(--brown);margin:0 0 16px}
.lb-footer__note{font:400 15px/1.6 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink-muted);margin:0 0 16px}
.lb-footer__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.lb-footer__list a{font:400 15px/1.4 'Helvetica Neue',Helvetica,Arial,sans-serif;
  color:var(--ink);text-decoration:none}
.lb-footer__list a:hover{color:var(--forest)}
.lb-footer__legal{border-top:1px solid var(--rule);margin-top:48px;padding-top:24px;
  display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;
  font:400 13px/1.5 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink-muted)}

/* visible focus — README accessibility pass */
a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--forest);outline-offset:2px}

/* --- responsive: README "Responsive behavior" --- */
@media(max-width:799px){
  .lb-header{padding:16px 20px}
  .lb-header.is-stuck{padding:10px 20px}
  .lb-logo,.lb-header.is-stuck .lb-logo{height:72px}
  .lb-nav-toggle{display:block;order:-1}
  .lb-header__inner{gap:12px}
  .lb-header__logo{flex:1 1 auto;display:flex;justify-content:center}
  .lb-nav{display:none;flex:0 0 100%;order:3}
  .lb-nav.is-open{display:block}
  .lb-nav__list{flex-direction:column;align-items:flex-start;gap:0;padding-top:12px}
  .lb-nav__list a{display:block;padding:14px 0;min-height:44px}
  .lb-searchbox{padding:16px 20px 0}
  .lb-footer{padding:48px 20px 32px}
  .lb-footer__cols{grid-template-columns:1fr;gap:36px}
}
@media(max-width:600px){
  .lb-logo,.lb-header.is-stuck .lb-logo{height:56px}
  .lb-announce{letter-spacing:.14em;font-size:11.5px}
}
@media(prefers-reduced-motion:reduce){
  .lb-header,.lb-logo,.lb-bag,.lb-search,.lb-nav__list a{transition:none}
}

/* ---------------------------------------------------------------------------
   Home sections — README §1 items 3–10.
   The hero and marquee base rules live in the §6 block above; this extends them.
   --------------------------------------------------------------------------- */

:root{ --on-forest:#F7ECD6; --on-forest-muted:#DCE3CE; --rule-forest:#4A6B32; }

.lb-home h1,.lb-home h2,.lb-home h3{font-family:Georgia,'Times New Roman',serif;font-weight:400;margin:0}
.lb-eyebrow--gold{color:var(--gold-light)}
.lb-empty{font:400 16px/1.6 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink-muted);padding:24px 0}

/* section heading row */
.lb-sechead{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;
  border-bottom:1px solid var(--rule);padding-bottom:18px;margin-bottom:34px}
.lb-sechead h2,.lb-sechead h1{font-size:50px;line-height:1.05;letter-spacing:-.02em;color:var(--brown);margin:10px 0 .83em;font-family:Georgia,serif;font-weight:400}
.lb-link{font:400 15px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--honey-text);
  text-decoration:underline;text-underline-offset:4px;white-space:nowrap}
.lb-link:hover{color:var(--forest)}

/* 3. hero */
.lb-hero__inner{padding:0 56px 56px;max-width:760px}
.lb-hero__body{font:400 19px/1.6 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--on-forest);
  max-width:470px;margin:18px 0 26px}
.lb-hero h1 em{font-style:italic}
.lb-hero__ctas{display:flex;flex-wrap:wrap;gap:14px;margin:0}
.lb-btn{display:inline-block;text-decoration:none;font:700 13.5px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;
  letter-spacing:.14em;text-transform:uppercase;transition:background .15s ease,color .15s ease}
.lb-btn--honey{background:var(--honey);color:var(--ink);padding:17px 32px}
.lb-btn--honey:hover{background:var(--brown);color:var(--cream)}
.lb-btn--ghost{border:1px solid var(--on-forest);color:var(--on-forest);padding:17px 30px}
.lb-btn--ghost:hover{background:var(--on-forest);color:var(--forest)}
.lb-hero__card{position:absolute;right:56px;bottom:56px;z-index:2;background:var(--cream);
  padding:24px 26px;max-width:270px}
.lb-hero__card h2{font-size:24px;color:var(--brown);margin:6px 0 8px}
.lb-hero__card p{font:400 14.5px/1.55 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink-muted);margin:0}

/* 4. trust strip */
.lb-trust{background:var(--cream);border-bottom:1px solid var(--rule);padding:20px 64px;
  display:flex;justify-content:center;flex-wrap:wrap;gap:34px;
  font:400 13px/1.4 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-muted)}

/* 5. marquee spacing */
.lb-marquee__track span{white-space:nowrap}

/* 6. shelf */
.lb-shelf{background:var(--cream);padding:88px 64px}

/* 7. story */
.lb-story{background:var(--cream-deep);display:grid;grid-template-columns:1fr 1.1fr}
/* Whole photo, no crop, TOP of the section, house vignette (client 2026-09-08).
   The box takes the image's own aspect ratio so cover fills it exactly —
   that way the feathered mask hugs the real photo edges, not empty column.
   NOTE: update the aspect-ratio if the story-workbench image is ever swapped. */
.lb-story__photo{background-size:cover;background-position:center;
  align-self:start;width:100%;aspect-ratio:1080/1340;min-height:0;
  -webkit-mask-image:
    linear-gradient(to right,  transparent, #000 12%, #000 88%, transparent),
    linear-gradient(to bottom, transparent, #000 12%, #000 88%, transparent);
  -webkit-mask-composite: source-in;
  mask-image:
    linear-gradient(to right,  transparent, #000 12%, #000 88%, transparent),
    linear-gradient(to bottom, transparent, #000 12%, #000 88%, transparent);
  mask-composite: intersect}
/* storybook artwork under the photo, text runs alongside both (2026-09-08).
   The section sits on cream-DEEP, so the standard lb-art-fade overlay (which
   fades to plain cream) left a lighter halo — this instance uses the photo's
   transparent mask vignette instead, which blends into any ground. */
.lb-story__art{margin:26px 0 0;max-width:none}
/* .lb-story prefix outranks the later .lb-art-fade::after overlay rule */
.lb-story .lb-story__art::after{content:none}
.lb-story__art img{width:100%;height:auto;display:block;
  -webkit-mask-image:
    linear-gradient(to right,  transparent, #000 12%, #000 88%, transparent),
    linear-gradient(to bottom, transparent, #000 12%, #000 88%, transparent);
  -webkit-mask-composite: source-in;
  mask-image:
    linear-gradient(to right,  transparent, #000 12%, #000 88%, transparent),
    linear-gradient(to bottom, transparent, #000 12%, #000 88%, transparent);
  mask-composite: intersect}
@media(min-width:768px){
  /* breathing room so the images sit framed in the section, not flush
     against its edge (client 2026-09-08) */
  .lb-story{padding:30px 0 30px 30px}
  .lb-story__photo{grid-column:1;grid-row:1}
  .lb-story__art{grid-column:1;grid-row:2;align-self:start}
  .lb-story__text{grid-column:2;grid-row:1/span 2}
}
@media(max-width:767px){
  .lb-story__art{margin:20px 0 0}
}
.lb-story__text{padding:96px 72px}
.lb-story__text h2{font-size:56px;line-height:1.05;letter-spacing:-.02em;color:var(--brown);margin:10px 0 22px}
.lb-story__text h2 em{font-style:italic}
.lb-story__text p{font:400 17.5px/1.68 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink);
  max-width:520px;margin:0 0 18px}
.lb-quote{font:400 38px/1.25 Parisienne,Georgia,serif;color:var(--forest);
  border-left:2px solid var(--honey);padding-left:24px;margin:30px 0 0}

/* 8. process */
.lb-process{background:var(--cream);padding:92px 64px}
.lb-process h2{font-size:50px;line-height:1.05;letter-spacing:-.02em;color:var(--brown);margin:10px 0 40px}
.lb-process__grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:34px}
.lb-process__grid li{border-top:1px solid var(--rule);padding-top:20px}
.lb-process__n{display:block;font:400 44px/1 Georgia,serif;color:var(--honey)}
.lb-process__grid h3{font:700 13px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.16em;
  text-transform:uppercase;color:var(--forest);margin:14px 0 10px}
.lb-process__grid p{font:400 15px/1.6 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink-muted);margin:0}

/* 9. journal */
.lb-journal{background:var(--cream-deep);padding:88px 64px}
.lb-journal__grid{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:44px;align-items:start}
.lb-journal__grid img{width:100%;height:auto;aspect-ratio:16/10;object-fit:cover;display:block;margin-bottom:16px}
.lb-dateline{font:700 12px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.2em;
  text-transform:uppercase;color:var(--honey-text);margin:0 0 10px}
.lb-journal__grid h3{font-size:26px;line-height:1.15;color:var(--brown);margin:0 0 10px}
.lb-journal__grid .is-lead h3,.lb-journal__grid article.is-lead h3{font-size:36px}
.lb-journal__grid h3 a{color:inherit;text-decoration:none}
.lb-journal__grid h3 a:hover{color:var(--forest)}
.lb-journal__grid article:not(.is-lead){border-top:2px solid var(--forest);padding-top:22px}
.lb-excerpt{font:400 16px/1.6 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink-muted);margin:0}
.lb-journal__grid .is-lead .lb-excerpt{font-size:17px;line-height:1.65}

/* 10. find us */
.lb-find{background:var(--forest);display:grid;grid-template-columns:1.05fr 1fr}
.lb-find__text{padding:92px 64px}
.lb-find__text h2{font-size:54px;line-height:1.05;letter-spacing:-.02em;color:var(--cream);margin:10px 0 18px}
.lb-find__body{font:400 17px/1.65 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--on-forest-muted);
  max-width:520px;margin:0 0 30px}
.lb-find__rows{margin:0}
.lb-find__rows>div{display:flex;justify-content:space-between;gap:20px;
  border-top:1px solid var(--rule-forest);padding:16px 0}
.lb-find__rows dt{font:700 13px/1.4 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.1em;
  text-transform:uppercase;color:var(--gold-light);margin:0}
.lb-find__rows dd{font:400 15.5px/1.4 'Helvetica Neue',Helvetica,Arial,sans-serif;
  color:var(--on-forest);margin:0;text-align:right}
.lb-find__photo{background-size:cover;background-position:center;min-height:520px}

/* --- responsive --- */
@media(max-width:900px){
  .lb-journal__grid{grid-template-columns:1fr 1fr}
  .lb-journal__grid .is-lead{grid-column:1/-1}
  .lb-process__grid{grid-template-columns:1fr 1fr}
}
@media(max-width:767px){
  .lb-hero__inner{padding:0 20px 40px}
  .lb-hero__card{position:static;max-width:none;margin:0 20px 20px}
  .lb-sechead{flex-direction:column;align-items:flex-start;gap:10px}
  .lb-sechead h2,.lb-sechead h1,.lb-process h2{font-size:clamp(30px,8vw,50px)}
  .lb-shelf,.lb-process,.lb-journal{padding:48px 20px}
  .lb-story,.lb-find{grid-template-columns:1fr}
  .lb-story__photo{min-height:320px;order:-1}
  .lb-find__photo{min-height:320px;order:-1}
  .lb-story__text{padding:48px 20px}
  .lb-story__text h2{font-size:clamp(32px,9vw,56px)}
  .lb-find__text{padding:48px 20px}
  .lb-find__text h2{font-size:clamp(32px,9vw,54px)}
  .lb-quote{font-size:30px}
  .lb-trust{padding:16px 20px;gap:16px}
}
@media(max-width:600px){
  .lb-journal__grid,.lb-process__grid{grid-template-columns:1fr}
}

/* ---------------------------------------------------------------------------
   Phone hero — README "Responsive behavior" sanctions stacking the artwork
   above the text. Chosen over the 4:5 crop because the hero artwork carries
   its own lettering; overlaying the H1 on it produced text-on-text.
   Artwork sits at its native 1024:572 up top, copy sits on solid Deep Forest
   below it, so every string is legible and nothing is cropped.
   --------------------------------------------------------------------------- */
@media(max-width:767px){
  .lb-home .lb-hero{
    aspect-ratio:auto;
    flex-direction:column;
    align-items:stretch;
    background-color:var(--forest);
    background-size:100% auto;
    background-repeat:no-repeat;
    background-position:top center;
    padding-top:55.86%;               /* 572 / 1024 — reserves the artwork */
  }
  .lb-home .lb-hero::before{display:none}
  .lb-home .lb-hero__inner{
    padding:30px 20px 26px;
    max-width:none;
    width:100%;
  }
  .lb-home .lb-hero h1{
    font-size:clamp(34px,9.5vw,58px);
    line-height:1.02;
    text-shadow:none;
    margin-bottom:4px;
  }
  .lb-home .lb-hero__body{
    font-size:16.5px;
    line-height:1.6;
    max-width:none;
    margin:14px 0 22px;
  }
  .lb-home .lb-hero__ctas{gap:10px}
  .lb-home .lb-hero__ctas .lb-btn{flex:1 1 auto;text-align:center;padding:16px 18px}
  .lb-home .lb-hero__card{
    position:static;
    max-width:none;
    width:100%;
    margin:0;
    border-top:1px solid var(--rule);
  }
}

/* ---------------------------------------------------------------------------
   Header layout revision — client direction 2026-08-24:
   logo hard left, menu hard right (supersedes README §2 "Nav center").
   Also fixes: open drawer needs flex-wrap to claim its own row, and the
   stacked hero now runs to 1023px so it matches the nav breakpoint instead
   of leaving a broken 768-1023 band.
   --------------------------------------------------------------------------- */

/* desktop: nav sits at the right, beside the actions */
.lb-header__logo{flex:0 0 auto}
.lb-nav{justify-content:flex-end}
.lb-nav__list{gap:22px}

@media(max-width:1199px){
  .lb-nav__list{gap:16px}
  .lb-nav__list a{font-size:12.5px;letter-spacing:.08em}
}

/* tablet and phone: wrap the drawer onto its own row, keep the logo left */
@media(max-width:799px){
  .lb-header__inner{flex-wrap:wrap;align-items:center}
  .lb-header__logo{order:1;flex:0 0 auto;justify-content:flex-start}
  .lb-header__actions{order:2;margin-left:auto}
  .lb-nav-toggle{order:3;margin-left:4px}
  .lb-nav{order:4;flex:0 0 100%;width:100%}
  .lb-nav.is-open{border-top:1px solid var(--rule);margin-top:12px}
  .lb-searchbox{order:5;flex:0 0 100%}

  /* stacked hero — same treatment as phone, now covering tablet too */
  .lb-home .lb-hero{
    aspect-ratio:auto;flex-direction:column;align-items:stretch;
    background-color:var(--forest);background-size:100% auto;
    background-repeat:no-repeat;background-position:top center;
    padding-top:55.86%;
  }
  .lb-home .lb-hero::before{display:none}
  .lb-home .lb-hero__inner{padding:30px 20px 26px;max-width:none;width:100%}
  .lb-home .lb-hero h1{font-size:clamp(34px,6.5vw,58px);line-height:1.02;text-shadow:none;margin-bottom:4px}
  .lb-home .lb-hero__body{font-size:16.5px;line-height:1.6;max-width:560px;margin:14px 0 22px}
  .lb-home .lb-hero__ctas{gap:10px}
  .lb-home .lb-hero__card{position:static;max-width:none;width:100%;margin:0;border-top:1px solid var(--rule)}
}

/* ---------------------------------------------------------------------------
   Mobile / tablet menu — client direction: slide in from the RIGHT and float
   over the page, matching the previous site. Fixed positioning means the
   drawer never displaces page content.
   --------------------------------------------------------------------------- */
@media(max-width:799px){
  .lb-header__inner{flex-wrap:nowrap}          /* drawer no longer needs a row */

  .lb-nav{
    position:fixed;top:0;right:0;bottom:0;
    width:min(360px,86vw);
    display:block;                              /* always in the DOM, slid out */
    background:var(--cream);
    border-left:1px solid var(--rule);
    box-shadow:-18px 0 40px rgba(45,28,12,.16);
    transform:translateX(100%);
    transition:transform .28s cubic-bezier(.4,0,.2,1);
    z-index:60;
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    padding:22px 26px 40px;
    margin:0;
    flex:none;
  }
  .lb-nav.is-open{transform:translateX(0)}

  .lb-nav__list{flex-direction:column;align-items:stretch;gap:0;padding-top:8px}
  .lb-nav__list li+li{border-top:1px solid var(--rule)}
  .lb-nav__list a{display:block;padding:16px 0;min-height:44px;font-size:14px;letter-spacing:.12em}

  .lb-nav-close{
    display:block;margin-left:auto;background:none;border:0;cursor:pointer;
    font:400 30px/1 Georgia,serif;color:var(--brown);
    min-width:44px;min-height:44px;padding:0 4px
  }

  .lb-backdrop{
    position:fixed;inset:0;background:rgba(45,28,12,.42);
    z-index:55;opacity:0;transition:opacity .28s ease;
  }
  .lb-backdrop.is-open{opacity:1}

  body.lb-nav-open{overflow:hidden}
}

/* desktop: no drawer chrome */
@media(min-width:800px){
  .lb-nav-close,.lb-backdrop{display:none}
}

@media(prefers-reduced-motion:reduce){
  .lb-nav,.lb-backdrop{transition:none}
}

/* Drawer open/closed state, pinned to the ID so no class-level rule can
   outrank it regardless of source order. */
@media(max-width:799px){
  #lb-nav{transform:translateX(100%)}
  #lb-nav.is-open{transform:translateX(0)}
}

/* ---------------------------------------------------------------------------
   Drawer footer (logo + social) and tap-highlight fix.
   The hamburger was staying pink after close: that is Android's default
   -webkit-tap-highlight-color, made persistent because focus returns to the
   toggle when the menu closes. Suppress the highlight, keep the focus ring
   for keyboard users via :focus-visible.
   --------------------------------------------------------------------------- */

.lb-nav-toggle,.lb-nav-close,.lb-search,.lb-bag,.lb-nav__list a,.lb-social a{
  -webkit-tap-highlight-color:transparent}
.lb-nav-toggle:focus:not(:focus-visible){outline:none}

@media(max-width:799px){
  /* column layout so the footer can sit at the bottom of the panel.
     justify-content MUST be flex-start here: the desktop row rule sets
     .lb-nav{justify-content:flex-end}, and in a COLUMN that packs content
     to the bottom — when the menu is taller than a phone screen the top
     overflows into unreachable, unscrollable space (the "drawer cut off
     at the top / can't scroll" bug, client 2026-09-07). The foot still
     sits at the bottom via its own margin-top:auto. */
  #lb-nav{display:flex;flex-direction:column;justify-content:flex-start}
  .lb-nav__list{flex:0 0 auto}

  .lb-nav__foot{
    margin-top:auto;padding-top:28px;
    display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center
  }
  .lb-nav__logo{height:72px;width:auto;display:block;opacity:.95}

  .lb-social{display:flex;gap:10px;list-style:none;margin:0;padding:0}
  .lb-social a{
    display:flex;align-items:center;justify-content:center;
    width:44px;height:44px;                       /* 44px tap target */
    border:1px solid var(--rule-strong);color:var(--forest);
    transition:background .15s ease,color .15s ease,border-color .15s ease
  }
  .lb-social a:hover,.lb-social a:focus-visible{
    background:var(--forest);border-color:var(--forest);color:var(--cream)}
}

/* desktop: drawer footer is drawer-only */
@media(min-width:800px){
  .lb-nav__foot{display:none}
}

/* ---------------------------------------------------------------------------
   Toggle focus state. Something in the plugin/theme stack sets outline-color
   to #CC3366, which painted a magenta box on the hamburger and persisted
   because focus returned to it after closing. Pin the states explicitly.
   --------------------------------------------------------------------------- */
.lb-nav-toggle,
.lb-nav-toggle:focus,
.lb-nav-toggle:active,
.lb-nav-toggle:hover{background:transparent;outline:none;box-shadow:none;border:0}
.lb-nav-toggle:focus-visible{outline:2px solid var(--forest);outline-offset:2px}
/* the Search toggle catches the same magenta paint (#CC3366) from the stack
   once opened — the rule hides behind a variable and outranks a plain pin,
   so this one is deliberately heavy-handed */
button.lb-search,
button.lb-search:focus,
button.lb-search:active,
button.lb-search[aria-expanded="true"],
button.lb-search[aria-expanded="false"]{
  background:transparent!important;outline:none;box-shadow:none!important;border:0}
button.lb-search:focus-visible{outline:2px solid var(--forest);outline-offset:2px}

/* larger logos — header banner and drawer */
.lb-logo{height:116px}
@media(max-width:799px){
  .lb-logo,.lb-header.is-stuck .lb-logo{height:88px}
  .lb-nav__logo{height:110px}
}
@media(max-width:600px){
  .lb-logo,.lb-header.is-stuck .lb-logo{height:76px}
  .lb-nav__logo{height:96px}
}

/* ---------------------------------------------------------------------------
   Stacking fix. .lb-header is position:sticky with z-index:40, so it forms a
   stacking context and the drawer's z-index:60 is scoped inside it — leaving
   the root-level backdrop (z-index:55) painted ON TOP of the whole drawer and
   eating every tap. Lift the header above the scrim while the menu is open;
   that also keeps the hamburger itself tappable to close.
   --------------------------------------------------------------------------- */
body.lb-nav-open .lb-header{z-index:70}

/* ---------------------------------------------------------------------------
   Client revision: tighter cream header bar with a larger logo, larger drawer
   logo, and a rule separating the drawer logo from the social row.
   The logo asset is a square badge with its own internal margin, so most of
   the "empty space" was bar padding — cut it back hard rather than only
   scaling the image.
   --------------------------------------------------------------------------- */
@media(max-width:799px){
  .lb-header{padding:6px 20px}
  .lb-header.is-stuck{padding:4px 20px}
  .lb-logo{height:104px}
  .lb-header.is-stuck .lb-logo{height:72px}

  .lb-nav__logo{height:140px}

  /* divider between the logo and the social row */
  .lb-nav__foot{gap:0}
  .lb-social{
    width:100%;justify-content:center;
    border-top:1px solid var(--rule);
    margin-top:18px;padding-top:18px
  }
}
@media(max-width:600px){
  .lb-header{padding:4px 16px}
  .lb-header.is-stuck{padding:4px 16px}
  .lb-logo{height:92px}
  .lb-header.is-stuck .lb-logo{height:64px}
  .lb-nav__logo{height:126px}
}

/* ---------------------------------------------------------------------------
   Logo asset was retrimmed (attachment now has no transparent margin), so a
   given CSS height is all badge. Bands can be shorter while the mark reads
   larger. Drawer padding cut so the whole panel fits without scrolling.
   --------------------------------------------------------------------------- */
@media(max-width:799px){
  .lb-header{padding:4px 20px}
  .lb-header.is-stuck{padding:3px 20px}
  .lb-logo{height:96px}
  .lb-header.is-stuck .lb-logo{height:70px}

  #lb-nav{padding:14px 22px 18px}
  .lb-nav-close{font-size:26px;min-height:38px}
  .lb-nav__list{padding-top:2px}
  .lb-nav__list a{padding:11px 0;min-height:44px;font-size:13.5px}

  .lb-nav__foot{margin-top:20px;padding-top:0;gap:0}
  .lb-nav__logo{height:118px}
  .lb-social{margin-top:14px;padding-top:14px}
}
@media(max-width:600px){
  .lb-header{padding:3px 16px}
  .lb-header.is-stuck{padding:3px 16px}
  .lb-logo{height:84px}
  .lb-header.is-stuck .lb-logo{height:62px}

  #lb-nav{padding:12px 20px 16px}
  .lb-nav__logo{height:104px}
}

/* Buffer so the drawer is not sitting at exactly zero headroom — a wrapped
   menu label or taller browser chrome would otherwise force it to scroll. */
@media(max-width:799px){
  .lb-nav__foot{margin-top:10px}
  .lb-social{margin-top:10px;padding-top:10px}
}

/* ---------------------------------------------------------------------------
   Section 6 — "Just cured" spotlight: one large card plus two secondary.
   Photography does not exist yet, so image slots render the design's striped
   placeholder marking the required shot and ratio.
   --------------------------------------------------------------------------- */
.lb-shelf__grid{display:grid;grid-template-columns:1.5fr 1fr;gap:34px;align-items:start}
.lb-shelf__side{display:flex;flex-direction:column;gap:34px}

.lb-card{display:flex;flex-direction:column;gap:14px}
.lb-card__media{position:relative;display:block;line-height:0}
.lb-card__media img{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;display:block;
  transition:transform .3s ease-out}
.lb-card__media:hover img{transform:scale(1.02)}

.lb-slot{display:block;width:100%;aspect-ratio:1/1;position:relative;
  background:repeating-linear-gradient(135deg,#F5EBD3 0 9px,#EADCB8 9px 18px)}
.lb-slot__label{position:absolute;top:10px;right:10px;
  font:400 11px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  letter-spacing:.08em;color:var(--ink-muted);background:var(--cream);padding:5px 7px}

.lb-badge{position:absolute;top:10px;left:10px;
  font:700 11.5px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.12em;
  text-transform:uppercase;background:var(--forest);color:var(--cream);padding:6px 9px}
.lb-chip{position:absolute;left:10px;bottom:10px;
  font:700 11.5px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.08em;
  background:var(--cream);color:var(--ink-muted);padding:6px 9px;border:1px solid var(--rule-strong)}
/* homepage shelf: status chip under the photo, same as the shop cards */
.lb-card .lb-chip--below{position:static;align-self:flex-start;margin:0;line-height:1.2}

.lb-card__row{display:flex;align-items:baseline;justify-content:space-between;gap:14px}
.lb-card__row h3{font:400 26px/1.1 Georgia,serif;color:var(--brown);margin:0}
.lb-card.is-lead .lb-card__row h3{font-size:34px}
.lb-card__row h3 a{color:inherit;text-decoration:none}
.lb-card__row h3 a:hover{color:var(--forest)}
.lb-card__price{font:400 16px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink);white-space:nowrap}
.lb-card .lb-note{font:400 14.5px/1.5 'Helvetica Neue',Helvetica,Arial,sans-serif;
  color:var(--ink-muted);margin:0;flex:1}

.lb-card__cta{display:block;text-align:center;text-decoration:none;cursor:pointer;
  border:1px solid var(--forest);background:none;color:var(--forest);
  font:700 12.5px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.16em;
  text-transform:uppercase;padding:13px;transition:background .15s ease,color .15s ease}
.lb-card__cta:hover{background:var(--forest);color:var(--cream)}
.lb-card__cta.is-notify{border-color:var(--rule-strong);color:var(--ink-muted)}
.lb-card__cta.is-notify:hover{background:var(--rule-strong);color:var(--ink)}

@media(max-width:900px){
  .lb-shelf__grid{grid-template-columns:1fr;gap:28px}
  .lb-shelf__side{flex-direction:row;gap:20px}
  .lb-shelf__side .lb-card{flex:1 1 0}
  .lb-card.is-lead .lb-card__row h3{font-size:28px}
}
@media(max-width:600px){
  .lb-shelf__side{flex-direction:column;gap:28px}
}
@media(prefers-reduced-motion:reduce){
  .lb-card__media img{transition:none}
  .lb-card__media:hover img{transform:none}
}

/* ---------------------------------------------------------------------------
   Desktop size pass v2 — client direction 2026-09-03:
   "the whole site should be centered into that smaller area."
   The entire homepage now lives in one centered ~1160px column; the hero sits
   inside it at its native 1024:572 ratio, so the full artwork is visible with
   no cropping (~648px tall at full column width). Everything targets >=1024px;
   phone/tablet rules are untouched.
   --------------------------------------------------------------------------- */
/* page ground at EVERY width: the whole site sits on cream, never default
   white — the artwork feathers (cart, 404) and card vignettes fade TO cream,
   so a white ground makes them read as pasted-on rectangles (client note
   2026-09-05, first seen on the 404 at phone widths). */
body{background:var(--cream)}

@media(min-width:800px){

  /* THE site column — client direction 2026-09-05: every page constrained to
     the same centered 800px, so nothing ever reads full-bleed on a laptop.
     .lb-home = homepage/journal/search templates, .lb-store = shop/404,
     .site-main = WP pages (cart, checkout, Elementor pages). */
  .lb-home,
  main.lb-store,
  .site-main{max-width:800px;margin-left:auto;margin-right:auto}

  /* hero: base rule's aspect-ratio + 100% 100% background applies unchanged —
     at column width the whole painting shows. Only the copy is calmed down. */
  .lb-hero h1{font-size:clamp(38px,4.2vw,56px)}
  .lb-hero__inner{padding:0 48px 40px;max-width:620px}
  .lb-hero__body{font-size:17px;max-width:430px;margin:14px 0 22px}
  .lb-btn--honey{padding:14px 26px}
  .lb-btn--ghost{padding:14px 24px}
  .lb-hero__card{right:40px;bottom:40px;max-width:240px;padding:20px 22px}
  .lb-hero__card h2{font-size:20px}

  /* header: slimmer bar, calmer logo (header itself stays full-bleed) */
  .lb-header{padding:14px 44px}
  .lb-logo{height:84px}
  .lb-header.is-stuck .lb-logo{height:56px}

  /* sections: fixed inner padding — the column does the centering now */
  .lb-shelf,.lb-process,.lb-journal{padding:56px 48px}
  .lb-trust{padding:18px 48px}

  /* display type: down about a third from the original spec */
  .lb-sechead h2,.lb-sechead h1,.lb-process h2{font-size:36px}
  .lb-story__text h2,.lb-find__text h2{font-size:38px}
  .lb-sechead{padding-bottom:14px;margin-bottom:28px}

  /* marquee */
  .lb-marquee{padding:12px 0}
  .lb-marquee__track{font-size:16px;gap:36px}

  /* story + find: tighter text panels, shorter photos */
  .lb-story__text{padding:56px 48px}
  .lb-story__text p{font-size:16px;max-width:480px}
  .lb-story__photo{min-height:420px}
  .lb-quote{font-size:30px}
  .lb-find__text{padding:56px 48px}
  .lb-find__body{font-size:16px;max-width:480px}
  .lb-find__photo{min-height:400px}

  /* cards + journal: calmer titles */
  .lb-card__row h3{font-size:22px}
  .lb-card.is-lead .lb-card__row h3{font-size:27px}
  .lb-journal__grid h3{font-size:22px}
  .lb-journal__grid .is-lead h3,.lb-journal__grid article.is-lead h3{font-size:28px}
  .lb-journal__grid .is-lead .lb-excerpt{font-size:16px}
  .lb-process__n{font-size:36px}
  .woocommerce ul.products li.product .woocommerce-loop-product__title{font-size:22px}

  /* footer: content joins the same column */
  .lb-footer{padding:56px 48px 36px}
  .lb-footer__cols,.lb-footer__legal{max-width:800px;margin-left:auto;margin-right:auto}
}

/* ---------------------------------------------------------------------------
   Journal archive page (page-journal.php) — the /journal/ page was an empty
   placeholder; these rules lay the full listing out: newest entry leads at
   full width, the rest flow in a three-up grid. Inherits card styles from
   the homepage journal section above.
   --------------------------------------------------------------------------- */
.lb-journal--archive .lb-journal__grid{grid-template-columns:repeat(3,1fr)}
.lb-journal--archive .lb-journal__grid .is-lead{grid-column:1/-1}
.lb-journal--archive .lb-journal__grid article:not(.is-lead){border-top:2px solid var(--forest);padding-top:22px}
.lb-journal--archive .lb-journal__grid img{aspect-ratio:16/9}
@media(max-width:900px){
  .lb-journal--archive .lb-journal__grid{grid-template-columns:1fr 1fr}
}
@media(max-width:600px){
  .lb-journal--archive .lb-journal__grid{grid-template-columns:1fr}
}
.lb-journal__bee{display:none}
@media(min-width:800px){
  .lb-journal__bee{display:flex;justify-content:flex-end;margin-top:-60px;pointer-events:none}
  .lb-journal__bee img{height:220px;width:auto}
  /* the -60px pull-up parks Lizzy in the empty last grid slot — but the lead
     card spans the full first row, so the last row is FULL whenever the last
     article is an nth-child(3n+1); drop her below the grid then, no overlap */
  .lb-journal__grid:has(> article:nth-child(3n+1):last-child)+.lb-journal__bee{margin-top:0}
  /* homepage variant: the one-row grid leaves dead space under the two short
     text cards (the lead's image makes col 1 tall) — park Lizzy bottom-right
     of the section, out of the grid flow so she never pushes the cards */
  .lb-journal{position:relative}
  .lb-journal__bee--home{position:absolute;right:26px;bottom:42px;margin-top:0}
  .lb-journal__bee--home img{height:200px}
}

/* ---------------------------------------------------------------------------
   Single post (single.php) — house-styled article page. The story column runs
   narrower than the site column for comfortable reading; the cover image and
   any end-of-post photos span the story width.
   --------------------------------------------------------------------------- */
.lb-post{background:var(--cream);padding:56px 20px 64px}
.lb-post__head,.lb-post__body,.lb-post__cover,.lb-post__back{max-width:720px;margin-left:auto;margin-right:auto}
.lb-post__head h1{font:400 40px/1.1 Georgia,serif;letter-spacing:-.02em;color:var(--brown);margin:10px 0 12px}
.lb-post__head .lb-dateline{margin:0 0 8px}
.lb-post__cover{margin:26px auto}
.lb-post__cover img{width:100%;height:auto;display:block}
.lb-post__body{font:400 17px/1.7 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink)}
.lb-post__body p{margin:0 0 18px}
.lb-post__body img{max-width:100%;height:auto;display:block}
.lb-post__body .lbjs-photo{margin:26px 0}

/* FAQ page (page-faq.php): questions are core Details blocks in the page
   content — styled as a quiet accordion, hairline rules, serif questions. */
.lb-faq__headrow{display:flex;align-items:flex-end;justify-content:space-between;gap:18px}
.lb-faq__bee{height:150px;width:auto;flex:0 0 auto;transform:scaleX(-1);pointer-events:none}
@media(max-width:599px){.lb-faq__bee{height:104px}}
.lb-faq .lb-post__body>p:first-child{font:400 19px/1.6 Georgia,serif;color:var(--ink-muted);margin-bottom:30px}
.lb-faq details.wp-block-details{border-top:1px solid var(--rule-strong);margin:0;padding:0}
.lb-faq details.wp-block-details:last-of-type{border-bottom:1px solid var(--rule-strong)}
.lb-faq details.wp-block-details summary{font:400 20px/1.35 Georgia,serif;color:var(--brown);
  cursor:pointer;padding:16px 34px 16px 0;position:relative;list-style:none}
.lb-faq details.wp-block-details summary::-webkit-details-marker{display:none}
.lb-faq details.wp-block-details summary::after{content:"+";position:absolute;right:4px;top:50%;
  transform:translateY(-50%);font:400 24px/1 Georgia,serif;color:var(--honey-text)}
.lb-faq details.wp-block-details[open] summary::after{content:"\2013"}
.lb-faq details.wp-block-details p,.lb-faq details.wp-block-details ul{margin:0 0 16px;color:var(--ink)}
.lb-faq details.wp-block-details ul{padding-left:22px}
.lb-faq .lb-faq-close{font:400 19px/1.6 Georgia,serif;color:var(--brown);margin:32px 0 8px}
.lb-faq .lb-faq-art img{max-width:100%;height:auto;display:block}

/* Our story page (page-our-story.php): first paragraph is the italic serif
   tagline, echoing the collection-page taglines */
.lb-ourstory .lb-story-tagline{font:400 24px/1.35 Georgia,serif;font-style:italic;
  color:var(--honey-text);margin:0 0 26px;text-align:center}
.lb-ourstory .lb-story-art{margin:0 auto 30px}
.lb-ourstory .lb-story-signoff{font:400 19px/1.5 Georgia,serif;font-style:italic;color:var(--brown)}

/* Find us page (page-find-us.php): schedule renders from soap-calc/events.json */
.lb-findus .lb-events{max-width:720px;margin:34px auto 0}
.lb-findus .lb-events h2{font:400 30px/1.1 Georgia,serif;color:var(--brown);
  border-top:1px solid var(--rule-strong);padding-top:26px;margin:0 0 14px}
.lb-events__list{list-style:none;margin:0;padding:0}
.lb-events__list li{border-top:1px solid var(--rule);padding:16px 2px}
.lb-events__list li:first-child{border-top:0}
.lb-events__date{display:block;font:700 12px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;
  letter-spacing:.14em;text-transform:uppercase;color:var(--honey-text);margin-bottom:6px}
.lb-events__name{display:block;font:400 22px/1.2 Georgia,serif;color:var(--brown)}
.lb-events__meta{display:block;color:var(--ink-muted);margin-top:3px}
.lb-events__note{display:block;font-style:italic;color:var(--ink-muted);margin-top:3px}
.lb-events__empty{font:400 17px/1.6 Georgia,serif;font-style:italic;color:var(--ink-muted)}
.lb-post__back{margin-top:36px}
@media(max-width:600px){
  .lb-post{padding:36px 16px 48px}
  .lb-post__head h1{font-size:30px}
}

/* ---------------------------------------------------------------------------
   Storefront pass — shop, line (category), and product pages, synced from the
   formulator's Store Inventory. Keeps the whole store inside the same centered
   column and card language as the homepage.
   --------------------------------------------------------------------------- */
.woocommerce-page #content, body.single-product #content{
  max-width:800px;margin:0 auto;background:var(--cream);padding:48px}
.woocommerce-page #content h1.page-title, body.single-product .product_title{
  font:400 36px/1.1 Georgia,serif;letter-spacing:-.02em;color:var(--brown);margin:0 0 8px}
.woocommerce-page .term-description{font:400 16px/1.6 'Helvetica Neue',Helvetica,Arial,sans-serif;
  color:var(--ink-muted);max-width:640px;margin:0 0 26px}
.woocommerce-page .woocommerce-result-count,
.woocommerce-page .woocommerce-ordering{font:400 13px/1.4 'Helvetica Neue',Helvetica,Arial,sans-serif;
  color:var(--ink-muted)}
.woocommerce ul.products{display:grid;grid-template-columns:repeat(3,1fr);gap:34px;
  list-style:none;margin:26px 0 0;padding:0}
.woocommerce ul.products li.product{margin:0;text-align:left}
.woocommerce ul.products li.product img{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover}
.woocommerce ul.products li.product .price{font:400 16px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;
  color:var(--ink)}
.woocommerce ul.products li.product .price del{opacity:.5}
.woocommerce nav.woocommerce-pagination{margin-top:36px}
@media(max-width:900px){.woocommerce ul.products{grid-template-columns:1fr 1fr;gap:24px}}
@media(max-width:600px){
  /* two-up on phones (client 2026-09-07) — card type scales down to match */
  .woocommerce ul.products{grid-template-columns:1fr 1fr;gap:24px 14px}
  .woocommerce ul.products li.product{gap:10px}
  .woocommerce ul.products li.product .woocommerce-loop-product__title{font-size:16px;line-height:1.25}
  .woocommerce ul.products li.product .price{font-size:14px}
  .woocommerce ul.products li.product .button{font-size:11px;letter-spacing:.1em;padding:11px 10px}
  /* half-width photos can't afford overlays: collection badge + For chip
     were covering the product (client 2026-09-07). Only the sold-out marker
     stays on the photo — that one earns its ink. */
  .woocommerce ul.products li.product .lb-badge{display:none}
  .woocommerce ul.products li.product .lb-aud-note{display:none}
  .woocommerce ul.products li.product .lb-chip{font-size:10px;padding:5px 7px}
  .woocommerce ul.products li.product .lb-soldout-note{font-size:9px;padding:5px 7px;left:6px;bottom:6px}
  .woocommerce-page #content, body.single-product #content{padding:28px 16px}
}

/* single product */
body.single-product div.product{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:start}
body.single-product div.product .woocommerce-product-gallery{margin:0}
body.single-product div.product .woocommerce-product-gallery img{width:100%;height:auto}
body.single-product div.product .summary{font:400 16px/1.65 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink)}
body.single-product div.product .summary .price{font-size:22px;color:var(--brown);margin:8px 0 14px;display:block}
body.single-product div.product form.cart{margin:18px 0 22px;display:flex;gap:12px;align-items:stretch}
body.single-product div.product form.cart .quantity input{width:70px;padding:12px;border:1px solid var(--rule-strong);
  background:none;font:inherit;text-align:center;height:100%}
body.single-product div.product .single_add_to_cart_button,
.woocommerce #respond input#submit, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button{
  background:var(--forest);color:var(--cream);border:1px solid var(--forest);border-radius:0;
  font:700 13px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;
  padding:15px 26px;cursor:pointer;transition:background .15s ease,color .15s ease}
body.single-product div.product .single_add_to_cart_button:hover,
.woocommerce a.button:hover, .woocommerce button.button:hover{background:var(--brown);color:var(--cream)}
body.single-product .product_meta{font:400 13px/1.7 'Helvetica Neue',Helvetica,Arial,sans-serif;
  color:var(--ink-muted);border-top:1px solid var(--rule);padding-top:14px}
body.single-product .woocommerce-tabs{grid-column:1/-1}
body.single-product .related.products{grid-column:1/-1;margin-top:26px}
body.single-product .related.products>h2{font:400 28px/1.1 Georgia,serif;color:var(--brown)}
@media(max-width:900px){body.single-product div.product{grid-template-columns:1fr;gap:26px}}

/* woo notices in brand colors */
.woocommerce-message,.woocommerce-info{border-top-color:var(--forest);background:var(--cream-deep);
  color:var(--ink);font:400 15px/1.5 'Helvetica Neue',Helvetica,Arial,sans-serif}
.woocommerce-message::before,.woocommerce-info::before{color:var(--forest)}

/* Woo's blanket `.woocommerce-page img{height:auto}` outranks .lb-logo by
   specificity and blew the header logo up to natural size on store pages.
   Matching-specificity companions pin it back at every breakpoint. */
body.woocommerce-page img.lb-logo, body.single-product img.lb-logo{height:96px;width:auto}
body.woocommerce-page .lb-header.is-stuck img.lb-logo,
body.single-product .lb-header.is-stuck img.lb-logo{height:70px}
@media(min-width:800px){
  body.woocommerce-page img.lb-logo, body.single-product img.lb-logo{height:84px}
  body.woocommerce-page .lb-header.is-stuck img.lb-logo,
  body.single-product .lb-header.is-stuck img.lb-logo{height:56px}
}
@media(max-width:600px){
  body.woocommerce-page img.lb-logo, body.single-product img.lb-logo{height:84px}
}

/* ---------------------------------------------------------------------------
   Storefront dressing — house-styled archive header + browse chips, default
   Woo header hidden, loop cards brought fully into the shelf card language.
   --------------------------------------------------------------------------- */
.lb-store__head{margin:0 0 8px}
.lb-store__head h1{font:400 40px/1.1 Georgia,serif;letter-spacing:-.02em;color:var(--brown);margin:10px 0 10px}
.lb-store__desc{font:400 16px/1.6 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink-muted);
  max-width:560px;margin:0 0 20px}
.lb-linechips{display:flex;flex-wrap:wrap;gap:10px;border-bottom:1px solid var(--rule);
  padding-bottom:22px;margin-bottom:6px}
.lb-linechip{font:700 12px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.12em;
  text-transform:uppercase;text-decoration:none;color:var(--ink-muted);
  border:1px solid var(--rule-strong);padding:9px 14px;
  transition:background .15s ease,color .15s ease,border-color .15s ease}
.lb-linechip:hover{color:var(--forest);border-color:var(--forest)}
.lb-linechip.is-on{background:var(--forest);border-color:var(--forest);color:var(--cream)}

/* hide Woo's own archive header + result count remnants */
.lb-store .woocommerce-products-header{display:none}

/* loop cards: same anatomy as the homepage shelf cards */
.lb-store ul.products li.product{position:relative;background:none}
.lb-store ul.products li.product .woocommerce-LoopProduct-link{display:block;position:relative}
.lb-store ul.products li.product img{transition:transform .3s ease-out}
.lb-store ul.products li.product a:hover img{transform:scale(1.02)}
.lb-store ul.products li.product .lb-badge{position:absolute;top:10px;left:10px;z-index:2;line-height:1}
.lb-store ul.products li.product .lb-chip{position:static;display:inline-block;align-self:flex-start;
  margin:0;line-height:1.2}
.lb-store ul.products li.product .woocommerce-loop-product__title{
  font:400 24px/1.15 Georgia,serif;color:var(--brown);padding:0;margin:2px 0 0}
.lb-store ul.products li.product .woocommerce-loop-product__title:hover{color:var(--forest)}
.lb-store ul.products li.product .price{margin:0}
.lb-store ul.products li.product .button{margin-top:auto}

/* products without photos yet: soften Woo's gray placeholder to the design's stripes */
.lb-store ul.products li.product img.woocommerce-placeholder{
  background:repeating-linear-gradient(135deg,#F5EBD3 0 9px,#EADCB8 9px 18px);object-fit:cover}

/* empty line: friendlier note */
.lb-store .woocommerce-info{margin-top:26px}

@media(max-width:600px){
  .lb-store__head h1{font-size:30px}
}

/* Woo's float-era loop CSS (li width 22%, floats, its own h1) fights the grid —
   neutralize inside the wrapper. */
/* !important: below 768px Woo's smallscreen sheet sets li width 48% with a
   heavier selector, which halved every phone card inside its grid column */
.lb-store ul.products li.product{width:100%!important;float:none;margin:0;clear:none}
.lb-store ul.products::before,.lb-store ul.products::after{display:none}
.lb-store h1.page-title{display:none}
.lb-store .term-description{display:none}

/* curing-aware product page */
.lb-curing-note{background:var(--cream-deep);border-left:3px solid var(--honey);
  font:400 15px/1.6 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink);
  padding:14px 16px;margin:0 0 18px}
.lb-notify-form{border-top:1px solid var(--rule);padding-top:16px;margin-top:8px}
.lb-notify-form label{display:block;white-space:nowrap;
  font:700 11px/1.4 'Helvetica Neue',Helvetica,Arial,sans-serif;
  letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);margin-bottom:8px}
.lb-notify-row{display:flex;gap:8px;max-width:560px}
.lb-notify-row input[type=email]{flex:1;min-width:0;padding:7px 12px;border:1px solid var(--rule-strong);
  background:#fff;font:inherit;font-size:14px}
.lb-notify-row button{background:none;border:1px solid var(--forest);color:var(--forest);
  font:700 11px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.1em;
  text-transform:uppercase;padding:8px 13px;cursor:pointer;flex:0 0 auto;
  transition:background .15s ease,color .15s ease}
.lb-notify-row button:hover{background:var(--forest);color:var(--cream)}
.lb-notify-done{background:var(--cream-deep);border-left:3px solid var(--forest);
  font:400 15px/1.5 'Helvetica Neue',Helvetica,Arial,sans-serif;padding:14px 16px;margin-top:12px}

/* product page reading order: description up top, buying mechanics below */
body.single-product div.product .summary .woocommerce-product-details__short-description{
  font:400 14px/1.5 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink-muted);
  letter-spacing:.04em;margin:2px 0 10px}
.lb-prod-desc{font:400 16px/1.68 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink);
  border-bottom:1px solid var(--rule);padding-bottom:18px;margin-bottom:16px}
.lb-prod-desc p{margin:0 0 14px}
.lb-prod-desc p:last-child{margin-bottom:0}
.lb-prod-ingredients{border-bottom:1px solid var(--rule);padding-bottom:16px;margin-bottom:16px}
.lb-prod-ingredients h2{font:700 11px/1.4 'Helvetica Neue',Helvetica,Arial,sans-serif;
  letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);margin:0 0 6px}
.lb-prod-ingredients p{font:400 14px/1.6 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink);margin:0}

/* card blurb on shop cards (sits inside the card link, under the price) */
.woocommerce ul.products li.product .lb-note{font:400 14px/1.5 'Helvetica Neue',Helvetica,Arial,sans-serif;
  color:var(--ink-muted);margin:8px 0 0}
@media(max-width:600px){
  .woocommerce ul.products li.product .lb-note{font-size:12.5px;line-height:1.4;margin-top:6px}
}
body.single-product div.product .summary .price{margin-top:4px}

/* Woo's float-era product layout sets div.images/div.summary to ~48% widths —
   inside the grid that quartered the photo and left dead space. Fill the
   columns properly and dress the thumbnail strip. */
body.single-product div.product div.images,
body.single-product div.product div.summary{width:100%!important;float:none;margin:0}
body.single-product .woocommerce-product-gallery,
body.single-product .woocommerce-product-gallery .flex-viewport,
body.single-product .woocommerce-product-gallery__wrapper{width:100%}
body.single-product .woocommerce-product-gallery__image img{width:100%;height:auto;display:block}
body.single-product .flex-control-thumbs{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0 0;padding:0;list-style:none}
body.single-product .flex-control-thumbs li{width:86px;margin:0;float:none}
body.single-product .flex-control-thumbs img{border:1px solid var(--line);opacity:.65;cursor:pointer;display:block;width:100%}
body.single-product .flex-control-thumbs img.flex-active,
body.single-product .flex-control-thumbs img:hover{opacity:1;border-color:var(--forest)}

/* The off-canvas drawer parks at translateX(100%) just past the right edge;
   phones treat that as pannable canvas and let the page drag left. Clip
   horizontal overflow at the root ('clip' doesn't break position:sticky the
   way 'hidden' can; hidden only as a fallback for older browsers). */
html, body{overflow-x:clip}
@supports not (overflow: clip){
  html, body{overflow-x:hidden}
}

/* Grid items refuse to shrink below their content's natural width by default,
   so the 600px gallery image forced the single mobile column (and the
   description with it) wider than the phone screen. Let the tracks shrink and
   cap media at the viewport. */
body.single-product div.product > *{min-width:0;max-width:100%}
body.single-product .woocommerce-product-gallery__image img,
body.single-product .flex-viewport img{max-width:100%;height:auto}

/* ---------------------------------------------------------------------------
   Top menu decluttered — client direction 2026-09-03: below ~1280px the nav
   wrapped to two ragged lines. Our story / Journal / Find us leave the desktop
   bar (they live in the footer's new Company column and in the homepage
   sections); the phone/tablet drawer keeps the full list. Footer grid gains
   the fourth column.
   --------------------------------------------------------------------------- */
@media(min-width:800px){
  /* ...but the OPEN drawer always shows the full list (2026-09-05) */
  .lb-nav:not(.is-open) .lb-nav__list li:has(> a[href*="/our-story"]),
  .lb-nav:not(.is-open) .lb-nav__list li:has(> a[href*="/journal"]),
  .lb-nav:not(.is-open) .lb-nav__list li:has(> a[href*="/find-us"]),
  .lb-nav:not(.is-open) .lb-nav__list li:has(> a[href*="/faq"]){display:none}
}
.lb-footer__cols{grid-template-columns:1.2fr .9fr .9fr 1.2fr}
@media(max-width:799px){
  .lb-footer__cols{grid-template-columns:1fr}
}

/* Drawer logo: smaller and immune to Woo's `.woocommerce-page img{height:auto}`
   blanket (which blew it up to natural size on store pages). !important because
   Woo's stylesheet loads after this one. */
img.lb-nav__logo{height:96px!important;width:auto!important} /* all widths — the desktop drawer showed it at full natural size */
@media(max-width:600px){
  img.lb-nav__logo{height:84px!important}
}

/* Header tightening — client direction 2026-09-03: trim the padding around
   the logo and start the menu right beside it (supersedes the 2026-08-24
   "menu hard right" note); search + bag stay pinned right. */
@media(min-width:800px){
  .lb-header{padding:12px 28px 12px 16px}
  .lb-header__inner{gap:20px}
  .lb-nav{justify-content:flex-start}
}


/* ---------------------------------------------------------------------------
   Nav survives narrow desktop windows — client direction 2026-09-03.
   The hamburger breakpoint moved from 1024px down to 800px (all former
   1023/1024 queries above now read 799/800); this tier compresses the bar so
   the five links + search + bag fit from 800 to ~1000px wide.
   --------------------------------------------------------------------------- */
/* Since the topbar itself is capped at the 800px site column (2026-09-05),
   the header content is ALWAYS at most 800 wide — so the compression tier
   applies at every desktop width, not just 800-999px viewports. */
@media(min-width:800px){
  /* Stacked header v2 (2026-09-05): logo + the five menu links share the TOP
     row (they fit ~680px at this size); Search + Basket live on the lower
     row, right-aligned under a hairline rule. The search input expands
     INLINE to the left of the Search button — no dropdown panel. The single
     row never fit: logo+links+search+basket ≈960px vs the 800 band. */
  .lb-header__inner{display:flex;flex-wrap:wrap;align-items:center;gap:0 12px}
  .lb-header__logo{order:1}
  .lb-nav{order:2;flex:1 1 auto;display:flex;justify-content:flex-start}
  .lb-nav__list{gap:14px}
  .lb-nav__list a{font-size:11px;letter-spacing:.06em;white-space:nowrap}
  .lb-nav-toggle{display:block;order:3;margin-left:auto}
  .lb-header__actions{order:4;flex:1 1 100%;display:flex;justify-content:flex-end;
    align-items:center;gap:14px;border-top:1px solid var(--rule);
    margin-top:8px;padding-top:8px}
  .lb-search{font-size:11.5px}
  .lb-bag{font-size:11.5px;padding:6px 11px;white-space:nowrap}
  .lb-bag__bee{width:40px}
  /* shop-by-type quick links fill the actions row's left side */
  .lb-typebar{display:flex;gap:16px;align-items:center;margin-right:auto;flex-wrap:wrap}
  .lb-typebar a{font:700 11px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;
    letter-spacing:.08em;text-transform:uppercase;text-decoration:none;
    color:var(--ink-muted);transition:color .15s ease;white-space:nowrap}
  .lb-typebar a:hover{color:var(--forest)}
  .lb-typebar a.is-on{color:var(--forest);border-bottom:2px solid var(--honey)}
  .lb-typebar__sep{width:1px;height:14px;background:var(--rule-strong)}
  /* inline search: slides open to the left of the Search button */
  .lb-header__actions .lb-searchbox{position:static;box-shadow:none;border:0;
    padding:0;margin:0;background:none;z-index:auto;animation:lb-searchslide .15s ease}
  .lb-header__actions .lb-searchbox form{margin:0;max-width:none;gap:0}
  .lb-header__actions .lb-searchbox .search-field,
  .lb-header__actions .lb-searchbox input[type=search]{
    width:230px;max-width:32vw;flex:0 1 auto;border:0;
    border-bottom:1px solid var(--rule-strong);background:none;
    padding:5px 4px;font:400 14px/1.3 'Helvetica Neue',Helvetica,Arial,sans-serif}
  .lb-header__actions .lb-searchbox input[type=search]:focus{outline:none;border-bottom-color:var(--forest)}
  .lb-header__actions .lb-searchbox .search-submit,
  .lb-header__actions .lb-searchbox button[type=submit],
  .lb-header__actions .lb-searchbox input[type=submit]{display:none} /* Enter submits */
}
@keyframes lb-searchslide{from{opacity:0;transform:translateX(10px)}to{opacity:1;transform:none}}

/* ---------------------------------------------------------------------------
   Search panel — replaces the bare underlined field that pushed the page
   down. A cream dropdown hangs from the sticky header with a real input and
   a Go button; header.js closes it on Escape or an outside click.
   --------------------------------------------------------------------------- */
.lb-searchbox{
  position:absolute;left:0;right:0;top:100%;
  background:var(--paper,#FBF7EC);border-bottom:1px solid var(--rule);
  box-shadow:0 16px 32px rgba(45,28,12,.14);
  padding:20px;z-index:35;animation:lb-searchdrop .18s ease}
@keyframes lb-searchdrop{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.lb-searchbox form{display:flex;gap:10px;max-width:560px;margin:0 auto}
.lb-searchbox .search-field,
.lb-searchbox input[type=search]{
  flex:1;min-width:0;max-width:none;border:1px solid var(--rule-strong);background:#fff;
  padding:11px 14px;font:400 15px/1.4 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink)}
.lb-searchbox .search-submit,
.lb-searchbox button[type=submit],
.lb-searchbox input[type=submit]{
  flex:0 0 auto;background:var(--forest);color:var(--cream);border:1px solid var(--forest);
  font:700 12px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.12em;
  text-transform:uppercase;padding:11px 20px;cursor:pointer;
  transition:background .15s ease}
.lb-searchbox .search-submit:hover{background:var(--brown)}
.lb-searchbox label{flex:1;display:block}
@media(prefers-reduced-motion:reduce){.lb-searchbox{animation:none}}

/* search results page (search.php) — card grid in the journal section's skin */
.lb-sresults__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:34px;align-items:start}
.lb-sresult__media{display:block;line-height:0;margin-bottom:14px}
.lb-sresult__media img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;display:block;
  transition:transform .3s ease-out}
.lb-sresult__media:hover img{transform:scale(1.02)}
.lb-sresult{border-top:2px solid var(--forest);padding-top:18px}
.lb-sresult h3{font:400 22px/1.15 Georgia,serif;color:var(--brown);margin:0 0 8px;
  display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.lb-sresult h3 a{color:inherit;text-decoration:none}
.lb-sresult h3 a:hover{color:var(--forest)}
.lb-sresult__price{font:400 15px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink);white-space:nowrap}
.lb-sresults__pages{margin-top:34px;font:400 15px/1 'Helvetica Neue',Helvetica,Arial,sans-serif}
.lb-sresults__pages .page-numbers{display:inline-block;padding:9px 13px;margin-right:6px;
  border:1px solid var(--rule-strong);color:var(--ink);text-decoration:none}
.lb-sresults__pages .page-numbers.current{background:var(--forest);border-color:var(--forest);color:var(--cream)}
.lb-sresults__pages a.page-numbers:hover{border-color:var(--forest);color:var(--forest)}
@media(max-width:900px){.lb-sresults__grid{grid-template-columns:1fr 1fr;gap:24px}}
@media(max-width:600px){.lb-sresults__grid{grid-template-columns:1fr}}

/* ---------------------------------------------------------------------------
   Footer rework — client direction 2026-09-03: socials join the brand column
   (they only lived in the phone drawer), and the orphaned newsletter
   placeholder becomes the market schedule + Etsy note.
   --------------------------------------------------------------------------- */
.lb-social--footer{display:flex;gap:10px;list-style:none;margin:20px 0 0;padding:0}
.lb-social--footer a{display:flex;align-items:center;justify-content:center;
  width:40px;height:40px;border:1px solid var(--rule-strong);color:var(--forest);
  transition:background .15s ease,color .15s ease,border-color .15s ease}
.lb-social--footer a:hover,.lb-social--footer a:focus-visible{
  background:var(--forest);border-color:var(--forest);color:var(--cream)}
.lb-footer__rows{margin:0}
.lb-footer__rows>div{display:flex;justify-content:space-between;gap:14px;
  border-top:1px solid var(--rule);padding:10px 0}
.lb-footer__rows>div:first-child{border-top:0;padding-top:0}
.lb-footer__rows dt{font:700 11.5px/1.5 'Helvetica Neue',Helvetica,Arial,sans-serif;
  letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);margin:0}
.lb-footer__rows dd{font:400 14px/1.5 'Helvetica Neue',Helvetica,Arial,sans-serif;
  color:var(--ink);margin:0;text-align:right}
.lb-footer__note a{color:var(--honey-text);text-decoration:underline;text-underline-offset:3px}
.lb-footer__note a:hover{color:var(--forest)}

/* line-page tagline: the headline between the line name and the intro */
.lb-store__tagline{font:400 22px/1.35 Georgia,serif;font-style:italic;color:var(--honey-text);
  margin:-2px 0 12px;max-width:640px}

/* audience filter chips: quieter than the line chips */
.lb-audchips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0 4px}
.lb-audchips__label{font:700 11px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;
  letter-spacing:.12em;text-transform:uppercase;color:var(--ink-muted)}
.lb-audchip{font:400 13px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink-muted);
  text-decoration:none;border:1px solid transparent;border-radius:20px;padding:7px 12px;
  transition:color .15s ease,border-color .15s ease,background .15s ease}
.lb-audchip:hover{color:var(--forest);border-color:var(--rule-strong)}
.lb-audchip.is-on{background:var(--cream-deep);border-color:var(--rule-strong);color:var(--brown);font-weight:600}
.lb-aud-meta{font:inherit}

/* audience chip: subtle, pinned to the photo's lower-right corner */
.lb-aud-note{position:absolute;right:10px;bottom:10px;
  font:400 10px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;
  letter-spacing:.09em;text-transform:uppercase;color:var(--ink-muted);
  background:rgba(251,247,236,.92);border:1px solid var(--rule-strong);
  padding:5px 8px}
/* on loop cards the link wraps image+title, so a square overlay mirrors the
   image's box and the chip pins inside it */
.lb-aud-wrap{position:absolute;top:0;left:0;right:0;aspect-ratio:1/1;pointer-events:none}


/* sold out: unmistakable clay chip, photo lower-left */
.lb-soldout-note{position:absolute;left:10px;bottom:10px;
  font:700 10.5px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;
  letter-spacing:.1em;text-transform:uppercase;
  background:var(--clay);color:#fff;padding:6px 9px}
.lb-chip--soldout{background:var(--clay);color:#fff;border-color:var(--clay)}

/* ---- empty basket (cart page) ----
   The bee-and-basket artwork replaces Woo's bare empty-cart line; the
   illustration carries the words, so the block is just image + one CTA. */
.lb-empty-cart{text-align:center;padding:26px 0 10px}
.lb-empty-cart img{display:block;max-width:640px;width:100%;height:auto;margin:0 auto;
  border:1px solid var(--rule-strong);border-radius:4px}
.lb-empty-cart__cta{display:inline-block;margin-top:22px;padding:13px 34px}
/* our CTA replaces Woo's stock "Return to shop" button */
.woocommerce-cart .return-to-shop{display:none}
/* ---- product-card vignette ----
   Every product photo in a LIST (shop grid, homepage shelf, cart's "New in
   store" row, search results) gets a soft feather that melts its edges into
   the cream card behind it. Done with a mask on the img itself, so badges,
   chips, and buttons layered on top stay crisp. Browsers without
   mask-composite fall back to fading just the corners — still a vignette. */
.lb-card__media img,
.lb-store ul.products li.product img.attachment-woocommerce_thumbnail,
.lb-store ul.products li.product img.wp-post-image,
.wc-block-grid__product-image img,
.lb-sresult__media img{
  -webkit-mask-image:
    linear-gradient(to right,  transparent, #000 12%, #000 88%, transparent),
    linear-gradient(to bottom, transparent, #000 12%, #000 88%, transparent);
  -webkit-mask-composite: source-in;
  mask-image:
    linear-gradient(to right,  transparent, #000 12%, #000 88%, transparent),
    linear-gradient(to bottom, transparent, #000 12%, #000 88%, transparent);
  mask-composite: intersect;
}

/* ---- green bar rides with the header — client direction 2026-09-05 ----
   The announcement bar and header are one sticky unit (.lb-topbar wraps both
   in header.php), so the bar never scrolls away and never slides over the
   menu mid-scroll. The header itself goes static inside the wrapper. */
.lb-topbar{position:sticky;top:0;z-index:40}
.lb-topbar .lb-header{position:static}
body.lb-nav-open .lb-topbar{z-index:70}
/* the band itself joins the 800px site column */
@media(min-width:800px){
  .lb-topbar{max-width:800px;margin-left:auto;margin-right:auto}
}

/* ---- one-size header — client direction 2026-09-05 ----
   The scroll-shrink is retired: the header sits at its compact ("stuck")
   size at all times, no resizing as you scroll. This block deliberately
   overrides every per-breakpoint base/is-stuck pair above with !important,
   rather than editing them all — one place to change the number. */
.lb-header{padding:10px 18px 10px 12px!important;transition:none!important}
.lb-logo,
.lb-header.is-stuck .lb-logo,
body.woocommerce-page img.lb-logo,
body.single-product img.lb-logo{height:56px!important;width:auto!important;transition:none!important}
@media(max-width:799px){
  .lb-header{padding:8px 16px!important}
  .lb-logo,
  body.woocommerce-page img.lb-logo,
  body.single-product img.lb-logo{height:48px!important}
}

/* ---- compact homepage — client direction 2026-09-05 ----
   "Images taking up too much space, not getting to the product quick
   enough; desktop should feel like the mobile layout." The hero becomes a
   slim cover-cropped welcome band instead of the full painting, and every
   section drops to mobile-tight rhythm so the shelf is one short scroll away. */
@media(min-width:800px){
  /* top-anchored crop: the "Lady B's Soaps" script lives at the artwork's top
     edge and must never be clipped — the band crops from the bottom instead */
  /* full painting on desktop too (Jon 2026-09-07) — was a 310px cover-cropped
     band from the compact pass; native ratio ≈447px tall in the 800 column */
  .lb-home .lb-hero{aspect-ratio:1024/572;height:auto;background-size:100% 100%;background-position:center}
  .lb-home .lb-hero h1{font-size:clamp(30px,3.6vw,42px)}
  .lb-home .lb-hero__inner{padding:0 26px 22px;max-width:520px}
  .lb-home .lb-hero__body{font-size:13.5px;margin:8px 0 14px;max-width:360px}
  .lb-home .lb-btn--honey{padding:11px 18px}
  .lb-home .lb-hero__card{right:22px;bottom:22px;max-width:225px;padding:14px 16px}
  .lb-home .lb-trust{padding:12px 24px}
  .lb-home .lb-marquee{padding:10px 0}
  .lb-home .lb-shelf{padding:34px 26px 42px}
  .lb-home .lb-process{padding:36px 26px 42px}
  .lb-home .lb-journal{padding:36px 26px 42px}
  .lb-home .lb-sechead h2,.lb-home .lb-sechead h1,.lb-home .lb-process h2{font-size:28px}
  .lb-home .lb-sechead{padding-bottom:10px;margin-bottom:18px}
  .lb-home .lb-process h2{margin:6px 0 20px}
  .lb-home .lb-story__photo{min-height:280px}
  .lb-home .lb-story__text{padding:34px 30px}
  .lb-home .lb-find__photo{min-height:280px}
  .lb-home .lb-find__text{padding:34px 30px}
  /* shelf: three equal cards, no hero/side asymmetry — the old lead+stack
     layout left dead space under whichever column ran shorter */
  .lb-home .lb-shelf__grid{grid-template-columns:repeat(3,1fr);gap:22px;align-items:start}
  .lb-home .lb-shelf__side{display:contents}
  .lb-home .lb-card.is-lead .lb-card__row h3{font-size:19px}
  /* first column stacks card + a permanent Lizzy tile, so a short description
     never reads as dead space — she waves from whatever room is left */
  .lb-home .lb-shelf__col1{display:flex;flex-direction:column;gap:18px}
  .lb-home .lb-shelf__art{flex:1;display:flex;align-items:center;justify-content:center;
    padding:10px 0 0}
  .lb-home .lb-shelf__art img{width:170px;max-width:64%;height:auto;
    filter:drop-shadow(0 3px 6px rgba(38,52,38,.15))}
}

/* ---- desktop drawer — client direction 2026-09-05 ----
   The hamburger now shows at ALL widths (right end of the menu row on
   desktop). The top-row links stay for quick shopping; the hamburger opens
   the same full drawer mobile uses — all eight links, logo, socials. While
   open, the inline nav element BECOMES the fixed drawer panel. */
@media(min-width:800px){
  .lb-nav.is-open{position:fixed;top:0;right:0;bottom:0;width:min(360px,86vw);
    display:flex;flex-direction:column;background:var(--cream);border-left:1px solid var(--rule);
    box-shadow:-18px 0 40px rgba(45,28,12,.16);z-index:80;overflow-y:auto;
    padding:22px 26px 40px;margin:0;flex:none;transform:none}
  .lb-nav.is-open .lb-nav__list{flex-direction:column;align-items:stretch;gap:0;padding-top:8px}
  .lb-nav.is-open .lb-nav__list li+li{border-top:1px solid var(--rule)}
  .lb-nav.is-open .lb-nav__list a{display:block;padding:14px 0;font-size:14px;letter-spacing:.12em}
  .lb-nav.is-open .lb-nav-close{display:block;margin-left:auto;background:none;border:0;
    cursor:pointer;font:400 30px/1 Georgia,serif;color:var(--brown);
    min-width:44px;min-height:44px;padding:0 4px}
  /* drawer foot on desktop: same centered column + horizontal social row the
     mobile drawer has (those rules live in a max-width:799px block) */
  .lb-nav.is-open .lb-nav__foot{display:flex;flex-direction:column;align-items:center;
    gap:16px;text-align:center;margin-top:auto;padding-top:28px}
  .lb-nav.is-open .lb-nav__logo{height:72px;width:auto;display:block;opacity:.95}
  .lb-nav.is-open .lb-social{display:flex;gap:10px;list-style:none;margin:0;padding:0}
  .lb-nav.is-open .lb-social a{display:flex;align-items:center;justify-content:center;
    width:44px;height:44px;border:1px solid var(--rule-strong);color:var(--forest);
    transition:background .15s ease,color .15s ease,border-color .15s ease}
  .lb-nav.is-open .lb-social a:hover,
  .lb-nav.is-open .lb-social a:focus-visible{
    background:var(--forest);border-color:var(--forest);color:var(--cream)}
  /* backdrop sits BELOW the topbar's stacking context (raised to 70 while
     open), so the drawer glows at full brightness and only the page dims —
     same layering mobile always had */
  .lb-backdrop.is-open{display:block;position:fixed;inset:0;
    background:rgba(45,28,12,.42);z-index:65;opacity:1}
  body.lb-nav-open{overflow:hidden}
}

/* drawer artwork: Lizzy in the lavender basket, feathered into the cream.
   Hidden while the nav is the inline desktop menu row; shows in the drawer. */
/* !important because .lb-art-fade{display:block} lives LATER in the file (the
   cart-art section) and was winning — which leaked the artwork into the inline
   menu row. Hidden unless the drawer is actually open; no exceptions. */
.lb-nav:not(.is-open) .lb-nav__art{display:none!important}
.lb-nav__art{margin:10px auto 6px;max-width:300px} /* lives inside the menu list, right under Home */
.lb-nav:not(.is-open) .lb-nav__artli{display:none}
.lb-nav.is-open .lb-nav__artli{border-top:0!important;list-style:none}
/* the artwork IS a home link now — but never styled like a text menu row */
.lb-nav__art a{display:block;padding:0!important;min-height:0!important;border:0}
/* the sticky × shares the first row — margin (not padding) keeps the ×
   clear AND ends the link's box early, so HOME's honey underline stops
   before the × instead of running underneath its disc (client 2026-09-07) */
.lb-nav.is-open .lb-nav__list li:first-child a{margin-right:64px}

/* type quick-links are a desktop nicety — phones have the drawer + type chips */
@media(max-width:799px){
  .lb-typebar{display:none}
}

/* mobile stacks the shelf single-column — no gap for Lizzy to fill there */
@media(max-width:799px){
  .lb-shelf__art{display:none}
}

/* footer: the storybook meadow replaces the round logo, feathered into the
   footer's cream like every other artwork; tagline + socials center under it */
.lb-footer__art{max-width:280px;margin:0 0 14px}
.lb-footer__art img{display:block;width:100%;height:auto}
.lb-footer__brand .lb-footer__tagline{text-align:center;max-width:280px}
.lb-footer__brand .lb-social--footer{justify-content:center;max-width:280px}
@media(max-width:799px){
  .lb-footer__art{margin:0 auto 14px}
  .lb-footer__brand .lb-footer__tagline,
  .lb-footer__brand .lb-social--footer{max-width:none;margin-left:auto;margin-right:auto}
}
.lb-nav.is-open .lb-nav__art,
.lb-nav.is-open .lb-nav__art[hidden]{display:block}
/* tight top: less padding; the × rides STICKY at the drawer's top-right so
   it can never scroll out of reach on a phone, floating over the art's
   quiet top corner on a soft cream disc */
.lb-nav.is-open{padding-top:8px}
@media(max-width:799px){
  /* phones: the drawer's top edge IS the screen edge, and the old #lb-nav
     ID rules (12-14px top) left the HOME row clipped under the status bar
     on real devices (client 2026-09-07) — real headroom plus notch inset;
     ID selector needed to outrank those #lb-nav padding rules */
  #lb-nav.is-open{padding-top:calc(24px + env(safe-area-inset-top))}
  /* and never let the browser "helpfully" re-scroll the drawer when late
     content (the artwork) loads — this is what ate the HOME row on Android */
  #lb-nav{overflow-anchor:none}
}
.lb-nav.is-open .lb-nav-close{position:sticky;top:6px;z-index:2;
  margin:0 0 -44px auto;background:rgba(253,246,227,.88);border-radius:50%}
/* the art is a flex child in the drawer column — never let it squish */
.lb-nav__art{flex:0 0 auto}

/* Lizzie B collection: the honeycomb-sitter fills the empty product-grid
   slot bottom-right, journal-page pattern (client 2026-09-07) */
.lb-store__bee{display:none}
@media(min-width:800px){
  .lb-store__bee{display:flex;justify-content:flex-end;margin:-260px 0 24px;pointer-events:none}
  .lb-store__bee img{height:230px;width:auto;
    filter:drop-shadow(0 3px 5px rgba(38,52,38,.18))}
  /* when the last product row is FULL, drop below the grid instead */
  .lb-store:has(ul.products > li.product:nth-child(3n):last-child) .lb-store__bee{margin-top:8px}
}

/* phones: the WHOLE drawer should fit one screen, no scrolling needed
   (client 2026-09-07) — smaller art, tighter rows (44px tap targets kept),
   and no round logo in the foot: the artwork is already the brand mark */
@media(max-width:799px){
  .lb-nav.is-open .lb-nav__art{max-width:188px;margin:1px auto}
  #lb-nav .lb-nav__list a{padding:10px 0}
  #lb-nav{padding-top:calc(20px + env(safe-area-inset-top));padding-bottom:9px}
  #lb-nav .lb-nav__foot{padding-top:6px;gap:8px}
  #lb-nav .lb-nav__logo{display:none}
}

/* Lizzy on the order-received page, and on her own collection's header */
.lb-thankyou-bee{text-align:center;margin:4px 0 22px}
.lb-thankyou-bee img{width:200px;height:auto;
  filter:drop-shadow(0 3px 5px rgba(38,52,38,.18))}
/* pickup orders: what happens next */
.lb-pickup-note{max-width:560px;margin:0 auto 26px;padding:18px 20px;background:var(--cream-deep);
  border-left:4px solid var(--forest);font:400 16px/1.6 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink)}
.lb-pickup-note p{margin:0 0 8px}
.lb-pickup-note p:last-child{margin-bottom:0}
.lb-pickup-note__title{font:700 12px/1.3 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.14em;
  text-transform:uppercase;color:var(--forest)}
.lb-head-bee{display:inline-block;width:96px;height:auto;
  vertical-align:-28px;margin-left:16px;
  filter:drop-shadow(0 2px 4px rgba(38,52,38,.18))}
@media(max-width:600px){.lb-head-bee{width:70px;vertical-align:-20px;margin-left:10px}}

/* ---- checkout + cart dressing ----
   The blocks checkout ships in generic Gutenberg gray: system-font titles,
   rounded blue-ish focus states, a flat white sidebar. This pass makes both
   pages speak the house language — serif headings, forest + cream, squared
   buttons that match .lb-card__cta — without touching the blocks' layout. */

/* page titles in the store's serif voice */
.woocommerce-checkout h1.entry-title,
.woocommerce-cart h1.entry-title{
  font:400 40px/1.1 Georgia,serif;letter-spacing:-.02em;color:var(--brown)}

/* step + summary headings go serif too */
.wc-block-components-checkout-step__title,
.wc-block-components-title{
  font-family:Georgia,serif!important;font-weight:400!important;color:var(--brown)}
.wc-block-components-checkout-step__title{font-size:21px}
.wc-block-components-checkout-step__description{color:var(--ink-muted)}

/* fields: warm white rectangles, forest focus ring */
.wp-block-woocommerce-checkout input[type=text],
.wp-block-woocommerce-checkout input[type=email],
.wp-block-woocommerce-checkout input[type=tel],
.wp-block-woocommerce-checkout input[type=number],
.wp-block-woocommerce-checkout select,
.wp-block-woocommerce-checkout textarea,
.wp-block-woocommerce-cart input[type=text],
.wp-block-woocommerce-cart select{
  border:1px solid var(--rule-strong);background:#FFFDF8;color:var(--ink)}
.wp-block-woocommerce-checkout input:focus,
.wp-block-woocommerce-checkout select:focus,
.wp-block-woocommerce-checkout textarea:focus,
.wp-block-woocommerce-cart input:focus{
  border-color:var(--forest);box-shadow:0 0 0 1px var(--forest);outline:none}
.wp-block-woocommerce-checkout input[type=radio],
.wp-block-woocommerce-checkout input[type=checkbox],
.wp-block-woocommerce-cart input[type=radio],
.wp-block-woocommerce-cart input[type=checkbox]{accent-color:var(--forest)}

/* the money buttons: Place Order + Proceed to Checkout, house-styled */
.wc-block-components-checkout-place-order-button,
.wc-block-cart__submit-button{
  background:var(--forest)!important;color:var(--cream)!important;
  border:1px solid var(--forest)!important;border-radius:0!important;
  font:700 13px/1.2 'Helvetica Neue',Helvetica,Arial,sans-serif!important;
  letter-spacing:.16em;text-transform:uppercase;
  transition:filter .15s ease}
.wc-block-components-checkout-place-order-button:hover,
.wc-block-cart__submit-button:hover{filter:brightness(1.18)}

/* sidebar (order summary) as a quiet card on the cream ground */
.wc-block-checkout__sidebar .wp-block-woocommerce-checkout-order-summary-block,
.wp-block-woocommerce-cart .wc-block-cart__totals-wrapper{
  border:1px solid var(--rule-strong);background:#FFFDF8;padding:6px 12px 12px}
.wc-block-components-totals-footer-item .wc-block-components-totals-item__label,
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value{
  font-family:Georgia,serif;font-weight:400;color:var(--brown)}

/* radio option cards (shipping / payment) pick up the rules + forest borders */
.wc-block-components-radio-control-accordion-option,
.wc-block-components-radio-control__option{border-color:var(--rule-strong)}

/* links inside the flows */
.wp-block-woocommerce-checkout a,
.wp-block-woocommerce-cart a:not(.wp-block-button__link):not(.wc-block-cart__submit-button){
  color:var(--forest)}

/* The cart block ships as "alignwide", which applies -80px side margins — but
   its width is capped, so instead of widening it just slides 80px LEFT of
   center. Auto margins put the whole cart (empty and filled) back on center. */
.wp-block-woocommerce-cart.alignwide{margin-left:auto;margin-right:auto}

/* blocks-cart variant: the empty state is page content (image + button blocks).
   The figure is hard-centered (the cart block's wide layout was letting it sit
   left), the img is fully fluid so phones never crop it, and a feathered cream
   overlay melts all four edges into the page background — no frame, the
   artwork just fades in from the paper. */
.lb-empty-cart-img,
.lb-art-fade{display:block;margin:0 auto 10px;max-width:640px;width:100%;
  position:relative}
.lb-empty-cart-img img,
.lb-art-fade img{display:block;width:100%;max-width:100%;height:auto;margin:0 auto;
  border:0;border-radius:0}
.lb-empty-cart-img::after,
.lb-art-fade::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:
    linear-gradient(to right,  var(--cream), rgba(253,246,227,0) 14%, rgba(253,246,227,0) 86%, var(--cream)),
    linear-gradient(to bottom, var(--cream), rgba(253,246,227,0) 14%, rgba(253,246,227,0) 86%, var(--cream))}
/* the 404 artwork gets a little more room than the cart's */
.lb-404 .lb-art-fade{max-width:720px}
/* the checkout's "Almost yours" art stays modest — it's a working page */
.lb-checkout-art{max-width:340px;margin-bottom:0}
/* shop-door art rides INLINE beside the title (client 2026-09-05: a centered
   hero pushed products too far down) — text left, basket right */
.lb-store__headrow{display:flex;align-items:center;justify-content:space-between;gap:20px}
.lb-store__headtext{min-width:0}
.lb-shop-art{max-width:250px;flex:0 0 auto;margin:0}
@media(max-width:799px){
  .lb-store__headrow{display:block}
  .lb-shop-art{max-width:220px;margin:2px auto 8px}
}
/* filled cart: impulse row under the line items — artwork + newest products
   (replaced Woo's cross-sells block, which sat empty with none configured) */
.lb-cart-top-art{flex:0 0 100%;max-width:340px;margin:0 auto 14px}
.wp-block-woocommerce-cart h3.wp-block-heading{
  font-family:Georgia,serif;font-weight:400;color:var(--brown)}

/* browse chips live BELOW the products now (products first, nav second) */
.lb-store__browse{margin-top:38px;border-top:1px solid var(--rule);padding-top:20px}
.lb-store__browse .lb-linechips{border-bottom:0;padding-bottom:6px;margin-bottom:0;margin-top:12px}

/* Desktop: cart + checkout live in a tighter centered column, same cure as
   the homepage's 1160px pass — full-width 1064px checkout fields read loose
   and the art floats over the column gap. ~940px pulls it all together. */
@media(min-width:1024px){
  .woocommerce-checkout .site-main .page-header,
  .woocommerce-checkout .site-main .page-content,
  .woocommerce-cart .site-main .page-header,
  .woocommerce-cart .site-main .page-content{
    max-width:800px;margin-left:auto;margin-right:auto}
  /* in the 800px column the stock 35% sidebar starves the order summary
     ("Franken Balm" wrapped mid-word) — rebalance the two columns */
  .wc-block-checkout__sidebar{width:41%}
  .wc-block-checkout__main{padding-right:18px}
  /* words wrap at spaces, not mid-word ("Frankincen-se") */
  .wc-block-components-order-summary-item__description{word-break:normal;overflow-wrap:break-word}
}
.lb-404{text-align:center;padding:34px 0 60px}
.lb-404__ctas{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:24px}
.lb-404__ctas .lb-card__cta{padding:13px 34px}
.lb-empty-cart-btn .wp-block-button__link{background:none;border:1px solid var(--forest);
  color:var(--forest);border-radius:0;
  font:700 12.5px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;
  letter-spacing:.16em;text-transform:uppercase;padding:13px 34px;
  transition:background .15s ease,color .15s ease}
.lb-empty-cart-btn .wp-block-button__link:hover{background:var(--forest);color:var(--cream)}

/* ---------------------------------------------------------------------------
   Mobile type/audience chip row (client 2026-09-07): phones lost the desktop
   typebar (header actions row is >=800 only) — the same filters render as a
   horizontally-scrolling chip row under the store header instead.
   --------------------------------------------------------------------------- */
@media(max-width:799px){
  .lb-typebar--m{display:flex;gap:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;
    padding:14px 2px 4px;margin:0;scrollbar-width:none}
  .lb-typebar--m::-webkit-scrollbar{display:none}
  .lb-typebar--m a{flex:0 0 auto;font:700 11px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;
    letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);
    border:1px solid var(--rule-strong);padding:10px 13px;text-decoration:none;min-height:36px;
    display:flex;align-items:center}
  .lb-typebar--m a.is-on{color:var(--forest);border-color:var(--forest);background:var(--cream-deep)}
  .lb-typebar--m .lb-typebar__sep{flex:0 0 1px;height:24px;align-self:center;background:var(--rule-strong)}
}
@media(min-width:800px){
  .lb-typebar--m{display:none}
  .lb-store__desc--foot{display:none}
}
@media(max-width:799px){
  /* phones: art stays up top with the title + tagline; the DESCRIPTION moves
     below the products so the grid starts right after the chips (client
     2026-09-07, supersedes the art-at-the-bottom version from earlier today) */
  .lb-store__desc--head{display:none}
  .lb-store__desc--foot{margin:32px auto 6px;max-width:560px}
}

/* ---------------------------------------------------------------------------
   Deals — Build a box page + "What's inside" on curated boxes (2026-10-06)
   --------------------------------------------------------------------------- */
.lb-box-inside{margin:0 0 18px;padding:12px 16px;background:var(--cream-deep);border-left:3px solid var(--honey)}
.lb-box-inside h3{font:700 12px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:var(--honey-text);margin:0 0 8px}
.lb-box-inside ul{margin:0;padding:0;list-style:none}
.lb-box-inside li{padding:3px 0;color:var(--ink)}
.lb-box-inside a{color:var(--forest)}
.lb-byo .lb-byo__intro{font:400 19px/1.6 Georgia,serif;color:var(--ink-muted);margin:0 0 22px}
.lb-byo__note{margin:0 0 18px;padding:10px 14px;background:#F7E3D8;border-left:3px solid #A2532E}
.lb-byo__grid{list-style:none;margin:0 0 110px;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
@media(min-width:700px){.lb-byo__grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}}
.lb-byo__item{display:flex;flex-direction:column;gap:2px;padding:6px;background:#FFFDF8;border:1px solid var(--rule-strong);margin:0}
.lb-byo__item.is-on{border-color:var(--forest);box-shadow:0 0 0 1px var(--forest)}
.lb-byo__open{display:flex;flex-direction:column;gap:2px;text-align:left;background:none;border:0;padding:0;margin:0;cursor:pointer;color:inherit;font:inherit;border-radius:0}
.lb-byo__photo img{display:block;width:100%;height:auto;aspect-ratio:1/1;object-fit:cover}
.lb-byo__name{font:400 14px/1.2 Georgia,serif;color:var(--brown);margin-top:4px}
.lb-byo__price{font-weight:700;font-size:13px;color:var(--ink)}
.lb-byo__step{display:flex;align-items:center;gap:4px;margin-top:4px}
.lb-byo__step button{width:34px;height:34px;border:1px solid var(--forest);background:none;color:var(--forest);font:700 20px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;cursor:pointer;padding:0;border-radius:0}
.lb-byo__step button:disabled{opacity:.35;cursor:default}
.lb-byo__step input{width:100%;min-width:0;flex:1;height:34px;text-align:center;border:1px solid var(--rule-strong);background:#fff;font:700 16px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;padding:0;-moz-appearance:textfield}
.lb-byo__step input::-webkit-outer-spin-button,.lb-byo__step input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.lb-byo__bar{position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--cream);border-top:2px solid var(--forest);padding:10px 14px calc(10px + env(safe-area-inset-bottom));display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;justify-content:center}
.lb-byo__sum{display:flex;flex-wrap:wrap;gap:4px 18px;align-items:baseline}
.lb-byo__count{font-weight:700}
.lb-byo__money{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:14px;color:var(--ink-muted)}
.lb-byo__money b{color:var(--ink);font-size:17px}
.lb-byo__go{border:1px solid var(--forest);background:var(--forest);color:var(--cream);font:700 13px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;padding:15px 24px;cursor:pointer;border-radius:0}
.lb-byo__go:disabled{opacity:.5;cursor:default}

/* Build-a-box banner on shop pages */
.lb-byo-promo{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 14px;margin:14px 0 4px;padding:11px 16px;background:var(--cream-deep);border:1px solid var(--rule-strong);border-left:4px solid var(--honey);text-decoration:none;color:var(--ink)}
.lb-byo-promo:hover{border-color:var(--forest);border-left-color:var(--forest)}
.lb-byo-promo__t{font:400 19px/1.2 Georgia,serif;color:var(--brown)}
.lb-byo-promo__s{font:700 12px/1.3 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--forest)}

.lb-byo__curing{align-self:flex-start;font:700 10.5px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--honey-text);background:var(--cream-deep);padding:4px 7px;border:1px solid var(--rule-strong)}

.lb-byo__ready{margin:-8px 0 20px;font-size:14px;color:var(--ink-muted);font-style:italic}

/* Club login link beside Search / Basket */
.lb-account{font:700 11.5px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);text-decoration:none;padding:7px 8px;white-space:nowrap}
.lb-account:hover{color:var(--forest)}
.lb-club-welcome{margin:0 0 26px;padding:16px 20px;background:var(--cream-deep);border-left:4px solid var(--honey)}
.lb-club-welcome h2{font:400 24px/1.2 Georgia,serif;color:var(--brown);margin:0 0 6px}
.lb-club-welcome p{margin:0}

.lb-club-login{margin:14px 0 0;font-size:14px;color:var(--ink-muted)}
.lb-club-login a{color:var(--forest)}

/* friendly help text at the basket + checkout */
.lb-club-signup{margin:0 0 22px;padding:16px 18px;background:var(--cream-deep);border-left:4px solid var(--honey)}
.lb-club-signup h3{font:400 22px/1.2 Georgia,serif;color:var(--brown);margin:0 0 6px}
.lb-club-signup p{margin:0 0 10px}
details.lb-help{margin:8px 0 0;font-size:14px}
details.lb-help summary{cursor:pointer;color:var(--forest);font-weight:700;list-style:none;display:inline-flex;align-items:center;gap:8px}
details.lb-help summary::-webkit-details-marker{display:none}
details.lb-help summary::before{content:"?";display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:1px solid var(--forest);font:700 12px/1 'Helvetica Neue',Helvetica,Arial,sans-serif}
details.lb-help[open] summary::before{background:var(--forest);color:var(--cream)}
details.lb-help > div{margin:8px 0 0;padding:10px 12px;background:#FFFDF8;border:1px solid var(--rule-strong)}
details.lb-help > div p{margin:0 0 8px}
details.lb-help > div p:last-child{margin:0}
details.lb-help--tax{margin:12px 0 0}
details.lb-help--ship{margin:12px 0 0}
details.lb-help--ship + details.lb-help--tax{margin-top:8px}

/* ---------- the club product page: match the rest of the store ---------- */
.lb-club-product form.cart{display:block!important}
.lb-club-product form.cart .quantity,
.lb-club-product .product_meta{display:none!important}
.lb-club-product .subscrpt-buybox{margin:0 0 16px}
.lb-club-product .subscrpt-buybox__card{display:block;background:#FFFDF8!important;border:1px solid var(--rule-strong)!important;border-radius:0!important;padding:16px 18px!important;box-shadow:none!important;cursor:default}
.lb-club-product .subscrpt-buybox__card.is-selected{border-color:var(--forest)!important}
.lb-club-product .subscrpt-buybox__head{display:flex;align-items:center}
.lb-club-product .subscrpt-buybox__radio{display:none!important}
.lb-club-product .subscrpt-buybox__label{font:400 22px/1.2 Georgia,serif!important;color:var(--brown)!important}
.lb-club-product .subscrpt-buybox__note{display:block;margin:4px 0 12px;font-size:15px!important;color:var(--ink-muted)!important}
.lb-club-product .subscrpt-buybox__terms{display:flex;flex-wrap:wrap;gap:8px}
.lb-club-product button.subscrpt-buybox__term{border:1px solid var(--forest)!important;background:none!important;color:var(--forest)!important;border-radius:0!important;font:700 12px/1 'Helvetica Neue',Helvetica,Arial,sans-serif!important;letter-spacing:.1em;text-transform:uppercase;padding:11px 16px!important;cursor:pointer;box-shadow:none!important}
.lb-club-product button.subscrpt-buybox__term.is-active{background:var(--forest)!important;color:var(--cream)!important}
.lb-club-product .single_add_to_cart_button{display:inline-block;width:auto!important;height:auto!important;min-height:0!important;background:var(--forest)!important;color:var(--cream)!important;border:0!important;border-radius:0!important;font:700 13.5px/1 'Helvetica Neue',Helvetica,Arial,sans-serif!important;letter-spacing:.14em;text-transform:uppercase;padding:17px 32px!important}
.lb-club-product .single_add_to_cart_button:hover{background:var(--brown)!important}

/* a club membership is joined through the full checkout (account + password), never through a one-tap pay button */
.lb-club-product #wc-stripe-express-checkout-element,
.lb-club-product [id*="express-checkout"],
.lb-club-product .wc-stripe-express-checkout-element,
.lb-club-cart .wc-block-components-express-payment,
.lb-club-cart .wc-block-components-express-payment-continue-rule,
.lb-club-cart #wc-stripe-express-checkout-element{display:none!important}

/* sign-in page for members */
.lb-club-signin{max-width:620px;margin:0 0 22px;padding:16px 18px;background:var(--cream-deep);border-left:4px solid var(--honey)}
.lb-club-signin h2{font:400 26px/1.2 Georgia,serif;color:var(--brown);margin:0 0 6px}
.lb-club-signin p{margin:0}

/* club page: no reviews box for a membership; tidy the plan card's text alignment */
.lb-club-product .woocommerce-tabs,
.lb-club-product #reviews{display:none!important}
.lb-club-product .subscrpt-buybox__note,
.lb-club-product .subscrpt-buybox__terms{margin-left:0!important;padding-left:0!important}
.lb-club-product .subscrpt-buybox__head{margin:0!important;padding:0!important}

/* the store sells to the United States only: the country is set for the customer, so the box is not shown */
.wc-block-checkout .wc-block-components-country-input,
.wc-block-cart .wc-block-components-country-input{display:none!important}

/* ---------- the club member area (My account) ---------- */
.lb-membership__hello{font:400 20px/1.5 Georgia,serif;color:var(--ink-muted);margin:0 0 16px}
.lb-membership__card{background:#FFFDF8;border:1px solid var(--rule-strong);border-left:4px solid var(--honey);padding:18px 20px;margin:0 0 20px}
.lb-membership__status{display:inline-block;font:700 11px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;padding:6px 10px;background:var(--forest);color:var(--cream);margin:0 0 10px}
.lb-membership__status--pe_cancelled,.lb-membership__status--expired{background:var(--honey);color:var(--ink)}
.lb-membership__status--cancelled{background:var(--ink-muted)}
.lb-membership__big{font:400 26px/1.2 Georgia,serif;color:var(--brown);margin:0 0 8px}
.lb-membership__note{font-size:14px;color:var(--ink-muted);margin:6px 0}
.lb-membership__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin:0 0 20px}
.lb-membership__box{background:#FFFDF8;border:1px solid var(--rule-strong);padding:14px 16px}
.lb-membership__box h3,.lb-membership__boxes h3{font:700 11px/1.2 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--honey-text);margin:0 0 8px}
.lb-membership__box p{margin:0 0 8px}
.lb-membership__boxes{margin:0 0 20px}
.lb-membership__cancel{margin:26px 0 0;font-size:14px}
.lb-membership__cancel a{color:var(--ink-muted)}
.lb-membership__cancel span{color:var(--ink-muted);font-size:13px}
/* the plugin's "turn off auto renewal" means "bill me by invoice instead" — not something a club member wants */
.woocommerce-MyAccount-content a[href*="renew-off"],
.woocommerce-MyAccount-content a[href*="renew-on"]{display:none!important}

/* My account layout in the house style: tabs across the top, content below */
.woocommerce-account .entry-title,.woocommerce-account h1.page-title,.woocommerce-account .page-header h1{font:400 38px/1.1 Georgia,serif;color:var(--brown)}
.woocommerce-account .woocommerce-MyAccount-navigation{float:none!important;width:auto!important;margin:0 0 24px}
.woocommerce-account .woocommerce-MyAccount-navigation ul{list-style:none!important;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 22px;border-bottom:1px solid var(--rule-strong)}
.woocommerce-account .woocommerce-MyAccount-navigation li{margin:0;padding:0}
.woocommerce-account .woocommerce-MyAccount-navigation li a{display:block;padding:11px 2px;font:700 12px/1.2 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);text-decoration:none;border-bottom:3px solid transparent;margin-bottom:-1px}
.woocommerce-account .woocommerce-MyAccount-navigation li a:hover{color:var(--forest)}
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a{color:var(--forest);border-bottom-color:var(--honey)}
.woocommerce-account .woocommerce-MyAccount-content{float:none!important;width:auto!important}
.woocommerce-account .woocommerce-MyAccount-content h2,.woocommerce-account .woocommerce-MyAccount-content h3{font-family:Georgia,serif;font-weight:400;color:var(--brown)}

/* the edit screens behind the membership cards: boxed like the membership page */
.lb-membership__back{margin:0 0 16px;font-size:14px}
.woocommerce-account .woocommerce-Addresses{display:block}
.woocommerce-account .woocommerce-Addresses .woocommerce-Address{float:none!important;width:auto!important;max-width:520px;background:#FFFDF8;border:1px solid var(--rule-strong);padding:16px 18px;margin:0 0 16px}
.woocommerce-account .woocommerce-Address-title{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:0 0 10px}
.woocommerce-account .woocommerce-Address-title h2,.woocommerce-account .woocommerce-Address-title h3{font:400 22px/1.2 Georgia,serif;margin:0;color:var(--brown)}
.woocommerce-account .woocommerce-Address-title a.edit{float:none!important;font:700 12px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--forest);border:1px solid var(--forest);padding:8px 12px;text-decoration:none}
.woocommerce-account .woocommerce-Address address{font-style:normal;line-height:1.6}
.woocommerce-account form.woocommerce-EditAccountForm,.woocommerce-account .woocommerce-address-fields{max-width:620px;background:#FFFDF8;border:1px solid var(--rule-strong);padding:18px 20px}
.woocommerce-account .woocommerce-PaymentMethods,.woocommerce-account table.woocommerce-MyAccount-paymentMethods{max-width:620px}

/* ---------- the club's boxes: archive, one box, and the strip on the club page ---------- */
.lb-clubgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px;margin:6px 0 10px}
.lb-clubcard{display:flex;flex-direction:column;gap:5px;text-decoration:none;color:var(--ink);background:#FFFDF8;border:1px solid var(--rule-strong);padding:10px}
.lb-clubcard:hover{border-color:var(--forest)}
.lb-clubcard__img{display:block;aspect-ratio:1/1;background:var(--cream-deep);overflow:hidden}
.lb-clubcard__img img{display:block;width:100%;height:100%;object-fit:cover}
.lb-clubcard__blank{display:block;width:100%;height:100%}
.lb-clubcard__month{font:700 11px/1.3 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--honey-text);margin-top:4px}
.lb-clubcard__name{font:400 19px/1.25 Georgia,serif;color:var(--brown)}
.lb-clubcard__tag{font-size:13.5px;color:var(--ink-muted)}
.lb-clubbox__cover{margin:0 0 22px}
.lb-clubbox__cover img{display:block;width:100%;height:auto;max-width:640px}
.lb-clubbox h2{font:400 24px/1.25 Georgia,serif;color:var(--brown);margin:26px 0 8px}
.lb-clubbox ul{margin:0 0 10px;padding-left:22px}
.lb-clubbox__gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin:22px 0 0}
.lb-clubbox__gallery img{display:block;width:100%;height:auto}
.lb-clubstrip{margin:44px 0 10px;clear:both}
.lb-clubstrip h2{font:400 28px/1.2 Georgia,serif;color:var(--brown);margin:0 0 6px}
.lb-clubstrip__sub{color:var(--ink-muted);margin:0 0 16px}
.lb-club-member form.cart,.lb-club-member .single_add_to_cart_button{display:none!important}
.lb-clubmember{background:#FFFDF8;border:1px solid var(--forest);padding:16px 18px;margin:14px 0}
.lb-clubmember h3{margin:0 0 6px;font:400 22px/1.2 Georgia,serif;color:var(--brown)}
.lb-clubmember__gift{margin-bottom:0;font-size:14.5px}

/* ---------- give the club: the gift page ---------- */
.lb-giftform{max-width:560px;margin:18px 0 10px}
.lb-giftlengths{border:0;padding:0;margin:0 0 16px;display:grid;gap:10px}
.lb-giftlengths legend{font:700 12px/1.3 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--honey-text);padding:0;margin:0 0 8px}
.lb-giftopt{display:grid;grid-template-columns:auto 1fr auto;column-gap:12px;align-items:center;background:#FFFDF8;border:1px solid var(--rule-strong);padding:12px 14px;cursor:pointer}
.lb-giftopt:has(input:checked){border-color:var(--forest);box-shadow:0 0 0 1px var(--forest)}
.lb-giftopt input{grid-row:1 / span 2}
.lb-giftopt__n{font:400 19px/1.2 Georgia,serif;color:var(--brown)}
.lb-giftopt__p{font:700 17px/1.2 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--forest)}
.lb-giftopt__s{grid-column:2 / span 2;font-size:13.5px;color:var(--ink-muted)}
.lb-giftform textarea{width:100%;box-sizing:border-box}
.lb-giftform .lb-hint{font-size:13.5px;color:var(--ink-muted)}

/* ---------- the club's sales page (/club/) ---------- */
.lb-clubsales section{margin:0 0 56px}
.lb-clubsales h2{font:400 30px/1.2 Georgia,serif;color:var(--brown);margin:0 0 14px}
.lb-clubhero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:36px;align-items:center}
.lb-clubhero__img img{display:block;width:100%;height:auto}
.lb-clubhero h1{font:400 40px/1.15 Georgia,serif;color:var(--brown);margin:6px 0 14px}
.lb-clubhero__lede{font-size:18px;line-height:1.55}
.lb-clubhero__price{font-size:18px;margin:14px 0}
.lb-clubhero__price strong{font:700 28px/1 Georgia,serif;color:var(--forest)}
.lb-clubhero__cta{display:flex;flex-wrap:wrap;gap:12px}
.lb-btn--ghost{background:transparent;color:var(--forest);border:2px solid var(--forest)}
.lb-clubhero__small{font-size:14px;color:var(--ink-muted)}
.lb-clubsteps ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.lb-clubsteps li{background:#FFFDF8;border:1px solid var(--rule-strong);padding:16px 18px;display:flex;flex-direction:column;gap:6px}
.lb-clubsteps__n{width:30px;height:30px;border-radius:50%;background:var(--forest);color:#fff;display:flex;align-items:center;justify-content:center;font:700 14px/1 'Helvetica Neue',Arial,sans-serif}
.lb-clubsteps b{font:400 20px/1.2 Georgia,serif;color:var(--brown)}
.lb-clubfeature{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px;align-items:center;background:#FFFDF8;border:1px solid var(--rule-strong);padding:22px}
.lb-clubfeature__img img{display:block;width:100%;height:auto}
.lb-clubfeature h2{margin:4px 0 8px}
.lb-clubfeature__tag{font-size:18px;color:var(--ink-muted)}
.lb-clubfeature__left{font-weight:700;color:var(--clay)}
.lb-clubways__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;align-items:start}
.lb-clubway{background:#FFFDF8;border:1px solid var(--rule-strong);padding:22px}
.lb-clubway h3{font:400 24px/1.2 Georgia,serif;color:var(--brown);margin:0 0 8px}
.lb-clubway__price{font:700 30px/1.1 Georgia,serif;color:var(--forest);margin:0 0 10px}
.lb-clubway__price small{font:400 15px/1 'Helvetica Neue',Arial,sans-serif;color:var(--ink-muted)}
.lb-clubway ul{padding-left:20px;margin:0 0 16px}
.lb-giftfor{border:0;padding:0;margin:0 0 14px;display:flex;flex-wrap:wrap;gap:8px 20px}
.lb-giftfor legend{font:700 12px/1.3 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--honey-text);padding:0;margin:0 0 8px;width:100%}
.lb-giftfirst{font-size:14.5px;color:var(--ink-muted)}
.lb-clubfaq details{border-top:1px solid var(--rule-strong);padding:12px 0}
.lb-clubfaq summary{cursor:pointer;font:400 19px/1.3 Georgia,serif;color:var(--brown)}
.lb-clubfaq details p{margin:8px 0 0}
@media (max-width:760px){
.lb-clubhero,.lb-clubfeature,.lb-clubways__grid,.lb-clubsteps ol{grid-template-columns:minmax(0,1fr)}
.lb-clubhero h1{font-size:32px}
}

/* ---- homepage shelf v2 (client direction 2026-10-10) ----
   Row 1 = three bars (dealt at random from the ticked pool). Row 2 = Lizzy + the Essential Box + the Soap Club, always. */
.lb-shelf__grid--v2 [hidden]{display:none!important}
.lb-shelf__grid--v2{display:grid;grid-template-columns:1fr;gap:28px;align-items:start}
.lb-shelf__grid--v2 .lb-card.is-lead .lb-card__row h3{font-size:inherit}
@media(min-width:800px){
  .lb-home .lb-shelf__grid--v2{grid-template-columns:repeat(3,1fr);gap:22px;align-items:start}
  .lb-home .lb-shelf__grid--v2 > .lb-card[data-lb-pool]{grid-row:1}
  .lb-home .lb-shelf__grid--v2 > .lb-shelf__art,
  .lb-home .lb-shelf__grid--v2 > .lb-shelf__box{grid-row:2}
  .lb-home .lb-shelf__grid--v2 > .lb-shelf__art{grid-column:1;display:flex;align-items:center;justify-content:center;padding:10px 0 0}
}

/* ---- Lizzy notes: Lizzy + a speech bubble above her head, dropped into gaps (edited in the workshop) ---- */
.lb-lizzy-note{display:flex;flex-direction:column;align-items:center;width:100%;max-width:300px;margin:0 auto}
.lb-lizzy-note [hidden]{display:none!important}
.lb-lizzy-say{position:relative;display:block;margin:0 0 18px;width:100%;box-sizing:border-box;text-align:center;color:var(--ink);
  background:#FFFDF8;border:1.5px solid var(--rule-strong);border-radius:16px;padding:14px 16px 12px}
.lb-lizzy-say::before{content:"";position:absolute;left:58%;bottom:-9px;width:14px;height:14px;margin-left:-7px;background:#FFFDF8;
  border-right:1.5px solid var(--rule-strong);border-bottom:1.5px solid var(--rule-strong);transform:rotate(45deg)}
.lb-lizzy-say__t{display:block;font:italic 400 16px/1.35 Georgia,'Times New Roman',serif;color:var(--brown)}
.lb-lizzy-say__t a{color:var(--forest);text-decoration:underline;position:relative;z-index:2}
.lb-lizzy-say__b{display:inline-block;margin-top:9px;font:700 11.5px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--forest);
  text-decoration:none;border-bottom:2px solid var(--honey);padding-bottom:3px}
.lb-lizzy-say__b::after{content:"";position:absolute;inset:0;border-radius:16px} /* the whole bubble is the click target */
.lb-lizzy-say:hover .lb-lizzy-say__b{color:var(--honey-text)}
.lb-lizzy-note .lb-lizzy-note__img{width:165px;max-width:70%;height:auto;filter:drop-shadow(0 3px 6px rgba(38,52,38,.15))}
/* homepage shelf: the note fills the cell under the first bar */
.lb-shelf__grid--v2 > .lb-shelf__art{display:flex;flex-direction:column;align-items:center;padding:6px 0 0}
@media(max-width:799px){
  .lb-shelf__grid--v2 > .lb-shelf__art{display:flex!important}
  .lb-lizzy-note .lb-lizzy-note__img{width:120px}
}
/* journal page: the note is the grid's last cell (fills the gap in the last row) */
.lb-journal__note{align-self:start}
.lb-journal__note .lb-lizzy-note{max-width:250px}
@media(min-width:800px){.lb-journal__note{grid-column:3}}
/* homepage journal: out of the grid flow, bottom-right, so it never pushes the cards */
.lb-journal__bee--home .lb-lizzy-note{max-width:188px;margin:0}
.lb-journal__bee--home .lb-lizzy-say{padding:11px 12px 10px}
.lb-journal__bee--home .lb-lizzy-say__t{font-size:14px}
@media(min-width:800px){
  .lb-journal__bee--home{position:absolute;right:26px;bottom:42px;margin-top:0}
  .lb-journal__bee--home .lb-lizzy-note .lb-lizzy-note__img{height:auto;width:110px}
}
/* shop / collection grids: one grid cell where the last row has a gap */
ul.products > li.lb-lizzy-li{display:none;list-style:none;align-self:start}
@media(min-width:800px){ul.products > li.lb-lizzy-li--gap3{display:block}}
@media(max-width:799px){ul.products > li.lb-lizzy-li--gap2{display:block}}
.lb-lizzy-li .lb-lizzy-note{max-width:100%}
/* empty basket */
.wp-block-woocommerce-empty-cart-block .lb-lizzy-note{margin:28px auto 8px}

/* ---- product page v2 (client direction 2026-10-10) ----
   Beside the photos: name, tagline, short intro, price, add to basket. Below, full width: story, quick facts, ingredients. */
body.single-product div.product .summary .woocommerce-product-details__short-description{font-size:15px;letter-spacing:.06em;color:var(--honey-text);margin:2px 0 12px}
.lb-prod-intro{font:400 17px/1.6 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink);margin:0 0 6px}
.lb-prod-intro p{margin:0 0 10px}
.lb-prod-intro p:last-child{margin-bottom:0}
body.single-product div.product .lb-prod-below{grid-column:1/-1;border-top:1px solid var(--rule);padding-top:26px;margin-top:6px}
.lb-prod-below .lb-prod-desc{border:0;padding:0;margin:0 0 20px;max-width:none;font-size:16.5px}
.lb-prod-facts{list-style:none;margin:0 0 24px;padding:18px 22px;background:var(--cream-deep);border-left:4px solid var(--honey)}
.lb-prod-facts li{position:relative;margin:0 0 8px;padding-left:20px;font:400 16px/1.55 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink)}
.lb-prod-facts li:last-child{margin-bottom:0}
.lb-prod-facts li::before{content:"";position:absolute;left:0;top:.62em;width:7px;height:7px;border-radius:50%;background:var(--honey)}
.lb-prod-facts strong{color:var(--brown)}
.lb-prod-below .lb-prod-ingredients{border:0;padding:0;margin:0 0 10px}
.lb-prod-below .lb-prod-ingredients h2{font-size:12px}
.lb-prod-below .lb-prod-ingredients p{font-size:15px}
/* add to basket looks like the club page's button on every product */
body.single-product div.product form.cart{display:flex!important;flex-wrap:wrap;gap:12px;align-items:stretch;margin:18px 0 18px}
body.single-product div.product .single_add_to_cart_button{display:inline-block;width:auto!important;height:auto!important;min-height:0!important;background:var(--forest)!important;color:var(--cream)!important;border:0!important;border-radius:0!important;font:700 13.5px/1 'Helvetica Neue',Helvetica,Arial,sans-serif!important;letter-spacing:.14em;text-transform:uppercase;padding:17px 32px!important}
body.single-product div.product .single_add_to_cart_button:hover{background:var(--brown)!important}
/* no one-tap pay buttons on product pages (Google Pay / Link): buyers go through the basket, like the club page */
body.single-product #wc-stripe-express-checkout-element,
body.single-product [id*="express-checkout"],
body.single-product .wc-stripe-express-checkout-element,
body.single-product .wc-stripe-payment-request-wrapper,
body.single-product #wc-stripe-payment-request-wrapper,
body.single-product #wc-stripe-payment-request-button-separator{display:none!important}
/* Type / For / Categories now sits at the very bottom, full width */
body.single-product div.product > .product_meta{grid-column:1/-1;margin-top:8px}
/* tighter run from the buy button into the story (client 2026-10-10) */
body.single-product div.product{row-gap:14px}
body.single-product div.product .lb-prod-below{margin-top:0;padding-top:18px}
body.single-product div.product .summary form.cart{margin-bottom:6px}

/* ---- "From the shelf" at the end of a journal entry (journal-shelf.php) ---- */
.lb-postshelf{max-width:720px;margin:44px auto 0;border-top:1px solid var(--rule-strong);padding-top:30px}
.lb-postshelf h2{font:400 28px/1.1 Georgia,serif;color:var(--brown);margin:0 0 18px;text-align:center}
.lb-postshelf .lb-lizzy-note{margin:0 auto 22px}
.lb-postshelf [hidden]{display:none!important}
.lb-postshelf__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;align-items:start}
.lb-postshelf .lb-card__row h3{font-size:19px}
.lb-postshelf .lb-card .lb-note{font-size:13.5px}
@media(max-width:700px){.lb-postshelf__grid{grid-template-columns:1fr;gap:26px}}

/* small product card under the homepage journal's lead story (journal-shelf.php) */
.lb-minicards [hidden]{display:none!important}
.lb-minicard{display:flex;gap:14px;align-items:center;margin-top:26px;padding:12px;background:#FFFDF8;border:1px solid var(--rule-strong)}
.lb-minicard__img{flex:0 0 92px;display:block;line-height:0}
.lb-minicard__img img{width:92px;height:92px;object-fit:cover;display:block}
.lb-minicard__txt{display:flex;flex-direction:column;gap:3px;min-width:0}
.lb-minicard__eye{font:700 10px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:var(--honey-text)}
.lb-minicard__name{font:400 19px/1.15 Georgia,serif;color:var(--brown);text-decoration:none}
.lb-minicard__name:hover{color:var(--forest)}
.lb-minicard__price{font:400 14px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink)}
.lb-minicard__cta{align-self:flex-start;margin-top:5px;font:700 11px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--forest);text-decoration:none;border-bottom:2px solid var(--honey);padding-bottom:3px}
.lb-minicard__cta:hover{color:var(--honey-text)}
/* the old hand-placed Lizzy ignored clicks (pointer-events:none on .lb-journal__bee) so she never blocked a card;
   her speech bubble has a link, so the note itself must take clicks */
.lb-journal__bee .lb-lizzy-note,.lb-journal__bee .lb-lizzy-say,.lb-journal__bee .lb-lizzy-say a{pointer-events:auto}
/* a line's description can run to several paragraphs */
.lb-store__desc p{margin:0 0 14px}
.lb-store__desc p:last-child{margin-bottom:0}
/* paragraphs after the first run full width under the picture; phones read the whole description at the bottom instead */
.lb-store__desc--rest{margin:8px 0 0;max-width:none}
@media(max-width:799px){.lb-store__desc--rest{display:none}}

/* collection description on PHONES: shown under the picture, BEFORE the products (client 2026-10-10).
   First paragraph visible, the rest behind "Read more". Desktop keeps the beside/under-the-picture layout. */
.lb-store__desc--foot{display:none}
.lb-store__desc--m{display:none}
@media(max-width:799px){
  .lb-store__desc--m{display:block;margin:6px auto 14px;max-width:560px}
  .lb-store__more{margin-top:12px}
  .lb-store__more summary{cursor:pointer;list-style:none;display:inline-block;font:700 12px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--forest);border-bottom:2px solid var(--honey);padding-bottom:4px}
  .lb-store__more summary::-webkit-details-marker{display:none}
  .lb-store__more[open] summary{margin-bottom:12px}
  .lb-store__more[open] summary::after{content:" \2013 less"}
}
/* the Build a box banner now closes a collection/shop page, after the products */
main.lb-store > .lb-byo-promo{margin:34px 0 8px}

/* floating "Scroll for more" cue on phones (collection pages + shop) */
.lb-scrollhint{display:none}
@media(max-width:799px){
  .lb-scrollhint{display:inline-flex;align-items:center;gap:8px;position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:60;
    background:var(--forest);color:var(--cream);border:0;border-radius:999px;padding:12px 20px;cursor:pointer;
    font:700 12px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;
    box-shadow:0 4px 14px rgba(38,52,38,.3);transition:opacity .25s ease,transform .25s ease}
  .lb-scrollhint[hidden]{display:none}
  .lb-scrollhint span{display:inline-block;animation:lb-hintbob 1.4s ease-in-out infinite}
  .lb-scrollhint.is-gone{opacity:0;transform:translateX(-50%) translateY(10px);pointer-events:none}
}
@keyframes lb-hintbob{0%,100%{transform:translateY(0)}50%{transform:translateY(4px)}}
@media(prefers-reduced-motion:reduce){.lb-scrollhint span{animation:none}}
/* phone "Keep browsing" links close collection pages and the shop */
.lb-keepbrowsing{display:none}
@media(max-width:799px){
  .lb-keepbrowsing{display:block;margin:26px 0 10px}
  .lb-keepbrowsing__t{font:700 11px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--honey-text);margin:0 0 10px;text-align:center}
}

/* Build-a-box: details popup */
.lb-byo__dlg{max-width:440px;width:calc(100% - 28px);max-height:88vh;overflow:auto;padding:18px;border:1px solid var(--forest);background:#FFFDF8;color:var(--ink);border-radius:0}
.lb-byo__dlg::backdrop{background:rgba(40,30,20,.55)}
.lb-byo__x{position:sticky;top:10px;z-index:5;display:block;margin:0 -4px -44px auto;width:44px;height:44px;padding:0;border:2px solid var(--forest);border-radius:50%;background:var(--cream);color:var(--forest);font:700 28px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.35)}
.lb-byo__slider{position:relative}
.lb-byo__track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.lb-byo__track::-webkit-scrollbar{display:none}
.lb-byo__track img{flex:0 0 100%;width:100%;aspect-ratio:1/1;max-height:340px;object-fit:cover;scroll-snap-align:center;display:block}
.lb-byo__prev,.lb-byo__next{position:absolute;top:calc(50% - 20px);width:38px;height:40px;border:0;background:rgba(255,253,248,.85);color:var(--forest);font-size:30px;line-height:1;cursor:pointer;padding:0;border-radius:0}
.lb-byo__prev{left:0}.lb-byo__next{right:0}
.lb-byo__dots{position:absolute;left:0;right:0;bottom:8px;display:flex;justify-content:center;gap:6px}
.lb-byo__dots span{width:8px;height:8px;border-radius:50%;background:rgba(255,253,248,.7);border:1px solid var(--forest)}
.lb-byo__dots span.on{background:var(--forest)}
.lb-byo__slider.is-one .lb-byo__prev,.lb-byo__slider.is-one .lb-byo__next,.lb-byo__slider.is-one .lb-byo__dots{display:none}
.lb-byo__dlg-name{font:400 24px/1.2 Georgia,serif;color:var(--brown);margin:12px 0 2px}
.lb-byo__dlg-price{font-weight:700;margin:0 0 10px}
.lb-byo__dlg-text{font-size:15px;line-height:1.6;color:var(--ink-muted)}
.lb-byo__dlg-in{margin:6px 0 0;text-align:center;font-weight:700;color:var(--forest);min-height:1.2em}
.lb-byo__dlg-add{width:100%;margin-top:10px}

/* Build-a-box: hover/focus colours (the parent theme paints every button pink) */
.lb-byo__step button:hover:not(:disabled),.lb-byo__step button:focus-visible:not(:disabled){background:var(--forest);color:var(--cream)}
.lb-byo__step button:disabled:hover{background:none;color:var(--forest)}
.lb-byo__open:hover,.lb-byo__open:focus{background:none;color:inherit}
.lb-byo__open:hover .lb-byo__name{color:var(--forest);text-decoration:underline}
.lb-byo__x:hover,.lb-byo__x:focus{background:var(--forest);color:var(--cream)}
.lb-byo__prev:hover,.lb-byo__next:hover,.lb-byo__prev:focus,.lb-byo__next:focus{background:var(--cream);color:var(--brown)}
.lb-byo__go:hover:not(:disabled),.lb-byo__go:focus-visible:not(:disabled){background:var(--brown);border-color:var(--brown);color:var(--cream)}
.lb-byo__go:disabled:hover{background:var(--forest);color:var(--cream)}
.lb-byo__item{transition:background .15s,border-color .15s,box-shadow .15s}
.lb-byo__item:hover,.lb-byo__item:focus-within{background:var(--cream-deep);border-color:var(--forest);box-shadow:0 2px 8px rgba(45,80,22,.18)}
.lb-byo__item.is-on:hover{background:var(--cream-deep)}
.lb-byo__open:hover .lb-byo__name{text-decoration:underline}
.lb-byo__more{position:sticky;bottom:0;display:block;margin:10px auto 0;padding:9px 16px;border:1px solid var(--forest);background:var(--cream);color:var(--forest);font:700 12px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;border-radius:0;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.lb-byo__more[hidden]{display:none}
.lb-byo__more:hover{background:var(--forest);color:var(--cream)}

/* Club page: "Peek at the boxes" fills the space under the monthly card */
.lb-clubways__grid{grid-template-rows:auto 1fr}
.lb-clubways__grid > .lb-clubway:first-child{grid-column:1;grid-row:1}
.lb-clubways__grid > .lb-clubway:nth-child(2){grid-column:2;grid-row:1 / span 2}
.lb-clubways__grid > .lb-clubstrip{grid-column:1;grid-row:2;margin:0}
.lb-clubways__grid .lb-clubstrip h3{font:400 22px/1.2 Georgia,serif;color:var(--brown);margin:0 0 4px}
.lb-clubways__grid .lb-clubstrip__sub{font-size:14.5px;margin:0 0 12px}
.lb-clubways__grid .lb-clubgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.lb-clubways__grid .lb-clubcard{padding:8px}
.lb-clubways__grid .lb-clubcard__name{font-size:16px}
.lb-clubways__grid .lb-clubcard__tag{display:none}
@media (max-width:760px){
.lb-clubways__grid{grid-template-rows:none}
.lb-clubways__grid > .lb-clubway:first-child,.lb-clubways__grid > .lb-clubway:nth-child(2),.lb-clubways__grid > .lb-clubstrip{grid-column:auto;grid-row:auto}
.lb-clubways__grid > .lb-clubstrip{margin-top:10px}
}

/* Items sold with choices: the picker on the product page */
body.single-product div.product form.variations_form .variations{width:100%;margin:0 0 14px;border:0}
body.single-product div.product form.variations_form .variations th,body.single-product div.product form.variations_form .variations td{display:block;padding:0;border:0;text-align:left}
body.single-product div.product form.variations_form .variations label{display:block;margin:0 0 6px;font:700 12px/1.3 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--honey-text)}
body.single-product div.product form.variations_form .variations select{width:100%;max-width:420px;padding:13px 12px;border:1px solid var(--rule-strong);background:#FFFDF8;color:var(--ink);font:400 16px/1.3 Georgia,serif;border-radius:0}
body.single-product div.product form.variations_form .reset_variations{display:none!important}
body.single-product div.product form.variations_form .woocommerce-variation-price{margin:0 0 12px;font:700 22px/1.2 Georgia,serif;color:var(--forest)}
body.single-product div.product form.variations_form .woocommerce-variation-availability{margin:0 0 10px}
body.single-product div.product form.variations_form .single_add_to_cart_button.disabled{opacity:.45;cursor:default}

/* Box pages: "What's inside" rows open a popup (same look as the build-a-box popup) */
.lb-box-inside ul{margin:0}
.lb-box-inside li{padding:0;margin:0 0 6px}
.lb-box-inside li.lb-inside__plain{padding:6px 2px}
.lb-inside__open{display:flex;align-items:center;gap:12px;width:100%;margin:0;padding:6px 12px 6px 6px;text-align:left;background:#FFFDF8;border:1px solid var(--rule-strong);border-radius:0;color:var(--ink);font:inherit;cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s}
.lb-inside__open:hover,.lb-inside__open:focus-visible{background:#DDE8D3;border-color:#7A9E7A;color:var(--ink);box-shadow:0 3px 10px rgba(45,80,22,.22)}
.lb-inside__thumb{flex:0 0 46px}
.lb-inside__thumb img{display:block;width:46px;height:46px;object-fit:cover}
.lb-inside__label{flex:1;font:400 17px/1.25 Georgia,serif;color:var(--brown)}
.lb-inside__qty{font:700 14px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--forest)}
.lb-inside__open:hover .lb-inside__name,.lb-inside__open:focus-visible .lb-inside__name{color:var(--forest)}
.lb-inside__thumb{transition:transform .18s,box-shadow .18s}
.lb-inside__open:hover .lb-inside__thumb,.lb-inside__open:focus-visible .lb-inside__thumb{transform:scale(1.12);box-shadow:0 2px 6px rgba(0,0,0,.22)}
.lb-inside__view{display:none;font:700 11px/1 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;background:var(--forest);color:var(--cream);padding:7px 11px}
.lb-inside__open:hover .lb-inside__arrow,.lb-inside__open:focus-visible .lb-inside__arrow{display:none}
.lb-inside__open:hover .lb-inside__view,.lb-inside__open:focus-visible .lb-inside__view{display:inline-block}
.lb-inside__go{font:400 26px/1 Georgia,serif;color:var(--forest);transition:transform .15s}

a.lb-inside__more{display:block;text-align:center;text-decoration:none;box-sizing:border-box}
a.lb-inside__more:hover{color:var(--cream)}

/* a button you have just clicked (focused, mouse moved away) goes back to its resting look, not a coloured fill */
.lb-inside__open:focus:not(:hover):not(:focus-visible){background:#FFFDF8;border-color:var(--rule-strong);color:var(--ink);box-shadow:none}
.lb-byo__prev:focus:not(:hover):not(:focus-visible),.lb-byo__next:focus:not(:hover):not(:focus-visible){background:rgba(255,253,248,.85);color:var(--forest)}
.lb-byo__x:focus:not(:hover):not(:focus-visible){background:var(--cream);color:var(--forest)}
.lb-byo__step button:focus:not(:hover):not(:focus-visible){background:none;color:var(--forest)}
.lb-byo__more:focus:not(:hover):not(:focus-visible){background:var(--cream);color:var(--forest)}
.lb-byo__go:focus:not(:hover):not(:focus-visible){background:var(--forest);color:var(--cream)}
.lb-byo__open:focus:not(:hover):not(:focus-visible){background:none;color:inherit}

/* smaller: the "What's inside" rows and the popup buttons were oversized */
.lb-inside__open{gap:10px;padding:4px 10px 4px 4px}
.lb-inside__thumb{flex:0 0 36px}
.lb-inside__thumb img{width:36px;height:36px}
.lb-inside__label{font-size:15px}
.lb-inside__go{font-size:22px}
.lb-box-inside li{margin:0 0 5px}
.lb-byo__dlg .lb-byo__go{display:block;width:auto;margin:12px auto 0;padding:11px 24px!important;font-size:12px!important}





/* Cart list, compact (Jon, 2026-10-11): name, quantity, remove and the line total only.
   Photo, unit price and description are hidden; details open in a popup from the name (cart-compact.php). */
.wc-block-cart-items .wc-block-cart-item__image,
.wc-block-cart-items .wc-block-cart-items__header-image,
table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__prices{display:none!important}
.wc-block-cart-items .wc-block-cart-items__header-product{font-size:0;padding-left:0}
.wc-block-cart-items .wc-block-cart-items__header-product::before{content:"Product";font:700 12px/1.2 'Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase}
.wc-block-cart-items .wc-block-cart-items__row td{padding-top:10px;padding-bottom:10px}
.wc-block-cart-items .wc-block-cart-item__product{padding-left:0}
.wc-block-cart-items .wc-block-components-product-name{cursor:pointer;font:700 15px/1.3 'Helvetica Neue',Helvetica,Arial,sans-serif}
.wc-block-cart-items .wc-block-cart-item__quantity{margin-top:6px}
.wc-block-cart-items .wc-block-cart-items__row{transition:background .15s}
.wc-block-cart-items .wc-block-cart-items__row:hover{background:#EEF3E8}
.wc-block-cart-items .wc-block-cart-items__row:hover .wc-block-components-product-name{color:var(--forest);text-decoration:underline}

/* one line per item: name, then quantity and remove, then (in the next cell) the line total */
.wp-block-woocommerce-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 14px}
.wp-block-woocommerce-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-components-product-name{flex:1 1 150px;margin:0}
.wp-block-woocommerce-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__quantity{flex:0 0 auto;margin:0}
.wp-block-woocommerce-cart table.wc-block-cart-items .wc-block-cart-items__row td{padding-top:8px;padding-bottom:8px;vertical-align:middle}



/* smaller quantity boxes, all the same size and in the same column */
.wp-block-woocommerce-cart table.wc-block-cart-items .wc-block-cart-item__quantity{display:flex;align-items:center;gap:8px}
.wp-block-woocommerce-cart table.wc-block-cart-items .wc-block-components-quantity-selector{width:82px;min-width:82px;height:28px;margin:0}
.wp-block-woocommerce-cart table.wc-block-cart-items .wc-block-components-quantity-selector__button{width:26px;min-width:26px;height:26px;padding:0;font-size:15px;line-height:1}
.wp-block-woocommerce-cart table.wc-block-cart-items .wc-block-components-quantity-selector__input{width:28px;min-width:0;height:26px;padding:0;font-size:13px}
.wp-block-woocommerce-cart table.wc-block-cart-items .wc-block-cart-item__remove-link{width:22px;height:22px;padding:0;margin:0}
.wp-block-woocommerce-cart table.wc-block-cart-items .wc-block-cart-item__remove-link svg{width:18px;height:18px}

/* "About sales tax" only when sales tax is actually being charged (the totals list a tax line) */
.wp-block-woocommerce-cart:not(:has(.wc-block-components-totals-taxes)) .lb-help--tax,
.wp-block-woocommerce-checkout:not(:has(.wc-block-components-totals-taxes)) .lb-help--tax{display:none}

/* Checkout "Order summary", compact (Jon, 2026-10-11): one line per item: "1 ×  Name .......... $10.00".
   No photo, unit price, or description / "Includes: ..." notes; the cart popup has the details. */
.wp-block-woocommerce-checkout .wc-block-components-order-summary .wc-block-components-order-summary-item .wc-block-cart-item__prices,
.wp-block-woocommerce-checkout .wc-block-components-order-summary .wc-block-components-order-summary-item__image img{display:none!important}
.wp-block-woocommerce-checkout .wc-block-components-order-summary .wc-block-components-order-summary-item{display:flex;align-items:baseline;gap:8px;padding:6px 0!important}
.wp-block-woocommerce-checkout .wc-block-components-order-summary .wc-block-components-order-summary-item__image{flex:0 0 auto;width:auto!important;margin:0!important;padding:0!important;position:static}
.wp-block-woocommerce-checkout .wc-block-components-order-summary .wc-block-components-order-summary-item__image .wc-block-components-order-summary-item__quantity{position:static!important;display:inline;min-width:0;width:auto;height:auto;margin:0;padding:0;border:0;border-radius:0;background:transparent!important;box-shadow:none;color:var(--forest)!important;font:700 13.5px/1.3 'Helvetica Neue',Helvetica,Arial,sans-serif;transform:none}
.wp-block-woocommerce-checkout .wc-block-components-order-summary .wc-block-components-order-summary-item__image .wc-block-components-order-summary-item__quantity::after{content:" \00d7"}
.wp-block-woocommerce-checkout .wc-block-components-order-summary .wc-block-components-order-summary-item__description{flex:1 1 auto;min-width:0;padding:0!important}
.wp-block-woocommerce-checkout .wc-block-components-order-summary .wc-block-components-order-summary-item__description .wc-block-components-product-name{margin:0;font:700 13.5px/1.3 'Helvetica Neue',Helvetica,Arial,sans-serif}
.wp-block-woocommerce-checkout .wc-block-components-order-summary .wc-block-components-order-summary-item__total-price{flex:0 0 auto;margin:0;padding:0!important;text-align:right;font-size:13.5px}



.wp-block-woocommerce-checkout .wc-block-components-order-summary .wc-block-components-order-summary-item__image .wc-block-components-order-summary-item__quantity > span:not(.screen-reader-text){color:var(--forest)!important;font:inherit}

/* Checkout, desktop: express buttons under the order summary (positioned by checkout-express.php) */
.wc-block-checkout.lb-express-side{position:relative}
.wc-block-checkout.lb-express-side .wc-block-components-express-payment--checkout{position:absolute;margin:0;box-sizing:border-box}
.wc-block-checkout.lb-express-side .wc-block-components-express-payment-continue-rule{display:none}
/* the order summary column no longer sticks while scrolling on desktop: the express buttons below it are placed, not stuck, so the two would drift apart */
.wc-block-checkout.lb-express-side .wc-block-checkout__sidebar{position:static!important}

/* Checkout header (Jon, 2026-10-11): "Checkout" on the left, the picture FILLING the space between the title
   and the order summary, and the order summary starting level with the top of that row, so the form comes up
   to meet the bottom of the picture. Phones keep the stacked header (this is only for the side-by-side layout). */
@media(min-width:700px){
body.woocommerce-checkout:not(.woocommerce-order-received) .site-main{display:grid;grid-template-columns:auto minmax(0,1fr) 44%;grid-template-rows:170px auto;column-gap:16px;row-gap:0;align-items:center;max-width:800px;margin-left:auto;margin-right:auto;padding-top:10px;padding-bottom:22px}
body.woocommerce-checkout:not(.woocommerce-order-received) .site-main .page-header{grid-column:1;grid-row:1;max-width:none;margin:0}
body.woocommerce-checkout:not(.woocommerce-order-received) .site-main .page-header .entry-title{margin:0}
body.woocommerce-checkout:not(.woocommerce-order-received) .site-main .page-content{display:contents}
body.woocommerce-checkout:not(.woocommerce-order-received) .site-main .page-content > figure{grid-column:2;grid-row:1;width:100%;max-width:none;height:170px;margin:0}
body.woocommerce-checkout:not(.woocommerce-order-received) .site-main .page-content > figure img{display:block;width:100%;height:100%;object-fit:cover}
body.woocommerce-checkout:not(.woocommerce-order-received) .site-main .page-content > .wc-block-checkout{grid-column:1 / -1;grid-row:2;margin-top:0}
}


/* the quantity and delete controls stay on the name's line at every width (WooCommerce's tablet layout drops them to a second row) */
.wp-block-woocommerce-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__quantity{grid-column:2!important;grid-row:1!important;justify-self:end}

/* ===========================================================================================
   Cart + checkout layout, driven by the width of the page area (CSS container queries).
   WooCommerce 11.2 stopped adding its "is-large / is-medium" size classes and only switches to its
   side-by-side layout at 920px; this page area is never wider than ~704px, so the layouts below use
   their own 680px breakpoint and work the same on every WooCommerce version. (Jon, 2026-10-11)
   =========================================================================================== */
.wp-block-woocommerce-cart,.wp-block-woocommerce-checkout{container-type:inline-size}

/* ---- cart, wide (680px and up): picture + list on the left, totals on the right, extras below ---- */
@container (min-width:680px){
.wp-block-woocommerce-cart .wc-block-cart{display:grid!important;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);grid-template-areas:"art side" "items side" "xh xh" "xg xg";grid-template-rows:auto 1fr auto auto;column-gap:40px;align-items:start}
.wp-block-woocommerce-cart .wc-block-cart > .lb-cart-top-art{grid-area:art;justify-self:start;margin:0;max-width:340px}
.wp-block-woocommerce-cart .wc-block-cart .wc-block-cart__main{display:contents}
.wp-block-woocommerce-cart .wc-block-cart .wc-block-cart__sidebar{grid-area:side;width:auto!important;max-width:none!important;margin:0!important;padding:0!important;align-self:start}
.wp-block-woocommerce-cart .wc-block-cart .wc-block-cart-items{grid-area:items;margin-top:14px}
.wp-block-woocommerce-cart .wc-block-cart .wc-block-cart__main > .wp-block-heading{grid-area:xh;margin-top:34px}
.wp-block-woocommerce-cart .wc-block-cart .wc-block-cart__main > .wp-block-woocommerce-product-new{grid-area:xg}
}
/* ---- cart, narrow (under 680px): items, then the totals and checkout, then the extras ---- */
@container (max-width:679px){
.wp-block-woocommerce-cart .wc-block-cart{display:flex;flex-direction:column}
.wp-block-woocommerce-cart .wc-block-cart .wc-block-cart__main{display:contents}
.wp-block-woocommerce-cart .wc-block-cart .wc-block-cart-items{order:1}
.wp-block-woocommerce-cart .wc-block-cart .wc-block-cart__sidebar{order:2}
.wp-block-woocommerce-cart .wc-block-cart .wc-block-cart__main > .wp-block-heading{order:3;margin-top:34px}
.wp-block-woocommerce-cart .wc-block-cart .wc-block-cart__main > .wp-block-woocommerce-product-new{order:4}
/* the photo column is hidden, so the product takes the left and the line total the right */
.wp-block-woocommerce-cart .wc-block-cart table.wc-block-cart-items .wc-block-cart-items__row{grid-template-columns:minmax(0,1fr) auto}
.wp-block-woocommerce-cart .wc-block-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__product{grid-column:1;grid-row:1}
.wp-block-woocommerce-cart .wc-block-cart table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__total{grid-column:2;grid-row:1;width:auto;justify-content:flex-end;padding-left:12px}
}

/* ---- checkout, wide (680px and up): form left, order summary right and level with the top of the header row ---- */
@container (min-width:680px){
.wc-block-checkout.wc-block-components-sidebar-layout{flex-direction:row!important;flex-wrap:nowrap!important;align-items:flex-start;margin:0!important}
.wc-block-checkout .wc-block-checkout__main{order:1!important;flex:0 0 56%!important;width:56%!important;padding-right:14px}
.wc-block-checkout .wc-block-checkout__sidebar{order:2!important;flex:0 0 44%!important;width:44%!important;margin:0!important;align-self:flex-start;position:static!important}
body.woocommerce-checkout:not(.woocommerce-order-received) .site-main .wc-block-checkout .wc-block-checkout__sidebar{margin-top:-194px!important}
/* the order summary is always open here (no collapse bar), as WooCommerce itself does from 920px */
.wp-block-woocommerce-checkout-order-summary-block .wc-block-components-checkout-order-summary__title-icon,
.wp-block-woocommerce-checkout-order-summary-block .wc-block-components-checkout-order-summary__title-price{display:none!important}
.wp-block-woocommerce-checkout-order-summary-block .wc-block-components-checkout-order-summary__content{display:block!important;border-bottom:0!important}
.wp-block-woocommerce-checkout-order-summary-block.checkout-order-summary-block-fill-wrapper{display:none!important}
.wp-block-woocommerce-checkout-order-summary-block .wc-block-components-checkout-order-summary__title{border:0!important;cursor:default}
}

/* ===========================================================================================
   Thank-you page, compact (Jon, 2026-10-11): everything a customer needs fits on one screen and the branding stays.
   Title + notice on the left, Lizzy and the "Almost yours" picture on the right, then a one-line order strip, then the
   order details beside the addresses. (The classic order-received template; no WooCommerce size classes involved.)
   =========================================================================================== */
@media(min-width:700px){
body.woocommerce-order-received .site-main{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:16px;row-gap:0;align-items:center;max-width:800px;margin-left:auto;margin-right:auto;padding-top:10px;padding-bottom:26px}
body.woocommerce-order-received .site-main .page-header{grid-column:1 / 9;grid-row:1;max-width:none;margin:0;align-self:end}
body.woocommerce-order-received .site-main .page-header .entry-title{margin:0 0 4px}
body.woocommerce-order-received .site-main .page-content,body.woocommerce-order-received .site-main .page-content > .woocommerce,body.woocommerce-order-received .site-main .woocommerce-order{display:contents}
body.woocommerce-order-received .site-main .page-content > figure{grid-column:9 / 13;grid-row:1 / 3;width:100%;max-width:none;margin:0}
body.woocommerce-order-received .site-main .woocommerce-order > .woocommerce-thankyou-order-received{grid-column:1 / 9;grid-row:2;align-self:start;margin:0;padding:0;border:0;background:none;box-shadow:none;font-size:15px;color:var(--ink-muted)}
body.woocommerce-order-received .site-main .woocommerce-order > .woocommerce-thankyou-order-received::before{display:none}
body.woocommerce-order-received .site-main .woocommerce-order > .lb-pickup-note,body.woocommerce-order-received .site-main .woocommerce-order > .lb-club-welcome{grid-column:1 / -1;margin:12px 0 0}
body.woocommerce-order-received .site-main ul.woocommerce-order-overview{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:4px 24px;list-style:none;margin:14px 0 16px;padding:10px 16px;background:#FFFDF8;border:1px solid var(--rule-strong)}
body.woocommerce-order-received .site-main ul.woocommerce-order-overview li{margin:0;padding:0;border:0;float:none;font-size:12.5px;line-height:1.4;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted)}
body.woocommerce-order-received .site-main ul.woocommerce-order-overview li strong{display:block;font-size:14px;text-transform:none;letter-spacing:0;color:var(--ink)}
body.woocommerce-order-received .site-main section.woocommerce-order-details{grid-column:1 / 8;align-self:start}
body.woocommerce-order-received .site-main section.woocommerce-customer-details{grid-column:8 / -1;align-self:start}
body.woocommerce-order-received .site-main .woocommerce-order-details__title,body.woocommerce-order-received .site-main .woocommerce-column__title{font:400 19px/1.2 Georgia,serif;color:var(--brown);margin:0 0 8px}
body.woocommerce-order-received .site-main table.woocommerce-table--order-details{margin:0;font-size:14px}
body.woocommerce-order-received .site-main table.woocommerce-table--order-details th,body.woocommerce-order-received .site-main table.woocommerce-table--order-details td{padding:6px 8px;line-height:1.35}
body.woocommerce-order-received .site-main table.woocommerce-table--order-details thead th{font-size:11.5px;text-transform:uppercase;letter-spacing:.08em}
body.woocommerce-order-received .site-main table.woocommerce-table--order-details .wc-item-meta,body.woocommerce-order-received .site-main table.woocommerce-table--order-details .product-name small{font-size:12px;margin:2px 0 0}
body.woocommerce-order-received .site-main .woocommerce-customer-details .woocommerce-columns--addresses{display:block}
body.woocommerce-order-received .site-main .woocommerce-customer-details .woocommerce-column{width:auto;float:none;margin:0 0 14px;padding:0}
body.woocommerce-order-received .site-main .woocommerce-customer-details address{font-size:14px;line-height:1.45;padding:10px 12px;margin:0}
}
@media(max-width:699px){
body.woocommerce-order-received .site-main .page-content > figure{display:none}
body.woocommerce-order-received .site-main ul.woocommerce-order-overview{margin:10px 0 12px;padding:8px 12px}
body.woocommerce-order-received .site-main ul.woocommerce-order-overview li{font-size:12px}
body.woocommerce-order-received .site-main table.woocommerce-table--order-details th,body.woocommerce-order-received .site-main table.woocommerce-table--order-details td{padding:6px 8px}
}

/* thank-you page: Lizzy + bubble at the bottom of the right-hand column, addresses a little tighter */
body.woocommerce-order-received .site-main .lb-thankyou-note{max-width:270px;margin:6px auto 0}
body.woocommerce-order-received .site-main .lb-thankyou-note .lb-lizzy-say{margin-bottom:14px;padding:11px 14px 10px}
body.woocommerce-order-received .site-main .lb-thankyou-note .lb-lizzy-say__t{font-size:15px}
body.woocommerce-order-received .site-main .lb-thankyou-note .lb-lizzy-note__img{width:118px;max-width:60%}
body.woocommerce-order-received .site-main .woocommerce-customer-details address{padding:8px 11px!important;font-size:13.5px!important}
body.woocommerce-order-received .site-main .woocommerce-customer-details .woocommerce-column{margin:0 0 10px!important}

/* Policy pages + footer policy links (policies.php / page-policy.php, 2026-10-17) */
.lb-footer__policies{display:flex;flex-wrap:wrap;gap:6px 16px}
.lb-footer__policies a{color:var(--ink-muted);text-decoration:none}
.lb-footer__policies a:hover{color:var(--forest);text-decoration:underline}
.lb-policy__updated{font:400 13px/1.5 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink-muted);margin:4px 0 0}
.lb-policy .lb-post__body h2{font:400 24px/1.25 Georgia,serif;color:var(--brown);margin:34px 0 10px}
.lb-policy .lb-post__body h2:first-child{margin-top:0}
.lb-policy .lb-post__body ul{margin:0 0 18px;padding-left:22px}
.lb-policy .lb-post__body li{margin:0 0 8px}
.lb-policy .lb-post__body a{color:var(--forest)}

/* Box contents in the basket and checkout summary (Jon, 2026-10-17): a box lists its soaps one per line,
   text only, small and muted. Everything else under an item (description, variation, ship date, box
   discount) stays hidden, as in the compact cart; those still show in the tap-for-details popup.
   Rows come from deals.php item data keyed "In the box". Woo draws the details as inline spans joined
   by aria-hidden " / " separators (older versions: li) - so children are matched with >*. */
.wc-block-cart-items .wc-block-components-product-metadata,
.wc-block-components-order-summary .wc-block-components-product-metadata{display:block!important;margin:2px 0 0}
.wc-block-cart-items .wc-block-components-product-metadata__description,
.wc-block-components-order-summary .wc-block-components-product-metadata__description,
.wc-block-cart-items .wc-block-components-product-details>*:not(.wc-block-components-product-details__in-the-box),
.wc-block-components-order-summary .wc-block-components-product-details>*:not(.wc-block-components-product-details__in-the-box){display:none!important}
.wc-block-components-product-details{list-style:none;margin:0;padding:0}
.wc-block-components-product-details>.wc-block-components-product-details__in-the-box{display:block;margin:0;padding:0 0 0 10px;
  font:400 12.5px/1.45 'Helvetica Neue',Helvetica,Arial,sans-serif;color:var(--ink-muted)}
.wc-block-components-product-details__in-the-box>.wc-block-components-product-details__name,
.wc-block-components-product-details__in-the-box>[aria-hidden="true"]{display:none}
.wc-block-components-product-details>.wc-block-components-product-details__in-the-box:first-child,
.wc-block-components-product-details>:not(.wc-block-components-product-details__in-the-box)+.wc-block-components-product-details__in-the-box{margin-top:3px}
