/**
 * PhoenixB2B v2.2 — warstwa sklepu B2B nad WooCommerce.
 *
 * Topbar, wyszukiwarka, breadcrumbs, strony kategorii, globalny quick order,
 * pełna responsywność (mobilne filtry, sticky bar, karty, tryb tabeli, search).
 *
 * Tokeny lokalne (jasny motyw); spójne z assets/css/shop.css.
 */

:root {
	--pb2b-v22-bg: #ffffff;
	--pb2b-v22-bg-2: #f8fafc;
	--pb2b-v22-text: #0f172a;
	--pb2b-v22-soft: #334155;
	--pb2b-v22-muted: #64748b;
	--pb2b-v22-border: #e2e8f0;
	--pb2b-v22-primary: #7c3aed;
	--pb2b-v22-primary-ink: #ffffff;
	--pb2b-v22-success: #16a34a;
	--pb2b-v22-danger: #dc2626;
	--pb2b-v22-radius: 12px;
	--pb2b-v22-radius-sm: 9px;
	--pb2b-v22-shadow: 0 1px 3px rgba(15, 23, 42, .08);
	--pb2b-v22-shadow-lg: 0 12px 32px rgba(15, 23, 42, .16);
}

.pb2b-topbar *,
.pb2b-search *,
.pb2b-category *,
.pb2b-category-index *,
.pb2b-breadcrumbs *,
.pb2b-gqo * { box-sizing: border-box; }

/* =====================================================================
 * Sticky topbar.
 * ===================================================================== */
.pb2b-topbar {
	position: sticky;
	top: 0;
	z-index: 9000;
	background: var(--pb2b-v22-bg);
	border-bottom: 1px solid var(--pb2b-v22-border);
	font-size: 14px;
	color: var(--pb2b-v22-text);
}
.pb2b-topbar.pb2b-topbar-scrolled { box-shadow: var(--pb2b-v22-shadow); }
.pb2b-topbar-inner {
	display: flex;
	align-items: center;
	gap: 16px;
	max-width: 1280px;
	margin: 0 auto;
	padding: 10px 16px;
}
.pb2b-topbar-brand {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-weight: 700;
	color: var(--pb2b-v22-text);
	text-decoration: none;
	white-space: nowrap;
}
.pb2b-topbar-brand:hover { color: var(--pb2b-v22-primary); }
.pb2b-topbar-search { flex: 1 1 auto; min-width: 0; }
.pb2b-topbar-actions { display: flex; align-items: center; gap: 4px; }
.pb2b-topbar-btn {
	display: inline-flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
	padding: 6px 10px;
	border: 0;
	background: transparent;
	color: var(--pb2b-v22-soft);
	text-decoration: none;
	border-radius: var(--pb2b-v22-radius-sm);
	cursor: pointer;
	font-size: 11px;
	position: relative;
	transition: background .15s, color .15s;
}
.pb2b-topbar-btn:hover { background: var(--pb2b-v22-bg-2); color: var(--pb2b-v22-primary); }
.pb2b-topbar-btn-label { line-height: 1; }
.pb2b-topbar-cart-count {
	position: absolute;
	top: 0;
	right: 4px;
	min-width: 16px;
	height: 16px;
	padding: 0 4px;
	border-radius: 9px;
	background: var(--pb2b-v22-primary);
	color: var(--pb2b-v22-primary-ink);
	font-size: 10px;
	line-height: 16px;
	text-align: center;
	font-weight: 700;
}
.pb2b-topbar-qo-panel {
	border-top: 1px solid var(--pb2b-v22-border);
	background: var(--pb2b-v22-bg-2);
	padding: 16px;
}
.pb2b-topbar-qo-panel .pb2b-gqo { max-width: 1280px; margin: 0 auto; }

/* =====================================================================
 * Wyszukiwarka + autouzupełnianie.
 * ===================================================================== */
