/*! GoBao design system v1.1 — tokens + gb-* utility classes for Elementor Free (add classes in Advanced → CSS Classes).
 *  Colours extracted from the live gobao.ca theme CSS + logo (see gobao-site/design-system.md).
 *  Selectors are prefixed with body.gb-ds so they beat Hello Elementor resets and Elementor kit defaults. */
:root {
	--gb-purple: #341747;          /* Brand Purple (live --gobao-purple-deep) */
	--gb-purple-2: #4A1F73;        /* Secondary Purple (live --gobao-purple, logo purple) */
	--gb-purple-3: #5E3A86;        /* hover/tint on dark */
	--gb-gold: #EDBB45;            /* Warm Gold (live --gobao-gold, Order buttons) */
	--gb-gold-hover: #E0A92C;
	--gb-gold-antique: #C3A15A;    /* Antique Gold (live lockup descriptor / logo ring) — rules & accents only */
	--gb-offwhite: #FAF5EB;        /* Off-white page ground (live --gobao-cream) */
	--gb-surface: #F2EADC;         /* warm panel (between off-white and live card media #EEE4D5) */
	--gb-card: #FFFDF8;            /* card fill */
	--gb-ink: #241033;             /* body text (live --gobao-ink) */
	--gb-muted: #6B5B7A;           /* secondary text (live --gobao-muted) */
	--gb-on-dark: #F5EEE2;         /* text on purple */
	--gb-on-dark-muted: #CDBFD9;
	--gb-border: rgba(52, 23, 71, .14);
	--gb-border-dark: rgba(245, 238, 226, .22);
	--gb-focus: #B64D00;           /* live focus ring */

	--gb-font-head: "Fraunces", Georgia, "Times New Roman", serif;
	--gb-font-body: "Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;

	--gb-h1: 64px;  --gb-h1-lh: 1.04;
	--gb-h2: 44px;  --gb-h2-lh: 1.1;
	--gb-h3: 26px;  --gb-h3-lh: 1.2;
	--gb-lead: 20px;
	--gb-body: 17px; --gb-body-lh: 1.6;
	--gb-small: 14px;
	--gb-eyebrow: 13px;

	--gb-btn-h: 52px; --gb-btn-radius: 999px; --gb-btn-pad: 28px;
	--gb-card-radius: 16px; --gb-img-radius: 16px;
	--gb-container: 1200px; --gb-gutter: 24px;
	--gb-section-y: 104px; --gb-section-y-tight: 64px;
	--gb-gap: 24px;
	--gb-bar-h: 60px;

	/* Back-compat: v1.0 component variables now follow the brand tokens. */
	--gbp-color-dark: var(--gb-purple);
	--gbp-color-tan: var(--gb-gold-antique);
	--gbp-color-cream: var(--gb-offwhite);
	--gbp-color-text: var(--gb-ink);
	--gbp-color-surface: var(--gb-card);
	--gbp-color-border: var(--gb-border);
	--gbp-color-muted: var(--gb-muted);
	--gbp-font-heading: var(--gb-font-head);
	--gbp-font-body: var(--gb-font-body);
	--gbp-radius: var(--gb-card-radius);
}
@media (max-width: 1024px) {
	:root { --gb-h1: 52px; --gb-h2: 36px; --gb-section-y: 80px; }
}
@media (max-width: 767px) {
	:root {
		--gb-h1: 40px; --gb-h1-lh: 1.08;
		--gb-h2: 30px; --gb-h2-lh: 1.14;
		--gb-h3: 22px;
		--gb-lead: 18px; --gb-body: 16px; --gb-small: 13px; --gb-eyebrow: 12px;
		--gb-btn-h: 48px; --gb-btn-pad: 22px;
		--gb-gutter: 20px; --gb-section-y: 64px; --gb-section-y-tight: 44px; --gb-gap: 16px;
	}
}

/* ---------- Base ---------- */
body.gb-ds { background: var(--gb-offwhite); color: var(--gb-ink); font-family: var(--gb-font-body); font-size: var(--gb-body); line-height: var(--gb-body-lh); -webkit-font-smoothing: antialiased; }
body.gb-ds a { color: var(--gb-purple-2); text-underline-offset: .18em; }
body.gb-ds a:hover { color: var(--gb-purple); }
body.gb-ds :focus-visible { outline: 3px solid var(--gb-focus); outline-offset: 3px; }
body.gb-ds img { max-width: 100%; height: auto; }
body.gb-ds .gb-container { width: 100%; max-width: var(--gb-container); margin-inline: auto; padding-inline: var(--gb-gutter); box-sizing: border-box; }

/* ---------- Sections (top-level Elementor containers: add class gb-section) ---------- */
body.gb-ds .e-con.gb-section,
body.gb-ds .gb-section:not(.e-con) {
	--padding-top: var(--gb-section-y); --padding-bottom: var(--gb-section-y);
	--padding-left: var(--gb-gutter); --padding-right: var(--gb-gutter);
	--content-width: min(100%, var(--gb-container));
	background-color: var(--gb-offwhite); color: var(--gb-ink);
}
body.gb-ds .gb-section:not(.e-con) { padding: var(--gb-section-y) 0; }
body.gb-ds .e-con.gb-section--tight { --padding-top: var(--gb-section-y-tight); --padding-bottom: var(--gb-section-y-tight); }
body.gb-ds .e-con.gb-section--flush { --padding-top: 0; --padding-bottom: 0; }
body.gb-ds .e-con.gb-section--narrow { --content-width: min(100%, 860px); }
body.gb-ds .gb-section--surface, body.gb-ds .e-con.gb-section--surface { background-color: var(--gb-surface); }
body.gb-ds .gb-section--white, body.gb-ds .e-con.gb-section--white { background-color: var(--gb-card); }
body.gb-ds .gb-section--purple, body.gb-ds .e-con.gb-section--purple { background-color: var(--gb-purple); color: var(--gb-on-dark); }
body.gb-ds .gb-section--gold, body.gb-ds .e-con.gb-section--gold { background-color: var(--gb-gold); color: var(--gb-ink); }

/* Default type inside sections */
body.gb-ds .gb-section .elementor-heading-title,
body.gb-ds .gb-section h1, body.gb-ds .gb-section h2, body.gb-ds .gb-section h3, body.gb-ds .gb-section h4 {
	font-family: var(--gb-font-head); font-weight: 600; color: var(--gb-purple); letter-spacing: -.01em; margin-top: 0;
	font-variation-settings: "SOFT" 50;
}
body.gb-ds .gb-section .elementor-widget-text-editor,
body.gb-ds .gb-section .elementor-icon-list-text {
	font-family: var(--gb-font-body); font-size: var(--gb-body); line-height: var(--gb-body-lh); color: var(--gb-ink);
}
body.gb-ds .gb-section .elementor-widget-text-editor p:last-child { margin-bottom: 0; }

/* ---------- Typography utilities (on heading/text widgets or plain elements) ---------- */
body.gb-ds .gb-h1, body.gb-ds .gb-h1 .elementor-heading-title { font-family: var(--gb-font-head); font-size: var(--gb-h1); line-height: var(--gb-h1-lh); font-weight: 600; letter-spacing: -.02em; text-wrap: balance; }
body.gb-ds .gb-h2, body.gb-ds .gb-h2 .elementor-heading-title { font-family: var(--gb-font-head); font-size: var(--gb-h2); line-height: var(--gb-h2-lh); font-weight: 600; letter-spacing: -.015em; text-wrap: balance; }
body.gb-ds .gb-h3, body.gb-ds .gb-h3 .elementor-heading-title { font-family: var(--gb-font-head); font-size: var(--gb-h3); line-height: var(--gb-h3-lh); font-weight: 600; }
body.gb-ds .gb-eyebrow, body.gb-ds .gb-eyebrow .elementor-heading-title {
	font-family: var(--gb-font-body); font-size: var(--gb-eyebrow); line-height: 1.3; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gb-purple-2);
	font-variation-settings: normal;
}
body.gb-ds .gb-lead, body.gb-ds .gb-section .gb-lead.elementor-widget-text-editor { font-size: var(--gb-lead); line-height: 1.55; max-width: 46ch; }
body.gb-ds .gb-small, body.gb-ds .gb-section .gb-small.elementor-widget-text-editor { font-size: var(--gb-small); line-height: 1.5; }
body.gb-ds .gb-muted, body.gb-ds .gb-section .gb-muted.elementor-widget-text-editor { color: var(--gb-muted); }
body.gb-ds .gb-center, body.gb-ds .gb-center .elementor-heading-title, body.gb-ds .gb-section .gb-center.elementor-widget-text-editor { text-align: center; margin-inline: auto; }
body.gb-ds .gb-measure { max-width: 60ch; }

