/**
 * ClothB2B Child — components layer.
 *
 * Every page-level building block: header chrome, language switcher, hero,
 * category / fitting / product cards, stats, about, testimonials, CTA band,
 * footer, inquiry form, FAQ accordion, inner-page banner. Depends on
 * tokens.css + base.css.
 *
 * Layout uses CSS logical properties (margin-inline, padding-block, inset-inline)
 * wherever possible so RTL flips automatically; rtl.css only patches the rest.
 */

/* ============ Header ============ */
#masthead {
	position: relative;
	background: var(--cb-bg);
	border-bottom: 1px solid var(--cb-line);
	z-index: var(--cb-z-header);
}
/* Desktop: reserve right-side room for the absolute-positioned .cb-header-actions
 * cluster (CTA + language switcher) so Astra's primary nav doesn't run into it.
 *
 * Use MARGIN on the nav container, NOT PADDING on the menu/ul: padding shrinks a
 * flex menu's content box and makes the items wrap vertically (regression); margin
 * on .main-header-bar-navigation (a flex child in Astra's header row) shifts the
 * whole nav left as a unit, leaving the right-side gap for the cluster while the
 * menu stays horizontal. Tune --cb-header-reserve if the cluster width changes. */
#masthead {
	--cb-header-reserve: 16rem;
}
@media (min-width: 769px) {
	#masthead .main-header-bar-navigation,
	#masthead .ast-builder-menu-1,
	#masthead .site-primary-header-wrap .ast-builder-menu-1 {
		margin-inline-end: var(--cb-header-reserve);
	}
}
#masthead .site-title,
#masthead .site-title a {
	font-family: var(--cb-font-display);
	font-weight: 800;
	font-size: 1.5rem;
	letter-spacing: var(--cb-tracking-wide);
	color: var(--cb-ink);
	text-transform: uppercase;
	text-decoration: none;
}
#masthead .site-title a:hover { color: var(--cb-accent); }

/* Primary nav (Astra's .main-header-menu). */
.main-header-menu li > a {
	font-size: var(--cb-fs-sm);
	font-weight: 600;
	letter-spacing: var(--cb-tracking-wide);
	color: var(--cb-ink) !important;
	text-transform: uppercase;
	/* Compact horizontal padding so 7 items + the right-side actions cluster fit
	 * one row without wrapping or crowding on a typical laptop width. */
	padding-inline: var(--cb-s-3) !important;
	transition: color var(--cb-dur) var(--cb-ease);
}
.main-header-menu li > a:hover,
.main-header-menu li.current-menu-item > a { color: var(--cb-accent) !important; }

/* Top announcement bar (injected via astra_header_before). */
.cb-topbar {
	background: var(--cb-ink);
	color: #fff;
	font-size: var(--cb-fs-xs);
	letter-spacing: var(--cb-tracking-wide);
	text-align: center;
	padding: var(--cb-s-2) var(--cb-gutter);
}
.cb-topbar a { color: var(--cb-earth-200); text-decoration: underline; }
.cb-topbar a:hover { color: #fff; }

/* Right-side action cluster: header CTA + language switcher (one injected
 * container so the two stay aligned regardless of Astra's Header Builder). */
.cb-header-actions {
	position: absolute;
	inset-block-start: 50%;
	inset-inline-end: var(--cb-s-5);
	transform: translateY(-50%);
	z-index: var(--cb-z-dropdown);
	display: flex;
	align-items: center;
	gap: var(--cb-s-3);
	/* Transparent — the CTA button (solid) and lang toggle (bordered) carry their
	 * own surfaces, so no floating pill. The desktop reserve (--cb-header-reserve
	 * on .main-header-bar below) keeps the nav from sliding under this cluster. */
}
.cb-header-cta {
	white-space: nowrap;
}

/* Language switcher (rendered inside .cb-header-actions). */
.cb-lang-switcher { position: relative; }
.cb-lang-toggle {
	display: inline-flex;
	align-items: center;
	gap: var(--cb-s-2);
	background: transparent;
	border: 1px solid var(--cb-line);
	border-radius: var(--cb-radius-pill);
	padding: var(--cb-s-2) var(--cb-s-4);
	font-size: var(--cb-fs-xs);
	font-weight: 600;
	letter-spacing: var(--cb-tracking-wide);
	color: var(--cb-ink);
	cursor: pointer;
	transition: background-color var(--cb-dur) var(--cb-ease), border-color var(--cb-dur) var(--cb-ease), color var(--cb-dur) var(--cb-ease);
}
.cb-lang-toggle:hover { background: var(--cb-bg-alt); border-color: var(--cb-gray-300); }
.cb-lang-toggle:focus-visible { outline: 2px solid var(--cb-accent); outline-offset: 2px; }
/* Open state (matches :hover/:focus-within via the .is-open class added by JS). */
.cb-lang-switcher.is-open .cb-lang-toggle { background: var(--cb-bg-alt); border-color: var(--cb-accent); color: var(--cb-accent); }
.cb-lang-icon { color: var(--cb-muted); transition: color var(--cb-dur) var(--cb-ease); }
.cb-lang-toggle:hover .cb-lang-icon,
.cb-lang-switcher.is-open .cb-lang-toggle .cb-lang-icon { color: var(--cb-accent); }
.cb-lang-caret { transition: transform var(--cb-dur) var(--cb-ease); }
.cb-lang-list {
	position: absolute;
	inset-block-start: calc(100% + 10px);
	inset-inline-end: 0;
	min-width: 160px;
	max-height: min(60vh, 380px);
	overflow-y: auto;
	margin: 0;
	padding: var(--cb-s-2);
	list-style: none;
	background: #fff;
	border: 1px solid var(--cb-line);
	border-radius: var(--cb-radius-lg);
	box-shadow: var(--cb-shadow-lg);
	opacity: 0;
	visibility: hidden;
	transform: translateY(-8px);
	transition: opacity var(--cb-dur) var(--cb-ease), transform var(--cb-dur) var(--cb-ease), visibility var(--cb-dur);
}
.cb-lang-list a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--cb-s-3);
	min-height: 38px;
	padding: var(--cb-s-2) var(--cb-s-3);
	font-size: var(--cb-fs-sm);
	font-weight: 500;
	color: var(--cb-text);
	border-radius: var(--cb-radius);
	text-decoration: none;
	transition: background-color var(--cb-dur-fast) var(--cb-ease), color var(--cb-dur-fast) var(--cb-ease);
}
.cb-lang-list a:hover { background: var(--cb-blue-50); color: var(--cb-ink); }
.cb-lang-list a:focus-visible { outline: 2px solid var(--cb-accent); outline-offset: -2px; }
.cb-lang-list li.is-current a { background: var(--cb-blue-50); color: var(--cb-accent); font-weight: 700; }
.cb-lang-list li.is-current a:hover { background: var(--cb-blue-100); }
.cb-lang-check { color: var(--cb-accent); flex: none; }
.cb-lang-switcher:hover .cb-lang-list,
.cb-lang-switcher:focus-within .cb-lang-list,
.cb-lang-switcher.is-open .cb-lang-list {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}
.cb-lang-switcher:hover .cb-lang-caret,
.cb-lang-switcher:focus-within .cb-lang-caret,
.cb-lang-switcher.is-open .cb-lang-caret { transform: rotate(180deg); }

/* ============ Hero ============ */
.cb-hero.cb-hero--compact { min-height: 52vh; }
.cb-hero.cb-hero--compact .cb-hero__title { font-size: var(--cb-fs-h1); }
.cb-hero {
	position: relative;
	min-height: 86vh;
	display: flex;
	align-items: center;
	background-color: var(--cb-warm-200);
	background-image: url("../images/hero.svg"); /* TODO: replace with a real hero photo */
	background-size: cover;
	background-position: center;
	color: #fff;
}
.cb-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	/* Darker, more uniform overlay so white text keeps WCAG AA contrast even over
	 * the light SVG placeholder or a bright photo (min 0.50 vs the old 0.20). */
	background: linear-gradient(100deg, rgba(20, 20, 23, 0.72) 0%, rgba(20, 20, 23, 0.56) 50%, rgba(20, 20, 23, 0.50) 100%);
	pointer-events: none;
}
.cb-hero__inner {
	position: relative;
	z-index: 1;
	max-width: var(--cb-maxw);
	margin-inline: auto;
	padding-inline: var(--cb-gutter);
	width: 100%;
}
.cb-hero__content { max-width: 640px; }
/* Legibility booster for hero text over any background image. */
.cb-hero__eyebrow,
.cb-hero__title,
.cb-hero__sub { text-shadow: 0 1px 4px rgba(0, 0, 0, 0.35); }
.cb-hero__eyebrow {
	display: inline-block;
	font-size: var(--cb-fs-xs);
	font-weight: 700;
	letter-spacing: var(--cb-tracking-wider);
	text-transform: uppercase;
	color: var(--cb-earth-200);
	margin-bottom: var(--cb-s-4);
}
.cb-hero__title {
	font-size: var(--cb-fs-display);
	font-weight: 800;
	line-height: var(--cb-lh-tight);
	color: #fff;
	margin-bottom: var(--cb-s-4);
}
.cb-hero__sub {
	font-size: var(--cb-fs-lead);
	line-height: var(--cb-lh-body);
	color: rgba(255, 255, 255, 0.92);
	margin-bottom: var(--cb-s-6);
}
.cb-hero__actions { display: flex; flex-wrap: wrap; gap: var(--cb-s-3); }

/* ============ Hero carousel (IS the homepage hero) ============
 * Renders admin-managed carousel_slide posts (template-parts/home/cb-carousel.php).
 * Full-height hero banner that sits flush under the header. Slides stack absolutely
 * and crossfade via .is-active; the active slide also Ken-Burns-zooms and its text
 * staggers in (assets/js/hero-carousel.js drives the rotation + progress bar).
 * Zero slides → cb-carousel.php renders a static fallback hero instead. */