.pb2b-search { position: relative; width: 100%; }
.pb2b-search-box {
	display: flex;
	align-items: center;
	gap: 8px;
	background: var(--pb2b-v22-bg);
	border: 1px solid var(--pb2b-v22-border);
	border-radius: 999px;
	padding: 6px 12px;
}
.pb2b-search-box:focus-within {
	border-color: var(--pb2b-v22-primary);
	box-shadow: 0 0 0 3px rgba(124, 58, 237, .12);
}
.pb2b-search-icon { color: var(--pb2b-v22-muted); flex: 0 0 auto; }
.pb2b-search-input {
	flex: 1 1 auto;
	border: 0;
	outline: 0;
	background: transparent;
	font-size: 14px;
	color: var(--pb2b-v22-text);
	min-width: 0;
}
.pb2b-search-clear {
	border: 0;
	background: transparent;
	color: var(--pb2b-v22-muted);
	font-size: 20px;
	line-height: 1;
	cursor: pointer;
	padding: 0 4px;
}
.pb2b-search-dropdown {
	position: absolute;
	top: calc(100% + 6px);
	left: 0;
	right: 0;
	background: var(--pb2b-v22-bg);
	border: 1px solid var(--pb2b-v22-border);
	border-radius: var(--pb2b-v22-radius);
	box-shadow: var(--pb2b-v22-shadow-lg);
	max-height: 70vh;
	overflow: auto;
	z-index: 9500;
	padding: 6px;
}
.pb2b-search-loading,
.pb2b-search-empty { padding: 14px 12px; color: var(--pb2b-v22-muted); }
.pb2b-search-group { padding: 4px 0; }
.pb2b-search-group + .pb2b-search-group { border-top: 1px solid var(--pb2b-v22-border); }
.pb2b-search-group-title {
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .04em;
	color: var(--pb2b-v22-muted);
	padding: 6px 10px 2px;
}
.pb2b-search-term {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 4px 6px 0 0;
	padding: 5px 10px;
	background: var(--pb2b-v22-bg-2);
	border-radius: 999px;
	color: var(--pb2b-v22-soft);
	text-decoration: none;
	font-size: 13px;
}
.pb2b-search-term:hover { background: rgba(124, 58, 237, .1); color: var(--pb2b-v22-primary); }
.pb2b-search-term-ico { color: var(--pb2b-v22-muted); }
.pb2b-search-result {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 8px 10px;
	border-radius: var(--pb2b-v22-radius-sm);
	text-decoration: none;
	color: var(--pb2b-v22-text);
}
.pb2b-search-result:hover { background: var(--pb2b-v22-bg-2); }
.pb2b-search-result-img {
	flex: 0 0 auto;
	width: 44px;
	height: 44px;
	border-radius: 8px;
	overflow: hidden;
	background: var(--pb2b-v22-bg-2);
	display: flex;
	align-items: center;
	justify-content: center;
}
.pb2b-search-result-img img { width: 100%; height: 100%; object-fit: cover; }
.pb2b-search-result-info { flex: 1 1 auto; min-width: 0; }
.pb2b-search-result-name {
	display: block;
	font-weight: 600;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.pb2b-search-result-meta {
	display: flex;
	gap: 10px;
	align-items: center;
	font-size: 12px;
	color: var(--pb2b-v22-muted);
}
.pb2b-search-result-price { flex: 0 0 auto; text-align: right; font-size: 13px; }
.pb2b-search-result-cta { color: var(--pb2b-v22-muted); }
.pb2b-search-all {
	display: block;
	text-align: center;
	padding: 10px;
	margin-top: 4px;
	font-weight: 600;
	color: var(--pb2b-v22-primary);
	text-decoration: none;
	border-top: 1px solid var(--pb2b-v22-border);
}
.pb2b-search-all:hover { background: var(--pb2b-v22-bg-2); }

/* =====================================================================
 * Breadcrumbs.
 * ===================================================================== */
.pb2b-breadcrumbs { margin: 0 0 16px; font-size: 13px; }
.pb2b-breadcrumbs-list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	list-style: none;
	margin: 0;
	padding: 0;
}
.pb2b-breadcrumbs-link { color: var(--pb2b-v22-muted); text-decoration: none; }
.pb2b-breadcrumbs-link:hover { color: var(--pb2b-v22-primary); }
.pb2b-breadcrumbs-current { color: var(--pb2b-v22-text); font-weight: 600; }
.pb2b-breadcrumbs-sep { color: var(--pb2b-v22-muted); }

/* =====================================================================
 * Strony kategorii.
 * ===================================================================== */
