/* ==========================================================================
   HESP — shared tokens + page heroes
   Spacing scale (2.2) — only these values for section/tile rhythm
   ========================================================================== */

:root {
	/* Palette (2.1) — values from logo / brief */
	--hesp-navy: #082e4e;
	--hesp-blue: #1264aa;
	--hesp-blue-soft: #e3eef7;
	--hesp-gold: #d6a431;
	--hesp-text: #1b1f26;
	--hesp-line: #d5e2ef;

	/* Legacy aliases kept for existing component fallbacks */
	--hesp-blue-deep: #082e4e;
	--hesp-blue-light: #2e97dd;
	--hesp-blue-sky: #1264aa;
	--hesp-blue-bg: var(--hesp-blue-soft);
	--hesp-blue-bg-soft: #eef6fc;
	--hesp-page-hero-gradient: linear-gradient(135deg, #0c497b 0%, #1264aa 55%, #2e97dd 100%);
	--hesp-heading-color: var(--hesp-blue);
	--hesp-heading-color-hover: var(--hesp-blue-light);

	/* Contrast (2.5) — WCAG AA helpers */
	--hesp-contrast-scrim: rgba(8, 46, 78, 0.45);
	--hesp-text-on-dark: #ffffff;
	--hesp-text-on-dark-muted: rgba(255, 255, 255, 0.92);
	--hesp-eyebrow-on-dark: #f0c85a;
	--hesp-eyebrow-on-light: #8a6410;

	/* Section surfaces (2.6) — hex from audit 4.17 homepage list */
	--hesp-surface-white: #ffffff; /* biel */
	--hesp-surface-soft: var(--hesp-blue-soft); /* błękit */
	--hesp-surface-brand: var(--hesp-blue); /* niebieski — listwa zaufania */
	--hesp-surface-navy: var(--hesp-navy); /* granat — hero / stopka */
	--hesp-surface-dark: var(--hesp-page-hero-gradient);

	/* Typography — single family, weights 400 / 600 / 700 */
	--hesp-font: 'Manrope', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--hesp-font-regular: 400;
	--hesp-font-semibold: 600;
	--hesp-font-bold: 700;
	--hesp-text-h1: 48px;
	--hesp-text-h2: 36px;
	--hesp-text-h3: 22px;
	--hesp-text-eyebrow: 13px;
	--hesp-text-body: 16px;
	--hesp-text-caption: 14px;
	--hesp-text-label: 11px;
	--hesp-leading-h1: 1.15;
	--hesp-leading-h2: 1.2;
	--hesp-leading-h3: 1.3;
	--hesp-leading-body: 1.6;
	--hesp-leading-caption: 1.5;
	--hesp-leading-label: 1.4;
	--hesp-tracking-eyebrow: 0.08em;

	/* Spacing scale — desktop */
	--hesp-space-section-y: 96px;
	--hesp-space-stack: 48px;
	/* Audit 8.2 — compact blue subpage headers */
	--hesp-page-header-max: 220px;
	--hesp-page-header-pad-y: 40px;
	--hesp-page-header-pad-bottom: 32px;
	--hesp-space-heading: 24px;
	--hesp-space-tile-pad: 24px;
	--hesp-space-grid-gap: 24px;
	--hesp-content-max: 1200px;
	--hesp-content-gutter: 24px;

	/*
	 * Audit 15.1 — layout breakpoints (use literals in @media; custom props
	 * are not reliable inside media queries):
	 *   < 640  phone         — 1 column; product list 2
	 *   640–1023 tablet      — 2 columns; product list 3
	 *   1024–1279 laptop     — 3 columns
	 *   ≥ 1280 desktop       — target layout
	 */

	/* Audit 15.4 — minimum clickable / touch target */
	--hesp-touch-min: 44px;

	/* Buttons (2.4) — gold flat, no gradient */
	--hesp-btn-primary: var(--hesp-gold);
	--hesp-btn-primary-hover: #c5972d;
	--hesp-btn-primary-active: #b68b2a;
	--hesp-btn-ink: var(--hesp-navy);
	--hesp-btn-secondary-hover: #eef1f4;
	--hesp-btn-secondary-active: #e2e7ec;
	--hesp-btn-focus-ring: #9eb8d0;
	--hesp-btn-height: 48px;
	--hesp-btn-radius: 999px;
	--hesp-btn-border: 1.5px;
	--hesp-btn-pad-x: 28px;
}

/* Audit 15.1 — phone tokens (< 640px) */
@media (max-width: 639px) {
	:root {
		--hesp-text-h1: 32px;
		--hesp-text-h2: 28px;
		--hesp-text-h3: 20px;
		--hesp-text-eyebrow: 12px;

		--hesp-space-section-y: 56px;
		--hesp-space-stack: 32px;
		--hesp-space-heading: 16px;
		--hesp-space-tile-pad: 20px;
		--hesp-space-grid-gap: 16px;
		--hesp-content-gutter: 20px;
		--hesp-page-header-max: 160px;
		--hesp-page-header-pad-y: 28px;
		--hesp-page-header-pad-bottom: 32px;
	}
}

/* --- Content container (global) --- */
.hesp-container {
	max-width: var(--hesp-content-max);
	width: 100%;
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--hesp-content-gutter);
	padding-right: var(--hesp-content-gutter);
	box-sizing: border-box;
}