.cb-carousel {
	position: relative;
	min-height: 100vh;
	min-height: 100dvh;               /* full-viewport immersive hero (header is non-sticky, sits above in flow) */
	overflow: hidden;
	isolation: isolate;        /* local stacking context for slides / overlay / controls */
	background-color: var(--cb-warm-200);
}
.cb-carousel__track { position: absolute; inset: 0; z-index: 1; }
.cb-carousel__slide {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	background-size: cover;
	background-position: center;
	background-color: var(--cb-warm-200); /* fills letterboxing while the photo loads */
	opacity: 0;
	transition: opacity 0.8s var(--cb-ease);
	z-index: 1;
	/* Ken Burns lives on every slide but is PAUSED unless active. Pausing (rather
	 * than detaching) on exit freezes the zoom so the outgoing slide never snaps
	 * back to scale(1) mid-fade. JS restarts it on each activation. */
	animation: cbKenBurns 7s ease-out both;
	animation-play-state: paused;
}
.cb-carousel__slide.is-active { opacity: 1; z-index: 2; animation-play-state: running; }
/* Per-slide darkening gradient so white text keeps WCAG AA contrast over any photo. */
.cb-carousel__slide::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(100deg, rgba(20, 20, 23, 0.72) 0%, rgba(20, 20, 23, 0.56) 50%, rgba(20, 20, 23, 0.50) 100%);
	pointer-events: none;
}
.cb-carousel__inner {
	position: relative;        /* lifts content above the slide's ::after overlay */
	z-index: 1;
	max-width: var(--cb-maxw);
	margin-inline: auto;
	padding-inline: var(--cb-gutter);
	width: 100%;
}
.cb-carousel__content { max-width: 640px; }
.cb-carousel__eyebrow,
.cb-carousel__title,
.cb-carousel__sub { text-shadow: 0 1px 4px rgba(0, 0, 0, 0.35); }
.cb-carousel__eyebrow {
	display: inline-block;
	font-size: var(--cb-fs-xs);
	font-weight: 700;
	letter-spacing: var(--cb-tracking-wider);
	text-transform: uppercase;
	color: var(--cb-earth-200);
	margin-bottom: var(--cb-s-4);
}
.cb-carousel__title {
	font-size: var(--cb-fs-display);
	font-weight: 800;
	line-height: var(--cb-lh-tight);
	color: #fff;
	margin-bottom: var(--cb-s-4);
}
.cb-carousel__sub {
	font-size: var(--cb-fs-lead);
	line-height: var(--cb-lh-body);
	color: rgba(255, 255, 255, 0.92);
	margin-bottom: var(--cb-s-6);
}
.cb-carousel__actions { display: flex; flex-wrap: wrap; gap: var(--cb-s-3); }
/* Content entrance — staggered fade+slide-up on the active slide (pure CSS,
 * re-triggered each time .is-active is added). `both` holds the pre-delay state
 * so text waits off-screen until its turn. */
.cb-carousel__slide.is-active .cb-carousel__eyebrow { animation: cbSlideUp 0.6s var(--cb-ease) 0.05s both; }
.cb-carousel__slide.is-active .cb-carousel__title   { animation: cbSlideUp 0.6s var(--cb-ease) 0.15s both; }
.cb-carousel__slide.is-active .cb-carousel__sub     { animation: cbSlideUp 0.6s var(--cb-ease) 0.30s both; }
.cb-carousel__slide.is-active .cb-carousel__actions { animation: cbSlideUp 0.6s var(--cb-ease) 0.45s both; }
@keyframes cbSlideUp { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
@keyframes cbKenBurns { from { transform: scale(1); } to { transform: scale(1.08); } }
/* Autoplay progress bar — fill restarts each slide (hero-carousel.js) and pauses
 * on hover / hidden tab. Duration matches the JS INTERVAL (5s). */
.cb-carousel__progress {
	position: absolute;
	top: 0;
	inset-inline: 0;
	height: 3px;
	z-index: 6;
	background: rgba(255, 255, 255, 0.18);
	overflow: hidden;
}
.cb-carousel__progress-fill {
	display: block;
	height: 100%;
	width: 100%;
	transform: scaleX(0);
	transform-origin: left center;
	background: var(--cb-accent);
	animation: cbProgress 5s linear both;
}
/* No-JS guard: with JS off there is no autoplay, so suppress the bar — otherwise
 * the CSS animation would fill it once and freeze at 100%, misleadingly. JS adds
 * .is-ready to .cb-carousel on init, which lets the animation run. */
.cb-carousel:not(.is-ready) .cb-carousel__progress-fill { animation: none; }
.cb-carousel:hover .cb-carousel__progress-fill { animation-play-state: paused; }
@keyframes cbProgress { to { transform: scaleX(1); } }
/* Pagination dots — built by hero-carousel.js. */
.cb-carousel__dots {
	position: absolute;
	inset-inline: 0;
	bottom: var(--cb-s-5);
	z-index: 5;
	display: flex;
	justify-content: center;
	gap: var(--cb-s-2);
}
.cb-carousel__dot {
	width: 10px;
	height: 10px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.55);
	cursor: pointer;
	transition: background var(--cb-dur) var(--cb-ease), transform var(--cb-dur) var(--cb-ease);
}
.cb-carousel__dot:hover { background: rgba(255, 255, 255, 0.9); }
.cb-carousel__dot.is-active { background: var(--cb-accent); transform: scale(1.15); }
.cb-carousel__dot:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
/* Prev / next arrows. */
.cb-carousel__arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 5;
	width: 44px;
	height: 44px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 0;
	border-radius: 50%;
	background: transparent;            /* no grey blob — just the chevron + shadow */
	color: #fff;
	filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.55));
	cursor: pointer;
	transition: background var(--cb-dur) var(--cb-ease), transform var(--cb-dur) var(--cb-ease);
}
.cb-carousel__arrow:hover { background: rgba(255, 255, 255, 0.18); transform: translateY(-50%) scale(1.06); }
.cb-carousel__arrow:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
.cb-carousel__arrow--prev { inset-inline-start: var(--cb-s-5); }
.cb-carousel__arrow--next { inset-inline-end: var(--cb-s-5); }
@media (max-width: 768px) {
	.cb-carousel {
		min-height: 0;            /* override desktop 100dvh so aspect-ratio can drive the height */
		aspect-ratio: 3 / 4;      /* height adapts to width — far less aggressive crop than a tall fixed vh */
		max-height: 100dvh;       /* never exceed the visible viewport (guards landscape phones) */
	}
	.cb-carousel__arrow { display: none; }          /* touch + dots on mobile */
	.cb-carousel__dots { bottom: var(--cb-s-3); }
}
/* Let the homepage content sit flush under the header (no top padding gap) so the
 * carousel banner sits directly beneath the nav. Front-page only (body.cb-front). */
body.cb-front .site-content,
body.cb-front .ast-container,
body.cb-front .site-main { padding-top: 0 !important; margin-top: 0 !important; }

/* ============ Category / fitting cards (Shop by Category) ============ */
.cb-cat-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--cb-s-4);
}
.cb-cat-card {
	position: relative;
	display: block;
	aspect-ratio: 3 / 4;
	overflow: hidden;
	border-radius: var(--cb-radius);
	text-decoration: none;
	color: #fff;
	box-shadow: var(--cb-shadow-sm);
}
.cb-cat-card__img {
	position: absolute;
	inset: 0;
	background-color: var(--cb-warm-300);
	background-size: cover;
	background-position: center;
	transition: transform var(--cb-dur-slow) var(--cb-ease);
}
.cb-cat-card::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgba(20, 20, 23, 0.72), rgba(20, 20, 23, 0.05) 55%);
	transition: background var(--cb-dur) var(--cb-ease);
}
.cb-cat-card:hover .cb-cat-card__img { transform: scale(1.07); }
.cb-cat-card:hover::after { background: linear-gradient(to top, rgba(20, 20, 23, 0.82), rgba(20, 20, 23, 0.15) 60%); }
.cb-cat-card__label {
	position: absolute;
	inset-block-end: var(--cb-s-5);
	inset-inline-start: var(--cb-s-5);
	z-index: 1;
}
.cb-cat-card__name {
	display: block;
	font-size: var(--cb-fs-h4);
	font-weight: 700;
	letter-spacing: var(--cb-tracking-wide);
	text-transform: uppercase;
}
.cb-cat-card__shop {
	display: inline-flex;
	align-items: center;
	gap: var(--cb-s-2);
	font-size: var(--cb-fs-xs);
	font-weight: 600;
	letter-spacing: var(--cb-tracking-wide);
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.9);
	margin-block-start: var(--cb-s-2);
}

/* Legacy fitting grid (kept for the front-page Shop by Fitting partial). */
.cb-fitting-grid {
	display: grid;
	grid-template-columns: repeat(6, 1fr);
	gap: var(--cb-s-4);
}
.cb-fit-card {
	position: relative;
	display: block;
	aspect-ratio: 1 / 1;
	overflow: hidden;
	border-radius: var(--cb-radius);
	text-decoration: none;
	color: #fff;
	box-shadow: var(--cb-shadow-sm);
}
.cb-fit-card__img {
	position: absolute;
	inset: 0;
	background-size: cover;
	background-position: center;
	transition: transform var(--cb-dur-slow) var(--cb-ease);
}
.cb-fit-card::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgba(20, 20, 23, 0.6), rgba(20, 20, 23, 0) 50%);
	transition: background var(--cb-dur) var(--cb-ease);
}
.cb-fit-card:hover .cb-fit-card__img { transform: scale(1.06); }
.cb-fit-card:hover::after { background: linear-gradient(to top, rgba(20, 20, 23, 0.75), rgba(20, 20, 23, 0.1) 55%); }
.cb-fit-card__label {
	position: absolute;
	inset-block-end: var(--cb-s-4);
	inset-inline: 0;
	z-index: 1;
	text-align: center;
	font-size: var(--cb-fs-xs);
	font-weight: 700;
	letter-spacing: var(--cb-tracking-wider);
	text-transform: uppercase;
}

