/* Spartan AI redesign: site-wide building blocks and inner pages.
   Reads the variables from sprt-00-tokens.css. Everything is scoped under body.sprt
   and, unless noted, under .firwl-master so the header and footer stay untouched. */

/* ---------- 1. Page shell, containers, rhythm ---------- */

/* The stock wrappers use overflow-x: hidden, which turns them into scroll containers and
   disables position: sticky inside the page. "clip" crops the same way without that side effect. */
body.sprt .firwl-global,
body.sprt .firwl-master {
	overflow-x: clip;
}

body.sprt .firwl-master {
	background-color: var(--sprt-paper);
	color: var(--sprt-ink);
}

body.sprt .firwl-master .firwl-container {
	box-sizing: border-box;
	max-width: calc(var(--sprt-maxw) + 2 * var(--sprt-gutter));
	padding-left: var(--sprt-gutter);
	padding-right: var(--sprt-gutter);
}

body.sprt .firwl-master .firwl-container .firwl-container {
	max-width: none;
	padding-left: 0;
	padding-right: 0;
}

/* WPBakery rows: one content edge for every row. The builder nests containers under a
   mix of row margins (-15px or 0), per-row custom padding (15px or 0) and column
   padding, so the same container started at -15, 0 or 15px depending on the row and
   its columns landed on the gutter in some rows and 15px inside it in others. Each
   outermost container is placed against the content wrapper instead of its parent:
   it always starts 15px outside the wrapper, so the 15px column padding puts the
   content on the gutter line used by the header and the footer. The home page and
   /contact-us/ set their own row frame and are left alone. */
body.sprt:not(.home):not(.page-id-598) .firwl-master .wpb-content-wrapper {
	container-type: inline-size;
}

body.sprt:not(.home):not(.page-id-598) .firwl-master .wpb-content-wrapper .firwl-container:not(.firwl-container .firwl-container) {
	flex: none;
	width: calc(100cqw + 30px);
	max-width: calc(var(--sprt-maxw) + 2 * var(--sprt-gutter) + 30px);
	margin-left: max(calc(50% - 50cqw - 15px), calc((100% - var(--sprt-maxw) - 2 * var(--sprt-gutter) - 30px) / 2));
	margin-right: 0;
}

/* Rows with a builder column gap of 10px or more pull their columns back out by half
   the gap, so those columns have no inset of their own: the container supplies it. */
body.sprt:not(.home):not(.page-id-598) .firwl-master .wpb-content-wrapper .vc_row[class*="vc_column-gap-"]:not(.vc_column-gap-1, .vc_column-gap-2, .vc_column-gap-3, .vc_column-gap-4, .vc_column-gap-5) > .firwl-container:not(.firwl-container .firwl-container) {
	padding-left: calc(var(--sprt-gutter) + 15px);
	padding-right: calc(var(--sprt-gutter) + 15px);
}

body.sprt .firwl-master .firwl-vc_section {
	margin-top: calc(var(--sprt-section-y) * 0.6);
	margin-bottom: calc(var(--sprt-section-y) * 0.6);
}

body.sprt .firwl-master .firwl-vc_section .firwl-vc_section {
	margin-top: 0;
	margin-bottom: 0;
}

body.sprt .firwl-master .firwl-section {
	padding: calc(var(--sprt-section-y) * 0.6) 0;
}

/* Plain pages (default template, block-editor content): the stock white "paper" slab
   becomes the page paper, and the reading column lines up with the page title. */
body.sprt.page .firwl-master > .firwl-section.firwl-paper {
	background-color: transparent;
	color: var(--sprt-ink);
}

body.sprt.page .firwl-master > .firwl-section.firwl-paper > .firwl-container > .firwl-entrycontent {
	max-width: 46rem;
	margin-left: 0;
	margin-right: 0;
}

/* WPBakery fills: plain rows sit on paper, hairlines use the line token.
   !important is required because the per-row custom CSS is printed with !important. */
body.sprt .firwl-master .vc_row.vc_row-has-fill,
body.sprt .firwl-master .vc_section.vc_section-has-fill,
body.sprt .firwl-master .vc_col-has-fill > .vc_column-inner {
	background-color: transparent !important;
	border-color: var(--sprt-line) !important;
}

/* ---------- 2. Typography in page content ---------- */

body.sprt .firwl-master h1,
body.sprt .firwl-master h2,
body.sprt .firwl-master h3,
body.sprt .firwl-master h4,
body.sprt .firwl-master h5,
body.sprt .firwl-master h6 {
	color: var(--sprt-ink);
	text-rendering: optimizeLegibility;
}

body.sprt .firwl-master h2 { font-size: var(--sprt-fs-h2); }
body.sprt .firwl-master h3 { font-size: var(--sprt-fs-h3); }
body.sprt .firwl-master h4 { font-size: 1.25rem; }
body.sprt .firwl-master h5 { font-size: 1.0625rem; }
body.sprt .firwl-master h6 { font-size: var(--sprt-fs-body); }

/* Block-editor headings: bold and inline-colour wrappers typed around the whole heading
   must not switch it to the sans or to another colour. */
body.sprt .firwl-master .firwl-the_content > h2 {
	margin: 0 0 1.5rem;
	font-size: calc(var(--sprt-fs-h2) * 0.72);
	text-align: left;
}

body.sprt .firwl-master .firwl-the_content > h3,
body.sprt .firwl-master .firwl-the_content > h4 {
	margin: 2rem 0 1rem;
	text-align: left;
}

body.sprt .firwl-master .firwl-entrycontent :is(h1, h2, h3) :is(strong, b) {
	font-family: inherit;
	font-weight: inherit;
	letter-spacing: inherit;
	color: inherit;
}

body.sprt .firwl-master .firwl-entrycontent :is(h1, h2, h3, h4) :is(mark.has-inline-color, span[style*="color"]) {
	color: inherit !important; /* against the style attribute */
}

body.sprt .firwl-master .firwl-entrycontent p,
body.sprt .firwl-master .firwl-entrycontent li {
	color: var(--sprt-ink-soft);
	font-size: var(--sprt-fs-body);
	line-height: 1.65;
	letter-spacing: 0;
}

body.sprt .firwl-master .firwl-entrycontent p {
	margin-top: 0;
	margin-bottom: 1.1em;
}

body.sprt .firwl-master strong,
body.sprt .firwl-master b {
	font-family: var(--sprt-sans);
	font-weight: 600;
	letter-spacing: 0;
	color: var(--sprt-ink);
}

/* Links inside running text */
body.sprt .firwl-master .firwl-entrycontent p a:not(.firwl-btn),
body.sprt .firwl-master .firwl-entrycontent li a:not(.firwl-btn) {
	color: var(--sprt-violet-deep);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.2em;
	text-decoration-color: var(--sprt-lilac);
	transition: text-decoration-color 0.2s, color 0.2s;
}

