/*
Theme Name: Coalbaltic B2B
Theme URI: https://coalbaltic.com/
Author: Coalbaltic
Description: Coalbaltic B2B WooCommerce storefront.
Version: 1.0.0
Text Domain: coalbaltic
Requires at least: 6.5
Requires PHP: 8.1
*/

/*
 * One storefront token set for the whole site. Functional surfaces (catalogue,
 * product, cart, checkout, payment, account, search, empty states) use this compact
 * language; editorial pages add the section rhythm from `assets/content.css`.
 * `assets/editor.css` mirrors this list for the block editor canvas.
 */
:root {
	--cb-accent: #fa4c17;
	--cb-ink: #172537;
	--cb-muted: #6d7b8c;
	--cb-page: #f4f7fc;
	--cb-surface: #fff;
	--cb-stroke: #e4eaf2;
	--cb-success: #2f8158;
	--cb-warning: #a16a29;
	--cb-danger: #c0392b;
	--cb-radius: 9px;
	--cb-radius-lg: 12px;
	--cb-shadow: 0 1px 10px rgba(31, 58, 83, .06);
	--cb-control-height: 44px;
	--cb-content-max: 820px;
}

* {
	box-sizing: border-box;
}

html {
	scroll-behavior: smooth;
	scroll-padding-top: 100px;
}

body {
	margin: 0;
	overflow-x: clip;
	background: var(--cb-page);
	color: var(--cb-ink);
	font: 400 14px/1.5 Arial, sans-serif;
}

img {
	max-width: 100%;
	height: auto;
}

a {
	color: inherit;
}

button,
input,
select,
textarea {
	font: inherit;
}

.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

:focus-visible {
	outline: 3px solid #1487ea;
	outline-offset: 2px;
}

.cb-skip-link {
	position: absolute;
	left: 12px;
	top: -50px;
	z-index: 100;
	padding: 10px 14px;
	background: var(--cb-ink);
	color: #fff;
}

.cb-skip-link:focus {
	top: 12px;
}

.cb-shell {
	width: min(1310px, calc(100% - 48px));
	margin: 0 auto;
}

/*
 * The About page loads the landing stylesheet, which paints `body` (including its
 * font). The storefront shell is the same on every page, so the shell keeps Arial
 * and Roboto stays inside the embedded landing.
 */
.cb-site-header,
.cb-site-header *,
.cb-site-footer,
.cb-site-footer *,
.cb-skip-link {
	font-family: Arial, sans-serif;
}

.cb-landing-embed {
	font-family: Roboto, Arial, sans-serif;
}

/* Site header */
.cb-site-header {
	position: relative;
	z-index: 20;
	background: var(--cb-surface);
	border-bottom: 1px solid var(--cb-stroke);
}

.cb-site-header__utility {
	background: var(--cb-page);
	color: #526176;
	font-size: 12px;
}

.cb-site-header__utility-row {
	display: flex;
	min-height: 34px;
	align-items: center;
	gap: 18px;
}

.cb-site-header__utility-row a {
	font-weight: 700;
	text-decoration: none;
}

.cb-site-header__utility-row a:first-of-type {
	margin-left: auto;
}

.cb-site-header__row {
	display: flex;
	min-height: 72px;
	align-items: center;
	gap: 10px;
}

.cb-brand {
	display: inline-flex;
	flex: 0 0 116px;
	align-items: center;
}

.cb-brand img {
	display: block;
	width: 116px;
	max-height: 45px;
}

.cb-catalog-trigger,
.cb-header-icon {
	display: inline-flex;
	min-height: 42px;
	align-items: center;
	justify-content: center;
	gap: 7px;
	padding: 0 13px;
	border: 0;
	border-radius: var(--cb-radius);
	background: #f5f7fa;
	color: var(--cb-ink);
	text-decoration: none;
}

.cb-catalog-trigger {
	font-weight: 700;
}

.cb-catalog-trigger span {
	display: flex;
	color: var(--cb-accent);
}

.cb-site-search {
	display: flex;
	flex: 1;
	min-width: 150px;
	align-items: center;
	margin: 0 2px;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius);
	background: var(--cb-surface);
}

.cb-site-search input {
	width: 100%;
	min-height: 40px;
	padding: 8px 12px;
	border: 0;
	outline: 0;
	background: transparent;
}

/* The field itself has no border to highlight, so the wrapper shows the focus ring. */
.cb-site-search:focus-within {
	border-color: #1487ea;
	box-shadow: 0 0 0 2px rgba(20, 135, 234, .35);
}

.cb-site-search button {
	display: grid;
	width: 42px;
	min-height: 40px;
	place-items: center;
	border: 0;
	background: transparent;
	color: var(--cb-ink);
	cursor: pointer;
}

.cb-site-header__actions {
	display: flex;
	flex: 0 0 auto;
	gap: 7px;
}

.cb-header-icon {
	position: relative;
	min-width: 44px;
	padding: 0 10px;
}

.cb-header-icon span {
	font-size: 0;
}

.cb-header-icon b {
	position: absolute;
	top: 3px;
	right: 4px;
	display: grid;
	min-width: 16px;
	height: 16px;
	place-items: center;
	border-radius: 50%;
	background: var(--cb-accent);
	color: #fff;
	font-size: 10px;
}

.cb-menu-toggle {
	display: none;
	border: 0;
	background: #f5f7fa;
	color: var(--cb-ink);
	cursor: pointer;
}

.cb-site-nav {
	border-top: 1px solid #f1f3f7;
}

/* The drawer's own toolbar and close button belong to the phone/tablet sheet only. */
.cb-site-nav__bar,
.cb-site-nav__close {
	display: none;
}

/* The full-screen menu must not let the store scroll behind it. */
html.cb-menu-open {
	overflow: hidden;
}

/*
 * Nothing of the page shows through the open sheet: the search fields are the one
 * element that can sit in a fixed layer of their own (the catalogue toolbar keeps
 * one sticky), so they step aside while the menu covers the store.
 */
.cb-menu-open .cb-site-search,
.cb-menu-open .cb-shop-header .cb-site-search,
.cb-menu-open .cb-search-fab {
	visibility: hidden;
}

/*
 * The storefront menu is a real touch target: 14px labels with an 18px gap, and every
 * item is 44px tall so the whole row is clickable. Seven items stay well inside the
 * shell at 1024–1440px (see the desktop smoke check), and the mobile drawer keeps its
 * own layout.
 */
.cb-site-nav nav ul {
	display: flex;
	min-height: 44px;
	align-items: center;
	gap: 18px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cb-site-nav nav a {
	display: flex;
	min-height: 44px;
	align-items: center;
	color: #243247;
	font-size: 14px;
	text-decoration: none;
}

.cb-site-nav nav a:hover,
.cb-site-nav nav .current-menu-item a,
.cb-site-nav nav [aria-current="page"] {
	color: var(--cb-accent);
}

.cb-site-main {
	min-height: calc(100vh - 220px);
}

.cb-site-main > .cb-shell {
	padding-top: 22px;
	padding-bottom: 58px;
}

/* Page contract: one header, one H1, and surfaces for the page body. */
.cb-page {
	display: grid;
	gap: 24px;
	align-content: start;
}

.cb-page-header {
	display: grid;
	gap: 4px;
}

.cb-page-header__title,
.cb-content-card h1 {
	margin: 0;
	font-size: 32px;
	font-weight: 400;
	line-height: 1.2;
}

.cb-breadcrumbs {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 7px;
	margin-bottom: 9px;
	color: var(--cb-muted);
	font-size: 12px;
}

.cb-breadcrumbs a {
	color: #1487ea;
	text-decoration: none;
}

.cb-breadcrumbs__sep {
	color: #a9b4c1;
}

.cb-breadcrumbs__current {
	color: var(--cb-ink);
}

/* Surfaces */
.cb-surface,
.cb-content-card,
.cb-account-card,
.cb-order-card,
.cb-empty-state,
.woocommerce-cart-form,
.woocommerce .cart-collaterals,
.woocommerce-checkout,
.woocommerce-account .woocommerce-MyAccount-content {
	padding: 24px;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.cb-order-card {
	display: grid;
	gap: 12px;
	margin-bottom: 12px;
}

.cb-order-card:last-child {
	margin-bottom: 0;
}

.cb-order-card__head {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 4px 15px;
}

.cb-order-card__items {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	color: var(--cb-muted);
}

.cb-order-card__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.cb-empty-state {
	text-align: center;
}

.cb-empty-state h2 {
	margin: 0 0 8px;
	font-size: 20px;
	font-weight: 400;
}

.cb-empty-state p {
	margin: 0 0 16px;
	color: var(--cb-muted);
}

.cb-empty-state > *:last-child {
	margin-bottom: 0;
}

/* Buttons */
.cb-button,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce-checkout-payment #place_order,
#payment #place_order {
	display: inline-flex;
	min-height: var(--cb-control-height);
	align-items: center;
	justify-content: center;
	padding: 0 20px;
	border: 0;
	border-radius: var(--cb-radius);
	background: var(--cb-accent);
	color: #fff;
	cursor: pointer;
	font-weight: 700;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
}

.cb-button:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #respond input#submit:hover,
.woocommerce-checkout-payment #place_order:hover,
#payment #place_order:hover {
	background: #e0430f;
	color: #fff;
}

.cb-button--ghost,
.woocommerce a.button.cb-button--ghost,
.woocommerce button.button.cb-button--ghost {
	border: 1px solid var(--cb-stroke);
	background: var(--cb-surface);
	color: var(--cb-ink);
}

.cb-button--ghost:hover,
.woocommerce a.button.cb-button--ghost:hover,
.woocommerce button.button.cb-button--ghost:hover {
	background: var(--cb-page);
	color: var(--cb-ink);
}

.cb-button[disabled],
.cb-button.is-loading,
.woocommerce button.button[disabled],
.woocommerce button.button:disabled {
	opacity: .6;
	cursor: not-allowed;
}

/* Form controls: scoped to storefront pages, the landing keeps its own field skin. */
.cb-page input[type="text"],
.cb-page input[type="email"],
.cb-page input[type="tel"],
.cb-page input[type="number"],
.cb-page input[type="password"],
.cb-page input[type="search"],
.cb-page input[type="url"],
.cb-page input[type="date"],
.cb-page input.input-text,
.cb-page textarea,
.cb-page select,
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce .woocommerce-EditAccountForm input.input-text,
.woocommerce-checkout-payment .form-row input.input-text {
	width: 100%;
	min-height: var(--cb-control-height);
	padding: 10px 12px;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius);
	background: var(--cb-surface);
	color: var(--cb-ink);
}

.cb-page textarea,
.woocommerce form .form-row textarea {
	min-height: 120px;
	resize: vertical;
}

.cb-page label,
.woocommerce form .form-row label {
	color: var(--cb-ink);
}