/* ============ Product cards (New Arrivals + shared with WC loop) ============ */
.cb-product-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--cb-s-5);
}
.cb-product-card {
	position: relative;
	display: flex;
	flex-direction: column;
	text-decoration: none;
	color: var(--cb-ink);
	background: #fff;
	border-radius: var(--cb-radius);
	overflow: hidden;
	box-shadow: var(--cb-shadow-xs);
	transition: box-shadow var(--cb-dur) var(--cb-ease), transform var(--cb-dur) var(--cb-ease);
}
.cb-product-card:hover { box-shadow: var(--cb-shadow-lg); transform: translateY(-4px); }
.cb-product-card__media {
	position: relative;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	background-color: var(--cb-warm-200);
}
.cb-product-card__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--cb-dur-slow) var(--cb-ease);
}
.cb-product-card:hover .cb-product-card__img { transform: scale(1.05); }
.cb-product-card__body {
	display: flex;
	flex-direction: column;
	gap: var(--cb-s-3);
	padding: var(--cb-s-4);
}
.cb-product-card__title {
	font-size: var(--cb-fs-sm);
	font-weight: 700;
	letter-spacing: var(--cb-tracking-wide);
	text-transform: uppercase;
	margin: 0;
	color: var(--cb-ink);
}
.cb-product-card__title:hover { color: var(--cb-accent); }
.cb-product-card__inquire {
	align-self: flex-start;
}
.cb-product-card a { text-decoration: none; }   /* card root is an <article>; inner anchors must not underline */

/* Centered "View All" exit CTA below homepage grids (categories / fittings / new arrivals). */
.cb-grid-foot { text-align: center; margin-top: var(--cb-s-7); }

/* ============ Layout wrappers (text columns / grid children) ============
 * Container classes referenced by the templates; they are grid/flex children
 * so layout comes from the parent, these rules add text-width + spacing only.
 */
.cb-split__content { max-width: 540px; }
.cb-split__content > :last-child { margin-bottom: 0; }
.cb-about__content { max-width: 520px; }
.cb-about__list { list-style: none; margin: 0 0 var(--cb-s-5); padding: 0; display: grid; gap: var(--cb-s-3); }
.cb-about__list li { position: relative; padding-inline-start: var(--cb-s-5); }
.cb-about__list li::before { content: ""; position: absolute; inset-inline-start: 0; top: .55em; width: .55em; height: .55em; background: var(--cb-accent); border-radius: 50%; }
.cb-inquiry-info { min-width: 0; }
.cb-inquiry-form-wrap { min-width: 0; }
.cb-inquiry-contact {
	margin-top: var(--cb-s-5);
	font-size: var(--cb-fs-sm);
	color: var(--cb-muted);
}
.cb-inquiry-contact a { color: var(--cb-ink); font-weight: 600; text-decoration: underline; }
.cb-footer__col { min-width: 0; }
.cb-lang-current { font: inherit; color: inherit; }

.cb-empty {
	grid-column: 1 / -1;
	text-align: center;
	color: var(--cb-muted);
	padding: var(--cb-s-7) 0;
}

/* ============ Stats strip ============ */
.cb-stats {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--cb-s-5);
}
.cb-stat { text-align: center; }
.cb-stat__num {
	display: block;
	font-family: var(--cb-font-display);
	font-size: clamp(2rem, 4vw, 3rem);
	font-weight: 800;
	line-height: 1;
	color: var(--cb-ink);
	margin-bottom: var(--cb-s-2);
}
.cb-stat__num--accent { color: var(--cb-accent); }
.cb-stat__label {
	font-size: var(--cb-fs-xs);
	font-weight: 600;
	letter-spacing: var(--cb-tracking-wider);
	text-transform: uppercase;
	color: var(--cb-muted);
}

/* ============ Company Introduction (about) ============ */
.cb-about__inner {
	display: grid;
	grid-template-columns: 1.05fr 1fr;
	gap: var(--cb-s-7);
	align-items: center;
}
.cb-about__media {
	background: var(--cb-bg-alt);
	border: 1px solid var(--cb-line);
	border-radius: var(--cb-radius-lg);
	overflow: hidden;
	box-shadow: var(--cb-shadow);
}
.cb-about__media iframe,
.cb-about__media .cb-about__video,
.cb-about__media .cb-about__poster,
.cb-about__media .cb-about__embed > iframe {
	width: 100%;
	aspect-ratio: 16 / 9;
	height: auto;
	display: block;
	border: 0;
}
.cb-about__media .cb-about__video,
.cb-about__media .cb-about__poster { object-fit: cover; }
.cb-about__title { text-align: start; margin-bottom: var(--cb-s-4); }
.cb-about__text { color: var(--cb-text); font-size: var(--cb-fs-body); line-height: var(--cb-lh-body); }
.cb-about__text p { margin: 0 0 var(--cb-s-4); }
.cb-about__text p:last-child { margin-bottom: var(--cb-s-5); }

/* ============ Testimonials ============ */
.cb-testi-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--cb-s-5);
}
.cb-testi {
	background: #fff;
	border: 1px solid var(--cb-line);
	border-radius: var(--cb-radius-lg);
	padding: var(--cb-s-6);
	box-shadow: var(--cb-shadow-sm);
}
.cb-testi__quote {
	font-size: var(--cb-fs-body);
	line-height: var(--cb-lh-body);
	color: var(--cb-text);
	margin: 0 0 var(--cb-s-5);
	position: relative;
}
.cb-testi__quote::before {
	content: "\201C";
	display: block;
	font-family: Georgia, serif;
	font-size: 3rem;
	line-height: 0.6;
	color: var(--cb-earth-200);
	margin-bottom: var(--cb-s-3);
}
.cb-testi__author { display: flex; align-items: center; gap: var(--cb-s-3); }
.cb-testi__avatar {
	width: 44px;
	height: 44px;
	border-radius: 50%;
	object-fit: cover;
	background: var(--cb-bg-alt);
}
.cb-testi__name { font-weight: 700; color: var(--cb-ink); font-size: var(--cb-fs-sm); }
.cb-testi__role { font-size: var(--cb-fs-xs); color: var(--cb-muted); }