body.sprt .firwl-master .firwl-entrycontent p a:not(.firwl-btn):hover,
body.sprt .firwl-master .firwl-entrycontent li a:not(.firwl-btn):hover {
	color: var(--sprt-violet);
	text-decoration-color: currentColor;
}

body.sprt .firwl-master .firwl-entrycontent p a:not(.firwl-btn) strong,
body.sprt .firwl-master .firwl-entrycontent li a:not(.firwl-btn) strong {
	color: inherit;
}

/* Inline colours typed into the content (pure blue, pale violet) fail the palette and
   contrast; map them to the accent. !important is needed against the style attribute. */
body.sprt .firwl-master .firwl-entrycontent span[style*="color"],
body.sprt .firwl-master .firwl-entrycontent mark.has-inline-color {
	color: var(--sprt-violet-deep) !important;
	background-color: transparent !important;
}

/* Lists */
body.sprt .firwl-master .firwl-entrycontent ul,
body.sprt .firwl-master .firwl-entrycontent ol {
	margin: 0 0 1.25em 0;
	padding-left: 1.25rem;
}

body.sprt .firwl-master .firwl-entrycontent ul ul,
body.sprt .firwl-master .firwl-entrycontent ol ol,
body.sprt .firwl-master .firwl-entrycontent ul ol,
body.sprt .firwl-master .firwl-entrycontent ol ul {
	margin-bottom: 0;
}

body.sprt .firwl-master .firwl-entrycontent li {
	margin-left: 0;
	padding: 0.2rem 0 0.2rem 0.25rem;
}

body.sprt .firwl-master .firwl-entrycontent ul > li {
	list-style-type: disc;
}

body.sprt .firwl-master .firwl-entrycontent li::marker {
	color: var(--sprt-violet);
}

/* Wrapper items the editor produced to indent a nested list */
body.sprt .firwl-master .firwl-entrycontent li[style*="list-style-type: none"] {
	list-style-type: none;
	padding-left: 0;
}

body.sprt .firwl-master .firwl-entrycontent ul:has(> li[style*="list-style-type: none"]:only-child) {
	padding-left: 0;
}

/* Comfortable measure for long copy in full-width columns */
body.sprt .firwl-master .vc_col-sm-12 > .vc_column-inner > .wpb_wrapper > .wpb_text_column > .wpb_wrapper > p,
body.sprt .firwl-master .vc_col-sm-12 > .vc_column-inner > .wpb_wrapper > .wpb_text_column > .wpb_wrapper > ul,
body.sprt .firwl-master .vc_col-sm-12 > .vc_column-inner > .wpb_wrapper > .wpb_text_column > .wpb_wrapper > ol {
	max-width: 46rem;
}

body.sprt .firwl-master .wpb_text_column > .wpb_wrapper > p:has(> img) {
	max-width: none;
}

body.sprt .firwl-master .wpb_text_column > .wpb_wrapper > [style*="text-align: center"] {
	margin-left: auto;
	margin-right: auto;
}

body.sprt .firwl-master .wpb_text_column,
body.sprt .firwl-master .wpb_content_element {
	margin-bottom: 1.5rem;
}

/* Blockquotes */
body.sprt .firwl-master .firwl-entrycontent blockquote,
body.sprt .firwl-master .firwl-entrycontent .wp-block-quote {
	margin: 2.5rem 0;
	padding: 0.25rem 0 0.25rem 1.5rem;
	border: 0;
	border-left: 2px solid var(--sprt-violet) !important; /* stock rule removes the left border with !important */
	background: transparent;
}

body.sprt .firwl-master .firwl-entrycontent blockquote::before {
	display: none;
}

body.sprt .firwl-master .firwl-entrycontent blockquote,
body.sprt .firwl-master .firwl-entrycontent blockquote p {
	font-family: var(--sprt-serif);
	font-size: var(--sprt-fs-h3);
	line-height: 1.3;
	letter-spacing: -0.02em;
	color: var(--sprt-ink);
}

body.sprt .firwl-master .firwl-entrycontent blockquote cite {
	font-family: var(--sprt-mono);
	font-size: var(--sprt-fs-label);
	font-style: normal;
	color: var(--sprt-ink-soft);
}

/* Tables */
body.sprt .firwl-master .firwl-entrycontent table {
	width: 100%;
	border-collapse: collapse;
	font-size: var(--sprt-fs-small);
}

body.sprt .firwl-master .firwl-entrycontent table th,
body.sprt .firwl-master .firwl-entrycontent table td {
	padding: 0.875rem 1rem 0.875rem 0;
	border: 0;
	border-bottom: 1px solid var(--sprt-line);
	text-align: left;
	color: var(--sprt-ink-soft);
}

body.sprt .firwl-master .firwl-entrycontent table tr:first-child {
	border-color: var(--sprt-line);
}

body.sprt .firwl-master .firwl-entrycontent table th {
	font-family: var(--sprt-mono);
	font-size: var(--sprt-fs-label);
	font-weight: 400;
	color: var(--sprt-ink);
}

/* Block-editor separators */
body.sprt .firwl-master .firwl-entrycontent hr.wp-block-separator {
	width: 100%;
	max-width: none;
	margin: 2.5rem 0;
	padding: 0;
	border: 0;
	border-top: 1px solid var(--sprt-line);
	opacity: 1;
}

/* ---------- 3. Images and figures ---------- */

body.sprt .firwl-master .wpb_single_image img,
body.sprt .firwl-master .wpb_text_column img,
body.sprt .firwl-master .firwl-the_content .wp-block-image img {
	max-width: 100%;
	height: auto;
	border: 1px solid var(--sprt-line);
	border-radius: var(--sprt-radius-panel);
	background-color: var(--sprt-surface);
	box-shadow: none;
}

body.sprt .firwl-master .wpb_single_image .vc_single_image-wrapper,
body.sprt .firwl-master .wpb_single_image .vc_figure,
body.sprt .firwl-master .wpb_single_image a {
	max-width: 100%;
	border-radius: var(--sprt-radius-panel);
}

body.sprt .firwl-master .wpb_single_image a:hover img {
	border-color: var(--sprt-lilac);
}

body.sprt .firwl-master .firwl-the_content .wp-block-image {
	margin: 0 0 1.5rem 0;
}

/* Plain pages: full-size uploads filled the whole column (an 828px square for a logo).
   Cap the height; anything named as a logo becomes a small padded panel. */
body.sprt.page .firwl-master .firwl-the_content .wp-block-image img {
	width: auto;
	max-height: 30rem;
}