/* Colours on dark/gold sections */
body.gb-ds .gb-section--purple .elementor-heading-title,
body.gb-ds .gb-section--purple h2, body.gb-ds .gb-section--purple h3 { color: var(--gb-on-dark); }
body.gb-ds .gb-section--purple .elementor-widget-text-editor,
body.gb-ds .gb-section--purple .elementor-icon-list-text { color: var(--gb-on-dark-muted); }
body.gb-ds .gb-section--purple .gb-eyebrow .elementor-heading-title { color: var(--gb-gold); }
body.gb-ds .gb-section--purple a:not(.elementor-button):not(.gbp-button) { color: var(--gb-gold); }
body.gb-ds .gb-section--gold .elementor-heading-title { color: var(--gb-purple); }
body.gb-ds .gb-section--gold .gb-eyebrow .elementor-heading-title { color: var(--gb-purple-2); }

/* ---------- Buttons: Elementor Button widget with class "gb-btn gb-btn--primary" (etc.) and plugin .gbp-button ---------- */
body.gb-ds .gb-btn .elementor-button,
body.gb-ds .gbp-button,
body.gb-ds .gb-partner-form .wpforms-submit {
	display: inline-flex; align-items: center; justify-content: center; gap: .5em;
	min-height: var(--gb-btn-h); padding: 0 var(--gb-btn-pad); box-sizing: border-box;
	border-radius: var(--gb-btn-radius); border: 2px solid transparent;
	font-family: var(--gb-font-body); font-size: 15px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; line-height: 1.15;
	text-decoration: none; text-align: center; white-space: normal; max-width: 100%;
	transition: background-color .15s ease, color .15s ease, border-color .15s ease;
	background: var(--gb-gold); color: var(--gb-ink); fill: currentColor; box-shadow: none;
}
body.gb-ds .gb-btn .elementor-button .elementor-button-text { font: inherit; color: inherit; }
body.gb-ds .gb-btn--primary .elementor-button, body.gb-ds .gbp-button--primary, body.gb-ds .gb-partner-form .wpforms-submit { background: var(--gb-gold); border-color: var(--gb-gold); color: var(--gb-ink); }
body.gb-ds .gb-btn--primary .elementor-button:hover, body.gb-ds .gb-btn--primary .elementor-button:focus-visible,
body.gb-ds .gbp-button--primary:hover, body.gb-ds .gbp-button--primary:focus-visible,
body.gb-ds .gb-partner-form .wpforms-submit:hover { background: var(--gb-gold-hover); border-color: var(--gb-gold-hover); color: var(--gb-ink); }
body.gb-ds .gb-btn--secondary .elementor-button, body.gb-ds .gbp-button--secondary { background: transparent; border-color: var(--gb-purple); color: var(--gb-purple); }
body.gb-ds .gb-btn--secondary .elementor-button:hover, body.gb-ds .gb-btn--secondary .elementor-button:focus-visible,
body.gb-ds .gbp-button--secondary:hover, body.gb-ds .gbp-button--secondary:focus-visible { background: var(--gb-purple); border-color: var(--gb-purple); color: var(--gb-on-dark); }
body.gb-ds .gb-btn--dark .elementor-button { background: var(--gb-purple); border-color: var(--gb-purple); color: var(--gb-on-dark); }
body.gb-ds .gb-btn--dark .elementor-button:hover, body.gb-ds .gb-btn--dark .elementor-button:focus-visible { background: var(--gb-purple-2); border-color: var(--gb-purple-2); color: #fff; }
body.gb-ds .gb-btn--light .elementor-button, body.gb-ds .gb-section--purple .gbp-button--secondary { background: transparent; border-color: var(--gb-on-dark); color: var(--gb-on-dark); }
body.gb-ds .gb-btn--light .elementor-button:hover, body.gb-ds .gb-btn--light .elementor-button:focus-visible,
body.gb-ds .gb-section--purple .gbp-button--secondary:hover { background: var(--gb-on-dark); color: var(--gb-purple); }
body.gb-ds .gbp-button--ghost, body.gb-ds .gb-btn--link .elementor-button { background: transparent; border-color: transparent; color: var(--gb-purple-2); padding-inline: 4px; text-decoration: underline; text-underline-offset: .25em; }
body.gb-ds .gb-btn--sm .elementor-button { min-height: 44px; padding: 0 18px; font-size: 13px; }
@media (max-width: 767px) {
	body.gb-ds .gb-btn--block-m .elementor-button, body.gb-ds .gb-btn--block-m.elementor-widget-button { width: 100%; }
}

/* Button rows: a row container holding buttons */
body.gb-ds .e-con.gb-actions { --gap: 12px 16px; --row-gap: 12px; --column-gap: 16px; --flex-wrap: wrap; --padding-top: 8px; --padding-bottom: 0; --padding-left: 0; --padding-right: 0; }

/* ---------- Cards / panels ---------- */
body.gb-ds .e-con.gb-card, body.gb-ds .gb-card {
	--padding-top: 28px; --padding-bottom: 28px; --padding-left: 28px; --padding-right: 28px;
	background-color: var(--gb-card); border: 1px solid var(--gb-border); border-radius: var(--gb-card-radius); overflow: hidden;
}
body.gb-ds .gb-section--purple .gb-card { background-color: rgba(255, 255, 255, .06); border-color: var(--gb-border-dark); }
body.gb-ds .e-con.gb-card--flat { border: 0; background-color: transparent; --padding-left: 0; --padding-right: 0; }
body.gb-ds .e-con.gb-point { --padding-top: 20px; --padding-bottom: 0; --padding-left: 0; --padding-right: 0; border-top: 2px solid var(--gb-gold-antique); }
@media (max-width: 767px) { body.gb-ds .e-con.gb-card { --padding-top: 22px; --padding-bottom: 22px; --padding-left: 20px; --padding-right: 20px; } }

/* ---------- Images (Image widget class gb-img + optional ratio) ---------- */
body.gb-ds .gb-img img { display: block; width: 100%; height: auto; border-radius: var(--gb-img-radius); object-fit: cover; }
body.gb-ds .gb-img--4x3 img { aspect-ratio: 4 / 3; }
body.gb-ds .gb-img--3x2 img { aspect-ratio: 3 / 2; }
body.gb-ds .gb-img--16x9 img { aspect-ratio: 16 / 9; }
body.gb-ds .gb-img--1x1 img { aspect-ratio: 1 / 1; }
body.gb-ds .gb-img--band img { aspect-ratio: 21 / 9; }
@media (max-width: 767px) { body.gb-ds .gb-img--band img, body.gb-ds .gb-img--16x9 img { aspect-ratio: 4 / 3; } }

/* ---------- Divider (Divider widget class gb-rule) ---------- */
body.gb-ds .gb-rule .elementor-divider-separator { border-block-start: 1px solid var(--gb-border) !important; width: 100%; }
body.gb-ds .gb-section--purple .gb-rule .elementor-divider-separator { border-block-start-color: var(--gb-border-dark) !important; }

/* ---------- Trust strip (Icon List widget, inline, class gb-trust) ---------- */
body.gb-ds .gb-trust .elementor-icon-list-items { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px 12px; margin: 0; padding: 0; list-style: none; }
body.gb-ds .gb-trust .elementor-icon-list-item { margin: 0 !important; padding: 8px 16px !important; border: 1px solid var(--gb-border); border-radius: 999px; background: var(--gb-card); }
body.gb-ds .gb-trust .elementor-icon-list-item::after { display: none !important; }
body.gb-ds .gb-section .gb-trust .elementor-icon-list-text { font-size: var(--gb-small); font-weight: 600; letter-spacing: .02em; color: var(--gb-purple); padding: 0 !important; }
body.gb-ds .gb-trust .elementor-icon-list-icon { display: none; }
/* Plain list (Icon List widget, class gb-list) */
body.gb-ds .gb-list .elementor-icon-list-item { padding-block: 6px !important; }
body.gb-ds .gb-list .elementor-icon-list-icon { display: none; }

/* ---------- Header (template gobao-header: container gb-header) ---------- */
body.gb-ds .e-con.gb-header {
	--padding-top: 14px; --padding-bottom: 14px; --padding-left: var(--gb-gutter); --padding-right: var(--gb-gutter);
	--content-width: min(100%, var(--gb-container)); --gap: 12px 28px; --row-gap: 12px; --column-gap: 28px; --flex-wrap: wrap; --align-items: center;
	background-color: var(--gb-offwhite); border-bottom: 1px solid var(--gb-border);
}
body.gb-ds .gb-logo .elementor-heading-title { font-family: var(--gb-font-head); font-weight: 600; font-size: 30px; line-height: 1; color: var(--gb-purple); letter-spacing: -.01em; }
body.gb-ds .gb-logo .elementor-heading-title a { color: inherit; text-decoration: none; }
body.gb-ds .e-con.gb-nav { --width: auto; width: auto; --gap: 4px 26px; --row-gap: 4px; --column-gap: 26px; --flex-wrap: nowrap; --padding-top: 0; --padding-bottom: 0; --padding-left: 0; --padding-right: 0; --align-items: center; }
body.gb-ds .gb-navlink .elementor-heading-title { font-family: var(--gb-font-body); font-size: 15px; font-weight: 600; line-height: 1; white-space: nowrap; }
body.gb-ds .gb-navlink .elementor-heading-title a { display: inline-flex; align-items: center; min-height: 44px; color: var(--gb-purple); text-decoration: none; border-bottom: 2px solid transparent; }
body.gb-ds .gb-navlink .elementor-heading-title a:hover, body.gb-ds .gb-navlink .elementor-heading-title a:focus-visible { border-bottom-color: var(--gb-gold); }
@media (max-width: 767px) {
	body.gb-ds .e-con.gb-header { --padding-top: 10px; --padding-bottom: 0; --gap: 4px 12px; --row-gap: 4px; --column-gap: 12px; }
	body.gb-ds .gb-logo .elementor-heading-title { font-size: 26px; }
	/* Row 1: logo + ORDER. Row 2: all four nav links fully visible, wrapping centred onto a second line
	   when needed (no horizontal scroll, no JS, no hamburger). Each link keeps a 44px tap height. */
	body.gb-ds .e-con.gb-nav {
		order: 3; flex: 0 0 100%; --width: 100%; width: 100%; max-width: 100%; overflow: visible;
		--flex-wrap: wrap; flex-wrap: wrap; --justify-content: center; justify-content: center;
		--gap: 0 18px; --row-gap: 0; --column-gap: 18px; gap: 0 18px; padding-bottom: 2px;
		-webkit-mask-image: none; mask-image: none;
	}
	body.gb-ds .gb-navlink { flex: 0 0 auto; width: auto; max-width: 100%; }
	body.gb-ds .gb-navlink .elementor-heading-title { font-size: 14px; }
	body.gb-ds .gb-navlink .elementor-heading-title a { min-height: 44px; padding: 0 2px; }
	body.gb-ds .gb-header-order { margin-left: auto; }
	body.gb-ds .gb-header-order .elementor-button { min-height: 44px; padding: 0 16px; font-size: 13px; }
}

/* ---------- Footer (template gobao-footer: container gb-footer, also gb-section--purple) ---------- */
body.gb-ds .e-con.gb-footer { --padding-top: 72px; --padding-bottom: 40px; background-color: var(--gb-purple); color: var(--gb-on-dark); }
body.gb-ds .gb-footer .elementor-heading-title { color: var(--gb-on-dark); }
body.gb-ds .gb-footer .gb-logo .elementor-heading-title { color: var(--gb-on-dark); }
body.gb-ds .gb-footer .gb-navlink .elementor-heading-title a { color: var(--gb-on-dark); }
body.gb-ds .gb-footer .elementor-widget-text-editor, body.gb-ds .gb-footer .elementor-widget-text-editor p { color: var(--gb-on-dark-muted); font-size: var(--gb-small); }
body.gb-ds .gb-footer .elementor-widget-text-editor a { color: var(--gb-gold); }
body.gb-ds .gb-footer .gb-footer-label .elementor-heading-title { font-family: var(--gb-font-body); font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gb-gold-antique); }
@media (max-width: 767px) { body.gb-ds .e-con.gb-footer { --padding-top: 52px; --padding-bottom: 28px; } body.gb-ds .gb-footer .e-con.gb-nav { order: 0; -webkit-mask-image: none; mask-image: none; flex-wrap: wrap; --flex-wrap: wrap; overflow: visible; } }