/* ============ CTA band ============ */
.cb-cta {
	position: relative;
	background: var(--cb-ink);
	color: #fff;
	text-align: center;
	padding-block: var(--cb-s-9);
	overflow: hidden;
}
.cb-cta::before {
	content: "";
	position: absolute;
	inset: 0;
	background: radial-gradient(circle at 20% 30%, rgba(37, 99, 235, 0.28), transparent 50%),
	            radial-gradient(circle at 80% 70%, rgba(37, 99, 235, 0.18), transparent 45%);
	pointer-events: none;
}
.cb-cta__inner { position: relative; z-index: 1; max-width: 720px; margin-inline: auto; padding-inline: var(--cb-gutter); }
.cb-cta__title { font-size: var(--cb-fs-h1); color: #fff; margin-bottom: var(--cb-s-4); }
.cb-cta__sub { font-size: var(--cb-fs-lead); color: rgba(255, 255, 255, 0.85); margin-bottom: var(--cb-s-6); }
/* Stack the primary + secondary CTAs vertically, centered. */
.cb-cta__inner .cb-btn { display: block; width: fit-content; max-width: 100%; margin-inline: auto; }
.cb-cta__inner .cb-btn + .cb-btn { margin-top: var(--cb-s-4); }

/* ============ Inner-page banner (Shop / category / Who We Are / FAQ) ============ */
.cb-page-banner {
	background: var(--cb-bg-alt);
	border-block-end: 1px solid var(--cb-line);
	padding-block: var(--cb-s-7);
	text-align: center;
}
.cb-page-banner__title { font-size: var(--cb-fs-h1); margin: 0 0 var(--cb-s-2); }
.cb-page-banner__desc { color: var(--cb-muted); max-width: 640px; margin-inline: auto; }

/* ============ Footer ============ */
.cb-footer {
	background: var(--cb-ink-900);
	color: rgba(255, 255, 255, 0.75);
	padding-block: var(--cb-s-9) var(--cb-s-6);
}
.cb-footer__cols {
	display: grid;
	grid-template-columns: 1.4fr 1fr 1fr 1.2fr;
	gap: var(--cb-s-6);
	max-width: var(--cb-maxw);
	margin-inline: auto;
	padding-inline: var(--cb-gutter);
}
.cb-footer h4,
.cb-footer .cb-footer__title {
	color: #fff;
	font-size: var(--cb-fs-sm);
	font-weight: 700;
	letter-spacing: var(--cb-tracking-wider);
	text-transform: uppercase;
	margin: 0 0 var(--cb-s-4);
}
.cb-footer__brand-name {
	font-family: var(--cb-font-display);
	font-weight: 800;
	font-size: 1.4rem;
	letter-spacing: var(--cb-tracking-wide);
	text-transform: uppercase;
	color: #fff;
	display: block;
	margin-bottom: var(--cb-s-3);
}
.cb-footer p { font-size: var(--cb-fs-sm); line-height: var(--cb-lh-body); }
.cb-footer ul { list-style: none; margin: 0; padding: 0; }
.cb-footer ul li { margin-bottom: var(--cb-s-2); }
.cb-footer ul a {
	color: rgba(255, 255, 255, 0.7);
	font-size: var(--cb-fs-sm);
	text-decoration: none;
	transition: color var(--cb-dur) var(--cb-ease);
}
.cb-footer ul a:hover { color: var(--cb-accent); }
.cb-footer__contact li { display: flex; gap: var(--cb-s-2); align-items: baseline; }
.cb-footer__social { display: flex; gap: var(--cb-s-3); margin-top: var(--cb-s-4); }
.cb-footer__social a {
	display: inline-flex;
	width: 36px; height: 36px;
	align-items: center; justify-content: center;
	border: 1px solid rgba(255, 255, 255, 0.2);
	border-radius: 50%;
	color: rgba(255, 255, 255, 0.8);
	transition: all var(--cb-dur) var(--cb-ease);
}
.cb-footer__social a:hover { background: var(--cb-accent); border-color: var(--cb-accent); color: #fff; }

/* Astra's bottom copyright bar (stays beneath our columns). */
.site-footer .ast-footer-override,
.ast-footer-copyright {
	background: var(--cb-ink-900) !important;
	color: rgba(255, 255, 255, 0.6) !important;
	font-size: var(--cb-fs-xs);
}
.ast-footer-copyright a { color: var(--cb-earth-200) !important; }

/* ============ Back-to-top button ============ */
.cb-to-top {
	position: fixed;
	inset-block-end: var(--cb-s-5);
	inset-inline-end: var(--cb-s-5);
	z-index: var(--cb-z-overlay);
	width: 46px;
	height: 46px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--cb-ink);
	color: #fff;
	border: 0;
	border-radius: 50%;
	box-shadow: var(--cb-shadow);
	cursor: pointer;
	opacity: 0;
	visibility: hidden;
	transform: translateY(8px);
	transition: opacity var(--cb-dur) var(--cb-ease), transform var(--cb-dur) var(--cb-ease), visibility var(--cb-dur), background-color var(--cb-dur) var(--cb-ease);
}
.cb-to-top.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
.cb-to-top:hover { background: var(--cb-accent); color: #fff; }
.cb-to-top svg { width: 20px; height: 20px; }

/* ============ Touch-device hover neutralization ============
 * On touch screens a :hover state can "stick" after a tap, leaving cards
 * zoomed/lifted. Neutralize the transform-based hovers on hover:none devices;
 * colour hovers are harmless and left alone. */
@media (hover: none) {
	.cb-cat-card:hover .cb-cat-card__img,
	.cb-fit-card:hover .cb-fit-card__img,
	.cb-product-card:hover .cb-product-card__img,
	.cb-product-card:hover,
	.cb-feature:hover,
	.cb-btn:hover,
	.cb-to-top:hover { transform: none; }
}

/* ============ Inquiry form ([clothb2b_inquiry_form]) ============ */
.clothb2b-inquiry {
	max-width: 640px;
	margin: var(--cb-s-5) auto;
}
.clothb2b-inquiry__msg {
	padding: var(--cb-s-3) var(--cb-s-4);
	border-radius: var(--cb-radius);
	border: 1px solid var(--cb-line);
	font-size: var(--cb-fs-sm);
}
.clothb2b-inquiry__msg--ok { background: #e9f7ec; border-color: #bfe3c8; color: #1f6b34; }
.clothb2b-inquiry__msg--err { background: #fdeeee; border-color: #f0c4c4; color: #9b2c2c; }
.clothb2b-inquiry__product { font-size: var(--cb-fs-sm); color: var(--cb-muted); margin: 0 0 var(--cb-s-4); }
.clothb2b-inquiry__row { margin: 0 0 var(--cb-s-4); }
.clothb2b-inquiry__row label {
	display: block;
	font-size: var(--cb-fs-sm);
	font-weight: 700;
	margin-bottom: var(--cb-s-2);
	color: var(--cb-ink);
}
.clothb2b-inquiry__row .required { color: var(--cb-accent); }
.clothb2b-inquiry__row input[type="text"],
.clothb2b-inquiry__row input[type="email"],
.clothb2b-inquiry__row textarea { /* uses .cb-field look */
	width: 100%;
	padding: var(--cb-s-3) var(--cb-s-4);
	border: 1px solid var(--cb-line);
	border-radius: var(--cb-radius);
	font: inherit;
	font-size: var(--cb-fs-sm);
	color: var(--cb-text);
	background: #fff;
	transition: border-color var(--cb-dur) var(--cb-ease), box-shadow var(--cb-dur) var(--cb-ease);
}
.clothb2b-inquiry__row input:focus,
.clothb2b-inquiry__row textarea:focus {
	outline: none;
	border-color: var(--cb-accent);
	box-shadow: 0 0 0 3px var(--cb-earth-100);
}
.clothb2b-inquiry__actions { margin: var(--cb-s-2) 0 0; }

/* Inquiry page two-column layout (optional wrapper around the shortcode). */
.cb-inquiry-layout { display: grid; grid-template-columns: 1fr 1.1fr; gap: var(--cb-s-7); align-items: start; }
.cb-inquiry-info h2 { font-size: var(--cb-fs-h2); }
.cb-inquiry-info ul { list-style: none; margin: var(--cb-s-4) 0; padding: 0; }
.cb-inquiry-info ul li { display: flex; gap: var(--cb-s-3); margin-bottom: var(--cb-s-3); color: var(--cb-text); }
.cb-inquiry-info ul li::before {
	content: "";
	flex: 0 0 auto;
	width: 22px; height: 22px;
	margin-block-start: 2px;
	border-radius: 50%;
	background: var(--cb-earth-100) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232563EB' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E") center/14px no-repeat;
}

/* ============ FAQ accordion ============ */
.cb-faq { max-width: var(--cb-maxw-narrow); margin-inline: auto; }
.cb-faq__group { margin-bottom: var(--cb-s-5); }
.cb-faq__group-title {
	font-size: var(--cb-fs-h4);
	font-weight: 700;
	color: var(--cb-ink);
	margin: 0 0 var(--cb-s-3);
}
.cb-faq details {
	border: 1px solid var(--cb-line);
	border-radius: var(--cb-radius);
	background: #fff;
	margin-bottom: var(--cb-s-3);
	box-shadow: var(--cb-shadow-xs);
	overflow: hidden;
}
.cb-faq details[open] { box-shadow: var(--cb-shadow-sm); }
.cb-faq summary {
	list-style: none;
	cursor: pointer;
	padding: var(--cb-s-4) var(--cb-s-5);
	font-weight: 600;
	color: var(--cb-ink);
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: var(--cb-s-4);
}
.cb-faq summary::-webkit-details-marker { display: none; }
.cb-faq summary::after {
	content: "";
	flex: 0 0 auto;
	width: 14px; height: 14px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2361616A' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") center/contain no-repeat;
	transition: transform var(--cb-dur) var(--cb-ease);
}
.cb-faq details[open] summary::after { transform: rotate(180deg); }
.cb-faq__answer { padding: 0 var(--cb-s-5) var(--cb-s-5); color: var(--cb-text); line-height: var(--cb-lh-body); }

/* ============ Who We Are capabilities grid ============ */
.cb-features-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--cb-s-5); }
.cb-feature {
	background: #fff;
	border: 1px solid var(--cb-line);
	border-radius: var(--cb-radius-lg);
	padding: var(--cb-s-6);
	text-align: center;
	transition: box-shadow var(--cb-dur) var(--cb-ease), transform var(--cb-dur) var(--cb-ease);
}
.cb-feature:hover { box-shadow: var(--cb-shadow); transform: translateY(-3px); }
.cb-feature__icon {
	width: 56px; height: 56px;
	margin: 0 auto var(--cb-s-4);
	display: flex; align-items: center; justify-content: center;
	border-radius: 50%;
	background: var(--cb-earth-50);
	color: var(--cb-accent);
}
.cb-feature__title { font-size: var(--cb-fs-h4); margin-bottom: var(--cb-s-2); }
.cb-feature__desc { color: var(--cb-muted); font-size: var(--cb-fs-sm); margin: 0; }

/* Split image+text block (About / Who We Are story). */
.cb-split { display: grid; grid-template-columns: 1fr 1fr; gap: var(--cb-s-7); align-items: center; }
.cb-split--reverse .cb-split__media { order: 2; }
.cb-split__media img,
.cb-split__media .cb-split__media-img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-bg-alt);
	box-shadow: var(--cb-shadow);
}

/* Certifications / logo grid. */
.cb-logo-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--cb-s-5); }
.cb-logo-item {
	display: flex; align-items: center; justify-content: center;
	aspect-ratio: 2 / 1;
	background: #fff;
	border: 1px solid var(--cb-line);
	border-radius: var(--cb-radius);
	color: var(--cb-muted);
	font-weight: 700;
	letter-spacing: var(--cb-tracking-wide);
}

/* ============ Blog / News cards (Astra archive output) ============ */
.ast-article-post {
	background: #fff;
	border: 1px solid var(--cb-line);
	border-radius: var(--cb-radius);
	overflow: hidden;
	box-shadow: var(--cb-shadow-xs);
	transition: box-shadow var(--cb-dur) var(--cb-ease), transform var(--cb-dur) var(--cb-ease);
}
.ast-article-post:hover {
	box-shadow: var(--cb-shadow-lg);
	transform: translateY(-4px);
}
.ast-blog-featured-section .post-thumb img,
.ast-article-post .post-thumb img {
	width: 100%;
	aspect-ratio: 16 / 10;
	object-fit: cover;
	transition: transform var(--cb-dur-slow) var(--cb-ease);
}
.ast-article-post:hover .ast-blog-featured-section .post-thumb img { transform: scale(1.04); }
.ast-article-post .entry-title,
.ast-article-post .entry-title a {
	font-size: var(--cb-fs-h4);
	font-weight: 700;
	color: var(--cb-ink);
	text-decoration: none;
}
.ast-article-post .entry-title a:hover { color: var(--cb-accent); }
.ast-article-post .entry-meta,
.ast-article-post .cat-links,
.ast-article-post .tags-links {
	font-size: var(--cb-fs-xs);
	color: var(--cb-muted);
}
.ast-article-post .cat-links a { color: var(--cb-accent); font-weight: 600; }
.ast-article-post .entry-content,
.ast-article-post .entry-summary {
	color: var(--cb-text);
	font-size: var(--cb-fs-sm);
	line-height: var(--cb-lh-body);
}
.ast-article-post .read-more a {
	display: inline-flex;
	font-size: var(--cb-fs-xs);
	font-weight: 700;
	letter-spacing: var(--cb-tracking-wide);
	text-transform: uppercase;
	color: var(--cb-accent);
}