body.sprt.page .firwl-master .firwl-the_content .wp-block-image img[src*="logo" i] {
	box-sizing: border-box;
	max-width: min(100%, 15rem);
	max-height: 15rem;
	padding: 1.25rem;
	object-fit: contain;
}

/* Label-left / content-right sections: pictures were centred at their own width, so
   their left edge jumped against the text column. Start every picture on the text edge. */
body.sprt .firwl-master .firwl-entrycontent .wpb_wrapper:has(> div > .firwl-caption__m) > .wpb_single_image.vc_align_center,
body.sprt .firwl-master .firwl-entrycontent .wpb_wrapper:has(> .vc_separator-has-text) > .wpb_single_image.vc_align_center {
	text-align: left;
}

body.sprt .firwl-master figcaption,
body.sprt .firwl-master .wpb_singleimage_heading {
	margin-top: 0.75rem;
	font-family: var(--sprt-mono);
	font-size: var(--sprt-fs-label);
	font-weight: 400;
	letter-spacing: 0;
	text-transform: none;
	color: var(--sprt-ink-soft);
	text-align: left;
}

/* ---------- 4. Inner-page title banner ---------- */

body.sprt .firwl-master .firwl-pageheader {
	position: relative;
	text-align: left;
	background-color: var(--sprt-paper);
	color: var(--sprt-ink);
	border-bottom: 1px solid var(--sprt-line);
}

/* The one atmospheric effect: a soft lilac to signal-blue glow in the corner */
body.sprt .firwl-master .firwl-pageheader::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	background:
		radial-gradient(42rem 22rem at 100% 0%, color-mix(in srgb, var(--sprt-lilac) 50%, transparent), transparent 70%),
		radial-gradient(30rem 16rem at 78% 110%, color-mix(in srgb, var(--sprt-signal) 16%, transparent), transparent 70%);
}

/* The stock photo banner is replaced by the paper banner. The theme script writes
   display:block into the style attribute of the picture, hence !important. */
body.sprt .firwl-master .firwl-pageheader > .firwl-bgimg,
body.sprt .firwl-master .firwl-pageheader > .firwl-grad-layer,
body.sprt .firwl-master .firwl-pageheader > .firwl-particles,
body.sprt .firwl-master .firwl-pageheader .firwl-decor {
	display: none !important;
}

body.sprt .firwl-master .firwl-pageheader__contents {
	position: relative;
	z-index: 1;
	padding: clamp(3rem, 7vw, 6rem) 0 clamp(2.5rem, 5vw, 4rem);
	background: transparent;
}

body.sprt .firwl-master .firwl-pageheader .firwl-pagecaption {
	max-width: 22ch;
	margin: 0;
	font-family: var(--sprt-serif);
	font-size: var(--sprt-fs-display);
	font-weight: 400;
	line-height: 1.05;
	letter-spacing: -0.03em;
	text-transform: none;
	color: var(--sprt-ink);
}

body.sprt .firwl-master .firwl-pageheader .firwl-meta {
	margin: 1rem 0 0;
	text-align: left;
	font-family: var(--sprt-mono);
	font-size: var(--sprt-fs-label);
	font-weight: 400;
	letter-spacing: 0;
	text-transform: none;
	color: var(--sprt-ink-soft);
}

/* Share button: a small quiet circle on the hairline instead of the neon hexagon */
body.sprt .firwl-master .firwl-pageheader .firwl-shareball {
	left: auto;
	right: calc(var(--sprt-gutter) + 7rem);
	bottom: 0;
	width: 1px;
}

body.sprt .firwl-master .firwl-pageheader .ttg-reaktions-shareball__menu-btn {
	width: 44px;
	height: 44px;
	border: 1px solid var(--sprt-line);
	border-radius: 50%;
	background: var(--sprt-surface);
	color: var(--sprt-ink);
	box-shadow: none;
	clip-path: none;
}

body.sprt .firwl-master .firwl-pageheader .ttg-reaktions-shareball__menu-btn i {
	font-size: 18px;
	color: var(--sprt-ink);
}

/* The opened fan: the same round hairline chips, not neon hexagons */
body.sprt .firwl-master .ttg-reaktions-shareball .ttg-reaktions-shareball__icons a {
	border: 1px solid var(--sprt-line);
	border-radius: 50%;
	background-color: var(--sprt-surface);
	color: var(--sprt-ink);
	line-height: 38px;
	box-shadow: none;
	clip-path: none;
}

body.sprt .firwl-master .ttg-reaktions-shareball .ttg-reaktions-shareball__icons a:hover {
	border-color: var(--sprt-violet);
	color: var(--sprt-violet-deep);
}

/* Closed: the links sit stacked behind the button but stayed in the tab order */
body.sprt .firwl-master .ttg-reaktions-shareball:not(.ttg-reaktions-active) .ttg-reaktions-shareball__icons a {
	visibility: hidden;
}

/* ---------- 5. Captions, labels, section headings ---------- */

body.sprt .firwl-glitchtxt::before,
body.sprt .firwl-glitchtxt::after {
	display: none !important; /* stock glitch animation switches these on with a later class */
}

body.sprt .firwl-master .firwl-decor {
	display: none;
}

body.sprt .firwl-master .firwl-caption {
	display: block;
	margin: 0 0 1.25rem;
	padding: 0;
	font-family: var(--sprt-serif);
	font-weight: 400;
	letter-spacing: -0.02em;
	line-height: 1.15;
	text-transform: none;
	color: var(--sprt-ink);
}

body.sprt .firwl-master .firwl-caption::before,
body.sprt .firwl-master .firwl-caption::after {
	display: none;
}

body.sprt .firwl-master .firwl-caption span {
	display: block;
}

body.sprt .firwl-master .firwl-caption__m,
body.sprt .firwl-master .firwl-caption__l {
	font-size: var(--sprt-fs-h3);
}

body.sprt .firwl-master .firwl-caption__xl {
	font-size: var(--sprt-fs-h2);
	letter-spacing: -0.03em !important; /* stock rule sets tracking with !important */
	line-height: 1.08;
}

body.sprt .firwl-master .firwl-caption__xxl {
	font-size: var(--sprt-fs-display);
	letter-spacing: -0.03em !important;
	line-height: 1.05;
	margin-top: 0;
}

/* Small utility labels */
body.sprt .firwl-master .firwl-caption__s,
body.sprt .firwl-master .firwl-caption__xs,
body.sprt .firwl-master .firwl-section-caption h6.firwl-caption {
	margin-bottom: 0.875rem;
	font-family: var(--sprt-mono);
	font-size: var(--sprt-fs-label);
	font-weight: 400;
	letter-spacing: 0;
	line-height: 1.4;
	color: var(--sprt-violet-deep);
}

