/*
 * Scalpels & Blades — theme styles.
 * Built from the 2026 homepage design. Tokens first, then components.
 */

/* ==========================================================================
   1. Design tokens
   ========================================================================== */

:root {
	/* Brand */
	--sb-blue: #0b4ea2;
	--sb-blue-dark: #073771;
	--sb-blue-mid: #1f6fc0;
	--sb-blue-light: #3f8fd6;
	--sb-amber: #e0a137;
	--sb-amber-ink: #3a2600;

	/* Neutrals */
	--sb-ink: #16202b;
	--sb-body: #4a5763;
	--sb-muted: #6b7a89;
	--sb-faint: #8b98a5;
	--sb-nav: #3c4a58;

	/* Surfaces & lines */
	--sb-white: #ffffff;
	--sb-panel: #f7f9fb;
	--sb-chip: #eaf1f9;
	--sb-canvas: #eceff2;
	--sb-on-blue: #cfe0f2;
	--sb-on-blue-muted: #dbe9f8;
	--sb-border: #e6ebf0;
	--sb-divider: #f1f4f7;
	--sb-card-border: #d3dae1;
	--sb-hover-border: #a8c6e6;

	/* Shadows */
	--sb-shadow-card: 0 18px 40px rgba(16, 32, 48, .10);
	--sb-shadow-upsell: 0 14px 30px rgba(11, 78, 162, .28);
	--sb-shadow-hover: 0 10px 24px rgba(11, 78, 162, .12);

	/* Gradient */
	--sb-gradient: linear-gradient(105deg, #0b4ea2 0%, #1f6fc0 62%, #3f8fd6 100%);

	/* Type */
	--sb-font: "Archivo", "Helvetica Neue", Helvetica, Arial, sans-serif;
	--sb-font-head: "Archivo Narrow", "Archivo", "Helvetica Neue", Helvetica, Arial, sans-serif;

	/* Layout */
	--sb-container: 1240px;
	--sb-gutter: 40px;
	--sb-radius: 12px;
	--sb-radius-lg: 16px;
	--sb-header-h: 132px;
}

/* ==========================================================================
   2. Base
   ========================================================================== */

*,
*::before,
*::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
	margin: 0;
	background: var(--sb-white);
	color: var(--sb-body);
	font-family: var(--sb-font);
	font-size: 16px;
	font-weight: 500;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

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

a {
	color: var(--sb-blue);
	text-decoration: none;
	transition: color .18s ease;
}
a:hover { color: var(--sb-blue-dark); }

h1, h2, h3, h4 {
	margin: 0;
	color: var(--sb-ink);
	font-family: var(--sb-font-head);
	font-weight: 700;
	line-height: 1.15;
}

p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }

ul, ol { margin: 0; padding: 0; }

button { font: inherit; }

:focus-visible {
	outline: 3px solid var(--sb-blue-light);
	outline-offset: 2px;
	border-radius: 4px;
}

.container {
	width: 100%;
	max-width: var(--sb-container);
	margin-inline: auto;
	padding-inline: var(--sb-gutter);
}

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

.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 100;
	background: var(--sb-white);
	color: var(--sb-blue);
	padding: 12px 18px;
	font-weight: 700;
	box-shadow: var(--sb-shadow-card);
}
.skip-link:focus { left: 12px; top: 12px; }

/* Shared bits ------------------------------------------------------------ */

.eyebrow {
	margin: 0 0 10px;
	color: var(--sb-muted);
	font-family: var(--sb-font);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .14em;
	line-height: 1.4;
	text-transform: uppercase;
}
.eyebrow--blue { color: var(--sb-blue); }

.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	border: 2px solid transparent;
	border-radius: 999px;
	padding: 15px 32px;
	font-family: var(--sb-font);
	font-size: 14px;
	font-weight: 700;
	letter-spacing: .09em;
	line-height: 1;
	text-transform: uppercase;
	text-align: center;
	cursor: pointer;
	transition: background-color .18s ease, color .18s ease, border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.btn--blue {
	background: var(--sb-blue);
	border-color: var(--sb-blue);
	color: var(--sb-white);
}
.btn--blue:hover {
	background: var(--sb-blue-dark);
	border-color: var(--sb-blue-dark);
	color: var(--sb-white);
	box-shadow: var(--sb-shadow-hover);
}

.btn--amber {
	background: var(--sb-amber);
	border-color: var(--sb-amber);
	color: var(--sb-amber-ink);
}
.btn--amber:hover {
	background: #edb154;
	color: var(--sb-amber-ink);
	transform: translateY(-1px);
	box-shadow: var(--sb-shadow-upsell);
}

.btn--ghost {
	background: transparent;
	border-color: rgba(255, 255, 255, .85);
	color: var(--sb-white);
}
.btn--ghost:hover {
	background: var(--sb-white);
	border-color: var(--sb-white);
	color: var(--sb-blue);
}