/* Single post. */
.ast-single-post .entry-header .entry-title { font-size: var(--cb-fs-h1); }
.ast-single-post .entry-meta { color: var(--cb-muted); font-size: var(--cb-fs-sm); margin-bottom: var(--cb-s-5); }

/* Blog pagination (Astra .ast-pagination). */
.ast-pagination .page-numbers,
.ast-pagination a,
.ast-pagination span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 42px;
	height: 42px;
	margin: 0 2px;
	border: 1px solid var(--cb-line);
	border-radius: var(--cb-radius);
	color: var(--cb-ink) !important;
	text-decoration: none;
	font-weight: 600;
	transition: all var(--cb-dur) var(--cb-ease);
}
.ast-pagination .page-numbers.current,
.ast-pagination .page-numbers:hover {
	background: var(--cb-ink);
	color: #fff !important;
	border-color: var(--cb-ink);
}

/* ============ Responsive ============ */

/* ============ 手机端主菜单：单行内联常驻 (one-row inline, always-visible) ============
 * 基于 Astra 4.13.6 builder DOM（curl 抓取首页 header 确认）：
 *   #masthead
 *   ├ #ast-desktop-header … ul#ast-hf-menu-1       桌面菜单（移动端保持隐藏）
 *   ├ #ast-mobile-header                             ← flex row
 *   │   ├ .ast-main-header-wrap                      ← flex:0 0 auto 标题不收缩
 *   │   │   └ .ast-primary-header-bar (display:grid; padding)
 *   │   │       └ .ast-builder-grid-row (display:grid; grid-template-columns:auto auto)
 *   │   │           ├ .site-header-primary-section-left  → site-title
 *   │   │           └ .site-header-primary-section-right → 汉堡按钮（隐藏）
 *   │   └ .ast-mobile-header-content                 ← flex:1 1 auto 占满剩余宽度
 *   │       └ ul#ast-hf-mobile-menu                  ← nowrap + overflow-x:auto 横向滚动兜底
 *   └ .cb-header-actions                             语言开关+CTA（absolute 右上，独立于上述容器）
 *
 * 与旧版「两行平铺常驻」差异：标题与菜单项并排放在同一行（标题左、菜单 inline 紧随）；
 * 菜单由 flex-wrap:wrap + 居中改为 nowrap + 左对齐 + 横向滚动兜底，放不下时滚动而非换行；
 * 删除旧版 border-top / padding-block / row-gap（两行观感来源）；ul 右侧预留 var(--cb-s-8)
 * 避让右上角语言开关。
 *
 * 关键覆盖点（否则会被 Astra 默认规则打断布局）：
 *  1) #ast-mobile-header 默认 display:block → 改 display:flex 才能让标题与菜单并排。
 *  2) mobile-header-type=dropdown 时 Astra 给 .ast-mobile-header-content 注入
 *     `position:absolute; width:100%`（off-canvas/dynamic-css/dynamic.css.php）——
 *     必须 position:static 才能回到 #ast-mobile-header 的 flex 流。
 *  3) 空的 .site-header-primary-section-right 仍占 20px grid 列间距 → 直接 display:none。
 *  4) flex 子项默认 min-width:auto 会顶破容器 → .ast-mobile-header-content min-width:0
 *     才能让内部 ul 的 overflow-x:auto 真正生效。
 *  5) dropdown 静态 CSS 给 .ast-mobile-header-content > * 加了 padding:10px 0 ——
 *     会把菜单行撑高超过标题；统一清零。
 *
 * 作用域 body.ast-header-break-point 是 Astra 按 UA 在移动端给 body 加的类
 * （桌面 UA 是 body.ast-desktop，整段不生效，桌面端零影响）。
 * ⚠ 本地无法验证；部署后请真机第一时间核实，异常则注释本段即恢复原生汉堡。 */

/* ① #ast-mobile-header 变横向 flex：标题 + 菜单 = 单行 */
body.ast-header-break-point #ast-mobile-header {
	display: flex !important;
	align-items: center;
	gap: 0;
}
/* ② 标题容器：不收缩，按 logo/title 自然宽度占位 */
body.ast-header-break-point #ast-mobile-header .ast-main-header-wrap {
	flex: 0 0 auto;
}
/* ③ 隐藏汉堡按钮 + 撤掉空的右栏，回收 20px grid 列间距 */
body.ast-header-break-point .ast-button-wrap { display: none !important; }
body.ast-header-break-point #ast-mobile-header .site-header-primary-section-right { display: none !important; }
/* ④ 右栏撤掉后清零两层右内边距，把空间还给右侧菜单 */
body.ast-header-break-point #ast-mobile-header .ast-primary-header-bar,
body.ast-header-break-point #ast-mobile-header .ast-primary-header-bar .ast-container {
	padding-right: 0;
}
/* ⑤ 菜单容器：占满标题右侧剩余空间；
 *   position:static / width:auto 抵消 Astra dropdown 类型的 absolute+100%（否则脱离 flex 流）；
 *   min-width:0 允许其在空间不够时收缩，触发内部 ul 的 overflow-x:auto。 */
body.ast-header-break-point .ast-mobile-header-content {
	display: block !important;
	position: static !important;
	width: auto !important;
	flex: 1 1 auto;
	min-width: 0;
}
/* ⑥ 抵消 Astra dropdown 静态 CSS 给 .ast-mobile-header-content > * 的 padding:10px 0，防菜单行被撑高 */
body.ast-header-break-point .ast-mobile-header-content > * {
	padding-top: 0;
	padding-bottom: 0;
}
/* ⑦ 菜单 <ul>：横向 nowrap + 左对齐；overflow-x:auto 兜底（项过多时横向滚动而非换行）；
 *   padding-inline-end:var(--cb-s-8) 为右上角语言开关预留安全区；
 *   background:transparent 盖掉 .main-header-menu 默认的 #f9f9f9 灰底。 */
body.ast-header-break-point #ast-hf-mobile-menu {
	display: flex !important;
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	justify-content: flex-start;
	column-gap: var(--cb-s-2);
	padding-block: 0;
	padding-inline: 0 var(--cb-s-8);
	border-top: 0;
	background: transparent;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;      /* Firefox — 隐藏滚动条保持可滑 */
	-ms-overflow-style: none;   /* IE/旧 Edge */
}
/* Chrome/Safari/Edge：隐藏 ul 横向滚动条（触摸/滚轮仍可滑），避免底栏外露 */
body.ast-header-break-point #ast-hf-mobile-menu::-webkit-scrollbar { display: none; }
body.ast-header-break-point #ast-hf-mobile-menu > li {
	flex: 0 0 auto;
	width: auto !important;
}
body.ast-header-break-point #ast-hf-mobile-menu > li > a {
	padding-inline: var(--cb-s-2) !important;
	font-size: var(--cb-fs-sm);
	line-height: 2;
	white-space: nowrap;
}
/* ⑧ 语言开关：保持 absolute 右上（不进 flex 流），z-index 高于菜单行；
 *   toggle 加实底，菜单横向滚动到最右时项目被它遮住，避免文字重叠透出。 */
body.ast-header-break-point .cb-header-actions {
	inset-block-start: var(--cb-s-2);
	inset-block-end: auto;
	inset-inline-end: var(--cb-s-3);
	transform: none;
	gap: var(--cb-s-2);
	z-index: var(--cb-z-dropdown);
}
body.ast-header-break-point .cb-header-cta { display: none; }
body.ast-header-break-point .cb-lang-toggle {
	padding: var(--cb-s-1) var(--cb-s-2);
	font-size: var(--cb-fs-xs);
	background: var(--cb-bg);
}
body.ast-header-break-point .cb-lang-list { min-width: 128px; }

@media (max-width: 1024px) {
	.cb-cat-grid { grid-template-columns: repeat(3, 1fr); }
	.cb-product-grid { grid-template-columns: repeat(3, 1fr); }
	.cb-fitting-grid { grid-template-columns: repeat(3, 1fr); }
	.cb-stats { grid-template-columns: repeat(2, 1fr); }
	.cb-testi-grid { grid-template-columns: repeat(2, 1fr); }
	.cb-features-grid { grid-template-columns: repeat(2, 1fr); }
	.cb-logo-grid { grid-template-columns: repeat(3, 1fr); }
	.cb-footer__cols { grid-template-columns: 1fr 1fr; gap: var(--cb-s-7) var(--cb-s-5); }
}
@media (max-width: 768px) {
	.cb-hero { min-height: 72vh; }
	.cb-cat-grid { grid-template-columns: repeat(2, 1fr); }
	.cb-product-grid { grid-template-columns: repeat(2, 1fr); }
	.cb-fitting-grid { grid-template-columns: repeat(2, 1fr); }
	.cb-about__inner,
	.cb-split,
	.cb-inquiry-layout { grid-template-columns: 1fr; gap: var(--cb-s-5); }
	.cb-split--reverse .cb-split__media { order: 0; }
	.cb-about__title { text-align: center; }
	.cb-features-grid { grid-template-columns: 1fr; }
	/* Fitting card labels are uppercase + tracked; at 2-up on a phone they clip. */
	.cb-fit-card__label { letter-spacing: var(--cb-tracking-wide); }
	/* 移动端 header（菜单平铺/语言开关）规则统一在上方 body.ast-header-break-point 段。 */
}
@media (max-width: 480px) {
	.cb-cat-grid,
	.cb-fitting-grid,
	.cb-product-grid { grid-template-columns: repeat(2, 1fr); gap: var(--cb-s-3); }
	.cb-stats { grid-template-columns: 1fr; }
	.cb-testi-grid { grid-template-columns: 1fr; }
	.cb-logo-grid { grid-template-columns: repeat(2, 1fr); }
	.cb-footer__cols { grid-template-columns: 1fr; }
	.cb-hero { min-height: 68vh; }
	/* Testimonial decorative quote glyph (3rem) dominates a single-column card. */
	.cb-testi__quote::before { font-size: 2rem; }
	.cb-lang-list { min-width: 104px; }
}

