.elementor-kit-7{--e-global-color-primary:#2F4639;--e-global-color-secondary:#3F4B41;--e-global-color-text:#20261F;--e-global-color-accent:#B28D50;--e-global-color-81d4eecf:#FCF8EF;--e-global-color-dfe64d5d:#FFFDF8;--e-global-color-350fffaf:#F6EFE6;--e-global-color-f0e6e536:#252B27;--e-global-color-78c19b12:#B29255;--e-global-color-790f9f9f:#EAD8D5;--e-global-color-0dae5be8:#DCE2D7;--e-global-color-ca028802:#646962;--e-global-typography-primary-font-family:"Georgia";--e-global-typography-primary-font-weight:400;--e-global-typography-primary-line-height:1em;--e-global-typography-primary-letter-spacing:-0.045em;--e-global-typography-secondary-font-family:"Georgia";--e-global-typography-secondary-font-weight:400;--e-global-typography-secondary-line-height:1.35em;--e-global-typography-secondary-letter-spacing:-0.02em;--e-global-typography-text-font-family:"Helvetica Neue";--e-global-typography-text-font-size:16px;--e-global-typography-text-font-weight:400;--e-global-typography-text-line-height:1.7em;--e-global-typography-accent-font-family:"Helvetica Neue";--e-global-typography-accent-font-size:11px;--e-global-typography-accent-font-weight:800;--e-global-typography-accent-text-transform:uppercase;--e-global-typography-accent-line-height:1.4em;--e-global-typography-accent-letter-spacing:0.21em;--e-global-typography-0ac7c292-font-family:"Georgia";--e-global-typography-0ac7c292-font-size:clamp(44px, 5.65vw, 88px);--e-global-typography-0ac7c292-font-weight:400;--e-global-typography-0ac7c292-line-height:0.94em;--e-global-typography-0ac7c292-letter-spacing:-0.057em;--e-global-typography-80a57570-font-family:"Georgia";--e-global-typography-80a57570-font-size:clamp(36px, 5vw, 76px);--e-global-typography-80a57570-font-weight:400;--e-global-typography-80a57570-line-height:1em;--e-global-typography-80a57570-letter-spacing:-0.045em;--e-global-typography-0192e2de-font-family:"Georgia";--e-global-typography-0192e2de-font-size:clamp(24px, 2.2vw, 34px);--e-global-typography-0192e2de-font-weight:400;--e-global-typography-0192e2de-line-height:1.25em;--e-global-typography-0192e2de-letter-spacing:-0.025em;--e-global-typography-e7e12883-font-family:"Georgia";--e-global-typography-e7e12883-font-size:clamp(22px, 2.6vw, 34px);--e-global-typography-e7e12883-font-weight:400;--e-global-typography-e7e12883-line-height:1.35em;--e-global-typography-e7e12883-letter-spacing:-0.02em;--e-global-typography-dc4411e3-font-family:"Helvetica Neue";--e-global-typography-dc4411e3-font-size:18px;--e-global-typography-dc4411e3-font-weight:400;--e-global-typography-dc4411e3-line-height:1.8em;--e-global-typography-a5c54cd9-font-family:"Helvetica Neue";--e-global-typography-a5c54cd9-font-size:12px;--e-global-typography-a5c54cd9-font-weight:800;--e-global-typography-a5c54cd9-text-transform:uppercase;--e-global-typography-a5c54cd9-line-height:1em;--e-global-typography-a5c54cd9-letter-spacing:0.09em;--e-global-typography-4192e9fa-font-family:"Helvetica Neue";--e-global-typography-4192e9fa-font-size:10px;--e-global-typography-4192e9fa-font-weight:700;--e-global-typography-4192e9fa-text-transform:uppercase;--e-global-typography-4192e9fa-line-height:1.4em;--e-global-typography-4192e9fa-letter-spacing:0.12em;--e-global-typography-82684dd6-font-family:"Helvetica Neue";--e-global-typography-82684dd6-font-size:10px;--e-global-typography-82684dd6-font-weight:800;--e-global-typography-82684dd6-text-transform:uppercase;--e-global-typography-82684dd6-line-height:1.5em;--e-global-typography-82684dd6-letter-spacing:0.12em;color:#20261F;font-family:"Helvetica Neue", Sans-serif;font-size:16px;font-weight:400;line-height:1.7em;background-color:#FCF8EF;}.elementor-kit-7 a{color:#20261F;}.elementor-kit-7 a:hover{color:#B28D50;}.elementor-kit-7 h1{color:#20261F;}.elementor-kit-7 h2{color:#20261F;}.elementor-kit-7 h3{color:#20261F;}.elementor-kit-7 h4{color:#20261F;}.elementor-kit-7 h5{color:#20261F;}.elementor-kit-7 h6{color:#20261F;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1420px;}.e-con{--container-max-width:1420px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.elementor-kit-7 e-page-transition{background-color:#FFBC7D;}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}/* Start custom CSS *//* ================= J HEALTH & BEAUTY — DESIGN SYSTEM ================= */
:root{
 --jhb-serif:Georgia,'Times New Roman',serif; --jhb-display:'Iowan Old Style',Baskerville,'Times New Roman',Georgia,serif;
 --jhb-sans:'Helvetica Neue',Helvetica,Arial,sans-serif;
 --jhb-cream:#fcf8ef; --jhb-soft:#fffdf8; --jhb-beige:#f6efe6; --jhb-sand:#f3ecdf;
 --jhb-forest:#3f4b41; --jhb-deep:#2f4639; --jhb-ink:#20261f; --jhb-ink2:#252b27;
 --jhb-gold:#b28d50; --jhb-gold2:#b29255; --jhb-gold-deep:#765c32; --jhb-gold-light:#d6bf91;
 --jhb-blush:#ead8d5; --jhb-sage:#dce2d7; --jhb-muted:#646962; --jhb-muted2:#59625b;
 --jhb-line:rgba(37,43,39,.14); --jhb-rule:rgba(47,70,57,.12); --jhb-gold-line:rgba(178,141,80,.72);
}
/* Real display / body stacks layered over the Elementor globals */
body.elementor-kit-7{
 --e-global-typography-primary-font-family:var(--jhb-serif);
 --e-global-typography-secondary-font-family:var(--jhb-serif);
 --e-global-typography-text-font-family:var(--jhb-sans);
 --e-global-typography-accent-font-family:var(--jhb-sans);
}
/* ---------- Base ---------- */
body{background:var(--jhb-cream);-webkit-font-smoothing:antialiased}
/* In-page anchors: any overflow:clip/hidden ancestor of a fragment target stops
   the browser scrolling to it. Blocksy sets #main-container{overflow:clip}, which
   killed every TOC link, the #reviews anchor and scroll cues sitewide; the theme's
   own body-level overflow-x guard (plus ours) still prevents sideways scroll. */
body{overflow-x:clip}
#main-container{overflow:visible}
:focus-visible{outline:3px solid #9d7443;outline-offset:4px}
::selection{background:#d8b7af;color:var(--jhb-ink2)}

/* ---------- Buttons ---------- */
.jhb-btn .elementor-button{border-radius:999px;font-family:var(--jhb-sans);font-weight:800;letter-spacing:.09em;text-transform:uppercase;min-height:44px;display:inline-flex;align-items:center;justify-content:center;text-align:center;transition:background-color .3s ease,color .3s ease,border-color .3s ease,transform .3s ease,box-shadow .3s ease}
.jhb-btn .elementor-button:hover,.jhb-btn .elementor-button:focus-visible{transform:translateY(-2px)}
.jhb-btn-primary .elementor-button{background:var(--jhb-deep);border:1px solid var(--jhb-deep);color:var(--jhb-soft)}
.jhb-btn-primary .elementor-button:hover{background:#2c382f;border-color:#2c382f;color:var(--jhb-soft)}
.jhb-btn-gold .elementor-button{background:rgba(255,253,248,.82);border:1px solid var(--jhb-gold-line);color:var(--jhb-gold-deep);box-shadow:0 7px 20px rgba(130,92,53,.08)}
.jhb-btn-gold .elementor-button:hover,.jhb-btn-gold .elementor-button:focus-visible{background:#fffdf8;border-color:#9c7539;color:#4a3b2e;box-shadow:0 9px 24px rgba(130,92,53,.13)}
.jhb-btn-outline .elementor-button{background:transparent;border:1px solid rgba(37,43,39,.38);color:var(--jhb-ink2)}
.jhb-btn-outline .elementor-button:hover{background:var(--jhb-ink2);border-color:var(--jhb-ink2);color:var(--jhb-soft)}
.jhb-btn-light .elementor-button{background:var(--jhb-soft);border:1px solid var(--jhb-soft);color:var(--jhb-forest)}
.jhb-btn-light .elementor-button:hover{background:transparent;color:var(--jhb-soft)}
.jhb-btn-ghost .elementor-button{background:transparent;border:1px solid rgba(255,255,255,.5);color:#fff}
.jhb-btn-ghost .elementor-button:hover{background:var(--jhb-soft);border-color:var(--jhb-soft);color:var(--jhb-forest)}
/* Underlined text link with trailing arrow */
.jhb-link-arrow .elementor-button{padding:0 0 4px;min-height:0;border:0;border-bottom:1px solid currentColor;border-radius:0;background:transparent;color:inherit;letter-spacing:.1em}
.jhb-link-arrow .elementor-button:hover{transform:none;background:transparent;color:var(--jhb-gold);border-bottom-color:var(--jhb-gold)}
.jhb-link-arrow .elementor-button-content-wrapper{gap:18px}

/* ---------- Brand lockup ---------- */
.jhb-brand{text-decoration:none}
.jhb-wordmark p,.jhb-tagline p{margin:0}
.jhb-wordmark strong{margin-right:3px;color:var(--jhb-gold);font-size:1.3em;font-weight:400}
.jhb-wordmark em{color:var(--jhb-gold);font-style:normal;font-size:.92em}
.jhb-wordmark--light strong,.jhb-wordmark--light em{color:var(--jhb-gold-light)}

/* ---------- Header ---------- */
/* backdrop-filter on the header itself creates a containing block for position:fixed
   descendants, which trapped the mini-cart side panel inside the 83px header.
   Moving the frosted effect onto a pseudo-element keeps the look and frees the panel. */
.jhb-header{position:relative}
/* backdrop-filter removed: the header background is fully opaque (#FCF8EF), so the
   blur was invisible while forcing a full-width recomposite on every scroll frame,
   which wedged the renderer alongside the fixed butterfly layer. */
.jhb-header .jhb-account-icon .elementor-icon{min-width:46px;min-height:46px;display:inline-flex;align-items:center;justify-content:center;border-width:1px;background:rgba(255,253,248,.82);transition:border-color 180ms ease,transform 180ms ease}
/* Menu-cart toggle styled as the prototype's pill */
.jhb-menu-cart .elementor-menu-cart__toggle .elementor-button{min-width:46px;min-height:46px;padding:0 14px;border:1px solid rgba(37,43,39,.16);border-radius:999px;background:rgba(255,253,248,.82);color:var(--jhb-forest);transition:border-color 180ms ease,transform 180ms ease}
.jhb-menu-cart .elementor-button-icon-qty[data-counter]{background:var(--jhb-gold);color:var(--jhb-soft);font-family:var(--jhb-sans);font-size:10px;font-weight:800;letter-spacing:.04em}
.jhb-menu-cart .elementor-menu-cart__container{--cart-background-color:var(--jhb-soft)}
.jhb-menu-cart .elementor-menu-cart__product-name a{font-family:var(--jhb-serif);font-size:16px;letter-spacing:-.02em}
.jhb-menu-cart .elementor-menu-cart__footer-buttons .elementor-button{border-radius:999px;font-family:var(--jhb-sans);font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;min-height:44px}
.jhb-menu-cart .elementor-menu-cart__footer-buttons .elementor-button--view-cart{background:transparent;border:1px solid var(--jhb-gold-line);color:var(--jhb-gold-deep)}
.jhb-menu-cart .elementor-menu-cart__footer-buttons .elementor-button--checkout{background:var(--jhb-deep);border:1px solid var(--jhb-deep);color:var(--jhb-soft)}
.jhb-menu-cart .elementor-menu-cart__close-button{min-width:44px;min-height:44px}
/* Primary nav */
#jhb-primary-nav .elementor-nav-menu--dropdown{box-shadow:0 28px 80px rgba(70,52,43,.12);border:1px solid var(--jhb-line)}
#jhb-primary-nav .elementor-menu-toggle{width:44px;height:44px}

/* ---------- Footer ---------- */
.jhb-footer-quote p{margin:0}
.jhb-footer-menu .elementor-nav-menu a,.jhb-footer-legal .elementor-nav-menu a{transition:color .25s ease}
.jhb-footer-connect .elementor-icon-list-item a{transition:color .25s ease}
.jhb-footer-connect .elementor-icon-list-item a:hover,
.jhb-footer-connect .elementor-icon-list-item a:hover .elementor-icon-list-text{color:var(--jhb-gold-light)}
.jhb-footer-legal .elementor-nav-menu--layout-horizontal .elementor-item{padding-inline:0}

/* ---------- Editorial helpers ---------- */
.jhb-eyebrow .elementor-heading-title{letter-spacing:.21em;text-transform:uppercase;font-weight:800}
.jhb-rule-dot{position:relative}
.jhb-rule-dot:after{content:'';position:absolute;top:50%;left:50%;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:50%;background:var(--jhb-gold)}
/* Decorative artwork must never be interactive or a hit target */
.jhb-decor,.jhb-decor img,.jhb-decor .elementor-widget-container{pointer-events:none;user-select:none}

/* ---------- Motion ---------- */
@media (prefers-reduced-motion:reduce){
 *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}
/* ================= PAGE COMPONENTS ================= */
/* Section width utilities (containers have no native max-width control) */
.jhb-max-1600{max-width:1600px;margin-inline:auto;width:100%}
.jhb-max-1420{max-width:1420px;margin-inline:auto;width:100%}

/* ---------- Home hero ---------- */
/* superseded by block [19]: the whole-heading gradient is replaced by
   the per-letter animated butterfly word, so Become the / the full stop
   stay flat #20261F as the prototype has them. */
.jhb-hero-sub p,.jhb-lead-serif p,.jhb-hero-lead p,.jhb-feature-lead p,.jhb-dual-body p:last-child{margin-block-end:0}
.jhb-hero-rule{width:min(270px,48%);height:1px;min-height:1px;position:relative;
 background:linear-gradient(90deg,#b28d50 0 41%,transparent 41% 59%,#b28d50 59%)}
.jhb-hero-rule::after{content:'';position:absolute;top:50%;left:50%;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:50%;background:#b28d50}
.jhb-hero-figure{align-self:stretch;position:relative}
.jhb-hero-portrait img{width:100%;height:100%;object-fit:contain;object-position:center bottom}
.jhb-principles .elementor-icon-list-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px}
.jhb-principles .elementor-icon-list-item{margin:0}
/* phones keep the two-column principles grid: three items each side */
@media (max-width:480px){.jhb-principles .elementor-icon-list-items{gap:14px 16px}}
.jhb-hero-ribbon{position:relative;isolation:isolate}
.jhb-hero-ribbon::before{content:'';position:absolute;left:50%;transform:translateX(-50%);top:0;width:calc(100% + 180px);height:178px;border-top:1px solid rgba(178,141,80,.3);border-radius:50% 50% 0 0 / 68% 68% 0 0;background:#f6efe6;z-index:-1}
.jhb-ribbon-text .elementor-heading-title{display:flex;align-items:center;justify-content:center;gap:clamp(16px,3.2vw,50px)}
.jhb-ribbon-text .elementor-heading-title::before,.jhb-ribbon-text .elementor-heading-title::after{content:'';flex:0 1 auto;width:clamp(28px,7.5vw,118px);height:1px;background:rgba(205,166,98,.58)}

/* ---------- Inside / Outside cards ---------- */
.jhb-dual-decor{max-width:none;opacity:.26;filter:brightness(.78) saturate(.7)}
.jhb-dual-card--outside .jhb-dual-decor{opacity:.45;filter:none}
.jhb-dual-body{max-width:460px}

/* ---------- Butterfly feature ---------- */
.jhb-feature-media{position:relative}
.jhb-feature-img,.jhb-feature-img .elementor-widget-container,.jhb-feature-img figure{height:100%}
.jhb-feature-badge .elementor-heading-title{display:inline-block;padding:11px 14px;background:rgba(255,253,248,.92)}
.jhb-feature-priceloop .elementor-grid,.jhb-starsloop .elementor-grid{grid-template-columns:1fr}
.jhb-feature-price del{opacity:1;text-decoration-thickness:1px}
/* jhb price-inline-fix: the loop's <p class=price> inherited the theme's 1.5em paragraph spacing (48px under a 32px price), which pushed the stars a full block away; sit price + old price on one baseline and let the widget's own gap handle spacing. */
.jhb-price-inline .price{margin:0;display:flex;align-items:baseline;flex-wrap:wrap}
.jhb-price-inline .price del,.jhb-price-inline .price ins{display:inline-block;text-decoration-color:currentColor}
.jhb-price-inline .sale-price{display:contents}
.jhb-price-inline .jhb-feature-price .price .sale-price del,.jhb-price-inline .jhb-feature-price .price del{font-size:15px;opacity:1;margin:0 0 0 10px}
@media(max-width:767px){.jhb-price-inline .jhb-feature-price .price .sale-price del,.jhb-price-inline .jhb-feature-price .price del{font-size:14px}}
.jhb-price-inline .price ins{text-decoration:none}
.jhb-price-inline .elementor-widget-woocommerce-product-rating .elementor-widget-container{display:flex;align-items:center}
.jhb-feature-rating .woocommerce-review-link{color:#e0c891}

/* ---------- Meet June collage ---------- */
.jhb-collage{position:relative}
.jhb-collage-back img{height:100%;object-fit:cover}
.jhb-collage-inset .elementor-widget-container{background:#fffdf8;padding:12px;box-shadow:0 28px 80px rgba(70,52,43,.12)}
.jhb-collage-inset img{aspect-ratio:.78;object-fit:cover;object-position:50% 35%;width:100%}

/* ---------- Reviews band ---------- */
.jhb-stars-widget .woocommerce-review-link{display:none}
.jhb-stars-widget .star-rating{margin:0}
@media (max-width:1024px){.jhb-review-copy{border-top-width:0}}

/* ---------- Journal cards (numerals come from a CSS counter) ---------- */
.jhb-journal-loop .elementor-loop-container{counter-reset:jcard}
.jhb-journal-loop .e-loop-item{counter-increment:jcard}
.jhb-jcard-num{position:relative;overflow:hidden;background:#eee4d7;color:#b29255}
.jhb-jcard-num::before{content:counter(jcard,decimal-leading-zero);font-family:var(--jhb-serif);font-size:110px;line-height:.9;position:relative;z-index:2}
.jhb-jcard-num::after{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:180px;height:240px;border:1px solid currentColor;border-radius:50%;opacity:.45}
.jhb-journal-loop .e-loop-item:nth-child(3n+1) .jhb-jcard-num{background:#dce2d7;color:#6e7c68}
.jhb-journal-loop .e-loop-item:nth-child(3n+2) .jhb-jcard-num{background:#ead8d5;color:#a17a70}
.jhb-journal-loop .e-loop-item:nth-child(3n+3) .jhb-jcard-num{background:#eee4d7;color:#b29255}
.jhb-jcard-title a{color:inherit;transition:color .25s ease}
.jhb-jcard-title a:hover{color:var(--jhb-gold)}

/* ---------- Final CTA ---------- */
.jhb-final-cta{position:relative}
.jhb-cta-decor{opacity:.35}
/* ================= TEMPLATES & WOOCOMMERCE ================= */
/* Cover images that must fill their grid cell */
.jhb-cover-img,.jhb-cover-img .elementor-widget-container,.jhb-cover-img figure{height:100%}
.jhb-cover-img img{width:100%;height:100%;object-fit:cover}
.jhb-about-portrait,.jhb-about-portrait .elementor-widget-container,.jhb-about-portrait figure{height:100%}
.jhb-about-figure{position:relative}
body .elementor-7030 .elementor-element.jhb-about-portrait{position:absolute;inset:0;width:100%;height:100%;margin:0}
body .elementor-7030 .elementor-element.jhb-about-portrait img{width:100%;height:100%;object-fit:cover;object-position:center 35%;display:block}
.jhb-about-badge .elementor-heading-title{display:inline-block;padding:11px 14px;background:rgba(255,253,248,.94)}
.jhb-photo-card{position:relative}
.jhb-numeral-figure{position:relative}
.jhb-quote-decor{opacity:.12}
.jhb-post-decor{opacity:.16}
.jhb-square-img img{aspect-ratio:1;object-fit:cover;width:100%}

/* Bordered value / benefit / step grids keep their inner rules crisp */
.jhb-values-grid > .e-con:last-child,.jhb-benefits-grid > .e-con:last-child{border-right-width:1px}

/* ---------- Journal archive cards ---------- */
.jhb-journal-archive-loop .elementor-loop-container{counter-reset:jcarda}
.jhb-journal-archive-loop .e-loop-item{counter-increment:jcarda}
.jhb-jcard-a-num .elementor-heading-title{font-size:0;line-height:1}
.jhb-jcard-a-num .elementor-heading-title::before{content:counter(jcarda,decimal-leading-zero);font-family:var(--jhb-serif);font-size:22px;color:#b29255}
.jhb-jcard-a{transition:transform .35s ease,box-shadow .35s ease}
.jhb-jcard-a:hover{transform:translateY(-4px);box-shadow:0 26px 70px rgba(74,56,43,.12)}

/* ---------- Journal single ---------- */
/* jhb related-fix: the related-card title is width:100% in the loop template (a fixed 480px width made each card's grid track blow out to 534px on phones, letting the page pan sideways); keep the desktop line length with a max-width instead. */
.jhb-related-title{max-width:480px}
.jhb-post-hero{position:relative}
.jhb-toc .elementor-toc__header{padding-left:0;padding-right:0}
.jhb-toc .elementor-toc__list-wrapper{padding-left:0}
.jhb-toc .elementor-toc__list-item{padding-block:11px;border-bottom:1px solid var(--jhb-line)}
.jhb-toc .elementor-toc__list-item:first-child{border-top:1px solid var(--jhb-line)}
.jhb-toc .elementor-toc__spinner-container{display:none}
/* Article body rhythm */
.jhb-article-body h2{margin:clamp(46px,6vw,74px) 0 26px;font-family:var(--jhb-serif);font-size:clamp(30px,4.2vw,58px);font-weight:400;letter-spacing:-.04em;line-height:1.05;color:var(--jhb-ink)}
.jhb-article-body h2:first-child{margin-top:0}
.jhb-article-body h3{margin:38px 0 16px;font-family:var(--jhb-serif);font-size:clamp(22px,2.4vw,30px);font-weight:400;color:var(--jhb-ink)}
.jhb-article-body p{margin:0 0 22px}
.jhb-article-body ul{margin:0 0 24px;padding-left:1.1em}
.jhb-article-body li{margin-bottom:10px;padding-left:5px}
.jhb-article-body a{color:var(--jhb-gold-deep);text-decoration:underline;text-underline-offset:3px}
.jhb-article-body a:hover{color:var(--jhb-gold)}
/* "The gentle takeaway" callout inside the post content */
.jhb-article-body .jhb-takeaway{margin:0 0 clamp(48px,7vw,72px);padding:clamp(24px,4vw,46px);border:1px solid var(--jhb-line);background:#f5efe5}
.jhb-article-body .jhb-takeaway h2{margin:0 0 18px;font-family:var(--jhb-sans);font-size:11px;font-weight:800;letter-spacing:.21em;text-transform:uppercase;color:var(--jhb-gold2)}
.jhb-article-body .jhb-takeaway ul{margin:0;padding:0;list-style:none}
.jhb-article-body .jhb-takeaway li{position:relative;margin:0 0 16px;padding-left:31px;color:#4f5750;font-family:var(--jhb-serif);font-size:clamp(18px,2vw,25px);line-height:1.42}
.jhb-article-body .jhb-takeaway li:last-child{margin-bottom:0}
.jhb-article-body .jhb-takeaway li::before{content:'2726';position:absolute;left:0;top:.15em;font-size:.62em;color:var(--jhb-gold)}

/* ---------- Contact form ---------- */
.jhb-contact-form .elementor-field-textual{border-radius:0}
.jhb-contact-form .elementor-field-textual:focus{border-bottom-color:var(--jhb-gold);box-shadow:none;outline:none}
.jhb-contact-form .elementor-field-label{color:var(--jhb-ink2)}
.jhb-contact-form .elementor-field-type-acceptance .elementor-field-option label{font-family:var(--jhb-sans);font-size:13px;line-height:1.65;color:var(--jhb-muted);text-transform:none;letter-spacing:0}
.jhb-contact-form .elementor-field-type-acceptance input[type=checkbox]{margin-right:9px;accent-color:var(--jhb-deep);width:17px;height:17px}
.jhb-contact-form .elementor-message{font-family:var(--jhb-sans);font-size:15px;line-height:1.7}
.jhb-contact-form .elementor-message-success{color:var(--jhb-deep)}
.jhb-contact-form .elementor-button{min-height:48px}
.jhb-contact-note p{margin:0}

/* ---------- WooCommerce: shared type & buttons ---------- */
.woocommerce .price,.woocommerce-Price-amount{font-family:var(--jhb-serif)}
.woocommerce .button,.woocommerce a.button,.woocommerce button.button,
.wc-block-components-button{border-radius:999px!important;font-family:var(--jhb-sans);font-size:12px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;min-height:48px;display:inline-flex;align-items:center;justify-content:center}
.woocommerce .button.alt,.woocommerce button.button.alt,
.wc-block-components-button:not(.is-link){background:var(--jhb-deep);color:var(--jhb-soft);border:1px solid var(--jhb-deep)}
.woocommerce .button.alt:hover,.wc-block-components-button:not(.is-link):hover{background:#243728;border-color:#243728;color:var(--jhb-soft)}
.woocommerce .woocommerce-message,.woocommerce .woocommerce-info,.woocommerce .woocommerce-error{border-top-color:var(--jhb-gold);background:#fffdf8;font-family:var(--jhb-sans)}
/* Product archive cards */
.jhb-archive-products ul.products li.product{background:var(--jhb-soft);padding:22px;box-shadow:0 18px 55px rgba(74,56,43,.06);transition:transform .35s ease,box-shadow .35s ease}
.jhb-archive-products ul.products li.product:hover{transform:translateY(-4px);box-shadow:0 26px 70px rgba(74,56,43,.12)}
.jhb-archive-products ul.products li.product .onsale{letter-spacing:.14em}
/* Single product */
.jhb-wc-gallery .woocommerce-product-gallery__wrapper{background:var(--jhb-beige)}
.jhb-product-short p{margin:0 0 14px}
.jhb-product-short p:last-child{margin-bottom:0}
.jhb-product-atc .quantity input.qty{text-align:center;min-height:48px;font-family:var(--jhb-sans)}
.jhb-product-atc form.cart{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.jhb-wc-tabs .woocommerce-tabs ul.tabs{padding-left:0;border-bottom:1px solid var(--jhb-line)}
.jhb-wc-tabs .woocommerce-tabs .panel h2{font-family:var(--jhb-serif);font-weight:400}
.jhb-wc-tabs #reviews .comment_container{padding:22px 0;border-bottom:1px solid var(--jhb-line)}
.jhb-wc-tabs #reviews .star-rating{color:var(--jhb-gold)}
.jhb-faq .elementor-tab-title{align-items:center}

/* ---------- WooCommerce Cart / Checkout / My Account (native, styled) ---------- */
.jhb-wc-page{--jhb-wc-max:1180px}
body.woocommerce-cart .elementor-widget-theme-post-content,
body.woocommerce-checkout .elementor-widget-theme-post-content{max-width:none}
body.woocommerce-cart .entry-content,body.woocommerce-checkout .entry-content,
body.woocommerce-account .entry-content,body.woocommerce-order-received .entry-content{max-width:1180px;margin-inline:auto;padding:clamp(56px,8vw,110px) clamp(22px,6vw,64px)}
.wc-block-components-title,.wc-block-cart__totals-title,
.woocommerce-account h2,.woocommerce-account h3{font-family:var(--jhb-serif)!important;font-weight:400!important;letter-spacing:-.02em}
.wc-block-cart-items__header{font-family:var(--jhb-sans);letter-spacing:.1em;text-transform:uppercase;font-size:10px;font-weight:800}
.wc-block-components-product-name{font-family:var(--jhb-serif);font-size:18px;letter-spacing:-.02em}
.wc-block-components-totals-item__label{font-family:var(--jhb-sans)}
.wc-block-components-text-input input,.wc-block-components-select select,
.woocommerce form .form-row input.input-text,.woocommerce form .form-row textarea,.woocommerce form .form-row select{font-family:var(--jhb-sans);border-radius:0;border-color:var(--jhb-line);min-height:48px}
.wc-block-components-text-input.is-active input:focus,
.woocommerce form .form-row input.input-text:focus{border-color:var(--jhb-gold);outline:none;box-shadow:none}
/* My Account */
.woocommerce-account .woocommerce-MyAccount-navigation ul{list-style:none;margin:0;padding:0;border-top:1px solid var(--jhb-line)}
.woocommerce-account .woocommerce-MyAccount-navigation li{border-bottom:1px solid var(--jhb-line)}
.woocommerce-account .woocommerce-MyAccount-navigation li a{display:block;padding:15px 2px;font-family:var(--jhb-sans);font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--jhb-forest);min-height:44px}
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a,
.woocommerce-account .woocommerce-MyAccount-navigation li a:hover{color:var(--jhb-gold)}
.woocommerce-account .woocommerce-MyAccount-content{font-family:var(--jhb-sans)}
.woocommerce-account table.woocommerce-orders-table,
.woocommerce table.shop_table{border-radius:0;border-color:var(--jhb-line);font-family:var(--jhb-sans)}
/* Order tables stay readable on small screens */
@media (max-width:767px){
 .woocommerce table.shop_table,.woocommerce-account table.woocommerce-orders-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
}

/* ---------- Legal / long-form pages ---------- */
.jhb-legal-body h2{margin:44px 0 18px;font-family:var(--jhb-serif);font-size:clamp(26px,3vw,40px);font-weight:400;letter-spacing:-.03em;color:var(--jhb-ink)}
.jhb-legal-body h2:first-child{margin-top:0}
.jhb-legal-body p{margin:0 0 20px}
.jhb-legal-body ul{margin:0 0 22px;padding-left:1.1em}
.jhb-legal-body li{margin-bottom:9px}
/* ================= RESPONSIVE REFINEMENTS ================= */
/* Elementor emits `width:<n>px` for widgets/containers given a custom width, with no
   container cap. Below the 1180px header breakpoint that can push content wider than
   the viewport, so cap every custom-width element to its parent. Desktop keeps the
   intended editorial measures. */
@media (max-width:1180px){
  .elementor-widget__width-initial{max-width:100%!important}
  .e-con.e-con-full{max-width:100%}
}
/* Belt-and-braces: nothing may create a horizontal scrollbar */
@media (max-width:1180px){
  .elementor-element{min-width:0}
}

/* ---------- Header at small widths ---------- */
@media (max-width:767px){
  .jhb-header .jhb-header-btn .elementor-button{padding-inline:16px;font-size:9px}
  .jhb-header .jhb-menu-cart .elementor-menu-cart__toggle .elementor-button{padding-inline:11px}
}
/* (Book pill mobile hiding moved to block [21]: prototype hides it at 680px) */
/* Booking link inside the mobile menu panel only */
#jhb-primary-nav .elementor-nav-menu--main .jhb-menu-book{display:none}
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-book a{color:var(--jhb-gold-deep);font-weight:700}
/* 46px touch targets - matches the prototype's header action pills */
.jhb-header .jhb-account-icon .elementor-icon{min-width:46px;min-height:46px}
.jhb-header .jhb-menu-cart .elementor-menu-cart__toggle .elementor-button{min-width:46px;min-height:46px}
#jhb-primary-nav .elementor-nav-menu--dropdown a{min-height:44px;display:flex;align-items:center}

/* ---------- Stacking order and rhythm on small screens ---------- */
@media (max-width:1024px){
  /* Editorial two-column blocks read copy-first once stacked */
  .jhb-hero-ribbon::before{width:calc(100% + 180px);height:178px}
}
@media (max-width:767px){
  .jhb-hero-ribbon::before{width:calc(100% + 76px);height:142px}
  .jhb-ribbon-text .elementor-heading-title{flex-direction:column;gap:14px}
  .jhb-ribbon-text .elementor-heading-title::before,
  .jhb-ribbon-text .elementor-heading-title::after{width:56px}
  /* Decorative artwork must never sit on top of text on a small screen */
  .jhb-dual-decor,.jhb-cta-decor,.jhb-quote-decor,.jhb-post-decor{opacity:.12}
  .jhb-collage-back img{height:100%}
  /* Hero CTAs stack full width rather than squeezing side by side */
  .jhb-hero-ctas .elementor-widget-button{width:100%}
  .jhb-hero-ctas .elementor-button{width:100%}
}
/* Product summary: keep quantity + add-to-cart usable side by side, wrap when tight */
@media (max-width:480px){
  .jhb-product-atc form.cart{flex-direction:column;align-items:stretch}
  .jhb-product-atc form.cart .quantity{width:100%}
  .jhb-product-atc form.cart .quantity input.qty{width:100%}
  .jhb-product-atc form.cart button{width:100%}
}
/* Side cart must fit inside the viewport */
.elementor-menu-cart__container{max-width:100vw}
@media (max-width:480px){
  .elementor-menu-cart__container .elementor-menu-cart__main{width:min(92vw,360px)}
}
/* Long words / headings never overflow their column */
h1,h2,h3,.elementor-heading-title{overflow-wrap:break-word}
/* Tables and wide blocks scroll inside themselves, never the page */
.jhb-article-body table,.woocommerce table.shop_table{display:block;max-width:100%;overflow-x:auto}
@media (min-width:768px){
  .jhb-article-body table{display:table}
}
/* ========== Native WooCommerce pages (Cart / Checkout / My Account / Order received) ==========
   These keep WooCommerce's own block + shortcode implementations so Stripe, PayPal,
   Address Autocomplete and Advanced Shipment Tracking keep working. They use Blocksy's
   default page template so the page still has a real <h1>; only the styling is ours. */
body.woocommerce-cart .hero-section,
body.woocommerce-checkout .hero-section,
body.woocommerce-account .hero-section,
body.woocommerce-order-received .hero-section{
  background:var(--jhb-beige);
  margin:0 0 clamp(40px,6vw,72px);
  padding:clamp(56px,7vw,96px) clamp(22px,6vw,64px);
  text-align:left}
body.woocommerce-cart .hero-section .entry-header,
body.woocommerce-checkout .hero-section .entry-header,
body.woocommerce-account .hero-section .entry-header,
body.woocommerce-order-received .hero-section .entry-header{max-width:1180px;margin-inline:auto}
body.woocommerce-cart .page-title,
body.woocommerce-checkout .page-title,
body.woocommerce-account .page-title,
body.woocommerce-order-received .page-title{
  font-family:var(--jhb-serif);font-weight:400;letter-spacing:-.045em;line-height:1;
  font-size:clamp(34px,5vw,72px);color:var(--jhb-ink);margin:0}
body.woocommerce-cart .entry-content,
body.woocommerce-checkout .entry-content,
body.woocommerce-account .entry-content,
body.woocommerce-order-received .entry-content{
  max-width:1180px;margin-inline:auto;padding:0 clamp(22px,6vw,64px) clamp(70px,9vw,120px)}
/* ==== QA FIX PASS 1 ==== */
/* [1] Elementor container-grid default is --e-con-grid-template-rows:repeat(2,1fr).
   When a multi-column grid collapses to one column the implicit rows each inherit the
   tallest item height, producing large blank areas. Per-element Elementor settings
   (specificity 0,3,0) still override this default, so grids stay editable. */
.e-con.e-grid{--e-con-grid-template-rows:auto}

/* [2] consult rows: at <=1024px the 4-track column list collapses to 3 tracks while the
   row still has 4 children, pushing the description into the 58px arrow column and
   blowing each row to ~450px tall. Desktop keeps its native 4-column layout. */
@media (min-width:768px) and (max-width:1024px){
.jhb-consult-row{grid-template-columns:48px minmax(0,1fr) 58px}
.jhb-consult-row>.jhb-consult-num{grid-column:1;grid-row:1 / span 2}
.jhb-consult-row>.elementor-widget-heading:not(.jhb-consult-num){grid-column:2;grid-row:1}
.jhb-consult-row>.elementor-widget-text-editor{grid-column:2;grid-row:2}
.jhb-consult-row>.jhb-consult-arrow{grid-column:3;grid-row:1 / span 2;align-self:center}
}

/* ==== QA FIX PASS 2 ==== */
/* [3] WooCommerce renders filled stars via .star-rating span::before using
   color:var(--star-rating-initial-color,#FDA256) - an orange that clashed with the
   palette. Defining the variable is the mechanism WooCommerce intends, so no
   specificity override is needed and it applies to shop, product and review stars. */
:root{--star-rating-initial-color:var(--jhb-gold,#B28D50)}

/* [4] was-price demotion */
/* WooCommerce puts the NEW price in <ins> and the previous price in <del>.
   Elementor sizes <del> at 80% of the price block, which left the struck-through
   was-price competing with the sale price. Demote it. */
.woocommerce div.product .price del,.elementor-widget-woocommerce-product-price .price del{font-size:.5em;opacity:.45}

/* [5] narrow-phone header headroom */
/* At 390px the header needs ~356px against a 354px content box even with the BOOK
   button hidden. Elementor emits per-element CSS at specificity 0,3,0 from
   post-7059.css, which loads AFTER the kit, so these overrides use 0,3,1. */
@media (max-width:400px){
body .elementor-7059 .elementor-element.jhb-header{--padding-left:12px;--padding-right:12px}
body .elementor-7059 .elementor-element.jhb-wordmark{font-size:16px}
}

/* ==== BUTTERFLIES (from prototype) ==== */
/* Keyframes copied verbatim from the approved prototype, namespaced jhb-. */
@keyframes jhb-flight-one{0%{opacity:0;transform:translate3d(-70px,20px,0) rotate(-10deg) scale(.78)}8%,88%{opacity:.78}31%{transform:translate3d(32vw,72px,0) rotate(9deg) scale(.92)}67%{transform:translate3d(71vw,-24px,0) rotate(-7deg) scale(.84)}100%{opacity:0;transform:translate3d(calc(100vw + 150px),54px,0) rotate(8deg) scale(.9)}}
@keyframes jhb-flight-two{0%{opacity:0;transform:translate3d(70px,0,0) rotate(12deg) scale(.7)}10%,90%{opacity:.66}38%{transform:translate3d(-37vw,-90px,0) rotate(-11deg) scale(.88)}72%{transform:translate3d(-72vw,22px,0) rotate(7deg) scale(.76)}100%{opacity:0;transform:translate3d(calc(-100vw - 140px),-38px,0) rotate(-5deg) scale(.78)}}
@keyframes jhb-flight-three{0%{opacity:0;transform:translate3d(-80px,70px,0) rotate(-14deg) scale(.6)}12%,84%{opacity:.58}42%{transform:translate3d(45vw,-130px,0) rotate(8deg) scale(.74)}100%{opacity:0;transform:translate3d(calc(100vw + 140px),24px,0) rotate(-7deg) scale(.68)}}
@keyframes jhb-wing-flutter{from{transform:perspective(120px) rotateY(-3deg) scaleX(1)}to{transform:perspective(120px) rotateY(4deg) scaleX(.78) scaleY(1.035)}}
@keyframes jhb-wing-rest{0%,100%{transform:rotate(-2.5deg)}50%{transform:rotate(2.5deg)}}
/* Fixed viewport layer: cannot grow the page canvas or create scrollbars. */
.jhb-sky{position:fixed;inset:0;width:100%;height:100vh;height:100svh;z-index:28;overflow:hidden;pointer-events:none;contain:layout paint style}
.jhb-sky,.jhb-sky *{pointer-events:none!important}
.jhb-fly{display:block;position:absolute;aspect-ratio:1;opacity:0;will-change:transform;backface-visibility:hidden}
.jhb-fly img{width:100%;height:100%;object-fit:contain;transform-origin:50% 54%;animation:jhb-wing-flutter 1.18s ease-in-out infinite alternate}
.jhb-fly--1{width:74px;top:15%;left:-90px;animation:jhb-flight-one 32s -8s linear infinite}
.jhb-fly--2{width:62px;top:72%;right:-80px;animation:jhb-flight-two 38s -24s linear infinite}
.jhb-fly--3{width:54px;top:42%;left:-90px;animation:jhb-flight-three 42s -13s linear infinite}
.jhb-fly--2 img{animation-duration:1.36s}
.jhb-fly--3 img{animation-duration:1.52s}
@media (max-width:1024px){.jhb-fly--1{width:58px}.jhb-fly--2{width:50px}.jhb-fly--3{width:44px}}
@media (max-width:767px){.jhb-fly--1{width:44px}.jhb-fly--2{width:38px}.jhb-fly--3{width:32px}}
/* Resting decorative butterfly (prototype wing-rest) on the existing butterfly-line art. */
.jhb-dual-decor img{transform-origin:50% 68%;animation:jhb-wing-rest 9s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.jhb-sky{display:none!important}.jhb-dual-decor img{animation:none!important}}

/* ==== QA FIX PASS 3 ==== */
/* [6] On-brand text selection (browser default blue read as a bug on My Account) */
::selection{background:rgba(178,141,80,.26);color:#20261f}
/* [7] Ribbon ginkgo: the prototype centres it above the ribbon text
   (left:50%;transform:translateX(-50%);opacity:.88). Ours sat at 4% from the left. */
body:not(.rtl) .elementor-7027 .elementor-element.elementor-absolute.jhb-ribbon-ginkgo{left:50%;right:auto;transform:translateX(-50%);opacity:.88}
/* [8] Consult arrows: prototype is an OUTLINED circle with a dark diagonal arrow,
   filling deep green and rotating 12deg on hover. Ours was a solid dark disc. */
/* Elementor framed view drives border AND icon from one colour; the prototype needs a
   light border with a dark icon, so the border tint is forced here. */
.jhb-consult-arrow .elementor-icon{background-color:transparent;border-color:rgba(37,43,39,.14)!important;transition:background-color 180ms ease,border-color 180ms ease,color 180ms ease,transform 180ms ease}
.jhb-consult-arrow .elementor-icon:hover{background-color:#3f4b41;border-color:#3f4b41!important;color:#fffdf8;transform:rotate(12deg)}
/* [9] WooCommerce notices and forward buttons in palette (were default blue) */
.woocommerce-message,.woocommerce-info{border-top-color:var(--jhb-gold-line,#cda662)}
.woocommerce .woocommerce-message a.button,.woocommerce .woocommerce-info a.button,.woocommerce a.button.wc-forward,.woocommerce .button.wc-forward,.woocommerce-message .button{background:var(--jhb-deep,#3f4b41)!important;border:1px solid var(--jhb-deep,#3f4b41)!important;color:var(--jhb-soft,#fffdf8)!important;border-radius:999px!important;font-family:var(--jhb-sans)!important;font-size:11px!important;font-weight:800!important;letter-spacing:.09em!important;text-transform:uppercase!important;min-height:44px;display:inline-flex;align-items:center;justify-content:center}
/* [10] My Account nav: prototype is a flat text list, no icons and no card rows */
body.woocommerce-account .woocommerce-MyAccount-navigation ul{margin:0;padding:0;list-style:none;border:0}
body.woocommerce-account .woocommerce-MyAccount-navigation li{margin:0;padding:0;background:transparent;border:0;border-bottom:1px solid rgba(37,43,39,.10);box-shadow:none}
body.woocommerce-account .woocommerce-MyAccount-navigation li a{display:block;padding:14px 16px;color:#3f4b41;font-family:var(--jhb-sans);font-size:11px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;text-decoration:none;transition:background-color 180ms ease}
body.woocommerce-account .woocommerce-MyAccount-navigation li a:hover{background:#f5efe5}
body.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a{background:#f5efe5;color:var(--jhb-gold-deep,#8a6d2f)}
body.woocommerce-account .woocommerce-MyAccount-navigation li a svg{display:none}

/* [12] product gallery sticky */
/* The summary column runs 540px taller than the gallery, leaving a large void on the
   left. Sticking the gallery within its own column uses that space instead of
   changing any content or spacing. Desktop only; no effect once stacked. */
@media (min-width:1025px){
.jhb-product-hero .jhb-product-gallery{position:sticky;top:110px;align-self:start}
}

/* [13] decorative art to prototype spec */
/* Prototype: flower-line 420px, opacity .1, rotate(-12deg) at top:-150px left:-90px. */
.jhb-cta-decor{opacity:.1}
.jhb-cta-decor img{transform:rotate(-12deg)}

/* [14] final CTA radial highlight */
/* Prototype: radial-gradient(circle at 78% 18%,rgba(255,255,255,.34),transparent 30%) over #eadbd2.
   The base colour is set natively on the container; this adds the highlight above it. */
body:not(.rtl) .elementor-7027 .elementor-element.jhb-final-cta{background-image:radial-gradient(circle at 78% 18%,rgba(255,255,255,.34),transparent 30%)}

/* [15] page-hero figure to prototype spec */
/* Prototype: <figure min-height:360px;overflow:hidden> with the image at
   width/height 100% + object-fit:cover, plus image-breathe 18s alternate.
   Ours sat at intrinsic height, leaving cream below it in every page hero. */
@keyframes jhb-image-breathe{from{transform:scale(1.01)}to{transform:scale(1.055)}}
.jhb-pagehero-figure{align-self:stretch;min-height:360px;overflow:hidden}
.jhb-pagehero-figure .elementor-widget-image,.jhb-pagehero-figure .elementor-widget-container,.jhb-pagehero-figure figure{height:100%;margin:0}
.jhb-pagehero-figure img{width:100%;height:100%;object-fit:cover;animation:jhb-image-breathe 18s ease-in-out infinite alternate}
.jhb-pagehero{border-bottom:1px solid rgba(37,43,39,.14)}
@media (prefers-reduced-motion:reduce){.jhb-pagehero-figure img{animation:none}}

/* [16] header headroom 1181-1440 */
/* The full header needs ~1416px of content box. Between the tablet breakpoint (1180)
   and 1440 it overflowed and pushed BOOK off the right edge. Tighten spacing (container
   column-gap 14px, nav item padding 5px) so the SHOP pill stays visible at these widths. Elementor emits these
   at 0,3,0 from post-7059.css which loads after the kit, so 0,4,1 .elementor-kit-7s are used. */
@media (min-width:1181px) and (max-width:1440px){
body:not(.rtl) .elementor-7059 .elementor-element.jhb-header{--padding-left:24px;--padding-right:24px;--column-gap:14px;column-gap:14px}
body:not(.rtl) .elementor-7059 .elementor-element.jhb-nav .elementor-nav-menu--main .elementor-item{padding-left:5px;padding-right:5px}
body:not(.rtl) .elementor-7059 .elementor-element.jhb-nav .elementor-widget-nav-menu{--e-nav-menu-horizontal-menu-item-margin:calc(10px / 2)}
}
/* Safety net: the header must never push content off-screen at any width. */
.jhb-header{min-width:0}
.jhb-header>.e-con,.jhb-header>.elementor-element{min-width:0}

/* ==== [17] HEADER ACTION PILLS - PROTOTYPE PARITY ====
   Prototype: account link and bag button share one treatment -
   46x46 min, 1px rgba(37,43,39,.16) ring, 999px radius,
   rgba(255,253,248,.82) fill, #3f4b41 glyph, 17px svg,
   hover: border-color #3f4b41 + translateY(-2px).
   Elementor's framed icon view couples border-color to primary_color,
   so the ring tint has to be forced back here at 0,6,1 to beat
   post-7059.css (kit CSS loads first, so a tie would lose). */
body:not(.rtl) .elementor-7059 .elementor-element.elementor-widget.jhb-account-icon .elementor-icon{min-width:46px;min-height:46px;border-color:rgba(37,43,39,.16);background-color:rgba(255,253,248,.82);color:#3F4B41}
body:not(.rtl) .elementor-7059 .elementor-element.elementor-widget.jhb-account-icon .elementor-icon:hover{border-color:#3F4B41;background-color:rgba(255,253,248,.82);color:#3F4B41;transform:translateY(-2px)}
body:not(.rtl) .elementor-7059 .elementor-element.elementor-widget.jhb-account-icon .elementor-icon svg{width:17px;height:17px}
.jhb-menu-cart .elementor-menu-cart__toggle .elementor-button:hover{border-color:#3F4B41;transform:translateY(-2px)}
@media (prefers-reduced-motion:reduce){.jhb-header .jhb-account-icon .elementor-icon,.jhb-menu-cart .elementor-menu-cart__toggle .elementor-button{transition:none}body:not(.rtl) .elementor-7059 .elementor-element.elementor-widget.jhb-account-icon .elementor-icon:hover,.jhb-menu-cart .elementor-menu-cart__toggle .elementor-button:hover{transform:none}}

/* ==== [18] ABOUT CTA BAND - PROTOTYPE PARITY ====
   Prototype About closing section:
   background: radial-gradient(circle at 15% 90%, rgba(178,146,85,.14), transparent 32%), #3f4b41
   The solid is set natively on the container; Elementor's gradient control
   cannot express a soft radial layered over a solid, so the highlight
   lives here as background-image. */
body:not(.rtl) .elementor-7030 .elementor-element.jhb-ctaband{background-image:radial-gradient(circle at 15% 90%,rgba(178,146,85,.14),transparent 32%)}

/* ==== [19] HOME H1 ANIMATED WORD - PROTOTYPE PARITY ====
   The prototype builds "butterfly" as nine separately animated letters:
   each emerges from blur/rotateX, then carries a slow travelling lustre
   gradient. Behind them a pair of halo wings unfolds once, and three
   gold sparkles pulse. Decorative only: the readable word is a
   visually-hidden span, the letters and ornaments are aria-hidden,
   nothing is interactive and nothing leaves the heading box. */
.jhb-bw{display:inline-grid;margin-left:.055em;letter-spacing:-.045em;line-height:inherit;vertical-align:baseline;isolation:isolate;position:relative}
.jhb-bw-dot{color:#2F4639}
.jhb-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.jhb-bw-halo{pointer-events:none;position:absolute;inset:-.17em -.12em -.06em;z-index:1}
.jhb-bw-wing{width:.5em;height:.72em;position:absolute;top:.04em;opacity:0;border:1px solid rgba(183,145,80,.42);background:radial-gradient(circle at 38% 30%,rgba(255,255,255,.62),transparent 32%),linear-gradient(145deg,rgba(229,208,170,.18),rgba(118,139,118,.04));filter:blur(.2px) drop-shadow(0 8px 16px rgba(112,84,49,.12))}
.jhb-bw-wing--l{left:-.15em;border-radius:92% 28% 72% 35%;transform-origin:92% 72%;animation:jhb-bw-wing-left 1.65s 620ms cubic-bezier(.16,1,.3,1) both}
.jhb-bw-wing--r{right:-.09em;border-radius:28% 92% 35% 72%;transform-origin:8% 72%;animation:jhb-bw-wing-right 1.65s 620ms cubic-bezier(.16,1,.3,1) both}
.jhb-bw-letters{display:inline-flex;grid-area:1 / 1;perspective:500px;position:relative;z-index:3}
.jhb-bw-letters b{display:inline-block;font-weight:inherit;font-style:inherit;color:transparent;background:linear-gradient(112deg,#34473b 0%,#647964 29%,#c5a568 48%,#6b7e69 67%,#304338 100%);background-size:240% 100%;background-position:100% 50%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;transform-origin:50% 82%;animation:jhb-bl-emerge 1080ms cubic-bezier(.16,1,.3,1) both,jhb-bl-lustre 8s ease-in-out infinite}
.jhb-bw-letters b:nth-child(1){animation-delay:530ms,2000ms}
.jhb-bw-letters b:nth-child(2){animation-delay:597ms,2045ms}
.jhb-bw-letters b:nth-child(3){animation-delay:664ms,2090ms}
.jhb-bw-letters b:nth-child(4){animation-delay:731ms,2135ms}
.jhb-bw-letters b:nth-child(5){animation-delay:798ms,2180ms}
.jhb-bw-letters b:nth-child(6){animation-delay:865ms,2225ms}
.jhb-bw-letters b:nth-child(7){animation-delay:932ms,2270ms}
.jhb-bw-letters b:nth-child(8){animation-delay:999ms,2315ms}
.jhb-bw-letters b:nth-child(9){animation-delay:1066ms,2360ms}
.jhb-bw-spark{width:.055em;height:.055em;border-radius:50%;background:#d8b66f;box-shadow:0 0 9px rgba(216,182,111,.72);pointer-events:none;opacity:0;position:absolute;z-index:5;animation:jhb-bw-sparkle 9.2s ease-out infinite}
.jhb-bw-spark--1{top:-.08em;left:38%;animation-delay:1.48s}
.jhb-bw-spark--2{top:.16em;left:66%;animation-delay:1.73s}
.jhb-bw-spark--3{top:-.16em;left:86%;animation-delay:1.96s}
@keyframes jhb-bw-wing-left{0%{opacity:0;transform:rotate(12deg) scaleX(.08) scaleY(.72)}48%{opacity:.54;transform:rotate(-18deg) scaleX(1) scaleY(1)}72%{opacity:.3;transform:rotate(-12deg) scaleX(.88) scaleY(.94)}100%{opacity:.1;transform:rotate(-14deg) scaleX(.9) scaleY(.96)}}
@keyframes jhb-bw-wing-right{0%{opacity:0;transform:rotate(-12deg) scaleX(.08) scaleY(.72)}48%{opacity:.54;transform:rotate(18deg) scaleX(1) scaleY(1)}72%{opacity:.3;transform:rotate(12deg) scaleX(.88) scaleY(.94)}100%{opacity:.1;transform:rotate(14deg) scaleX(.9) scaleY(.96)}}
@keyframes jhb-bl-emerge{0%{opacity:0;filter:blur(11px);transform:translate3d(0,.34em,0) rotateX(72deg) scale(.76)}46%{opacity:1;filter:blur(1.8px)}72%{transform:translate3d(0,-.035em,0) rotateX(-4deg) scale(1.018)}100%{opacity:1;filter:blur(0);transform:none}}
@keyframes jhb-bl-lustre{0%,12%,100%{background-position:100% 50%}21%,32%{background-position:0% 50%}43%,92%{background-position:72% 50%}}
@keyframes jhb-bw-sparkle{0%,3%,100%{opacity:0;transform:translate3d(-.12em,.16em,0) scale(.45)}7%{opacity:.95;transform:translate3d(0,0,0) scale(1)}14%{opacity:0;transform:translate3d(.12em,-.22em,0) scale(.2)}}
@supports not ((background-clip:text) or (-webkit-background-clip:text)){.jhb-bw-letters b{color:#3F4B41;-webkit-text-fill-color:#3F4B41;background:none}}
@media (prefers-reduced-motion:reduce){.jhb-bw-letters b{animation:none;background-position:72% 50%}.jhb-bw-spark{animation:none}.jhb-bw-wing{animation:none;opacity:.1}.jhb-bw-wing--l{transform:rotate(-14deg) scaleX(.9) scaleY(.96)}.jhb-bw-wing--r{transform:rotate(14deg) scaleX(.9) scaleY(.96)}}

/* ==== [20] STICKY HEADER WITHOUT THE SPACER CLONE ====
   Elementor's sticky motion effect cloned the whole header as a hidden
   spacer, duplicating interactive IDs (menu cart toggle, nav) and
   breaking the cart drawer. The effect is now off; the wrapper itself
   is position:sticky, which keeps its flow space with no clone.
   Prototype: header z-index 30, always visible on scroll. */
header.elementor-location-header{position:sticky;top:0;z-index:1000}
body.admin-bar header.elementor-location-header{top:32px}
@media screen and (max-width:782px){body.admin-bar header.elementor-location-header{top:46px}}
/* WP's admin bar is position:absolute at <=600px (it scrolls away), so no sticky offset there or the header floats ~46px below the top with content scrolling above it. Only logged-in users ever see an admin bar. */
@media screen and (max-width:600px){body.admin-bar header.elementor-location-header{top:0}}

/* the cart shim widget carries only a script; keep it out of the header flex row */
.jhb-cart-shim{display:none}

/* ==== [21] MOBILE FIDELITY - PROTOTYPE PARITY ====
   Ported from the prototype's own responsive rules:
   <=680: header CTA hidden (Book lives in the menu panel), action pills 42px,
   tighter header chrome, one ambient butterfly, calmer H1 sparkles.
   Feature spec chips: bordered 2x2 grid cells exactly as designed.
   Footer keeps two link columns on phones; legal row stacks left. */
.jhb-feature-specs{border-top:1px solid rgba(255,253,248,.2);border-left:1px solid rgba(255,253,248,.2);margin-top:38px}
.jhb-feature-specs .jhb-spec{border-right:1px solid rgba(255,253,248,.2);border-bottom:1px solid rgba(255,253,248,.2);padding:16px 18px;margin:0}
.jhb-feature-specs .jhb-spec .elementor-heading-title{color:rgba(255,253,248,.86)}
@media (max-width:680px){
  .jhb-header .jhb-btn-primary.jhb-header-btn{display:none}
  .jhb-header .jhb-actions{gap:6px}
  body:not(.rtl) .elementor-7059 .elementor-element.elementor-widget.jhb-account-icon .elementor-icon{min-width:42px;min-height:42px;padding:10px}
  body:not(.rtl) .elementor-7059 .elementor-element.jhb-menu-cart .elementor-menu-cart__toggle .elementor-button{min-width:42px;min-height:42px;padding:0 10px}
  body:not(.rtl) .elementor-7059 .elementor-element.jhb-header{--padding-top:12px;--padding-bottom:12px;--padding-left:16px;--padding-right:16px;gap:10px}
  .jhb-header .jhb-brand img{width:36px;height:auto}
  .jhb-header .jhb-wordmark{font-size:17px}
  .jhb-header .jhb-tagline{display:none}
  .jhb-sky .jhb-fly:nth-child(n+2){display:none}
  .jhb-bw{margin-left:.035em}
  .jhb-bw-spark{animation-duration:11.5s}
  .jhb-bw-spark--3{display:none}
}
@media (max-width:767px){
  .jhb-footer-cols{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr));gap:34px 24px}
  .jhb-footer-cols>.e-con{--width:auto;width:auto}
  .jhb-footer-bottom{flex-direction:column;align-items:flex-start;gap:12px}
  .jhb-footer-legal .elementor-nav-menu--main .elementor-nav-menu{flex-wrap:wrap;justify-content:flex-start}
  .jhb-feature-priceloop .e-loop-item,.jhb-feature-priceloop .e-loop-item>.e-con{flex-wrap:wrap;justify-content:flex-start;row-gap:10px}
}

/* ==== [22] BW FLIGHT + SHIMMER - the two prototype layers block [19] missed ====
   A tiny CSS-drawn butterfly crosses the word every 9.2s (bobbing, flapping
   420ms), and a white-gold shimmer sweeps the letters every 7.5s. */
.jhb-bw-shimmer{grid-area:1 / 1;color:transparent;background:linear-gradient(102deg,transparent 0 38%,rgba(255,255,255,.1) 43%,rgba(255,247,220,.96) 49%,rgba(232,207,156,.72) 53%,transparent 60% 100%);background-size:260% 100%;background-position:150% 50%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;pointer-events:none;position:relative;z-index:4;opacity:0;filter:drop-shadow(0 0 12px rgba(220,185,117,.2));animation:jhb-bw-shimmer 7.5s 1.8s ease-in-out infinite}
.jhb-bw-flight{display:block;width:.3em;height:.24em;pointer-events:none;opacity:0;position:absolute;top:-.06em;left:-2%;z-index:6;filter:drop-shadow(0 4px 8px rgba(108,79,39,.2));animation:jhb-bw-flight 9.2s 1.12s cubic-bezier(.4,0,.2,1) infinite}
.jhb-bw-flight-wing{display:block;width:54%;height:88%;border:1px solid rgba(155,116,58,.86);background:radial-gradient(circle at 35% 28%,rgba(255,255,255,.92),transparent 28%),linear-gradient(145deg,rgba(225,193,132,.82),rgba(116,139,116,.34));position:absolute;top:0}
.jhb-bw-flight-wing--l{left:0;border-radius:94% 24% 78% 36%;transform:rotate(-26deg);transform-origin:100% 78%;animation:jhb-bw-flap-l 420ms ease-in-out infinite alternate}
.jhb-bw-flight-wing--r{right:0;border-radius:24% 94% 36% 78%;transform:rotate(26deg);transform-origin:0 78%;animation:jhb-bw-flap-r 420ms ease-in-out infinite alternate}
.jhb-bw-flight-body{display:block;width:2px;height:65%;border-radius:999px;background:#7f633c;position:absolute;top:24%;left:calc(50% - 1px);z-index:2}
@keyframes jhb-bw-shimmer{0%,10%,100%{background-position:150% 50%;opacity:0}15%{opacity:.86}27%{background-position:-65% 50%;opacity:.96}33%,92%{background-position:-65% 50%;opacity:0}}
@keyframes jhb-bw-flight{0%{left:-3%;top:.32em;opacity:0;transform:rotate(-10deg) scale(.64)}3%{opacity:.94}11%{left:27%;top:-.23em;opacity:1;transform:rotate(7deg) scale(.84)}20%{left:58%;top:.03em;transform:rotate(-5deg) scale(.72)}30%{left:91%;top:-.28em;opacity:.9;transform:rotate(8deg) scale(.86)}37%{left:108%;top:-.5em;opacity:0;transform:rotate(-3deg) scale(.7)}38%,100%{left:108%;top:-.5em;opacity:0}}
@keyframes jhb-bw-flap-l{to{transform:rotate(-9deg) scaleX(.28)}}
@keyframes jhb-bw-flap-r{to{transform:rotate(9deg) scaleX(.28)}}
@media (max-width:680px){.jhb-bw-flight{width:.27em;height:.22em}}
@media (prefers-reduced-motion:reduce){.jhb-bw-shimmer,.jhb-bw-flight,.jhb-bw-flight-wing{animation:none}.jhb-bw-flight{opacity:0}}

/* ==== [23] MOBILE MENU CARD - PROTOTYPE PARITY ====
   Prototype menu is a compact card anchored top-right: 340px max, cream,
   hairline border, deep soft shadow, serif 23px links with dividers,
   then full-width Shop (gold outline) and Book (solid green) pills.
   The Account link and both pills are menu items hidden on desktop. */
#jhb-primary-nav .elementor-nav-menu--main .jhb-menu-account,
#jhb-primary-nav .elementor-nav-menu--main .jhb-menu-shop{display:none}
#jhb-primary-nav{position:relative}
/* The dropdown class sits on BOTH the container div and the inner ul, and
   Elementor collapses the closed container with --menu-height (max-height 0).
   Style ONLY the container, and gate the card chrome on the open state so
   the closed state collapses to nothing (padding on a max-height:0 box was
   painting a ghost bar under the header). */
#jhb-primary-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown{
  position:absolute;top:calc(100% + 12px);right:0;left:auto;z-index:40;
  width:min(340px,calc(100vw - 32px));
  background:#FFFDF8;transform-origin:top right}
#jhb-primary-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown[aria-hidden="true"]{
  padding:0;border:0;box-shadow:none;visibility:hidden}
#jhb-primary-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown[aria-hidden="false"]{
  visibility:visible;padding:10px 18px 22px;border:1px solid var(--jhb-line,rgba(37,43,39,.14));
  box-shadow:0 28px 80px rgba(70,52,43,.12);
  animation:jhb-menu-arrive 260ms cubic-bezier(.22,1,.36,1) both}
ul.elementor-nav-menu--dropdown{background:transparent;box-shadow:none;border:0}
@keyframes jhb-menu-arrive{from{opacity:0;transform:translateY(-10px) scale(.97)}to{opacity:1;transform:none}}
#jhb-primary-nav .elementor-nav-menu--dropdown li:last-child a,
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-account a{border-bottom:0}
/* the two pills */
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-shop{margin-top:18px}
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-book{margin-top:10px}
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-shop a,
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-book a{
  width:100%;min-height:42px;display:inline-flex;align-items:center;justify-content:center;
  padding:12px 20px;border-radius:999px;
  font-family:var(--jhb-sans);font-size:10px;font-weight:800;letter-spacing:.09em;text-transform:uppercase}
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-shop a{
  border:1px solid rgba(178,141,80,.72);background:rgba(255,253,248,.82);color:#765C32}
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-book a{
  border:1px solid #2F4639;background:#2F4639;color:#FFFDF8;font-weight:800}
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-book a:hover,
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-book a:focus{background:#2C382F;color:#FFFDF8}
@media (prefers-reduced-motion:reduce){#jhb-primary-nav .elementor-nav-menu--dropdown{animation:none}}

/* ==== [24] CART PAGE - PROTOTYPE SKIN OVER WOOCOMMERCE BLOCKS ====
   Visual skin only: the WooCommerce Blocks cart keeps its own markup,
   state handling and checkout wiring. Everything here is scoped to
   body.woocommerce-cart so the checkout page, mini-cart drawer and
   other templates are untouched. */
body.woocommerce-cart .hero-section{display:none}
body.woocommerce-cart .jhb-cart-hero{
  background:linear-gradient(118deg,#F4EADF 0%,#FFFDF8 64%);
  border-bottom:1px solid var(--jhb-line,rgba(37,43,39,.14));
  padding:clamp(36px,5vw,72px) clamp(22px,6vw,88px) clamp(32px,4vw,52px);margin-bottom:0}
body.woocommerce-cart .jhb-cart-hero > *{max-width:1420px;margin-left:auto;margin-right:auto}
body.woocommerce-cart .jhb-cart-eyebrow{margin:0 0 14px;color:#B29255;font-size:11px;font-weight:800;letter-spacing:.21em;text-transform:uppercase}
body.woocommerce-cart .jhb-cart-title{margin:0;font-family:var(--jhb-serif,Georgia,serif);font-size:clamp(40px,5.4vw,80px);font-weight:400;letter-spacing:-.055em;line-height:.96;color:#20261F}
body.woocommerce-cart .jhb-cart-sub{max-width:560px;margin:16px auto 0 0;color:#646962;font-size:15px;line-height:1.7}

/* layout shell */
body.woocommerce-cart .wp-block-woocommerce-cart{max-width:1420px;margin-inline:auto;padding:clamp(44px,6vw,86px) clamp(22px,6vw,88px)}
body.woocommerce-cart .wc-block-components-sidebar-layout .wc-block-components-main{padding-right:clamp(38px,5vw,80px)}

/* items table */
body.woocommerce-cart table.wc-block-cart-items,
body.woocommerce-cart table.wc-block-cart-items td,
body.woocommerce-cart table.wc-block-cart-items th{border:0}
body.woocommerce-cart .wc-block-cart-items th{
  padding:0 0 16px;color:#646962;font-size:9px;font-weight:800;letter-spacing:.15em;text-transform:uppercase;border-bottom:1px solid var(--jhb-line,rgba(37,43,39,.14))}
body.woocommerce-cart .wc-block-cart-items__row td{padding-top:clamp(26px,3vw,36px);padding-bottom:clamp(26px,3vw,36px);border-bottom:1px solid var(--jhb-line,rgba(37,43,39,.14))}
body.woocommerce-cart .wc-block-cart-item__image{width:172px}
body.woocommerce-cart .wc-block-cart-item__image a{display:block;padding:14px;background:#F5EFE5}
body.woocommerce-cart .wc-block-cart-item__image img{aspect-ratio:1;object-fit:cover;mix-blend-mode:multiply}
body.woocommerce-cart .wc-block-components-product-name{
  font-family:var(--jhb-serif,Georgia,serif);font-size:clamp(19px,1.7vw,24px);letter-spacing:-.02em;line-height:1.25;color:#20261F;text-decoration:none}
body.woocommerce-cart .wc-block-components-product-name:hover{color:#3F4B41;text-decoration:underline;text-underline-offset:4px}
body.woocommerce-cart .wc-block-cart-item__prices{margin-top:9px}
body.woocommerce-cart .wc-block-cart-item__prices .wc-block-components-product-price{color:#646962;font-size:14px}
body.woocommerce-cart .wc-block-components-product-metadata{margin-top:11px;color:#646962;font-size:13px;line-height:1.7}
body.woocommerce-cart .wc-block-components-product-badge{
  border:0;border-radius:999px;background:#EAD8D5;color:#6B544E;padding:5px 11px;font-size:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}

/* quantity + remove */
body.woocommerce-cart .wc-block-components-quantity-.elementor-kit-7{
  border:1px solid rgba(37,43,39,.2);border-radius:999px;background:#FFFDF8;margin:24px 0 0}
body.woocommerce-cart .wc-block-components-quantity-.elementor-kit-7:after{display:none}
body.woocommerce-cart .wc-block-components-quantity-.elementor-kit-7 input.wc-block-components-quantity-.elementor-kit-7__input{
  border:0;background:transparent;min-width:36px;font-family:var(--jhb-serif,Georgia,serif);font-size:19px;color:#20261F}
body.woocommerce-cart .wc-block-components-quantity-.elementor-kit-7 button{
  width:44px;height:44px;border:0;background:transparent;color:#3F4B41;font-size:18px;opacity:1;cursor:pointer}
body.woocommerce-cart .wc-block-components-quantity-.elementor-kit-7 button:hover{background:#F5EFE5;border-radius:50%;color:#3F4B41}
body.woocommerce-cart .wc-block-cart-item__remove-link{
  color:#646962;font-size:11px;font-weight:700;letter-spacing:.06em;text-decoration:underline;text-underline-offset:4px}
body.woocommerce-cart .wc-block-cart-item__remove-link:hover{color:#A4553F}
body.woocommerce-cart .wc-block-cart-item__total .wc-block-components-product-price{
  font-family:var(--jhb-serif,Georgia,serif);font-size:clamp(19px,1.6vw,23px);color:#20261F}
body.woocommerce-cart .wc-block-cart-item__total .wc-block-components-product-price del{font-size:.6em;opacity:.5}
body.woocommerce-cart .wc-block-components-sale-badge{background:#EAD8D5;color:#6B544E;border:0;border-radius:999px}

/* order summary card */
body.woocommerce-cart .wc-block-cart__sidebar{
  border:1px solid rgba(37,43,39,.1);background:#F5EFE5;
  box-shadow:0 18px 55px rgba(74,56,43,.07);padding:clamp(26px,3vw,38px)}
body.woocommerce-cart .wc-block-cart__sidebar .wc-block-components-title{
  margin:0 0 22px;color:#646962;font-size:9px;font-weight:800;letter-spacing:.15em;text-transform:uppercase;font-family:var(--jhb-sans,inherit)}
body.woocommerce-cart .wc-block-components-totals-item{padding:0 0 13px;color:#4F554F;font-size:14px}
body.woocommerce-cart .wc-block-components-totals-item__value{font-weight:600;color:#20261F}
body.woocommerce-cart .wc-block-components-totals-footer-item{
  margin-top:7px;padding:19px 0 0;border-top:1px solid var(--jhb-line,rgba(37,43,39,.14))}
body.woocommerce-cart .wc-block-components-totals-footer-item .wc-block-components-totals-item__value{
  font-family:var(--jhb-serif,Georgia,serif);font-size:21px;font-weight:400}

/* coupon - present but secondary */
body.woocommerce-cart .wc-block-components-totals-coupon{margin-top:10px;padding-top:16px;border-top:1px solid var(--jhb-line,rgba(37,43,39,.14))}
body.woocommerce-cart .wc-block-components-totals-coupon .wc-block-components-panel__button{
  color:#7D6A3F;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;text-decoration:none}
body.woocommerce-cart .wc-block-components-totals-coupon .wc-block-components-panel__button:hover{text-decoration:underline;text-underline-offset:4px}
body.woocommerce-cart .wc-block-components-totals-coupon .wc-block-components-text-input input[type=text]{
  min-height:48px;border:1px solid rgba(37,43,39,.2);border-radius:0;background:#FFFDF8;color:#20261F;font-size:15px}
body.woocommerce-cart .wc-block-components-totals-coupon .wc-block-components-text-input label{color:#646962}
body.woocommerce-cart .wc-block-components-totals-coupon__button{
  min-height:48px;border:1px solid #3F4B41;border-radius:0;background:transparent;color:#3F4B41;
  font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase}
body.woocommerce-cart .wc-block-components-totals-coupon__button:hover{background:#3F4B41;color:#FFFDF8}
body.woocommerce-cart .wc-block-components-chip{border-radius:0;border:1px dashed rgba(178,146,85,.6);background:#FFFDF8;color:#7D6A3F}

/* express payment + checkout CTA */
body.woocommerce-cart .wp-block-woocommerce-cart-express-payment-block:not(:has(button,iframe)){display:none}
body.woocommerce-cart .wc-block-components-express-payment-continue-rule{color:#8C918B;font-size:11px;letter-spacing:.1em;text-transform:uppercase}
body.woocommerce-cart .wc-block-cart__submit-container{margin-top:20px}
body.woocommerce-cart .wc-block-cart__submit-button.wc-block-components-button:not(.is-link){
  width:100%;min-height:56px;border-radius:999px;border:1px solid #3F4B41;background:#3F4B41;color:#FFFDF8;
  font-family:var(--jhb-sans,inherit);font-size:12px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  transition:background-color .25s ease,border-color .25s ease}
body.woocommerce-cart .wc-block-cart__submit-button.wc-block-components-button:not(.is-link):hover,
body.woocommerce-cart .wc-block-cart__submit-button.wc-block-components-button:not(.is-link):focus{background:#2C382F;border-color:#2C382F;color:#FFFDF8}
body.woocommerce-cart .wc-block-cart__submit-container::after{
  content:"Secure checkout · Australian shipping · Carefully packaged";
  display:block;margin-top:15px;text-align:center;color:#7A7E78;font-size:11px;line-height:1.6;letter-spacing:.02em}
body.woocommerce-cart .wc-block-cart__payment-method-icons{margin-top:14px;opacity:.75}

/* notices (coupon success/error, removed item, cart errors) */
body.woocommerce-cart .wc-block-components-notice-banner{border-radius:0;font-size:13px;line-height:1.6}
body.woocommerce-cart .wc-block-components-notice-banner.is-error{background:#F7ECE8;border-color:rgba(164,85,63,.45);color:#6B4237}
body.woocommerce-cart .wc-block-components-notice-banner.is-success{background:#EFF3EC;border-color:rgba(63,75,65,.4);color:#3F4B41}
body.woocommerce-cart .wc-block-components-notice-banner.is-info{background:#F5EFE5;border-color:rgba(37,43,39,.2);color:#39473D}
body.woocommerce-cart .wc-block-components-notice-banner__content .wc-forward{color:inherit;text-decoration:underline;text-underline-offset:3px}

/* loading / updating states */
body.woocommerce-cart .wc-block-components-skeleton__row,
body.woocommerce-cart .wc-block-components-skeleton::after,
body.woocommerce-cart .wc-block-components-skeleton{background-color:rgba(37,43,39,.06)}
body.woocommerce-cart .wc-block-cart--is-loading *{color:transparent}

/* empty cart */
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block{
  background:#F5EFE5;padding:clamp(56px,9vw,116px) clamp(24px,5vw,56px);text-align:center}
body.woocommerce-cart .jhb-empty-eyebrow{margin:0 0 14px;color:#B29255;font-size:11px;font-weight:800;letter-spacing:.21em;text-transform:uppercase}
body.woocommerce-cart .jhb-empty-title{
  max-width:640px;margin:0 auto;font-family:var(--jhb-serif,Georgia,serif);font-size:clamp(30px,3.6vw,52px);
  font-weight:400;letter-spacing:-.04em;line-height:1.04;color:#20261F}
body.woocommerce-cart .jhb-empty-msg{max-width:520px;margin:22px auto 0;color:#646962;font-size:15px;line-height:1.8}
body.woocommerce-cart .jhb-empty-actions{margin-top:36px}
body.woocommerce-cart .jhb-empty-cta .wp-block-button__link{
  min-height:52px;display:inline-flex;align-items:center;justify-content:center;padding:15px 30px;
  border:1px solid #3F4B41;border-radius:999px;background:#3F4B41;color:#FFFDF8;
  font-size:12px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;transition:background-color .25s ease}
body.woocommerce-cart .jhb-empty-cta .wp-block-button__link:hover{background:#2C382F;color:#FFFDF8}

/* mobile */
@media (max-width:700px){
  body.woocommerce-cart .jhb-cart-hero{padding:34px 22px 30px}
  body.woocommerce-cart .wp-block-woocommerce-cart{padding:40px 22px 64px}
  body.woocommerce-cart .wc-block-components-sidebar-layout .wc-block-components-main{padding-right:0}
  body.woocommerce-cart .wc-block-cart__sidebar{margin-top:34px;padding:24px 20px}
  body.woocommerce-cart .wc-block-cart-item__image{width:110px}
  body.woocommerce-cart .wc-block-cart-item__image a{padding:8px}
  body.woocommerce-cart .wc-block-components-quantity-.elementor-kit-7{margin-top:16px}
  body.woocommerce-cart .wc-block-components-quantity-.elementor-kit-7 button{width:42px;height:42px}
  body.woocommerce-cart .wc-block-cart__submit-button.wc-block-components-button:not(.is-link){min-height:52px}
}
body.woocommerce-cart .wc-block-cart__submit-container--sticky::after{content:none}

/* ==== [25] TOC ANCHOR OFFSET + SHIM HOUSEKEEPING ====
   Anchor jumps must clear the sticky header; the shim widget renders nothing. */
[id^="elementor-toc__heading-anchor"]{scroll-margin-top:120px}
.elementor-widget-theme-post-content h2[id],.elementor-widget-theme-post-content h3[id]{scroll-margin-top:120px}
.jhb-toc-shim{display:none}

/* ==== [26] ANCHOR SCROLLING ====
   Blocksy and Elementor both set html{scroll-behavior:smooth}, but smooth
   programmatic/fragment scrolling is non-functional on this stack (animations
   cancel at frame zero), which left every in-page anchor dead. The kit's
   original *{scroll-behavior:auto} lost on specificity; this wins. Anchors
   now jump instantly, as the original build intended. */
html{scroll-behavior:auto}

/* ==== [27] CART SMALL-PHONE FIT (<=430px) ====
   At 375-class widths the items table needed 41px more than the viewport.
   Fixed table layout, smaller image tile, tighter row padding; the SAVE pill
   hides here (the struck was-price still shows the saving). */
@media (max-width:430px){
  body.woocommerce-cart .wc-block-cart-item__image{width:84px}
  body.woocommerce-cart .wc-block-cart-item__image a{padding:6px}
  body.woocommerce-cart table.wc-block-cart-items{table-layout:fixed;width:100%}
  body.woocommerce-cart .wc-block-cart-items__row td{padding-top:20px;padding-bottom:20px}
  body.woocommerce-cart .wc-block-cart-item__total .wc-block-components-product-price{font-size:17px}
  body.woocommerce-cart .wc-block-cart-item__total .wc-block-components-product-badge{display:none}
  body.woocommerce-cart .wc-block-components-product-metadata{font-size:12px}
  body.woocommerce-cart .wc-block-cart-item__quantity{display:flex;flex-wrap:wrap;gap:10px}
  body.woocommerce-cart .wc-block-components-quantity-.elementor-kit-7{margin-top:12px}
}
/* ==== [28] PRODUCT QTY CONTROL SIZE ====
   Elementor Pro gives the justify-aligned add-to-cart quantity flex-basis:130px;
   when the form stacks into a column on mobile that basis becomes HEIGHT, so the
   stepper rendered as a 130px-tall box. Pin the height and dress the control in
   the JHB pill treatment used by the cart page stepper. */
.jhb-product-atc .quantity[data-type]{height:52px;--quantity-height:52px;border:1px solid rgba(37,43,39,.2);border-radius:999px;background:#FFFDF8;overflow:hidden}
.jhb-product-atc .quantity input.qty{border:0;background:transparent;font-family:var(--jhb-serif,Georgia,serif);font-size:18px;min-height:0;height:100%;color:#20261F}
@media (max-width:767px){
  .jhb-product-atc .quantity[data-type]{flex-basis:52px;width:100%}
}
/* ==== [29] FOOTER TAP TARGETS (mobile) ====
   Footer nav links sat around 22-30px tall on phones; give them comfortable
   padding and lift the legal row's 9px type to 10px at mobile only.
   Specificity 0,5+ so the widget's own emitted padding rules lose. */
@media (max-width:767px){
  body:not(.rtl) .elementor-7060 .elementor-element.jhb-footer-menu .elementor-nav-menu--main .elementor-item{padding-top:9px;padding-bottom:9px}
  body:not(.rtl) .elementor-7060 .elementor-element.jhb-footer-legal .elementor-nav-menu--main .elementor-item{padding-top:11px;padding-bottom:11px;font-size:10px}
  body:not(.rtl) .elementor-7060 .elementor-element.jhb-footer-connect .elementor-icon-list-item{padding-top:4px;padding-bottom:4px}
}
body:not(.rtl) .elementor-7111 .elementor-element.jhb-archive-products ul.products{grid-template-columns:1fr;display:grid}
body:not(.rtl) .elementor-7111 .elementor-element.jhb-archive-products ul.products li.product{width:100%;max-width:100%}
/* ==== [30] SHOP COLLECTION TWO-COLUMN ====
   Prototype: product card left, editorial copy right. The price loop reuses
   the dark-band template, so recolor it for the cream ground here. */
body:not(.rtl) .elementor-7111 .jhb-shop-pricewrap .jhb-feature-price .price{color:#20261F;font-family:var(--jhb-serif,Georgia,serif);font-size:clamp(26px,2.6vw,34px)}
body:not(.rtl) .elementor-7111 .jhb-shop-pricewrap .jhb-feature-price .price del{color:#646962;opacity:.7}
body:not(.rtl) .elementor-7111 .jhb-shop-pricewrap .jhb-feature-price .price ins{color:#20261F}
body:not(.rtl) .elementor-7111 .jhb-shop-pricewrap .jhb-feature-rating .star-rating,
body:not(.rtl) .elementor-7111 .jhb-shop-pricewrap .jhb-feature-rating .star-rating::before{color:#B28D50}
body:not(.rtl) .elementor-7111 .jhb-shop-pricewrap .jhb-feature-rating .woocommerce-review-link{color:#765C32}
body:not(.rtl) .elementor-7111 .jhb-shop-pricewrap .jhb-price-inline{background:transparent}/* prototype cream tile treatment for the collection card */
body:not(.rtl) .elementor-7111 .elementor-element.jhb-archive-products ul.products li.product{background:#F5EFE5;padding:clamp(22px,3vw,44px);box-shadow:0 18px 55px rgba(74,56,43,.07);border-radius:0}

/* ==== [31] CHECKOUT PAGE SKIN ====
   Visual skin only over the WooCommerce Blocks checkout, scoped to
   body.woocommerce-checkout. No layout mechanics, field logic, Stripe
   elements or express-payment internals are touched. */
body.woocommerce-checkout .hero-section{background:linear-gradient(118deg,#F4EADF 0%,#FFFDF8 64%);border-bottom:1px solid var(--jhb-line,rgba(37,43,39,.14))}
body.woocommerce-checkout .hero-section .page-title{font-family:var(--jhb-serif,Georgia,serif);font-size:clamp(34px,4.5vw,60px);font-weight:400;letter-spacing:-.05em;color:#20261F}
body.woocommerce-checkout .wp-block-woocommerce-checkout{max-width:1420px;margin-inline:auto;padding:clamp(40px,5vw,72px) clamp(22px,6vw,88px)}
/* step titles */
body.woocommerce-checkout .wc-block-components-checkout-step__title{font-family:var(--jhb-sans,inherit);font-size:11px;font-weight:800;letter-spacing:.15em;text-transform:uppercase;color:#646962}
body.woocommerce-checkout .wc-block-components-checkout-step__description{color:#7A7E78;font-size:13px}
/* inputs: square, cream, forest focus */
body.woocommerce-checkout .wc-block-components-text-input input,
body.woocommerce-checkout .wc-block-components-combobox .components-combobox-control__suggestions-container input,
body.woocommerce-checkout select,
body.woocommerce-checkout .wc-block-components-textarea{border:1px solid rgba(37,43,39,.22);border-radius:0;background:#FFFDF8;color:#20261F}
body.woocommerce-checkout .wc-block-components-text-input input:focus,
body.woocommerce-checkout select:focus,
body.woocommerce-checkout .wc-block-components-textarea:focus{border-color:#3F4B41;box-shadow:0 0 0 1px #3F4B41}
body.woocommerce-checkout .wc-block-components-text-input label{color:#646962}
/* radios / payment options */
body.woocommerce-checkout .wc-block-components-radio-control__option{border-color:rgba(37,43,39,.16)}
body.woocommerce-checkout .wc-block-components-radio-control__input:checked{border-color:#3F4B41;background:#3F4B41}
body.woocommerce-checkout .wc-block-checkout__payment-method .wc-block-components-radio-control-accordion-option{background:#FFFDF8}
/* order summary card */
body.woocommerce-checkout .wc-block-components-sidebar .wp-block-woocommerce-checkout-order-summary-block{border:1px solid rgba(37,43,39,.1);background:#F5EFE5;box-shadow:0 18px 55px rgba(74,56,43,.07);padding:clamp(22px,2.5vw,32px);border-radius:0}
body.woocommerce-checkout .wc-block-components-order-summary-item__description p{color:#646962;font-size:13px}
body.woocommerce-checkout .wc-block-components-totals-item{color:#4F554F;font-size:14px}
body.woocommerce-checkout .wc-block-components-totals-item__value{font-weight:600;color:#20261F}
body.woocommerce-checkout .wc-block-components-totals-footer-item .wc-block-components-totals-item__value{font-family:var(--jhb-serif,Georgia,serif);font-size:21px;font-weight:400}
body.woocommerce-checkout .wc-block-components-panel__button{color:#7D6A3F;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
/* place order button: the JHB solid pill */
body.woocommerce-checkout .wc-block-components-checkout-place-order-button{width:100%;min-height:56px;border-radius:999px;border:1px solid #3F4B41;background:#3F4B41;color:#FFFDF8;font-family:var(--jhb-sans,inherit);font-size:12px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;transition:background-color .25s ease,border-color .25s ease}
body.woocommerce-checkout .wc-block-components-checkout-place-order-button:hover,
body.woocommerce-checkout .wc-block-components-checkout-place-order-button:focus{background:#2C382F;border-color:#2C382F;color:#FFFDF8}
body.woocommerce-checkout .wc-block-checkout__actions_row .wc-block-components-checkout-return-to-cart-button{color:#646962;text-decoration:underline;text-underline-offset:4px}
/* notices in palette (validation reds keep their semantics, softened) */
body.woocommerce-checkout .wc-block-components-notice-banner{border-radius:0;font-size:13px}
body.woocommerce-checkout .wc-block-components-notice-banner.is-error{background:#F7ECE8;border-color:rgba(164,85,63,.45);color:#6B4237}
body.woocommerce-checkout .wc-block-components-notice-banner.is-success{background:#EFF3EC;border-color:rgba(63,75,65,.4);color:#3F4B41}
body.woocommerce-checkout .wc-block-components-validation-error p{color:#A4553F}
/* mobile */
@media (max-width:700px){
  body.woocommerce-checkout .wp-block-woocommerce-checkout{padding:32px 22px 64px}
  body.woocommerce-checkout .wc-block-components-sidebar .wp-block-woocommerce-checkout-order-summary-block{margin-top:28px;padding:20px 18px}
  body.woocommerce-checkout .wc-block-components-checkout-place-order-button{min-height:52px}
}
/* [31b] summary item breathing room, esp. the 700-1000px band */
body.woocommerce-checkout .wc-block-components-order-summary-item__description{min-width:0;flex:1 1 auto}
@media (max-width:1024px){
  body.woocommerce-checkout .wc-block-components-sidebar .wp-block-woocommerce-checkout-order-summary-block{padding:16px 14px}
  body.woocommerce-checkout .wc-block-components-order-summary-item__description p{font-size:12px}
}

/* [32] product: final CTA price + sticky mobile buy bar */
.jhb-pcta h2{max-width:700px}
.jhb-pcta .jhb-pcta-price .price{color:#FFFDF8;font-family:Georgia,'Times New Roman',serif;font-size:46px;font-weight:400;line-height:1.1}
.jhb-pcta .jhb-pcta-price .price del,.woocommerce div.product .jhb-pcta-price .price del{display:inline;font-size:.5em;opacity:.65;margin-right:10px;text-decoration:line-through;text-decoration-thickness:1px}
.jhb-pcta .jhb-pcta-price ins{text-decoration:none}
.jhb-pbar-price .price{color:#20261F;font-family:Georgia,'Times New Roman',serif;font-size:19px;font-weight:400;line-height:1.25}
.jhb-pbar-price .price del,.woocommerce div.product .jhb-pbar-price .price del{display:inline;font-size:14px;opacity:.7;color:#646962;margin-right:6px;text-decoration:line-through;text-decoration-thickness:1px}
.jhb-pbar-price ins{text-decoration:none}
.jhb-buybar{display:none!important}
@media (max-width:680px){
  body.single-product .jhb-buybar{display:flex!important;position:fixed;left:0;right:0;bottom:0;z-index:45;margin:0;max-width:none;border-top:1px solid rgba(37,43,39,.14);background:rgba(255,253,248,.96);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);padding:12px 16px calc(12px + env(safe-area-inset-bottom))}
  body.single-product .jhb-buybar .jhb-pbar-name .elementor-heading-title{max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  body.single-product .jhb-buybar .jhb-btn .elementor-button{min-height:42px;padding:12px 20px;font-size:10px}
  body.single-product{padding-bottom:72px}
}

.jhb-pbar-price .price{margin:0}
@media (max-width:680px){
  body.single-product .jhb-buybar{flex-wrap:nowrap}
  body.single-product .jhb-buybar .e-con{padding:0}
}

/* [33] checkout: readable order summary + no butterfly overlay on forms.
   The summary column was starving: entry-content side padding + the checkout card's
   6vw sides + wc's 35% sidebar + 32px card padding left the line-item row ~190px,
   wrapping the product name one character per line. Trim each layer, give the sidebar
   a larger share while wc's is-large layout is active, and cap the total-price cell so
   the sale badge cannot crush the description. The fixed .jhb-sky butterfly layer
   drifts over form fields on checkout, so it stays off on this page only. */
body.woocommerce-checkout .jhb-sky{display:none}
body.woocommerce-checkout .entry-content{padding-left:clamp(16px,2.5vw,36px);padding-right:clamp(16px,2.5vw,36px)}
body.woocommerce-checkout .wp-block-woocommerce-checkout{padding-left:clamp(22px,3.5vw,54px);padding-right:clamp(22px,3.5vw,54px)}
body.woocommerce-checkout .wc-block-components-sidebar-layout.is-large .wc-block-components-main{width:58%}
body.woocommerce-checkout .wc-block-components-sidebar-layout.is-large .wc-block-components-sidebar{width:42%}
body.woocommerce-checkout .wc-block-components-sidebar .wp-block-woocommerce-checkout-order-summary-block{padding:clamp(20px,1.8vw,26px)}
body.woocommerce-checkout .wc-block-components-order-summary-item{width:100%}
body.woocommerce-checkout .wc-block-components-order-summary-item__total-price{flex:0 0 auto;max-width:46%}
body.woocommerce-checkout .wc-block-components-order-summary-item__total-price .wc-block-components-sale-badge{font-size:11px}

/* [33] media fallback: wc's is-large class is JS-applied and unreliable here; wc stacks the sidebar below ~852px */
@media (min-width:860px){
  body.woocommerce-checkout .wc-block-components-sidebar-layout .wc-block-components-main{width:58%}
  body.woocommerce-checkout .wc-block-components-sidebar-layout .wc-block-components-sidebar{width:42%}
}

/* [34] home to prototype spec (Aug 30): diamond pillars, journal tiles, review figures,
   plus the 681-767px band. iPad mini portrait is 744px wide, which Elementor treats as
   MOBILE (<=767) while the prototype treats 681-900 as its tablet band. Elementor mobile
   settings therefore carry the prototype's <=680 values and this band restores the
   prototype's 681-900 layout on iPad mini. Prototype: .section-pad padding
   clamp(86px,10vw,150px) clamp(24px,6vw,88px) -> 86px 45px at 744. */
.jhb-principles .elementor-icon-list-icon{display:none}
.jhb-principles .elementor-icon-list-item{gap:9px}
.jhb-principles .elementor-icon-list-item::before{content:"✦";color:#b28d50;font-size:8px;line-height:1;flex:0 0 auto}
.jhb-principles .elementor-icon-list-item .elementor-icon-list-text{padding-inline-start:0}
.jhb-jcard-num::before{font-style:italic;line-height:1;display:flex;align-items:center;justify-content:center;width:100%;height:100%;inset:auto}
.jhb-jcard-num::after{transform:translate(-50%,-50%) rotate(34deg);opacity:.32}
/* the loop container's first child is the inline loop-item stylesheet, so nth-child was off by one */
.jhb-journal-loop .e-loop-item:nth-child(3n+1) .jhb-jcard-num,
.jhb-journal-loop .e-loop-item:nth-child(3n+2) .jhb-jcard-num,
.jhb-journal-loop .e-loop-item:nth-child(3n+3) .jhb-jcard-num{background:#eee4d7;color:#b29255}
.jhb-journal-loop .e-loop-item:nth-of-type(3n+1) .jhb-jcard-num{background:#dce2d7;color:#6e7c68}
.jhb-journal-loop .e-loop-item:nth-of-type(3n+2) .jhb-jcard-num{background:#ead8d5;color:#a17a70}
.jhb-journal-loop .e-loop-item:nth-of-type(3n+3) .jhb-jcard-num{background:#eee4d7;color:#b29255}
.jhb-review-quote p:last-child{margin-block-end:0}
@media (min-width:681px) and (max-width:900px){
  body .elementor-7027 .elementor-element.jhb-reviews{--e-con-grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  body .elementor-7027 .elementor-element.jhb-review-score{grid-column:1/-1;--min-height:210px;border-width:1px 1px 0px 1px;--border-top-width:1px;--border-right-width:1px;--border-bottom-width:0px;--border-left-width:1px}
  body .elementor-7027 .elementor-element.jhb-review-card{border-width:1px 0px 1px 1px;--border-top-width:1px;--border-right-width:0px;--border-bottom-width:1px;--border-left-width:1px;--min-height:300px}
  body .elementor-7027 .elementor-element.jhb-review-card:last-child{border-width:1px 1px 1px 1px;--border-top-width:1px;--border-right-width:1px;--border-bottom-width:1px;--border-left-width:1px}
}
@media (min-width:681px) and (max-width:767px){
  body .elementor-7027 .elementor-element.jhb-reviews,
  body .elementor-7027 .elementor-element.jhb-final-cta{--padding-top:86px;--padding-bottom:86px;--padding-left:45px;--padding-right:45px}
  body .elementor-7027 .elementor-element.jhb-journal-strip{--padding-top:40px;--padding-bottom:86px;--padding-left:45px;--padding-right:45px}
  body .elementor-7027 .elementor-element.jhb-review-score,
  body .elementor-7027 .elementor-element.jhb-review-card{--padding-top:32px;--padding-bottom:32px;--padding-left:32px;--padding-right:32px}
  body .elementor-7027 .elementor-element.jhb-review-quote{font-size:clamp(23px,2.4vw,34px)}
  body .elementor-7027 .elementor-element.elementor-element-de068ff{--e-con-grid-template-columns:minmax(0,1.15fr) minmax(280px,.55fr);--gap:24px 74px;--row-gap:24px;--column-gap:74px}
  body .elementor-7027 .elementor-element.elementor-element-b9f6397 .elementor-heading-title{font-size:48px}
  body .elementor-7027 .elementor-element.jhb-journal-loop .elementor-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-row-gap:18px;grid-column-gap:18px}
  body .elementor-7027 .elementor-element.jhb-journal-loop > .elementor-widget-container{margin-top:70px}
  body .e-loop-item .elementor-element.elementor-element-a6130f8{--min-height:290px}
}

/* [35] cart item grid in wc's medium/small/mobile layouts (Samsung Fold 7 unfolded ~900px, phones).
   wc switches the row to grid 80px 132px with the image in the 80px column; the skin's 172px
   image overflowed into the product column and the quantity box landed under the image. */
body.woocommerce-cart .is-medium table.wc-block-cart-items .wc-block-cart-items__row,
body.woocommerce-cart .is-small table.wc-block-cart-items .wc-block-cart-items__row,
body.woocommerce-cart .is-mobile table.wc-block-cart-items .wc-block-cart-items__row{grid-template-columns:172px minmax(0,1fr) auto;column-gap:20px;row-gap:0;padding:clamp(22px,3vw,36px) 0;align-items:start}
body.woocommerce-cart .is-medium table.wc-block-cart-items .wc-block-cart-items__row td,
body.woocommerce-cart .is-small table.wc-block-cart-items .wc-block-cart-items__row td,
body.woocommerce-cart .is-mobile table.wc-block-cart-items .wc-block-cart-items__row td{padding:0;border-bottom:0}
body.woocommerce-cart .is-medium table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__image,
body.woocommerce-cart .is-small table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__image,
body.woocommerce-cart .is-mobile table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__image{grid-column:1;grid-row:1/3;width:172px;padding-right:0}
body.woocommerce-cart .is-medium table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__product,
body.woocommerce-cart .is-small table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__product,
body.woocommerce-cart .is-mobile table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__product{grid-column:2;grid-row:1;padding:0}
body.woocommerce-cart .is-medium table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__quantity,
body.woocommerce-cart .is-small table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__quantity,
body.woocommerce-cart .is-mobile table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__quantity{grid-column:2;grid-row:2;padding:0}
body.woocommerce-cart .is-medium table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__total,
body.woocommerce-cart .is-small table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__total,
body.woocommerce-cart .is-mobile table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__total{grid-column:3;grid-row:1;padding:0 0 0 12px;text-align:right}
@media (max-width:520px){
  body.woocommerce-cart .is-small table.wc-block-cart-items .wc-block-cart-items__row,
  body.woocommerce-cart .is-mobile table.wc-block-cart-items .wc-block-cart-items__row{grid-template-columns:96px minmax(0,1fr) auto;column-gap:14px}
  body.woocommerce-cart .is-small table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__image,
  body.woocommerce-cart .is-mobile table.wc-block-cart-items .wc-block-cart-items__row .wc-block-cart-item__image{width:96px}
  body.woocommerce-cart .is-small table.wc-block-cart-items .wc-block-cart-item__image a,
  body.woocommerce-cart .is-mobile table.wc-block-cart-items .wc-block-cart-item__image a{padding:8px}
}

/* [36] checkout order summary in the 852-1000px band (Fold 7 unfolded): wc keeps the sidebar
   beside the form but it is only ~300px wide, so the product name wrapped one word per line. */
@media (min-width:852px) and (max-width:1000px){
  body.woocommerce-checkout .wc-block-components-sidebar-layout .wc-block-components-main{width:52%}
  body.woocommerce-checkout .wc-block-components-sidebar-layout .wc-block-components-sidebar{width:48%}
  body.woocommerce-checkout .wc-block-components-sidebar-layout.is-large .wc-block-components-main{width:52%}
  body.woocommerce-checkout .wc-block-components-sidebar-layout.is-large .wc-block-components-sidebar{width:48%}
  body.woocommerce-checkout .wc-block-components-sidebar .wp-block-woocommerce-checkout-order-summary-block{padding:18px}
  body.woocommerce-checkout .wc-block-components-order-summary-item__total-price{max-width:38%}
  body.woocommerce-checkout .wc-block-components-order-summary-item__description{display:none}
}

/* [37] prototype parity pass 2 (Aug 30): ribbon ginkgo on the arc, thin SVG consult arrows,
   June collage inset restored on tablet/phone, mini-cart close button + drawer stacking. */
/* ribbon: ginkgo straddles the arc apex; an ivory pill masks the arc line behind it (prototype
   .hero-ribbon-ornament:before 88x18 at top:14px). */
.jhb-ribbon-ginkgo{isolation:isolate}
.jhb-ribbon-ginkgo::before{content:'';position:absolute;top:14px;left:50%;width:88px;height:18px;transform:translateX(-50%);border-radius:999px;background:#f6efe6;z-index:-1}
.jhb-ribbon-ginkgo img{position:relative;z-index:1;object-fit:contain}
@media (max-width:767px){.jhb-ribbon-ginkgo::before{top:11px;width:70px;height:15px}}
/* consult arrows: prototype 21px inline SVG, 1.5px stroke, square caps, hairline circle */
.jhb-consult-arrow .elementor-icon svg{width:21px;height:21px;fill:none!important;stroke:currentColor;stroke-width:1.5;stroke-linecap:square;stroke-linejoin:miter;overflow:visible}
.jhb-consult-arrow .elementor-icon svg path{fill:none!important;stroke:currentColor}
@media (max-width:680px){.jhb-consult-arrow .elementor-icon{padding:10px}.jhb-consult-arrow .elementor-icon svg{width:19px;height:19px}}
/* mini-cart: close lines were width:100% of the 44px hit area (giant thin X). 20px lines, centred. */
.jhb-menu-cart .elementor-menu-cart__close-button{width:44px;height:44px;margin:-6px -10px 10px 0;align-self:flex-end}
.jhb-menu-cart .elementor-menu-cart__close-button::before,
.jhb-menu-cart .elementor-menu-cart__close-button::after{width:20px;height:1.5px;left:50%;top:50%;margin:0;border-radius:0;background:#20261F;transform:translate(-50%,-50%) rotate(45deg)}
.jhb-menu-cart .elementor-menu-cart__close-button::after{transform:translate(-50%,-50%) rotate(-45deg)}
.jhb-menu-cart .elementor-menu-cart__close-button:hover::before,
.jhb-menu-cart .elementor-menu-cart__close-button:hover::after{background:#B28D50}
/* the header burger painted over the drawer: lift the actions group above the nav (.elementor-nav-menu is z-index:2) */
.jhb-header .jhb-actions{position:relative;z-index:5}
.jhb-header .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--shown{position:relative;z-index:10000}
/* 681-767 band additions (see [34]) */
@media (min-width:681px) and (max-width:767px){
  body .elementor-7027 .elementor-element.jhb-hero-ribbon{--padding-top:70px;--padding-bottom:24px;--margin-top:-14px;--min-height:146px}
  body .elementor-7027 .elementor-element.jhb-collage{--min-height:580px}
  body .elementor-7027 .elementor-element.jhb-collage-back{width:86%;height:88%}
  body .elementor-7027 .elementor-element.jhb-collage-inset{width:48%}
  body .elementor-7027 .elementor-element.jhb-meetjune{--e-con-grid-template-columns:1fr;--gap:48px 0;--row-gap:48px;--column-gap:0}
}

/* [38] June collage without .elementor-widget-container (optimized markup): the frame/size rules
   in the collage block targeted a wrapper that no longer renders. Prototype: back image absolute
   86%x88% top-left, inset 48% (52% <=680) aspect .78, paper frame 12px, bottom-right. */
body .elementor-7027 .elementor-element.jhb-collage-back{position:absolute;top:0;left:0;width:86%;height:88%;margin:0}
body .elementor-7027 .elementor-element.jhb-collage-back img{width:100%;height:100%;object-fit:cover;display:block}
body .elementor-7027 .elementor-element.jhb-collage-inset{background:#fffdf8;padding:12px;box-shadow:0 28px 80px rgba(70,52,43,.12);width:48%}
body .elementor-7027 .elementor-element.jhb-collage-inset img{width:100%;height:auto;aspect-ratio:.78;object-fit:cover;object-position:50% 35%;display:block}
@media (max-width:680px){
  body .elementor-7027 .elementor-element.jhb-collage-back{width:92%;height:82%}
  body .elementor-7027 .elementor-element.jhb-collage-inset{width:52%}
}
/* consult rows <=680: prototype 34px | 1fr | 44px with the description under the title */
@media (max-width:680px){
  .jhb-consult-row>.jhb-consult-num{align-self:start;padding-top:6px}
  .jhb-consult-row>.elementor-widget-text-editor{grid-column:2/-1}
  .jhb-consult-row>.jhb-consult-arrow{grid-column:3;grid-row:1;align-self:center}
}
/* 681-767 band: prototype <=900 consult grid + heading rows, ginkgo 52px */
@media (min-width:681px) and (max-width:767px){
  body .elementor-7027 .elementor-element.jhb-consult-row{--e-con-grid-template-columns:50px minmax(180px,.7fr) minmax(220px,1fr) 50px;--gap:20px;--row-gap:20px;--column-gap:20px;--align-items:center;--padding-top:30px;--padding-bottom:30px}
  body .elementor-7027 .elementor-element.jhb-consult-row>.jhb-consult-arrow{grid-column:4;grid-row:1;align-self:center;justify-self:end}
  body .elementor-7027 .elementor-element.elementor-element-9aef615{--e-con-grid-template-columns:minmax(0,1.15fr) minmax(280px,.55fr);--gap:24px 74px;--row-gap:24px;--column-gap:74px}
  body .elementor-7027 .elementor-element.elementor-element-b557891 .elementor-heading-title,
  body .elementor-7027 .elementor-element.elementor-element-bd85db5 .elementor-heading-title{font-size:48px}
  body .elementor-7027 .elementor-element.jhb-ribbon-ginkgo{width:52px}
  body .elementor-7027 .elementor-element.jhb-ribbon-ginkgo img{width:52px}
}
/* [39] ribbon text band: prototype keeps the inline dashes down to 680px (column stack only <=680) */
@media (min-width:681px) and (max-width:767px){
  body .elementor-7027 .elementor-element.jhb-ribbon-text .elementor-heading-title{flex-direction:row;gap:clamp(28px,3.2vw,50px);font-size:18px}
  body .elementor-7027 .elementor-element.jhb-ribbon-text .elementor-heading-title::before,
  body .elementor-7027 .elementor-element.jhb-ribbon-text .elementor-heading-title::after{width:clamp(72px,7.5vw,118px)}
}

/* [40] prototype parity pass 3 (Aug 30): contact page, naturopathy consultation cards, mobile menu */
/* contact: aside card with the prototype's shadow + lift; bold-label detail paragraphs */
.jhb-contact-card{transition:transform .32s cubic-bezier(.22,1,.36,1),box-shadow .32s;box-shadow:0 18px 55px rgba(74,56,43,.07)}
.jhb-contact-card:hover{transform:translateY(-8px);box-shadow:0 30px 80px rgba(74,56,43,.14)}
.jhb-clinic-details p{margin:0 0 16px;font-family:var(--jhb-sans);font-size:17px;line-height:1.6;color:#20261F}
.jhb-clinic-details p:last-child{margin-bottom:0}
.jhb-clinic-details strong{font-weight:700}
.jhb-clinic-details a{color:inherit;text-decoration:underline;text-decoration-color:rgba(37,43,39,.25);text-underline-offset:4px}
.jhb-clinic-details a:hover{text-decoration-color:currentColor}
.jhb-contact-form .elementor-field-type-submit .elementor-button{width:auto;min-width:0;padding:15px 34px}
.jhb-contact-form .elementor-field-type-submit{width:auto}
@media (min-width:681px) and (max-width:767px){
  .jhb-contact-form .elementor-field-group.elementor-col-50.elementor-sm-100,.jhb-contact-form .elementor-field-group.elementor-col-50.elementor-mobile-col-100{width:50%}
  body .elementor-7032 .elementor-element.jhb-contact-grid{--e-con-grid-template-columns:minmax(0,1fr) minmax(0,1fr);--gap:44px 60px;--row-gap:44px;--column-gap:60px}
}
/* naturopathy: consultation cards lift on hover / tap (prototype .design-card-grid article) */
.jhb-step-grid>.e-con{cursor:pointer;-webkit-tap-highlight-color:transparent;box-shadow:0 18px 55px rgba(74,56,43,.07);transition:transform .32s cubic-bezier(.22,1,.36,1),box-shadow .32s;position:relative}
.jhb-step-grid>.e-con:hover,.jhb-step-grid>.e-con:active,.jhb-step-grid>.e-con:focus-within{transform:translateY(-8px);box-shadow:0 30px 80px rgba(74,56,43,.14);z-index:2}
@media (prefers-reduced-motion:reduce){.jhb-step-grid>.e-con,.jhb-contact-card{transition:none}.jhb-step-grid>.e-con:hover,.jhb-step-grid>.e-con:active,.jhb-contact-card:hover{transform:none}}
/* mobile menu: prototype card - active link gold with no fill, no hover fill, no Account row,
   pills in serif caps as they render in the prototype */
body .elementor-7059 .elementor-element.elementor-element-02e21ff .elementor-nav-menu--dropdown a:hover,
body .elementor-7059 .elementor-element.elementor-element-02e21ff .elementor-nav-menu--dropdown a:focus,
body .elementor-7059 .elementor-element.elementor-element-02e21ff .elementor-nav-menu--dropdown a.highlighted{background-color:transparent;color:#B28D50}
body .elementor-7059 .elementor-element.elementor-element-02e21ff .elementor-nav-menu--dropdown a.elementor-item-active{background-color:transparent;color:#B28D50}
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-account{display:none}
#jhb-primary-nav .elementor-nav-menu__container.elementor-nav-menu--dropdown[aria-hidden="false"]{padding:22px}
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-shop a,
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-book a{min-height:54px;font-family:var(--jhb-serif);font-size:17px;font-weight:400;letter-spacing:.2em;text-transform:uppercase;border-radius:999px}
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-shop a{border:1px solid rgba(178,141,80,.72);background:rgba(255,253,248,.82);color:#765C32;box-shadow:0 7px 20px rgba(130,92,53,.08)}
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-book a{border:1px solid #2F4639;background:#2F4639;color:#FFFDF8}
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-shop{margin-top:18px}
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-book{margin-top:10px}
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-shop,
#jhb-primary-nav .elementor-nav-menu--dropdown .jhb-menu-book{border-bottom:0!important}

/* [41] Blossom Beauty (product archive 7111) to prototype: cream product tile, price-line, benefits grid */
.jhb-product-tile{transition:transform .32s cubic-bezier(.22,1,.36,1),box-shadow .32s;box-shadow:0 18px 55px rgba(74,56,43,.07);text-decoration:none;color:inherit}
.jhb-product-tile:hover{transform:translateY(-8px);box-shadow:0 30px 80px rgba(74,56,43,.14)}
.jhb-tile-img img{width:100%;aspect-ratio:1;object-fit:cover;mix-blend-mode:multiply;display:block}
.jhb-tile-stars .star-rating{color:#B29255}
.jhb-tile-stars .woocommerce-review-link{display:none}
/* prototype price-line: just the price; the rating lives in the tile */
.jhb-shop-pricewrap .jhb-feature-rating,.jhb-shop-pricewrap .star-rating,.jhb-shop-pricewrap .woocommerce-review-link{display:none!important}
.jhb-shop-pricewrap .jhb-feature-price,.jhb-shop-pricewrap .price{font-family:var(--jhb-serif);font-size:34px;color:#20261F;display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.jhb-shop-pricewrap .price del{font-family:var(--jhb-sans);font-size:16px;color:#646962;opacity:1}
.jhb-shop-pricewrap .price ins{text-decoration:none}
.jhb-benefits-grid>.e-con{cursor:default}
@media (min-width:681px) and (max-width:767px){
  body .elementor-7111 .elementor-element.jhb-shop-grid{--e-con-grid-template-columns:minmax(0,1fr) minmax(0,1fr);--gap:44px 60px;--row-gap:44px;--column-gap:60px}
  body .elementor-7111 .elementor-element.jhb-benefits-grid{--e-con-grid-template-columns:repeat(2,minmax(0,1fr))}
  body .elementor-7111 .elementor-element.jhb-benefit-cell{--min-height:280px}
}

/* [42] June's Story (7030) to prototype: portrait ring, gold drop cap, values grid rhythm */
.jhb-about-figure::before{content:'';position:absolute;z-index:2;top:60px;left:65px;width:300px;height:300px;border:1px solid rgba(255,253,248,.5);border-radius:50%;pointer-events:none}
@media (max-width:680px){.jhb-about-figure::before{width:190px;height:190px;top:38px;left:35px}}
.jhb-dropcap p:first-of-type::first-letter{float:left;color:#B28D50;font-size:78px;line-height:.7;margin:8px 10px 0 0;font-family:var(--jhb-serif)}
.jhb-value-cell>.elementor-widget-heading:first-child{flex-grow:1}
.jhb-value-cell>.elementor-widget-heading:first-child .elementor-heading-title{font-size:9px;letter-spacing:.15em}
@media (min-width:681px) and (max-width:767px){
  body .elementor-7030 .elementor-element.jhb-about-figure{--min-height:600px}
  body .elementor-7030 .elementor-element.elementor-element-65fa886{--e-con-grid-template-columns:minmax(0,1.15fr) minmax(280px,.55fr);--gap:24px 74px;--row-gap:24px;--column-gap:74px}
  body .elementor-7030 .elementor-element.elementor-element-a86446a .elementor-heading-title{font-size:48px}
  body .elementor-7030 .elementor-element.jhb-values-grid{--e-con-grid-template-columns:repeat(2,minmax(0,1fr))}
  body .elementor-7030 .elementor-element.jhb-value-cell{--min-height:280px}
}
/* [43] header after My Account removal (Aug 30): in burger mode (<=1180) the actions group sat centred
   between the brand and the burger; it now hugs the burger so cart / SHOP / BOOK / menu read as one cluster. */
@media (max-width:1180px){
  .jhb-header .jhb-actions{margin-left:auto}
  .jhb-header .jhb-nav.e-con{--flex-grow:0;flex-grow:0}
  body:not(.rtl) .elementor-7059 .elementor-element.jhb-header{--column-gap:14px;--gap:0px 14px}
}

/* [44] Journal to prototype (Aug 30): story hero + art, TOC, gold takeaways, feature/note boxes,
   pull-quote, numbered sections, related cards, closing band, index cards. Body classes
   jhb-story-{blush|sage|cream} come from sandbox jhb-journal.php (by category). */
/* ---- hero card ---- */
body.jhb-story .jhb-story-hero{width:min(100% - 48px,1380px)!important;max-width:100%;margin-inline:auto;color:#493C39;--e-con-grid-template-rows:auto}
body.jhb-story-blush .jhb-story-hero{background-color:#EAD8D5!important;color:#493C39}
body.jhb-story-sage .jhb-story-hero{background-color:#DCE2D7!important;color:#344038}
body.jhb-story-cream .jhb-story-hero{background-color:#EEE4D7!important;color:#4D4337}
body.jhb-story .jhb-story-hero .jhb-post-title .elementor-heading-title{color:inherit}
body.jhb-story .jhb-story-hero .jhb-story-deck{color:inherit;opacity:.76}
.jhb-story-meta{display:flex;flex-wrap:wrap;gap:10px 28px;margin-top:38px;padding-top:20px;border-top:1px solid currentColor;font-family:var(--jhb-sans);font-size:9px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;opacity:.65;width:min(100%,520px)}
.jhb-story-meta span{display:inline-flex;align-items:center;gap:10px}
.jhb-story-meta span+span::before{content:"✦";color:#B29255}
.jhb-story-art-cell{border-left:1px solid currentColor;position:relative;overflow:hidden}
.jhb-story-art-wrap,.jhb-story-art-wrap .elementor-shortcode{position:static}
.jhb-story-art{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden}
.jhb-story-art::before,.jhb-story-art::after{content:'';position:absolute;border:1px solid currentColor;border-radius:50%;opacity:.24}
.jhb-story-art::before{width:390px;height:530px;transform:rotate(34deg)}
.jhb-story-art::after{width:220px;height:420px;transform:rotate(-34deg)}
.jhb-story-art>img{position:absolute;bottom:-14%;right:-34%;width:94%;opacity:.12;transform:rotate(-12deg)}
.jhb-story-art>span{position:relative;z-index:2;font-family:var(--jhb-serif);font-style:italic;font-size:clamp(120px,16vw,240px);line-height:1;letter-spacing:-.08em;opacity:.66}
.jhb-story-art>p{position:absolute;bottom:25px;right:26px;margin:0;font-family:var(--jhb-serif);font-style:italic;font-size:18px;opacity:.68}
@media (max-width:1024px){.jhb-story-art-cell{border-left:0;border-top:1px solid currentColor}.jhb-story-art>span{font-size:150px}}
@media (max-width:680px){body.jhb-story .jhb-story-hero{width:calc(100% - 20px)!important}.jhb-story-art::before{width:220px;height:310px}.jhb-story-art::after{width:130px;height:260px}.jhb-story-art>span{font-size:120px}.jhb-story-art>p{font-size:14px;bottom:14px;right:16px}.jhb-story-meta{display:grid;margin-top:30px}.jhb-story-meta span+span::before{content:none}}
/* ---- table of contents (Elementor TOC skinned to the prototype list) ---- */
.jhb-toc .elementor-toc__header{padding:0 0 18px;border:0}
.jhb-toc .elementor-toc__body{padding:0;border-top:1px solid rgba(37,43,39,.14)}
.jhb-toc .elementor-toc__list-wrapper{counter-reset:jtoc}
.jhb-toc .elementor-toc__list-item{margin:0;border-bottom:1px solid rgba(37,43,39,.14);counter-increment:jtoc}
.jhb-toc .elementor-toc__list-item-text-wrapper{display:grid;grid-template-columns:25px 1fr;gap:10px;padding:16px 0;transition:padding .18s}
.jhb-toc .elementor-toc__list-item-text-wrapper::before{content:counter(jtoc,decimal-leading-zero);color:#B29255;font-family:var(--jhb-sans);font-size:9px;font-weight:800;letter-spacing:.12em;padding-top:3px}
.jhb-toc .elementor-toc__list-item-text-wrapper:hover{padding-left:5px}
.jhb-toc .elementor-toc__number-icon{display:none}
.jhb-toc .elementor-toc__list-item-text{font-family:var(--jhb-sans)!important;font-size:11px!important;font-weight:700!important;letter-spacing:.025em;line-height:1.45;color:#646962}
.jhb-toc .elementor-toc__list-item-text:hover,.jhb-toc .elementor-toc__list-item-text.elementor-item-active{color:#20261F}
@media (max-width:1024px){
  .jhb-toc .elementor-toc__list-wrapper{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  .jhb-toc .elementor-toc__list-item:nth-child(odd){border-right:1px solid rgba(37,43,39,.14)}
  .jhb-toc .elementor-toc__list-item:nth-child(odd) .elementor-toc__list-item-text-wrapper{padding-right:18px}
  .jhb-toc .elementor-toc__list-item:nth-child(even) .elementor-toc__list-item-text-wrapper{padding-left:18px}
  .jhb-toc .elementor-toc__body{display:block!important}
}
@media (max-width:680px){.jhb-toc .elementor-toc__list-wrapper{grid-template-columns:1fr}.jhb-toc .elementor-toc__list-item:nth-child(odd){border-right:0}.jhb-toc .elementor-toc__list-item .elementor-toc__list-item-text-wrapper{padding-inline:0}}
/* ---- article body ---- */
.jhb-article-body .story-takeaways{border:1px solid rgba(37,43,39,.14);background:#F5EFE5;margin:0 0 78px;padding:clamp(30px,4vw,46px)}
.jhb-article-body .story-takeaways-gold{background:linear-gradient(145deg,#f6eedc 0%,#ead7ae 100%);border-color:rgba(178,146,85,.56);box-shadow:0 22px 56px rgba(117,87,37,.1)}
.jhb-article-body .story-takeaways .eyebrow{margin:0 0 18px;color:#B29255;font-family:var(--jhb-sans);font-size:11px;font-weight:800;letter-spacing:.21em;text-transform:uppercase}
.jhb-article-body .story-takeaways ul{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.jhb-article-body .story-takeaways li{display:grid;grid-template-columns:18px 1fr;gap:13px;font-family:var(--jhb-serif);font-size:clamp(20px,2vw,25px);line-height:1.42;color:#4F5750;margin:0}
.jhb-article-body .story-takeaways li::before{content:"✦";color:#B29255;font-family:var(--jhb-sans);font-size:10px;padding-top:8px}
.jhb-article-body .article-section{padding:0 0 74px;scroll-margin-top:110px}
.jhb-article-body .article-section-number{display:block;color:#B29255;font-family:var(--jhb-sans);font-size:9px;font-weight:800;letter-spacing:.16em;margin-bottom:12px}
.jhb-article-body .article-section h2{font-family:var(--jhb-serif);font-weight:400;font-size:clamp(38px,4.2vw,58px);line-height:1.05;letter-spacing:-.04em;color:#20261F;max-width:700px;margin:0 0 28px}
.jhb-article-body .article-section>p:not(.article-note){color:#505650;margin:0 0 24px;font-size:17px;line-height:1.86}
.jhb-article-body .article-section>p:not(.article-note):first-of-type{color:#3D453E;font-size:19px}
.jhb-article-body .article-feature-box{display:grid;gap:18px;margin:32px 0;padding:clamp(30px,4vw,44px);border-left:4px solid #B29255;background:rgba(245,239,229,.72)}
.jhb-article-body .article-feature-box p{margin:0;color:#505650;font-size:18px;line-height:1.65}
.jhb-article-body .article-feature-box-green{background:#DCE2D7;border:1px solid rgba(125,136,118,.25);border-left-width:1px;padding:19px 22px}
.jhb-article-body .article-feature-box-green p{color:#536052;font-size:13px;line-height:1.72}
.jhb-article-body .article-feature-box-green p span{font-weight:600;display:block}
.jhb-article-body .article-feature-box-green p em{display:block;margin-top:2px;color:rgba(83,96,82,.78)}
.jhb-article-body .article-note{background:#DCE2D7;color:#536052;border:1px solid rgba(125,136,118,.25);margin:30px 0 0;padding:19px 22px;font-size:13px;line-height:1.72}
.jhb-article-body .article-note-lead{margin-top:30px!important}
.jhb-article-body .article-note-lead+.article-note{margin-top:0}
.jhb-article-body .article-note-prompts{display:grid;gap:9px}
.jhb-article-body .article-note-prompts p{margin:0}
.jhb-article-body .article-note-prompts p:first-child{color:#3F4B41;font-family:var(--jhb-serif);font-size:19px;line-height:1.45;margin-bottom:3px}
.jhb-article-body .article-note+.article-note-after{margin-top:24px!important}
.jhb-article-body .article-list{padding-left:20px;color:#505650;font-size:17px;line-height:1.86;margin:0 0 24px}
.jhb-article-body .story-pullquote{border-top:1px solid rgba(37,43,39,.14);margin:58px 0 0;padding:42px 0 12px;font-family:var(--jhb-serif);font-style:italic;font-size:clamp(30px,3.5vw,46px);line-height:1.34;letter-spacing:-.025em;color:#3F4B41;quotes:none}
.jhb-article-body .story-pullquote::before{content:"“";display:block;height:28px;color:#B29255;font-size:76px;line-height:.5;font-style:normal}
@media (max-width:680px){
  .jhb-article-body .story-takeaways{margin-bottom:62px;padding:27px 22px}
  .jhb-article-body .story-takeaways li{font-size:19px}
  .jhb-article-body .article-section{padding-bottom:58px}
  .jhb-article-body .article-section h2{font-size:39px;margin-bottom:22px}
  .jhb-article-body .article-section>p:not(.article-note),.jhb-article-body .article-section>p:not(.article-note):first-of-type{font-size:16px;line-height:1.78}
  .jhb-article-body .article-feature-box{gap:14px;padding:26px 22px}
  .jhb-article-body .article-feature-box p{font-size:16px}
  .jhb-article-body .story-pullquote{margin-top:46px;font-size:29px}
}
/* ---- related cards (loop item 7363) ---- */
.jhb-related-card{position:relative;transition:transform .2s,box-shadow .2s;background:#EEE4D7;color:#4D4337}
.e-loop-item.jhb-theme-blush>.jhb-related-card{background:#EAD8D5;color:#493C39}
.e-loop-item.jhb-theme-sage>.jhb-related-card{background:#DCE2D7;color:#344038}
.e-loop-item.jhb-theme-cream>.jhb-related-card{background:#EEE4D7;color:#4D4337}
.jhb-related-card::after{content:'';position:absolute;top:-80px;right:-20px;width:180px;height:280px;border:1px solid currentColor;border-radius:50%;opacity:.15;transform:rotate(35deg);pointer-events:none}
.jhb-related-card:hover{transform:translateY(-5px);box-shadow:0 28px 80px rgba(70,52,43,.12)}
.jhb-related-number .elementor-shortcode{font-family:var(--jhb-serif);font-style:italic;font-size:48px;line-height:1;opacity:.52;color:inherit}
.jhb-related-card>.jhb-related-number{flex-grow:1}
.jhb-related-title .elementor-heading-title,.jhb-related-title a{color:inherit}
.jhb-related-loop .elementor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:680px){.jhb-related-loop .elementor-grid{grid-template-columns:1fr}}
/* ---- closing band ---- */
.jhb-story-closing{position:relative;overflow:hidden}
@media (max-width:1024px){.jhb-story-closing{text-align:center}}
.jhb-story-closing .jhb-closing-flower{opacity:.17;transform:rotate(-8deg)}
/* ---- journal index cards: blush on hover / tap, 22px gaps ---- */
.jhb-jcard-a{cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .32s cubic-bezier(.22,1,.36,1),background-color .2s,box-shadow .32s;box-shadow:0 18px 55px rgba(74,56,43,.07)}
.jhb-jcard-a:hover,.jhb-jcard-a:active,.jhb-jcard-a:focus-within{background-color:#EAD8D5!important;transform:translateY(-8px);box-shadow:0 30px 80px rgba(74,56,43,.14)}
.jhb-journal-archive-loop .elementor-grid{grid-row-gap:22px;grid-column-gap:22px}
body .elementor-7132 .elementor-element.jhb-journal-archive-loop{--grid-row-gap:22px;--grid-column-gap:22px}

/* [45] mini-cart drawer (Aug 30): content-height card instead of a full-height sheet; drawer above the sticky
   header, burger and third-party iframes (PayPal smart button sat above it because the drawer lives inside the
   header's z-index:99 stacking context). */
.jhb-menu-cart .elementor-menu-cart__main{top:12px;right:12px;bottom:auto;height:auto;max-height:calc(100vh - 24px);width:min(92vw,360px);padding:22px 26px 26px;box-shadow:0 28px 80px rgba(70,52,43,.22);border:1px solid rgba(37,43,39,.1);overflow:auto}
.jhb-menu-cart .elementor-menu-cart__main .widget_shopping_cart_content{height:auto}
.jhb-menu-cart .elementor-menu-cart__products{max-height:min(52vh,420px)}
.jhb-menu-cart .elementor-menu-cart__footer-buttons{margin-top:24px}
.jhb-menu-cart .elementor-menu-cart__subtotal{padding-top:18px;padding-bottom:18px;border-top:1px solid rgba(37,43,39,.14);border-bottom:1px solid rgba(37,43,39,.14)}
header.elementor-location-header:has(.elementor-menu-cart--shown){z-index:100000}
.jhb-header:has(.elementor-menu-cart--shown){--z-index:100000}
.jhb-header .jhb-nav{z-index:1}
.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--shown .elementor-menu-cart__container{z-index:100001}
@media (max-width:480px){.jhb-menu-cart .elementor-menu-cart__main{top:8px;right:8px;left:8px;width:auto;max-width:none}}

/* [46] product review form (Aug 30): shown only to visitors holding the emailed review pass; brand styling. */
body.jhb-review-locked #review_form_wrapper #respond{display:none}
.jhb-review-invite{margin-top:34px;padding:26px 28px;background:#F5EFE5;border:1px solid rgba(37,43,39,.12)}
.jhb-review-invite__eyebrow{margin:0 0 10px;color:#B29255;font-family:var(--jhb-sans);font-size:11px;font-weight:800;letter-spacing:.21em;text-transform:uppercase}
.jhb-review-invite p:last-child{margin:0;color:#4F554F;font-size:15px;line-height:1.7}
#review_form .comment-reply-title{font-family:var(--jhb-serif);font-weight:400;font-size:clamp(26px,2.6vw,34px);letter-spacing:-.03em;color:#20261F}
#review_form label{font-family:var(--jhb-sans);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#252B27}
#review_form .comment-form-rating .stars a{color:#B28D50}
#review_form input[type=text],#review_form input[type=email],#review_form textarea{border:0;border-bottom:1px solid rgba(37,43,39,.14);border-radius:0;background:transparent;padding:12px 2px;font-size:16px;color:#20261F}
#review_form input[readonly]{color:#7D8479}
#review_form input[type=text]:focus,#review_form input[type=email]:focus,#review_form textarea:focus{outline:none;border-bottom-color:#B28D50;box-shadow:none}
#review_form .form-submit .submit,#review_form input[type=submit]{background:#3F4B41!important;color:#FFFDF8!important;border:1px solid #3F4B41!important;border-radius:999px;padding:15px 30px;font-family:var(--jhb-sans);font-size:12px;font-weight:800;letter-spacing:.09em;text-transform:uppercase}
#review_form .form-submit .submit:hover{background:#2F4639!important}

/* [47] Product buy panel to prototype (Aug 30): round "Save $31" badge, "Quantity" label + square stepper
   in a 92px column, full-width "Add to bag · $99" pill. Badge/label/button text come from jhb-product.php. */
.jhb-wc-gallery .onsale.jhb-sale-badge,.jhb-archive-products .onsale.jhb-sale-badge,.jhb-product-tile .onsale.jhb-sale-badge{position:absolute;top:24px;right:24px;left:auto;bottom:auto;z-index:2;width:70px;height:70px;min-width:0;min-height:0;margin:0;padding:10px;border-radius:50%;background:#3F4B41;color:#FFFDF8;font-family:var(--jhb-serif,Georgia,serif);font-size:14px;line-height:1.15;font-weight:400;letter-spacing:0;text-transform:none;display:flex;align-items:center;justify-content:center;text-align:center;box-shadow:none;--badge-background-color:#3F4B41;--badge-text-color:#FFFDF8;--theme-font-size:14px;--theme-font-weight:400;--theme-line-height:1.15}
.jhb-product-atc form.cart{display:grid!important;grid-template-columns:92px minmax(0,1fr);gap:9px 12px;align-items:stretch}
.jhb-product-atc form.cart .jhb-qty-label{grid-column:1/-1;color:#646962;font-family:var(--jhb-sans);font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;line-height:1.2}
.jhb-product-atc form.cart .quantity[data-type]{grid-column:1;width:100%;height:54px;--quantity-height:54px;border-radius:0;border:1px solid rgba(37,43,39,.18);background:#FFFDF8;overflow:hidden;margin:0}
.jhb-product-atc form.cart .quantity input.qty{font-family:var(--jhb-sans);font-size:14px;color:#20261F;height:100%;min-height:0;border:0;background:transparent;text-align:left;padding-left:14px}
.jhb-product-atc form.cart button.single_add_to_cart_button{grid-column:2;width:100%;margin:0;min-height:54px;border-radius:999px;white-space:nowrap}
.jhb-product-atc form.cart>:not(.jhb-qty-label):not(.quantity):not(.single_add_to_cart_button){grid-column:1/-1}
.jhb-product-lead p{margin:0}
@media (max-width:767px){
  .jhb-product-atc form.cart{grid-template-columns:76px minmax(0,1fr)}
  .jhb-wc-gallery .onsale.jhb-sale-badge{width:58px;height:58px;font-size:12px;top:14px;right:14px}
}

/* [48] Product stepper: no minus mark (Johnny, 30 Aug) — '+' only on the right, number on the left; type to lower it. */
.jhb-product-atc form.cart .quantity[data-type] .ct-decrease{display:none!important}
.jhb-product-atc form.cart .quantity[data-type] .ct-increase{position:absolute;right:0;top:0;bottom:0;width:34px;height:auto;display:flex;align-items:center;justify-content:center}
.jhb-product-atc form.cart .quantity[data-type]{position:relative;padding-right:0}
.jhb-product-atc form.cart .quantity input.qty{padding-right:36px;padding-left:14px;text-align:left;width:100%}

/* [49] PayPal/Google Pay smart buttons render in iframes with their own z-index (~100+) and painted over the sticky header and open mobile menu on the cart page. Header base lifted to 1000; wallet containers capped below it. */
body .paypal-buttons,body .paypal-buttons iframe,body .wc-block-components-express-payment,body .wc-block-components-express-payment *,body .wc-stripe-product-checkout-container,body .wc-stripe-product-checkout-container *{z-index:auto!important}
body .wc-block-components-express-payment,body .wc-stripe-product-checkout-container{position:relative;isolation:isolate}

/* [50] Home review score: 'Read all reviews' link on the dark card + star box widened for the 6px letter-spacing (the 5th filled star was clipped, reading as 4 stars). */
.jhb-review-score .jhb-link-arrow-light .elementor-button{color:#FFFDF8;border-bottom-color:rgba(255,253,248,.55)}
.jhb-review-score .jhb-link-arrow-light .elementor-button:hover{color:#E0C891;border-bottom-color:#E0C891}
.jhb-stars-widget .star-rating{width:calc(5.4em + 30px);letter-spacing:6px}
/* jhb star-fix: Blocksy's star glyph advances 1.051em, so 5 stars + .4em letter-spacing = 7.26em, wider than WooCommerce's 7em box; the filled overlay's ::before also inherits word-break:break-word and wraps its 5th glyph out of view, leaving the last star unfilled even at a 5.0 rating. Size the box to the real glyph metrics and forbid the wrap. */
.star-rating.star-rating{width:7.26em}
.star-rating::before,.star-rating span::before{white-space:nowrap;word-break:normal}

.jhb-shop-tile .elementor-element-shop-tile-count a,.elementor-element[data-id=shop-tile-count] .elementor-heading-title a{color:inherit;text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(37,43,39,.35)}
.elementor-element[data-id=shop-tile-count] .elementor-heading-title a:hover{color:var(--jhb-gold)}

/* [51] Product Description/Reviews tabs: Blocksy paints the active indicator (li.active::before, 3px) with --tab-background → palette blue; retone to gold. */
.jhb-wc-tabs .woocommerce-tabs{--tab-background:#B28D50;--theme-link-active-color:#20261F;--theme-link-hover-color:#B28D50}
.woocommerce div.product .jhb-wc-tabs div.woocommerce-tabs ul.tabs li.active::before{background:#B28D50}

/* [52] Sale sticker: two-line 'Up to / 25% off', sized to sit comfortably in the circle. */
.jhb-wc-gallery .onsale.jhb-sale-badge,.jhb-archive-products .onsale.jhb-sale-badge,.jhb-product-tile .onsale.jhb-sale-badge{width:86px;height:86px;padding:8px;flex-direction:column;gap:2px;font-size:12px;line-height:1.1}
.onsale.jhb-sale-badge span{font-size:11px;letter-spacing:.02em;opacity:.85}
.onsale.jhb-sale-badge b{font-weight:400;font-size:15px;white-space:nowrap}
@media (max-width:767px){.jhb-wc-gallery .onsale.jhb-sale-badge{width:70px;height:70px;font-size:11px}.jhb-wc-gallery .onsale.jhb-sale-badge span{font-size:10px}.jhb-wc-gallery .onsale.jhb-sale-badge b{font-size:13px}}

/* [53] Express wallet buttons (G Pay / Apple Pay / PayPal): one full-width 48px pill each, stacked with a 10px gap, on product form, cart, checkout and mini cart. Plugin settings set the plain (logo-only) button type + 48px height; this evens out the containers. */
.wc_stripe_product_payment_methods,.wc-block-components-express-payment__event-buttons{display:flex!important;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}
.wc_stripe_product_payment_methods>li,.wc-block-components-express-payment__event-buttons>li{width:100%!important;max-width:none!important;margin:0!important;padding:0!important;flex:0 0 auto}
.wc-stripe-product-checkout-container{margin-top:12px}
.wc-stripe-product-checkout-container .payment-box,.wc-block-components-express-payment__event-buttons .payment-box{padding:0;margin:0}
.wc-stripe_applepay-product-button,.wc-stripe_googlepay-product-button,.wc-stripe-gpay-button,.gpay-card-info-container,.gpay-button,.wc-stripe-applepay-button,apple-pay-button,.apple-pay-button,.paypal-buttons,.wc-ppcp-express-checkout,[id^=wc-stripe_googlepay],[id^=wc-stripe_applepay]{width:100%!important;max-width:none!important;min-width:0!important;height:48px!important;min-height:48px!important;margin:0!important}
.gpay-card-info-container,.gpay-button,apple-pay-button,.apple-pay-button{border-radius:999px!important;outline:0}
.wc-block-components-express-payment__event-buttons>li>*{width:100%}

/* [54] Elementor sets a container's z-index via the inherited --z-index custom property, so the brand and nav containers inside .jhb-header silently inherited the header's 99 / 100000 and the logo painted over the open mini-cart card. Pin the children explicitly (actions/cart stay on top). */
.jhb-header .jhb-brand{--z-index:1;z-index:1}
.jhb-header .jhb-nav{--z-index:4;z-index:4}
.jhb-header .jhb-actions{--z-index:5;z-index:5}

/* [55] Journal: article pull quote has no theme left border (Blocksy blue); related cards keyed to their own loop item (the enclosing article's theme class was overriding them). */
body.single-post blockquote,.jhb-article-body blockquote,.jhb-article-body .story-pullquote{border-left:0!important;border-inline-start:0!important;padding-left:0;margin-left:0;background:transparent}
.jhb-article-body .story-pullquote::before{border:0}

/* [56] Home hero to prototype (Johnny, 30 Aug): prototype display face "Iowan Old Style" (Apple system serif, what he
   sees on the iPad) with Baskerville/Times/Georgia fallbacks; prototype sizes incl. the <=980 band (iPad mini 744 =>
   ~82px) and <=680; "Glow from within." at .92em / .72em of the h1; uppercase 10px principles with 9px diamonds;
   dark-green logo J; ivory fade over the bottom/left of the portrait so the ribbon curve + ginkgo blend seamlessly. */
body .elementor-7027 .elementor-element.jhb-h1-gradient .elementor-heading-title,
body .elementor-7027 .elementor-element.jhb-hero-sub{font-family:"Iowan Old Style",Baskerville,"Times New Roman",Georgia,serif}
body .elementor-7027 .elementor-element.jhb-h1-gradient .elementor-heading-title{font-size:clamp(64px,5.65vw,88px);line-height:.94;letter-spacing:-.057em;max-width:800px}
body .elementor-7027 .elementor-element.jhb-hero-sub{font-size:clamp(59px,5.2vw,81px);line-height:1.03;letter-spacing:-.04em;margin-top:15px}
@media (max-width:980px){
  body .elementor-7027 .elementor-element.jhb-h1-gradient .elementor-heading-title{font-size:clamp(70px,11vw,100px);max-width:780px}
  body .elementor-7027 .elementor-element.jhb-hero-sub{font-size:clamp(64px,10.1vw,92px)}
}
@media (max-width:680px){
  body .elementor-7027 .elementor-element.jhb-h1-gradient .elementor-heading-title{font-size:clamp(52px,15.2vw,68px);line-height:.93}
  body .elementor-7027 .elementor-element.jhb-hero-sub{font-size:clamp(37px,10.9vw,49px);margin-top:10px}
}
body .elementor-7027 .elementor-element.jhb-principles .elementor-icon-list-items{gap:12px 24px}
body .elementor-7027 .elementor-element.jhb-principles .elementor-icon-list-item>.elementor-icon-list-text{font-size:10px;font-weight:700;letter-spacing:.075em;text-transform:uppercase;color:#566158;line-height:1.3}
body .elementor-7027 .elementor-element.jhb-principles .elementor-icon-list-item::before{font-size:9px}
@media (min-width:681px) and (max-width:980px){
  body .elementor-7027 .elementor-element.jhb-principles .elementor-icon-list-item>.elementor-icon-list-text{font-size:11px}
  body .elementor-7027 .elementor-element.jhb-principles .elementor-icon-list-item::before{font-size:10px}
}
.jhb-header .jhb-wordmark strong{color:#3F4B41}
.jhb-hero-figure{position:relative;isolation:isolate}
.jhb-hero-figure::after{content:'';position:absolute;inset:0;z-index:4;pointer-events:none;background:radial-gradient(ellipse 58% 72% at 0% 0%,#f6efe6 0%,rgba(246,239,230,.94) 23%,rgba(246,239,230,.48) 44%,rgba(246,239,230,0) 74%),radial-gradient(ellipse 34% 28% at 0% 100%,#f6efe6 0%,rgba(246,239,230,.88) 28%,rgba(246,239,230,0) 76%),linear-gradient(0deg,#f6efe6 0%,rgba(246,239,230,.96) 22%,rgba(246,239,230,0) 100%) bottom/100% 15% no-repeat}
.jhb-hero-figure .jhb-decor{position:relative;z-index:5}
.jhb-hero-figure .elementor-absolute.jhb-decor{position:absolute}

/* [57] Checkout: Google Places autocomplete injects an 'Enter a location' placeholder into the Address field; WC Blocks' floating 'Address' label already occupies that space, so the two overlapped. Hide the injected placeholder (the label carries the prompt). */
body.woocommerce-checkout #shipping-address_1::placeholder,body.woocommerce-checkout #billing-address_1::placeholder,body.woocommerce-checkout .wc-block-components-address-form input[placeholder='Enter a location']::placeholder{color:transparent!important;opacity:0!important}
body.woocommerce-checkout .wc-block-components-address-form input.pac-target-input::placeholder{color:transparent!important;opacity:0!important}


/* [58] Product Description tab (Johnny, 3 Sep): remove the extra spacing between text. Blank &nbsp; spacer paragraphs were deleted from the product content; blocks in the tab panel now sit 14px apart instead of Blocksy's 1.5em content spacing, and the tab content line-height is eased 1.8 -> 1.65 on the widget. */
.jhb-wc-tabs .woocommerce-tabs .panel>*{margin-top:0;margin-bottom:14px}
.jhb-wc-tabs .woocommerce-tabs .panel>:last-child{margin-bottom:0}

/* [59] Sale display (Johnny, 3 Sep): the product is $130 -> $99. The struck-through was-price now shows everywhere the $99 shows: [32]'s display:none on the final-CTA and sticky-bar <del> replaced above with a demoted (half-size, faded) $130; the mini-cart line price gets its <del> from sandbox jhb-cart-was-price.php and is demoted here. */
.elementor-menu-cart__product-price del,.elementor-menu-cart__product .quantity del{font-size:.85em;opacity:.6;margin-right:4px;text-decoration:line-through;text-decoration-thickness:1px}
.elementor-menu-cart__product-price ins,.elementor-menu-cart__product .quantity ins{text-decoration:none}

/* [60] Product '1 button / 6 massage modes' section (Johnny, 3 Sep): the benefits band now lists the six modes from the JHB modes graphic. Each card's tagline (<em>) sits as a gold italic serif line above the benefit copy; the power-button ring beside '1 button' is an Elementor icon widget (fa-power-off, framed). Title copy lives in widgets modes-title-one / modes-title-six / modes-lead. */
.jhb-benefit-cell .elementor-widget-text-editor em{display:block;font-family:var(--jhb-serif);font-style:italic;font-size:17px;line-height:1.35;color:#D8C29A;margin:0 0 8px}
.jhb-modes-power .elementor-icon{line-height:1;transition:none}
.jhb-modes-power .elementor-icon:hover{color:#D8C29A;border-color:#D8C29A}
@media (max-width:680px){.jhb-benefit-cell .elementor-widget-text-editor em{font-size:16px}}

/* [61] Product description lists (3 Sep 2026): remove the default disc + 40px browser indent so items sit flush with the body copy; gold ✦ diamond bullets to match the site accents. Literal glyph on purpose - Elementor strips backslash escapes. */
.woocommerce div.product .woocommerce-Tabs-panel--description ul{list-style:none;padding-left:0;margin-left:0}
.woocommerce div.product .woocommerce-Tabs-panel--description ul>li{position:relative;padding-left:22px;margin-left:0}
.woocommerce div.product .woocommerce-Tabs-panel--description ul>li::before{content:"✦";position:absolute;left:1px;top:10px;color:#B28D50;font-size:11px;line-height:1}

/* [62] Product tabs (3 Sep 2026): drop WooCommerce's 2em bottom margin on the tab panel and the last element's own margin so the description ends at the section's normal 70/92/120/150 padding instead of stacking extra dead space above the next band. */
.woocommerce div.product .jhb-wc-tabs .woocommerce-tabs,
.woocommerce div.product .jhb-wc-tabs .woocommerce-tabs .panel{margin-bottom:0}
.woocommerce div.product .jhb-wc-tabs .woocommerce-Tabs-panel > :last-child{margin-bottom:0}

/* [63] Home final CTA (4 Sep 2026, rev 2): equalise the two pill buttons with a fixed shared width (min-width alone failed - Explore Blossom Beauty's bold letter-spaced label is naturally wider than any floor the shorter button stopped at). 280px covers the longer label at the 12px size, 240px at the <=680 10px size; max-width guards tiny screens. */
.jhb-final-cta .jhb-btn .elementor-button{width:280px;max-width:100%}
@media(max-width:680px){.jhb-final-cta .jhb-btn .elementor-button{width:240px}}

/* [64] Journal "In this story" TOC (Johnny, 4 Sep): match the prototype .article-contents list exactly on all three articles.
   Fixes over [44]: Elementor Pro's own "1. " counter (ol.elementor-toc__list-wrapper ... :before) outranked the "01" rule;
   the tablet even-row indent (:nth-child) outranked the phone reset so rows alternated; an older rule added padding-block:11px
   to every row; the first row drew a second top line. Elementor tablet (<=1024px) = 2 columns, phone (<=680px) = 1 column;
   desktop keeps the sticky aside. Widget 209ca6f carries the prototype typography (9px/.17em header, 11px/700 items). */
.jhb-toc .elementor-toc__header{padding:0 0 18px;border:0;min-height:0}
.jhb-toc .elementor-toc__body{padding:0;border-top:1px solid rgba(37,43,39,.14)}
.jhb-toc ol.elementor-toc__list-wrapper{display:block;margin:0;padding:0;list-style:none;counter-reset:jtoc}
.jhb-toc ol.elementor-toc__list-wrapper>.elementor-toc__list-item{margin:0;padding:0;border:0;border-bottom:1px solid rgba(37,43,39,.14);counter-increment:jtoc}
.jhb-toc ol.elementor-toc__list-wrapper>.elementor-toc__list-item:first-child{border-top:0}
.jhb-toc ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper{display:grid;grid-template-columns:25px 1fr;gap:10px;align-items:start;padding:16px 0;margin:0;transition:padding .18s}
.jhb-toc ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper::before{content:counter(jtoc,decimal-leading-zero);color:#B29255;font-family:var(--jhb-sans);font-size:9px;font-weight:800;letter-spacing:.12em;line-height:1.45;margin:0;padding-top:2px}
.jhb-toc ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:hover{padding-left:5px}
.jhb-toc .elementor-toc__number-icon{display:none}
.jhb-toc .elementor-toc__list-item-text{font-family:var(--jhb-sans);font-size:11px;font-weight:700;letter-spacing:.025em;line-height:1.45;color:#646962;text-decoration:none}
.jhb-toc .elementor-toc__list-item-text:hover,.jhb-toc .elementor-toc__list-item-text.elementor-item-active{color:#20261F}
@media (max-width:1024px){
  .jhb-toc .elementor-toc__body{display:block!important}
  .jhb-toc ol.elementor-toc__list-wrapper{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  .jhb-toc ol.elementor-toc__list-wrapper>.elementor-toc__list-item:nth-child(odd){border-right:1px solid rgba(37,43,39,.14)}
  .jhb-toc ol.elementor-toc__list-wrapper>.elementor-toc__list-item:nth-child(odd) .elementor-toc__list-item-text-wrapper{padding:15px 18px 15px 0}
  .jhb-toc ol.elementor-toc__list-wrapper>.elementor-toc__list-item:nth-child(even) .elementor-toc__list-item-text-wrapper{padding:15px 0 15px 18px}
  .jhb-toc ol.elementor-toc__list-wrapper>.elementor-toc__list-item:nth-child(odd) .elementor-toc__list-item-text-wrapper:hover{padding-left:5px}
  .jhb-toc ol.elementor-toc__list-wrapper>.elementor-toc__list-item:nth-child(even) .elementor-toc__list-item-text-wrapper:hover{padding-left:23px}
}
@media (max-width:680px){
  .jhb-toc ol.elementor-toc__list-wrapper{grid-template-columns:1fr}
  .jhb-toc ol.elementor-toc__list-wrapper>.elementor-toc__list-item:nth-child(n){border-right:0}
  .jhb-toc ol.elementor-toc__list-wrapper>.elementor-toc__list-item:nth-child(n) .elementor-toc__list-item-text-wrapper{padding:16px 0}
  .jhb-toc ol.elementor-toc__list-wrapper>.elementor-toc__list-item:nth-child(n) .elementor-toc__list-item-text-wrapper:hover{padding-left:5px}
}

/* [65] Cart + checkout pages (4 Sep 2026, rev 2): shrink the blank run between the page content and the footer on both WC block pages. Blocksy's content area gives them a 60px bottom pad and the WC block wrappers stack their own trailing margins on top; collapse all of them to a single 24px breath. */
body.woocommerce-cart .ct-container-full,
body.woocommerce-checkout .ct-container-full{padding-bottom:24px!important}
body.woocommerce-cart .wp-block-woocommerce-cart,
body.woocommerce-cart .entry-content>:last-child,
body.woocommerce-cart .wc-block-components-sidebar,
body.woocommerce-cart .wc-block-components-sidebar-layout,
body.woocommerce-checkout .wp-block-woocommerce-checkout,
body.woocommerce-checkout .entry-content>:last-child,
body.woocommerce-checkout .wc-block-components-sidebar,
body.woocommerce-checkout .wc-block-components-sidebar-layout{margin-bottom:0!important;padding-bottom:0!important}

/* [66] Fonts to the prototype, sitewide (Johnny, 4 Sep). The prototype uses --serif = Georgia,'Times New Roman',serif for every heading,
   price, quote, numeral and the mobile menu, and reserves the Iowan Old Style "editorial display" face for three things only:
   the home hero headline, the home ribbon line and the home-page wordmark. --jhb-serif (used by ~40 kit rules and the Elementor
   primary/secondary globals) was Iowan-first, so all of those rendered in Iowan on Apple devices; it is now the prototype's Georgia
   stack and the Iowan stack lives in --jhb-display (already explicit in [56] for the hero). The @font-face aliases keep Elementor's
   "Georgia", Sans-serif output falling back to a serif (Times / Noto Serif) on devices without Georgia, as the prototype's stack does;
   on devices that have Georgia the local() match is the real Georgia, so nothing changes there. */
@font-face{font-family:"Georgia";font-style:normal;font-weight:400;src:local("Georgia"),local("Georgia Regular"),local("Times New Roman"),local("TimesNewRomanPSMT"),local("Noto Serif"),local("NotoSerif"),local("Liberation Serif"),local("DejaVu Serif")}
@font-face{font-family:"Georgia";font-style:normal;font-weight:700;src:local("Georgia Bold"),local("Georgia-Bold"),local("Times New Roman Bold"),local("TimesNewRomanPS-BoldMT"),local("Noto Serif Bold"),local("NotoSerif-Bold"),local("Liberation Serif Bold"),local("DejaVu Serif Bold")}
@font-face{font-family:"Georgia";font-style:italic;font-weight:400;src:local("Georgia Italic"),local("Georgia-Italic"),local("Times New Roman Italic"),local("TimesNewRomanPS-ItalicMT"),local("Noto Serif Italic"),local("NotoSerif-Italic"),local("Liberation Serif Italic"),local("DejaVu Serif Italic")}
@font-face{font-family:"Georgia";font-style:italic;font-weight:700;src:local("Georgia Bold Italic"),local("Georgia-BoldItalic"),local("Times New Roman Bold Italic"),local("TimesNewRomanPS-BoldItalicMT"),local("Noto Serif Bold Italic"),local("NotoSerif-BoldItalic"),local("Liberation Serif Bold Italic"),local("DejaVu Serif Bold Italic")}
body .elementor-7027 .elementor-element.jhb-ribbon-text .elementor-heading-title{font-family:var(--jhb-display)}
body.home .elementor-7059 .elementor-element.jhb-wordmark,body.home .elementor-7059 .elementor-element.jhb-wordmark p{font-family:var(--jhb-display)}

/* [67] Buttons to the prototype colours (Johnny, 4 Sep). The gold pill (.jhb-btn-gold: hero 'Shop the Butterfly', header 'Shop') is the prototype's .button-shop: ivory rgba(255,253,248,.82) fill, gold hairline, #765c32 text - never a solid gold fill. Its hover used to flood solid gold with white text, which iOS keeps showing after a tap; the hover rule (edited in place above) is now the prototype's: solid ivory, #9c7539 border, #4a3b2e text, deeper shadow. Dark pill hover corrected to the prototype's #2c382f. */

/* [68] Product buy panel action stack (4 Sep 2026, rev 2): one shared 560px cap for the quantity/add-to-bag row AND the G Pay / Apple Pay / PayPal pills, at every width, so the stack reads as one cohesive block on Fold- and iPad-width single-column layouts (rev 1's 430px wallet-only cap left the wallets narrower than the full-width Add to Bag). Phones are unchanged - their content column is already narrower than the cap. Cart, checkout and mini cart keep [53]. */
body.single-product form.cart,
body.single-product .wc-stripe-product-checkout-container,
body.single-product .wc_stripe_product_payment_methods,
body.single-product .gpay-card-info-container,
body.single-product .wc-ppcp-express-checkout,
body.single-product .paypal-buttons{max-width:560px!important}

/* [69] Product wallets, flush + tidy (4 Sep 2026): the pills rendered ~14px shy of the Add to Bag edge - plugin list/container insets survived [53]/[68]. Zero every wrapper level at higher specificity so G Pay / Apple Pay / PayPal end flush with the button row's shared 560px cap, normalise the gap above the stack to 12px, and hide empty wallet slots (e.g. Apple Pay on Android) so they don't add phantom flex-gap. */
body.single-product .wc-stripe-product-checkout-container{width:100%!important;max-width:560px!important;padding:0!important;margin:12px 0 0!important}
body.single-product ul.wc_stripe_product_payment_methods{width:100%!important;padding:0!important;margin:0!important}
body.single-product .wc_stripe_product_payment_methods .payment-box{width:100%!important;padding:0!important;margin:0!important}
body.single-product .wc-ppcp-product-button-container{width:100%!important;max-width:none!important;padding:0!important;margin:0!important}
body.single-product .wc_stripe_product_payment_methods>li:has(.payment-box>div:empty){display:none!important}/* End custom CSS */