/* ==========================================================================
   sws-v4.css: the Colt-inspired homepage (client request, 30 September 2026)
   --------------------------------------------------------------------------
   Source design: design/v4/homepage.html, approved "as it is" on two conditions:
   the site's colour scheme stays (v3's tokens only, no new colours) and the header
   and footer do not change (nothing here touches #header-outer or #footer-outer).

   Scope: body.sws-v4 (pages with the _sws_v4 meta; they are also v3 pages) and
   v4-* classes. Loaded after sws-v3.css, so equal-specificity rules here win.
   Every overlap or absolute position is guarded with :not(.sws-fe-edit), so the
   WPBakery frontend editor still shows plain, selectable columns.

   Shape rule: photos and cards 12px, buttons and inputs 6px.
   Headings: Barlow Semi Condensed. Body: Figtree (v3).
   The blue is #3D91FF (v3's --v3-blue), wherever the page uses a blue.
   ========================================================================== */

/* ---- 0. tokens ------------------------------------------------------------------------------------ */
body.sws-v4 {
	--v4-display: 'Barlow Semi Condensed', 'Arial Narrow', system-ui, sans-serif;
	--v4-r: 12px;
	--v4-r-btn: 6px;
	--v4-on-blue: #e8f2ff;   /* body text on the accent blue: v3's colour-band text */
}

/* ---- 1. type: condensed headings in v3's ink, condensed capitals for labels ------------------------- */
body.sws-v4 .v4 .vc_custom_heading.v3-h1,
body.sws-v4 .v4 .vc_custom_heading.v3-h2,
body.sws-v4 .v4 .vc_custom_heading.v3-h3 { font-family: var(--v4-display) !important; font-weight: 700 !important; letter-spacing: -.005em !important; }
body.sws-v4 .v4 .vc_custom_heading.v3-h1 { font-size: clamp(42px, 4.4vw, 66px) !important; line-height: 1.02 !important; max-width: 12em; }
body.sws-v4 .v4 .vc_custom_heading.v3-h2 { font-size: clamp(34px, 3.1vw, 46px) !important; line-height: 1.06 !important; }
body.sws-v4 .v4 .vc_custom_heading.v3-h3 { font-size: 23px !important; line-height: 1.2 !important; }
body.sws-v4 .v4 .wpb_text_column.v3-label,
body.sws-v4 .v4 .wpb_text_column.v3-label p {
	font: 700 15px/1.2 var(--v4-display) !important; letter-spacing: .14em !important; text-transform: uppercase !important; color: var(--v3-blue) !important;
}
body.sws-v4 .v4 .wpb_text_column.v3-label { margin-bottom: 16px !important; }

/* buttons: square corners, condensed capitals, no glow */
body.sws-v4 .v4 a.nectar-button.v3-btn,
body.sws-v4 .v4 a.nectar-button.v3-btn:visited {
	justify-content: center; min-height: 56px; box-sizing: border-box; padding: 0 28px !important; border-radius: var(--v4-r-btn) !important; box-shadow: none !important;
	font: 700 18px/1 var(--v4-display) !important; letter-spacing: .07em !important; text-transform: uppercase !important;
}
body.sws-v4 .v4 a.nectar-button.v3-btn::after { font-size: 16px; letter-spacing: 0; }
body.sws-v4 .v4 a.nectar-button.v3-btn:hover { transform: translateY(-1px); }
body.sws-v4 .v4 .wpb_text_column.v3-link a { font: 700 18px/1.2 var(--v4-display) !important; letter-spacing: .03em !important; min-height: 44px; }

/* photographs */
body.sws-v4 .v4 .img-with-aniamtion-wrap { margin: 0 !important; }
body.sws-v4 .v4 img.v4-img { display: block; width: 100% !important; max-width: none !important; height: auto; object-fit: cover; border-radius: var(--v4-r); }
/* placeholder photographs say so, so nobody mistakes them for SWS's own */
body.sws-v4 .v4-sample .img-with-aniamtion-wrap { position: relative; }
body.sws-v4 .v4-sample .img-with-aniamtion-wrap::after {
	content: "Sample photo"; position: absolute; top: 12px; right: 12px; z-index: 2; pointer-events: none;
	font: 600 12.5px/1 var(--v3-body); letter-spacing: .02em; color: #fff; background: rgba(15, 47, 87, .72); padding: 7px 10px; border-radius: 4px;
}