/* Ghost button for light sections — .btn--ghost is white-on-white here. */
.btn--outline {
	background: transparent;
	border-color: var(--sb-blue);
	color: var(--sb-blue);
}
.btn--outline:hover {
	background: var(--sb-blue);
	border-color: var(--sb-blue);
	color: var(--sb-white);
	box-shadow: var(--sb-shadow-hover);
}

.rich-text a { text-decoration: underline; text-underline-offset: 2px; }
.rich-text p { margin-bottom: 1.15em; }

/* ==========================================================================
   3. Header
   ========================================================================== */

.site-header {
	position: relative;
	z-index: 30;
	background: var(--sb-white);
	border-bottom: 1px solid var(--sb-border);
}

.site-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 28px;
	min-height: var(--sb-header-h);
}

.site-branding { flex: 0 0 auto; }

.site-logo,
.site-branding .custom-logo-link { display: block; }

.site-logo img,
.site-branding .custom-logo {
	display: block;
	width: auto;
	height: 60px;
}

.site-nav {
	display: flex;
	align-items: center;
	gap: 40px;
}

.primary-menu {
	display: flex;
	align-items: center;
	gap: 34px;
	list-style: none;
}

.primary-menu li { position: relative; }

.primary-menu a {
	display: block;
	padding: 6px 0;
	color: var(--sb-nav);
	font-size: 14px;
	font-weight: 700;
	letter-spacing: .09em;
	line-height: 1.2;
	text-transform: uppercase;
	white-space: nowrap;
}
.primary-menu a:hover { color: var(--sb-blue); }

.primary-menu .current-menu-item > a,
.primary-menu .current_page_item > a,
.primary-menu .current-menu-ancestor > a {
	color: var(--sb-blue);
	box-shadow: inset 0 -3px 0 0 var(--sb-blue);
}

/* Sub-menus */
.primary-menu .sub-menu {
	position: absolute;
	top: 100%;
	left: -18px;
	z-index: 20;
	min-width: 240px;
	margin-top: 12px;
	padding: 10px 0;
	list-style: none;
	background: var(--sb-white);
	border: 1px solid var(--sb-border);
	border-radius: var(--sb-radius);
	box-shadow: var(--sb-shadow-card);
	opacity: 0;
	visibility: hidden;
	transform: translateY(-6px);
	transition: opacity .16s ease, transform .16s ease, visibility .16s;
}
.primary-menu li:hover > .sub-menu,
.primary-menu li:focus-within > .sub-menu {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}
.primary-menu .sub-menu a {
	padding: 9px 20px;
	font-size: 13px;
	letter-spacing: .05em;
	text-transform: none;
	white-space: normal;
}

.site-header__actions {
	display: flex;
	align-items: center;
	gap: 16px;
}

.currency-pill {
	display: inline-flex;
	align-items: center;
	background: var(--sb-chip);
	border-radius: 999px;
	padding: 11px 22px;
	color: var(--sb-blue);
	font-size: 14px;
	font-weight: 700;
	letter-spacing: .09em;
	line-height: 1;
}

.header-cart {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	background: var(--sb-blue);
	border-radius: 999px;
	padding: 12px 24px;
	color: var(--sb-white);
	font-size: 14px;
	font-weight: 700;
	letter-spacing: .07em;
	line-height: 1;
	text-transform: uppercase;
	transition: background-color .18s ease, box-shadow .18s ease;
}
.header-cart:hover {
	background: var(--sb-blue-dark);
	color: var(--sb-white);
	box-shadow: var(--sb-shadow-hover);
}
.header-cart__dot { opacity: .6; }

/* Mobile toggle */
.menu-toggle {
	display: none;
	position: relative;
	width: 46px;
	height: 46px;
	background: var(--sb-chip);
	border: 0;
	border-radius: 12px;
	cursor: pointer;
}
.menu-toggle__bars,
.menu-toggle__bars::before,
.menu-toggle__bars::after {
	position: absolute;
	left: 50%;
	width: 20px;
	height: 2px;
	margin-left: -10px;
	background: var(--sb-blue);
	border-radius: 2px;
	transition: transform .2s ease, opacity .2s ease;
}
.menu-toggle__bars { top: 50%; margin-top: -1px; }
.menu-toggle__bars::before { content: ""; margin-left: -10px; transform: translateY(-6px); }
.menu-toggle__bars::after { content: ""; margin-left: -10px; transform: translateY(6px); }

.menu-toggle[aria-expanded="true"] .menu-toggle__bars { background: transparent; }
.menu-toggle[aria-expanded="true"] .menu-toggle__bars::before { transform: rotate(45deg); }
.menu-toggle[aria-expanded="true"] .menu-toggle__bars::after { transform: rotate(-45deg); }

/* ==========================================================================
   4. Hero
   ========================================================================== */

.hero {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	background: var(--sb-gradient);
	color: var(--sb-white);
}

.hero__backdrops {
	position: absolute;
	inset: 0;
	z-index: -1;
}