.pb2b-category { font-size: 14px; color: var(--pb2b-v22-text); }
.pb2b-category-banner {
	border-radius: var(--pb2b-v22-radius);
	background: var(--pb2b-v22-bg-2);
	padding: 28px;
	margin-bottom: 20px;
	background-size: cover;
	background-position: center;
}
.pb2b-category-banner.has-image { color: #fff; }
.pb2b-category-banner-inner { max-width: 720px; }
.pb2b-category-title { margin: 0 0 6px; font-size: 28px; line-height: 1.2; }
.pb2b-category-count { font-size: 13px; opacity: .85; margin-bottom: 10px; }
.pb2b-category-desc { font-size: 14px; line-height: 1.6; }
.pb2b-category-banner.has-image .pb2b-category-desc a { color: #fff; text-decoration: underline; }

.pb2b-category-subcats {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-bottom: 20px;
}
.pb2b-category-subcat {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 12px;
	background: var(--pb2b-v22-bg);
	border: 1px solid var(--pb2b-v22-border);
	border-radius: 999px;
	text-decoration: none;
	color: var(--pb2b-v22-soft);
	font-weight: 500;
}
.pb2b-category-subcat:hover { border-color: var(--pb2b-v22-primary); color: var(--pb2b-v22-primary); }
.pb2b-category-subcat-img {
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background-size: cover;
	background-position: center;
}
.pb2b-category-subcat-count {
	background: var(--pb2b-v22-bg-2);
	border-radius: 999px;
	padding: 0 8px;
	font-size: 12px;
	color: var(--pb2b-v22-muted);
}

/* Indeks kategorii (kafelki). */
.pb2b-category-index-title { margin: 0 0 16px; font-size: 24px; }
.pb2b-category-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
	gap: 16px;
}
.pb2b-category-tile {
	display: flex;
	flex-direction: column;
	border: 1px solid var(--pb2b-v22-border);
	border-radius: var(--pb2b-v22-radius);
	overflow: hidden;
	text-decoration: none;
	color: var(--pb2b-v22-text);
	background: var(--pb2b-v22-bg);
	transition: box-shadow .15s, transform .15s;
}
.pb2b-category-tile:hover { box-shadow: var(--pb2b-v22-shadow-lg); transform: translateY(-2px); }
.pb2b-category-tile-media {
	height: 120px;
	background: var(--pb2b-v22-bg-2);
	background-size: cover;
	background-position: center;
}
.pb2b-category-tile-body { padding: 12px 14px; }
.pb2b-category-tile-name { display: block; font-weight: 600; }
.pb2b-category-tile-count { display: block; font-size: 12px; color: var(--pb2b-v22-muted); margin-top: 2px; }

/* =====================================================================
 * Globalny quick order.
 * ===================================================================== */
.pb2b-gqo { font-size: 14px; color: var(--pb2b-v22-text); }
.pb2b-gqo-head { margin-bottom: 12px; }
.pb2b-gqo-title { margin: 0 0 2px; font-size: 18px; }
.pb2b-gqo-sub { margin: 0; font-size: 13px; color: var(--pb2b-v22-muted); }
.pb2b-gqo-locked {
	padding: 16px;
	background: var(--pb2b-v22-bg-2);
	border-radius: var(--pb2b-v22-radius-sm);
	text-align: center;
}
.pb2b-gqo-rows { display: flex; flex-direction: column; gap: 6px; }
.pb2b-gqo-row {
	display: grid;
	grid-template-columns: 180px 1fr 90px 36px;
	gap: 10px;
	align-items: center;
}
.pb2b-gqo-row-head {
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .04em;
	color: var(--pb2b-v22-muted);
}
.pb2b-gqo-row.is-found .pb2b-gqo-col-sku input { border-color: var(--pb2b-v22-success); }
.pb2b-gqo-row.is-error .pb2b-gqo-col-sku input { border-color: var(--pb2b-v22-danger); }
.pb2b-gqo-col-name { font-size: 13px; min-width: 0; }
.pb2b-gqo-name-found { font-weight: 600; }
.pb2b-gqo-name-price { margin-left: 8px; color: var(--pb2b-v22-soft); }
.pb2b-gqo-name-error { color: var(--pb2b-v22-danger); }
.pb2b-gqo .pb2b-shop-input { width: 100%; padding: 8px 10px; border: 1px solid var(--pb2b-v22-border); border-radius: 8px; }
.pb2b-gqo-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.pb2b-gqo-csv { margin-top: 12px; padding: 12px; background: var(--pb2b-v22-bg-2); border-radius: var(--pb2b-v22-radius-sm); }
.pb2b-gqo-csv-label { display: block; font-size: 13px; margin-bottom: 6px; }
.pb2b-gqo-csv-area { width: 100%; border: 1px solid var(--pb2b-v22-border); border-radius: 8px; padding: 8px; font-family: monospace; font-size: 13px; }
.pb2b-gqo-csv-row { display: flex; gap: 10px; align-items: center; margin-top: 8px; flex-wrap: wrap; }
.pb2b-gqo-feedback { margin-top: 10px; font-size: 13px; }
.pb2b-gqo-ok { color: var(--pb2b-v22-success); font-weight: 600; }
.pb2b-gqo-err { color: var(--pb2b-v22-danger); font-weight: 600; }

/* =====================================================================
 * Mobilny przełącznik filtrów Sklepu B2B.
 * ===================================================================== */
.pb2b-shop-filters-toggle { display: none; }

/* Długie listy filtrów (atrybuty, marki) — przewijane. */
.pb2b-shop-checks-scroll { max-height: 220px; overflow: auto; padding-right: 4px; }

/* =====================================================================
 * RESPONSYWNOŚĆ.
 * ===================================================================== */
@media (max-width: 1024px) {
	.pb2b-gqo-row { grid-template-columns: 150px 1fr 80px 32px; }
}

@media (max-width: 782px) {
	/* Topbar — kompaktowy, etykiety ukryte, scroll poziomy akcji. */
	.pb2b-topbar-inner { flex-wrap: wrap; gap: 10px; padding: 8px 12px; }
	.pb2b-topbar-brand span { display: none; }
	.pb2b-topbar-search { order: 3; flex-basis: 100%; }
	.pb2b-topbar-actions { order: 2; margin-left: auto; }
	.pb2b-topbar-btn-label { display: none; }
	.pb2b-topbar-btn { padding: 8px; }

	/* Wyszukiwarka — dropdown pełnej szerokości. */
	.pb2b-search-dropdown { position: fixed; left: 8px; right: 8px; top: auto; max-height: 60vh; }

	/* Filtry jako wysuwany panel (drawer). */
	.pb2b-shop-filters-toggle { display: inline-flex; }
	.pb2b-shop .pb2b-shop-layout { display: block; }
	.pb2b-shop-filters {
		position: fixed;
		top: 0;
		left: 0;
		bottom: 0;
		width: 86%;
		max-width: 340px;
		background: var(--pb2b-v22-bg);
		z-index: 9999;
		transform: translateX(-105%);
		transition: transform .25s ease;
		overflow: auto;
		box-shadow: var(--pb2b-v22-shadow-lg);
		padding: 16px;
	}
	.pb2b-shop-filters.is-open { transform: translateX(0); }
	body.pb2b-filters-locked { overflow: hidden; }
	body.pb2b-filters-locked::after {
		content: "";
		position: fixed;
		inset: 0;
		background: rgba(15, 23, 42, .45);
		z-index: 9998;
	}

	/* Karty produktów — jedna/dwie kolumny. */
	.pb2b-shop-grid { grid-template-columns: repeat(2, 1fr) !important; }

	/* Tabela hurtowa → tryb „kart" na mobile. */
	.pb2b-shop-table thead { display: none; }
	.pb2b-shop-table,
	.pb2b-shop-table tbody,
	.pb2b-shop-table tr,
	.pb2b-shop-table td { display: block; width: 100%; }
	.pb2b-shop-table tr {
		border: 1px solid var(--pb2b-v22-border);
		border-radius: var(--pb2b-v22-radius-sm);
		margin-bottom: 10px;
		padding: 8px;
	}
	.pb2b-shop-table td {
		display: flex;
		justify-content: space-between;
		align-items: center;
		gap: 12px;
		border: 0;
		padding: 6px 4px;
		text-align: right;
	}
	.pb2b-shop-table td::before {
		content: attr(data-label);
		font-size: 12px;
		font-weight: 600;
		color: var(--pb2b-v22-muted);
		text-align: left;
	}

	/* Quick order — układ pionowy. */
	.pb2b-gqo-row { grid-template-columns: 1fr 70px 32px; grid-template-areas: "sku qty x" "name name name"; }
	.pb2b-gqo-row-head { display: none; }
	.pb2b-gqo-col-sku { grid-area: sku; }
	.pb2b-gqo-col-qty { grid-area: qty; }
	.pb2b-gqo-col-x { grid-area: x; }
	.pb2b-gqo-col-name { grid-area: name; }

	/* Category banner mniejszy. */
	.pb2b-category-banner { padding: 18px; }
	.pb2b-category-title { font-size: 22px; }
	.pb2b-category-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px; }
}