/* Narrowest phones — prevent horizontal overflow. */
@media (max-width: 360px) {
	.cb-hero { min-height: 64vh; }
	.cb-lang-list { min-width: 96px; }
}

/* Honor prefers-reduced-motion: instant slide transitions, no Ken Burns, no
 * staggered text entrance, no progress-bar animation. Autoplay still runs
 * (marketing requirement) but the content swaps without motion. */
@media (prefers-reduced-motion: reduce) {
	.cb-carousel__slide,
	.cb-carousel__slide.is-active,
	.cb-carousel__slide.is-active .cb-carousel__eyebrow,
	.cb-carousel__slide.is-active .cb-carousel__title,
	.cb-carousel__slide.is-active .cb-carousel__sub,
	.cb-carousel__slide.is-active .cb-carousel__actions,
	.cb-carousel__progress-fill { animation: none !important; transition: none !important; }
}

/* Yinbo hero image focal position — 2026-09-14 */
.cb-carousel__slide {
  background-position: center top !important;
}

@media (max-width: 768px) {
  .cb-carousel__slide {
    background-position: 68% top !important;
  }
}

/* Homepage customization technique cards */
.cb-technique-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--cb-s-5);
	margin-top: var(--cb-s-7);
}
.cb-technique-card {
	margin: 0;
	background: #fff;
	border: 1px solid var(--cb-line);
	border-radius: var(--cb-radius);
	overflow: hidden;
	box-shadow: var(--cb-shadow-xs);
	transition: transform var(--cb-dur) var(--cb-ease), box-shadow var(--cb-dur) var(--cb-ease);
}
.cb-technique-card:hover {
	transform: translateY(-3px);
	box-shadow: var(--cb-shadow);
}
.cb-technique-card__media {
	aspect-ratio: 1 / 1;
	overflow: hidden;
	background: var(--cb-bg-alt);
}
.cb-technique-card__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--cb-dur-slow) var(--cb-ease);
}
.cb-technique-card:hover .cb-technique-card__media img {
	transform: scale(1.025);
}
.cb-technique-card__title {
	margin: 0;
	padding: var(--cb-s-4);
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.25;
	letter-spacing: var(--cb-tracking-wide);
	text-transform: uppercase;
}
@media (max-width: 768px) {
	.cb-technique-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: var(--cb-s-3);
		margin-top: var(--cb-s-5);
	}
	.cb-technique-card__title {
		padding: var(--cb-s-3);
		font-size: 0.875rem;
	}
}

/* Yinbo editorial category grid — asymmetrical brand-led product navigation */
.cb-category-editorial .cb-section-head {
	max-width: 900px;
	margin-bottom: var(--cb-s-7);
}
.cb-category-editorial .cb-section-head__title {
	max-width: 760px;
	text-transform: uppercase;
}
.cb-category-editorial .cb-cat-grid {
	grid-template-columns: repeat(12, minmax(0, 1fr));
	gap: clamp(16px, 2vw, 28px);
	align-items: start;
}
.cb-category-editorial .cb-cat-card {
	grid-column: span 5;
	aspect-ratio: 5 / 4;
	box-shadow: none;
	background: var(--cb-bg-warm);
}
.cb-category-editorial .cb-cat-card:nth-child(4n + 1),
.cb-category-editorial .cb-cat-card:nth-child(4n) {
	grid-column: span 7;
}
.cb-category-editorial .cb-cat-card__img {
	background-position: center 28%;
}
.cb-category-editorial .cb-cat-card::after {
	background: linear-gradient(to top, rgba(17,17,17,.76), rgba(17,17,17,0) 58%);
}
.cb-category-editorial .cb-cat-card__label {
	inset-inline: var(--cb-s-5);
	inset-block-end: var(--cb-s-5);
}
.cb-category-editorial .cb-cat-card__name {
	font-family: var(--cb-font-display);
	font-size: clamp(1.35rem, 2vw, 2rem);
	font-weight: 600;
	letter-spacing: -0.01em;
}
.cb-category-editorial .cb-cat-card__shop {
	letter-spacing: var(--cb-tracking-wider);
}
@media (max-width: 900px) {
	.cb-category-editorial .cb-cat-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	.cb-category-editorial .cb-cat-card,
	.cb-category-editorial .cb-cat-card:nth-child(4n + 1),
	.cb-category-editorial .cb-cat-card:nth-child(4n) {
		grid-column: span 1;
		aspect-ratio: 4 / 5;
	}
}
@media (max-width: 560px) {
	.cb-category-editorial .cb-cat-grid {
		grid-template-columns: 1fr;
		gap: var(--cb-s-4);
	}
	.cb-category-editorial .cb-cat-card,
	.cb-category-editorial .cb-cat-card:nth-child(4n + 1),
	.cb-category-editorial .cb-cat-card:nth-child(4n) {
		aspect-ratio: 4 / 3;
	}
	.cb-category-editorial .cb-cat-card__label {
		inset-inline: var(--cb-s-4);
		inset-block-end: var(--cb-s-4);
	}
}

/* Yinbo homepage buyer FAQ */
.cb-home-faq {
  background: #f3f1ec;
  border-top: 1px solid #d7d3ca;
}

.cb-home-faq__layout {
  display: grid;
  grid-template-columns: minmax(260px, .78fr) minmax(0, 1.35fr);
  gap: clamp(3rem, 8vw, 8rem);
  align-items: start;
}

.cb-home-faq__intro {
  position: sticky;
  top: 7rem;
}

.cb-home-faq__intro .cb-section-head__title {
  margin: .85rem 0 1.25rem;
  max-width: 8.5em;
  font-family: "Inter Tight", Inter, sans-serif;
  font-size: clamp(2.6rem, 5vw, 4.75rem);
  font-weight: 650;
  line-height: .98;
  letter-spacing: -.035em;
}

.cb-home-faq__intro p {
  max-width: 29rem;
  margin: 0 0 2rem;
  color: #666;
  line-height: 1.65;
}

.cb-home-faq__all {
  display: inline-flex;
  gap: .65rem;
  align-items: center;
  color: #111;
  font-size: .76rem;
  font-weight: 650;
  letter-spacing: .08em;
  text-decoration: none;
  text-transform: uppercase;
}

.cb-home-faq .cb-faq-list {
  border-top: 1px solid #aaa69f;
}

.cb-home-faq .cb-faq-list details {
  border: 0;
  border-bottom: 1px solid #c9c5bd;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.cb-home-faq .cb-faq-list summary {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: 1.45rem 3rem 1.45rem 0;
  color: #111;
  cursor: pointer;
  font-family: "Inter Tight", Inter, sans-serif;
  font-size: clamp(1.08rem, 1.6vw, 1.35rem);
  font-weight: 600;
  line-height: 1.25;
  list-style: none;
}

.cb-home-faq .cb-faq-list summary::-webkit-details-marker { display: none; }
.cb-home-faq .cb-faq-list summary::after {
  content: "+";
  position: absolute;
  right: .15rem;
  color: #777;
  font-family: Inter, sans-serif;
  font-size: 1.4rem;
  font-weight: 400;
}

.cb-home-faq .cb-faq-list details[open] summary::after { content: "−"; }

.cb-home-faq .cb-faq-list p {
  max-width: 46rem;
  margin: -.15rem 0 1.55rem;
  padding: 0 3rem 0 0;
  color: #666;
  line-height: 1.65;
}

/* Yinbo homepage project CTA */
.cb-project-cta {
  padding-block: clamp(4rem, 8vw, 7.5rem);
  background: #151515;
  color: #f3f1ec;
}

.cb-project-cta__layout {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(280px, .75fr);
  gap: clamp(3rem, 9vw, 9rem);
  align-items: end;
}

.cb-project-cta .cb-eyebrow { color: #aaa69f; }
.cb-project-cta__copy h2 {
  max-width: 12em;
  margin: 1rem 0 1.4rem;
  color: #f3f1ec;
  font-family: "Inter Tight", Inter, sans-serif;
  font-size: clamp(3rem, 6vw, 6.25rem);
  font-weight: 650;
  line-height: .92;
  letter-spacing: -.045em;
}

.cb-project-cta__copy > p {
  max-width: 43rem;
  margin: 0 0 2.2rem;
  color: #b9b6af;
  line-height: 1.65;
}

.cb-project-cta__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1.4rem 2rem;
}

.cb-project-cta__button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 52px;
  padding: .95rem 1.55rem;
  background: #f3f1ec;
  color: #111;
  font-size: .76rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-decoration: none;
  text-transform: uppercase;
}

.cb-project-cta__email {
  color: #f3f1ec;
  font-size: .82rem;
  font-weight: 600;
  letter-spacing: .04em;
  text-decoration: none;
}

.cb-project-cta__brief {
  border-top: 1px solid #666;
  padding-top: 1.25rem;
}

.cb-project-cta__brief > span {
  display: block;
  margin-bottom: 1rem;
  color: #8a8a85;
  font-size: .7rem;
  font-weight: 650;
  letter-spacing: .12em;
}