/* ---------- Hero ---------- */
body.gb-ds .e-con.gb-hero { --padding-top: 56px; --padding-bottom: 88px; }
@media (max-width: 767px) {
	body.gb-ds .e-con.gb-hero { --padding-top: 16px; --padding-bottom: 52px; }
	/* Food first: on phones the hero image column moves above the eyebrow/H1, at a moderate height,
	   so the H1 and ORDER NOW still land in the first viewport (checked at 390x844 and 360x740). */
	body.gb-ds .e-con.gb-hero .e-con:has(> .elementor-widget.gb-img) { order: -1; }
	body.gb-ds .e-con.gb-hero .e-con:has(> .elementor-widget.gb-img) + .e-con,
	body.gb-ds .e-con.gb-hero .e-con:has(> .elementor-widget.gb-img) ~ .e-con { --gap: 12px 12px; --row-gap: 12px; }
	body.gb-ds .e-con.gb-hero .elementor-widget.gb-img img { aspect-ratio: 16 / 10; height: auto; max-height: 30vh; width: 100%; object-fit: cover; }
	body.gb-ds .e-con.gb-hero > .e-con-inner > .e-con { --gap: 16px 16px; --row-gap: 16px; }
}
@media (max-width: 360px) { body.gb-ds { --gb-h1: 34px; } }

/* ---------- FAQ (heading class gb-faq-q + text class gb-faq-a inside container gb-faq-item) ---------- */
body.gb-ds .e-con.gb-faq-item { --padding-top: 22px; --padding-bottom: 22px; --padding-left: 0; --padding-right: 0; --gap: 8px 8px; --row-gap: 8px; --column-gap: 8px; border-bottom: 1px solid var(--gb-border); }
body.gb-ds .gb-faq-q .elementor-heading-title { font-family: var(--gb-font-head); font-size: 21px; line-height: 1.3; }
body.gb-ds .gb-section .gb-faq-a.elementor-widget-text-editor { color: var(--gb-ink); max-width: 68ch; }

/* ---------- Slots (container holding the header/footer Shortcode widget) ---------- */
body.gb-ds .e-con.gb-slot { --padding-top: 0; --padding-bottom: 0; --padding-left: 0; --padding-right: 0; --gap: 0 0; --row-gap: 0; --column-gap: 0; --content-width: 100%; background: transparent; }
body.gb-ds .gb-slot .elementor-shortcode > .elementor { width: 100%; }

/* ---------- Presence / fact strip + CTA pair (shortcodes) ---------- */
body.gb-ds .gb-presence__facts { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px 12px; margin: 0; padding: 0; list-style: none; }
body.gb-ds .gb-presence__fact { margin: 0; padding: 9px 18px; border: 1px solid var(--gb-border); border-radius: 999px; background: var(--gb-card); font-size: var(--gb-small); font-weight: 600; letter-spacing: .02em; color: var(--gb-purple); line-height: 1.3; }
body.gb-ds .gb-presence__title { margin: 0 0 14px; text-align: center; font-family: var(--gb-font-head); font-size: var(--gb-h3); font-weight: 600; color: var(--gb-purple); }
body.gb-ds .gb-presence--locations .gbl-strip { justify-content: center; }
body.gb-ds .gb-presence__more { margin: 12px 0 0; text-align: center; font-weight: 600; }
@media (max-width: 767px) { body.gb-ds .gb-presence__fact { padding: 8px 14px; } }
body.gb-ds .gb-cta-pair { display: flex; flex-wrap: wrap; gap: 12px 14px; }
body.gb-ds .gb-center .gb-cta-pair, body.gb-ds .gb-cta-pair.gb-center { justify-content: center; }
@media (max-width: 767px) { body.gb-ds .gb-cta-pair .gbp-button { flex: 1 1 100%; } }

/* =========================================================
   Plugin components (gbp-* / gbl-*) — owned here, independent of Hello Elementor defaults.
   ========================================================= */