.cb-page .required,
.woocommerce .required {
	color: var(--cb-accent);
}

.cb-page .form-row,
.woocommerce form .form-row {
	margin: 0 0 14px;
	padding: 0;
}

.cb-page input[type="checkbox"],
.cb-page input[type="radio"] {
	min-height: 0;
	width: auto;
}

/* Quantity control shared by catalogue, cart and product pages. */
.cb-quantity-stepper,
.cb-page .quantity,
.woocommerce .quantity {
	display: grid;
	height: var(--cb-control-height);
	grid-template-columns: var(--cb-control-height) 1fr var(--cb-control-height);
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius);
	background: var(--cb-surface);
}

.cb-quantity-stepper button,
.cb-quantity-stepper input,
.cb-page .quantity input.qty,
.woocommerce .quantity input.qty {
	width: 100%;
	min-width: 0;
	min-height: 0;
	height: 100%;
	border: 0;
	background: transparent;
	text-align: center;
}

.cb-quantity-stepper button {
	cursor: pointer;
	font-size: 20px;
}

.cb-quantity-stepper input,
.cb-page .quantity input.qty,
.woocommerce .quantity input.qty {
	appearance: textfield;
	font-weight: 700;
}

/* Chrome keeps its own spinner arrows on `type=number` until they are hidden. */
.cb-quantity-stepper input::-webkit-inner-spin-button,
.cb-quantity-stepper input::-webkit-outer-spin-button,
.cb-page .quantity input.qty::-webkit-inner-spin-button,
.cb-page .quantity input.qty::-webkit-outer-spin-button,
.woocommerce .quantity input.qty::-webkit-inner-spin-button,
.woocommerce .quantity input.qty::-webkit-outer-spin-button {
	margin: 0;
	appearance: none;
}

/* Package size and package price of the selected sales unit. */
.cb-unit-hint {
	margin: 8px 0 0;
	color: var(--cb-muted);
	font-size: 13px;
	line-height: 1.35;
}

/* Notices: one language for storefront messages and WooCommerce core notices. */
.cb-notice,
.woocommerce .woocommerce-info,
.woocommerce .woocommerce-message,
.woocommerce .woocommerce-error,
.woocommerce .woocommerce-noreviews,
.woocommerce-notices-wrapper .woocommerce-message,
.woocommerce-notices-wrapper .woocommerce-info,
.woocommerce-notices-wrapper .woocommerce-error,
.woocommerce-info,
.woocommerce-message,
.woocommerce-error {
	margin: 0 0 16px;
	padding: 14px 16px;
	border: 0;
	border-left: 4px solid var(--cb-muted);
	border-radius: var(--cb-radius);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
	color: var(--cb-ink);
	overflow-wrap: break-word;
}

.cb-notice:last-child {
	margin-bottom: 0;
}

.cb-notice--info,
.woocommerce-info,
.woocommerce .woocommerce-info,
.woocommerce-notices-wrapper .woocommerce-info {
	border-left-color: #1487ea;
	background: #eef5fd;
}

.cb-notice--success,
.woocommerce-message,
.woocommerce .woocommerce-message,
.woocommerce-notices-wrapper .woocommerce-message {
	border-left-color: var(--cb-success);
	background: #eef7f1;
}

.cb-notice--error,
.woocommerce-error,
.woocommerce .woocommerce-error,
.woocommerce-notices-wrapper .woocommerce-error {
	border-left-color: var(--cb-danger);
	background: #fdeeec;
}

.cb-notice--warning {
	border-left-color: var(--cb-accent);
	background: #fff3ee;
}

.cb-notice a {
	color: #1487ea;
}

/*
 * WooCommerce core pins its notice glyph to `left: 1.5em / top: 1em`, space the
 * theme's own padding does not reserve — the checkmark landed on the first word.
 * The glyph joins the flow instead, right before the text.
 */
.woocommerce .woocommerce-message::before,
.woocommerce .woocommerce-info::before,
.woocommerce .woocommerce-error::before,
.woocommerce-notices-wrapper .woocommerce-message::before,
.woocommerce-notices-wrapper .woocommerce-info::before,
.woocommerce-notices-wrapper .woocommerce-error::before {
	position: static;
	float: none;
	display: inline-block;
	margin: 0 8px 0 0;
	line-height: inherit;
}

.woocommerce-error li,
.woocommerce-info li,
.woocommerce-message li {
	margin: 0;
}

.cb-notice h2,
.cb-notice h3 {
	margin: 0 0 6px;
	font-size: 17px;
}

.cb-payment-note {
	margin: 14px 0 0;
	color: var(--cb-muted);
	font-size: 13px;
}

/*
 * «Оплачено» for an invoice order: the buyer states the transfer is done, the
 * manager confirms the money. The block sits under the order table on the
 * thank-you page and in the account.
 */
.cb-payment-claim {
	margin: 16px 0 0;
	padding: 16px 18px;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
}

.cb-payment-claim__note {
	margin: 0 0 12px;
	color: var(--cb-muted);
	font-size: 13px;
}

.cb-payment-claim__form {
	margin: 0;
}

.cb-payment-claim__form .button {
	min-height: var(--cb-control-height);
}

/* Tables: readable rows on desktop, stacked rows with data-title on mobile. */
.woocommerce table.shop_table {
	border: 0;
	border-collapse: collapse;
	font-size: 13px;
}

.woocommerce table.shop_table th {
	background: #f6f8fb;
	color: var(--cb-ink);
	font-weight: 700;
}

.woocommerce table.shop_table th,
.woocommerce table.shop_table td {
	padding: 12px 14px;
	border-bottom: 1px solid var(--cb-stroke);
	text-align: left;
	vertical-align: middle;
}

.woocommerce table.shop_table td.product-name a {
	text-decoration: none;
	font-weight: 700;
}

.woocommerce table.shop_table tfoot td,
.woocommerce table.shop_table tfoot th {
	background: transparent;
	font-weight: 700;
}

.woocommerce table.shop_table .product-remove a.remove {
	display: grid;
	width: 28px;
	height: 28px;
	place-items: center;
	border-radius: 50%;
	background: #fbeceb;
	color: var(--cb-danger) !important;
	font-size: 18px;
	line-height: 1;
	text-decoration: none;
}

.woocommerce table.shop_table .product-remove a.remove:hover {
	background: var(--cb-danger);
	color: #fff !important;
}

/* Pagination */
.navigation.pagination,
.woocommerce-pagination,
.cb-pagination {
	display: flex;
	justify-content: center;
	margin-top: 22px;
}

.navigation.pagination .nav-links,
.woocommerce-pagination ul,
.cb-pagination ul {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0;
	padding: 0;
	border: 0;
	list-style: none;
}

.navigation.pagination .page-numbers,
.woocommerce-pagination .page-numbers,
.cb-pagination .page-numbers {
	display: inline-flex;
	min-width: 34px;
	min-height: 44px;
	align-items: center;
	justify-content: center;
	padding: 0 6px;
	/*
	 * Plain numbers instead of boxed buttons: the outline read as a stray frame around
	 * «1 2 →». The current page and the hovered link are marked by colour only.
	 */
	border: 0;
	background: none;
	color: var(--cb-muted);
	font-weight: 600;
	text-decoration: none;
}

.navigation.pagination .page-numbers.current,
.woocommerce-pagination .page-numbers.current,
.cb-pagination .page-numbers.current {
	color: var(--cb-ink);
	text-decoration: underline;
	text-underline-offset: 4px;
}

.navigation.pagination a.page-numbers:hover,
.woocommerce-pagination a.page-numbers:hover,
.cb-pagination a.page-numbers:hover {
	color: var(--cb-accent);
	text-decoration: none;
}

/*
 * WooCommerce paints its own box for the current page and for a focused/hovered link
 * (`.woocommerce nav.woocommerce-pagination ul li span.current{background:#e9e6ed}`).
 * The storefront keeps the numbers plain, so those boxes are cancelled — the selector
 * repeats Woo's classes plus the element, which outranks the plugin rule.
 */
.woocommerce nav.woocommerce-pagination ul li a.page-numbers,
.woocommerce nav.woocommerce-pagination ul li span.page-numbers {
	border: 0;
	border-radius: 0;
	background: none;
	color: var(--cb-muted);
	font-weight: 600;
}

.woocommerce nav.woocommerce-pagination ul li span.page-numbers.current {
	background: none;
	color: var(--cb-ink);
	text-decoration: underline;
	text-underline-offset: 4px;
}

.woocommerce nav.woocommerce-pagination ul li a.page-numbers:hover,
.woocommerce nav.woocommerce-pagination ul li a.page-numbers:focus {
	background: none;
	color: var(--cb-accent);
}

/*
 * WooCommerce frames the whole pagination group and every item inside it
 * (`nav.woocommerce-pagination ul{border:1px solid #cfc8d8;border-right:0}` and a
 * divider on each `li`) and floats the items. The storefront keeps plain numbers, so
 * the frame, the dividers and the floats are cancelled; the selectors carry one more
 * class than the plugin's to win regardless of the stylesheet order.
 */
.woocommerce nav.woocommerce-pagination ul.page-numbers {
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
	margin: 0;
	border: 0;
}

.woocommerce nav.woocommerce-pagination ul.page-numbers li {
	float: none;
	margin: 0;
	padding: 0;
	overflow: visible;
	border: 0;
}

.woocommerce nav.woocommerce-pagination ul.page-numbers::before,
.woocommerce nav.woocommerce-pagination ul.page-numbers::after {
	content: none;
	display: none;
}

/* Status chips and badges */
.cb-badge,
.cb-status {
	display: inline-flex;
	align-items: center;
	padding: 4px 9px;
	border-radius: 7px;
	background: #eef1f6;
	color: var(--cb-ink);
	font-size: 11px;
	font-weight: 700;
}

.cb-badge {
	background: var(--cb-accent);
	color: #fff;
	font-size: 10px;
	text-transform: uppercase;
}

.cb-badge--new {
	background: #1487ea;
}

.cb-status--available,
.cb-status--completed,
.cb-status--processing {
	background: #eef7f1;
	color: var(--cb-success);
}

.cb-status--awaiting,
.cb-status--await-manager,
.cb-status--on-hold,
.cb-status--pending {
	background: #fff3ee;
	color: var(--cb-warning);
}

.cb-status--unavailable,
.cb-status--failed,
.cb-status--cancelled,
.cb-status--refunded {
	background: #fdeeec;
	color: var(--cb-danger);
}

/* Site footer */
.cb-site-footer {
	background: var(--cb-ink);
	color: #fff;
}

.cb-site-footer__grid {
	display: grid;
	grid-template-columns: 1.6fr repeat(3, 1fr);
	gap: 30px;
	padding: 44px 0 34px;
}