@media (max-width: 480px) {
	/* Legacy grid (stary kafelek listowy) zostaje 1-kolumnowy.
	 * Nowy kafelek premium (.pb2b-card-grid) trzyma 2 kolumny na mobile
	 * wg reguł w product-card.css (1 kolumna dopiero < 360px). */
	.pb2b-shop-grid:not(.pb2b-card-grid) { grid-template-columns: 1fr !important; }
}

/* =====================================================================
 * NEW v2.8.13 — PREMIUM podstrona kategorii B2B (.pb2b-category-page).
 * Scope wyłącznie do .pb2b-category-page — bez wpływu na motyw.
 * Produkty/filtry/paginacja pochodzą z osadzonego [phoenix_b2b_shop],
 * więc tutaj stylujemy tylko hero, podkategorie i sekcje.
 * ===================================================================== */
.pb2b-category-page {
	/* 2.11.27 (pkt 8) — czyste, jasne tło zamiast szarości (spójnie z podstroną
	   produktu, 2.11.25). Karty/hero zachowują definicję dzięki ramce + cieniowi,
	   więc „full section" bez przypadkowych szarych marginesów. */
	background: #ffffff;
	color: var(--pb2b-v22-text);
	font-size: 14px;
}
.pb2b-category-page *,
.pb2b-category-page *::before,
.pb2b-category-page *::after { box-sizing: border-box; }
.pb2b-category-container {
	max-width: 1500px;
	margin: 0 auto;
	/* v2.8.16 — oddech od headera zgodny z briefem (desktop 70–80px),
	   spójnie ze .pb2b-shop-shell. */
	padding: 72px 24px 80px;
}
.pb2b-category-section-title {
	margin: 0 0 14px;
	font-size: 18px;
	line-height: 1.25;
	font-weight: 700;
	color: var(--pb2b-v22-text);
}