body.gb-ds .gbp-product, body.gb-ds .gbp-compare, body.gb-ds .gbp-order-options, body.gb-ds .gbl-locations, body.gb-ds .gbp-page { font-family: var(--gb-font-body); color: var(--gb-ink); }
body.gb-ds .gbp-product__name, body.gb-ds .gbp-page__others-title, body.gb-ds .gbl-city__name, body.gb-ds .gbl-card__name {
	font-family: var(--gb-font-head); font-weight: 600; color: var(--gb-purple); line-height: 1.15; margin: 0 0 .3em; letter-spacing: -.01em;
}
body.gb-ds .gbp-product__name a { color: inherit; text-decoration: none; }
body.gb-ds .gbp-product__name a:hover { text-decoration: underline; text-decoration-color: var(--gb-gold); text-underline-offset: .2em; }

/* Product grid + cards */
body.gb-ds .gbp-products { display: grid; gap: var(--gb-gap); grid-template-columns: repeat(var(--gbp-columns, 3), minmax(0, 1fr)); }
@media (max-width: 1024px) { body.gb-ds .gbp-products { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) { body.gb-ds .gbp-products { grid-template-columns: minmax(0, 1fr); gap: 20px; } }
body.gb-ds .gbp-products__item { min-width: 0; display: flex; }
body.gb-ds .gbp-product--card { display: flex; flex-direction: column; gap: 14px; width: 100%; height: 100%; padding: 0 0 24px; background: var(--gb-card); border: 1px solid var(--gb-border); border-radius: var(--gb-card-radius); overflow: hidden; box-sizing: border-box; }
body.gb-ds .gbp-product--card .gbp-product__media { margin: 0; background: var(--gb-surface); }
body.gb-ds .gbp-product--card .gbp-product__image { display: block; width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: cover; border-radius: 0; }
body.gb-ds .gbp-product--card .gbp-product__body { padding: 4px 24px 0; flex: 1 1 auto; }
body.gb-ds .gbp-product--card .gbp-product__name { font-size: var(--gb-h3); }
body.gb-ds .gbp-product--card .gbp-product__actions { padding: 0 24px; }
body.gb-ds .gbp-product__keyfacts { margin: 0 0 .5em; color: var(--gb-purple-2); font-size: var(--gb-small); font-weight: 600; line-height: 1.4; }
body.gb-ds .gbp-product__weight, body.gb-ds .gbp-product__sku { margin: 0 0 .4em; color: var(--gb-muted); font-size: var(--gb-small); font-weight: 600; letter-spacing: .04em; }
body.gb-ds .gbp-product__price { margin: 0 0 .5em; font-family: var(--gb-font-head); font-size: 20px; font-weight: 600; color: var(--gb-purple); }
body.gb-ds .gbp-product__summary { margin: 0; font-size: var(--gb-body); line-height: var(--gb-body-lh); }
body.gb-ds .gbp-product__summary > :last-child { margin-bottom: 0; }
body.gb-ds .gbp-product__actions { margin: 0; }
body.gb-ds .gbp-product__actions .gbp-button { width: 100%; }

/* Hero view */
body.gb-ds .gbp-product--hero { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px; align-items: center; }
body.gb-ds .gbp-product--hero .gbp-product__image { width: 100%; height: auto; border-radius: var(--gb-img-radius); }
@media (max-width: 767px) { body.gb-ds .gbp-product--hero { grid-template-columns: minmax(0, 1fr); gap: 20px; } }

/* Full view / product page */
body.gb-ds .gbp-product--full { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); grid-template-areas: "gallery header" "gallery facts" "gallery sections" "gallery actions"; gap: 20px 56px; align-items: start; }
body.gb-ds .gbp-product--full > .gbp-product__header { grid-area: header; }
body.gb-ds .gbp-product--full > .gbp-product__gallery { grid-area: gallery; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
body.gb-ds .gbp-product--full > .gbp-product__gallery > :first-child { grid-column: 1 / -1; }
body.gb-ds .gbp-product--full > .gbp-product__facts { grid-area: facts; }
body.gb-ds .gbp-product--full > .gbp-product__actions { grid-area: actions; align-self: start; }
/* v1.1.1: the tall gallery no longer spreads its height over the text rows (CTA sat far below the facts). */
@media (min-width: 768px) { body.gb-ds .gbp-product--full { grid-template-rows: auto auto auto 1fr; } }
body.gb-ds .gbp-product--full > .gbp-product__section { grid-column: 2; }
body.gb-ds .gbp-product--full .gbp-product__media { margin: 0; }
body.gb-ds .gbp-product--full .gbp-product__image { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--gb-img-radius); }
body.gb-ds .gbp-product--full .gbp-product__actions .gbp-button { width: auto; min-width: 220px; }
body.gb-ds .gbp-product--page .gbp-product__name { font-size: var(--gb-h1); line-height: var(--gb-h1-lh); }
body.gb-ds .gbp-product__facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 12px; margin: 0; }
body.gb-ds .gbp-product__fact { border-top: 2px solid var(--gb-gold-antique); padding-top: 10px; }
body.gb-ds .gbp-product__fact-label { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .12em; color: var(--gb-muted); }
body.gb-ds .gbp-product__fact-value { margin: 2px 0 0; font-family: var(--gb-font-head); font-size: 22px; font-weight: 600; color: var(--gb-purple); }
body.gb-ds .gbp-product__section { border-top: 1px solid var(--gb-border); padding-top: 14px; }
body.gb-ds .gbp-product__section-title { font-family: var(--gb-font-body); font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--gb-muted); margin: 0 0 6px; }
@media (max-width: 900px) {
	body.gb-ds .gbp-product--full { grid-template-columns: minmax(0, 1fr); grid-template-areas: "header" "gallery" "facts" "sections" "actions"; gap: 20px; }
	body.gb-ds .gbp-product--full > .gbp-product__section { grid-column: 1; }
	body.gb-ds .gbp-product--full .gbp-product__actions .gbp-button { width: 100%; }
}
body.gb-ds .gbp-page__crumb { margin: 0 0 20px; font-size: var(--gb-small); font-weight: 600; }
body.gb-ds .gbp-page__crumb a::before { content: "← "; }
body.gb-ds .gbp-page__note { margin: 28px 0 0; padding: 14px 18px; background: var(--gb-surface); border-left: 3px solid var(--gb-gold-antique); border-radius: 4px; font-size: var(--gb-small); }
body.gb-ds .gbp-page__links { display: flex; flex-wrap: wrap; gap: 12px 16px; margin: 24px 0 0; }
body.gb-ds .gbp-page__others { margin-top: 72px; padding-top: 48px; border-top: 1px solid var(--gb-border); }
body.gb-ds .gbp-page__others-title { font-size: var(--gb-h2); margin-bottom: 24px; }
body.gb-ds .gb-product-main { padding: 40px 0 var(--gb-section-y); }

/* Compare table */
body.gb-ds .gbp-compare { overflow-x: auto; -webkit-overflow-scrolling: touch; background: var(--gb-card); border: 1px solid var(--gb-border); border-radius: var(--gb-card-radius); }
body.gb-ds .gbp-compare__table { width: 100%; min-width: 0; border-collapse: collapse; border: 0; margin: 0; font-size: var(--gb-body); table-layout: fixed; }
body.gb-ds .gbp-compare__table th, body.gb-ds .gbp-compare__table td { padding: 14px 16px; border: 0; border-bottom: 1px solid var(--gb-border); text-align: center; vertical-align: middle; background: transparent; font-family: var(--gb-font-body); line-height: 1.35; }
body.gb-ds .gbp-compare__table tbody tr:last-child > * { border-bottom: 0; }
body.gb-ds .gbp-compare__table thead th { border-bottom: 2px solid var(--gb-gold-antique); }
body.gb-ds .gbp-compare__product { font-family: var(--gb-font-head) !important; font-size: 20px; font-weight: 600; color: var(--gb-purple); }
body.gb-ds .gbp-compare__product a { color: inherit; text-decoration: none; }
body.gb-ds .gbp-compare__label { text-align: left !important; font-weight: 600; font-size: var(--gb-small); letter-spacing: .06em; text-transform: uppercase; color: var(--gb-muted); width: 32%; }
body.gb-ds .gbp-compare__value { font-weight: 600; color: var(--gb-ink); }
body.gb-ds .gbp-compare__table tbody tr:nth-child(odd) > * { background: rgba(242, 234, 220, .45); }
body.gb-ds .gbp-empty { color: var(--gb-muted); font-weight: 400; }
body.gb-ds .gbp-compare__caption { caption-side: bottom; padding: 10px 16px; font-size: var(--gb-small); color: var(--gb-muted); text-align: left; }
@media (max-width: 767px) {
	body.gb-ds .gbp-compare__table th, body.gb-ds .gbp-compare__table td { padding: 12px 8px; font-size: 14px; }
	body.gb-ds .gbp-compare__product { font-size: 16px; }
	body.gb-ds .gbp-compare__label { width: 30%; font-size: 11px; letter-spacing: .04em; }
}