.cb-site-footer__grid > div {
	display: grid;
	align-content: start;
	gap: 8px;
	font-size: 13px;
}

.cb-site-footer__grid img {
	width: 145px;
	filter: brightness(0) invert(1);
}

.cb-site-footer__grid p {
	margin: 0;
	color: #b7c0ca;
}

.cb-site-footer__grid strong {
	margin-bottom: 4px;
	font-size: 12px;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.cb-site-footer__grid a {
	text-decoration: none;
}

.cb-site-footer__grid a:hover {
	color: #ff9a79;
}

.cb-socials {
	display: flex;
	gap: 12px;
}

.cb-site-footer__bottom {
	display: flex;
	justify-content: space-between;
	gap: 20px;
	padding: 16px 0;
	border-top: 1px solid rgba(255, 255, 255, .18);
	color: #b7c0ca;
	font-size: 12px;
}

.cb-site-footer__legal {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 18px;
}

.cb-site-footer__legal a {
	color: #b7c0ca;
	text-decoration: none;
}

.cb-site-footer__legal a:hover {
	color: #ff9a79;
}

/*
 * The consent panel and the analytics settings link are filled and revealed by
 * `assets/storefront.js`; while the mount points carry `hidden` nothing of them is
 * rendered. The panel sits above the mobile bottom bar and never covers it.
 */
#cb-analytics-consent[hidden],
#cb-chat-root[hidden] {
	display: none !important;
}

.cb-analytics-settings-link {
	padding: 0;
	border: 0;
	background: none;
	color: #b7c0ca;
	cursor: pointer;
	font: inherit;
	text-align: left;
	text-decoration: none;
}

.cb-analytics-settings-link:hover {
	color: #ff9a79;
}

#cb-analytics-consent {
	position: fixed;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 30;
}

.cb-consent {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 8px 24px;
	padding: 16px 20px;
	border-top: 1px solid var(--cb-stroke);
	background: var(--cb-surface);
	box-shadow: 0 -6px 24px rgba(23, 37, 55, .14);
}

.cb-consent__title {
	grid-column: 1;
	margin: 0;
	font-size: 15px;
	font-weight: 700;
}

.cb-consent__text {
	grid-column: 1;
	margin: 0;
	color: var(--cb-muted);
	font-size: 13px;
}

.cb-consent__text a {
	color: #1487ea;
}

.cb-consent__actions {
	display: flex;
	grid-column: 2;
	grid-row: 1 / 3;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
}

.cb-consent__button {
	display: inline-flex;
	min-height: var(--cb-control-height);
	align-items: center;
	justify-content: center;
	padding: 0 18px;
	border: 1px solid var(--cb-accent);
	border-radius: var(--cb-radius);
	cursor: pointer;
	font-size: 13px;
	font-weight: 700;
}

/* Both answers are equal choices: same size, same weight. */
.cb-consent__button--allow {
	background: var(--cb-accent);
	color: #fff;
}

.cb-consent__button--necessary {
	background: transparent;
	color: var(--cb-ink);
}

.cb-consent__button[aria-pressed="true"] {
	box-shadow: inset 0 0 0 2px var(--cb-ink);
}

@media (max-width: 680px) {
	#cb-analytics-consent {
		bottom: 0;
	}

	.cb-consent {
		grid-template-columns: minmax(0, 1fr);
		padding: 14px 15px;
	}

	.cb-consent__text,
	.cb-consent__actions {
		grid-column: 1;
	}

	.cb-consent__actions {
		grid-row: auto;
	}

	.cb-consent__button {
		flex: 1 1 auto;
	}
}

/* Home */
.cb-home-section {
	margin-top: 30px;
}

/* The catalogue heading is the single H1 of the front page. */
.cb-home-section h1,
.cb-home-section h2 {
	margin: 0 0 18px;
	font-size: 28px;
	font-weight: 400;
}

/* /skidki/: one tile per threshold, then the individual-conditions cards. */
.cb-skidki-section {
	display: grid;
	gap: 14px;
}

.cb-skidki-section h2 {
	margin: 0;
	font-size: 26px;
	font-weight: 400;
}

.cb-skidki-section__lead {
	margin: 0;
	color: var(--cb-muted);
	font-size: 16px;
}

.cb-skidki-section__note {
	margin: 0;
	color: var(--cb-muted);
	font-size: 13px;
}

.cb-skidki-section__note a {
	color: #1487ea;
}

.cb-discount-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
	gap: 14px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cb-discount-tile {
	display: grid;
	align-content: start;
	gap: 8px;
	padding: 22px 20px;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.cb-discount-tile__percent {
	color: var(--cb-accent);
	font-size: 40px;
	font-weight: 700;
	line-height: 1;
}

.cb-discount-tile__range {
	font-size: 17px;
	font-weight: 700;
}

.cb-discount-tile__note {
	margin: 0;
	color: var(--cb-muted);
	font-size: 13px;
}

/* The last tile is an invitation to negotiate, not another automatic rate. */
.cb-discount-tile--personal {
	border-color: var(--cb-accent);
	background: #fff6f2;
}

.cb-discount-tile--personal .cb-discount-tile__percent {
	font-size: 22px;
	line-height: 1.2;
}

.cb-discount-tile__link {
	display: inline-flex;
	min-height: var(--cb-control-height);
	align-items: center;
	justify-content: center;
	margin-top: 4px;
	padding: 0 18px;
	border-radius: var(--cb-radius);
	background: var(--cb-accent);
	color: #fff !important;
	font-size: 13px;
	font-weight: 700;
	text-decoration: none;
}

.cb-discount-tile__link:hover {
	background: #e0430f;
}

.cb-skidki-cards {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 14px;
}

.cb-skidki-card {
	padding: 20px;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.cb-skidki-card h3 {
	margin: 0 0 8px;
	font-size: 17px;
	font-weight: 700;
}

.cb-skidki-card p {
	margin: 0;
	color: var(--cb-muted);
	font-size: 14px;
}

@media (max-width: 680px) {
	.cb-skidki-section h2 {
		font-size: 22px;
	}

	/* Tiles and cards stack in one column on phones. */
	.cb-discount-grid,
	.cb-skidki-cards {
		grid-template-columns: 1fr;
	}

	.cb-discount-tile__percent {
		font-size: 32px;
	}
}

.cb-category-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 14px;
}

.cb-category-card {
	display: flex;
	min-height: 150px;
	flex-direction: column;
	justify-content: space-between;
	padding: 18px;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
	text-decoration: none;
}

.cb-category-card img {
	height: 90px;
	object-fit: contain;
}

.cb-category-card strong {
	font-size: 14px;
}

.cb-category-card small {
	color: var(--cb-muted);
}

.cb-trust-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 14px;
}

.cb-trust-grid article {
	padding: 22px;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.cb-trust-grid h3 {
	margin: 0 0 8px;
	font-size: 18px;
}

.cb-trust-grid p {
	margin: 0;
	color: var(--cb-muted);
}

/* Catalogue */
.cb-catalog-layout {
	display: grid;
	width: 100%;
	max-width: 1284px;
	margin: 0 auto;
	grid-template-columns: 294px minmax(0, 1fr);
	gap: 32px;
	align-items: start;
}

.cb-catalog-sidebar {
	position: sticky;
	top: 12px;
	overflow: hidden;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
}

.cb-catalog-sidebar__head {
	display: flex;
	min-height: var(--cb-control-height);
	align-items: center;
	justify-content: space-between;
	padding: 0 16px;
	background: var(--cb-accent);
	color: #fff;
	font-size: 12px;
	text-decoration: none;
}

.cb-sidebar-categories {
	display: grid;
}

.cb-sidebar-categories a {
	display: flex;
	min-height: var(--cb-control-height);
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 10px 14px;
	border-bottom: 1px solid var(--cb-stroke);
	font-size: 12px;
	line-height: 1.25;
	text-decoration: none;
}

.cb-sidebar-categories a:last-child {
	border-bottom: 0;
}

.cb-sidebar-categories a:hover,
.cb-sidebar-categories a.is-active {
	color: var(--cb-accent);
}

.cb-shop-header {
	margin: 0 0 22px;
	padding-top: 26px;
}

.cb-shop-title-row {
	display: flex;
	align-items: flex-start;
	gap: 8px;
}

.cb-shop-header .page-title {
	margin: 0;
	font-size: 32px;
	font-weight: 400;
	line-height: 1.2;
}

.cb-shop-title-row > span {
	padding-top: 5px;
	color: var(--cb-muted);
	font-size: 11px;
}

.cb-catalog-tools {
	display: flex;
	min-height: 46px;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 18px;
}

.cb-shop-loop-header {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin-bottom: 18px;
}

.cb-shop-loop-header .woocommerce-notices-wrapper,
.cb-shop-loop-header .cb-b2b-context {
	flex: 1 1 100%;
	margin: 0;
}

.woocommerce .cb-shop-loop-header .woocommerce-result-count {
	margin: 0;
	color: var(--cb-muted);
	font-size: 12px;
}

.woocommerce .cb-shop-loop-header .woocommerce-ordering {
	float: none;
	margin: 0 0 0 auto;
}

.woocommerce .cb-shop-loop-header .woocommerce-ordering select {
	min-height: 38px;
	padding: 0 34px 0 12px;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius);
	background: var(--cb-surface);
}

/* WooCommerce breadcrumbs on shop and product pages share the storefront look. */
.woocommerce .woocommerce-breadcrumb {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 7px;
	margin: 0 0 9px;
	color: var(--cb-muted);
	font-size: 12px;
}

.woocommerce .woocommerce-breadcrumb a {
	color: #1487ea;
	text-decoration: none;
}

.cb-mobile-filter-toggle {
	display: none;
}

.cb-view-toggle {
	display: flex;
	gap: 0;
}

.cb-view-toggle button {
	display: grid;
	width: 38px;
	height: 38px;
	place-items: center;
	border: 1px solid var(--cb-stroke);
	background: var(--cb-surface);
	cursor: pointer;
}

.cb-view-toggle button:first-child {
	border-radius: var(--cb-radius) 0 0 var(--cb-radius);
}

.cb-view-toggle button:last-child {
	border-radius: 0 var(--cb-radius) var(--cb-radius) 0;
}

.cb-view-toggle button.is-active {
	border-color: #9fc2d6;
	background: #eaf5fb;
	color: #1188c7;
}

.cb-filter-chips {
	display: none;
}

.cb-filter-drawer {
	margin-bottom: 0;
	padding: 20px 14px 18px;
	border-radius: var(--cb-radius-lg) var(--cb-radius-lg) 0 0;
	background: var(--cb-surface);
}

.cb-filter-drawer__head {
	display: none;
}

.cb-catalog-filter {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 14px;
	align-items: end;
}

.cb-filter-field {
	display: grid;
	gap: 6px;
	margin: 0;
	color: #35445a;
	font-size: 12px;
}