/* Stock "gradient text" clips a neon gradient into the glyphs; return to solid ink */
body.sprt .firwl-master .firwl-gradtext {
	background: none !important;
	-webkit-text-fill-color: currentColor !important;
}

body.sprt .firwl-master .firwl-capfont {
	text-transform: none;
	letter-spacing: 0;
}

/* Label + heading + intro group */
body.sprt .firwl-master .firwl-section-caption {
	max-width: 46rem;
	margin: 0 0 clamp(2rem, 4vw, 3.5rem);
	text-align: left;
}

body.sprt .firwl-master .firwl-section-caption h6 {
	display: block;
}

body.sprt .firwl-master .firwl-section-caption h2 {
	margin: 0 0 1rem;
	font-family: var(--sprt-serif);
	font-size: var(--sprt-fs-h2);
	font-weight: 400;
	letter-spacing: -0.03em;
	line-height: 1.08;
	text-transform: none;
}

body.sprt .firwl-master .firwl-section-caption p {
	max-width: 38rem;
	margin: 0;
	font-size: var(--sprt-fs-lead);
	line-height: 1.5;
	color: var(--sprt-ink-soft);
}

/* Product pages: section label on the left, content on the right */
body.sprt .firwl-master .firwl-entrycontent .wpb_wrapper:has(> div > .firwl-caption__m),
body.sprt .firwl-master .firwl-entrycontent .wpb_wrapper:has(> .vc_separator-has-text) {
	padding: clamp(2rem, 4vw, 3.5rem) 0;
	border-top: 1px solid var(--sprt-line);
}

body.sprt .firwl-master .firwl-entrycontent .firwl-vc-row-container:first-child .wpb_wrapper:has(> div > .firwl-caption__m),
body.sprt .firwl-master .firwl-entrycontent .firwl-vc-row-container:first-child .wpb_wrapper:has(> .vc_separator-has-text) {
	border-top: 0;
}

@media (min-width: 1024px) {
	body.sprt .firwl-master .firwl-entrycontent .wpb_wrapper:has(> div > .firwl-caption__m),
	body.sprt .firwl-master .firwl-entrycontent .wpb_wrapper:has(> .vc_separator-has-text) {
		display: grid;
		grid-template-columns: minmax(11rem, 1fr) minmax(0, 3fr);
		column-gap: clamp(2rem, 4vw, 4rem);
		align-items: start;
	}

	body.sprt .firwl-master .firwl-entrycontent .wpb_wrapper:has(> div > .firwl-caption__m) > *,
	body.sprt .firwl-master .firwl-entrycontent .wpb_wrapper:has(> .vc_separator-has-text) > * {
		grid-column: 2;
		min-width: 0;
	}

	/* Only one element may take the label column: the section caption when there is one,
	   otherwise the first text separator. Later separators stay in the content column as
	   sub-headings (see below), or they would all stack on top of each other. */
	body.sprt .firwl-master .firwl-entrycontent .wpb_wrapper > div:has(> .firwl-caption__m),
	body.sprt .firwl-master .firwl-entrycontent .wpb_wrapper:not(:has(> div > .firwl-caption__m)) > .vc_separator-has-text:not(.vc_separator-has-text ~ .vc_separator-has-text) {
		grid-column: 1;
		grid-row: 1 / span 80;
		position: sticky;
		top: 8rem;
	}

	body.sprt .firwl-master .firwl-entrycontent .wpb_wrapper:has(> div > .firwl-caption__m) > .vc_empty_space:first-child,
	body.sprt .firwl-master .firwl-entrycontent .wpb_wrapper:has(> .vc_separator-has-text) > .vc_empty_space:first-child {
		display: none;
	}
}

/* ---------- 6. WPBakery separators and icons ---------- */

body.sprt .firwl-master .vc_separator .vc_sep_holder .vc_sep_line {
	border-color: var(--sprt-line);
	box-shadow: none;
	height: 0;
}

body.sprt .firwl-master .vc_separator.vc_sep_shadow .vc_sep_line {
	box-shadow: none;
}

body.sprt .firwl-master .vc_separator.vc_separator-has-text {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.875rem;
	margin: 0 0 1.25rem !important; /* per-element custom CSS sets margins with !important */
	padding: 0 !important;
	border: 0 !important;
}

body.sprt .firwl-master .vc_separator.vc_separator-has-text .vc_sep_holder {
	display: none;
}

body.sprt .firwl-master .vc_separator.vc_separator-has-text h4 {
	flex: 1 1 8rem;
	margin: 0;
	padding: 0;
	font-family: var(--sprt-serif);
	font-size: var(--sprt-fs-h3);
	font-weight: 400;
	letter-spacing: -0.02em;
	line-height: 1.15;
	color: var(--sprt-ink);
}

/* Text separators used as sub-headings inside a section that already has a label:
   a hairline above and room to breathe, so each one starts a new block. */
body.sprt .firwl-master .wpb_wrapper:has(> div > .firwl-caption__m) > .vc_separator.vc_separator-has-text,
body.sprt .firwl-master .wpb_wrapper > .vc_separator.vc_separator-has-text ~ .vc_separator.vc_separator-has-text {
	margin: clamp(2rem, 4vw, 3rem) 0 1.25rem !important; /* per-element custom CSS sets margins with !important */
	padding: clamp(2rem, 4vw, 3rem) 0 0 !important;
	border-top: 1px solid var(--sprt-line) !important;
}

body.sprt .firwl-master .vc_separator .vc_icon_element {
	flex: 0 0 auto;
	margin: 0;
	padding: 0;
	line-height: 0;
}

body.sprt .firwl-master .vc_icon_element.vc_icon_element-outer .vc_icon_element-inner {
	width: 2.5rem;
	height: 2.5rem;
	border: 1px solid var(--sprt-line);
	border-radius: var(--sprt-radius-control);
	background-color: var(--sprt-surface);
}

body.sprt .firwl-master .vc_icon_element.vc_icon_element-outer .vc_icon_element-inner .vc_icon_element-icon {
	font-size: 1rem !important; /* plugin sizes the glyph with !important */
	color: var(--sprt-violet);
}

/* Icon boxes (icons2go) */
body.sprt .firwl-master .t2gicons-icon {
	color: var(--sprt-violet);
	border-color: var(--sprt-line);
	background-color: transparent;
	box-shadow: none;
}

/* The plugin colours the glyph on ::before and draws the ring on ::after */
body.sprt .firwl-master .t2gicons-icon[class*="t2gicon-color-"]::before {
	color: var(--sprt-violet);
}

body.sprt .firwl-master .t2gicons-icon[class*="t2gicon-shape-"][class*="-border"]::after {
	border: 1px solid var(--sprt-line) !important; /* plugin ring colour is !important */
}