.hero__backdrop {
	position: absolute;
	inset: 0;
	background-size: cover;
	background-position: center;
	opacity: 0;
	transition: opacity .7s ease;
}
.hero__backdrop.is-active { opacity: 1; }
.hero__backdrop--plain { background: var(--sb-gradient); }

/* Photographic slides get a blue wash so the type stays readable. */
.hero__backdrop:not(.hero__backdrop--plain)::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(105deg, rgba(11, 78, 162, .94) 0%, rgba(31, 111, 192, .86) 55%, rgba(63, 143, 214, .72) 100%);
}

/* One column: the band holds the featured product and nothing else. Search and
   payment logos live in .searchbar below, because a third element in here had
   nowhere to go once the viewport dropped under a large desktop. */
.hero__inner { padding-block: 52px 58px; }

.hero__lead { min-width: 0; }

/* Slides are stacked in one grid cell so the hero never jumps height. */
.hero__slides {
	display: grid;
	grid-template-areas: "slide";
}

.hero__slide {
	grid-area: slide;
	opacity: 0;
	visibility: hidden;
	transform: translateY(8px);
	transition: opacity .5s ease, transform .5s ease, visibility .5s;
}
.hero__slide.is-active {
	opacity: 1;
	visibility: visible;
	transform: none;
}

.hero__eyebrow {
	margin: 0 0 14px;
	color: var(--sb-on-blue);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .16em;
	text-transform: uppercase;
}

.hero__title {
	margin: 0;
	color: var(--sb-white);
	font-family: var(--sb-font);
	font-size: clamp(1.85rem, 3.07vw, 2.375rem);
	max-width: 9.6em;
	font-weight: 800;
	letter-spacing: .002em;
	line-height: 1.125;
	text-transform: uppercase;
}

.hero__text {
	max-width: 30.6em;
	margin: 22px 0 0;
	color: rgba(255, 255, 255, .94);
	font-size: 17px;
	font-weight: 500;
	line-height: 1.4;
}

.hero__actions { margin: 30px 0 0; }

/* Carousel controls */
.hero__controls {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-top: 34px;
}

.hero__arrow,
.hero__pause {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	background: rgba(255, 255, 255, .14);
	border: 1px solid rgba(255, 255, 255, .38);
	border-radius: 50%;
	color: var(--sb-white);
	font-size: 17px;
	cursor: pointer;
	transition: background-color .18s ease, border-color .18s ease, transform .18s ease;
}
.hero__arrow:hover,
.hero__pause:hover {
	background: var(--sb-white);
	border-color: var(--sb-white);
	color: var(--sb-blue);
}
.hero__arrow:active { transform: scale(.95); }

.hero__pause { margin-left: 4px; }
.hero__pause-icon {
	width: 12px;
	height: 12px;
	border-left: 3px solid currentColor;
	border-right: 3px solid currentColor;
}
.hero__pause[aria-pressed="true"] .hero__pause-icon {
	width: 0;
	height: 0;
	border: 0;
	border-left: 11px solid currentColor;
	border-top: 7px solid transparent;
	border-bottom: 7px solid transparent;
	margin-left: 3px;
}

.hero__dots {
	display: flex;
	align-items: center;
	gap: 9px;
	margin-inline: 6px;
}

.hero__dot {
	width: 10px;
	height: 10px;
	padding: 0;
	background: rgba(255, 255, 255, .42);
	border: 0;
	border-radius: 50%;
	cursor: pointer;
	transition: background-color .2s ease, width .2s ease, border-radius .2s ease;
}
.hero__dot:hover { background: rgba(255, 255, 255, .75); }
.hero__dot.is-active {
	width: 30px;
	background: var(--sb-white);
	border-radius: 999px;
}

/* Search + payments strip, directly under the hero. */
.searchbar {
	background: var(--sb-blue-dark);
	/* Deep enough that the pill's shadow doesn't spill onto the white below. */
	padding-block: 22px;
}

/* Wraps on its own rather than at a fixed breakpoint: the search field is the
   thing that must never truncate, so it keeps the row and the payment logos
   drop beneath when there isn't room for both. */
.searchbar__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 14px 24px;
}

/* Both children are given a real flex-basis: left to `auto`, the payment
   logos' intrinsic 896px width wins the space and squeezes the search field
   until its placeholder truncates. */
.hero-search {
	display: flex;
	align-items: center;
	gap: 8px;
	flex: 1 1 440px;
	min-width: 0;
	max-width: 620px;
	background: var(--sb-white);
	border-radius: 999px;
	padding: 4px 4px 4px 18px;
	box-shadow: 0 8px 20px rgba(3, 26, 56, .3);
}

.hero-search__field {
	flex: 1 1 auto;
	min-width: 0;
	background: transparent;
	border: 0;
	padding: 9px 6px;
	color: var(--sb-ink);
	font-family: var(--sb-font);
	font-size: 16px;
	font-weight: 500;
}
.hero-search__field::placeholder { color: var(--sb-faint); }
.hero-search__field:focus { outline: none; }
.hero-search:focus-within {
	box-shadow: var(--sb-shadow-upsell), 0 0 0 3px rgba(255, 255, 255, .55);
}