.cb-filter-field > span,
.cb-filter-field legend {
	font-weight: 700;
}

.cb-filter-field select {
	width: 100%;
	min-height: 38px;
	padding: 7px 9px;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius);
	background: var(--cb-surface);
}

.cb-filter-field--price {
	display: grid;
	margin: 0;
	padding: 0;
	border: 0;
	grid-template-columns: 1fr 1fr;
}

.cb-filter-field--price legend {
	grid-column: 1 / -1;
	margin-bottom: 6px;
}

.cb-filter-field--price label {
	display: flex;
	min-height: 38px;
	align-items: center;
	padding-left: 9px;
	border: 1px solid var(--cb-stroke);
	background: var(--cb-surface);
}

.cb-filter-field--price label:first-of-type {
	border-radius: var(--cb-radius) 0 0 var(--cb-radius);
}

.cb-filter-field--price label:last-of-type {
	border-left: 0;
	border-radius: 0 var(--cb-radius) var(--cb-radius) 0;
}

.cb-filter-field--price label span {
	color: var(--cb-muted);
}

.cb-filter-field--price input {
	width: 100%;
	min-width: 0;
	padding: 7px;
	border: 0;
	outline: 0;
}

.cb-filter-stock {
	display: flex;
	min-height: 38px;
	align-items: center;
	gap: 8px;
	font-size: 12px;
}

.cb-filter-submit {
	min-height: 38px;
	border: 0;
	border-radius: var(--cb-radius);
	background: var(--cb-accent);
	color: #fff;
	cursor: pointer;
	font-weight: 700;
}

.cb-filter-reset {
	align-self: center;
	color: #1487ea;
	text-align: center;
	text-decoration: none;
	font-size: 12px;
}

.cb-category-groups {
	display: grid;
	gap: 16px;
}

.cb-category-group {
	overflow: hidden;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.cb-category-group__main {
	display: grid;
	min-height: 166px;
	grid-template-columns: 170px minmax(0, 1fr) auto;
	align-items: center;
	gap: 22px;
	padding: 20px 24px;
}

.cb-category-group__image {
	display: flex;
	height: 126px;
	align-items: center;
	justify-content: center;
}

.cb-category-group__image img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.cb-category-group__copy h2 {
	margin: 0 0 7px;
	font-size: 20px;
	font-weight: 400;
}

.cb-category-group__copy h2 a {
	color: var(--cb-accent);
	text-decoration: none;
}

.cb-category-group__copy p {
	max-width: 650px;
	margin: 0;
	color: var(--cb-muted);
	font-size: 12px;
	line-height: 1.45;
}

.cb-category-group__price {
	align-self: start;
	padding-top: 8px;
	white-space: nowrap;
	font-size: 18px;
	font-weight: 700;
}

.cb-category-group__price .woocommerce-Price-amount {
	font: inherit;
}

.cb-category-group__children {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	border-top: 1px solid var(--cb-stroke);
}

.cb-category-group__children > a {
	display: flex;
	min-height: 70px;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	padding: 10px 12px;
	border-right: 1px solid var(--cb-stroke);
	border-bottom: 1px solid var(--cb-stroke);
	text-decoration: none;
}

.cb-category-group__children > a:nth-child(4n) {
	border-right: 0;
}

/*
 * Only the tile's own wrapper is a grid: a bare `span` selector also caught the
 * WooCommerce price spans inside it, and `display: grid` stacked «от» / «535,00» /
 * «₽» into three rows on narrow cards.
 */
.cb-category-group__children > a > span {
	display: grid;
	gap: 3px;
}

.cb-category-group__children strong {
	font-size: 11px;
	font-weight: 400;
	line-height: 1.25;
}

.cb-category-group__children small {
	font-size: 11px;
	font-weight: 700;
	/*
	 * The catalogue keeps «от 535,00 ₽» on one line: the page-wide
	 * `overflow-wrap: break-word` otherwise breaks the amount inside the narrow
	 * group tile, and the «от» prefix would leave the number on its own line.
	 */
	white-space: nowrap;
}

.cb-category-group__children img {
	width: 42px;
	height: 42px;
	flex: 0 0 42px;
	object-fit: contain;
}

/* Promo stories: a horizontal snap strip above the catalogue groups. */
.cb-stories {
	margin: 0 0 26px;
}

.cb-stories__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: 14px;
}

.cb-stories__head h2 {
	margin: 0;
	font-size: 22px;
	font-weight: 400;
}

.cb-stories__scroll {
	display: flex;
	gap: 8px;
}

.cb-stories__arrow {
	display: grid;
	width: 34px;
	height: 34px;
	place-items: center;
	padding: 0;
	border: 1px solid var(--cb-stroke);
	border-radius: 50%;
	background: var(--cb-surface);
	color: var(--cb-ink);
	cursor: pointer;
}

.cb-stories__arrow:hover {
	border-color: var(--cb-accent);
	color: var(--cb-accent);
}

.cb-stories__track {
	display: grid;
	grid-auto-columns: minmax(220px, 268px);
	grid-auto-flow: column;
	gap: 12px;
	margin: 0;
	padding: 0 0 6px;
	overflow-x: auto;
	list-style: none;
	scroll-snap-type: x mandatory;
	scrollbar-width: thin;
}

.cb-stories__item {
	scroll-snap-align: start;
}

.cb-story-card {
	display: grid;
	width: 100%;
	height: 100%;
	align-content: start;
	gap: 10px;
	padding: 0 0 14px;
	overflow: hidden;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	color: var(--cb-ink);
	cursor: pointer;
	font: inherit;
	text-align: left;
}

.cb-story-card:hover,
.cb-story-card:focus-visible {
	border-color: var(--cb-accent);
}

.cb-story-card__media {
	display: block;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: #f6f8fb;
}

.cb-story-card__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* A story without a thumbnail is a text card, not a broken image frame. */
.cb-story-card--text {
	align-content: center;
	min-height: 180px;
	padding: 20px;
	background: linear-gradient(140deg, #fff6f2 0%, #fff 70%);
}

.cb-story-card__title {
	padding: 0 14px;
	font-size: 15px;
	line-height: 1.3;
}

.cb-story-card--text .cb-story-card__title {
	padding: 0;
	font-size: 17px;
	font-weight: 700;
}

/* Story reader */
.cb-story-dialog {
	width: min(680px, calc(100% - 32px));
	max-height: min(86vh, 760px);
	padding: 0;
	border: 0;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	color: var(--cb-ink);
	box-shadow: 0 30px 70px rgba(23, 37, 55, .28);
}

.cb-story-dialog::backdrop {
	background: rgba(16, 24, 34, .55);
}

.cb-story-dialog__shell {
	display: grid;
	max-height: inherit;
}

.cb-story-dialog__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 14px 16px;
	border-bottom: 1px solid var(--cb-stroke);
}

.cb-story-dialog__heading {
	margin: 0;
	font-size: 15px;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
}

.cb-story-dialog__close,
.cb-story-dialog__arrow {
	display: grid;
	width: 38px;
	height: 38px;
	place-items: center;
	padding: 0;
	border: 1px solid var(--cb-stroke);
	border-radius: 50%;
	background: var(--cb-surface);
	color: var(--cb-ink);
	cursor: pointer;
}

.cb-story-dialog__close:hover,
.cb-story-dialog__arrow:hover {
	border-color: var(--cb-accent);
	color: var(--cb-accent);
}

.cb-story-dialog__viewport {
	overflow-y: auto;
	padding: 18px 20px 6px;
}

.cb-story-dialog__media {
	margin: 0 0 14px;
	overflow: hidden;
	border-radius: var(--cb-radius);
	background: #f6f8fb;
}

.cb-story-dialog__media img {
	display: block;
	width: 100%;
	height: auto;
	max-height: 320px;
	object-fit: cover;
}

.cb-story-dialog__title {
	margin: 0 0 10px;
	font-size: 22px;
	font-weight: 400;
}

.cb-story-dialog__controls {
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: 12px;
	padding: 12px 16px 14px;
	border-top: 1px solid var(--cb-stroke);
}

.cb-story-dialog__controls [data-cb-story-prev] {
	grid-column: 1;
	grid-row: 1;
}

.cb-story-dialog__controls [data-cb-story-next] {
	grid-column: 3;
	grid-row: 1;
}

.cb-story-dialog__progress {
	grid-column: 2;
	grid-row: 1;
	margin: 0;
	color: var(--cb-muted);
	font-size: 12px;
	text-align: center;
}

.cb-story-dialog__dots {
	display: flex;
	grid-column: 1 / -1;
	grid-row: 2;
	justify-content: center;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cb-story-dialog__dot {
	display: block;
	width: 9px;
	height: 9px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--cb-stroke);
	cursor: pointer;
}

.cb-story-dialog__dot[aria-current="true"] {
	background: var(--cb-accent);
}

@media (max-width: 680px) {
	.cb-stories__track {
		grid-auto-columns: minmax(200px, 74vw);
	}

	.cb-story-dialog {
		width: 100%;
		max-height: 92vh;
	}

	.cb-story-dialog__viewport {
		padding: 14px 15px 4px;
	}
}

/* Product card: one card for home, catalogue, search, favourites and specials. */
.woocommerce ul.products {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 0;
	margin: 0;
	overflow: hidden;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.woocommerce ul.products:before,
.woocommerce ul.products:after {
	display: none;
}

.woocommerce ul.products li.product {
	width: auto !important;
	margin: 0 !important;
	float: none !important;
}

/*
 * WooCommerce legacy `woocommerce.css` styles `ul.products li.product` directly, so
 * the storefront card carries the same scope and wins on specificity instead of
 * hiding the conflict behind `!important`.
 */
.woocommerce ul.products li.product.cb-product-card {
	position: relative;
	display: flex;
	height: 100%;
	flex-direction: column;
	padding: 24px 20px;
	border-right: 1px solid var(--cb-stroke);
	border-bottom: 1px solid var(--cb-stroke);
	border-radius: 0;
	background: var(--cb-surface);
	box-shadow: none;
}

/*
 * The media box is a flex item of the card, so its default `min-height: auto` is the
 * image's own intrinsic height: a portrait photo stretched the box past the 4/3 ratio
 * (240px wide → 209px instead of 180px) and moved everything below it — the rating,
 * the price and the button — to a different Y than the neighbouring cards. With the
 * automatic minimum dropped the ratio owns the height, `overflow: hidden` clips any
 * remainder and `object-fit: contain` keeps the whole product inside the box without
 * cropping or distortion.
 */
.cb-product-card__media {
	position: relative;
	display: flex;
	width: 100%;
	min-height: 0;
	aspect-ratio: 4 / 3;
	align-items: center;
	justify-content: center;
	margin-bottom: 16px;
	overflow: hidden;
	background: var(--cb-surface);
	text-decoration: none;
}

.woocommerce ul.products li.product .cb-product-card__media img {
	width: 100%;
	height: 100%;
	margin: 0;
	object-fit: contain;
}

.cb-favorite-toggle {
	position: absolute;
	top: 18px;
	right: 16px;
	z-index: 2;
	display: grid;
	width: 34px;
	height: 34px;
	place-items: center;
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--cb-ink);
	cursor: pointer;
}