/* Audit 15.1 — phone container (< 640px) */
@media (max-width: 639px) {
	.hesp-container {
		max-width: calc(100% - 20px);
		padding-left: 0;
		padding-right: 0;
	}
}

/* --- Section rhythm --- */
.hesp-section {
	width: 100%;
	padding-top: var(--hesp-space-section-y);
	padding-bottom: var(--hesp-space-section-y);
	box-sizing: border-box;
}

.hesp-section-header {
	margin: 0 0 var(--hesp-space-stack);
}

.hesp-section-header > * + * {
	margin-top: var(--hesp-space-heading);
}

.hesp-section-header--split {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: var(--hesp-space-stack);
}

.hesp-section-header--align-start,
.hesp-page-hero .hesp-section-header--align-start {
	align-items: flex-start;
}

.hesp-section-header--split > * {
	margin-top: 0;
}

.hesp-section-header--split > div > * + * {
	margin-top: var(--hesp-space-heading);
}

.hesp-section-header--center {
	text-align: center;
}

.hesp-section-cta {
	margin-top: var(--hesp-space-stack);
	text-align: center;
}

.hesp-cards,
.hesp-product-grid,
.hesp-blog-grid,
.hesp-portfolio-grid {
	gap: var(--hesp-space-grid-gap);
}