.hero-search__submit {
	flex: 0 0 auto;
	background: var(--sb-blue);
	border: 0;
	border-radius: 999px;
	padding: 11px 26px;
	color: var(--sb-white);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .11em;
	line-height: 1;
	text-transform: uppercase;
	cursor: pointer;
	transition: background-color .18s ease;
}
.hero-search__submit:hover { background: var(--sb-blue-dark); }

.secure-payments {
	display: flex;
	align-items: center;
	gap: 18px;
	flex: 0 1 500px;
	min-width: 0;
	background: var(--sb-white);
	border-radius: var(--sb-radius);
	padding: 5px 16px;
	box-shadow: 0 6px 16px rgba(3, 26, 56, .22);
}

.secure-payments__label {
	flex: 0 0 auto;
	margin: 0;
	color: var(--sb-muted);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .14em;
	line-height: 1.35;
	text-transform: uppercase;
}

.secure-payments__logos {
	flex: 1 1 auto;
	min-width: 0;
	width: 100%;
	height: auto;
	max-height: 34px;
	margin-left: auto;
	object-fit: contain;
	object-position: right center;
}

/* ==========================================================================
   5. Browse by range
   ========================================================================== */

.browse { padding-block: 56px 76px; }

.browse__inner {
	display: grid;
	grid-template-columns: 221px minmax(0, 1fr);
	column-gap: 42px;
	align-items: start;
}

.browse__sidebar {
	position: sticky;
	top: 24px;
	padding-right: 20px;
	border-right: 1px solid var(--sb-border);
}

.range-list { list-style: none; }

.range-list__item + .range-list__item { border-top: 1px solid var(--sb-divider); }

.range-list__link {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 10px;
	padding: 12px 0;
	color: var(--sb-body);
	font-size: 15px;
	font-weight: 500;
	line-height: 1.4;
}
.range-list__link:hover { color: var(--sb-blue); }

.range-list__count {
	flex: 0 0 auto;
	color: var(--sb-faint);
	font-size: 12px;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
}

.filter-group { margin-top: 34px; }
.filter-list { list-style: none; }

.filter-check {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 7px 0;
	color: var(--sb-body);
	font-size: 15px;
	font-weight: 500;
}
.filter-check:hover { color: var(--sb-blue); }

.filter-check__box {
	flex: 0 0 auto;
	width: 20px;
	height: 20px;
	background: var(--sb-white);
	border: 1.5px solid #cfd8e0;
	border-radius: 5px;
	transition: background-color .16s ease, border-color .16s ease;
}
.filter-check:hover .filter-check__box { border-color: var(--sb-hover-border); }

.filter-check.is-checked .filter-check__box {
	position: relative;
	background: var(--sb-blue);
	border-color: var(--sb-blue);
}
.filter-check.is-checked .filter-check__box::after {
	content: "";
	position: absolute;
	left: 6px;
	top: 2px;
	width: 5px;
	height: 10px;
	border: solid var(--sb-white);
	border-width: 0 2px 2px 0;
	transform: rotate(45deg);
}

.browse__all-link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: 30px;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
}

.browse__main { min-width: 0; }

.browse__head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 24px;
	padding-bottom: 22px;
	border-bottom: 1px solid var(--sb-border);
	margin-bottom: 30px;
}

.browse__title {
	margin: 0;
	font-family: var(--sb-font-head);
	font-size: clamp(1.5rem, 2.4vw, 1.86rem);
	font-weight: 700;
	line-height: 1.12;
}

.browse__meta {
	margin: 0;
	color: var(--sb-muted);
	font-size: 14px;
	font-weight: 600;
	white-space: nowrap;
}

/* Range cards */
.range-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(255px, 1fr));
	gap: 24px;
	list-style: none;
}

.range-card { display: flex; }

.range-card__link {
	display: flex;
	flex-direction: column;
	width: 100%;
	background: var(--sb-white);
	border: 1px solid var(--sb-card-border);
	border-radius: var(--sb-radius-lg);
	overflow: hidden;
	color: inherit;
	transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
.range-card__link:hover {
	border-color: var(--sb-hover-border);
	box-shadow: var(--sb-shadow-card);
	transform: translateY(-3px);
	color: inherit;
}

.range-card__media {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 4 / 3;
	background: var(--sb-panel);
	border-bottom: 1px solid var(--sb-divider);
	overflow: hidden;
}
.range-card__media img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	padding: 18px;
	transition: transform .35s ease;
}
.range-card__link:hover .range-card__media img { transform: scale(1.035); }

.range-card__body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	gap: 8px;
	padding: 20px 22px 22px;
}

.range-card__eyebrow {
	color: var(--sb-faint);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .14em;
	line-height: 1.3;
	text-transform: uppercase;
}

.range-card__title {
	color: var(--sb-ink);
	font-family: var(--sb-font);
	font-size: 14.5px;
	font-weight: 700;
	line-height: 1.42;
	text-wrap: pretty;
}