/* ---- 2. hero: a full-width photograph under a blue overlay, white type ------------------------------------ */
body.sws-v4 .wpb_row.v3.v4-hero {
	display: flex !important; flex-direction: column; justify-content: center; box-sizing: border-box;
	min-height: clamp(580px, 47vw, 720px);
	padding: 88px var(--v3-frame) 140px !important;
	background: var(--v3-ink) !important; overflow: hidden;
}
body.sws-v4 .wpb_row.v4-hero > .row_col_wrap_12 { position: relative; z-index: 2; width: 100% !important; }
body.sws-v4 .wpb_row.v4-hero > .row_col_wrap_12 > .wpb_column.v4-hero__copy { flex: 0 1 660px !important; width: auto !important; max-width: 660px; }
body.sws-v4 .wpb_row.v4-hero > .row-bg-wrap .row-bg { background-size: cover !important; background-position: 50% 62% !important; }
/* the overlay stays dark under the text at every width: its stops follow the text column (the frame), not the
   screen; worst case, a white pixel under the lead still gives white text 5:1 */
body.sws-v4 .wpb_row.v4-hero > .row-bg-wrap::after {
	content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
	background: linear-gradient(90deg, rgba(15, 47, 87, .9) 0,
		rgba(15, 47, 87, .86) calc(var(--v3-frame) + 560px),
		rgba(15, 47, 87, .8) calc(var(--v3-frame) + 720px),
		rgba(61, 145, 255, .14) 100%);
}
body.sws-v4 .v4-hero .vc_custom_heading.v3-h1 { color: #fff !important; }
body.sws-v4 .v4-hero .wpb_text_column.v3-label p { color: var(--v3-sky-200) !important; }
body.sws-v4 .v4-hero .wpb_text_column.v3-lead { margin-top: 20px !important; }
body.sws-v4 .v4-hero .wpb_text_column.v3-lead p { color: #fff !important; max-width: 44ch; }
body.sws-v4 .v4-hero .wpb_wrapper > a.nectar-button.v3-btn { margin: 34px 14px 0 0 !important; vertical-align: middle; }
body.sws-v4 .v4-hero a.nectar-button.v3-btn.v4-btn--white { background: #fff !important; color: var(--v3-ink) !important; }
body.sws-v4 .v4-hero a.nectar-button.v3-btn.v4-btn--white span { color: var(--v3-ink) !important; }
body.sws-v4 .v4-hero a.nectar-button.v3-btn.v4-btn--white:hover { background: var(--v3-sky-100) !important; }
/* the call link, drawn as an outline button */
body.sws-v4 .v4-hero .wpb_wrapper > .wpb_text_column.v4-ghost { display: inline-block; vertical-align: middle; margin: 34px 0 0 !important; }
body.sws-v4 .v4-hero .wpb_text_column.v4-ghost a {
	display: inline-flex !important; align-items: center; justify-content: center; gap: 10px; min-height: 56px; box-sizing: border-box; padding: 0 26px;
	border-radius: var(--v4-r-btn); box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .85);
	font: 700 18px/1 var(--v4-display) !important; letter-spacing: .07em !important; text-transform: uppercase; color: #fff !important; white-space: nowrap;
}
body.sws-v4 .v4-hero .wpb_text_column.v4-ghost a::after { content: none !important; }
body.sws-v4 .v4-hero .wpb_text_column.v4-ghost a::before { content: "\f095"; font-family: 'FontAwesome'; font-size: 18px; font-weight: 400; letter-spacing: 0; }
body.sws-v4 .v4-hero .wpb_text_column.v4-ghost a:hover { background: rgba(255, 255, 255, .12); color: #fff !important; }

/* ---- 3. the key facts, one white card straddling the foot of the hero ------------------------------------ */
body.sws-v4 .wpb_row.v3.v4-statbar { background: transparent !important; padding-top: 0 !important; padding-bottom: 0 !important; z-index: 3; }
body.sws-v4:not(.sws-fe-edit) .wpb_row.v3.v4-statbar { margin-top: -68px !important; }
body.sws-v4 .v4 .wpb_text_column.v4-stats ul {
	display: grid; grid-template-columns: 1.3fr 1fr 1fr 1fr; margin: 0 !important; padding: 0 !important; list-style: none !important;
	background: #fff; border-radius: var(--v4-r); box-shadow: var(--v3-shadow);
}
body.sws-v4 .v4 .wpb_text_column.v4-stats li {
	list-style: none !important; margin: 0 !important; box-sizing: border-box; min-height: 136px; padding: 24px 30px !important; border-left: 1px solid var(--v3-line);
	display: flex; flex-direction: column; justify-content: center; gap: 6px;
	font-size: 15.5px !important; line-height: 1.35 !important; color: var(--v3-muted) !important;
}
/* the SSAIB cell: badge on the left, its two lines beside it (a grid, so the Text Block needs no <span>) */
body.sws-v4 .v4 .wpb_text_column.v4-stats li:first-child { border-left: 0; display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 18px; row-gap: 4px; align-content: center; }
body.sws-v4 .v4 .wpb_text_column.v4-stats li > strong { display: block; font: 700 46px/1 var(--v4-display) !important; color: var(--v3-ink) !important; }
body.sws-v4 .v4 .wpb_text_column.v4-stats li img { grid-row: span 2; align-self: center; width: 92px; height: auto; margin: 0 !important; border-radius: 6px; }
body.sws-v4 .v4 .wpb_text_column.v4-stats li:first-child > strong { align-self: end; font: 700 21px/1.15 var(--v4-display) !important; color: var(--v3-ink) !important; }

/* ---- 4. photo and text side by side -------------------------------------------------------------------- */
body.sws-v4 .wpb_row.v4-split > .row_col_wrap_12 {
	display: grid !important; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: clamp(40px, 5.5vw, 88px); align-items: center;
}
body.sws-v4 .wpb_row.v4-split > .row_col_wrap_12 > .wpb_column { width: auto !important; float: none !important; }
/* in WPBakery's frontend editor every column sits in a .vc_element wrapper that carries the column's 50% width and
   becomes the grid item: the wrapper must fill its grid cell and the column its wrapper, or the editor shows two
   quarter-width columns */
body.sws-v4 .wpb_row.v4-split > .row_col_wrap_12 > .vc_element { width: auto !important; float: none !important; min-width: 0; }
body.sws-v4 .wpb_row.v4-split > .row_col_wrap_12 > .vc_element > .wpb_column { width: 100% !important; float: none !important; }
body.sws-v4 .wpb_row.v4-split--rev > .row_col_wrap_12 > .wpb_column.v4-split__media { order: -1; }
body.sws-v4 .v4-split .vc_custom_heading.v3-h2 + .wpb_text_column { margin-top: 20px !important; }
body.sws-v4 .v4-split__copy .wpb_wrapper > .wpb_text_column.v3-link { margin-top: 28px !important; }
body.sws-v4 .v4-split__copy .wpb_wrapper > a.nectar-button.v3-btn { margin-top: 28px !important; }
body.sws-v4 .v4-split__media > .vc_column-inner { position: relative; padding: 0 !important; }
body.sws-v4 .v4-media--about img.v4-img,
body.sws-v4 .v4-media--people img.v4-img { aspect-ratio: 7 / 5; }
body.sws-v4 .v4-media--people img.v4-img { object-position: 50% 35%; }
body.sws-v4 .v4-media--survey img.v4-img { aspect-ratio: 4 / 5; object-position: 50% 60%; }
body.sws-v4 .v4-media--app img.v4-img { aspect-ratio: 1 / 1; }
/* a light-blue plate behind two of the photographs */
body.sws-v4:not(.sws-fe-edit) .v4-media--survey > .vc_column-inner,
body.sws-v4:not(.sws-fe-edit) .v4-media--app > .vc_column-inner { isolation: isolate; }
body.sws-v4:not(.sws-fe-edit) .v4-media--survey > .vc_column-inner::before,
body.sws-v4:not(.sws-fe-edit) .v4-media--app > .vc_column-inner::before {
	content: ""; position: absolute; inset: 36px -36px -36px 36px; z-index: -1; border-radius: var(--v4-r); background: var(--v3-sky-100);
}
/* the "40" panel over the photograph's corner, like Colt's accreditation badge */
body.sws-v4 .v4 .wpb_text_column.v4-badge40 { margin-top: 16px !important; }
body.sws-v4:not(.sws-fe-edit) .v4 .wpb_text_column.v4-badge40 { position: absolute !important; z-index: 2; left: -28px; bottom: 28px; margin: 0 !important; }
body.sws-v4 .v4 .wpb_text_column.v4-badge40 p {
	width: 184px; box-sizing: border-box; margin: 0 !important; padding: 22px 22px 24px !important; border-radius: var(--v4-r); background: var(--v3-blue); box-shadow: var(--v3-shadow);
	font: 600 17px/1.25 var(--v4-display) !important; letter-spacing: .02em !important; color: #fff !important;
}
body.sws-v4 .v4 .wpb_text_column.v4-badge40 strong { display: block; margin-bottom: 12px; font: 700 78px/1 var(--v4-display) !important; color: #fff !important; }
/* the survey's reassurance, overlapping the photograph's foot */
body.sws-v4 .v4 .wpb_text_column.v4-note { margin-top: 16px !important; }
body.sws-v4:not(.sws-fe-edit) .v4 .wpb_text_column.v4-note { position: absolute !important; z-index: 2; right: -24px; bottom: 44px; max-width: 290px; margin: 0 !important; }
body.sws-v4 .v4 .wpb_text_column.v4-note p {
	display: flex; align-items: flex-start; gap: 12px; margin: 0 !important; padding: 18px 20px !important; background: #fff; border-radius: var(--v4-r); box-shadow: var(--v3-shadow);
	font: 600 16px/1.4 var(--v3-body) !important; color: var(--v3-ink) !important; max-width: none;
}
body.sws-v4 .v4 .wpb_text_column.v4-note p::before { content: "\f058"; flex: none; font-family: 'FontAwesome'; font-size: 22px; line-height: 1; font-weight: 400; color: var(--v3-blue); }
/* the four steps, numbered 01 to 04 */
body.sws-v4 .v4 .wpb_text_column.v4-steps { margin-top: 26px !important; }
body.sws-v4 .v4 .wpb_text_column.v4-steps ol { list-style: none !important; margin: 0 !important; padding: 0 !important; counter-reset: v4step; border-top: 1px solid var(--v3-line); }
body.sws-v4 .v4 .wpb_text_column.v4-steps li {
	counter-increment: v4step; position: relative; list-style: none !important; margin: 0 !important; padding: 18px 0 18px 68px !important; border-bottom: 1px solid var(--v3-line);
	font-size: 16px !important; line-height: 1.55 !important;
}
body.sws-v4 .v4 .wpb_text_column.v4-steps li::before { content: counter(v4step, decimal-leading-zero); position: absolute; left: 0; top: 18px; font: 700 32px/1 var(--v4-display); color: var(--v3-blue); }
body.sws-v4 .v4 .wpb_text_column.v4-steps li strong { display: block; margin-bottom: 4px; font: 700 22px/1.15 var(--v4-display) !important; color: var(--v3-ink) !important; }
/* the people split: three contact lines (call, WhatsApp, hours) */
body.sws-v4 .v4 .wpb_text_column.v3-lines.v4-lines--short li:nth-child(3)::before { content: "\f017" !important; }

/* ---- 5. photo band: SWS's keypad photograph behind a solid blue card of promises ------------------------------ */
body.sws-v4 .wpb_row.v3.v4-band { padding-top: clamp(72px, 7vw, 104px) !important; padding-bottom: clamp(72px, 7vw, 104px) !important; background: var(--v3-ink) !important; overflow: hidden; }
/* 135% wide and pinned left: the keypad sits clear of the card at every desktop width */
body.sws-v4 .wpb_row.v4-band > .row-bg-wrap .row-bg { background-size: 135% auto !important; background-position: 4% 50% !important; }
body.sws-v4 .wpb_row.v4-band > .row-bg-wrap::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: rgba(15, 47, 87, .12); }
body.sws-v4 .wpb_row.v4-band > .row_col_wrap_12 { position: relative; z-index: 2; }
body.sws-v4 .wpb_row.v4-band > .row_col_wrap_12 > .wpb_column.v4-band__card { flex: 0 0 min(660px, 56%) !important; width: auto !important; max-width: none !important; }
body.sws-v4 .v4-band__card > .vc_column-inner { background: var(--v3-blue) !important; border-radius: var(--v4-r) !important; padding: clamp(30px, 3.4vw, 48px) !important; box-shadow: var(--v3-shadow) !important; }
body.sws-v4 .v4-band__card .vc_custom_heading.v3-h2 { color: #fff !important; }
body.sws-v4 .v4 .v4-never { margin-top: 32px !important; }
body.sws-v4 .v4 .v4-never > .row_col_wrap_12_inner { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 32px; }
body.sws-v4 .v4 .v4-never .v3-item .wpb_wrapper { display: grid; grid-template-columns: 46px minmax(0, 1fr); column-gap: 14px; align-items: start; }
body.sws-v4 .v4 .v4-never .v3-item .nectar_icon_wrap { grid-row: span 2; width: 46px !important; height: 46px !important; margin: 0 !important; border-radius: 50% !important; background: #fff !important; }
body.sws-v4 .v4 .v4-never .v3-item .nectar_icon_wrap svg { width: 22px !important; height: 22px !important; }
body.sws-v4 .v4 .v4-never .vc_custom_heading.v3-h3 { font-size: 21px !important; color: #fff !important; }
body.sws-v4 .v4 .v4-never .v3-item .vc_custom_heading + .wpb_text_column { margin-top: 4px !important; }
body.sws-v4 .v4 .v4-never .wpb_text_column p { font-size: 15.5px !important; line-height: 1.5 !important; color: var(--v4-on-blue) !important; }

/* ---- 6. accreditation: one big blue card on a light-blue band ----------------------------------------------------- */
body.sws-v4 .wpb_row.v3.v4-accred { background: var(--v3-sky-100) !important; }
body.sws-v4 .v4 .v4-bluecard { margin: 0 !important; padding: 0 !important; }
body.sws-v4 .v4 .v4-bluecard > .row_col_wrap_12_inner {
	display: grid !important; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(36px, 5vw, 72px); align-items: center;
	width: 100% !important; margin: 0 !important; box-sizing: border-box;
	background: var(--v3-blue); border-radius: 16px; padding: clamp(32px, 4.4vw, 64px) !important;
}
body.sws-v4 .v4 .v4-bluecard > .row_col_wrap_12_inner::before,
body.sws-v4 .v4 .v4-bluecard > .row_col_wrap_12_inner::after { display: none !important; content: none !important; }
body.sws-v4 .v4 .v4-bluecard > .row_col_wrap_12_inner > .wpb_column { width: auto !important; margin: 0 !important; float: none !important; }
body.sws-v4 .v4 .v4-bluecard > .row_col_wrap_12_inner > .wpb_column > .vc_column-inner { padding: 0 !important; }
body.sws-v4 .v4-bluecard .wpb_text_column.v3-label p { color: var(--v4-on-blue) !important; }
body.sws-v4 .v4-bluecard .vc_custom_heading.v3-h2 { color: #fff !important; }
body.sws-v4 .v4-bluecard .vc_custom_heading.v4-accred__sub { margin-top: 14px !important; color: var(--v3-sky-200) !important; }
body.sws-v4 .v4-bluecard .vc_custom_heading.v4-accred__sub + .wpb_text_column { margin-top: 16px !important; }
body.sws-v4 .v4-bluecard .wpb_text_column p,
body.sws-v4 .v4-bluecard .wpb_text_column li { color: var(--v4-on-blue) !important; }
body.sws-v4 .v4-bluecard .wpb_text_column.v3-ticks li::before { background: #fff var(--v3-check) center / 12px no-repeat !important; }
body.sws-v4 .v4-bluecard .wpb_text_column.v4-link--light { margin-top: 24px !important; }
body.sws-v4 .v4-bluecard .wpb_text_column.v4-link--light a,
body.sws-v4 .v4-bluecard .wpb_text_column.v4-link--light a:hover { color: #fff !important; }
body.sws-v4 .v4-bluecard__media > .vc_column-inner { position: relative; }
body.sws-v4 .v4-bluecard__media img.v4-img { aspect-ratio: 16 / 10; object-position: 30% 50%; }
/* the SSAIB seal over the photograph's corner */
body.sws-v4 .v4-bluecard .wpb_text_column.v4-seal { margin-top: 16px !important; }
body.sws-v4:not(.sws-fe-edit) .v4-bluecard .wpb_text_column.v4-seal { position: absolute !important; z-index: 2; left: -24px; bottom: -24px; margin: 0 !important; }
body.sws-v4 .v4-bluecard .wpb_text_column.v4-seal p {
	display: grid; grid-template-columns: auto auto; column-gap: 14px; align-items: center; margin: 0 !important; max-width: none;
	background: #fff; border-radius: var(--v4-r); padding: 12px 22px 12px 12px !important; box-shadow: var(--v3-shadow);
	font-size: 14px !important; line-height: 1.3 !important; color: var(--v3-muted) !important;
}
body.sws-v4 .v4-bluecard .wpb_text_column.v4-seal img { grid-row: span 2; width: 80px; height: auto; margin: 0 !important; border-radius: 6px; }
body.sws-v4 .v4-bluecard .wpb_text_column.v4-seal strong { align-self: end; font: 700 19px/1.2 var(--v4-display) !important; color: var(--v3-ink) !important; }

/* ---- 7. service tiles: photographs with a blue caption bar; the whole tile is the link ------------------------------ */
body.sws-v4 .v4 .v4-tilegrid { margin-top: clamp(40px, 4.5vw, 56px) !important; }
body.sws-v4 .v4 .v4-tilegrid > .row_col_wrap_12_inner { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
body.sws-v4 .v4 .v4-tile > .vc_column-inner {
	position: relative; isolation: isolate; overflow: hidden; aspect-ratio: 4 / 5; padding: 0 !important;
	border-radius: var(--v4-r) !important; background: var(--v3-ink) !important; box-shadow: var(--v3-shadow-s);
}
body.sws-v4 .v4 .v4-tile .wpb_wrapper { display: flex; flex-direction: column; justify-content: flex-end; height: 100%; }
body.sws-v4:not(.sws-fe-edit) .v4 .v4-tile .img-with-aniamtion-wrap { position: absolute !important; inset: 0; z-index: -1; }
body.sws-v4 .v4 .v4-tile .img-with-aniamtion-wrap .inner,
body.sws-v4 .v4 .v4-tile .img-with-aniamtion-wrap .hover-wrap,
body.sws-v4 .v4 .v4-tile .img-with-aniamtion-wrap .hover-wrap-inner { height: 100%; }
body.sws-v4 .v4 .v4-tile img.v4-tile__img {
	display: block; width: 100% !important; height: 100% !important; max-width: none !important; object-fit: cover;
	transition: transform .8s cubic-bezier(.16, 1, .3, 1);
}
body.sws-v4 .v4 .v4-tile:hover img.v4-tile__img { transform: scale(1.05); }
body.sws-v4 .v4 .wpb_text_column.v4-tile__cap,
body.sws-v4 .v4 .wpb_text_column.v4-tile__cap p { margin: 0 !important; max-width: none; }
body.sws-v4 .v4 .wpb_text_column.v4-tile__cap a {
	display: flex; align-items: center; min-height: 80px; box-sizing: border-box; padding: 14px 64px 14px 22px;
	background: rgba(61, 145, 255, .92); color: #fff !important; text-decoration: none !important;
	font: 700 clamp(22px, 1.9vw, 26px)/1.1 var(--v4-display) !important;
}
body.sws-v4 .v4 .wpb_text_column.v4-tile__cap a::before {
	content: "\f061"; position: absolute; z-index: 1; right: 18px; bottom: 21px; width: 38px; height: 38px; border-radius: 50%;
	display: grid; place-items: center; background: #fff; color: var(--v3-blue); font-family: 'FontAwesome'; font-size: 16px; font-weight: 400;
	transition: transform .25s ease;
}
/* the caption's link covers the whole tile (not in the frontend editor, where the photo must stay clickable) */
body.sws-v4:not(.sws-fe-edit) .v4 .wpb_text_column.v4-tile__cap a::after { content: ""; position: absolute; inset: 0; z-index: 2; }
body.sws-v4 .v4 .v4-tile:hover .wpb_text_column.v4-tile__cap a::before { transform: translateX(3px); }
body.sws-v4 .v4 .v4-tile:focus-within > .vc_column-inner { outline: 3px solid var(--v3-blue); outline-offset: 3px; }
body.sws-v4.sws-fe-edit .v4 .v4-tile > .vc_column-inner { aspect-ratio: auto; }

/* ---- 8. reviews: centred heading, three cards ------------------------------------------------------------------------- */
body.sws-v4 .v4-reviews__col .wpb_text_column.v3-label,
body.sws-v4 .v4-reviews__col .vc_custom_heading.v3-h2,
body.sws-v4 .v4-reviews__col .wpb_text_column.v3-lead { text-align: center !important; margin-left: auto !important; margin-right: auto !important; }
body.sws-v4 .v4-reviews__col .vc_custom_heading.v3-h2 { max-width: 700px; }
body.sws-v4 .v4-reviews__col .wpb_text_column.v3-label p,
body.sws-v4 .v4-reviews__col .wpb_text_column.v3-lead p { margin-left: auto !important; margin-right: auto !important; text-align: center; }
body.sws-v4 .v4 .v4-reviewgrid { margin-top: clamp(40px, 4.5vw, 56px) !important; }
body.sws-v4 .v4 .v4-reviewgrid > .row_col_wrap_12_inner { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
body.sws-v4 .v4 .v4-review > .vc_column-inner { border-radius: var(--v4-r) !important; border-top: 4px solid var(--v3-blue) !important; }
body.sws-v4 .v4 .v4-review blockquote .testimonial-name { font: 700 19px/1.2 var(--v4-display) !important; }
body.sws-v4 .v4 .wpb_text_column.v4-reviews__more { margin-top: 36px !important; text-align: center; }
body.sws-v4 .v4 .wpb_text_column.v4-reviews__more p { max-width: none; text-align: center; }

/* ---- 9. areas, FAQ, contact: v3's sections in v4's shapes --------------------------------------------------------------- */
body.sws-v4 .v4.v3-areas .wpb_text_column.v3-towns li { border-radius: var(--v4-r-btn) !important; min-height: 46px; box-sizing: border-box; }
/* a town with its own page: the whole pill is the link, not just its 16px of text */
body.sws-v4 .v4.v3-areas .wpb_text_column.v3-towns li:has(a) { position: relative; }
body.sws-v4 .v4.v3-areas .wpb_text_column.v3-towns li a::before { content: ""; position: absolute; inset: 0; border-radius: inherit; }
body.sws-v4 .v4 .toggles .toggle > .toggle-title a { font: 700 22px/1.3 var(--v4-display) !important; letter-spacing: 0 !important; }
body.sws-v4 .v4 .toggles .toggle > .toggle-title a i { border-radius: var(--v4-r-btn) !important; }
body.sws-v4 .v4 .v3-form > .vc_column-inner { border-radius: var(--v4-r) !important; border-top: 4px solid var(--v3-blue) !important; }
body.sws-v4 .v4 .v3-form .vc_custom_heading.v3-h3 { font-size: 28px !important; }
body.sws-v4 .v4 .v3-form .wpcf7 input[type="text"],
body.sws-v4 .v4 .v3-form .wpcf7 input[type="tel"],
body.sws-v4 .v4 .v3-form .wpcf7 input[type="email"],
body.sws-v4 .v4 .v3-form .wpcf7 textarea { border-radius: var(--v4-r-btn) !important; }
body.sws-v4 .v4 .v3-form .wpcf7-list-item-label { border-radius: var(--v4-r-btn) !important; }
body.sws-v4 .v4 .v3-form .wpcf7 input[type="submit"] {
	min-height: 56px; border-radius: var(--v4-r-btn) !important; box-shadow: none !important;
	font: 700 18px/1 var(--v4-display) !important; letter-spacing: .07em !important; text-transform: uppercase !important;
}

/* ---- 10. tablet ----------------------------------------------------------------------------------------------------------- */
@media only screen and (max-width: 1080px) {
	body.sws-v4 .v4 .wpb_text_column.v4-stats ul { grid-template-columns: 1fr 1fr; }
	body.sws-v4 .v4 .wpb_text_column.v4-stats li { min-height: 118px; }
	body.sws-v4 .v4 .wpb_text_column.v4-stats li:nth-child(3) { border-left: 0; }
	body.sws-v4 .v4 .wpb_text_column.v4-stats li:nth-child(n + 3) { border-top: 1px solid var(--v3-line); }
	body.sws-v4 .wpb_row.v4-split > .row_col_wrap_12 { grid-template-columns: minmax(0, 1fr); row-gap: 40px; }
	body.sws-v4 .wpb_row.v4-split > .row_col_wrap_12 > .wpb_column.v4-split__media,
	body.sws-v4 .wpb_row.v4-split--rev > .row_col_wrap_12 > .wpb_column.v4-split__media { order: 2; max-width: 720px; }
	body.sws-v4 .v4-media--survey img.v4-img { aspect-ratio: 4 / 3; }
	body.sws-v4:not(.sws-fe-edit) .v4 .wpb_text_column.v4-badge40 { left: 16px; bottom: 16px; }
	body.sws-v4:not(.sws-fe-edit) .v4 .wpb_text_column.v4-note { right: 16px; bottom: 16px; }
	body.sws-v4:not(.sws-fe-edit) .v4-bluecard .wpb_text_column.v4-seal { left: 16px; }
	body.sws-v4:not(.sws-fe-edit) .v4-media--survey > .vc_column-inner::before,
	body.sws-v4:not(.sws-fe-edit) .v4-media--app > .vc_column-inner::before { inset: 24px -16px -24px 24px; }
	/* the band: the photograph becomes a strip, the card is lifted over its foot (it would hide the keypad) */
	body.sws-v4 .wpb_row.v3.v4-band { background: var(--v3-white) !important; padding-top: 256px !important; padding-bottom: 8px !important; }
	body.sws-v4 .wpb_row.v4-band > .row-bg-wrap { height: 320px !important; bottom: auto !important; }
	body.sws-v4 .wpb_row.v4-band > .row-bg-wrap .row-bg { background-size: cover !important; background-position: 50% 50% !important; }
	body.sws-v4 .wpb_row.v4-band > .row_col_wrap_12 > .wpb_column.v4-band__card { flex: 1 1 100% !important; }
	body.sws-v4 .v4 .v4-bluecard > .row_col_wrap_12_inner { grid-template-columns: minmax(0, 1fr); padding-bottom: 56px !important; }
	body.sws-v4 .v4 .v4-bluecard__media { max-width: 720px; }
	body.sws-v4 .v4 .v4-tilegrid > .row_col_wrap_12_inner { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	body.sws-v4 .v4 .v4-tile > .vc_column-inner { aspect-ratio: 4 / 3; }
	body.sws-v4 .v4 .v4-reviewgrid > .row_col_wrap_12_inner {
		grid-template-columns: none !important; grid-auto-flow: column; grid-auto-columns: minmax(300px, 46%);
		overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; padding-bottom: 18px !important;
	}
	body.sws-v4 .v4 .v4-reviewgrid > .row_col_wrap_12_inner > .wpb_column { scroll-snap-align: start; }
}

/* ---- 11. phone -------------------------------------------------------------------------------------------------------------- */
@media only screen and (max-width: 767px) {
	/* hero: the text runs the full width, so the overlay darkens top to bottom instead of left to right */
	body.sws-v4 .wpb_row.v3.v4-hero { min-height: 0; padding: 52px var(--v3-frame) 104px !important; }
	body.sws-v4 .wpb_row.v4-hero > .row-bg-wrap::after { background: linear-gradient(180deg, rgba(15, 47, 87, .8) 0%, rgba(15, 47, 87, .86) 55%, rgba(15, 47, 87, .92) 100%); }
	body.sws-v4 .wpb_row.v4-hero > .row-bg-wrap .row-bg { background-position: 60% 50% !important; }
	body.sws-v4 .v4-hero .wpb_wrapper > a.nectar-button.v3-btn { display: flex !important; width: 100%; margin: 28px 0 0 !important; }
	body.sws-v4 .v4-hero .wpb_wrapper > .wpb_text_column.v4-ghost { display: block; margin: 12px 0 0 !important; }
	body.sws-v4 .v4-hero .wpb_text_column.v4-ghost a { display: flex !important; width: 100%; }
	body.sws-v4:not(.sws-fe-edit) .wpb_row.v3.v4-statbar { margin-top: -52px !important; }
	body.sws-v4 .v4 .wpb_text_column.v4-stats li { min-height: 0; padding: 18px !important; font-size: 14.5px !important; }
	body.sws-v4 .v4 .wpb_text_column.v4-stats li:first-child { grid-column: 1 / -1; border-bottom: 1px solid var(--v3-line); }
	body.sws-v4 .v4 .wpb_text_column.v4-stats li:nth-child(2) { border-left: 0; }
	body.sws-v4 .v4 .wpb_text_column.v4-stats li:nth-child(3) { border-left: 1px solid var(--v3-line); border-top: 0; }
	body.sws-v4 .v4 .wpb_text_column.v4-stats li:nth-child(4) { grid-column: 1 / -1; border-left: 0; }
	body.sws-v4 .v4 .wpb_text_column.v4-stats li > strong { font-size: 36px !important; }
	body.sws-v4 .v4 .wpb_text_column.v4-stats li img { width: 76px; }
	body.sws-v4 .v4 .wpb_text_column.v4-badge40 p { width: 138px; padding: 16px 16px 18px !important; font-size: 15px !important; }
	body.sws-v4 .v4 .wpb_text_column.v4-badge40 strong { font-size: 56px !important; margin-bottom: 8px; }
	body.sws-v4:not(.sws-fe-edit) .v4 .wpb_text_column.v4-badge40 { left: 12px; bottom: 12px; }
	body.sws-v4 .wpb_row.v3.v4-band { padding-top: 174px !important; }
	body.sws-v4 .wpb_row.v4-band > .row-bg-wrap { height: 230px !important; }
	body.sws-v4 .v4-band__card > .vc_column-inner { padding: 28px 22px !important; }
	body.sws-v4 .v4 .v4-never > .row_col_wrap_12_inner { grid-template-columns: minmax(0, 1fr); gap: 20px; }
	body.sws-v4 .v4 .v4-bluecard > .row_col_wrap_12_inner { padding: 30px 22px 52px !important; }
	body.sws-v4:not(.sws-fe-edit) .v4-bluecard .wpb_text_column.v4-seal { left: 12px; bottom: -28px; }
	body.sws-v4 .v4-bluecard .wpb_text_column.v4-seal p { padding: 10px 16px 10px 10px !important; }
	body.sws-v4 .v4-bluecard .wpb_text_column.v4-seal img { width: 60px; }
	body.sws-v4:not(.sws-fe-edit) .v4 .wpb_text_column.v4-note { position: relative !important; right: auto; bottom: auto; max-width: none; margin: -36px 12px 0 !important; }
	body.sws-v4:not(.sws-fe-edit) .v4-media--survey > .vc_column-inner::before,
	body.sws-v4:not(.sws-fe-edit) .v4-media--app > .vc_column-inner::before { inset: 18px -8px -18px 18px; }
	body.sws-v4 .v4 .v4-tilegrid > .row_col_wrap_12_inner { grid-template-columns: minmax(0, 1fr); gap: 16px; }
	body.sws-v4 .v4 .v4-tile > .vc_column-inner { aspect-ratio: 16 / 10; }
	body.sws-v4 .v4 .v4-reviewgrid > .row_col_wrap_12_inner {
		grid-auto-columns: 86%; gap: 16px; scrollbar-width: none;
		margin: 0 calc(-1 * var(--v3-frame)) !important; padding: 4px var(--v3-frame) 18px !important; scroll-padding: 0 var(--v3-frame);
		width: auto !important; max-width: none !important; box-sizing: border-box;
	}
	body.sws-v4 .v4 .v4-reviewgrid { min-width: 0 !important; max-width: 100% !important; }
	body.sws-v4 .v4 .v4-reviewgrid > .row_col_wrap_12_inner::-webkit-scrollbar { display: none; }
	body.sws-v4 .v4 .toggles .toggle > .toggle-title a { font-size: 20px !important; }
}