/* --- HERO --- */
.pb2b-category-hero {
	position: relative;
	border: 1px solid var(--pb2b-v22-border);
	border-radius: 18px;
	background: linear-gradient(135deg, #faf5ff 0%, #f8fafc 60%, #ffffff 100%);
	padding: 38px 40px;
	margin: 14px 0 26px;
	background-size: cover;
	background-position: center;
	overflow: hidden;
}
.pb2b-category-hero.has-image { color: #fff; border-color: transparent; }
.pb2b-category-hero-inner { position: relative; max-width: 760px; }
.pb2b-category-hero-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 54px;
	height: 54px;
	border-radius: 14px;
	background: rgba(124, 58, 237, .10);
	color: var(--pb2b-v22-primary);
	margin-bottom: 14px;
}
.pb2b-category-hero-title {
	margin: 0 0 10px;
	font-size: 34px;
	line-height: 1.12;
	font-weight: 800;
	letter-spacing: -.01em;
}
.pb2b-category-hero-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin-bottom: 14px;
}
.pb2b-category-hero-count {
	display: inline-block;
	font-size: 13px;
	font-weight: 600;
	padding: 4px 12px;
	border-radius: 999px;
	background: rgba(124, 58, 237, .10);
	color: var(--pb2b-v22-primary);
}
.pb2b-category-hero-subcount {
	display: inline-block;
	font-size: 13px;
	font-weight: 600;
	padding: 4px 12px;
	border-radius: 999px;
	background: rgba(15, 23, 42, .06);
	color: var(--pb2b-v22-soft);
}
.pb2b-category-hero-dot { color: var(--pb2b-v22-muted); font-weight: 700; }
.pb2b-category-hero.has-image .pb2b-category-hero-count {
	background: rgba(255, 255, 255, .18);
	color: #fff;
}
.pb2b-category-hero.has-image .pb2b-category-hero-subcount {
	background: rgba(255, 255, 255, .12);
	color: rgba(255, 255, 255, .92);
}
.pb2b-category-hero.has-image .pb2b-category-hero-dot { color: rgba(255, 255, 255, .6); }
.pb2b-category-hero-desc { font-size: 15px; line-height: 1.65; color: var(--pb2b-v22-soft); margin-bottom: 18px; }
.pb2b-category-hero-desc p:last-child { margin-bottom: 0; }
.pb2b-category-hero.has-image .pb2b-category-hero-desc { color: rgba(255, 255, 255, .92); }
.pb2b-category-hero.has-image .pb2b-category-hero-desc a { color: #fff; text-decoration: underline; }
.pb2b-category-hero-actions { margin-top: 4px; }

/* --- PODKATEGORIE (karty) --- */
.pb2b-category-subcats-block { margin: 0 0 30px; }
.pb2b-category-subcats-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 14px;
}
.pb2b-category-subcat-card {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px 14px;
	border: 1px solid var(--pb2b-v22-border);
	border-radius: var(--pb2b-v22-radius);
	background: var(--pb2b-v22-bg);
	text-decoration: none;
	color: var(--pb2b-v22-text);
	/* 2.11.27 — delikatny cień spoczynkowy: karty nie wyglądają „słabo"/płasko
	   na jasnym tle, ale layout pozostaje lekki. */
	box-shadow: 0 1px 2px rgba(15, 23, 42, .05), 0 2px 6px rgba(15, 23, 42, .04);
	transition: box-shadow .16s ease, transform .16s ease, border-color .16s ease;
}
.pb2b-category-subcat-card:hover {
	box-shadow: var(--pb2b-v22-shadow-lg);
	transform: translateY(-3px);
	border-color: #cbd5e1;
}
.pb2b-category-subcat-media {
	flex: 0 0 auto;
	width: 46px;
	height: 46px;
	border-radius: 10px;
	background: var(--pb2b-v22-bg-2);
	background-size: cover;
	background-position: center;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--pb2b-v22-muted);
}
.pb2b-category-subcat-media.has-image { color: transparent; }
.pb2b-category-subcat-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.pb2b-category-subcat-name {
	font-weight: 700; font-size: 14px; line-height: 1.25;
	/* 2.11.27 — tytuł podkategorii zawija się do 2 linii zamiast urywać się
	   wielokropkiem („Części i …", „Narzędz…"). */
	white-space: normal;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	overflow-wrap: anywhere;
}
.pb2b-category-subcat-count {
	font-size: 11.5px; color: var(--pb2b-v22-muted);
	/* 2.11.27 — licznik produktów zawsze w jednej linii (koniec nachodzących
	   pigułek „40 produktów"); zwarta pigułka dopasowana do treści. */
	align-self: flex-start;
	max-width: 100%;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	padding: 1px 8px;
}
.pb2b-category-subcat-arrow { flex: 0 0 auto; align-self: center; color: var(--pb2b-v22-muted); transition: transform .16s ease, color .16s ease; }
.pb2b-category-subcat-card:hover .pb2b-category-subcat-arrow { transform: translateX(4px); color: var(--pb2b-v22-primary); }