.range-card__cta {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: auto;
	padding-top: 14px;
	color: var(--sb-blue);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
}
.range-card__cta span { transition: transform .2s ease; }
.range-card__link:hover .range-card__cta span { transform: translateX(4px); }

/* Product cards — range cards carrying a price. */

/* Blades and handles are long and shallow, so a squarer box would be mostly
   empty. A wider box lets the product read larger and keeps the grid short. */
.product-grid .range-card__media { aspect-ratio: 16 / 9; }
.product-grid .range-card__media img { padding: 14px 16px; }

.product-grid .range-card__body { gap: 7px; padding: 18px 20px 20px; }

.product-grid .range-card__title {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	line-clamp: 3;
	overflow: hidden;
}

.product-card__price {
	color: var(--sb-ink);
	font-family: var(--sb-font-head);
	font-size: 17px;
	font-weight: 700;
	line-height: 1.2;
}
.product-card__price del {
	margin-right: 6px;
	color: var(--sb-faint);
	font-weight: 600;
}
.product-card__price ins { text-decoration: none; }
.product-card__price small {
	display: block;
	margin-top: 3px;
	color: var(--sb-muted);
	font-family: var(--sb-font);
	font-size: 11.5px;
	font-weight: 600;
	text-transform: none;
}

.browse__more {
	margin: 34px 0 0;
	text-align: center;
}

/* ==========================================================================
   6. Help CTA band
   ========================================================================== */

.help-cta {
	background: var(--sb-gradient);
	color: var(--sb-white);
}

.help-cta__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 32px;
	padding-block: 39px;
}

.help-cta__title {
	margin: 0 0 8px;
	color: var(--sb-white);
	font-family: var(--sb-font-head);
	font-size: clamp(1.5rem, 2.4vw, 1.86rem);
	font-weight: 700;
	line-height: 1.15;
}

.help-cta__sub {
	margin: 0;
	color: rgba(255, 255, 255, .92);
	font-size: 16px;
	font-weight: 500;
}

.help-cta .btn { flex: 0 0 auto; }

/* ==========================================================================
   7. Mail order info
   ========================================================================== */

.mail-order { padding-block: 66px 78px; }

.mail-order__inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 449px;
	column-gap: 49px;
	row-gap: 40px;
	align-items: start;
}

.mail-order__title {
	margin: 0 0 22px;
	color: var(--sb-blue);
	font-family: var(--sb-font-head);
	font-size: clamp(1.35rem, 2.09vw, 1.62rem);
	font-weight: 700;
	line-height: 1.2;
}

.mail-order__copy {
	color: var(--sb-body);
	font-size: 16px;
	line-height: 1.65;
}
.mail-order__copy strong { color: var(--sb-ink); }

.mail-order__aside {
	padding-left: 27px;
	border-left: 3px solid var(--sb-blue);
	color: var(--sb-ink);
	font-size: 16px;
	line-height: 1.6;
}
.mail-order__aside p { margin-bottom: 1.05em; }

.mail-order__vat {
	margin-top: 26px;
	color: var(--sb-ink);
	font-family: var(--sb-font-head);
	font-size: 24px;
	font-weight: 700;
	line-height: 1.25;
}

.mail-order__aside .eyebrow { margin-top: 26px; margin-bottom: 2px; }

.mail-order__phone {
	display: inline-block;
	color: var(--sb-blue);
	font-family: var(--sb-font-head);
	font-size: clamp(1.9rem, 3.35vw, 2.6rem);
	font-weight: 700;
	letter-spacing: 0;
	line-height: 1.1;
}
.mail-order__phone:hover { color: var(--sb-blue-dark); }

/* ==========================================================================
   8. Footer
   ========================================================================== */

.site-footer {
	background: var(--sb-blue);
	color: var(--sb-on-blue);
}

.site-footer__inner {
	display: flex;
	align-items: center;
	gap: 40px;
	padding-block: 34px;
}

.site-footer__logo { flex: 0 0 auto; }
.site-footer__logo img {
	display: block;
	width: auto;
	height: 46px;
}

.site-footer__payments {
	display: flex;
	align-items: center;
	gap: 20px;
	flex: 1 1 auto;
	min-width: 0;
	justify-content: center;
}

.site-footer__accept {
	margin: 0;
	flex: 0 0 auto;
	color: var(--sb-white);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
}

.site-footer__cards {
	flex: 0 1 auto;
	min-width: 0;
	width: 100%;
	max-width: 458px;
	height: auto;
	background: var(--sb-white);
	border-radius: 8px;
	padding: 3px 8px;
	object-fit: contain;
}

.site-footer__meta {
	flex: 0 0 auto;
	text-align: right;
	font-size: 14px;
	line-height: 1.6;
}

.site-footer__copyright {
	margin: 0 0 2px;
	color: var(--sb-on-blue-muted);
}