/* Order options */
body.gb-ds .gbp-order-options__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 12px; }
body.gb-ds .gbp-order-options__item { margin: 0; }
body.gb-ds .gb-center .gbp-order-options__list, body.gb-ds .gbp-order-options.gb-center .gbp-order-options__list { justify-content: center; }
@media (max-width: 767px) { body.gb-ds .gbp-order-options__list { flex-direction: column; } body.gb-ds .gbp-order-options__item, body.gb-ds .gbp-order-options__link { width: 100%; } }
body.gb-ds .gbp-order-options__empty { margin: 0 0 14px; }
body.gb-ds .gbp-selected { display: flex; align-items: center; gap: 16px; margin: 0 0 20px; padding: 14px; background: var(--gb-card); border: 1px solid var(--gb-border); border-left: 4px solid var(--gb-gold); border-radius: var(--gb-card-radius); max-width: 520px; box-sizing: border-box; }
body.gb-ds .gbp-selected .gbp-product__media { margin: 0; flex: 0 0 72px; }
body.gb-ds .gbp-selected img { display: block; width: 72px; height: 72px; object-fit: cover; border-radius: 8px; }
body.gb-ds .gbp-selected__label { margin: 0; font-family: var(--gb-font-head); font-size: 22px; font-weight: 600; color: var(--gb-purple); line-height: 1.2; }
body.gb-ds .gbp-selected__meta { margin: 2px 0 0; font-size: var(--gb-small); color: var(--gb-muted); font-weight: 600; }
body.gb-ds .gbp-selected__change { font-size: var(--gb-small); font-weight: 600; }
body.gb-ds .gb-center .gbp-selected { margin-inline: auto; text-align: left; }

/* Locations */
body.gb-ds .gbl-city + .gbl-city { margin-top: 40px; }
body.gb-ds .gbl-city__name { font-size: var(--gb-h3); padding-bottom: 10px; margin-bottom: 18px; border-bottom: 2px solid var(--gb-gold-antique); }
body.gb-ds .gbl-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gb-gap); }
@media (max-width: 1024px) { body.gb-ds .gbl-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) { body.gb-ds .gbl-grid { grid-template-columns: minmax(0, 1fr); } }
body.gb-ds .gbl-card { background: var(--gb-card); border: 1px solid var(--gb-border); border-radius: var(--gb-card-radius); overflow: hidden; min-width: 0; }
body.gb-ds .gbl-card__media { margin: 0; }
body.gb-ds .gbl-card__image { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
body.gb-ds .gbl-card__body { padding: 20px 22px 22px; }
body.gb-ds .gbl-card__type { margin: 0 0 6px; font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--gb-purple-2); }
body.gb-ds .gbl-card__name { font-size: 22px; }
body.gb-ds .gbl-address { font-style: normal; margin: 0 0 10px; font-size: var(--gb-small); line-height: 1.5; color: var(--gb-ink); }
body.gb-ds .gbl-products { margin: 0 0 12px; font-size: var(--gb-small); }
body.gb-ds .gbl-products__label { font-weight: 600; color: var(--gb-muted); }
body.gb-ds .gbl-actions { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 0; }
body.gb-ds .gbl-action { display: inline-flex; align-items: center; min-height: 44px; font-size: var(--gb-small); font-weight: 700; color: var(--gb-purple-2); }
body.gb-ds .gbl-list { list-style: none; margin: 0; padding: 0; }
body.gb-ds .gbl-row { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; padding: 12px 0; border-bottom: 1px solid var(--gb-border); }
body.gb-ds .gbl-row__name { font-weight: 700; color: var(--gb-purple); }
body.gb-ds .gbl-row__type, body.gb-ds .gbl-row__address { font-size: var(--gb-small); color: var(--gb-muted); }
body.gb-ds .gbl-strip { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
body.gb-ds .gbl-strip__link { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 16px; border: 1px solid var(--gb-border); border-radius: 999px; background: var(--gb-card); text-decoration: none; color: var(--gb-purple); font-weight: 600; font-size: var(--gb-small); }
body.gb-ds .gbl-strip__city { color: var(--gb-muted); font-weight: 400; }
body.gb-ds .gbl-locations--empty { padding: 28px; background: var(--gb-card); border: 1px dashed rgba(52, 23, 71, .3); border-radius: var(--gb-card-radius); }
body.gb-ds .gbl-empty__text { margin: 0 0 16px; font-size: var(--gb-lead); line-height: 1.5; max-width: 52ch; color: var(--gb-ink); }
body.gb-ds .gbl-empty__actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 0; }
body.gb-ds .gb-center .gbl-locations--empty, body.gb-ds .gb-center .gbl-empty__text { text-align: center; margin-inline: auto; }
body.gb-ds .gb-center .gbl-empty__actions { justify-content: center; }
body.gb-ds .gb-section--purple .gbl-locations--empty { background: rgba(255, 255, 255, .06); border-color: var(--gb-border-dark); }
body.gb-ds .gb-section--purple .gbl-empty__text { color: var(--gb-on-dark); }
@media (max-width: 767px) {
	body.gb-ds .gbl-locations--empty { padding: 22px 18px; }
	body.gb-ds .gbl-empty__actions .gbp-button { width: 100%; }
}

/* ---------- WPForms partner form (.gb-partner-form on the form or its Elementor container) ---------- */
body.gb-ds .gb-partner-form .wpforms-container {
	--wpforms-field-size-input-height: 48px; --wpforms-field-border-radius: 6px; --wpforms-field-border-color: rgba(52, 23, 71, .28);
	--wpforms-field-text-color: var(--gb-ink); --wpforms-label-color: var(--gb-purple); --wpforms-button-background-color: var(--gb-gold);
	--wpforms-button-text-color: var(--gb-ink); --wpforms-button-border-radius: 6px; --wpforms-button-size-height: 52px;
	margin: 0;
}
body.gb-ds .gb-partner-form .wpforms-field-label, body.gb-ds .gb-partner-form .wpforms-field-sublabel { font-family: var(--gb-font-body); color: var(--gb-purple); font-weight: 600; font-size: 15px; }
body.gb-ds .gb-partner-form .wpforms-required-label { color: var(--gb-focus); }
body.gb-ds .gb-partner-form input[type="text"], body.gb-ds .gb-partner-form input[type="email"], body.gb-ds .gb-partner-form input[type="tel"],
body.gb-ds .gb-partner-form input[type="url"], body.gb-ds .gb-partner-form input[type="number"], body.gb-ds .gb-partner-form select, body.gb-ds .gb-partner-form textarea {
	width: 100%; max-width: 100% !important; min-height: 48px; box-sizing: border-box; padding: 10px 14px; font-family: var(--gb-font-body); font-size: 16px; /* 16px = no iOS zoom */
	color: var(--gb-ink); background: #fff; border: 1px solid rgba(52, 23, 71, .28); border-radius: 6px; box-shadow: none;
}
body.gb-ds .gb-partner-form textarea, body.gb-ds div.wpforms-container-full .wpforms-form .gb-partner-form textarea, body.gb-ds .gb-partner-form .wpforms-field textarea.wpforms-field-large { min-height: 132px; height: 150px; }
body.gb-ds .gb-partner-form input:focus, body.gb-ds .gb-partner-form select:focus, body.gb-ds .gb-partner-form textarea:focus { border-color: var(--gb-purple-2); outline: 3px solid rgba(74, 31, 115, .18); outline-offset: 0; }
body.gb-ds .gb-partner-form .wpforms-field { padding: 8px 0 !important; }
body.gb-ds .gb-partner-form .wpforms-submit { min-width: 240px; cursor: pointer; }
body.gb-ds .gb-partner-form .wpforms-error, body.gb-ds .gb-partner-form label.wpforms-error { color: var(--gb-focus); font-size: 14px; }
body.gb-ds .gb-partner-form .wpforms-confirmation-container-full { background: var(--gb-surface); border: 1px solid var(--gb-gold-antique); color: var(--gb-ink); border-radius: var(--gb-card-radius); }
@media (max-width: 767px) { body.gb-ds .gb-partner-form .wpforms-submit { width: 100%; } }