.cb-project-cta__brief ul { margin: 0; padding: 0; list-style: none; }
.cb-project-cta__brief li {
  padding: .95rem 0;
  border-bottom: 1px solid #3c3c3c;
  color: #d5d2cb;
  font-size: .92rem;
  font-weight: 500;
}

@media (max-width: 900px) {
  .cb-home-faq__layout,
  .cb-project-cta__layout { grid-template-columns: 1fr; }
  .cb-home-faq__intro { position: static; }
  .cb-home-faq__intro .cb-section-head__title { max-width: 11em; }
}

@media (max-width: 560px) {
  .cb-home-faq .cb-faq-list summary { padding-block: 1.25rem; }
  .cb-home-faq .cb-faq-list p { padding-right: 1rem; }
  .cb-project-cta__copy h2 { font-size: clamp(2.65rem, 13vw, 4rem); }
  .cb-project-cta__actions { align-items: flex-start; flex-direction: column; }
}

/* Yinbo project inquiry page */
.yinbo-inquiry-page { background: #f3f1ec; }
.yinbo-inquiry-hero {
  padding: clamp(5rem, 10vw, 9rem) 0 clamp(3rem, 6vw, 5rem);
  border-bottom: 1px solid #d7d3ca;
}
.yinbo-inquiry-hero h1 {
  max-width: 11em;
  margin: 1rem 0 1.4rem;
  color: #111;
  font-family: "Inter Tight", Inter, sans-serif;
  font-size: clamp(3.4rem, 7.5vw, 7.5rem);
  font-weight: 650;
  line-height: .9;
  letter-spacing: -.05em;
}
.yinbo-inquiry-hero p {
  max-width: 49rem;
  margin: 0;
  color: #666;
  font-size: clamp(1rem, 1.5vw, 1.18rem);
  line-height: 1.65;
}
.yinbo-inquiry-content { padding-block: clamp(4rem, 8vw, 7rem); }
.yinbo-inquiry-layout {
  display: grid;
  grid-template-columns: minmax(270px, .72fr) minmax(0, 1.28fr);
  gap: clamp(3rem, 8vw, 8rem);
  align-items: start;
}
.yinbo-inquiry-sidebar { position: sticky; top: 7rem; }
.yinbo-inquiry-sidebar h2 {
  margin: 1rem 0 1.3rem;
  font-family: "Inter Tight", Inter, sans-serif;
  font-size: clamp(2rem, 4vw, 3.6rem);
  font-weight: 650;
  line-height: 1;
  letter-spacing: -.035em;
}
.yinbo-inquiry-sidebar > p { color: #666; line-height: 1.65; }
.yinbo-inquiry-facts { margin: 2.2rem 0; border-top: 1px solid #aaa69f; }
.yinbo-inquiry-facts > div {
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 1rem;
  align-items: center;
  padding: 1.1rem 0;
  border-bottom: 1px solid #d0ccc4;
}
.yinbo-inquiry-facts strong {
  color: #111;
  font-family: "Inter Tight", Inter, sans-serif;
  font-size: 1.55rem;
  line-height: 1;
}
.yinbo-inquiry-facts span { color: #666; font-size: .88rem; line-height: 1.4; }
.yinbo-inquiry-email a { color: #111; font-weight: 650; }
.yinbo-project-form-wrap { padding: clamp(1.5rem, 4vw, 3rem); background: #fff; border: 1px solid #d7d3ca; }
.yinbo-project-form-head {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 2rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid #d7d3ca;
}
.yinbo-project-form-head span { font-size: .72rem; font-weight: 700; letter-spacing: .12em; }
.yinbo-project-form-head p { margin: 0; color: #777; font-size: .78rem; }
.yinbo-project-form label { display: block; margin-bottom: 1.2rem; }
.yinbo-project-form label > span { display: block; margin-bottom: .55rem; color: #111; font-size: .76rem; font-weight: 650; letter-spacing: .035em; }
.yinbo-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1.2rem; }
.yinbo-project-form input[type="text"],
.yinbo-project-form input[type="email"],
.yinbo-project-form select,
.yinbo-project-form textarea {
  width: 100%;
  border: 1px solid #c9c5bd;
  border-radius: 0;
  background: #faf9f6;
  color: #111;
  font: inherit;
  line-height: 1.5;
  padding: .9rem 1rem;
}
.yinbo-project-form textarea { resize: vertical; }
.yinbo-project-form input:focus,
.yinbo-project-form select:focus,
.yinbo-project-form textarea:focus { outline: 1px solid #111; outline-offset: 0; border-color: #111; }
.yinbo-file-field { padding: 1.1rem; border: 1px dashed #aaa69f; background: #f3f1ec; }
.yinbo-file-field input { width: 100%; color: #555; font-size: .85rem; }
.yinbo-file-field small { display: block; margin-top: .65rem; color: #777; font-size: .74rem; }
.yinbo-form-privacy { margin: 1rem 0 1.5rem; color: #777; font-size: .76rem; line-height: 1.5; }
.yinbo-project-form button {
  min-height: 52px;
  border: 1px solid #111;
  border-radius: 0;
  background: #111;
  color: #fff;
  cursor: pointer;
  font-family: Inter, sans-serif;
  font-size: .76rem;
  font-weight: 700;
  letter-spacing: .08em;
  padding: .95rem 1.55rem;
  text-transform: uppercase;
}
.yinbo-form-message { margin-bottom: 1.5rem; padding: 1rem; border: 1px solid; font-size: .88rem; line-height: 1.5; }
.yinbo-form-message--success { border-color: #8aa28d; background: #eef4ee; color: #294d2f; }
.yinbo-form-message--error { border-color: #bd8e88; background: #f8eeee; color: #7b2d24; }
.yinbo-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
@media (max-width: 900px) {
  .yinbo-inquiry-layout { grid-template-columns: 1fr; }
  .yinbo-inquiry-sidebar { position: static; }
}
@media (max-width: 560px) {
  .yinbo-inquiry-hero h1 { font-size: clamp(3rem, 16vw, 4.6rem); }
  .yinbo-form-grid { grid-template-columns: 1fr; }
  .yinbo-project-form-head { align-items: flex-start; flex-direction: column; }
  .yinbo-project-form-wrap { padding: 1.25rem; }
}

/* Yinbo three-gate quality control system */
.cb-quality-system .cb-section-head {
  max-width: 780px;
  margin-bottom: clamp(2rem, 4vw, 3.5rem);
}

.cb-quality-gates {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border: 1px solid var(--cb-line, #d7d3ca);
  background: #f3f1ec;
}

.cb-quality-gate {
  min-height: 360px;
  padding: clamp(2rem, 3.5vw, 3rem);
  border-right: 1px solid var(--cb-line, #d7d3ca);
}

.cb-quality-gate:last-child {
  border-right: 0;
}

.cb-quality-gate__index {
  display: block;
  margin-bottom: 2.25rem;
  font-family: Inter, sans-serif;
  font-size: .7rem;
  font-weight: 600;
  letter-spacing: .11em;
  color: #777;
}

.cb-quality-gate h3 {
  margin: 0 0 1.75rem;
  font-family: "Inter Tight", Inter, sans-serif;
  font-size: clamp(1.6rem, 2.4vw, 2.25rem);
  font-weight: 650;
  line-height: 1.05;
  letter-spacing: -.02em;
}

.cb-quality-gate ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.cb-quality-gate li {
  padding: .85rem 0;
  border-top: 1px solid rgba(17, 17, 17, .16);
  font-size: .9rem;
  line-height: 1.5;
}

.cb-quality-gate li:last-child {
  border-bottom: 1px solid rgba(17, 17, 17, .16);
}

.cb-quality-gate--final {
  background: #171717;
  color: #f3f1ec;
}

.cb-quality-gate--final .cb-quality-gate__index {
  color: #aaa69f;
}

.cb-quality-gate--final li {
  border-color: rgba(243, 241, 236, .18);
}

.cb-quality-reference {
  display: grid;
  grid-template-columns: 190px 1fr;
  gap: 1.5rem;
  align-items: center;
  padding: 1.15rem 1.4rem;
  border: 1px solid var(--cb-line, #d7d3ca);
  border-top: 0;
  background: #d7d3ca;
}

.cb-quality-reference span {
  font-size: .68rem;
  font-weight: 650;
  letter-spacing: .1em;
}

.cb-quality-reference p {
  margin: 0;
  color: #4f4f4b;
  font-size: .84rem;
  line-height: 1.5;
}

@media (max-width: 900px) {
  .cb-quality-gates {
    grid-template-columns: 1fr;
  }

  .cb-quality-gate {
    min-height: 0;
    border-right: 0;
    border-bottom: 1px solid var(--cb-line, #d7d3ca);
  }

  .cb-quality-gate--final {
    border-bottom: 0;
  }

  .cb-quality-reference {
    grid-template-columns: 1fr;
    gap: .5rem;
  }
}

/* Yinbo technical customization system — manufacturing-led presentation */
#customization-techniques {
	background: var(--cb-bg-warm);
}
#customization-techniques .cb-section-head {
	max-width: 900px;
	margin-bottom: var(--cb-s-7);
}
#customization-techniques .cb-section-head__title {
	max-width: 820px;
	text-transform: uppercase;
}
#customization-techniques .cb-technique-grid {
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 1px;
	margin-top: 0;
	background: var(--cb-line);
	border: 1px solid var(--cb-line);
}
#customization-techniques .cb-technique-card {
	display: flex;
	flex-direction: column;
	margin: 0;
	background: var(--cb-bg);
	border: 0;
	border-radius: 0;
	box-shadow: none;
	overflow: hidden;
	transition: background-color var(--cb-dur) var(--cb-ease);
}
#customization-techniques .cb-technique-card:hover {
	transform: none;
	box-shadow: none;
	background: #fff;
}
#customization-techniques .cb-technique-card__media {
	aspect-ratio: 4 / 3;
	background: #D7D3CA;
}
#customization-techniques .cb-technique-card:hover .cb-technique-card__media img {
	transform: scale(1.02);
}
.cb-technique-card__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: var(--cb-s-5);
	border-top: 1px solid var(--cb-line);
}
.cb-technique-card__index {
	display: block;
	margin-bottom: var(--cb-s-5);
	font-size: 0.7rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	color: var(--cb-muted);
}
#customization-techniques .cb-technique-card__title {
	margin: 0 0 var(--cb-s-3);
	padding: 0;
	font-family: var(--cb-font-display);
	font-size: 1.2rem;
	font-weight: 600;
	line-height: 1.1;
	letter-spacing: -0.01em;
	text-transform: none;
}
.cb-technique-card__desc {
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.55;
	color: var(--cb-text);
}
@media (max-width: 960px) {
	#customization-techniques .cb-technique-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 560px) {
	#customization-techniques .cb-technique-grid {
		grid-template-columns: 1fr;
	}
	#customization-techniques .cb-technique-card {
		display: grid;
		grid-template-columns: 42% 58%;
	}
	#customization-techniques .cb-technique-card__media {
		aspect-ratio: auto;
		min-height: 190px;
	}
	.cb-technique-card__body {
		padding: var(--cb-s-4);
		border-top: 0;
		border-left: 1px solid var(--cb-line);
	}
	.cb-technique-card__index {
		margin-bottom: var(--cb-s-4);
	}
}

/* Yinbo OEM process — specification-led editorial sequence */
.cb-process-section .cb-section-head {
	max-width: 920px;
	margin-bottom: var(--cb-s-7);
}
.cb-process-section .cb-section-head__title {
	max-width: 820px;
	text-transform: uppercase;
}
.cb-process {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin: 0;
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--cb-ink);
	border-left: 1px solid var(--cb-line);
}
.cb-process__step {
	position: relative;
	min-height: 300px;
	padding: var(--cb-s-5);
	background: var(--cb-bg-alt);
	border-right: 1px solid var(--cb-line);
	border-bottom: 1px solid var(--cb-line);
}
.cb-process__number {
	display: block;
	margin-bottom: var(--cb-s-8);
	font-family: var(--cb-font-display);
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	color: var(--cb-muted);
}
.cb-process__content h3 {
	margin: 0 0 var(--cb-s-3);
	font-family: var(--cb-font-display);
	font-size: clamp(1.35rem, 2vw, 1.75rem);
	font-weight: 600;
	line-height: 1.05;
	letter-spacing: -0.015em;
}
.cb-process__content p {
	margin: 0;
	max-width: 34ch;
	font-size: 0.925rem;
	line-height: 1.6;
	color: var(--cb-text);
}
.cb-process__step::after {
	content: "→";
	position: absolute;
	inset-block-start: var(--cb-s-5);
	inset-inline-end: var(--cb-s-5);
	font-size: 1rem;
	color: var(--cb-muted);
}
.cb-process__step:nth-child(3n)::after,
.cb-process__step:last-child::after {
	content: "";
}
.cb-process__cta {
	justify-content: flex-start;
}
@media (max-width: 900px) {
	.cb-process {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	.cb-process__step:nth-child(3n)::after {
		content: "→";
	}
	.cb-process__step:nth-child(2n)::after,
	.cb-process__step:last-child::after {
		content: "";
	}
}
@media (max-width: 560px) {
	.cb-process {
		grid-template-columns: 1fr;
	}
	.cb-process__step {
		display: grid;
		grid-template-columns: 52px 1fr;
		gap: var(--cb-s-3);
		min-height: 0;
		padding: var(--cb-s-5) var(--cb-s-4);
	}
	.cb-process__number {
		margin: 0;
	}
	.cb-process__step::after,
	.cb-process__step:nth-child(3n)::after {
		content: "";
	}
}

/* Yinbo manufacturing capability — evidence-led trust system */
.cb-capability-section {
	background: var(--cb-bg);
}
.cb-capability-head {
	display: grid;
	grid-template-columns: minmax(0, 1.4fr) minmax(280px, .6fr);
	gap: var(--cb-s-7);
	align-items: end;
	max-width: none;
	margin-bottom: var(--cb-s-7);
}
.cb-capability-head .cb-section-head__title {
	max-width: 780px;
	text-transform: uppercase;
}
.cb-capability-head .cb-section-head__intro {
	margin: 0 0 var(--cb-s-2);
	max-width: 520px;
}
.cb-capability-metrics {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	background: var(--cb-ink);
	color: #fff;
}
.cb-capability-metric {
	min-height: 240px;
	padding: var(--cb-s-5);
	border-right: 1px solid rgba(255,255,255,.18);
}
.cb-capability-metric:last-child {
	border-right: 0;
}
.cb-capability-metric strong {
	display: block;
	margin-bottom: var(--cb-s-7);
	font-family: var(--cb-font-display);
	font-size: clamp(2.75rem, 5vw, 4.6rem);
	font-weight: 600;
	line-height: .95;
	letter-spacing: -0.035em;
	color: #fff;
}
.cb-capability-metric strong span {
	margin-left: .1em;
	font-size: .42em;
	letter-spacing: 0;
}
.cb-capability-metric > span {
	display: block;
	max-width: 22ch;
	font-size: .75rem;
	font-weight: 600;
	line-height: 1.45;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: rgba(255,255,255,.7);
}
.cb-capability-list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	border-left: 1px solid var(--cb-line);
}
.cb-capability-list article {
	display: grid;
	grid-template-columns: 48px minmax(160px, .7fr) minmax(220px, 1fr);
	gap: var(--cb-s-4);
	align-items: start;
	padding: var(--cb-s-6) var(--cb-s-5);
	border-right: 1px solid var(--cb-line);
	border-bottom: 1px solid var(--cb-line);
}
.cb-capability-list article > span {
	font-size: .7rem;
	font-weight: 600;
	letter-spacing: .12em;
	color: var(--cb-muted);
}
.cb-capability-list h3 {
	margin: 0;
	font-size: 1.15rem;
	font-weight: 600;
	letter-spacing: -.01em;
}
.cb-capability-list p {
	margin: 0;
	font-size: .875rem;
	line-height: 1.55;
}
@media (max-width: 980px) {
	.cb-capability-head {
		grid-template-columns: 1fr;
		gap: var(--cb-s-4);
	}
	.cb-capability-metrics {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	.cb-capability-metric:nth-child(2) {
		border-right: 0;
	}
	.cb-capability-metric:nth-child(-n+2) {
		border-bottom: 1px solid rgba(255,255,255,.18);
	}
	.cb-capability-list {
		grid-template-columns: 1fr;
	}
}
@media (max-width: 560px) {
	.cb-capability-metric {
		min-height: 180px;
		padding: var(--cb-s-4);
	}
	.cb-capability-metric strong {
		margin-bottom: var(--cb-s-6);
		font-size: 2.65rem;
	}
	.cb-capability-list article {
		grid-template-columns: 36px 1fr;
	}
	.cb-capability-list p {
		grid-column: 2;
	}
}

/* Yinbo sample-to-production transition */
.cb-production-transition .cb-section-head {
  max-width: 760px;
  margin-bottom: clamp(2rem, 4vw, 3.5rem);
}

.cb-production-stages {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 180px minmax(0, 1fr);
  align-items: stretch;
  border: 1px solid var(--cb-line, #d7d3ca);
  background: #f3f1ec;
}

.cb-production-stage {
  padding: clamp(2rem, 4vw, 3.25rem);
}

.cb-production-stage--sample {
  background: #f3f1ec;
  color: #111;
}

.cb-production-stage--bulk {
  background: #171717;
  color: #f3f1ec;
}

.cb-production-stage__index {
  display: block;
  margin-bottom: 1.4rem;
  font-family: Inter, sans-serif;
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: #777;
}

.cb-production-stage--bulk .cb-production-stage__index {
  color: #aaa69f;
}

.cb-production-stage h3 {
  margin: 0 0 1rem;
  font-family: "Inter Tight", Inter, sans-serif;
  font-size: clamp(1.75rem, 3vw, 2.6rem);
  font-weight: 650;
  line-height: 1;
  letter-spacing: -.02em;
}

.cb-production-stage > p {
  margin: 0 0 2rem;
  max-width: 38rem;
  color: #666;
  line-height: 1.65;
}

.cb-production-stage--bulk > p {
  color: #b9b6af;
}

.cb-production-stage ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.cb-production-stage li {
  padding: .78rem 0;
  border-top: 1px solid rgba(17, 17, 17, .16);
  font-size: .92rem;
  font-weight: 500;
}

.cb-production-stage--bulk li {
  border-color: rgba(243, 241, 236, .18);
}

.cb-production-stage li:last-child {
  border-bottom: 1px solid rgba(17, 17, 17, .16);
}

.cb-production-stage--bulk li:last-child {
  border-bottom-color: rgba(243, 241, 236, .18);
}

.cb-production-gate {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .9rem;
  padding: 1.5rem 1rem;
  background: #d7d3ca;
  color: #111;
  text-align: center;
}

.cb-production-gate span {
  font-family: Inter, sans-serif;
  font-size: .68rem;
  font-weight: 650;
  line-height: 1.35;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.cb-production-gate strong {
  font-size: 1.8rem;
  font-weight: 400;
  line-height: 1;
}

@media (max-width: 900px) {
  .cb-production-stages {
    grid-template-columns: 1fr;
  }

  .cb-production-gate {
    flex-direction: row;
    gap: 1rem;
    padding: 1.1rem;
  }
}

@media (max-width: 560px) {
  .cb-production-stage {
    padding: 1.75rem 1.25rem;
  }

  .cb-production-gate span {
    font-size: .62rem;
  }
}