.footer-menu {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: 6px 0;
	list-style: none;
}
.footer-menu li + li::before {
	content: "·";
	margin: 0 9px;
	color: rgba(255, 255, 255, .5);
}
.footer-menu a { color: var(--sb-white); }
.footer-menu a:hover { color: var(--sb-white); text-decoration: underline; }

.site-footer__widgets {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 28px;
	padding-block: 8px 36px;
	border-top: 1px solid rgba(255, 255, 255, .16);
	margin-top: 4px;
}
.site-footer__widgets a { color: var(--sb-white); }
.footer-widget__title { color: var(--sb-white); font-size: 15px; margin-bottom: 10px; }
.site-footer__widgets ul { list-style: none; }
.site-footer__widgets li { padding: 3px 0; font-size: 14px; }

/* ==========================================================================
   9. Interior pages & WooCommerce
   ========================================================================== */

.site-main { padding-block: 48px 72px; }
.site-main--home { padding-block: 0; }

.entry-title,
.page-title {
	font-family: var(--sb-font-head);
	font-size: clamp(1.8rem, 3vw, 2.4rem);
	margin-bottom: 18px;
}

.entry-content { font-size: 16px; line-height: 1.7; }

.shop-sidebar { margin-top: 40px; }

.woocommerce-content .woocommerce-breadcrumb {
	color: var(--sb-muted);
	font-size: 14px;
}

/* Shop / category product loop.
   WooCommerce floats these li's at a fixed percentage width, which leaves cards
   ragged and their buttons at different heights. Laying the loop out as a grid
   with each card a flex column lets every card in a row match height, so the
   prices and Add to basket / Select options buttons line up. */
.woocommerce ul.products {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: 24px;
	margin: 0;
	padding: 0;
	list-style: none;
}
/* WooCommerce's clearfix would otherwise become two empty grid cells. */
.woocommerce ul.products::before,
.woocommerce ul.products::after { display: none; }

.woocommerce ul.products li.product {
	display: flex;
	flex-direction: column;
	float: none;
	width: auto;
	margin: 0;
	padding: 0;
	background: var(--sb-white);
	border: 1px solid var(--sb-card-border);
	border-radius: var(--sb-radius-lg);
	overflow: hidden;
	clear: none;
	transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
.woocommerce ul.products li.product:hover {
	border-color: var(--sb-hover-border);
	box-shadow: var(--sb-shadow-card);
	transform: translateY(-3px);
}

.woocommerce ul.products li.product .woocommerce-loop-product__link {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	color: inherit;
}

/* Blades are long and shallow — contain them so the whole blade is visible
   rather than cropped to the middle of the frame. White rather than the panel
   grey: the catalogue still mixes transparent PNGs with legacy JPEGs shot on
   white, and grey would frame the latter in a visible pale rectangle. */
.woocommerce ul.products li.product img {
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: contain;
	margin: 0;
	padding: 14px 16px;
	background: var(--sb-white);
	border-bottom: 1px solid var(--sb-divider);
	box-shadow: none;
}

.woocommerce ul.products li.product .woocommerce-loop-product__title {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	line-clamp: 3;
	overflow: hidden;
	margin: 0;
	padding: 18px 20px 0;
	color: var(--sb-ink);
	font-family: var(--sb-font);
	font-size: 14.5px;
	font-weight: 700;
	line-height: 1.42;
	text-wrap: pretty;
}

.woocommerce ul.products li.product .price {
	margin: 0;
	margin-top: auto;
	padding: 10px 20px 0;
	font-size: 17px;
}
.woocommerce ul.products li.product .price del { opacity: .6; font-weight: 600; }
.woocommerce ul.products li.product .price ins { text-decoration: none; }

.woocommerce ul.products li.product .button,
.woocommerce ul.products li.product .added_to_cart {
	align-self: start;
	margin: 16px 20px 20px;
	padding: 12px 22px;
	font-size: 13px;
}

.woocommerce ul.products li.product .onsale {
	top: 12px;
	right: 12px;
	left: auto;
	margin: 0;
}

.woocommerce ul.products li.product .price,
.woocommerce div.product p.price,
.woocommerce div.product span.price {
	color: var(--sb-blue);
	font-family: var(--sb-font-head);
	font-weight: 700;
}

.woocommerce #respond input#submit,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button {
	background: var(--sb-blue);
	border-radius: 999px;
	color: var(--sb-white);
	font-family: var(--sb-font);
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
}
.woocommerce #respond input#submit:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover {
	background: var(--sb-blue-dark);
	color: var(--sb-white);
}

.woocommerce #respond input#submit.alt,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt {
	background: var(--sb-amber);
	color: var(--sb-amber-ink);
}
.woocommerce #respond input#submit.alt:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover {
	background: #cf9230;
	color: var(--sb-amber-ink);
}

/* ==========================================================================
   10. Featured products hero
   ========================================================================== */