/* Headings with fonts and colours typed into the style attribute */
body.sprt .firwl-master .vc_custom_heading {
	font-family: var(--sprt-sans) !important;
	font-weight: 500 !important;
	font-size: 1.25rem !important;
	color: var(--sprt-ink) !important;
	letter-spacing: 0;
}

/* ---------- 7. Buttons ---------- */

/* Shared pill geometry */
body.sprt .firwl-master .firwl-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	height: auto;
	min-width: 0;
	min-height: 2.75rem;
	padding: 0.625rem 1.375rem;
	border: 1px solid transparent;
	border-radius: var(--sprt-radius-pill);
	background-image: none;
	clip-path: none;
	font-family: var(--sprt-mono);
	font-size: var(--sprt-fs-small);
	font-weight: 400;
	line-height: 1.2;
	letter-spacing: 0;
	text-transform: none;
	text-decoration: none;
	transition: background-color 0.2s, color 0.2s, border-color 0.2s;
}

body.sprt .firwl-master .firwl-btn::before,
body.sprt .firwl-master .firwl-btn::after {
	display: none;
}

body.sprt .firwl-master .firwl-btn.firwl-btn__s {
	min-height: 2.25rem;
	padding: 0.375rem 1rem;
	font-size: var(--sprt-fs-label);
}

/* Primary: ink pill, paper text. !important beats the customizer gradient, which is !important. */
body.sprt .firwl-master .firwl-btn.firwl-btn-primary {
	background-color: var(--sprt-ink) !important;
	background-image: none !important;
	border-color: var(--sprt-ink);
	color: var(--sprt-on-ink);
}

body.sprt .firwl-master .firwl-btn.firwl-btn-primary:hover {
	background-color: var(--sprt-violet-deep) !important;
	border-color: var(--sprt-violet-deep);
	color: var(--sprt-on-ink);
}

/* Secondary on paper: a text link with an arrow, no box */
body.sprt .firwl-master .firwl-btn:not(.firwl-btn-primary):not(.firwl-btn__r) {
	min-height: 0;
	padding: 0.25rem 0;
	border: 0;
	border-radius: 0;
	background-color: transparent;
	color: var(--sprt-ink);
	text-decoration: underline;
	text-decoration-color: var(--sprt-line);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.4em;
}

body.sprt .firwl-master .firwl-btn:not(.firwl-btn-primary):not(.firwl-btn__r)::after {
	content: "\2192";
	display: inline;
	position: static;
	width: auto;
	border: 0;
	opacity: 1;
	transform: none;
	transition: transform 0.2s;
}

body.sprt .firwl-master .firwl-btn:not(.firwl-btn-primary):not(.firwl-btn__r):hover {
	color: var(--sprt-violet-deep);
	text-decoration-color: currentColor;
}

/* On ink: every button becomes a paper pill with ink text */
body.sprt .firwl-master .firwl-negative .firwl-btn:not(.firwl-btn__r),
body.sprt .firwl-master .firwl-negative .firwl-btn.firwl-btn-primary {
	min-height: 2.75rem;
	padding: 0.625rem 1.375rem;
	border: 1px solid var(--sprt-on-ink);
	border-radius: var(--sprt-radius-pill);
	background-color: var(--sprt-on-ink) !important;
	background-image: none !important;
	color: var(--sprt-ink) !important; /* stock .firwl-negative link colour is !important white */
	text-decoration: none;
}

body.sprt .firwl-master .firwl-negative .firwl-btn.firwl-btn__s:not(.firwl-btn__r) {
	min-height: 2.25rem;
	padding: 0.375rem 1rem;
}

body.sprt .firwl-master .firwl-negative .firwl-btn:not(.firwl-btn__r)::after {
	display: none;
}

body.sprt .firwl-master .firwl-negative .firwl-btn:not(.firwl-btn__r):hover,
body.sprt .firwl-master .firwl-negative a:hover .firwl-btn:not(.firwl-btn__r) {
	background-color: var(--sprt-lilac) !important;
	border-color: var(--sprt-lilac);
	color: var(--sprt-ink) !important;
}

/* Round icon chips (ticks in feature lists) */
body.sprt .firwl-master .firwl-btn.firwl-btn__r {
	flex: 0 0 auto;
	width: 1.5rem;
	height: 1.5rem;
	min-width: 1.5rem;
	min-height: 0;
	margin: 0.1rem 0.75rem 0 0;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background-color: color-mix(in srgb, var(--sprt-violet) 12%, transparent);
	color: var(--sprt-violet-deep);
	cursor: default;
}

body.sprt .firwl-master .firwl-btn.firwl-btn__r i {
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1;
}

body.sprt .firwl-master .firwl-negative .firwl-btn.firwl-btn__r {
	background-color: color-mix(in srgb, var(--sprt-lilac) 22%, transparent);
	color: var(--sprt-lilac);
}

/* WPBakery buttons */
body.sprt .firwl-master .vc_btn3.vc_btn3-size-md,
body.sprt .firwl-master .vc_btn3 {
	padding: 0.75rem 1.375rem;
	border: 1px solid var(--sprt-ink);
	border-radius: var(--sprt-radius-pill);
	background-color: var(--sprt-ink);
	background-image: none;
	box-shadow: none;
	color: var(--sprt-on-ink);
	font-family: var(--sprt-mono);
	font-size: var(--sprt-fs-small);
	font-weight: 400;
	letter-spacing: 0;
	text-transform: none;
}

body.sprt .firwl-master .vc_btn3:hover,
body.sprt .firwl-master .vc_btn3:focus {
	border-color: var(--sprt-violet-deep);
	background-color: var(--sprt-violet-deep);
	color: var(--sprt-on-ink);
}

/* ---------- 8. Feature lists ---------- */

body.sprt .firwl-master .firwl-herolist {
	margin: 1.5rem 0;
}

body.sprt .firwl-master .firwl-herolist p {
	display: flex;
	align-items: flex-start;
	margin: 0;
	padding: 0.75rem 0;
	border-top: 1px solid var(--sprt-line);
	font-size: var(--sprt-fs-body);
	line-height: 1.5;
	color: var(--sprt-ink);
}

body.sprt .firwl-master .firwl-herolist p:last-child {
	border-bottom: 1px solid var(--sprt-line);
}

/* ---------- 9. Dark (ink) sections ---------- */

/* Rows with a photo behind them become ink sections; the photo stays as a faint texture */
body.sprt .firwl-master .firwl-vc-row-container > .firwl-bgimg {
	background-color: var(--sprt-ink);
}

body.sprt .firwl-master .firwl-vc-row-container > .firwl-bgimg img {
	opacity: 0.22;
	filter: grayscale(1);
	mix-blend-mode: luminosity;
}