.cb-favorite-toggle.is-active {
	color: var(--cb-accent);
}

.cb-product-card__badges {
	position: absolute;
	top: 0;
	left: 0;
	display: flex;
	gap: 4px;
}

/*
 * Card alignment contract.
 *
 * Media, the title slot (always two lines), the facts slot (always three rows, the
 * full storefront fact set) and the 20px rating row all have a fixed height, so the
 * price and then the button row of two cards in the same grid row start on one Y —
 * a one-line name or a card without reviews does not move them. The title is clamped
 * visually with the whole name kept as the link's accessible name (the source data
 * carries short names; nothing is trimmed in PHP). The actions row is the only
 * flexible row, which pins the buttons to the bottom of the card.
 */
.cb-product-card__body {
	display: grid;
	min-width: 0;
	flex: 1;
	grid-template-rows: auto auto auto 1fr;
	align-content: start;
	padding: 0;
}

.cb-product-card__title {
	display: -webkit-box;
	min-height: 2.6em !important;
	overflow: hidden;
	margin: 0 0 10px !important;
	padding: 0 !important;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	font-size: 14px !important;
	font-weight: 400 !important;
	line-height: 1.3;
}

.cb-product-card__title a {
	text-decoration: none;
}

.cb-product-card__facts {
	display: grid;
	min-height: 60px;
	align-content: start;
	gap: 5px;
	margin: 0 0 12px;
	color: var(--cb-ink);
	font-size: 11px;
	line-height: 1.4;
}

.cb-product-card__facts div {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 7px;
}

.cb-product-card__facts dt,
.cb-product-card__facts dd {
	margin: 0;
}

.cb-product-card__facts dt {
	color: var(--cb-muted);
}

.cb-product-card__facts dd {
	font-weight: 400;
}

.cb-product-card__info {
	display: grid;
	align-content: start;
	margin-top: 0;
}

/* The rating keeps its row even when the product has no reviews yet. */
.cb-product-card__rating {
	display: flex;
	min-height: 20px;
	align-items: center;
}

.cb-product-rating {
	display: flex;
	gap: 7px;
	margin-bottom: 0;
	color: #f44336;
	text-decoration: none;
	font-size: 11px;
}

.cb-product-rating span {
	color: var(--cb-muted);
}

.woocommerce ul.products li.product .cb-product-card__price .price {
	display: block;
	margin: 0 0 12px;
	color: var(--cb-accent);
	font-size: 20px !important;
	font-weight: 500;
	/*
	 * «от 87,00 ₽» is one value: a narrow card must not break it into «от» / the
	 * amount / the currency symbol. The prefix and the amount stay on one line.
	 */
	white-space: nowrap;
}

/*
 * Prices are single values everywhere on the storefront: the amount never breaks
 * before the currency symbol, and «от» stays glued to the amount, so a narrow card,
 * a cart row or the mini-cart cannot stack «от» / «535,00» / «₽». The card rule above
 * is kept for the larger type it sets.
 */
.woocommerce .price,
.woocommerce-Price-amount,
.woocommerce-Price-amount bdi {
	white-space: nowrap;
}

.cb-stock {
	position: relative;
	margin: 0 0 16px;
	padding-left: 15px;
	color: var(--cb-muted);
	font-size: 12px;
	font-weight: 400;
}

.cb-stock:before {
	position: absolute;
	top: 6px;
	left: 1px;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: currentColor;
	content: '';
}

.cb-stock.is-available {
	color: var(--cb-success);
}

.cb-stock.is-unavailable {
	color: var(--cb-warning);
}

.cb-product-card__buy {
	display: grid;
	align-self: end;
	gap: 9px;
	margin-top: 0;
	padding-top: 0;
	border: 0;
}

.cb-add-form {
	display: grid;
	gap: 9px;
}

.cb-add-to-cart,
.cb-product-card__details {
	display: flex;
	min-height: var(--cb-control-height);
	align-items: center;
	justify-content: center;
	border: 0;
	border-radius: var(--cb-radius);
	background: var(--cb-accent);
	color: #fff !important;
	cursor: pointer;
	font-size: 12px;
	font-weight: 700;
	text-decoration: none;
}

.cb-add-to-cart:hover,
.cb-product-card__details:hover {
	background: #e0430f;
}

.cb-list-view {
	grid-template-columns: 1fr !important;
}

.woocommerce ul.products.cb-list-view li.product.cb-product-card {
	display: grid;
	min-height: 0;
	grid-template-columns: 220px minmax(0, 1fr);
	gap: 24px;
	padding: 24px 20px;
}

.cb-list-view .cb-product-card__media {
	width: 220px;
	aspect-ratio: 1 / 1;
	grid-column: 1;
	grid-row: 1;
	margin: 0;
}

.cb-list-view .cb-favorite-toggle {
	right: auto;
	left: 200px;
	top: 24px;
}

.cb-list-view .cb-product-card__body {
	display: grid;
	align-content: stretch;
	grid-template-columns: minmax(0, 1fr) 230px;
	grid-template-rows: auto minmax(70px, 1fr) auto;
	column-gap: 32px;
}

.cb-list-view .cb-product-card__title {
	grid-column: 1;
	grid-row: 1;
	min-height: 0 !important;
	margin-right: 20px !important;
	font-size: 16px !important;
}

.cb-list-view .cb-product-card__facts {
	grid-column: 1;
	grid-row: 2;
	min-height: 0;
	margin: 0;
}

.cb-list-view .cb-product-card__info {
	display: flex;
	grid-column: 2;
	grid-row: 1 / 3;
	flex-direction: column;
	margin: 0;
}

.cb-list-view .cb-product-card__price {
	order: 1;
}

.cb-list-view .cb-stock {
	order: 2;
	margin-top: 12px;
}

/* In list mode the rating closes the info column instead of opening it. */
.cb-list-view .cb-product-card__rating {
	order: 3;
	margin-top: 0;
}

.cb-list-view .cb-product-card__buy {
	display: grid;
	grid-column: 1 / 3;
	grid-row: 3;
	grid-template-columns: 1fr;
	gap: 32px;
}

.cb-list-view .cb-add-form {
	grid-template-columns: 160px minmax(140px, 1fr);
}

/* Product detail */
.cb-product-page {
	display: grid;
	gap: 24px;
}

.woocommerce div.product div.images {
	display: flex;
	min-height: 430px;
	align-items: center;
	justify-content: center;
	padding: 24px;
	background: #f9fafc;
	border-radius: var(--cb-radius);
}

.woocommerce div.product div.images img {
	max-height: 500px;
	object-fit: contain;
}

.woocommerce div.product .product_title {
	margin: 0 0 18px;
	font-size: 32px;
	font-weight: 400;
	line-height: 1.1;
}

.cb-product-status {
	margin: 0 0 12px;
	font-size: 12px;
	font-weight: 700;
}

.cb-product-status.is-available {
	color: var(--cb-success);
}

.cb-product-status.is-unavailable {
	color: var(--cb-warning);
}

.cb-product-specs {
	margin: 0;
	border-top: 1px solid var(--cb-stroke);
}

.cb-product-specs div {
	display: grid;
	grid-template-columns: .8fr 1.2fr;
	gap: 18px;
	padding: 10px 0;
	border-bottom: 1px solid var(--cb-stroke);
}

.cb-product-specs dt {
	color: var(--cb-muted);
}

.cb-product-specs dd {
	margin: 0;
	font-weight: 700;
}

.woocommerce div.product .summary .price {
	display: block;
	margin: 0 0 14px;
	font-size: 27px;
	font-weight: 700;
	color: var(--cb-ink);
}

.woocommerce div.product form.cart {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0;
}

/* Favourite toggle inside the product summary keeps its label instead of the icon box. */
.woocommerce div.product .summary .cb-favorite-toggle {
	position: static;
	display: inline-flex;
	width: auto;
	height: auto;
	min-height: 40px;
	align-items: center;
	gap: 8px;
	margin: 0 0 14px;
	padding: 0 14px;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius);
	font-size: 13px;
	font-weight: 700;
}

.woocommerce div.product .summary .cb-favorite-toggle.is-active {
	border-color: var(--cb-accent);
	color: var(--cb-accent);
}

.woocommerce div.product form.cart .quantity {
	flex: 0 0 132px;
}

.woocommerce div.product form.cart .single_add_to_cart_button {
	flex: 1 1 180px;
	min-height: var(--cb-control-height);
	border-radius: var(--cb-radius);
	background: var(--cb-accent);
	color: #fff;
	font-weight: 700;
}

.woocommerce div.product form.cart .single_add_to_cart_button:hover {
	background: #e0430f;
}