.hero__brand {
	margin: 0 0 26px;
	color: var(--sb-on-blue);
	font-family: var(--sb-font);
	font-size: 14px;
	font-weight: 700;
	letter-spacing: .16em;
	line-height: 1.3;
	text-transform: uppercase;
}

/* Copy and photo are one pair that scales together — a percentage column
   rather than a fixed one, so it needs no breakpoint of its own until the
   photo would be too small to read. */
.hero-product {
	display: grid;
	grid-template-columns: minmax(0, 1fr) clamp(260px, 40%, 480px);
	align-items: center;
	gap: 40px;
}

.hero-product__text { min-width: 0; }

.hero-product__name {
	margin: 0;
	color: var(--sb-white);
	font-family: var(--sb-font);
	font-size: clamp(1.55rem, 2.5vw, 2rem);
	font-weight: 800;
	letter-spacing: .002em;
	line-height: 1.15;
	text-wrap: balance;
	/* Catalogue names run long; three lines keeps every slide the same height. */
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	line-clamp: 3;
	overflow: hidden;
}

.hero-product__price {
	margin: 16px 0 0;
	color: var(--sb-white);
	font-family: var(--sb-font-head);
	font-size: 28px;
	font-weight: 700;
	line-height: 1.1;
}
.hero-product__price del {
	margin-right: 8px;
	color: var(--sb-on-blue-muted);
	font-weight: 600;
	opacity: .8;
}
.hero-product__price ins { text-decoration: none; }
.hero-product__price small {
	display: block;
	margin-top: 4px;
	color: var(--sb-on-blue);
	font-family: var(--sb-font);
	font-size: 12.5px;
	font-weight: 600;
	text-transform: none;
}

.hero--products .hero__actions { margin-top: 26px; }

/* The 2026 packshots are transparent PNGs, so they need a light panel to sit
   on — they disappear against the blue. 16/9 rather than a squarer box because
   blades run ~3.7:1 and handles up to 15:1: a tall panel is mostly empty. */
.hero-product__media {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 16 / 9;
	background: var(--sb-white);
	border-radius: var(--sb-radius-lg);
	box-shadow: var(--sb-shadow-upsell);
	overflow: hidden;
	padding: 16px 18px;
}

.hero-product__img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.hero--products .hero__controls { margin-top: 30px; }

/* ==========================================================================
   11. Homepage range filter
   ========================================================================== */

.range-list__link.is-current {
	color: var(--sb-blue);
	font-weight: 700;
}
.range-list__link.is-current .range-list__count {
	color: var(--sb-blue);
	opacity: .75;
}

/* A blue rule marks the chosen range without moving anything. */
.range-list__item { position: relative; }
.range-list__link.is-current::before {
	content: "";
	position: absolute;
	left: -20px;
	top: 8px;
	bottom: 8px;
	width: 3px;
	border-radius: 3px;
	background: var(--sb-blue);
}

.browse__main {
	transition: opacity .18s ease;
}
.browse__main.is-loading {
	opacity: .45;
	pointer-events: none;
}

.browse__empty {
	margin: 0;
	padding: 40px 0;
	color: var(--sb-muted);
	font-size: 15px;
	text-align: center;
}

/* Cards while product pages are switched off for the preview. */
.range-card__link--static {
	cursor: default;
}
.range-card__link--static:hover {
	border-color: var(--sb-card-border);
	box-shadow: none;
	transform: none;
}

/* ==========================================================================
   12. Responsive
   ========================================================================== */

@media (max-width: 1180px) {
	.browse__inner { grid-template-columns: 200px minmax(0, 1fr); column-gap: 32px; }
}

@media (max-width: 1024px) {
	:root { --sb-gutter: 28px; --sb-header-h: 96px; }

	.menu-toggle { display: block; order: 3; }

	.site-nav {
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		z-index: 40;
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		background: var(--sb-white);
		border-bottom: 1px solid var(--sb-border);
		box-shadow: var(--sb-shadow-card);
		padding: 8px 28px 22px;
		display: none;
	}
	.site-nav.is-open { display: flex; }

	.primary-menu {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
	}
	.primary-menu > li + li { border-top: 1px solid var(--sb-divider); }
	.primary-menu a { padding: 14px 0; font-size: 15px; }
	.primary-menu .current-menu-item > a,
	.primary-menu .current_page_item > a { box-shadow: none; }

	.primary-menu .sub-menu {
		position: static;
		opacity: 1;
		visibility: visible;
		transform: none;
		min-width: 0;
		margin: 0 0 8px;
		padding: 0 0 0 14px;
		border: 0;
		border-left: 2px solid var(--sb-border);
		border-radius: 0;
		box-shadow: none;
	}
	.primary-menu .sub-menu a { padding: 9px 0; }

	.site-header__actions {
		gap: 12px;
		margin-top: 16px;
		padding-top: 16px;
		border-top: 1px solid var(--sb-divider);
	}
	.header-cart { flex: 1 1 auto; justify-content: center; }

	.hero__inner { padding-block: 46px 50px; }
	.hero__title { max-width: 18ch; }
	.hero-search { max-width: none; }

	.browse__inner { grid-template-columns: minmax(0, 1fr); row-gap: 40px; }
	.browse__sidebar {
		position: static;
		padding-right: 0;
		padding-bottom: 30px;
		border-right: 0;
		border-bottom: 1px solid var(--sb-border);
	}
	.range-list {
		display: grid;
		grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
		gap: 0 28px;
	}
	.range-list__item + .range-list__item { border-top: 0; }
	.range-list__item { border-bottom: 1px solid var(--sb-divider); }

	.filter-group {
		display: inline-block;
		vertical-align: top;
		min-width: 200px;
		margin-right: 40px;
	}

	.mail-order__inner { grid-template-columns: minmax(0, 1fr); gap: 40px; }
	.mail-order__aside { padding-left: 24px; }

	.site-footer__inner {
		flex-wrap: wrap;
		justify-content: center;
		gap: 24px;
		text-align: center;
	}
	.site-footer__payments { flex: 1 1 100%; justify-content: center; }
	.site-footer__meta { flex: 1 1 100%; text-align: center; }
	.footer-menu { justify-content: center; }
}