body.sprt .firwl-master .firwl-vc-row-container > .firwl-bgimg::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 2;
	pointer-events: none;
	background: radial-gradient(48rem 26rem at 85% 0%, color-mix(in srgb, var(--sprt-violet) 45%, transparent), transparent 70%);
}

body.sprt .firwl-master .firwl-vc-row-container > .firwl-particles {
	display: none;
}

body.sprt#firwlBody .firwl-master .firwl-negative {
	color: var(--sprt-on-ink) !important; /* stock rule is #firwlBody .firwl-negative !important */
}

body.sprt .firwl-master .firwl-negative h1,
body.sprt .firwl-master .firwl-negative h2,
body.sprt .firwl-master .firwl-negative h3,
body.sprt .firwl-master .firwl-negative h4,
body.sprt .firwl-master .firwl-negative h5,
body.sprt .firwl-master .firwl-negative h6,
body.sprt .firwl-master .firwl-negative .firwl-caption,
body.sprt .firwl-master .firwl-negative strong,
body.sprt .firwl-master .firwl-negative .firwl-herolist p {
	color: var(--sprt-on-ink);
}

body.sprt .firwl-master .firwl-negative .firwl-entrycontent p,
body.sprt .firwl-master .firwl-entrycontent .firwl-negative p,
body.sprt .firwl-master .firwl-entrycontent .firwl-negative li,
body.sprt .firwl-master .firwl-negative .firwl-section-caption p {
	color: var(--sprt-on-ink-soft);
}

body.sprt .firwl-master .firwl-negative .firwl-section-caption h6.firwl-caption,
body.sprt .firwl-master .firwl-negative .firwl-caption__s,
body.sprt .firwl-master .firwl-negative .firwl-caption__xs {
	color: var(--sprt-lilac);
}

body.sprt .firwl-master .firwl-negative .firwl-herolist p {
	border-color: var(--sprt-line-ink);
}

body.sprt .firwl-master .firwl-entrycontent .firwl-negative p a:not(.firwl-btn) {
	color: var(--sprt-lilac);
}

/* ---------- 10. Cards ---------- */

body.sprt .firwl-master .firwl-cards,
body.sprt .firwl-master .firwl-cards.firwl-cards__def {
	display: flex;
	height: 100%;
	min-width: 0;
	max-width: none;
	padding-top: 0;
	text-align: left;
	text-decoration: none;
}

body.sprt .firwl-master .firwl-cards::after {
	display: none;
}

body.sprt .firwl-master .firwl-cards .firwl-cards__content {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 2.5rem;
	width: 100%;
	height: auto;
	min-height: 20rem;
	padding: clamp(1.5rem, 3vw, 2.25rem);
	border-radius: var(--sprt-radius-panel);
	background: var(--sprt-ink);
	box-shadow: none;
	clip-path: none;
	overflow: hidden;
	transform: none;
}

body.sprt .firwl-master .firwl-cards .firwl-cards__content.firwl-gradaccent {
	background: var(--sprt-violet-deep);
}

body.sprt .firwl-master .firwl-cards:hover .firwl-cards__content {
	transform: none;
}

body.sprt .firwl-master .firwl-cards .firwl-cards__i {
	position: relative;
	z-index: 2;
	width: 5.5rem;
	height: 5.5rem;
	padding-top: 0;
}

body.sprt .firwl-master .firwl-cards .firwl-cards__i img {
	object-fit: contain;
	border: 0;
	border-radius: 0;
	background: transparent;
}

body.sprt .firwl-master .firwl-cards .firwl-cards__content__c {
	position: relative;
	z-index: 2;
	margin-top: auto;
	padding: 0;
}

body.sprt .firwl-master .firwl-cards h4 {
	margin: 0 0 0.5rem;
	font-family: var(--sprt-serif);
	font-size: var(--sprt-fs-h3);
	font-weight: 400;
	letter-spacing: -0.02em;
	line-height: 1.15;
	text-transform: none;
}

body.sprt .firwl-master .firwl-cards p {
	margin: 0 0 1.5rem;
	opacity: 1;
	font-family: var(--sprt-mono);
	font-size: var(--sprt-fs-small);
	color: var(--sprt-on-ink-soft);
}

body.sprt .firwl-master .firwl-cards .firwl-cards__bg {
	clip-path: none;
	opacity: 0.12;
	filter: grayscale(1);
	border: 0;
	border-radius: 0;
}

body.sprt .firwl-master .firwl-cards .firwl-hov,
body.sprt .firwl-master .firwl-cards .firwl-particles {
	display: none;
}

body.sprt .firwl-master .firwl-card {
	border-radius: var(--sprt-radius-panel);
	box-shadow: none;
}

/* Card rows are set with a 2px column gap in the builder; open it up to 20px and keep
   the outer edges on the same line as the headings (gutter + 15px column padding).
   #firwlBody is needed because the stock gap rules are written with that id. */
body.sprt#firwlBody .firwl-master .vc_row.firwl-vc_row:is(.vc_column-gap-1, .vc_column-gap-2, .vc_column-gap-3, .vc_column-gap-4, .vc_column-gap-5) .firwl-rowcontent {
	margin-left: 5px;
	margin-right: 5px;
}

body.sprt#firwlBody .firwl-master .vc_row.firwl-vc_row:is(.vc_column-gap-1, .vc_column-gap-2, .vc_column-gap-3, .vc_column-gap-4, .vc_column-gap-5) .vc_column-inner {
	padding-left: 10px;
	padding-right: 10px;
}

body.sprt .firwl-master .vc_column_container > .vc_column-inner > .wpb_wrapper > .firwl-cards {
	margin-bottom: 1.25rem;
}

/* ---------- 11. Testimonial cards ---------- */

body.sprt#firwlBody .firwl-master .firwl-post.firwl-post__testimonial {
	display: flex;
	flex-direction: column;
	height: 100%;
	padding-top: 0;
	overflow: hidden;
	border: 1px solid var(--sprt-line);
	border-radius: var(--sprt-radius-panel);
	background-color: var(--sprt-surface);
	color: var(--sprt-ink) !important; /* the card carries .firwl-negative, which is !important white */
	clip-path: none;
	box-shadow: none;
}

/* Equal card heights per row: archive grid (floats) and carousel (owl) */
body.sprt .firwl-master .firwl-row:has(> .firwl-col__post > .firwl-post__testimonial) {
	display: flex;
	flex-wrap: wrap;
	row-gap: 1.5rem;
}

body.sprt .firwl-master .owl-carousel:has(.firwl-post__testimonial) .owl-stage {
	display: flex;
}