/* ---------- Mobile action bar ---------- */
.gb-mobilebar { display: none; }
@media (max-width: 767px) {
	body.gb-has-mobilebar { padding-bottom: calc(var(--gb-bar-h) + env(safe-area-inset-bottom, 0px)); }
	.gb-mobilebar {
		display: block; position: fixed; left: 0; right: 0; bottom: 0; z-index: 9990;
		background: var(--gb-purple); border-top: 1px solid rgba(237, 187, 69, .35);
		padding-bottom: env(safe-area-inset-bottom, 0px); box-shadow: 0 -6px 20px rgba(36, 16, 51, .18);
	}
	.gb-mobilebar__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; }
	.gb-mobilebar__item { margin: 0; }
	body .gb-mobilebar a.gb-mobilebar__link {
		display: flex; align-items: center; justify-content: center; height: var(--gb-bar-h); padding: 0 6px; box-sizing: border-box;
		font-family: var(--gb-font-body); font-size: 13px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; text-align: center; line-height: 1.1;
		color: var(--gb-on-dark); text-decoration: none; border-top: 3px solid transparent;
	}
	body .gb-mobilebar .gb-mobilebar__item--order a.gb-mobilebar__link { background: var(--gb-gold); color: var(--gb-ink); }
	body .gb-mobilebar a.gb-mobilebar__link:hover, body .gb-mobilebar a.gb-mobilebar__link:focus-visible { color: var(--gb-gold); }
	body .gb-mobilebar .gb-mobilebar__item--order a.gb-mobilebar__link:hover { color: var(--gb-ink); background: var(--gb-gold-hover); }
	body .gb-mobilebar a.gb-mobilebar__link.is-current { border-top-color: var(--gb-gold); color: var(--gb-gold); }
	body .gb-mobilebar .gb-mobilebar__item--order a.gb-mobilebar__link.is-current { border-top-color: var(--gb-purple-2); color: var(--gb-ink); }
}
@media print { .gb-mobilebar { display: none !important; } body.gb-has-mobilebar { padding-bottom: 0; } }
@media (prefers-reduced-motion: reduce) { body.gb-ds * { transition: none !important; scroll-behavior: auto !important; } }

/* Visually hidden helper (themes without .screen-reader-text) */
body.gb-ds .gbp-compare .screen-reader-text, body.gb-ds .gbp-product .screen-reader-text, body.gb-ds .gbp-order-options .screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

body.gb-ds .gbp-ext { display: inline-block; margin-left: .35em; font-size: 1.05em; line-height: 1; transform: translateY(-1px); }

/* =========================================================
   1.2.0 Sticky header
   The sticky element is the top-level container holding the header (Canvas pages: the gb-slot container whose
   Shortcode renders gobao-header; plugin layouts: .gb-header-wrap). Its parent is the page root, so it stays
   stuck for the whole page. No ancestor may set overflow hidden/auto (we use clip where needed).
   ========================================================= */
body.gb-ds .e-con.gb-slot:has(.gb-header),
body.gb-ds .gb-header-wrap {
	position: -webkit-sticky; position: sticky; top: var(--wp-admin--admin-bar--height, 0px); z-index: 900;
}
body.gb-ds .e-con.gb-header { box-shadow: 0 1px 0 var(--gb-border); }
@media screen and (max-width: 600px) {
	/* WP admin bar scrolls away on small screens (position:absolute), so stick to the very top. */
	body.gb-ds .e-con.gb-slot:has(.gb-header), body.gb-ds .gb-header-wrap { top: 0; }
}
/* Anchor jumps (#compare, #partner-form) land below the sticky header. */
html:has(body.gb-ds) { scroll-padding-top: calc(var(--wp-admin--admin-bar--height, 0px) + 90px); }
@media (max-width: 767px) { html:has(body.gb-ds) { scroll-padding-top: 150px; } }

/* =========================================================
   1.2.0 Components: social icons, language switcher, reviews, Nutrition Facts, videos, blog, CJK font
   ========================================================= */
body.gb-ds :is(.gb-social, .gb-lang, .gb-reviews, .gb-nutrition, .gb-video, .gb-posts, .gb-post, .gbp-page__info) .screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

/* Social */
body.gb-ds .gb-social { display: flex; flex-wrap: wrap; gap: 12px; list-style: none; margin: 0; padding: 0; }
body.gb-ds .gb-social__link { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 999px; color: inherit; border: 1px solid currentColor; opacity: .9; transition: background-color .15s, color .15s, opacity .15s; }
body.gb-ds .gb-social__link:hover { opacity: 1; background: var(--gb-gold); border-color: var(--gb-gold); color: var(--gb-ink); }
body.gb-ds .gb-social__link:focus-visible { outline: 3px solid var(--gb-focus); outline-offset: 2px; }
body.gb-ds .gb-footer .gb-social__link { color: var(--gb-on-dark); }
body.gb-ds .gb-social__icon { display: block; width: 20px; height: 20px; }

/* Language switcher (header) */
body.gb-ds .gb-lang__list { display: flex; align-items: center; gap: 0; list-style: none; margin: 0; padding: 0; font-family: var(--gb-font-body); font-size: 14px; font-weight: 600; }
body.gb-ds .gb-lang__item + .gb-lang__item::before { content: "|"; color: var(--gb-muted); opacity: .6; padding: 0 2px; }
body.gb-ds .gb-lang__link { display: inline-block; min-width: 32px; padding: 10px 4px; text-align: center; color: var(--gb-ink); text-decoration: none; border-radius: 6px; }
body.gb-ds .gb-lang__link:hover { text-decoration: underline; }
body.gb-ds .gb-lang__item.is-current .gb-lang__link { color: var(--gb-purple); text-decoration: underline; text-decoration-color: var(--gb-gold); text-decoration-thickness: 2px; text-underline-offset: 4px; }
body.gb-ds .gb-lang__link:focus-visible { outline: 3px solid var(--gb-focus); outline-offset: 1px; }
@media (max-width: 767px) { body.gb-ds .gb-lang__list { font-size: 13px; } body.gb-ds .gb-lang__link { min-width: 28px; padding: 8px 2px; } }