@media (max-width: 720px) {
	:root { --sb-gutter: 20px; }

	body { font-size: 15px; }

	.site-logo img,
	.site-branding .custom-logo { height: 44px; }

	.hero__inner { padding-block: 34px 38px; }

	.searchbar { padding-block: 16px; }
	.secure-payments { flex: 1 1 100%; max-width: none; }

	.hero__title { font-size: clamp(1.85rem, 8vw, 2.4rem); max-width: none; }
	.hero__text { font-size: 16px; margin-top: 18px; }
	.hero__controls { margin-top: 26px; gap: 10px; }
	.hero__arrow, .hero__pause { width: 38px; height: 38px; }

	.hero-search {
		flex-wrap: wrap;
		border-radius: var(--sb-radius-lg);
		padding: 10px;
		gap: 10px;
	}
	.hero-search__field {
		flex: 1 1 100%;
		padding: 8px 8px 0;
		font-size: 16px; /* keeps iOS from zooming on focus */
	}
	.hero-search__submit { flex: 1 1 100%; padding: 14px 20px; }

	.secure-payments {
		flex-direction: column;
		align-items: flex-start;
		gap: 12px;
		padding: 16px;
	}
	.secure-payments__label { max-width: none; }
	.secure-payments__logos { height: 30px; object-position: left center; }

	.browse { padding-block: 40px 52px; }
	.browse__head {
		flex-direction: column;
		align-items: flex-start;
		gap: 10px;
	}
	.range-grid { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 18px; }
	.range-list { grid-template-columns: minmax(0, 1fr); }
	.filter-group { display: block; margin-right: 0; }

	.help-cta__inner {
		flex-direction: column;
		align-items: flex-start;
		gap: 22px;
		padding-block: 36px;
	}
	.help-cta .btn { width: 100%; }

	.mail-order { padding-block: 44px 52px; }
	.mail-order__aside { padding-left: 18px; }
	.mail-order__vat { font-size: 21px; }

	.site-footer__payments { flex-wrap: wrap; gap: 10px; }
	.site-footer__accept { flex: 1 1 100%; }
	.site-footer__cards { max-width: 100%; }
}

@media (max-width: 420px) {
	.range-grid { grid-template-columns: minmax(0, 1fr); }
	.btn { width: 100%; }
}

/* Featured-products hero, responsive.
   The copy/photo pair is a percentage split, so it needs far fewer breakpoints
   than the old three-part band did. */

@media (max-width: 1024px) {
	/* The browse sidebar loses its right padding here, so the current-range
	   rule has to come inside the link rather than hang off its left edge. */
	.range-list__link { padding-left: 12px; }
	.range-list__link.is-current::before { left: 0; }
}

/* Below this the photo column would be too narrow to read the product, so the
   pair stacks instead of shrinking further. */
@media (max-width: 760px) {
	.hero__brand { margin-bottom: 18px; font-size: 12.5px; }

	.hero-product {
		grid-template-columns: minmax(0, 1fr);
		gap: 20px;
	}
	/* Lead with the product photo on a phone. */
	/* Stacked, a 16/9 box is mostly white above and below a 3.7:1 blade. */
	.hero-product__media { order: -1; aspect-ratio: 5 / 2; padding: 12px 14px; }
	.hero-product__name { font-size: clamp(1.45rem, 6.6vw, 2rem); -webkit-line-clamp: 4; line-clamp: 4; }
	.hero-product__price { font-size: 24px; margin-top: 12px; }
	.hero__actions { margin-top: 20px; }
	.hero__controls { margin-top: 24px; }
}

/* ==========================================================================
   13. Motion preferences & print
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .01ms !important;
		scroll-behavior: auto !important;
	}
	.range-card__link:hover { transform: none; }
}

@media print {
	.site-header, .site-footer, .hero__controls, .hero-search { display: none; }
	body { color: #000; }
}