/* --- KATALOG osadzony --- */
.pb2b-category-catalog { scroll-margin-top: 80px; }
/* Osadzony [phoenix_b2b_shop] przynosi własny .pb2b-shop-shell/.pb2b-shop-container.
   Wewnątrz strony kategorii zerujemy jego zewnętrzny padding, bo kontener
   .pb2b-category-container już go zapewnia. */
.pb2b-category-catalog .pb2b-shop-shell { padding: 0; }
.pb2b-category-catalog .pb2b-shop-container { max-width: none; padding: 0; }

/* --- SEKCJE POLECANE --- */
.pb2b-category-featured { margin-top: 34px; padding-top: 8px; border-top: 1px solid var(--pb2b-v22-border); }

/* --- Parent bez siatki: CTA „Przeglądaj wszystkie produkty" --- */
.pb2b-category-browse-all { margin: 6px 0 4px; }
.pb2b-category-browse-all .pb2b-shop-btn { display: inline-flex; }

/* --- RESPONSYWNOŚĆ --- */
@media (max-width: 1024px) {
	.pb2b-category-container { padding: 52px 24px 64px; }
	.pb2b-category-subcats-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.pb2b-category-hero-title { font-size: 28px; }
}
@media (max-width: 768px) {
	.pb2b-category-container { padding: 36px 16px 56px; }
	.pb2b-category-hero { padding: 26px 22px; border-radius: 14px; }
	.pb2b-category-hero-title { font-size: 24px; }
	.pb2b-category-subcats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 480px) {
	.pb2b-category-subcats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
	.pb2b-category-subcat-media { width: 38px; height: 38px; }
}
/* v2.8.18 — bardzo małe ekrany: 1 podkategoria w rzędzie (zgodnie z briefem <360). */
@media (max-width: 360px) {
	.pb2b-category-subcats-grid { grid-template-columns: 1fr; }
}