/* Reviews (1.2.2: photo-on-top cards; 3 columns desktop, 2 tablet, swipe row on mobile) */
body.gb-ds .gb-reviews__title { margin: 0 0 32px; text-align: center; }
body.gb-ds .gb-reviews__notice { margin: -16px auto 28px; max-width: 62ch; text-align: center; font-size: var(--gb-small); color: var(--gb-muted); }
body.gb-ds .gb-reviews__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gb-gap); align-items: stretch; }
body.gb-ds .gb-reviews__grid--n1 { grid-template-columns: minmax(0, 420px); justify-content: center; }
body.gb-ds .gb-reviews__grid--n2 { grid-template-columns: repeat(2, minmax(0, 420px)); justify-content: center; }
body.gb-ds .gb-reviews__grid:focus-visible { outline: 3px solid var(--gb-focus); outline-offset: 4px; border-radius: var(--gb-card-radius); }
body.gb-ds .gb-review { position: relative; margin: 0; background: var(--gb-card); border: 1px solid var(--gb-border); border-radius: var(--gb-card-radius); display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 1px 2px rgba(52, 23, 71, .05); }
body.gb-ds .gb-review__media { position: relative; margin: 0; aspect-ratio: 4 / 3; background: var(--gb-surface); overflow: hidden; }
body.gb-ds .gb-review__photo { display: block; width: 100%; height: 100%; object-fit: cover; }
body.gb-ds .gb-review__body { display: flex; flex-direction: column; gap: 14px; flex: 1 1 auto; padding: 24px 26px 26px; }
body.gb-ds .gb-review__body::before { content: "\201C"; display: block; height: 26px; margin: 0 0 -6px; font-family: var(--gb-font-head); font-size: 56px; line-height: 1; color: var(--gb-gold); }
body.gb-ds .gb-review__rating { margin: 0; color: var(--gb-gold-hover); letter-spacing: 2px; font-size: 18px; }
body.gb-ds .gb-review__quote { margin: 0; padding: 0; border: 0; font-family: var(--gb-font-head); font-size: 20px; line-height: 1.45; color: var(--gb-ink); }
body.gb-ds .gb-review__quote p { margin: 0; }
body.gb-ds .gb-review__meta { margin-top: auto; padding-top: 6px; font-size: var(--gb-small); color: var(--gb-muted); }
body.gb-ds .gb-review__name { font-weight: 600; color: var(--gb-purple-2); }
body.gb-ds .gb-review__source { color: var(--gb-muted); }
body.gb-ds .gb-review__shot { max-width: 100%; height: auto; border-radius: 8px; }
/* "Sample" badge (reviews + sample video) */
body.gb-ds .gb-sample-badge, .gb-sample-badge { display: inline-block; padding: 4px 10px; border-radius: 999px; background: var(--gb-gold, #EDBB45); color: var(--gb-purple, #341747); font-family: var(--gb-font-body); font-size: 12px; font-weight: 700; line-height: 1.3; letter-spacing: .06em; text-transform: uppercase; vertical-align: middle; }
body.gb-ds .gb-review__body > .gb-review__badge { align-self: flex-start; }
body.gb-ds .gb-review__media .gb-review__badge { position: absolute; top: 12px; left: 12px; box-shadow: 0 2px 8px rgba(36, 16, 51, .25); }
body.gb-ds .gb-review--sample { border-style: dashed; border-color: rgba(74, 31, 115, .35); }
body.gb-ds .gb-section--purple .gb-reviews__notice { color: var(--gb-on-dark-muted); }
@media (max-width: 1024px) {
	body.gb-ds .gb-reviews__grid:not(.gb-reviews__grid--n1) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
	body.gb-ds .gb-reviews__title { margin-bottom: 24px; }
	body.gb-ds .gb-reviews__notice { margin: -10px auto 20px; }
	/* Swipeable row: one card + a peek of the next; scroll-snap, no JavaScript. */
	body.gb-ds .gb-reviews__grid:not(.gb-reviews__grid--n1) { display: flex; gap: 14px; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; margin: 0 calc(-1 * var(--gb-gutter)); padding: 4px var(--gb-gutter) 14px; scroll-padding: 0 var(--gb-gutter); scrollbar-width: thin; }
	body.gb-ds .gb-reviews__grid:not(.gb-reviews__grid--n1) > .gb-review { flex: 0 0 85%; scroll-snap-align: start; }
	body.gb-ds .gb-reviews__grid--n1 { grid-template-columns: minmax(0, 1fr); }
	body.gb-ds .gb-review__body { padding: 20px 20px 22px; }
	body.gb-ds .gb-review__quote { font-size: 18px; }
}

/* Nutrition Facts (Canadian-style) */
body.gb-ds .gb-nutrition-all { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: 40px var(--gb-gap); align-items: start; }
body.gb-ds .gb-nutrition__product { margin: 0 0 14px; }
body.gb-ds .gb-nft { width: 100%; max-width: 360px; border-collapse: collapse; border: 2px solid #000; background: #fff; color: #000; font-family: Helvetica, Arial, var(--gb-font-body); font-size: 15px; line-height: 1.3; margin: 0 0 16px; }
body.gb-ds .gb-nft caption { caption-side: top; text-align: left; font-weight: 800; font-size: 26px; padding: 8px 8px 0; background: #fff; border: 2px solid #000; border-bottom: 0; color: #000; }
body.gb-ds .gb-nft td, body.gb-ds .gb-nft th { padding: 4px 8px; border: 0; border-top: 1px solid #000; text-align: left; font-weight: 400; vertical-align: top; background: #fff; color: #000; }
body.gb-ds .gb-nft td:last-child, body.gb-ds .gb-nft .gb-nft__dvhead { text-align: right; white-space: nowrap; }
body.gb-ds .gb-nft__serving td { border-top: 0; padding-bottom: 6px; }
body.gb-ds .gb-nft__head th { border-top: 6px solid #000; font-weight: 700; }
body.gb-ds .gb-nft__cal { font-size: 20px; font-weight: 800; }
body.gb-ds .gb-nft__row--l0 th { font-weight: 700; }
body.gb-ds .gb-nft__row--l0 .gb-nft__val { font-weight: 400; }
body.gb-ds .gb-nft__row--l1 th { padding-left: 22px; }
body.gb-ds .gb-nft tfoot td { border-top: 4px solid #000; font-size: 12px; text-align: left; white-space: normal; }
body.gb-ds .gb-nutrition__label img { max-width: 360px; width: 100%; height: auto; border-radius: 8px; border: 1px solid var(--gb-border); }
body.gb-ds .gb-nutrition__label { margin: 0 0 16px; }
body.gb-ds .gb-nutrition__text p { margin: 0 0 6px; max-width: 60ch; }
body.gb-ds .gb-nutrition__empty, body.gb-ds .gb-videos__empty, body.gb-ds .gb-posts__empty { font-size: var(--gb-lead); color: var(--gb-muted); margin: 0; max-width: 60ch; }
body.gb-ds .gb-section--purple :is(.gb-nutrition__empty, .gb-videos__empty, .gb-posts__empty) { color: var(--gb-on-dark-muted); }

/* Videos (click to load) */
body.gb-ds .gb-videos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: 40px var(--gb-gap); }
body.gb-ds .gb-videos__title { margin: 0 0 12px; }
body.gb-ds .gb-video { margin: 0; }
body.gb-ds .gb-video__play, body.gb-ds .gb-video__frame, body.gb-ds .gb-video__media { position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; border: 0; border-radius: var(--gb-img-radius); overflow: hidden; background: var(--gb-purple); color: var(--gb-on-dark); padding: 0; cursor: pointer; }
body.gb-ds .gb-video--tiktok :is(.gb-video__play, .gb-video__frame) { aspect-ratio: 9 / 16; max-width: 340px; max-height: 80vh; }
body.gb-ds .gb-video__poster { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .85; }
body.gb-ds .gb-video__icon { position: absolute; left: 50%; top: 50%; width: 68px; height: 68px; margin: -34px 0 0 -34px; border-radius: 999px; background: var(--gb-gold); color: var(--gb-ink); display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 18px rgba(0,0,0,.25); }
body.gb-ds .gb-video__label { position: absolute; left: 12px; right: 12px; bottom: 12px; font-size: var(--gb-small); font-weight: 600; text-align: left; text-shadow: 0 1px 3px rgba(0,0,0,.6); }
body.gb-ds .gb-video__play:hover .gb-video__icon, body.gb-ds .gb-video__play:focus-visible .gb-video__icon { background: var(--gb-gold-hover); }
body.gb-ds .gb-video__play:focus-visible { outline: 3px solid var(--gb-focus); outline-offset: 3px; }
body.gb-ds .gb-video__note { margin: 8px 0 0; }
/* 1.2.2 Sample video */
body.gb-ds .gb-video__wrap { position: relative; }
body.gb-ds .gb-video__badge { position: absolute; top: 12px; left: 12px; z-index: 2; pointer-events: none; box-shadow: 0 2px 8px rgba(36, 16, 51, .3); }
body.gb-ds .gb-video__caption { margin: 10px 0 0; color: var(--gb-muted); max-width: 60ch; }
body.gb-ds .gb-section--purple .gb-video__caption { color: var(--gb-on-dark-muted); }
body.gb-ds .gb-videos--sample { margin-bottom: 24px; max-width: 800px; grid-template-columns: minmax(0, 1fr); }
body.gb-ds .gbp-page__video { margin: 40px 0 0; max-width: 720px; }
body.gb-ds .gbp-page__info { margin: 24px 0 0; font-size: var(--gb-small); }
body.gb-ds .gbp-page__info a { color: var(--gb-purple); font-weight: 600; }

/* Blog */
body.gb-ds .gb-posts__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: var(--gb-gap); }
body.gb-ds .gb-post-card { display: flex; flex-direction: column; overflow: hidden; padding: 0; }
body.gb-ds .gb-post-card__media { display: block; aspect-ratio: 3 / 2; overflow: hidden; background: var(--gb-surface); }
body.gb-ds .gb-post-card__img { width: 100%; height: 100%; object-fit: cover; display: block; }
body.gb-ds .gb-post-card__body { padding: 22px 24px 24px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
body.gb-ds .gb-post-card__title { margin: 0; }
body.gb-ds .gb-post-card__title a { color: var(--gb-ink); text-decoration: none; }
body.gb-ds .gb-post-card__title a:hover { text-decoration: underline; }
body.gb-ds .gb-post-card__date, body.gb-ds .gb-post-card__excerpt, body.gb-ds .gb-post-card__more { margin: 0; }
body.gb-ds .gb-post-card__more { margin-top: auto; }
body.gb-ds .gb-pagination ul { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 32px 0 0; padding: 0; }
body.gb-ds .gb-pagination .page-numbers { display: inline-flex; min-width: 44px; height: 44px; align-items: center; justify-content: center; padding: 0 12px; border-radius: 999px; border: 1px solid var(--gb-border); color: var(--gb-ink); text-decoration: none; }
body.gb-ds .gb-pagination .page-numbers.current { background: var(--gb-purple); color: var(--gb-on-dark); border-color: var(--gb-purple); }
body.gb-ds .gb-post { margin: 0 auto; }
body.gb-ds .gb-post__title { margin: 8px 0; }
body.gb-ds .gb-post__media { margin: 24px 0; }
body.gb-ds .gb-post__media img { width: 100%; height: auto; }
body.gb-ds .gb-post__content { font-size: var(--gb-body); line-height: var(--gb-body-lh); }
body.gb-ds .gb-post__content img { max-width: 100%; height: auto; border-radius: 8px; }
body.gb-ds .gb-post__back { margin-top: 40px; }
body.gb-ds .gb-blog__title { margin: 0 0 32px; }

/* Chinese: Fraunces / Be Vietnam Pro have no CJK glyphs; Noto Sans TC (loaded only on zh views) takes over. */
html[lang^="zh"] body.gb-ds { --gb-font-head: "Fraunces", "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", serif; --gb-font-body: "Be Vietnam Pro", "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif; }
html[lang^="zh"] body.gb-ds :is(h1, h2, h3, .elementor-heading-title) { letter-spacing: 0; }

/* 1.2.0 Header actions (language switcher + Order). The switcher renders nothing without Polylang. */
body.gb-ds .e-con.gb-header-actions { --width: auto; width: auto; flex: 0 0 auto; --padding-top: 0; --padding-bottom: 0; --padding-left: 0; --padding-right: 0; --gap: 0 14px; gap: 0 14px; --flex-wrap: nowrap; --align-items: center; align-items: center; }
body.gb-ds .gb-header-lang:not(:has(.gb-lang)) { display: none; }
body.gb-ds .gb-header-lang { width: auto; flex: 0 0 auto; }
@media (max-width: 767px) {
	body.gb-ds .e-con.gb-header-actions { --gap: 0 6px; gap: 0 6px; margin-left: auto; }
	body.gb-ds .gb-header-actions .gb-header-order { margin-left: 0; }
	body.gb-ds .gb-header .gb-lang__item + .gb-lang__item::before { content: none; }
	body.gb-ds .gb-header .gb-lang__link { min-width: 26px; padding: 12px 2px; font-size: 12px; }
}
@media (max-width: 374px) {
	/* Very narrow phones: the switcher moves under the nav as a compact centred line. */
	body.gb-ds .e-con.gb-header-actions { display: contents; }
	body.gb-ds .gb-header .gb-header-lang { order: 4; flex: 0 0 100%; }
	body.gb-ds .gb-header .gb-lang__list { justify-content: center; }
	body.gb-ds .gb-header .gb-lang__link { padding: 4px 6px; }
}
body.gb-ds .gb-footer-social:not(:has(.gb-social)) { display: none; }

/* =========================================================
   1.2.3 Home sections ([gobao_posts section="yes"], [gobao_heating_methods], [gobao_nutrition_summary])
   Each prints a full section; put it in a gb-slot container (no padding of its own).
   ========================================================= */
body.gb-ds .gb-container--narrow { max-width: min(100%, 860px); }
body.gb-ds .gb-home-section__head { text-align: center; margin: 0 auto 40px; max-width: 46ch; }
body.gb-ds .gb-home-section__head .gb-eyebrow { margin: 0 0 10px; }
body.gb-ds .gb-home-section__title { margin: 0; }
body.gb-ds .gb-home-section__more { margin: 32px 0 0; text-align: center; }
/* Blog: friendly empty state */
body.gb-ds .gb-posts--empty { display: flex; justify-content: center; }
body.gb-ds .gb-posts__empty-card { width: 100%; max-width: 560px; margin: 0 auto; padding: 36px 28px; text-align: center; border-style: dashed; display: flex; flex-direction: column; align-items: center; gap: 14px; }
body.gb-ds .gb-posts__empty-icon { display: inline-flex; width: 56px; height: 56px; align-items: center; justify-content: center; border-radius: 999px; background: var(--gb-surface); color: var(--gb-purple); }
body.gb-ds .gb-posts__empty-card .gb-posts__empty { margin: 0; text-align: center; }
body.gb-ds .gb-posts__empty-cta { margin: 6px 0 0; }
/* How to heat: two method cards */
body.gb-ds .gb-heat-methods { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--gb-gap); align-items: stretch; }
body.gb-ds .gb-heat-card { display: flex; flex-direction: column; gap: 14px; padding: 24px; margin: 0; min-width: 0; }
body.gb-ds .gb-heat-card--sample { border-style: dashed; }
body.gb-ds .gb-heat-card__title { display: flex; align-items: center; gap: 12px; margin: 0; }
body.gb-ds .gb-heat-card__num { flex: 0 0 auto; display: inline-flex; width: 36px; height: 36px; align-items: center; justify-content: center; border-radius: 999px; background: var(--gb-purple); color: var(--gb-on-dark); font-family: var(--gb-font-body); font-size: 16px; font-weight: 700; line-height: 1; }
body.gb-ds .gb-heat-card .gb-video__caption { margin: 0; }
body.gb-ds .gb-heat-card__text { margin: auto 0 0; font-weight: 600; color: var(--gb-ink); }
@media (max-width: 767px) {
	body.gb-ds .gb-home-section__head { margin-bottom: 28px; }
	body.gb-ds .gb-heat-methods { grid-template-columns: minmax(0, 1fr); }
	body.gb-ds .gb-heat-card { padding: 20px 18px; }
	body.gb-ds .gb-posts__empty-card { padding: 28px 20px; }
}
/* Nutrition summary */
body.gb-ds .gb-nsum__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: var(--gb-gap); }
body.gb-ds .gb-nsum__card { display: flex; flex-direction: column; gap: 8px; padding: 22px 24px; margin: 0; }
body.gb-ds .gb-nsum__name, body.gb-ds .gb-nsum__serving { margin: 0; }
body.gb-ds .gb-nsum__list { margin: 6px 0 0; padding: 0; border-top: 3px solid var(--gb-ink); }
body.gb-ds .gb-nsum__row { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px solid var(--gb-border); }
body.gb-ds .gb-nsum__row dt { font-weight: 600; margin: 0; }
body.gb-ds .gb-nsum__row dd { margin: 0; text-align: right; }
body.gb-ds .gb-nsum__row--cal { font-size: 1.1em; }
body.gb-ds .gb-nsum__more { margin: auto 0 0; padding-top: 8px; }
body.gb-ds .gb-nsum__more a { color: var(--gb-purple); font-weight: 600; }
body.gb-ds .gb-nsum--empty .gb-nsum__empty { margin: 0 auto; text-align: center; }
/* Header nav with 5 links (Blog added in 1.2.3): keep one row on small desktops, keep 2 rows on phones. */
@media (min-width: 768px) and (max-width: 1199px) {
	body.gb-ds .e-con.gb-header { --gap: 12px 20px; --column-gap: 20px; }
	body.gb-ds .gb-header .e-con.gb-nav { --gap: 4px 18px; --column-gap: 18px; gap: 4px 18px; }
	body.gb-ds .gb-header .gb-navlink .elementor-heading-title { font-size: 14px; }
}
@media (max-width: 767px) {
	body.gb-ds .gb-header .e-con.gb-nav { --gap: 0 14px; --column-gap: 14px; gap: 0 14px; }
}

/* Go Bao blog images — 2026-10-04 */
body.gb-ds .gb-post-card__media { background: var(--gb-surface); }
body.gb-ds .gb-post-card__img { object-fit: contain; }
body.gb-ds .gb-post__media img { display: block; width: 100%; max-width: 100%; height: auto; max-height: none; object-fit: contain; }
body.gb-ds .gb-post__caption { margin-top: 8px; }