/* --- Typography scale --- */
body.hesp-homepage,
body.hesp-shop-view,
.hesp-homepage,
.hesp-shop-page,
.hesp-catalog-page,
.hesp-about-page,
.hesp-blog-page,
.hesp-blog-single-page,
.hesp-contact-page,
.hesp-legal-page,
.hesp-cart-page,
.hesp-checkout-page,
.hesp-account-page,
.hesp-404-page,
.hesp-product-page,
.hesp-service-single-page,
.hesp-service-archive-page,
.hesp-footer,
.hesp-newsletter {
	font-family: var(--hesp-font);
	font-weight: var(--hesp-font-regular);
	font-size: var(--hesp-text-body);
	line-height: var(--hesp-leading-body);
	color: var(--hesp-text, #1b1f26);
}

.hesp-hero__title,
.hesp-page-hero__title.hesp-text-h1,
h1.hesp-hero__title {
	font-family: var(--hesp-font);
	font-size: var(--hesp-text-h1);
	font-weight: var(--hesp-font-bold);
	line-height: var(--hesp-leading-h1);
	letter-spacing: 0;
}

.hesp-section-title,
.hesp-page-hero__title,
.hesp-cart-page-title,
.hesp-account-dashboard-header__title {
	font-family: var(--hesp-font);
	font-size: var(--hesp-text-h2);
	font-weight: var(--hesp-font-bold);
	line-height: var(--hesp-leading-h2);
	letter-spacing: 0;
}

.hesp-service-card__title,
.hesp-feature-card__title,
.hesp-product-card__name,
.hesp-blog-card__title,
.hesp-portfolio-card__title,
.hesp-why .hesp-feature-card__title {
	font-family: var(--hesp-font);
	font-size: var(--hesp-text-h3);
	font-weight: var(--hesp-font-semibold);
	line-height: var(--hesp-leading-h3);
	letter-spacing: 0;
}

.hesp-eyebrow,
.hesp-page-hero__eyebrow,
.hesp-account-dashboard-header__eyebrow,
.hesp-footer__heading {
	font-family: var(--hesp-font);
	font-size: var(--hesp-text-eyebrow);
	font-weight: var(--hesp-font-semibold);
	line-height: 1.4;
	letter-spacing: var(--hesp-tracking-eyebrow);
	text-transform: uppercase;
}

.hesp-section-intro,
.hesp-page-hero__text,
.hesp-service-card__text,
.hesp-feature-card__text,
.hesp-product-card__excerpt,
.hesp-blog-card__excerpt {
	font-family: var(--hesp-font);
	font-size: var(--hesp-text-body);
	font-weight: var(--hesp-font-regular);
	line-height: var(--hesp-leading-body);
}

.hesp-text-caption,
.hesp-footer__copyright,
.hesp-footer__legal,
.hesp-product-card__meta,
.hesp-blog-card__meta {
	font-family: var(--hesp-font);
	font-size: var(--hesp-text-caption);
	font-weight: var(--hesp-font-regular);
	line-height: var(--hesp-leading-caption);
}

.hesp-text-label,
.hesp-product-card__badge,
.hesp-shop-chip,
.hesp-popup-offer__badge {
	font-family: var(--hesp-font);
	font-size: var(--hesp-text-label);
	font-weight: var(--hesp-font-semibold);
	line-height: var(--hesp-leading-label);
}

/* Content-area logo on light backgrounds (audit 11.4 / 2.7) */
.hesp-content-logo {
	display: flex;
	justify-content: center;
	align-items: center;
	margin: 28px auto 8px;
	max-width: var(--hesp-content-max, 1200px);
	padding: 8px 0;
}

.hesp-content-logo__img {
	display: block;
	height: 64px !important;
	width: auto !important;
	max-width: min(100%, 320px);
	object-fit: contain;
}

/* --- Shared page hero --- */
.hesp-page-hero {
	position: relative;
	isolation: isolate;
	background: var(--hesp-page-hero-gradient);
	padding: var(--hesp-page-header-pad-y) 0 var(--hesp-page-header-pad-bottom);
	color: var(--hesp-text-on-dark);
	max-height: var(--hesp-page-header-max);
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	justify-content: center;
}

/* Navy scrim 45% — keeps white/gold text AA-compliant on light gradient edge */
.hesp-page-hero::before {
	content: '';
	position: absolute;
	inset: 0;
	background: var(--hesp-contrast-scrim);
	pointer-events: none;
	z-index: 0;
}

.hesp-page-hero--compact,
.hesp-page-hero--dashboard {
	padding: var(--hesp-page-header-pad-y) 0 var(--hesp-page-header-pad-bottom);
	max-height: var(--hesp-page-header-max);
}

/*
 * Audit 8.2 — compact blue text headers on subpages.
 * Exclude multi-block / long-copy heroes (about intro 14.1, catalog reasons, service single).
 */
.hesp-blog-hero,
.hesp-legal-hero,
.hesp-404-hero,
.hesp-service-archive-hero,
.hesp-contact-hero,
.hesp-shop-hero.hesp-page-hero {
	padding: var(--hesp-page-header-pad-y) 0 var(--hesp-page-header-pad-bottom);
	max-height: var(--hesp-page-header-max);
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	justify-content: center;
}

.hesp-page-hero .hesp-page-hero__text,
.hesp-page-hero .hesp-section-intro,
.hesp-blog-hero__text,
.hesp-legal-hero__text,
.hesp-404-hero__text,
.hesp-service-archive-hero__text,
.hesp-contact-hero__text {
	margin-bottom: 0;
}

.hesp-page-hero .hesp-container {
	position: relative;
	z-index: 1;
	max-width: var(--hesp-content-max);
	margin: 0 auto;
	padding-left: var(--hesp-content-gutter);
	padding-right: var(--hesp-content-gutter);
	box-sizing: border-box;
	width: 100%;
}

.hesp-page-hero__eyebrow {
	font-family: var(--hesp-font);
	font-weight: var(--hesp-font-semibold);
	font-size: var(--hesp-text-eyebrow);
	letter-spacing: var(--hesp-tracking-eyebrow);
	text-transform: uppercase;
	color: var(--hesp-eyebrow-on-dark);
	margin: 0 0 var(--hesp-space-heading);
}

.hesp-page-hero__title {
	font-family: var(--hesp-font);
	font-weight: var(--hesp-font-bold);
	font-size: var(--hesp-text-h2);
	line-height: var(--hesp-leading-h2);
	color: var(--hesp-text-on-dark);
	margin: 0 0 var(--hesp-space-heading);
}

.hesp-page-hero__text {
	font-family: var(--hesp-font);
	font-size: var(--hesp-text-body);
	font-weight: var(--hesp-font-regular);
	line-height: var(--hesp-leading-body);
	color: var(--hesp-text-on-dark-muted);
	margin: 0;
	max-width: 760px;
}

/* Light breadcrumbs on blue heroes */
.hesp-page-hero .hesp-cart-breadcrumb,
.hesp-page-hero .hesp-shop-breadcrumb,
.hesp-page-hero .hesp-account-breadcrumb,
.hesp-page-hero .hesp-service-breadcrumb {
	color: var(--hesp-text-on-dark-muted);
	margin-bottom: var(--hesp-space-heading);
}

.hesp-page-hero .hesp-cart-breadcrumb a,
.hesp-page-hero .hesp-shop-breadcrumb a,
.hesp-page-hero .hesp-account-breadcrumb a,
.hesp-page-hero .hesp-service-breadcrumb a {
	color: var(--hesp-text-on-dark-muted);
}

.hesp-page-hero .hesp-cart-breadcrumb a:hover,
.hesp-page-hero .hesp-shop-breadcrumb a:hover,
.hesp-page-hero .hesp-account-breadcrumb a:hover,
.hesp-page-hero .hesp-service-breadcrumb a:hover {
	color: var(--hesp-text-on-dark);
}

.hesp-page-hero .hesp-cart-breadcrumb__current,
.hesp-page-hero .hesp-shop-breadcrumb__current,
.hesp-page-hero .hesp-account-breadcrumb__current,
.hesp-page-hero .hesp-service-breadcrumb__current {
	color: var(--hesp-text-on-dark);
	font-weight: 600;
}

.hesp-page-hero .hesp-cart-breadcrumb__sep,
.hesp-page-hero .hesp-shop-breadcrumb__sep,
.hesp-page-hero .hesp-account-breadcrumb__sep,
.hesp-page-hero .hesp-service-breadcrumb__sep {
	color: rgba(255, 255, 255, 0.55);
}

.hesp-page-hero .hesp-cart-page-title,
.hesp-page-hero .hesp-section-title,
.hesp-page-hero .hesp-account-dashboard-header__title,
.hesp-page-hero .hesp-page-hero__title {
	color: var(--hesp-text-on-dark);
}

.hesp-page-hero .hesp-section-intro,
.hesp-page-hero .hesp-account-dashboard-header__intro,
.hesp-page-hero .hesp-page-hero__text {
	color: var(--hesp-text-on-dark-muted);
}

.hesp-page-hero .hesp-eyebrow,
.hesp-page-hero .hesp-account-dashboard-header__eyebrow {
	color: var(--hesp-eyebrow-on-dark);
}

.hesp-page-hero .hesp-account-dashboard-header {
	margin-bottom: 0;
}

.hesp-page-hero .hesp-account-dashboard-header__user {
	background: rgba(255, 255, 255, 0.12);
	border-color: rgba(255, 255, 255, 0.22);
}

.hesp-page-hero .hesp-account-dashboard-header__name {
	color: var(--hesp-text-on-dark);
}

.hesp-page-hero .hesp-account-dashboard-header__email {
	color: var(--hesp-text-on-dark-muted);
}

.hesp-page-hero .hesp-section-header {
	margin-bottom: 0;
}

.hesp-page-hero .hesp-section-header--split {
	align-items: flex-end;
}

@media (max-width: 639px) {
	.hesp-page-hero .hesp-container {
		max-width: calc(100% - 20px);
		padding-left: 0;
		padding-right: 0;
	}

	.hesp-page-hero .hesp-section-header--split {
		flex-direction: column;
		align-items: flex-start;
		gap: var(--hesp-space-heading);
	}
}

/* Dark gradient heroes outside .hesp-page-hero — same 45% navy scrim (2.5) */
.hesp-blog-hero,
.hesp-catalog-hero,
.hesp-legal-hero,
.hesp-404-hero,
.hesp-about-hero,
.hesp-service-hero,
.hesp-service-archive-hero,
.hesp-service-cta {
	position: relative;
	isolation: isolate;
}

.hesp-blog-hero::before,
.hesp-catalog-hero::before,
.hesp-legal-hero::before,
.hesp-about-hero::before,
.hesp-service-hero::before,
.hesp-service-archive-hero::before {
	content: '';
	position: absolute;
	inset: 0;
	background: var(--hesp-contrast-scrim, rgba(16, 32, 47, 0.45));
	pointer-events: none;
	z-index: 0;
}

.hesp-blog-hero > .hesp-container,
.hesp-catalog-hero > .hesp-container,
.hesp-legal-hero > .hesp-container,
.hesp-about-hero > .hesp-container,
.hesp-service-hero > .hesp-container,
.hesp-service-archive-hero > .hesp-container,
.hesp-404-hero__inner,
.hesp-service-cta__inner {
	position: relative;
	z-index: 1;
}

/* --- Section surfaces (2.6) — mapping locked to audit 4.17 / 20.1 --- */
.hesp-surface--white {
	background: #FFFFFF;
	background: var(--hesp-surface-white, #FFFFFF);
	color: #10202f;
}

.hesp-surface--soft {
	background: #E3EEF7;
	background: var(--hesp-surface-soft, #E3EEF7);
	color: #10202f;
}

.hesp-surface--brand {
	background: #1264AA;
	background: var(--hesp-surface-brand, #1264AA);
	color: var(--hesp-text-on-dark, #ffffff);
}

.hesp-surface--navy {
	background: #082E4E;
	background: var(--hesp-surface-navy, #082E4E);
	color: var(--hesp-text-on-dark, #ffffff);
}

.hesp-surface--dark {
	position: relative;
	isolation: isolate;
	background: var(--hesp-surface-dark, var(--hesp-page-hero-gradient));
	color: var(--hesp-text-on-dark, #ffffff);
}

.hesp-surface--dark::before {
	content: '';
	position: absolute;
	inset: 0;
	background: var(--hesp-contrast-scrim, rgba(16, 32, 47, 0.45));
	pointer-events: none;
	z-index: 0;
}

.hesp-surface--dark > .hesp-container {
	position: relative;
	z-index: 1;
}

.hesp-surface--dark .hesp-section-title,
.hesp-surface--dark .hesp-section-intro,
.hesp-surface--dark .hesp-eyebrow {
	color: inherit;
}

.hesp-surface--dark .hesp-eyebrow,
.hesp-surface--dark .hesp-eyebrow--light {
	color: var(--hesp-eyebrow-on-dark, #f0c85a);
}

.hesp-surface--dark .hesp-section-title,
.hesp-surface--dark .hesp-section-title--light {
	color: var(--hesp-text-on-dark, #ffffff);
}

.hesp-surface--dark .hesp-section-intro,
.hesp-surface--dark .hesp-section-intro--light {
	color: var(--hesp-text-on-dark-muted, rgba(255, 255, 255, 0.92));
}

/* Continuation of previous section — same surface, no visual seam */
.hesp-surface--continue {
	/* intentionally empty: keeps previous section background */
}

/* --- Buttons (2.4) — three levels, three states; no size jump --- */
/* Token values live in the main :root block above. */

.hesp-btn,
a.hesp-btn,
button.hesp-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	box-sizing: border-box;
	min-height: var(--hesp-btn-height);
	padding: 0 var(--hesp-btn-pad-x);
	border-radius: var(--hesp-btn-radius);
	border-style: solid;
	border-width: var(--hesp-btn-border);
	border-color: transparent;
	font-family: var(--hesp-font);
	font-size: var(--hesp-text-body, 16px);
	font-weight: var(--hesp-font-bold, 700);
	line-height: 1.2;
	text-decoration: none;
	text-align: center;
	white-space: nowrap;
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
	transform: none;
	transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}

.hesp-btn:hover,
.hesp-btn:active,
.hesp-btn:focus,
a.hesp-btn:hover,
a.hesp-btn:active,
a.hesp-btn:focus,
button.hesp-btn:hover,
button.hesp-btn:active,
button.hesp-btn:focus {
	transform: none;
	opacity: 1;
	text-decoration: none;
}

.hesp-btn:focus-visible,
a.hesp-btn:focus-visible,
button.hesp-btn:focus-visible {
	outline: 2px solid var(--hesp-btn-focus-ring);
	outline-offset: 3px;
}

.hesp-btn:focus:not(:focus-visible),
a.hesp-btn:focus:not(:focus-visible),
button.hesp-btn:focus:not(:focus-visible) {
	outline: none;
}

/* Primary — gold fill, navy text (one main CTA per section) */
.hesp-btn--primary,
a.hesp-btn--primary,
button.hesp-btn--primary,
a.hesp-btn--primary:hover,
a.hesp-btn--primary:focus,
a.hesp-btn--primary:active,
button.hesp-btn--primary:hover,
button.hesp-btn--primary:focus,
button.hesp-btn--primary:active {
	background-color: var(--hesp-btn-primary);
	background-image: none;
	border-color: var(--hesp-btn-primary);
	color: var(--hesp-btn-ink);
}

.hesp-btn--primary:hover,
a.hesp-btn--primary:hover,
button.hesp-btn--primary:hover {
	background-color: var(--hesp-btn-primary-hover);
	border-color: var(--hesp-btn-primary-hover);
	color: var(--hesp-btn-ink);
}

.hesp-btn--primary:active,
a.hesp-btn--primary:active,
button.hesp-btn--primary:active {
	background-color: var(--hesp-btn-primary-active);
	border-color: var(--hesp-btn-primary-active);
	color: var(--hesp-btn-ink);
}

/* Secondary — outline (light surfaces) */
.hesp-btn--secondary,
.hesp-btn--outline,
.hesp-btn--outline-dark,
a.hesp-btn--secondary,
a.hesp-btn--outline,
a.hesp-btn--outline-dark,
button.hesp-btn--secondary,
button.hesp-btn--outline,
button.hesp-btn--outline-dark,
a.hesp-btn--secondary:hover,
a.hesp-btn--secondary:focus,
a.hesp-btn--outline:hover,
a.hesp-btn--outline:focus,
a.hesp-btn--outline-dark:hover,
a.hesp-btn--outline-dark:focus,
button.hesp-btn--secondary:hover,
button.hesp-btn--secondary:focus,
button.hesp-btn--outline:hover,
button.hesp-btn--outline:focus {
	background-color: transparent;
	background-image: none;
	border-color: var(--hesp-btn-ink);
	color: var(--hesp-btn-ink);
}

.hesp-btn--secondary:hover,
.hesp-btn--outline:hover,
.hesp-btn--outline-dark:hover,
a.hesp-btn--secondary:hover,
a.hesp-btn--outline:hover,
a.hesp-btn--outline-dark:hover,
button.hesp-btn--secondary:hover,
button.hesp-btn--outline:hover,
button.hesp-btn--outline-dark:hover {
	background-color: var(--hesp-btn-secondary-hover);
	border-color: var(--hesp-btn-ink);
	color: var(--hesp-btn-ink);
}

.hesp-btn--secondary:active,
.hesp-btn--outline:active,
.hesp-btn--outline-dark:active,
a.hesp-btn--secondary:active,
a.hesp-btn--outline:active,
a.hesp-btn--outline-dark:active,
button.hesp-btn--secondary:active,
button.hesp-btn--outline:active,
button.hesp-btn--outline-dark:active {
	background-color: var(--hesp-btn-secondary-active);
	border-color: var(--hesp-btn-ink);
	color: var(--hesp-btn-ink);
}

/* Secondary on dark — white outline (legacy: --white, --ghost) */
.hesp-btn--on-dark.hesp-btn--secondary,
.hesp-btn--white,
.hesp-btn--ghost,
a.hesp-btn--on-dark.hesp-btn--secondary,
a.hesp-btn--white,
a.hesp-btn--ghost,
button.hesp-btn--on-dark.hesp-btn--secondary,
button.hesp-btn--white,
button.hesp-btn--ghost,
a.hesp-btn--white:hover,
a.hesp-btn--white:focus,
a.hesp-btn--ghost:hover,
a.hesp-btn--ghost:focus,
button.hesp-btn--white:hover,
button.hesp-btn--white:focus,
button.hesp-btn--ghost:hover,
button.hesp-btn--ghost:focus {
	background-color: transparent;
	background-image: none;
	border-color: #ffffff;
	color: #ffffff;
}

.hesp-btn--on-dark.hesp-btn--secondary:hover,
.hesp-btn--white:hover,
.hesp-btn--ghost:hover,
a.hesp-btn--on-dark.hesp-btn--secondary:hover,
a.hesp-btn--white:hover,
a.hesp-btn--ghost:hover,
button.hesp-btn--white:hover,
button.hesp-btn--ghost:hover {
	background-color: rgba(255, 255, 255, 0.12);
	border-color: #ffffff;
	color: #ffffff;
}

.hesp-btn--on-dark.hesp-btn--secondary:active,
.hesp-btn--white:active,
.hesp-btn--ghost:active,
a.hesp-btn--white:active,
a.hesp-btn--ghost:active,
button.hesp-btn--white:active,
button.hesp-btn--ghost:active {
	background-color: rgba(255, 255, 255, 0.2);
	border-color: #ffffff;
	color: #ffffff;
}

/* Tertiary — text + arrow, no chrome */
.hesp-btn--tertiary,
.hesp-link-arrow,
a.hesp-btn--tertiary,
a.hesp-link-arrow {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: auto;
	padding: 0;
	border: none;
	border-radius: 0;
	background: transparent;
	background-image: none;
	font-family: var(--hesp-font);
	font-size: var(--hesp-text-body, 16px);
	font-weight: var(--hesp-font-semibold, 600);
	line-height: var(--hesp-leading-body, 1.6);
	color: var(--hesp-btn-ink);
	text-decoration: none;
	white-space: nowrap;
	cursor: pointer;
	transform: none;
	box-shadow: none;
}

.hesp-btn--tertiary::after,
.hesp-link-arrow::after {
	content: '\2192';
	font-weight: var(--hesp-font-semibold, 600);
	line-height: 1;
}

.hesp-btn--tertiary:hover,
.hesp-link-arrow:hover,
a.hesp-btn--tertiary:hover,
a.hesp-link-arrow:hover {
	color: var(--hesp-btn-ink);
	text-decoration: underline;
	text-underline-offset: 0.18em;
	background: transparent;
	opacity: 1;
	transform: none;
}

.hesp-btn--tertiary:active,
.hesp-link-arrow:active,
a.hesp-btn--tertiary:active,
a.hesp-link-arrow:active {
	color: var(--hesp-btn-ink);
	opacity: 0.85;
}

.hesp-btn--tertiary:focus-visible,
.hesp-link-arrow:focus-visible,
a.hesp-btn--tertiary:focus-visible,
a.hesp-link-arrow:focus-visible {
	outline: 2px solid var(--hesp-btn-focus-ring);
	outline-offset: 3px;
	border-radius: 4px;
}

.hesp-btn--on-dark.hesp-btn--tertiary,
.hesp-btn--on-dark.hesp-link-arrow,
a.hesp-btn--on-dark.hesp-btn--tertiary,
a.hesp-btn--on-dark.hesp-link-arrow {
	color: #ffffff;
}

.hesp-btn--on-dark.hesp-btn--tertiary:hover,
.hesp-btn--on-dark.hesp-link-arrow:hover,
a.hesp-btn--on-dark.hesp-btn--tertiary:hover,
a.hesp-btn--on-dark.hesp-link-arrow:hover {
	color: #ffffff;
}

/* Product / commerce CTAs use the same primary chrome */
.hesp-product-card__btn,
.hesp-product-add-btn,
a.hesp-product-card__btn,
button.hesp-product-add-btn {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 8px !important;
	box-sizing: border-box !important;
	min-height: var(--hesp-btn-height) !important;
	padding: 0 var(--hesp-btn-pad-x) !important;
	border-radius: var(--hesp-btn-radius) !important;
	border: var(--hesp-btn-border) solid var(--hesp-btn-primary) !important;
	background: var(--hesp-btn-primary) !important;
	background-image: none !important;
	color: var(--hesp-btn-ink) !important;
	font-family: var(--hesp-font) !important;
	font-size: var(--hesp-text-body, 16px) !important;
	font-weight: var(--hesp-font-bold, 700) !important;
	line-height: 1.2 !important;
	text-decoration: none !important;
	white-space: nowrap;
	cursor: pointer;
	transform: none !important;
	transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease !important;
}

.hesp-product-card__btn:hover,
.hesp-product-add-btn:hover,
a.hesp-product-card__btn:hover,
button.hesp-product-add-btn:hover {
	background: var(--hesp-btn-primary-hover) !important;
	border-color: var(--hesp-btn-primary-hover) !important;
	color: var(--hesp-btn-ink) !important;
	opacity: 1 !important;
	transform: none !important;
}

.hesp-product-card__btn:active,
.hesp-product-add-btn:active {
	background: var(--hesp-btn-primary-active) !important;
	border-color: var(--hesp-btn-primary-active) !important;
	color: var(--hesp-btn-ink) !important;
}

.hesp-product-card__btn:focus-visible,
.hesp-product-add-btn:focus-visible {
	outline: 2px solid var(--hesp-btn-focus-ring);
	outline-offset: 3px;
}

.hesp-product-card__btn-icon,
.hesp-product-add-btn__icon {
	color: currentColor !important;
	flex-shrink: 0;
}

.hesp-product-card__btn.loading,
.hesp-product-add-btn.loading {
	opacity: 0.6 !important;
	pointer-events: none;
}

/* ==========================================================================
   Audit 15.4 — touch targets min 44x44 px
   ========================================================================== */

/* Footer social icons (already 48px; lock floor) */
.hesp-footer__social-logo {
	min-width: var(--hesp-touch-min, 44px);
	min-height: var(--hesp-touch-min, 44px);
}

/* Language switcher — trigger + menu items */
.hesp-header .hesp-lang-switcher__trigger {
	min-width: var(--hesp-touch-min, 44px);
	min-height: var(--hesp-touch-min, 44px);
	height: auto;
	box-sizing: border-box;
}

.hesp-header .hesp-lang-switcher__link {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: var(--hesp-touch-min, 44px);
	padding: 10px 14px;
	box-sizing: border-box;
}

.hesp-header #mobile-drawer .hesp-mobile-drawer-lang__link {
	min-width: var(--hesp-touch-min, 44px);
	min-height: var(--hesp-touch-min, 44px);
	box-sizing: border-box;
}

/* Header icon controls: cart, account, hamburger */
.hesp-header .hesp-cart-trigger,
.hesp-header .header-cart-button,
.hesp-header .hesp-header-account__button,
.hesp-header #mobile-header .menu-toggle-open,
.hesp-header #mobile-drawer .drawer-header .menu-toggle-close {
	min-width: var(--hesp-touch-min, 44px);
	min-height: var(--hesp-touch-min, 44px);
	box-sizing: border-box;
}

/* Qty steppers (cart page, cart drawer, product page) */
.hesp-qty-stepper__btn,
.hesp-qty-stepper--cart .hesp-qty-stepper__btn,
.hesp-cart-drawer .hesp-qty-stepper__btn,
.hesp-product-qty__btn {
	min-width: var(--hesp-touch-min, 44px);
	min-height: var(--hesp-touch-min, 44px);
	width: var(--hesp-touch-min, 44px);
	height: var(--hesp-touch-min, 44px);
	box-sizing: border-box;
}

/* Close / icon buttons */
.hesp-cart-drawer__close,
.hesp-shop-filters__close,
.hesp-product-lightbox__close {
	min-width: var(--hesp-touch-min, 44px);
	min-height: var(--hesp-touch-min, 44px);
	width: var(--hesp-touch-min, 44px);
	height: var(--hesp-touch-min, 44px);
	box-sizing: border-box;
}

.hesp-shop-toolbar__filters-toggle {
	min-height: var(--hesp-touch-min, 44px);
	box-sizing: border-box;
}

/* Pagination */
.hesp-shop-pagination__item a,
.hesp-shop-pagination__item span,
.hesp-blog-pagination__item a,
.hesp-blog-pagination__item span {
	min-width: var(--hesp-touch-min, 44px);
	min-height: var(--hesp-touch-min, 44px);
	height: auto;
	box-sizing: border-box;
}

/* Kadence Blocks carousels � Splide / Slick / Tiny Slider arrows */
.splide__arrow,
.kb-splide .splide__arrow,
.kt-blocks-carousel .splide__arrow,
.wp-block-kadence-advancedgallery .splide__arrow,
.kt-blocks-carousel .slick-prev,
.kt-blocks-carousel .slick-next,
.kt-blocks-carousel .tns-controls button[data-controls],
.tns-outer > .tns-controls > button {
	min-width: var(--hesp-touch-min, 44px) !important;
	min-height: var(--hesp-touch-min, 44px) !important;
	width: var(--hesp-touch-min, 44px) !important;
	height: var(--hesp-touch-min, 44px) !important;
	box-sizing: border-box !important;
}

/* Carousel dots � expand hit area while keeping visual size */
.splide__pagination__page,
.kb-splide .splide__pagination__page,
.tns-outer .tns-nav button,
.kt-blocks-carousel .slick-dots li button {
	min-width: var(--hesp-touch-min, 44px) !important;
	min-height: var(--hesp-touch-min, 44px) !important;
	box-sizing: border-box !important;
}

/* ==========================================================================
   Audit 15.5 � no page-level horizontal scroll (375px acceptance)
   Tables / project cards / number bars scroll or wrap inside containers.
   ========================================================================== */

html {
	overflow-x: clip;
}

body {
	overflow-x: clip;
	max-width: 100%;
}

#wrapper,
#inner-wrap,
.site,
.content-area,
.site-main,
.hesp-homepage,
.hesp-shop-page,
.hesp-product-page,
.hesp-cart-page,
.hesp-catalog-page,
.hesp-about-page,
.hesp-blog-page,
.hesp-contact-page,
.hesp-legal-page,
.hesp-account-page {
	max-width: 100%;
	overflow-x: clip;
}

.hesp-container,
.hesp-section,
.hesp-shop-layout,
.hesp-shop-results,
.hesp-portfolio-grid,
.hesp-product-grid,
.hesp-trust-badges,
.hesp-about-stats__grid {
	max-width: 100%;
	min-width: 0;
	box-sizing: border-box;
}

img,
video,
svg,
iframe,
embed,
object,
canvas {
	max-width: 100%;
	height: auto;
}

/* Tables: scroll inside own container, never widen the page */
.hesp-product-details__specs,
.hesp-table-scroll,
.hesp-legal-prose .wp-block-table,
.entry-content .wp-block-table,
.woocommerce-page .woocommerce-table,
.woocommerce table.shop_table {
	display: block;
	width: 100%;
	max-width: 100%;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	overscroll-behavior-x: contain;
}

.hesp-product-specs,
.hesp-legal-prose table,
.entry-content table,
.woocommerce table.shop_table {
	width: 100%;
	max-width: 100%;
	border-collapse: collapse;
}

.hesp-product-specs th,
.hesp-product-specs td,
.hesp-legal-prose table th,
.hesp-legal-prose table td,
.entry-content table th,
.entry-content table td {
	overflow-wrap: anywhere;
	word-break: break-word;
}

/* Number bars / stats � allow wrap, never force page width */
.hesp-trust-badge,
.hesp-trust-badge__copy,
.hesp-trust-badge__title,
.hesp-trust-badge__text,
.hesp-about-stat,
.hesp-about-stat__value,
.hesp-about-stat__label {
	min-width: 0;
	max-width: 100%;
	overflow-wrap: anywhere;
	word-break: break-word;
}

.hesp-cert-score-table {
	max-width: 100%;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

.hesp-cert-score-table__row {
	min-width: 0;
}

.hesp-cert-score-table__area {
	min-width: 0;
	overflow-wrap: anywhere;
}

.hesp-cert-score-table__pts {
	white-space: normal;
}

/* Project / portfolio cards */
.hesp-portfolio-item,
.hesp-portfolio-item__link,
.hesp-portfolio-item__label {
	min-width: 0;
	max-width: 100%;
}

.hesp-portfolio-item__label {
	overflow-wrap: anywhere;
	word-break: break-word;
}

/* A.4 — shop under construction notice (visible immediately on /sklep) */
.hesp-shop-construction {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 8px 16px;
	margin: 0;
	padding: 14px 24px;
	background: #f0c85a;
	color: #10202f;
	text-align: center;
	font-family: var(--hesp-font, inherit);
	font-size: 16px;
	font-weight: 600;
	line-height: 1.4;
}

.hesp-shop-construction__text {
	margin: 0;
	color: inherit;
}

.hesp-shop-construction__mail {
	color: #0c497b;
	font-weight: 700;
	text-decoration: underline;
	text-underline-offset: 2px;
}

.hesp-shop-construction__mail:hover,
.hesp-shop-construction__mail:focus-visible {
	color: #10202f;
}

.hesp-shop-construction--product {
	margin: 0 0 16px;
}

/* Shop off — hide cart chrome until checkout is enabled */
body.hesp-shop-off .hesp-header-cart-wrap,
body.hesp-shop-off .header-cart-wrap,
body.hesp-shop-off .header-mobile-cart-wrap,
body.hesp-shop-off .site-header-item[data-section="kadence_customizer_cart"],
body.hesp-shop-off .site-header-item[data-section="kadence_customizer_mobile_cart"],
body.hesp-shop-off #hesp-cart-drawer,
body.hesp-shop-off .hesp-cart-drawer,
body.hesp-shop-off #cart-drawer {
	display: none !important;
}

.hesp-shop-hero--notice {
	max-height: none;
}
