/*
 * Redstone Separations design system layer.
 *
 * Source of truth for values: Elementor Site Settings (Global Colors, Global Fonts, Theme Style).
 * This file only references them through CSS variables, so a change in Site Settings
 * flows through here automatically. No raw hex values or font names below the token block.
 *
 * Sections
 *  1. Tokens
 *  2. Prose (text editor widgets, post content, product descriptions)
 *  3. Utilities (measure, flush, surfaces)
 *  4. Buttons (variants on top of the Theme Style button)
 *  5. Breadcrumbs
 *  6. Images and media frames
 *  7. Forms (WPForms, quote form)
 *  8. Shop and product cards
 *  9. Single product
 * 10. Technology pages
 * 11. WooCommerce account, cart, checkout (Astra rendered markup)
 * 12. Blog posts (Astra rendered markup)
 * 13. Accessibility
 */

/* 1. Tokens ------------------------------------------------------------- */
/* Elementor defines its globals on the kit class on <body>, so tokens live on body too. */
body {
	--rs-brand: var(--e-global-color-primary, #E62345);
	--rs-brand-dark: var(--e-global-color-accent, #B91D38);
	--rs-ink: var(--e-global-color-secondary, #1A1A1A);
	--rs-text: var(--e-global-color-text, #363535);
	--rs-muted: var(--e-global-color-444997f, #6B6B6B);
	--rs-surface: var(--e-global-color-62320d3c, #FFFFFF);
	--rs-surface-alt: var(--e-global-color-2d487525, #F7F7F7);
	--rs-surface-dark: var(--e-global-color-7966f68, #16202E);
	--rs-border: var(--e-global-color-17365044, #E5E5E5);
	--rs-on-dark: var(--e-global-color-e8efbdd, #FFFFFF);
	--rs-on-dark-soft: var(--e-global-color-rs0dsft, rgba(255, 255, 255, .7));
	--rs-on-dark-muted: var(--e-global-color-11eb58b, rgba(255, 255, 255, .6));
	--rs-border-dark: var(--e-global-color-rs0bdrk, rgba(255, 255, 255, .1));
	--rs-gold: var(--e-global-color-f4968a0, #C9A24B);

	--rs-font-serif: var(--e-global-typography-primary-font-family, "Instrument Serif"), Georgia, serif;
	--rs-font-sans: var(--e-global-typography-text-font-family, "DM Sans"), system-ui, -apple-system, "Segoe UI", sans-serif;

	--rs-radius-sm: 6px;
	--rs-radius: 10px;
	--rs-radius-lg: 12px;
	--rs-radius-pill: 999px;

	--rs-space-1: 4px;
	--rs-space-2: 8px;
	--rs-space-3: 12px;
	--rs-space-4: 16px;
	--rs-space-5: 24px;
	--rs-space-6: 32px;
	--rs-space-7: 48px;
	--rs-space-8: 64px;
	--rs-section-y: 72px;
	--rs-section-y-sm: 56px;

	--rs-measure-s: 560px;
	--rs-measure-m: 720px;
	--rs-measure-l: 900px;

	--rs-shadow-1: 0 1px 2px rgba(22, 32, 46, .06);
	--rs-shadow-2: 0 10px 30px rgba(22, 32, 46, .08);
	--rs-focus-ring: 0 0 0 3px rgba(230, 35, 69, .25);
	--rs-ease: .2s ease;
}
@media (max-width: 1024px) {
	body { --rs-section-y: 56px; --rs-section-y-sm: 48px; }
}
@media (max-width: 767px) {
	body { --rs-section-y: 48px; --rs-section-y-sm: 36px; }
}

/* 2. Prose -------------------------------------------------------------- */
/* Every Text Editor widget, product description tab and blog post body share one reading style. */
.elementor-widget-text-editor p,
.woocommerce-Tabs-panel p,
:is(.single-post, .single-case_study) .entry-content p,
.rs-prose p { margin: 0 0 14px; }
.elementor-widget-text-editor p:last-child,
.woocommerce-Tabs-panel p:last-child,
.rs-prose p:last-child { margin-bottom: 0; }

.elementor-widget-text-editor :is(ul, ol),
.woocommerce-Tabs-panel :is(ul, ol),
:is(.single-post, .single-case_study) .entry-content :is(ul, ol),
.rs-prose :is(ul, ol) { margin: 0 0 14px; padding-left: 22px; }
.elementor-widget-text-editor :is(ul, ol):last-child,
.rs-prose :is(ul, ol):last-child { margin-bottom: 0; }
.elementor-widget-text-editor li,
.woocommerce-Tabs-panel li,
:is(.single-post, .single-case_study) .entry-content li,
.rs-prose li { margin-bottom: 8px; padding-left: 4px; }
.elementor-widget-text-editor li p,
.rs-prose li p { margin: 0; }
.elementor-widget-text-editor li::marker,
.woocommerce-Tabs-panel li::marker,
:is(.single-post, .single-case_study) .entry-content li::marker,
.rs-prose li::marker { color: var(--rs-brand); font-weight: 700; }

/* Links in running text: colour plus underline, so they are not identified by colour alone (WCAG 1.4.1).
   Only plain links (no class) are styled, so component links (.rs-datasheet etc.) keep their own look.
   The .elementor prefix outranks Elementor's own '.elementor a { text-decoration: none }'. */
.elementor .elementor-widget-text-editor :where(a:not([class])),
.woocommerce-Tabs-panel :where(a:not(.button)),
:is(.single-post, .single-case_study) .entry-content :where(a:not(.button)),
.rs-prose :where(a:not(.button)) {
	color: var(--rs-brand-dark);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 2px;
	transition: color var(--rs-ease);
}
.elementor .elementor-widget-text-editor :where(a:not([class]):hover),
.woocommerce-Tabs-panel :where(a:not(.button):hover),
:is(.single-post, .single-case_study) .entry-content :where(a:not(.button):hover),
.rs-prose :where(a:not(.button):hover) { color: var(--rs-brand); }

.elementor-widget-text-editor :where(strong),
.woocommerce-Tabs-panel :where(strong),
.rs-prose :where(strong) { color: var(--rs-ink); font-weight: 600; }

.elementor-widget-text-editor :where(table),
.woocommerce-Tabs-panel :where(table:not(.shop_attributes)),
:is(.single-post, .single-case_study) .entry-content :where(table),
.rs-prose :where(table) { border-collapse: collapse; width: 100%; margin: 0 0 16px; }
.elementor-widget-text-editor :where(table:last-child) { margin-bottom: 0; }
.elementor-widget-text-editor :where(:is(td, th)),
.woocommerce-Tabs-panel :where(table:not(.shop_attributes) :is(td, th)),
:is(.single-post, .single-case_study) .entry-content :where(:is(td, th)),
.rs-prose :where(:is(td, th)) { border: 1px solid var(--rs-border); padding: 9px 12px; font-size: 15px; text-align: left; }
.elementor-widget-text-editor :where(:is(td, th) p),
.rs-prose :where(:is(td, th) p) { margin: 0; }

/* Headings inside running text (legal pages, product descriptions, posts).
   Prefixed with .elementor so they outrank the Theme Style H2/H3 (.elementor-kit-N h2). */
.elementor .elementor-widget-text-editor h2,
.rs-prose h2 { font-family: var(--rs-font-serif); font-weight: 400; font-size: 28px; line-height: 1.2; letter-spacing: 0; color: var(--rs-ink); margin: 40px 0 12px; }
.elementor .elementor-widget-text-editor h3,
.rs-prose h3 { font-family: var(--rs-font-sans); font-weight: 600; font-size: 20px; line-height: 1.3; color: var(--rs-ink); margin: 24px 0 10px; }
.elementor .elementor-widget-text-editor :is(h2, h3):first-child,
.rs-prose :is(h2, h3):first-child { margin-top: 0; }
@media (max-width: 767px) {
	.elementor .elementor-widget-text-editor h2,
	.rs-prose h2 { font-size: 24px; margin-top: 32px; }
}
/* Wide tables scroll sideways on phones. */
@media (max-width: 767px) {
	.elementor-widget-text-editor table,
	.woocommerce-Tabs-panel table:not(.shop_attributes),
	:is(.single-post, .single-case_study) .entry-content table { display: block; max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
}
.rs-legal-meta { font-size: 15px; color: var(--rs-muted); margin-bottom: 20px; }
/* Text on dark sections. */
.rs-dark .elementor-widget-text-editor a:not(.elementor-button) { color: var(--rs-on-dark); }
.rs-dark .elementor-widget-text-editor a:not(.elementor-button):hover { color: var(--rs-gold); }
.rs-dark .elementor-widget-text-editor strong { color: var(--rs-on-dark); }

/* 3. Utilities ---------------------------------------------------------- */
/* Paragraphs stacked without gaps (spec lists, contact lines, card copy). */
.elementor-widget.rs-flush p,
.rs-flush p { margin: 0; }
.elementor-widget.rs-flush strong { color: var(--rs-text); }

/* Line length. Use on Text Editor or Heading widgets. */
.elementor-widget.rs-measure-s { max-width: var(--rs-measure-s); }
.elementor-widget.rs-measure-m { max-width: var(--rs-measure-m); }
.elementor-widget.rs-measure-l { max-width: var(--rs-measure-l); }

/* Flex helpers that used to be repeated per widget. */
.elementor-element.rs-grow { flex: 1 1 auto; min-width: 0; }
.elementor-element.rs-fit { width: auto; }
@media (max-width: 1024px) { .elementor-element.rs-fit { width: 100%; } }
@media (min-width: 768px) and (max-width: 1024px) { .elementor-element.rs-fit { width: auto; } }
.elementor-element.rs-fit-mobile-full { width: auto; }
@media (max-width: 767px) { .elementor-element.rs-fit-mobile-full { width: 100%; } }

/* Lead text and quote blocks. */
.elementor-widget.rs-quote { border-left: 3px solid var(--rs-brand-dark); padding-left: 22px; }

/* 4. Buttons ------------------------------------------------------------ */
/* Filled primary button = Theme Style button (Site Settings > Theme Style > Buttons). Variants: */
.elementor-widget.rs-btn-outline .elementor-button {
	background-color: transparent;
	color: var(--rs-ink);
	border: 1px solid var(--rs-ink);
}
.elementor-widget.rs-btn-outline .elementor-button:is(:hover, :focus-visible) {
	background-color: var(--rs-ink);
	color: var(--rs-on-dark);
}
.elementor-widget.rs-btn-outline-dark .elementor-button {
	background-color: transparent;
	color: var(--rs-on-dark);
	border: 1px solid var(--rs-on-dark);
}
.elementor-widget.rs-btn-outline-dark .elementor-button:is(:hover, :focus-visible) {
	background-color: var(--rs-on-dark);
	color: var(--rs-surface-dark);
}
.elementor-widget.rs-btn-link .elementor-button {
	background-color: transparent;
	color: var(--rs-brand-dark);
	padding: 0;
	border: 0;
	font-weight: 600;
}
.elementor-widget.rs-btn-link .elementor-button:is(:hover, :focus-visible) {
	background-color: transparent;
	color: var(--rs-brand);
}
.elementor-widget.rs-btn-link .elementor-button-icon { transition: transform var(--rs-ease); }
.elementor-widget.rs-btn-link .elementor-button:hover .elementor-button-icon { transform: translateX(3px); }
.elementor-element.rs-btn-pill .elementor-button {
	border-radius: var(--rs-radius-pill);
	padding: 8px 14px;
	background-color: var(--rs-surface);
	color: var(--rs-ink);
	border: 1px solid var(--rs-border);
	font-size: 14px;
	font-weight: 500;
}
.elementor-element.rs-btn-pill .elementor-button:hover { border-color: var(--rs-ink); background-color: var(--rs-surface); color: var(--rs-ink); }
.elementor-element.rs-btn-nowrap { flex-shrink: 0; }
.elementor-element.rs-btn-nowrap .elementor-button { line-height: 1.2; }

/* Inline SVG icons follow the button text colour in every variant. */
.elementor-button .elementor-button-icon svg { fill: currentColor; }

/* 5. Breadcrumbs -------------------------------------------------------- */
.elementor-widget-woocommerce-breadcrumb .woocommerce-breadcrumb {
	margin: 0;
	font-family: var(--rs-font-sans);
	font-size: 13px;
	line-height: 1.4;
	color: var(--rs-muted);
}
.elementor-widget-woocommerce-breadcrumb .woocommerce-breadcrumb a { color: var(--rs-muted); text-decoration: none; }
.elementor-widget-woocommerce-breadcrumb .woocommerce-breadcrumb a:hover { color: var(--rs-brand-dark); }
/* On the dark page hero. */
.rs-dark .elementor-widget-woocommerce-breadcrumb .woocommerce-breadcrumb,
.rs-dark .elementor-widget-woocommerce-breadcrumb .woocommerce-breadcrumb a,
.elementor-widget.rs-breadcrumb-dark .woocommerce-breadcrumb,
.elementor-widget.rs-breadcrumb-dark .woocommerce-breadcrumb a { color: var(--rs-on-dark-muted); }
.rs-dark .elementor-widget-woocommerce-breadcrumb .woocommerce-breadcrumb a:hover,
.elementor-widget.rs-breadcrumb-dark .woocommerce-breadcrumb a:hover { color: var(--rs-on-dark); }

/* 6. Images and media frames ------------------------------------------- */
.elementor-widget.rs-img-frame img { border-radius: var(--rs-radius-lg); border: 1px solid var(--rs-border); background: var(--rs-surface); }
.elementor-widget.rs-img-frame figcaption,
.elementor-widget.rs-img-rounded figcaption { font-size: 14px; color: var(--rs-muted); margin-top: 8px; }
.elementor-widget.rs-img-rounded img { width: 100%; height: auto; border-radius: var(--rs-radius); display: block; }
/* Structure drawings and logos: contained on a white tile. Height via rs-h-* modifiers. */
.elementor-widget.rs-img-tile img {
	width: 100%;
	height: auto;
	object-fit: contain;
	background: var(--rs-surface);
	border: 1px solid var(--rs-border);
	border-radius: var(--rs-radius);
	padding: 14px;
	display: block;
}
.elementor-widget.rs-img-cover img { width: 100%; object-fit: cover; display: block; }
.elementor-widget.rs-img-cover.rs-img-rounded img { border-radius: var(--rs-radius); }
.elementor-widget.rs-img-tile .elementor-widget-container,
.elementor-widget.rs-img-cover .elementor-widget-container { line-height: 0; }
.elementor-widget.rs-h-78 img { height: 78px; }
.elementor-widget.rs-h-150 img { height: 150px; }
.elementor-widget.rs-h-190 img { height: 190px; }
.elementor-widget.rs-h-220 img { height: 220px; }
.elementor-widget.rs-h-320 img { height: 320px; }
.elementor-widget.rs-map iframe { border-radius: var(--rs-radius-lg); border: 1px solid var(--rs-border); display: block; }

/* 7. Forms -------------------------------------------------------------- */
.rs-quote-form .wpforms-container { margin: 0; }
.rs-quote-form .wpforms-field-container { display: grid; grid-template-columns: 1fr 1fr; column-gap: 24px; }
.rs-quote-form .wpforms-field-container::before,
.rs-quote-form .wpforms-field-container::after { content: none; display: none; }
.rs-quote-form .wpforms-field { padding: 0 0 18px; grid-column: 1 / -1; float: none !important; width: auto !important; margin-left: 0 !important; clear: none !important; min-width: 0; }
.rs-quote-form .wpforms-field.wpforms-one-half { grid-column: auto; }
@media (max-width: 767px) {
	.rs-quote-form .wpforms-field-container { grid-template-columns: 1fr; }
	.rs-quote-form .wpforms-field.wpforms-one-half { grid-column: 1 / -1; }
}
.rs-quote-form .wpforms-field-label,
.rs-quote-form legend.wpforms-field-label { font-family: var(--rs-font-sans); font-size: 14px; font-weight: 500; color: var(--rs-ink); margin: 0 0 6px; padding: 0; }
.rs-quote-form .wpforms-required-label { color: var(--rs-brand); }
.rs-quote-form :is(input[type=text], input[type=email], input[type=tel], textarea) {
	width: 100%;
	max-width: 100% !important;
	box-sizing: border-box;
	font-family: var(--rs-font-sans);
	font-size: 16px;
	line-height: 1.4;
	color: var(--rs-text);
	background: var(--rs-surface);
	border: 1px solid var(--rs-border);
	border-radius: var(--rs-radius);
	padding: 12px 14px;
	height: 48px;
	box-shadow: none;
	transition: border-color .15s, box-shadow .15s;
}
.rs-quote-form textarea { height: auto; min-height: 150px; resize: vertical; }
.rs-quote-form :is(input, textarea):focus { outline: none; border-color: var(--rs-brand); box-shadow: var(--rs-focus-ring); }
.rs-quote-form :is(.wpforms-field-radio, .wpforms-field-checkbox) ul { margin: 0; padding: 0; list-style: none; }
.rs-quote-form :is(.wpforms-field-radio, .wpforms-field-checkbox) li { display: flex; align-items: flex-start; gap: 10px; margin: 0 0 8px; padding: 0; }
/* body + .wpforms-field outranks Theme Style form fields, which otherwise also pad and border radios and checkboxes. */
body .rs-quote-form .wpforms-field :is(input[type=radio], input[type=checkbox]) { accent-color: var(--rs-brand); width: 18px; height: 18px; min-height: 0; margin: 3px 0 0; padding: 0; border: 0; border-radius: 0; box-shadow: none; flex: 0 0 18px; }
.rs-quote-form .wpforms-field-label-inline { font-family: var(--rs-font-sans); font-size: 16px; line-height: 1.5; color: var(--rs-text); }
.rs-quote-form .wpforms-field-description { font-family: var(--rs-font-sans); font-size: 14px; color: var(--rs-muted); margin-top: 6px; }
.rs-quote-form .wpforms-field-description a { color: var(--rs-brand-dark); text-decoration: underline; text-underline-offset: 2px; }
.rs-quote-form :is(label.wpforms-error, em.wpforms-error) { font-family: var(--rs-font-sans); font-size: 14px; font-style: normal; color: var(--rs-brand-dark); margin-top: 6px; display: block; }
.rs-quote-form :is(input, textarea).wpforms-error { border-color: var(--rs-brand-dark); }
.rs-quote-form .wpforms-submit-container { padding: 6px 0 0; }
.rs-quote-form button.wpforms-submit {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-family: var(--rs-font-sans);
	font-size: 15px;
	font-weight: 500;
	line-height: 1;
	color: var(--rs-on-dark);
	background: var(--rs-brand-dark);
	border: 0;
	border-radius: var(--rs-radius);
	padding: 12px 24px;
	cursor: pointer;
	transition: background-color .15s;
}
.rs-quote-form button.wpforms-submit:is(:hover, :focus) { background: var(--rs-brand); color: var(--rs-on-dark); }
.rs-quote-form button.wpforms-submit::after {
	content: "";
	width: 14px;
	height: 14px;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.rs-quote-form :is(.wpforms-confirmation-container-full, .wpforms-confirmation-container) { font-family: var(--rs-font-sans); font-size: 16px; color: var(--rs-ink); background: var(--rs-surface-alt); border: 0; border-left: 3px solid var(--rs-brand); border-radius: var(--rs-radius); padding: 16px 20px; }
.rs-quote-form :is(.wpforms-confirmation-container-full, .wpforms-confirmation-container) p { margin: 0; }
@media (max-width: 767px) { .rs-quote-form button.wpforms-submit { width: 100%; justify-content: center; } }

/* 8. Shop and product cards -------------------------------------------- */
.rs-catno { font-family: var(--rs-font-sans); font-size: 12px; letter-spacing: .02em; color: var(--rs-muted); font-variant-numeric: tabular-nums; }
.rs-catno__label { text-transform: uppercase; letter-spacing: .08em; font-weight: 600; font-size: 11px; }
.rs-packs { display: block; font-family: var(--rs-font-sans); font-size: 13px; line-height: 1.5; color: var(--rs-text); }
.rs-packs__label { color: var(--rs-muted); }
.rs-price-from { font-weight: 400; color: var(--rs-muted); font-size: .85em; }
.woocommerce-price-suffix { font-size: 12px; font-weight: 400; color: var(--rs-muted); margin-left: 4px; }
.rs-card-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; }
.rs-card-actions .button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 42px;
	padding: 10px 18px;
	border-radius: var(--rs-radius);
	background: var(--rs-brand-dark);
	color: var(--rs-on-dark);
	font-family: var(--rs-font-sans);
	font-size: 14px;
	font-weight: 500;
	line-height: 1.2;
	text-transform: none;
	letter-spacing: 0;
	border: 0;
	transition: background-color var(--rs-ease);
}
.rs-card-actions .button:is(:hover, :focus-visible) { background: var(--rs-brand); color: var(--rs-on-dark); }
.rs-card-actions .button.loading { opacity: .7; }
.rs-card-actions .added_to_cart { font-family: var(--rs-font-sans); font-size: 14px; font-weight: 600; color: var(--rs-brand-dark); }
.rs-card-actions .added_to_cart:hover { text-decoration: underline; }
.rs-datasheet { display: inline-flex; align-items: center; gap: 6px; font-family: var(--rs-font-sans); font-size: 14px; font-weight: 600; color: var(--rs-ink); text-decoration: none; }
.rs-datasheet:is(:hover, :focus-visible) { color: var(--rs-brand-dark); }
.rs-shop-toolbar .woocommerce-result-count { margin: 0; font-family: var(--rs-font-sans); font-size: 14px; color: var(--rs-muted); white-space: nowrap; }
.rs-shop-toolbar .woocommerce-ordering { margin: 0; }
.rs-shop-toolbar .woocommerce-ordering select,
.rs-product-search input[type=search] { height: 44px; border: 1px solid var(--rs-border); border-radius: var(--rs-radius); background-color: var(--rs-surface); font-family: var(--rs-font-sans); font-size: 14px; color: var(--rs-ink); }
form.woocommerce-ordering select.orderby { padding: 0 36px 0 14px; }
.rs-product-search { position: relative; margin: 0; width: 100%; }
.rs-product-search svg { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--rs-muted); pointer-events: none; }
/* Outranks Theme Style form fields (.elementor-kit-N input:not([type=button]):not([type=submit])). */
body form.rs-product-search input[type=search][name=s] { width: 100%; padding: 0 14px 0 40px; }
/* The visually hidden submit button. Theme Style button padding otherwise gives it a width that pushes the page sideways on phones. */
form.rs-product-search button.screen-reader-text { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); border: 0; white-space: nowrap; }
.rs-shop-toolbar .woocommerce-ordering select:focus,
.rs-product-search input[type=search]:focus { outline: 2px solid var(--rs-brand-dark); outline-offset: 1px; border-color: transparent; }
.rs-line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.rs-line-clamp-3 p { display: inline; margin: 0; }
.elementor-loop-container .e-loop-item.product,
.elementor-loop-container .e-loop-item.type-post { padding: 0; margin: 0; float: none; width: auto; border: 0; background: none; box-shadow: none; }
@media (max-width: 767px) {
	.rs-shop-toolbar form.woocommerce-ordering { width: 100%; float: none; }
	.rs-shop-toolbar form.woocommerce-ordering select.orderby { width: 100%; max-width: none; }
}
.rs-no-results { background: var(--rs-surface); border: 1px solid var(--rs-border); border-radius: 14px; padding: 48px 24px; text-align: center; }
.rs-no-results p { margin: 0; }
.rs-no-results__title { font-family: var(--rs-font-sans); font-size: 20px; font-weight: 600; color: var(--rs-ink); }
.rs-no-results__text { margin: 8px auto 0 !important; font-family: var(--rs-font-sans); font-size: 15px; line-height: 1.6; color: var(--rs-muted); max-width: 560px; }
.rs-no-results__actions { margin-top: 20px !important; display: flex; flex-wrap: wrap; gap: 12px 20px; justify-content: center; align-items: center; }
.rs-no-results .button { display: inline-flex; align-items: center; min-height: 42px; padding: 10px 18px; border-radius: var(--rs-radius); background: var(--rs-brand-dark); color: var(--rs-on-dark); font-family: var(--rs-font-sans); font-size: 14px; font-weight: 500; text-transform: none; }
.rs-no-results .button:hover { background: var(--rs-brand); color: var(--rs-on-dark); }
.rs-no-results__link { font-family: var(--rs-font-sans); font-size: 14px; font-weight: 600; color: var(--rs-brand-dark); }
.rs-shop-grid .elementor-pagination { margin-top: 32px; font-family: var(--rs-font-sans); }

/* Category pill rows scroll sideways on phones. */
@media (max-width: 767px) {
	.elementor-element.rs-pill-scroller { overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; margin-right: -20px; padding-right: 20px; }
	.elementor-element.rs-pill-scroller::-webkit-scrollbar { display: none; }
}

/* 9. Single product ----------------------------------------------------- */
.rs-pdp-links { display: flex; flex-wrap: wrap; gap: 10px; }
.rs-pdp-links .rs-pdp-link { display: inline-flex; align-items: center; gap: 8px; padding: 9px 16px; border: 1px solid var(--rs-border); border-radius: var(--rs-radius); font-family: var(--rs-font-sans); font-size: 14px; font-weight: 500; line-height: 1.2; color: var(--rs-text); text-decoration: none; background: var(--rs-surface); transition: border-color .15s ease, color .15s ease; }
.rs-pdp-links .rs-pdp-link:hover { border-color: var(--rs-brand-dark); color: var(--rs-brand-dark); }
.rs-pdp-links .rs-pdp-link svg { flex: none; }
.rs-pdp-note { margin: 0; font-family: var(--rs-font-sans); font-size: 13px; line-height: 1.55; color: var(--rs-muted); }
.rs-doc-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--rs-border); }
.woocommerce-Tabs-panel .rs-doc-list li,
.rs-doc-list li { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px; padding: 12px 0; margin: 0; border-bottom: 1px solid var(--rs-border); font-family: var(--rs-font-sans); font-size: 15px; }
.rs-doc-list li::marker { content: none; }
.rs-doc-list li > span:last-child { font-size: 13px; color: var(--rs-muted); }
.woocommerce-Tabs-panel .rs-doc-list a { color: var(--rs-brand-dark); text-decoration: none; font-weight: 500; }
.woocommerce-Tabs-panel .rs-doc-list a:hover { text-decoration: underline; }
.woocommerce-tabs .woocommerce-Tabs-panel h2 { font-family: var(--rs-font-sans); font-size: 19px; font-weight: 600; color: var(--rs-ink); margin: 26px 0 12px; }
.woocommerce-tabs .woocommerce-Tabs-panel h2:first-child { font-size: 18px; margin-top: 0; margin-bottom: 14px; }
.woocommerce-tabs .woocommerce-Tabs-panel h3 { font-family: var(--rs-font-sans); font-size: 16px; font-weight: 600; color: var(--rs-ink); margin: 20px 0 8px; }
.woocommerce-tabs .woocommerce-Tabs-panel table:not(.shop_attributes) { max-width: min(460px, 100%); }
.woocommerce-tabs table.shop_attributes th { width: 220px; font-family: var(--rs-font-sans); font-weight: 600; }

/* 10. Technology pages -------------------------------------------------- */
.rs-no-family-products .rs-family-products { display: none; }
.rs-family-shop-link { display: inline-flex; align-items: center; gap: 6px; font-family: var(--rs-font-sans); font-size: 15px; font-weight: 500; color: var(--rs-brand-dark); text-decoration: none; }
.rs-family-shop-link:hover { text-decoration: underline; }
.rs-family-content h2 { font-family: var(--rs-font-serif); font-weight: 400; font-size: 32px; line-height: 1.15; color: var(--rs-ink); margin: 0 0 14px; }
.rs-family-content h3 { font-family: var(--rs-font-sans); font-weight: 600; font-size: 20px; color: var(--rs-ink); margin: 24px 0 10px; }
.rs-family-content :is(p, li) { font-family: var(--rs-font-sans); font-size: 16px; line-height: 1.7; color: var(--rs-text); }
.rs-family-content a { color: var(--rs-brand-dark); text-decoration: underline; }
.rs-family-content img { max-width: 100%; height: auto; border-radius: 8px; }
.rs-family-content table { border-collapse: collapse; width: 100%; font-family: var(--rs-font-sans); font-size: 15px; }
.rs-family-content :is(td, th) { border: 1px solid var(--rs-border); padding: 8px 10px; }

/* 11. WooCommerce account, cart, checkout ------------------------------ */
.woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 0; border: 1px solid var(--rs-border); border-radius: var(--rs-radius); overflow: hidden; }
.woocommerce-MyAccount-navigation li { margin: 0; border-bottom: 1px solid var(--rs-border); }
.woocommerce-MyAccount-navigation li:last-child { border-bottom: 0; }
.woocommerce-js .woocommerce-MyAccount-navigation ul li a { display: block; padding: 11px 16px; color: var(--rs-text); background: var(--rs-surface); font-weight: 500; text-decoration: none; }
.woocommerce-js .woocommerce-MyAccount-navigation ul li a:hover { color: var(--rs-brand-dark); background: var(--rs-surface-alt); }
.woocommerce-js .woocommerce-MyAccount-navigation ul li.is-active a { color: var(--rs-ink); background: var(--rs-surface-alt); box-shadow: inset 3px 0 0 var(--rs-brand); }
.woocommerce-MyAccount-content a:not(.button) { color: var(--rs-brand-dark); }
.woocommerce-js :is(.woocommerce-info, .woocommerce-message, .woocommerce-error),
.wc-block-components-notice-banner { border-radius: var(--rs-radius); border-top-color: var(--rs-brand); background: var(--rs-surface-alt); color: var(--rs-text); }

/* 12. Blog posts -------------------------------------------------------- */
/* Astra renders posts. Banner = Astra single post "layout-2" (Customizer > Blog > Single Post),
   styled here to match the Elementor page hero. */
:is(.single-post, .single-case_study) .ast-single-entry-banner .ast-container { max-width: 1140px; padding-left: 0; padding-right: 0; }
@media (max-width: 1024px) { :is(.single-post, .single-case_study) .ast-single-entry-banner .ast-container { padding-left: 0; padding-right: 0; } }
:is(.single-post, .single-case_study) .ast-single-entry-banner .entry-title { font-family: var(--rs-font-serif); font-weight: 400; color: var(--rs-on-dark); max-width: var(--rs-measure-l); }
:is(.single-post, .single-case_study) .ast-single-entry-banner :is(.entry-meta, .entry-meta *) { color: var(--rs-on-dark-soft); font-size: 14px; }
:is(.single-post, .single-case_study) .ast-single-entry-banner .entry-meta a { color: var(--rs-gold); text-decoration: none; }
:is(.single-post, .single-case_study) .ast-single-entry-banner .entry-meta a:hover { color: var(--rs-on-dark); }
:is(.single-post, .single-case_study) .ast-single-entry-banner :is(.ast-breadcrumbs, .rank-math-breadcrumb, .ast-breadcrumbs-wrapper) { font-family: var(--rs-font-sans); font-size: 13px; color: var(--rs-on-dark-muted); }
/* body + [data-post-type] outranks Astra's banner link colour, so the breadcrumb matches the Elementor page hero. */
body:is(.single-post, .single-case_study) .ast-single-entry-banner[data-post-type] .ast-container :is(.ast-breadcrumbs, .rank-math-breadcrumb) a { color: var(--rs-on-dark-muted); text-decoration: none; }
body:is(.single-post, .single-case_study) .ast-single-entry-banner[data-post-type] .ast-container :is(.ast-breadcrumbs, .rank-math-breadcrumb) a:hover { color: var(--rs-on-dark); }
:is(.single-post, .single-case_study) .site-content > .ast-container { padding-top: var(--rs-section-y-sm); padding-bottom: var(--rs-section-y-sm); }
:is(.single-post, .single-case_study) .entry-content { max-width: var(--rs-measure-l); margin-left: 0; margin-right: auto; }
/* Featured image under the banner: same left edge as the text, capped so tall posters stay readable. */
:is(.single-post, .single-case_study) .ast-single-post-featured-section { max-width: 640px; margin: 0 0 32px; }
:is(.single-post, .single-case_study) .ast-single-post-featured-section img { width: 100%; height: auto; border-radius: var(--rs-radius); border: 1px solid var(--rs-border); }
:is(.single-post, .single-case_study) .entry-content img { border-radius: var(--rs-radius); }
:is(.single-post, .single-case_study) .post-navigation a { color: var(--rs-brand-dark); }
/* 13. Accessibility ----------------------------------------------------- */
:where(a, button, .elementor-button, input, select, textarea, summary):focus-visible {
	outline: 2px solid var(--rs-brand-dark);
	outline-offset: 2px;
}
.rs-dark :where(a, .elementor-button):focus-visible { outline-color: var(--rs-on-dark); }
@media (prefers-reduced-motion: reduce) {
	.elementor-widget.rs-btn-link .elementor-button-icon { transition: none; }
}

/* Submenu arrows in the mobile menu are <button>s. Theme Style button hover/focus colours otherwise fill them brand red and hide the arrow. */
body :is(.ast-mobile-header-content, .ast-mobile-popup-drawer, .ast-header-break-point .main-header-menu) .ast-menu-toggle,
body :is(.ast-mobile-header-content, .ast-mobile-popup-drawer, .ast-header-break-point .main-header-menu) .ast-menu-toggle:is(:hover, :focus, :active) { background: transparent; color: inherit; border: 0; box-shadow: none; }

/* Google Maps loads after a click or functional consent (includes/privacy.php). */
.rs-map-wrap { position: relative; }
.rs-map-wrap iframe[data-rs-src] { visibility: hidden; }
.rs-map-consent { position: absolute; inset: 0; z-index: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--rs-space-4); padding: var(--rs-space-5); text-align: center; background: var(--rs-surface-alt); border: 1px solid var(--rs-border); border-radius: var(--rs-radius-lg); font-family: var(--rs-font-sans); color: var(--rs-text); }
.rs-map-consent p { margin: 0; max-width: 360px; font-size: 15px; }
.rs-map-consent__actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: var(--rs-space-4); }
.rs-map-consent__actions a { color: var(--rs-brand-dark); font-weight: 600; font-size: 15px; }
.rs-map-wrap.is-loaded .rs-map-consent { display: none; }

/* Case studies: content images no wider than the featured-image column. */
.single-case_study .entry-content figure img { width: auto; max-width: min(100%, 640px); height: auto; }
/* Product descriptions: figures no wider than 640px. */
.woocommerce-Tabs-panel--description figure img { width: auto; max-width: min(100%, 640px); height: auto; }
.woocommerce-Tabs-panel--description figure figcaption { font-size: 13px; color: var(--rs-text-muted); margin-top: 6px; }