body.sprt .firwl-master .owl-carousel:has(.firwl-post__testimonial) .owl-item > .firwl-item,
body.sprt .firwl-master .owl-carousel:has(.firwl-post__testimonial) .owl-item > .firwl-item > .firwl-itemcontainer {
	height: 100%;
}

body.sprt .firwl-master .firwl-post__testimonial > .firwl-bgimg {
	position: relative;
	height: auto;
	aspect-ratio: 1 / 1;
	opacity: 1;
	clip: auto;
	background: var(--sprt-surface);
	border-bottom: 1px solid var(--sprt-line);
}

body.sprt .firwl-master .firwl-post__testimonial .firwl-duotone::before,
body.sprt .firwl-master .firwl-post__testimonial .firwl-duotone::after,
body.sprt .firwl-master .firwl-post__testimonial .firwl-hov {
	display: none;
}

body.sprt .firwl-master .firwl-post__testimonial .firwl-post__headercont {
	position: relative;
	height: auto;
	padding: 1.5rem;
	background: none;
	text-shadow: none;
}

body.sprt .firwl-master .firwl-post__testimonial .firwl-post__testimonial__cap {
	position: static;
	display: flex;
	flex-direction: column-reverse;
	gap: 1.25rem;
	padding: 0;
}

body.sprt .firwl-master .firwl-post__testimonial .firwl-capdec {
	padding-left: 0;
}

body.sprt .firwl-master .firwl-post__testimonial .firwl-capdec::before {
	display: none;
}

body.sprt .firwl-master .firwl-post__testimonial .firwl-capdec h5 {
	margin: 0;
	font-family: var(--sprt-sans);
	font-size: var(--sprt-fs-body);
	font-weight: 600;
	line-height: 1.3;
	color: var(--sprt-ink) !important; /* beats the parent's `.firwl-negative h5 { color: #fff !important }` */
}

body.sprt .firwl-master .firwl-post__testimonial .firwl-capdec h5 a {
	color: inherit;
	text-decoration: none;
}

body.sprt .firwl-master .firwl-post__testimonial .firwl-capdec h5 a:hover {
	color: var(--sprt-violet-deep);
}

body.sprt .firwl-master .firwl-post__testimonial .firwl-meta,
body.sprt .firwl-master .firwl-entrycontent .firwl-post__testimonial.firwl-negative .firwl-meta {
	margin: 0.25rem 0 0;
	opacity: 1;
	font-family: var(--sprt-mono);
	font-size: var(--sprt-fs-label);
	font-weight: 400;
	letter-spacing: 0;
	line-height: 1.4;
	text-transform: none;
	color: var(--sprt-ink-soft);
}

/* The quote was hidden until hover, which never happens on touch screens: always show it */
body.sprt .firwl-master .firwl-post__testimonial .firwl-intro,
body.sprt .firwl-master .firwl-entrycontent .firwl-post__testimonial.firwl-negative .firwl-intro {
	max-height: none;
	margin: 0;
	padding: 0;
	overflow: visible;
	font-family: var(--sprt-serif);
	font-size: 1.125rem;
	font-style: normal;
	line-height: 1.4;
	letter-spacing: -0.01em;
	color: var(--sprt-ink);
}

/* Carousel dots */
body.sprt .firwl-master .firwl-owl-theme .owl-dots .owl-dot span {
	background: var(--sprt-line);
	clip-path: none;
	border-radius: var(--sprt-radius-pill);
}

body.sprt .firwl-master .firwl-owl-theme .owl-dots .owl-dot.active span {
	background: var(--sprt-ink);
}

/* ---------- 12. Accordions and tabs ---------- */

body.sprt .firwl-master .vc_tta.vc_general .vc_tta-panels,
body.sprt .firwl-master .vc_tta.vc_general .vc_tta-panels-container {
	background: transparent;
	border: 0;
}

body.sprt .firwl-master .vc_tta.vc_general.vc_tta-accordion .vc_tta-panel {
	margin: 0;
	border-top: 1px solid var(--sprt-line);
}

body.sprt .firwl-master .vc_tta.vc_general.vc_tta-accordion .vc_tta-panel:last-child {
	border-bottom: 1px solid var(--sprt-line);
}

body.sprt .firwl-master .vc_tta.vc_general .vc_tta-panel .vc_tta-panel-heading,
body.sprt .firwl-master .vc_tta.vc_general .vc_tta-panel.vc_active .vc_tta-panel-heading,
body.sprt .firwl-master .vc_tta.vc_general .vc_tta-panel .vc_tta-panel-heading:hover,
body.sprt .firwl-master .vc_tta.vc_general .vc_tta-panel .vc_tta-panel-heading:focus {
	margin: 0;
	border: 0;
	border-radius: 0;
	background-color: transparent;
}

body.sprt .firwl-master .vc_tta.vc_general .vc_tta-panel-title {
	margin: 0;
	font-family: var(--sprt-sans);
	font-size: 1.125rem;
	font-weight: 500;
	letter-spacing: 0;
	line-height: 1.35;
	text-transform: none;
}

body.sprt .firwl-master .vc_tta.vc_general .vc_tta-panel-title > a {
	display: block;
	padding: 1.25rem 3rem 1.25rem 0;
	color: var(--sprt-ink);
}

body.sprt .firwl-master .vc_tta.vc_general .vc_tta-panel-title > a:hover {
	color: var(--sprt-violet-deep);
}

body.sprt .firwl-master .vc_tta.vc_general .vc_tta-panel-title .vc_tta-controls-icon {
	left: auto;
	right: 0.5rem;
}

body.sprt .firwl-master .vc_tta.vc_general .vc_tta-panel-title .vc_tta-controls-icon::before,
body.sprt .firwl-master .vc_tta.vc_general .vc_tta-panel-title .vc_tta-controls-icon::after {
	border-color: var(--sprt-ink);
}

body.sprt .firwl-master .vc_tta.vc_general .vc_tta-panel .vc_tta-panel-body {
	padding: 0 3rem 1.5rem 0;
	border: 0;
	border-radius: 0;
	background-color: transparent;
}

body.sprt .firwl-master .vc_tta.vc_general .vc_tta-panel-body p {
	max-width: 46rem;
}

body.sprt .firwl-master .vc_tta.vc_general .vc_tta-tab > a {
	border: 0;
	border-bottom: 1px solid var(--sprt-line);
	border-radius: 0;
	background: transparent;
	font-family: var(--sprt-mono);
	font-size: var(--sprt-fs-small);
	color: var(--sprt-ink-soft);
}

body.sprt .firwl-master .vc_tta.vc_general .vc_tta-tab.vc_active > a {
	border-bottom-color: var(--sprt-ink);
	color: var(--sprt-ink);
}

/* ---------- 13. Content typed in capitals ---------- */