/* =====================================================================
 * NEW v2.8.16 — PREMIUM WYNIKI WYSZUKIWANIA B2B (.pb2b-search-shell).
 * Część 3. Ten sam silnik katalogu co Sklep B2B (osadzony [phoenix_b2b_shop]).
 * Tutaj stylujemy wyłącznie shell, kontener i hero — produkty/filtry/paginacja
 * pochodzą z product-card.css / shop.css.
 * ===================================================================== */
.pb2b-search-shell {
	background: #ffffff;
	color: var(--pb2b-v22-text);
	font-size: 14px;
	/* Oddech od headera spójny z kategorią i sklepem. */
	padding: 72px 0 80px;
}
.pb2b-search-shell *,
.pb2b-search-shell *::before,
.pb2b-search-shell *::after { box-sizing: border-box; }
.pb2b-search-container {
	max-width: 1500px;
	margin: 0 auto;
	padding: 0 24px;
}

/* Osadzony [phoenix_b2b_shop] przynosi własny .pb2b-shop-shell/.pb2b-shop-container.
   W obrębie strony wyników zerujemy jego zewnętrzny padding/tło/max-width, bo
   .pb2b-search-shell + .pb2b-search-container już je zapewniają (brak podwójnych
   odstępów i zagnieżdżonych kontenerów). */
.pb2b-search-results-wrap .pb2b-shop-shell {
	padding: 0;
	background: transparent;
}
.pb2b-search-results-wrap .pb2b-shop-container {
	max-width: none;
	padding: 0;
}

/* --- HERO wyszukiwania --- */
.pb2b-search-hero {
	position: relative;
	border: 1px solid var(--pb2b-v22-border);
	border-radius: 18px;
	background: linear-gradient(135deg, #faf5ff 0%, #f8fafc 60%, #ffffff 100%);
	padding: 30px 34px;
	margin: 0 0 22px;
	overflow: hidden;
}
.pb2b-search-hero-inner {
	display: flex;
	flex-direction: column;
	gap: 8px;
	max-width: 880px;
}
.pb2b-search-hero-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 50px;
	height: 50px;
	border-radius: 14px;
	background: rgba(124, 58, 237, .10);
	color: var(--pb2b-v22-primary);
	margin-bottom: 4px;
}
.pb2b-search-hero-title {
	margin: 0;
	font-size: 30px;
	line-height: 1.15;
	font-weight: 800;
	letter-spacing: -.01em;
	color: var(--pb2b-v22-text);
}
.pb2b-search-hero-term {
	color: var(--pb2b-v22-primary);
	font-weight: 800;
}
.pb2b-search-hero-sub {
	margin: 0;
	font-size: 14px;
	line-height: 1.6;
	color: var(--pb2b-v22-muted);
}

@media (max-width: 1024px) {
	.pb2b-search-shell { padding: 52px 0 64px; }
	.pb2b-search-hero-title { font-size: 26px; }
}
@media (max-width: 768px) {
	.pb2b-search-shell { padding: 36px 0 56px; }
	.pb2b-search-container { padding: 0 16px; }
	.pb2b-search-hero { padding: 22px 20px; border-radius: 14px; }
	.pb2b-search-hero-title { font-size: 22px; }
	.pb2b-search-hero-icon { width: 42px; height: 42px; }
}

/* =====================================================================
 * NEW v2.8.16 — Bogaty EMPTY STATE katalogu/wyszukiwarki (Część 3).
 * Zwracany przez Phoenix_B2B_Shop::render_results() dla pustej listy.
 * ===================================================================== */