.woocommerce div.product .woocommerce-tabs,
.woocommerce div.product .related,
.woocommerce div.product .up-sells,
.cb-product-tabs {
	margin-top: 25px;
	padding: 24px;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.woocommerce div.product .woocommerce-tabs ul.tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 20px;
	margin: 0;
	padding: 0 0 10px;
	border-bottom: 1px solid var(--cb-stroke);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li {
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li a {
	padding: 0;
	font-weight: 700;
	text-decoration: none;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active a,
.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover {
	color: var(--cb-accent);
}

.woocommerce div.product .woocommerce-tabs ul.tabs::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after {
	display: none;
}

.woocommerce div.product .woocommerce-product-gallery__wrapper {
	margin: 0;
}

.woocommerce div.product .flex-control-thumbs {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 12px 0 0;
	padding: 0;
}

.woocommerce div.product .flex-control-thumbs li {
	width: auto;
	margin: 0;
	float: none;
}

.woocommerce div.product .flex-control-thumbs img {
	width: 72px;
	height: 72px;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius);
	object-fit: contain;
}

.woocommerce div.product .flex-control-thumbs img.flex-active {
	border-color: var(--cb-accent);
}

.woocommerce div.product .single_variation_wrap .variations {
	width: 100%;
	border: 0;
}

.woocommerce div.product .single_variation_wrap .variations th,
.woocommerce div.product .single_variation_wrap .variations td {
	padding: 8px 0;
	border: 0;
	text-align: left;
}

.woocommerce div.product .stock {
	color: var(--cb-success);
	font-weight: 700;
}

.woocommerce div.product .out-of-stock,
.woocommerce div.product .stock.out-of-stock {
	color: var(--cb-warning);
}

.woocommerce div.product .woocommerce-grouped-product-list table,
.woocommerce div.product table.group_table {
	width: 100%;
	border: 0;
}

.woocommerce div.product table.group_table td {
	padding: 10px;
	border-bottom: 1px solid var(--cb-stroke);
	vertical-align: middle;
}

.woocommerce div.product .woocommerce-product-details__short-description {
	color: var(--cb-muted);
}

.woocommerce div.product .product_meta {
	display: grid;
	gap: 4px;
	margin-top: 16px;
	color: var(--cb-muted);
	font-size: 12px;
}

.woocommerce div.product .product_meta a {
	color: #1487ea;
	text-decoration: none;
}

/* Reviews: catalogue cards for product reviews, home/archive lists for posts. */
.cb-review-list,
.woocommerce #reviews .commentlist,
.woocommerce-Reviews .commentlist {
	display: grid;
	gap: 14px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cb-review-card,
.woocommerce #reviews .commentlist li.review,
/* WooCommerce core styles the review list with two id selectors, so the storefront
   card keeps the same scope instead of hiding the conflict behind `!important`. */
#reviews #comments ol.commentlist li.review {
	margin: 0;
	padding: 20px;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.cb-review-card__head {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 4px 12px;
	margin-bottom: 8px;
}

.cb-review-card__date,
.cb-review-card__product {
	color: var(--cb-muted);
	font-size: 12px;
}

.cb-review-card p {
	margin: 0 0 8px;
}

.cb-review-card p:last-child {
	margin-bottom: 0;
}

.cb-review-card__rating {
	color: #f44336;
}

.woocommerce #reviews .commentlist li.review .star-rating {
	margin: 0 0 8px;
}

.woocommerce #reviews #review_form_wrapper {
	margin-top: 20px;
	padding: 24px;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.woocommerce p.stars a {
	color: var(--cb-accent);
}

/* Post lists */
.cb-news-list {
	display: grid;
	gap: 14px;
}

.cb-news-card {
	display: grid;
	gap: 8px;
	padding: 22px 24px;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.cb-news-card h2 {
	margin: 0;
	font-size: 20px;
	font-weight: 400;
}

.cb-news-card h2 a {
	text-decoration: none;
}

.cb-news-card p {
	margin: 0;
	color: var(--cb-muted);
}

.cb-news-card__more {
	color: #1487ea;
	font-weight: 700;
	text-decoration: none;
}

.cb-post-date {
	margin: 0 0 16px;
	color: var(--cb-muted);
	font-size: 12px;
}

/* WooCommerce surfaces: cart, checkout, account */
.woocommerce-cart-form,
.woocommerce .cart-collaterals {
	margin-bottom: 24px;
}

.woocommerce .cart-collaterals .cart_totals > h2,
.woocommerce-checkout h3,
.woocommerce-checkout h2 {
	margin: 0 0 14px;
	font-size: 20px;
	font-weight: 400;
}

.woocommerce .cart-collaterals .cart_totals table {
	margin: 0;
}

/*
 * Order sums must never break. «1 234 567 ₽» is the widest value the storefront
 * prints, and the currency symbol must not wrap onto its own line, so the amount is a
 * single unbreakable unit with tabular digits, the value cells reserve room for it, and
 * the totals block becomes an adaptive column instead of WooCommerce's
 * `float:right;width:48%` (narrower than the label plus the sum). Nothing here sets a
 * fixed width, so a 390px screen keeps the label wrapping and the page free of
 * horizontal scroll.
 */
.woocommerce .cart-collaterals {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	justify-items: end;
}

/* The WooCommerce clearfix pseudo-elements would become grid items here. */
.woocommerce .cart-collaterals::before,
.woocommerce .cart-collaterals::after {
	content: none;
	display: none;
}

.woocommerce .cart-collaterals .cart_totals,
.woocommerce .cart-collaterals .cross-sells {
	float: none;
	width: min(100%, 460px);
	max-width: 100%;
	text-align: left;
}

.woocommerce table.shop_table .amount,
.woocommerce .cart_totals .amount,
.woocommerce-checkout table.shop_table .amount {
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}

.woocommerce table.shop_table td.product-price,
.woocommerce table.shop_table td.product-subtotal,
.woocommerce table.shop_table td.product-total,
.woocommerce-checkout table.shop_table tfoot td {
	min-width: 132px;
}

/*
 * The shared `.quantity` stepper grid is built for the catalogue control with its
 * two buttons; WooCommerce renders a lone input here (cart row, product page),
 * which the grid squeezed into the first 40px column and left an empty box beside.
 * Both places get the same plain field instead: whole sales units, one number.
 */
.woocommerce-cart-form .quantity,
.woocommerce div.product form.cart .quantity {
	display: block;
	width: 100%;
	max-width: 132px;
	height: auto;
	border: 0;
	background: none;
}

.woocommerce-cart-form .quantity {
	margin-left: auto;
}

.woocommerce-cart-form .quantity input.qty,
.woocommerce div.product form.cart .quantity input.qty {
	width: 100%;
	height: var(--cb-control-height);
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius);
	background: var(--cb-surface);
	text-align: center;
	font-weight: 700;
}

.woocommerce form .form-row-first,
.woocommerce form .form-row-last {
	width: 100%;
	float: none;
}

/*
 * Checkout: fields on the left, summary on the right. The summary snippet never
 * exceeds the viewport, so a long order review cannot trap the place-order button
 * off screen. The form itself stays flat; the two cards come from the wrappers.
 */
.cb-checkout-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 380px;
	gap: 24px;
	align-items: start;
}

.cb-checkout-fields {
	display: grid;
	gap: 24px;
	min-width: 0;
	padding: 24px;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.woocommerce-checkout > h3,
.woocommerce-checkout > .woocommerce-info {
	margin-bottom: 18px;
}

.cb-checkout-fields .col2-set {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 24px;
}

.cb-checkout-fields .col2-set .col-1,
.cb-checkout-fields .col2-set .col-2 {
	width: auto;
	float: none;
}

.cb-checkout-summary {
	min-width: 0;
}

.cb-checkout-summary > * {
	position: static;
}

@media (min-width: 1001px) {
	.cb-checkout-summary > * {
		position: sticky;
		top: 20px;
	}
}

.woocommerce-checkout #order_review {
	padding: 24px;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.woocommerce-checkout table.shop_table {
	margin: 0 0 16px;
}

.woocommerce-checkout-payment {
	display: grid;
	gap: 14px;
	margin-top: 16px;
}

.woocommerce-checkout-payment ul.wc_payment_methods,
#payment ul.wc_payment_methods {
	display: grid;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.woocommerce-checkout-payment ul.wc_payment_methods li,
#payment ul.wc_payment_methods li {
	margin: 0;
	padding: 12px 14px;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius);
	background: var(--cb-surface);
}

.woocommerce-checkout-payment ul.wc_payment_methods li label,
#payment ul.wc_payment_methods li label {
	display: flex;
	align-items: center;
	gap: 9px;
	margin: 0;
	font-weight: 700;
	cursor: pointer;
}

.woocommerce-checkout-payment .payment_box,
#payment .payment_box {
	margin: 10px 0 0;
	padding: 12px;
	border-radius: var(--cb-radius);
	background: var(--cb-page);
	color: var(--cb-muted);
	font-size: 13px;
}

.woocommerce-checkout-payment .payment_box::before,
#payment .payment_box::before {
	display: none;
}

.woocommerce-checkout-payment .form-row,
#payment .form-row {
	display: grid;
	gap: 12px;
	justify-items: start;
	margin: 0;
	padding: 0;
}

.woocommerce-terms-and-conditions-wrapper {
	margin-top: 14px;
	font-size: 13px;
}

.woocommerce-privacy-policy-text {
	color: var(--cb-muted);
}

/* Order summary blocks shared by thank-you, order-pay and view-order. */
.woocommerce-order-overview {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
	gap: 14px;
	margin: 0 0 20px;
	padding: 0;
	list-style: none;
}

.woocommerce-order-overview li {
	display: grid;
	gap: 4px;
	margin: 0;
	padding: 16px;
	border-radius: var(--cb-radius);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
	color: var(--cb-muted);
	font-size: 12px;
}

.woocommerce-order-overview li strong {
	color: var(--cb-ink);
	font-size: 15px;
}

.woocommerce-order > p,
.woocommerce-order ul.woocommerce-thankyou-order-details {
	margin-bottom: 20px;
}

.woocommerce-order > section {
	margin-bottom: 24px;
}

.woocommerce-order > section:last-child {
	margin-bottom: 0;
}