/* A few headings and one button are stored in capitals in the page content, which the
   stock uppercase styling used to hide. Content is not edited, so these exact strings
   are set in sentence case here. Remove once the content itself is retyped. */
body.sprt .firwl-master .firwl-glitchtxt[data-firwl-text="WORK WITH US"],
body.sprt .firwl-master .firwl-glitchtxt[data-firwl-text="OUR CUSTOMERS"],
body.sprt .firwl-master a.firwl-btn[href="#learnmore-section"] {
	text-transform: lowercase;
}

body.sprt .firwl-master .firwl-glitchtxt[data-firwl-text="WORK WITH US"]::first-letter,
body.sprt .firwl-master .firwl-glitchtxt[data-firwl-text="OUR CUSTOMERS"]::first-letter,
body.sprt .firwl-master a.firwl-btn[href="#learnmore-section"]::first-letter {
	text-transform: uppercase;
}

/* ::first-letter does not apply to flex containers */
body.sprt .firwl-master a.firwl-btn[href="#learnmore-section"] {
	display: inline-block;
	line-height: 1.5rem;
}

/* Careers hero line, also stored in capitals */
body.sprt.page-id-719 .firwl-master .firwl-negative .wpb_text_column h4[style*="text-align: center"] {
	font-size: var(--sprt-fs-lead);
	font-weight: 400;
	text-transform: lowercase;
	color: var(--sprt-on-ink-soft);
}

body.sprt.page-id-719 .firwl-master .firwl-negative .wpb_text_column h4[style*="text-align: center"]::first-letter {
	text-transform: uppercase;
}

/* S.O.S. page: hero subline and card titles are stored in capitals. The subline is a
   sentence, so it is set in sentence case; the card titles contain an acronym (DDOS)
   that lowercase would break, so they stay in capitals as small tracked labels. */
body.sprt.page-id-725 .firwl-master .wpb_text_column h3 {
	text-transform: lowercase;
}

body.sprt.page-id-725 .firwl-master .wpb_text_column h3::first-letter {
	text-transform: uppercase;
}

body.sprt.page-id-725 .firwl-master .firwl-caption__xxl {
	letter-spacing: 0;
}

body.sprt.page-id-725 .firwl-master .firwl-cards h4 {
	font-family: var(--sprt-sans);
	font-size: 1rem;
	font-weight: 500;
	letter-spacing: 0.06em;
	line-height: 1.3;
}

/* ---------- 13b. Careers and courses pages ---------- */

/* "US candidates only" is centred in the style attribute, under left-aligned headings */
body.sprt.page-id-719 .firwl-master .wpb_text_column p[style*="text-align: center"] {
	text-align: left !important; /* against the style attribute */
}

/* Skill charts: one size for all three, centred in their column. The legend is drawn
   inside the canvas, so the cap leaves it room beside the pie. */
body.sprt.page-id-719 .firwl-master .vc_chart {
	max-width: 30rem;
	margin-left: auto;
	margin-right: auto;
}

/* Tablet: text and chart share a row of two narrow columns, where the pie overdraws
   its own legend. Stack them so the canvas is wide enough for the labels. */
@media (min-width: 768px) and (max-width: 1023px) {
	body.sprt.page-id-719 .firwl-master .firwl-rowcontent:has(> .vc_col-sm-6 .vc_chart) > .vc_col-sm-6 {
		float: none;
		width: 100%;
	}
}

/* Courses: an empty listing. The notice reads as a quiet empty state and the button
   follows the left edge of the heading. */
body.sprt.page-id-729 .firwl-master .vc_column-inner > .wpb_wrapper {
	font-size: var(--sprt-fs-small);
	color: var(--sprt-ink-soft);
}

body.sprt.page-id-729 .firwl-master p.aligncenter {
	text-align: left !important; /* the stock .aligncenter rule is !important */
}

/* ---------- 14. Card rows: equal heights ---------- */

@media (min-width: 768px) {
	body.sprt .firwl-master .firwl-rowcontent:has(> .vc_column_container > .vc_column-inner > .wpb_wrapper > .firwl-cards) {
		display: flex;
		flex-wrap: wrap;
	}

	body.sprt .firwl-master .firwl-rowcontent:has(> .vc_column_container > .vc_column-inner > .wpb_wrapper > .firwl-cards) > .vc_column_container > .vc_column-inner,
	body.sprt .firwl-master .firwl-rowcontent:has(> .vc_column_container > .vc_column-inner > .wpb_wrapper > .firwl-cards) > .vc_column_container > .vc_column-inner > .wpb_wrapper {
		height: 100%;
	}

	body.sprt .firwl-master .firwl-rowcontent > .vc_column_container > .vc_column-inner > .wpb_wrapper > .firwl-cards {
		margin-bottom: 0;
	}
}

/* ---------- 15. Narrow columns: keep long single words on one line ---------- */

@media (max-width: 1023px) {
	body.sprt .firwl-master .vc_col-sm-3 .vc_custom_heading {
		font-size: 1.0625rem !important; /* against the style attribute */
	}

	body.sprt .firwl-master .vc_col-sm-4 .firwl-cards h4,
	body.sprt .firwl-master .vc_col-sm-3 .firwl-cards h4 {
		font-size: 1.125rem;
		letter-spacing: -0.01em;
	}

	body.sprt .firwl-master .vc_col-sm-4 .firwl-cards .firwl-cards__content,
	body.sprt .firwl-master .vc_col-sm-3 .firwl-cards .firwl-cards__content {
		padding: 1.25rem;
	}
}

@media (max-width: 767px) {
	body.sprt .firwl-master .vc_col-sm-3 .vc_custom_heading {
		font-size: 1.25rem !important;
	}

	body.sprt .firwl-master .vc_col-sm-4 .firwl-cards h4,
	body.sprt .firwl-master .vc_col-sm-3 .firwl-cards h4 {
		font-size: var(--sprt-fs-h3);
		letter-spacing: -0.02em;
	}

	body.sprt .firwl-master .vc_col-sm-4 .firwl-cards .firwl-cards__content,
	body.sprt .firwl-master .vc_col-sm-3 .firwl-cards .firwl-cards__content {
		padding: 1.5rem;
	}
}

/* ---------- 16. Small screens ---------- */

@media (max-width: 767px) {
	body.sprt .firwl-master .firwl-pageheader .firwl-shareball {
		right: calc(var(--sprt-gutter) + 1.5rem);
	}

	body.sprt .firwl-master .firwl-cards .firwl-cards__content {
		min-height: 16rem;
	}

	body.sprt .firwl-master .vc_tta.vc_general .vc_tta-panel .vc_tta-panel-body {
		padding-right: 0;
	}
}