.pb2b-shop-empty-rich {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 8px;
	padding: 56px 24px;
	background: var(--pb2b-v22-bg);
	border: 1px dashed var(--pb2b-v22-border);
	border-radius: 16px;
	color: var(--pb2b-v22-muted);
}
.pb2b-shop-empty-rich .pb2b-shop-empty-icon {
	color: var(--pb2b-v22-border);
	margin-bottom: 2px;
}
.pb2b-shop-empty-title {
	margin: 0;
	font-size: 18px;
	font-weight: 700;
	color: var(--pb2b-v22-text);
}
.pb2b-shop-empty-text {
	margin: 0;
	font-size: 14px;
	line-height: 1.55;
	color: var(--pb2b-v22-muted);
	max-width: 460px;
}
.pb2b-shop-empty-cta { margin-top: 10px; }

/* =====================================================================
 * v2.12.18 — STYLE BANERÓW (display + slider) PRZENIESIONE do assets/css/banners.css
 * (handle: phoenix-b2b-banners). Ładowane ZAWSZE w panelu klienta i sklepie B2B.
 * Poniżej zostają tylko style EDYTORA banerów w adminie (repeater + media).
 * ===================================================================== */

/* --- Admin: repeater banerów --- */
.pb2b-banner-row-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 12px;
}
.pb2b-banner-grid {
	display: grid;
	grid-template-columns: 1fr 1fr 1fr;
	gap: 12px;
}
@media (max-width: 782px) {
	.pb2b-banner-grid { grid-template-columns: 1fr; }
}
.pb2b-banner-groups { display: flex; flex-wrap: wrap; gap: 10px 18px; }
.pb2b-banner-group-check { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; }

/* =====================================================================
 * NEW v2.8.18 — Część 7: awaryjna kontrola starych layoutów WooCommerce.
 *
 * Główną ochroną jest przejęcie szablonu (template_include @99) — natywny loop
 * w ogóle się nie renderuje, gdy aktywny jest widok B2B. To jest pas
 * bezpieczeństwa: gdyby motyw/builder mimo to wstrzyknął natywny loop Woo
 * przez hooki, chowamy go WYŁĄCZNIE gdy body ma naszą klasę kontekstu
 * (pb2b-category-active / pb2b-search-active / pb2b-single-product-active),
 * i tylko poza naszymi kontenerami `.pb2b-*`. Escape hatche (?pb2b_category=off,
 * ?pb2b_search=off, ?pb2b_product=off) usuwają body class → ten fallback znika.
 * ===================================================================== */
body.pb2b-category-active > .woocommerce > .woocommerce-products-header,
body.pb2b-search-active   > .woocommerce > .woocommerce-products-header {
	display: none;
}
/* Natywne listy produktów / paski sortowania poza shellem B2B. */
body.pb2b-category-active ul.products:not(.pb2b-shop-grid):not([class*="pb2b-"]),
body.pb2b-search-active   ul.products:not(.pb2b-shop-grid):not([class*="pb2b-"]) {
	display: none !important;
}
body.pb2b-category-active .woocommerce-result-count:not(.pb2b-shop-count),
body.pb2b-search-active   .woocommerce-result-count:not(.pb2b-shop-count),
body.pb2b-category-active .woocommerce-ordering,
body.pb2b-search-active   .woocommerce-ordering {
	display: none;
}

/* =====================================================================
 * v2.12.18 — Baner obrazkowy + SLIDER (display) → assets/css/banners.css.
 * ===================================================================== */

/* --- Admin: podgląd grafik w repeaterze banerów --- */
.pb2b-banner-media-field { display: flex; flex-direction: column; gap: 8px; }
.pb2b-banner-media-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.pb2b-banner-media-preview {
	width: 100%;
	max-width: 360px;
	aspect-ratio: 1120 / 280;
	border: 1px dashed #c3c4c7;
	border-radius: 8px;
	background: #f6f7f7 center / cover no-repeat;
	display: none;
}
.pb2b-banner-media-preview.is-set { display: block; border-style: solid; }
.pb2b-banner-media-preview.is-mobile { max-width: 200px; aspect-ratio: 5 / 4; }
.pb2b-banner-media-clear { color: #b32d2e; background: none; border: 0; cursor: pointer; font-size: 12px; }