.woocommerce-order-details,
.woocommerce-customer-details,
.woocommerce-order-downloads {
	padding: 24px;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.woocommerce-order-details__title,
.woocommerce-column__title,
.woocommerce-order-downloads__title {
	margin: 0 0 14px;
	font-size: 20px;
	font-weight: 400;
}

/* Account
 *
 * `/favs/` is a storefront page, not a WooCommerce endpoint, so it carries the
 * `cb-favorites-account` wrapper instead of the `woocommerce-account` body class and
 * repeats the same shell rules. Every selector below therefore lists both contexts.
 */
.woocommerce-account .woocommerce,
.cb-favorites-account > .woocommerce {
	display: grid;
	grid-template-columns: 245px minmax(0, 1fr);
	gap: 24px;
	align-items: start;
}

.woocommerce-account .woocommerce::before,
.woocommerce-account .woocommerce::after,
.cb-favorites-account > .woocommerce::before,
.cb-favorites-account > .woocommerce::after {
	content: none;
	display: none;
}

body.woocommerce-account .woocommerce > .woocommerce-MyAccount-navigation,
.cb-favorites-account > .woocommerce > .woocommerce-MyAccount-navigation {
	grid-column: 1;
	grid-row: 1;
	float: none;
	width: 100%;
	max-width: none;
	min-width: 0;
}

body.woocommerce-account .woocommerce > .woocommerce-MyAccount-content,
.cb-favorites-account > .woocommerce > .woocommerce-MyAccount-content {
	display: grid;
	grid-column: 2;
	grid-row: 1;
	gap: 20px;
	float: none;
	width: 100%;
	max-width: none;
	min-width: 0;
	padding: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
}

body.woocommerce-account .cb-site-main > .cb-shell > .cb-content-card {
	padding: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
}

.woocommerce-account:not(.logged-in) .woocommerce {
	display: block;
}

.woocommerce-account:not(.logged-in) .cb-account-card {
	width: min(100%, 720px);
	margin-inline: auto;
}

/* Login and register sit side by side inside the card; the card owns the surface,
   so the core form border and padding are dropped. */
.woocommerce-account .cb-account-card .col2-set {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 24px;
}

/*
 * WooCommerce's clearfix pseudo-elements on `.col2-set` become grid items, which
 * shifts the two columns into the wrong cells; the storefront grid drops them.
 */
.cb-account-card .col2-set::before,
.cb-account-card .col2-set::after,
.cb-checkout-fields .col2-set::before,
.cb-checkout-fields .col2-set::after {
	content: none;
	display: none;
}

.woocommerce-account .cb-account-card .col2-set .col-1,
.woocommerce-account .cb-account-card .col2-set .col-2 {
	width: auto;
	float: none;
}

.woocommerce-account .cb-account-card form.login,
.woocommerce-account .cb-account-card form.register {
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
}

/* The lost-password request is an account surface like the login card. */
.woocommerce-account .woocommerce-ResetPassword {
	width: min(100%, 460px);
	margin-inline: auto;
	padding: 24px;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.woocommerce-account .woocommerce-MyAccount-navigation ul,
.cb-favorites-account .woocommerce-MyAccount-navigation ul {
	margin: 0;
	padding: 0;
	overflow: hidden;
	border: 0;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
	list-style: none;
}

.woocommerce-account .woocommerce-MyAccount-navigation li,
.cb-favorites-account .woocommerce-MyAccount-navigation li {
	border-bottom: 1px solid var(--cb-stroke);
}

.woocommerce-account .woocommerce-MyAccount-navigation a,
.cb-favorites-account .woocommerce-MyAccount-navigation a {
	display: block;
	padding: 14px 17px;
	font-weight: 700;
	text-decoration: none;
}

.woocommerce-account .woocommerce-MyAccount-navigation .is-active a,
.woocommerce-account .woocommerce-MyAccount-navigation a[aria-current="page"],
.woocommerce-account .woocommerce-MyAccount-navigation a:hover,
.cb-favorites-account .woocommerce-MyAccount-navigation .is-active a,
.cb-favorites-account .woocommerce-MyAccount-navigation a[aria-current="page"],
.cb-favorites-account .woocommerce-MyAccount-navigation a:hover {
	background: var(--cb-accent);
	color: #fff;
}

.cb-account-card h2 {
	margin: 0 0 14px;
	font-size: 20px;
	font-weight: 400;
}

.cb-account-card > *:last-child {
	margin-bottom: 0;
}

.woocommerce-MyAccount-content form > h2,
.woocommerce-MyAccount-content fieldset legend {
	font-size: 18px;
	font-weight: 700;
}

.woocommerce-MyAccount-content fieldset {
	margin: 20px 0 0;
	padding: 0;
	border: 0;
}

.cb-address-card {
	display: grid;
	gap: 6px;
}

/* Order filter, addresses, downloads and stored payment methods. */
.cb-order-filter {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin: 0 0 18px;
}

.cb-order-filter label {
	font-weight: 700;
}

.cb-order-filter select {
	min-height: var(--cb-control-height);
	padding: 8px 12px;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius);
	background: var(--cb-surface);
}

.woocommerce-Addresses {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 16px;
	margin-top: 18px;
}

.woocommerce-PaymentMethods {
	display: grid;
	gap: 12px;
	margin: 0 0 18px;
	padding: 0;
	list-style: none;
}

.woocommerce-PaymentMethod {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin: 0;
	padding: 16px 18px;
	border-radius: var(--cb-radius);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.woocommerce-PaymentMethod--actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.cb-org-request {
	display: grid;
	gap: 12px;
	max-width: var(--cb-content-max);
}

.cb-org-request label {
	display: block;
	margin-bottom: 6px;
	font-weight: 700;
}

.cb-address-card address {
	font-style: normal;
	line-height: 1.5;
}

.woocommerce-Addresses .woocommerce-Address {
	padding: 20px;
	border-radius: var(--cb-radius);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.woocommerce-Addresses .woocommerce-Address-title {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
}

.woocommerce-Addresses .woocommerce-Address-title h3,
.woocommerce-Addresses .woocommerce-Address-title h2 {
	margin: 0;
	font-size: 18px;
	font-weight: 400;
}

.woocommerce-table--order-downloads,
.woocommerce-table--order-details {
	margin: 0;
}

/* B2B blocks rendered by coalbaltic-b2b */
.cb-b2b-context {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 14px;
	margin-bottom: 18px;
	padding: 14px 18px;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
	font-size: 13px;
}

.cb-b2b-org-switcher {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	margin: 0;
}

.cb-b2b-org-switcher label {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin: 0;
	font-weight: 700;
}

.cb-b2b-org-switcher select {
	min-height: 40px;
	padding: 6px 10px;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius);
	background: var(--cb-surface);
}

.cb-b2b-documents,
.cb-b2b-saved-carts {
	margin-top: 20px;
	padding: 24px;
	border-radius: var(--cb-radius-lg);
	background: var(--cb-surface);
	box-shadow: var(--cb-shadow);
}

.cb-b2b-documents h2,
.cb-b2b-saved-carts h2 {
	margin: 0 0 12px;
	font-size: 20px;
	font-weight: 400;
}

.cb-b2b-documents ul,
.cb-b2b-saved-carts ul {
	display: grid;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cb-b2b-documents li,
.cb-b2b-saved-carts li {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px 14px;
	padding-bottom: 10px;
	border-bottom: 1px solid var(--cb-stroke);
}

.cb-b2b-documents li:last-child,
.cb-b2b-saved-carts li:last-child {
	padding-bottom: 0;
	border-bottom: 0;
}

.cb-b2b-documents a,
.cb-b2b-saved-carts a {
	color: #1487ea;
	font-weight: 700;
	text-decoration: none;
}

.cb-b2b-saved-carts form {
	display: flex;
	flex-wrap: wrap;
	align-items: end;
	gap: 12px;
	margin-bottom: 18px;
}

.cb-b2b-saved-carts form label {
	display: grid;
	gap: 6px;
	min-width: 200px;
}

.cb-b2b-saved-carts form input,
.cb-b2b-saved-carts form select {
	min-height: 40px;
	padding: 6px 10px;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius);
}

.cb-b2b-saved-carts form button {
	min-height: var(--cb-control-height);
	padding: 0 18px;
	border: 0;
	border-radius: var(--cb-radius);
	background: var(--cb-accent);
	color: #fff;
	cursor: pointer;
	font-weight: 700;
}

/* Payment page and order-pay forms */
.cb-payment-page {
	max-width: 760px;
}

.cb-payment-page h2 {
	margin: 0 0 12px;
	font-size: 22px;
	font-weight: 400;
}

.cb-payment-page p {
	margin: 0 0 14px;
}

.cb-payment-verify {
	margin: 0 0 16px;
	padding: 16px;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius);
	background: var(--cb-surface);
}

.cb-payment-verify__order {
	margin: 0;
	font-size: 17px;
	font-weight: 700;
	overflow-wrap: break-word;
}

.cb-payment-form {
	display: grid;
	gap: 14px;
	justify-items: start;
	max-width: 420px;
}

.cb-payment-form__field {
	display: grid;
	gap: 6px;
	width: 100%;
	margin: 0;
}

.cb-payment-form__field label {
	font-weight: 700;
}

.cb-payment-form input[type=text] {
	width: 100%;
	min-height: var(--cb-control-height);
	padding: 9px 12px;
	border: 1px solid var(--cb-stroke);
	border-radius: var(--cb-radius);
	background: var(--cb-surface);
	color: var(--cb-ink);
}

.cb-honeypot {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

@media (max-width: 1000px) {
	.cb-shell {
		width: min(100% - 32px, 1310px);
	}

	.cb-site-header__row {
		flex-wrap: wrap;
		padding: 10px 0;
	}

	.cb-site-search {
		order: 5;
		flex-basis: 100%;
	}

	.cb-menu-toggle {
		display: grid;
		place-items: center;
	}

	.cb-site-nav {
		display: none;
	}

	/*
	 * On a tablet or a phone the drawer is the whole navigation: a full-screen sheet
	 * over the store, the menu stacked vertically, with its own close button on top.
	 */
	.cb-site-nav.is-open {
		position: fixed;
		inset: 0;
		z-index: 70;
		display: block;
		overflow-y: auto;
		background: var(--cb-surface);
	}

	.cb-site-nav__bar {
		position: sticky;
		top: 0;
		z-index: 1;
		display: flex;
		justify-content: flex-end;
		padding: 10px 15px;
		border-bottom: 1px solid var(--cb-stroke);
		background: var(--cb-surface);
	}

	/* A signed-in manager carries the WordPress bar above the sheet. */
	body.admin-bar .cb-site-nav__bar {
		padding-top: 32px;
	}

	.cb-site-nav__close {
		display: grid;
		width: 44px;
		height: 44px;
		place-items: center;
		border: 0;
		border-radius: var(--cb-radius);
		background: #f5f7fa;
		color: var(--cb-ink);
		cursor: pointer;
	}

	.cb-site-nav nav ul {
		display: block;
		overflow: visible;
		min-height: 0;
		gap: 0;
		padding: 6px 0 20px;
	}

	.cb-site-nav nav li {
		border-bottom: 1px solid var(--cb-stroke);
	}

	.cb-site-nav nav a {
		min-height: 56px;
		font-size: 17px;
	}

	.cb-catalog-layout {
		grid-template-columns: 1fr;
	}

	.cb-catalog-sidebar {
		display: none;
	}

	.cb-catalog-filter {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.woocommerce ul.products {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.cb-category-group__children {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.cb-category-group__children > a:nth-child(4n) {
		border-right: 1px solid var(--cb-stroke);
	}

	.cb-category-group__children > a:nth-child(3n) {
		border-right: 0;
	}

	.cb-category-grid {
		grid-template-columns: repeat(3, 1fr);
	}

	.cb-checkout-grid {
		grid-template-columns: 1fr;
	}

	.woocommerce div.product div.images {
		min-height: 320px;
	}

	.woocommerce-account .woocommerce,
	.cb-favorites-account > .woocommerce {
		grid-template-columns: 210px minmax(0, 1fr);
	}
}

@media (max-width: 680px) {
	body {
		font-size: 14px;
	}

	body.admin-bar .cb-site-nav__bar {
		padding-top: 46px;
	}

	.cb-shell {
		width: calc(100% - 28px);
	}

	.cb-site-header__utility-row {
		min-height: 30px;
		gap: 10px;
		overflow: hidden;
		white-space: nowrap;
		font-size: 11px;
	}

	.cb-site-header__utility-row span:nth-child(2),
	.cb-site-header__utility-row a:last-child {
		display: none;
	}

	.cb-site-header__utility-row a:first-of-type {
		margin-left: 0;
	}

	.cb-site-header__row {
		display: grid;
		align-items: center;
		grid-template-columns: 1fr auto auto;
		gap: 8px;
		min-height: 64px;
	}

	.cb-brand {
		grid-column: 1;
		width: 112px;
	}

	.cb-brand img {
		width: 112px;
	}

	/*
	 * The phone header keeps the catalogue shortcut out (the menu carries it) and puts
	 * the menu toggle into the top-right corner, where the whole navigation opens.
	 */
	.cb-catalog-trigger {
		display: none;
	}

	.cb-menu-toggle {
		grid-column: 3;
		grid-row: 1;
		display: grid;
		place-items: center;
		min-width: var(--cb-control-height);
		min-height: var(--cb-control-height);
		border-radius: var(--cb-radius);
	}

	/*
	 * The menu button shares the top row with the three shortcuts: same height, the
	 * same gap, compact squares — one group in the corner instead of its own row.
	 */
	.cb-site-header__actions {
		grid-column: 2;
		grid-row: 1;
		display: flex;
		align-items: center;
		justify-content: flex-end;
		gap: 6px;
	}

	.cb-site-header__actions .cb-header-icon {
		flex: 0 0 auto;
		min-width: var(--cb-control-height);
		min-height: var(--cb-control-height);
		padding: 0 8px;
	}

	.cb-site-header__actions .cb-header-icon span {
		display: none;
	}

	.cb-site-header__row > .cb-site-search {
		grid-column: 1 / 4;
		order: 5;
	}

	.cb-site-main > .cb-shell {
		padding-top: 16px;
		padding-bottom: 18px;
	}

	.cb-page-header__title {
		font-size: 26px;
	}

	.cb-category-grid,
	.cb-trust-grid {
		grid-template-columns: 1fr 1fr;
	}

	.cb-catalog-layout {
		display: block;
		width: calc(100% + 28px);
		margin-left: -14px;
	}

	.cb-shop-header {
		margin: 0;
		padding: 20px 20px 14px;
	}

	.cb-shop-header .page-title {
		font-size: 28px;
		line-height: 1.25;
	}

	.cb-shop-title-row {
		align-items: flex-start;
	}

	.cb-shop-title-row > span {
		padding-top: 4px;
	}

	.cb-catalog-tools {
		min-height: 76px;
		margin: 0;
		padding: 18px 20px;
		border-top: 1px solid var(--cb-stroke);
		border-bottom: 1px solid var(--cb-stroke);
		background: var(--cb-surface);
	}

	.cb-mobile-filter-toggle {
		order: 2;
		display: flex;
		min-height: 42px;
		align-items: center;
		gap: 8px;
		padding: 0 12px;
		border: 0;
		background: var(--cb-surface);
		color: var(--cb-ink);
		font-weight: 700;
	}

	.cb-view-toggle {
		display: none;
	}

	.woocommerce .cb-shop-loop-header .woocommerce-ordering select {
		min-height: 42px;
		max-width: 185px;
	}

	.cb-filter-chips {
		display: flex;
		gap: 10px;
		padding: 20px;
		overflow: auto;
		border-bottom: 1px solid var(--cb-stroke);
		background: var(--cb-surface);
	}

	.cb-filter-chips button {
		flex: 0 0 auto;
		padding: 8px 14px;
		border: 0;
		border-radius: 18px;
		background: #f6f8fb;
		color: var(--cb-ink);
	}

	.cb-filter-drawer {
		position: fixed;
		inset: 0;
		z-index: 60;
		display: none;
		margin: 0;
		padding: 20px;
		overflow: auto;
		border-radius: 0;
	}

	.cb-filter-drawer.is-open {
		display: block;
	}

	.cb-filter-drawer__head {
		display: flex;
		align-items: center;
		justify-content: space-between;
		margin-bottom: 20px;
		font-size: 20px;
	}

	.cb-filter-drawer__head button {
		width: 40px;
		height: 40px;
		border: 0;
		background: transparent;
		font-size: 28px;
	}

	.cb-catalog-filter {
		grid-template-columns: 1fr;
		gap: 16px;
	}

	.cb-catalog-layout .cb-empty-state {
		margin-inline: 14px;
	}

	.cb-category-groups {
		gap: 10px;
	}

	.cb-category-group {
		border-radius: 0;
	}

	.cb-category-group__main {
		min-height: 0;
		grid-template-columns: 100px minmax(0, 1fr);
		gap: 14px;
		padding: 18px 20px;
	}

	.cb-category-group__image {
		height: 90px;
	}

	.cb-category-group__copy h2 {
		font-size: 18px;
	}

	.cb-category-group__copy p {
		font-size: 11px;
	}

	.cb-category-group__price {
		grid-column: 2;
		padding: 0;
		font-size: 15px;
	}

	.cb-category-group__children {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.cb-category-group__children > a,
	.cb-category-group__children > a:nth-child(3n),
	.cb-category-group__children > a:nth-child(4n) {
		border-right: 1px solid var(--cb-stroke);
	}

	.cb-category-group__children > a:nth-child(2n) {
		border-right: 0;
	}

	.woocommerce ul.products {
		grid-template-columns: 1fr;
	}

	.woocommerce ul.products li.product.cb-product-card {
		padding: 20px 18px;
		border-right: 0;
	}

	.cb-product-card__media {
		aspect-ratio: 4 / 3;
	}

	/*
	 * One card per row on phones: nothing has to line up with a neighbour, so the
	 * reserved two-line title slot and the three-row facts slot (and the empty rating
	 * row above the price) are dropped; the block order stays the same.
	 */
	.cb-product-card__title {
		min-height: 0 !important;
	}

	.cb-product-card__facts {
		min-height: 0;
	}

	.cb-product-card__rating {
		min-height: 0;
	}

	/* List mode stays denser than the grid on small screens. */
	.woocommerce ul.products.cb-list-view li.product.cb-product-card {
		grid-template-columns: 118px minmax(0, 1fr);
		gap: 16px;
		padding: 16px 18px;
	}

	.cb-list-view .cb-product-card__media {
		width: 118px;
		aspect-ratio: 1 / 1;
		grid-row: 1 / 3;
	}

	.cb-list-view .cb-favorite-toggle {
		top: 14px;
		right: 14px;
		left: auto;
	}

	.cb-list-view .cb-product-card__body {
		display: grid;
		grid-column: 2;
		grid-template-columns: minmax(0, 1fr);
		grid-template-rows: auto auto auto;
		row-gap: 8px;
	}

	.cb-list-view .cb-product-card__title,
	.cb-list-view .cb-product-card__facts,
	.cb-list-view .cb-product-card__info,
	.cb-list-view .cb-product-card__buy {
		grid-column: 1;
		grid-row: auto;
	}

	.cb-list-view .cb-product-card__facts {
		display: none;
	}

	.cb-list-view .cb-product-card__info {
		display: block;
		margin-top: 0;
	}

	.cb-list-view .cb-add-form {
		grid-template-columns: 1fr;
	}

	.woocommerce div.product .woocommerce-tabs,
	.woocommerce div.product .related,
	.woocommerce div.product .up-sells,
	.cb-product-tabs,
	.cb-b2b-documents,
	.cb-b2b-saved-carts,
	.woocommerce-checkout #order_review,
	.woocommerce-order-details,
	.woocommerce-customer-details,
	.woocommerce-order-downloads,
	.woocommerce #reviews #review_form_wrapper {
		padding: 18px;
	}

	.woocommerce div.product div.images {
		min-height: 260px;
		padding: 14px;
	}

	.woocommerce div.product .product_title {
		font-size: 26px;
	}

	.cb-surface,
	.cb-content-card,
	.cb-account-card,
	.cb-order-card,
	.cb-empty-state,
	.woocommerce-cart-form,
	.woocommerce .cart-collaterals,
	.woocommerce-checkout,
	.woocommerce-account .woocommerce-MyAccount-content {
		padding: 17px;
	}

	/* Cart and order tables become labelled rows instead of horizontal scroll. */
	.woocommerce table.shop_table_responsive thead {
		display: none;
	}

	.woocommerce table.shop_table_responsive tr {
		display: block;
		padding: 12px 0;
		border-bottom: 1px solid var(--cb-stroke);
	}

	.woocommerce table.shop_table_responsive tr:last-child {
		border-bottom: 0;
	}

	.woocommerce table.shop_table_responsive td {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 14px;
		padding: 6px 0;
		border: 0;
		text-align: right;
	}

	.woocommerce table.shop_table_responsive td::before {
		color: var(--cb-muted);
		content: attr(data-title);
		font-weight: 700;
		text-align: left;
		/* The label shrinks and wraps; the sum next to it keeps its full width. */
		flex: 0 1 auto;
		min-width: 0;
	}

	.woocommerce table.shop_table_responsive td.product-remove::before,
	.woocommerce table.shop_table_responsive td.product-thumbnail::before,
	.woocommerce table.shop_table_responsive td.product-name::before,
	.woocommerce table.shop_table_responsive td.actions::before,
	.woocommerce table.shop_table_responsive td[data-title=""]::before {
		display: none;
	}

	.woocommerce table.shop_table_responsive td.product-remove,
	.woocommerce table.shop_table_responsive td.product-name,
	.woocommerce table.shop_table_responsive td.actions {
		display: block;
		text-align: left;
	}

	.woocommerce table.shop_table_responsive td.actions .button {
		width: 100%;
	}

	.cb-checkout-fields .col2-set {
		grid-template-columns: 1fr;
	}

	.cb-payment-page {
		max-width: none;
	}

	.cb-payment-form {
		max-width: none;
		width: 100%;
	}

	.cb-payment-form .cb-button,
	.woocommerce-checkout-payment #place_order,
	#payment #place_order,
	.cb-checkout-grid .cb-button {
		width: 100%;
	}

	.cb-b2b-saved-carts form {
		display: grid;
	}

	.cb-b2b-saved-carts form label,
	.cb-b2b-saved-carts form button {
		width: 100%;
	}

	.cb-site-footer__grid {
		grid-template-columns: 1fr 1fr;
		gap: 24px 15px;
		padding-bottom: 26px;
	}

	.cb-site-footer__bottom {
		display: grid;
		gap: 6px;
		padding-bottom: 12px;
	}


	.woocommerce-account .woocommerce,
	.cb-favorites-account > .woocommerce {
		display: block;
	}

	.woocommerce-account .woocommerce-MyAccount-navigation,
	.cb-favorites-account .woocommerce-MyAccount-navigation {
		margin-bottom: 15px;
	}

	.woocommerce-account .woocommerce-MyAccount-navigation ul,
	.cb-favorites-account .woocommerce-MyAccount-navigation ul {
		display: flex;
		overflow: auto;
	}

	.woocommerce-account .woocommerce-MyAccount-navigation li,
	.cb-favorites-account .woocommerce-MyAccount-navigation li {
		flex: 0 0 auto;
		border: 0;
	}

	.woocommerce-account .woocommerce-MyAccount-navigation a,
	.cb-favorites-account .woocommerce-MyAccount-navigation a {
		padding: 10px 12px;
		font-size: 12px;
	}

	.cb-news-card {
		padding: 18px;
	}

	.cb-site-footer__grid img {
		width: 120px;
	}
}
