/*
Theme Name: Solas
Theme URI: https://solasprinting.com
Description: Custom block theme for Solas Printing. Edited in the Site Editor; built so WooCommerce templates can be added in a later phase without restructuring.
Version: 0.4.0
Requires at least: 6.8
Tested up to: 6.8
Requires PHP: 8.1
Text Domain: solas
*/

/*
 * Design tokens live in theme.json. This file holds what theme.json cannot express:
 * the print details. Every class here is attached to an ordinary block (Advanced →
 * Additional CSS class), so all text stays editable in the block editor.
 */

:root {
	/* Brand inks, from the Solas logo: plum and lime lead, aubergine and fig carry the
	   dark surfaces, butter and orange support. Only plum is ever used as text on light. */
	--solas-ink: var(--wp--preset--color--ink);
	--solas-m: var(--wp--preset--color--primary);
	--solas-fig: var(--wp--preset--color--fig);
	--solas-lime: var(--wp--preset--color--accent);
	--solas-butter: var(--wp--preset--color--butter);
	--solas-orange: var(--wp--preset--color--orange);
	--solas-leaf: var(--wp--preset--color--accent-deep);
	/* Process inks stay for the small printed details the client likes: the header's
	   registration strip, the bars before labels, proof dots and the misregistered
	   wordmark. Never as large fills. */
	--solas-c: #02A7DF;
	--solas-m-vivid: #CC0D8A;
	--solas-y: #EADF0D;
	--solas-cmyk: linear-gradient(90deg, var(--solas-c) 0 25%, var(--solas-m-vivid) 25% 50%, var(--solas-y) 50% 75%, var(--solas-ink) 75%);
	--solas-ease: cubic-bezier(.2, .8, .2, 1);
	--solas-mono: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
}

/* Page arrivals and browser history stay still; user-followed section links glide. */
html { scroll-behavior: auto; scroll-padding-top: 6rem; }
html:focus-within { scroll-behavior: smooth; }
/* Quote links should land directly on the form, including while it initialises. */
html:has(#quote:target) { scroll-behavior: auto; }
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
:where(h1, h2, h3) { text-wrap: balance; }
::selection { background: var(--solas-lime); color: var(--solas-ink); }

/* Footer always sits at the bottom of the window, even on short pages. */
.wp-site-blocks { min-height: 100vh; display: flex; flex-direction: column; padding-block-start: 0; }
.wp-site-blocks > main { flex-grow: 1; }

/* Remove WordPress's default gap between the header, page and footer. */
.wp-site-blocks > * + * { margin-block-start: 0; }
.entry-content > .alignfull { margin-block: 0; }

:where(a, button, input, select, textarea, summary):focus-visible {
	outline: 3px solid var(--solas-m);
	outline-offset: 3px;
}

/* Lime, butter and orange fail as text on paper, so anything set on them is ink. */
:where(.has-accent-background-color, .has-butter-background-color, .has-orange-background-color, .has-lilac-background-color),
:where(.has-accent-background-color, .has-butter-background-color, .has-orange-background-color, .has-lilac-background-color) :where(h1, h2, h3, h4, p, a, li) {
	color: var(--solas-ink);
}
/* ...except inside a block that sets its own background and text colour, such as an
   ink or magenta card on a lime section: its text keeps the card's colour. */
:where(.has-background.has-text-color) :where(h1, h2, h3, h4, p, li) { color: inherit; }

/* ---------- Shared pieces ---------- */

.solas-section { padding-block: clamp(4.5rem, 9vw, 8rem); }
.solas-section__head { margin-bottom: clamp(2rem, 4vw, 3.25rem); gap: 1rem 2rem; }
.solas-section__head :where(h2) { margin: 0; }

.solas-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.7rem;
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
	margin: 0 0 1rem;
}
/* A tiny CMYK bar in front of every label. */
.solas-eyebrow::before {
	content: "";
	width: 2.4rem;
	height: 0.4rem;
	flex-shrink: 0;
	background: var(--solas-cmyk);
}
.has-text-align-center.solas-eyebrow { justify-content: center; }
:where(.has-ink-background-color, .has-fig-background-color, .has-primary-background-color) .solas-eyebrow { color: color-mix(in srgb, currentColor 75%, transparent); }
:where(.has-ink-background-color, .has-fig-background-color) .solas-eyebrow::before { background: linear-gradient(90deg, var(--solas-c) 0 25%, var(--solas-m-vivid) 25% 50%, var(--solas-y) 50% 75%, #fff 75%); }

.solas-lead { font-size: clamp(1.0625rem, 1.3vw, 1.25rem); line-height: 1.6; max-width: 34em; }
.has-text-align-center.solas-lead { margin-inline: auto; }
.solas-hint { font-size: 0.875rem; margin: 0; }

/* Buttons: square-shouldered, heavy, with an arrow that moves on hover. */
.wp-block-button__link { transition: background-color .2s, color .2s, transform .2s var(--solas-ease); }
.wp-block-button__link:active { transform: scale(0.97); transition-duration: 100ms; }
.solas-arrow .wp-block-button__link::after {
	content: "→";
	display: inline-block;
	margin-left: 0.6em;
	transition: transform .25s var(--solas-ease);
}
.solas-arrow .wp-block-button__link:hover::after { transform: translateX(4px); }

/* CMYK registration strip along the top edge of the header. */
.solas-ink-strip { position: relative; }
.solas-ink-strip::before {
	content: "";
	position: absolute;
	inset: 0 0 auto 0;
	height: 4px;
	z-index: 2;
	background: var(--solas-cmyk);
}

/* Velvet: the deep aubergine grounds carry a soft plum and fig glow, like matte stock. */
.solas-velvet {
	background-image:
		radial-gradient(70% 90% at 82% 18%, rgb(155 30 104 / 0.32), transparent 62%),
		radial-gradient(60% 80% at 8% 100%, rgb(76 41 73 / 0.75), transparent 70%);
}

/* ---------- Header ---------- */

/* The whole header is sticky; the negative offset lets the utility bar scroll away
   while the main bar stays pinned. */
.wp-site-blocks > header.wp-block-template-part { position: sticky; top: -2.4rem; z-index: 100; margin-block-start: 0; }
.solas-header > * { margin-block-start: 0; }
.admin-bar .wp-site-blocks > header.wp-block-template-part { top: calc(32px - 2.4rem); }
@media (max-width: 782px) { .admin-bar .wp-site-blocks > header.wp-block-template-part { top: calc(46px - 2.4rem); } }

.solas-utility { height: 2.4rem; display: flex; align-items: center; font-size: 0.8125rem; padding-top: 4px; }
.solas-utility > * { width: 100%; }
.solas-utility p { margin: 0; }
.solas-utility a { color: var(--solas-lime); text-decoration: none; font-weight: 600; }

/* The frosted glass sits on a layer behind the bar. Putting backdrop-filter on the bar
   itself would make it the containing block for the full-screen mobile menu, trapping
   the menu inside the header strip. */
.solas-mainbar {
	position: relative;
	z-index: 0;
	padding-block: 0.9rem;
	box-shadow: 0 1px 0 rgb(40 21 47 / 0.08), 0 10px 24px -20px rgb(40 21 47 / 0.4);
	transition: box-shadow .3s var(--solas-ease);
}
.solas-mainbar::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: rgb(255 253 250 / 0.96);
	backdrop-filter: saturate(1.4) blur(14px);
	-webkit-backdrop-filter: saturate(1.4) blur(14px);
	transition: background-color .3s;
}
.is-scrolled .solas-mainbar { box-shadow: 0 1px 0 rgb(40 21 47 / 0.06), 0 12px 28px -20px rgb(40 21 47 / 0.45); }
.is-scrolled .solas-mainbar::before { background: rgb(255 253 250 / 0.98); }
/* His old website's logo is square artwork with its own coloured ground: shown as a
   rounded tile, like a sticker, beside the script wordmark. */
.solas-brand .wp-block-site-logo img { border-radius: 18%; box-shadow: 0 0 0 1px rgb(40 21 47 / 0.08), 0 4px 10px -6px rgb(40 21 47 / 0.45); }
.solas-brand { align-items: center; }
.solas-brand > * { margin: 0 !important; }
.solas-brand__wordmark { margin: 0; line-height: 0; }
.solas-brand__wordmark img { display: block; width: auto; height: 46px; }
.solas-brand__wordmark a { display: block; }

/* Each menu item underlines in its family's ink. */
.solas-nav .wp-block-navigation-item__content { position: relative; padding-block: 0.35rem; color: var(--solas-ink); }
.solas-nav .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -2px;
	height: 3px;
	background: var(--nav-ink, var(--solas-ink));
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .3s var(--solas-ease);
}
.solas-nav .wp-block-navigation-item__content:hover::after,
.solas-nav .current-menu-item > .wp-block-navigation-item__content::after,
.solas-nav .wp-block-navigation-item__content[aria-current="page"]::after { transform: scaleX(1); }
.solas-nav .wp-block-navigation-item__content[aria-current="page"] { color: var(--solas-m); font-weight: 700; }
.solas-nav .wp-block-navigation-item__content[aria-current="page"]::after { background: var(--solas-m); }
.solas-nav--plum    { --nav-ink: var(--solas-m); }
.solas-nav--lime    { --nav-ink: var(--solas-lime); }
.solas-nav--fig     { --nav-ink: var(--solas-fig); }
.solas-nav--butter  { --nav-ink: var(--solas-butter); }
.solas-nav--orange  { --nav-ink: var(--solas-orange); }
.solas-nav .solas-nav__quote { display: none; }
.solas-header-cta .wp-block-button__link { padding: 0.7rem 1.2rem; font-size: 0.875rem; white-space: nowrap; }
.wp-block-buttons.solas-header-cta .solas-header-cta__short { display: none; }
.solas-nav :is(.wp-block-navigation__responsive-container-open, .wp-block-navigation__responsive-container-close) { min-width: 44px; min-height: 44px; align-items: center; justify-content: center; }
.solas-brand .wp-block-site-title { white-space: nowrap; }

/* The open menu (phones and tablets): big display type, left-aligned, each link
   marked with its family's ink. */
.solas-nav .wp-block-navigation__responsive-container.is-menu-open {
	padding: clamp(4.5rem, 12vw, 6rem) clamp(1.5rem, 7vw, 4rem) 2.5rem;
	background:
		var(--solas-cmyk) top / 100% 4px no-repeat,
		var(--wp--preset--color--base);
}
.solas-nav .is-menu-open .wp-block-navigation__responsive-container-content,
.solas-nav .is-menu-open .wp-block-navigation__container { align-items: flex-start !important; gap: 0.35rem !important; }
.solas-nav .is-menu-open .wp-block-navigation-item__content {
	display: flex;
	align-items: center;
	gap: 1rem;
	padding-block: 0.4rem !important;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2.1rem, 8vw, 3.4rem);
	font-weight: 800;
	line-height: 1.05;
	letter-spacing: -0.045em;
}
.solas-nav .is-menu-open .wp-block-navigation-item__content::before {
	content: "";
	width: 0.75rem;
	height: 0.75rem;
	flex-shrink: 0;
	border-radius: 50%;
	background: var(--nav-ink, var(--solas-ink));
}
.solas-nav .is-menu-open .wp-block-navigation-item__content::after { display: none; }
.solas-nav .is-menu-open .wp-block-navigation-item__content[aria-current="page"] {
	text-decoration: underline;
	text-decoration-color: var(--solas-m);
	text-decoration-thickness: 0.12em;
	text-underline-offset: 0.18em;
}
.solas-nav .is-menu-open .wp-block-navigation__responsive-container-close { top: 1.5rem; right: clamp(1.5rem, 7vw, 4rem); }
.solas-nav .is-menu-open .wp-block-navigation__responsive-container-close svg { width: 32px; height: 32px; }
.solas-nav .is-menu-open .solas-nav__quote { display: flex; margin-top: 1rem; }
.solas-nav .is-menu-open .solas-nav__quote .wp-block-navigation-item__content { padding: 0.85rem 1.15rem !important; border-radius: 2px; background: var(--solas-m); color: #fff; font: 600 1rem var(--wp--preset--font-family--body); letter-spacing: 0; }
.solas-nav .is-menu-open .solas-nav__quote .wp-block-navigation-item__content::before { display: none; }

/* Tablets share the phone menu up to 1,100px. WordPress only switches below 600px
   on its own and hides the close button above that, so restore both controls. */
@media (min-width: 600px) and (max-width: 1099px) {
	.solas-nav .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex; }
	.solas-nav .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none; }
	.solas-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close { display: flex; }
}

/* ---------- Photos: static printed proofs ---------- */

/* A photo printed with a white margin, like a proof pulled off the press. */
.solas-proof {
	margin: 0;
	padding: clamp(5px, 0.7vw, 9px);
	background: #fff;
	box-shadow: 0 1px 0 rgb(0 0 0 / 0.05), 0 28px 48px -28px rgb(40 21 47 / 0.6);
}
.solas-proof img { display: block; width: 100%; height: 100%; object-fit: cover; }

/* ---------- Hero: a press sheet ---------- */

.solas-hero { padding-block: clamp(1.5rem, 3vw, 2.5rem) clamp(2rem, 4vw, 3rem); overflow: hidden; }
.solas-sheet { position: relative; padding: clamp(2rem, 5vw, 4.5rem) clamp(1.25rem, 4vw, 3.5rem) clamp(1.5rem, 3vw, 2.5rem); }
/* A narrow lead straight on the sheet sits left, under the title, not centred. */
.solas-sheet > .solas-lead { margin-left: 0 !important; }
.solas-hero__cols { gap: clamp(1.5rem, 4vw, 4rem); }
.solas-hero__title {
	font-size: clamp(4rem, 10.5vw, 9rem);
	font-weight: 800;
	line-height: 0.86;
	letter-spacing: -0.055em;
	margin-block: 0.25rem 1.75rem;
}
.solas-hero__actions { margin-top: 1.5rem; }
@keyframes solas-rise { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: none; } }

/* Proof that people are happy, next to the buttons. */
.solas-trust { gap: 0.4rem 1.6rem; margin-top: 1.25rem; }
.solas-trust p { margin: 0; font-size: 0.875rem; color: var(--wp--preset--color--muted); }
.solas-trust strong { color: var(--solas-ink); }
.solas-trust a { color: inherit; text-decoration: none; }
.solas-trust a:hover { color: var(--solas-m); }
.solas-trust__stars a::before { content: "★★★★★"; margin-right: 0.45rem; color: var(--wp--preset--color--orange); letter-spacing: 0.08em; }

/* The printer's slug line along the bottom edge of the sheet. */
.solas-slug {
	margin: clamp(2rem, 4vw, 3rem) 0 0;
	padding-top: 0.9rem;
	border-top: 1px dashed var(--wp--preset--color--line);
	font-family: var(--solas-mono);
	font-size: 0.6875rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}

/* Crop marks just outside each corner, like a sheet before trimming. */
.solas-crop { --mark: 28px; --gap: 10px; position: relative; }
.solas-crop::before,
.solas-crop::after {
	content: "";
	position: absolute;
	inset: calc(-1 * var(--gap));
	pointer-events: none;
	background:
		linear-gradient(currentColor, currentColor) 0 var(--gap) / var(--mark) 1px,
		linear-gradient(currentColor, currentColor) var(--gap) 0 / 1px var(--mark),
		linear-gradient(currentColor, currentColor) 100% var(--gap) / var(--mark) 1px,
		linear-gradient(currentColor, currentColor) calc(100% - var(--gap)) 0 / 1px var(--mark);
	background-repeat: no-repeat;
	opacity: 0.55;
}
.solas-crop::after { transform: scaleY(-1); }

/* ---------- Homepage print stage ---------- */

/* The moving print scene is the full background, including on phones. Copy and
   controls remain static above it; a directional scrim protects their contrast. */
.solas-stage {
	position: relative; isolation: isolate; display: flex; flex-direction: column;
	box-sizing: border-box; min-height: max(42rem, calc(100svh - 7.45rem));
	padding-block: 1.5rem; overflow: hidden;
}
.solas-stage > * { margin-block: 0 !important; }
.solas-stage.solas-velvet { background: #28152F; }
.solas-stage > :is(.solas-stage__poster, .solas-stage__canvas) {
	position: absolute !important; inset: 0 !important;
	width: 100%; height: 100%; max-width: none !important; margin: 0 !important;
}
.solas-stage__poster { z-index: 0; }
.solas-stage__poster :is(picture, img) { display: block; width: 100%; height: 100%; object-fit: cover; }
.solas-stage__canvas { z-index: 1; opacity: 0; transition: opacity 1.1s var(--solas-ease); }
.solas-stage.is-live .solas-stage__canvas { opacity: 1; }
.solas-stage__canvas > canvas {
	position: absolute; inset: 0; width: 100% !important; height: 100% !important;
	max-width: none; object-fit: cover;
}
.solas-stage__canvas canvas:not(.solas-stage__dissolve) { display: block; }
.solas-stage__dissolve { pointer-events: none; }
.solas-stage__dissolve[hidden] { display: none !important; }
.solas-stage::before {
	content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
	background: linear-gradient(0deg, rgb(28 13 34 / .9), transparent 32%),
		linear-gradient(90deg, rgb(28 13 34 / .94), rgb(28 13 34 / .8) 36%, rgb(28 13 34 / .6) 48%, transparent 74%);
}
.solas-stage__sheet {
	position: relative; z-index: 3; box-sizing: border-box; flex: 1 0 auto;
	display: flex; flex-direction: column; justify-content: flex-end; width: 100%;
	padding: clamp(1rem, 3vw, 2.5rem) clamp(1.5rem, 4vw, 3.5rem) .5rem;
	color: var(--wp--preset--color--base);
}
.solas-stage__sheet.solas-crop::before, .solas-stage__sheet.solas-crop::after { display: none; }
.solas-stage .solas-stage__content { max-width: 32rem; margin-block: 0 !important; }
.solas-stage__content > * { margin-block-start: 0; }
.solas-stage .solas-eyebrow { color: rgb(255 253 250 / .8); font-size: .65rem; }
.solas-stage .solas-eyebrow::before { background: linear-gradient(90deg, var(--solas-c) 0 25%, var(--solas-m-vivid) 25% 50%, var(--solas-y) 50% 75%, #fff 75%); }
.solas-stage .solas-hero__title { color: var(--wp--preset--color--base); font-size: clamp(4rem, 5.8vw, 5.5rem); line-height: .94; word-spacing: .05em; margin-block: 1.2rem; max-width: 32rem; }

.solas-stage .solas-lead { color: rgb(255 253 250 / .88); font-size: 1.0625rem; line-height: 1.6; max-width: 27rem; }
.solas-stage .solas-hero__actions { margin-top: 1.5rem; }
.solas-stage .is-style-outline .wp-block-button__link { border-color: rgb(255 253 250 / .65); color: var(--wp--preset--color--base); }
.solas-stage .is-style-outline .wp-block-button__link:hover { background: var(--wp--preset--color--base); color: var(--solas-ink); }
.solas-stage .solas-wa.is-style-outline .wp-block-button__link::before { background: #25D366; }
.solas-stage .has-accent-background-color.wp-block-button__link:hover { background: #BADF52 !important; }
.solas-stage .solas-trust { margin-top: 1rem; }
.solas-stage .solas-trust p { color: rgb(255 253 250 / .8); font-size: .75rem; }
.solas-stage .solas-trust strong { color: var(--wp--preset--color--base); }
.solas-stage .solas-trust a:hover { color: var(--solas-lime); }
.solas-stage .solas-trust__stars a::before { color: var(--solas-butter); }

/* What is on screen, with previous, pause and next. A thin lime line runs the length of
   each study. Shown with the posters too, so the stage is browsable without motion. */
.solas-stage__controls {
	position: relative;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem 1.5rem;
	margin-top: 2.75rem;
	padding-top: 0.85rem;
	border-top: 1px solid rgb(255 253 250 / 0.18);
}
.solas-stage__controls[hidden] { display: none; }
.solas-stage__now { display: flex; align-items: baseline; gap: 0.85rem; margin: 0; }
.solas-stage__count { font-family: var(--solas-mono); font-size: 0.75rem; letter-spacing: 0.08em; color: rgb(255 253 250 / 0.6); }
.solas-stage__name { font-family: var(--wp--preset--font-family--heading); font-size: 1.15rem; font-weight: 700; letter-spacing: -0.02em; color: var(--wp--preset--color--base); text-decoration: none; }
.solas-stage__name::after { content: " →"; color: var(--solas-lime); }
.solas-stage__name:hover { color: var(--solas-lime); }
.solas-stage__buttons { display: flex; gap: 0.5rem; }
.solas-stage__buttons button {
	min-width: 44px;
	min-height: 44px;
	padding: 0 0.95rem;
	border: 1px solid rgb(255 253 250 / 0.35);
	border-radius: 999px;
	background: rgb(40 21 47 / 0.35);
	color: var(--wp--preset--color--base);
	font: 600 0.875rem var(--wp--preset--font-family--body);
	cursor: pointer;
	transition: background-color .2s, border-color .2s, color .2s;
}
.solas-stage__buttons button:hover { border-color: var(--solas-lime); color: var(--solas-lime); }
.solas-stage__buttons button:focus-visible { outline: 3px solid var(--solas-lime); outline-offset: 2px; }
.solas-stage.is-static [data-stage="pause"] { display: none; }
.solas-stage__progress { position: absolute; top: -1px; left: 0; right: 0; height: 2px; overflow: hidden; }
.solas-stage__progress span { display: block; height: 100%; background: var(--solas-lime); transform-origin: left; animation: solas-stage-progress 9s linear forwards; }
.solas-stage:not(.is-live) .solas-stage__progress,
.solas-stage.is-static .solas-stage__progress { display: none; }
@keyframes solas-stage-progress { from { transform: scaleX(0); } to { transform: scaleX(1); } }

/* The art stays behind the whole opening on every screen, never in a small card. */
@media (min-width: 960px) {
	/* Centre the copy in the space above the controls, alongside the product. */
	.solas-stage .solas-stage__content { margin-block: auto !important; }
}
@media (max-width: 959px) {
	.solas-stage { min-height: max(42rem, calc(100svh - 5rem)); padding: 1rem 0; }
	.solas-stage__sheet { padding: 1.5rem 2rem .5rem; }
	.solas-stage .solas-stage__content { max-width: 29rem; }
	.solas-stage .solas-hero__title { font-size: clamp(3.5rem, 8vw, 4.5rem); }
}
@media (max-width: 959px) and (max-aspect-ratio: 1/1) {
	.solas-stage { min-height: max(43rem, calc(100svh - 5rem)); }
	.solas-stage::before { background: linear-gradient(0deg, rgb(28 13 34 / .98) 0%, rgb(28 13 34 / .94) 32%, rgb(28 13 34 / .82) 48%, transparent 72%); }
	.solas-stage .solas-stage__content { padding-top: 18rem; }
}
@media (max-width: 599px) {
	.solas-stage { min-height: max(43rem, calc(100svh - 4.5rem)); }
	.solas-stage__sheet { padding: .75rem 1.5rem .25rem; }
	.solas-stage .solas-stage__content { max-width: none; }
	.solas-stage .solas-eyebrow { font-size: .625rem; letter-spacing: .1em; margin-bottom: .6rem; }
	.solas-stage .solas-hero__title { font-size: clamp(2.75rem, 12vw, 3.5rem); margin-block: .5rem .85rem; }
	.solas-stage .solas-lead { font-size: .875rem; line-height: 1.5; max-width: 22rem; }
	.solas-stage .solas-hero__actions { margin-top: 1rem; flex-wrap: nowrap; gap: .65rem; }
	.solas-stage .solas-hero__actions .wp-block-button__link { font-size: .75rem; padding: .85rem .9rem; min-height: 44px; }
	.solas-stage .solas-trust { margin-top: .85rem; }
	.solas-stage .solas-trust p { font-size: .6875rem; }
	.solas-stage .solas-stage__controls { margin-top: 1.75rem; gap: .5rem; padding-top: .65rem; }
	.solas-stage .solas-stage__name { font-size: .875rem; }
	.solas-stage__count { font-size: .625rem; }
	.solas-stage__now { gap: .5rem; display: block; min-width: 0; height: 48px; }
	.solas-stage__count { display: block; margin-bottom: .2rem; }
	.solas-stage .solas-stage__controls { display: grid; grid-template-columns: minmax(0, 1fr) auto; }
	.solas-stage .solas-stage__name { display: block; font-size: .8125rem; line-height: 1.2; }
	.solas-stage__buttons { gap: 0; }
	.solas-stage__buttons button { border: 0; background: transparent; padding: 0 .5rem; min-width: 44px; font-size: .75rem; }
}
@media (max-width: 374px) {
	.solas-stage__sheet { padding-inline: 1.25rem; }
	.solas-stage .solas-hero__actions { display: grid; grid-template-columns: minmax(0, 1fr); }
	.solas-stage .solas-hero__actions .wp-block-button { width: 100%; }
	.solas-stage .solas-hero__actions .wp-block-button__link { display: block; width: 100%; box-sizing: border-box; white-space: nowrap; font-size: .8125rem; }
	.solas-stage .solas-stage__controls { align-items: flex-end; }
	.solas-stage__now { display: block; }
	.solas-stage__count { display: block; margin-bottom: .25rem; }
}

/* ---------- Ticker: two printed tapes crossing the page ---------- */

/* Rotation extends beyond the tapes' layout height. Reserve clearance that grows
   with their width, including the lower tape's shadow, before clipping the sides. */
.solas-tapes {
	--tape-pad: max(1.5rem, calc(0.75rem + 1.8vw));
	--tape-size: clamp(1.15rem, 2.1vw, 1.8rem);
	position: relative;
	padding-block: var(--tape-pad) calc(1rem + 2.4vw);
	overflow: hidden;
}
/* Straight after the homepage hero, the tapes sit on the join: aubergine above, paper
   below, as if taping the dark sheet to the page. The dark edge is tilted with the lime
   tape and runs along its centre line, so the join is always hidden behind it. The hero
   fades to plain aubergine at its foot, so the two grounds meet without a line. */
.solas-stage + .solas-tapes { margin-block-start: 0 !important; }
.solas-stage + .solas-tapes::before {
	content: "";
	position: absolute;
	z-index: 0;
	left: -10%;
	right: -10%;
	bottom: calc(100% - var(--tape-pad) - 0.55rem - var(--tape-size) * 0.575);
	height: 20vw;
	background: var(--wp--preset--color--ink);
	rotate: 1.8deg;
	transform-origin: 50% 100%;
}
.solas-tapes > * { margin: 0 !important; }
.solas-tape {
	position: relative;
	display: flex;
	width: 112%;
	margin-left: -6% !important;
	padding-block: 0.55rem;
	overflow: hidden;
	white-space: nowrap;
}
.solas-tape--lime { rotate: 1.8deg; }
.solas-tape--plum { position: relative; z-index: 1; rotate: -2.4deg; margin-top: -0.6rem !important; box-shadow: 0 20px 34px -22px rgb(40 21 47 / 0.7); }
.solas-tape__track {
	flex-shrink: 0;
	margin: 0;
	padding-right: 0.6em;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--tape-size);
	font-weight: 800;
	line-height: 1.15;
	letter-spacing: -0.03em;
	animation: solas-marquee 55s linear infinite;
}
.solas-tape--plum .solas-tape__track { animation-duration: 80s; animation-direction: reverse; }
/* site.js eases each tape to a stop on its own (hover, or a tap on touch screens) and
   both while the strip has keyboard focus. Without it, hovering a tape pauses it. */
.solas-tapes:not(.is-eased) .solas-tape:hover .solas-tape__track,
.solas-tapes:not(.is-eased):focus-within .solas-tape__track { animation-play-state: paused; }
.solas-tapes:focus-visible { outline: 3px solid var(--solas-m); outline-offset: -3px; }
@keyframes solas-marquee { to { translate: -100% 0; } }
/* site.js wraps each ✦ in a span so the stars can carry the inks. */
.solas-tape__star { display: inline-block; margin-inline: 0.45em; font-size: 0.7em; vertical-align: 0.18em; }
.solas-tape--lime .solas-tape__star { color: var(--solas-m); }
.solas-tape--plum .solas-tape__star:nth-of-type(odd) { color: var(--solas-lime); }
.solas-tape--plum .solas-tape__star:nth-of-type(even) { color: var(--solas-butter); }

/* ---------- Client logos: a moving strip ---------- */

/* Each logo sits on its own white tile. site.js copies the track so the loop has no gap,
   and eases the strip to a stop while the pointer rests on it. */
.solas-logos__head { margin-bottom: clamp(1.25rem, 2.5vw, 2rem); }
.solas-logos__head h2 { margin: 0; }
.solas-logos__strip {
	display: flex;
	overflow: hidden;
	padding-block: 0.75rem 1.5rem;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
}
.wp-block-group.solas-logos__track { flex-shrink: 0; gap: clamp(1rem, 2.5vw, 1.75rem); margin: 0 !important; padding-right: clamp(1rem, 2.5vw, 1.75rem); animation: solas-marquee 45s linear infinite; }
.solas-logos__logo { flex: 0 0 auto; display: grid; place-items: center; width: clamp(9.5rem, 16vw, 12.5rem); height: clamp(5rem, 8vw, 6.25rem); margin: 0 !important; padding: 0.85rem 1.25rem; box-sizing: border-box; border-radius: 4px; background: #fff; box-shadow: 0 0 0 1px var(--wp--preset--color--line), 0 16px 26px -22px rgb(40 21 47 / 0.5); }
.solas-logos__logo img { width: 100% !important; height: 100% !important; object-fit: contain; }
@media (prefers-reduced-motion: reduce) {
	.solas-logos__strip { -webkit-mask-image: none; mask-image: none; }
	.wp-block-group.solas-logos__track { flex-wrap: wrap !important; flex-shrink: 1; justify-content: center; animation: none; }
}

/* ---------- The swatch book: five chips, Printing leading ---------- */

/* Three across: Printing takes two columns of the first row, its photo beside the words;
   the other four chips fill the rest. Two across on tablets, one on phones. */
.wp-block-group.solas-chipbook { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1rem, 2vw, 1.5rem); }
.solas-fam.solas-fam--lead { grid-column: span 2; display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); grid-template-rows: auto 1fr; }
.solas-fam--lead .solas-fam__photo { grid-row: 1 / span 2; aspect-ratio: auto; min-height: 100%; }
.solas-fam--lead .solas-fam__label { display: flex; flex-direction: column; justify-content: flex-end; padding: clamp(1.25rem, 2.4vw, 2rem); }
.solas-fam--lead .solas-fam__name { font-size: clamp(2rem, 3.4vw, 3rem); }
.solas-fam--lead .solas-fam__list { font-size: 1rem; max-width: 26rem; }
@media (max-width: 1099px) {
	.wp-block-group.solas-chipbook { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
/* Below 782px the chips become compact full-width rows (Small screens), so one column. */
@media (max-width: 781px) {
	.wp-block-group.solas-chipbook { grid-template-columns: minmax(0, 1fr); }
	.solas-fam.solas-fam--lead { grid-column: auto; }
}
@media (max-width: 599px) {
	.solas-fam.solas-fam--lead { display: flex; }
	.solas-fam--lead .solas-fam__photo { aspect-ratio: 16 / 9; min-height: 0; }
}
.solas-fam {
	position: relative;
	top: 0;
	display: flex;
	flex-direction: column;
	background: #fff;
	border-radius: 4px;
	overflow: hidden;
	box-shadow: 0 0 0 1px var(--wp--preset--color--line), 0 24px 40px -32px rgb(40 21 47 / 0.6);
	/* Relative positioning repaints glyphs during the lift instead of resampling a text layer. */
	transition: top .45s var(--solas-ease), box-shadow .45s var(--solas-ease);
}
.solas-fam > * { margin: 0 !important; }
.solas-fam__photo { aspect-ratio: 16 / 9; overflow: hidden; }
.solas-fam__photo img { width: 100%; height: 100%; object-fit: cover; transition: scale .9s var(--solas-ease); }
.solas-fam__ink {
	padding: 0.7rem 1.15rem;
	font-family: var(--solas-mono);
	font-size: 0.6875rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	transition: padding .45s var(--solas-ease);
}
.solas-fam__ink p { margin: 0; }
.solas-fam__label { flex-grow: 1; padding: 1.15rem 1.15rem 1.4rem; }
.solas-fam__name { display: flex; justify-content: space-between; gap: 1rem; margin: 0 0 0.5rem; font-size: clamp(1.45rem, 2.1vw, 1.85rem); letter-spacing: -0.04em; }
.solas-fam__name::after { content: "→"; transition: translate .3s var(--solas-ease); }
.solas-fam__name a { color: var(--solas-ink); text-decoration: none; }
/* The whole chip is the link. */
.solas-fam__name a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.solas-fam__list { margin: 0; font-size: 0.9375rem; line-height: 1.55; color: var(--wp--preset--color--muted); }
.solas-fam:hover { box-shadow: 0 0 0 1px var(--solas-m), 0 24px 40px -32px rgb(40 21 47 / 0.6); }
.solas-fam:has(a:focus-visible) { outline: 3px solid var(--solas-m); outline-offset: 3px; }
.solas-fam a:focus-visible { outline: none; }

/* ---------- Popular jobs ---------- */

.solas-popular.solas-section { padding-block: clamp(3rem, 5vw, 5rem); }
.solas-popular .solas-section__head { margin-bottom: 1rem; }
.solas-popular__help { margin-block: 0 1.5rem !important; font-size: 0.9375rem; }
.wp-block-group.solas-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.solas-tile {
	position: relative;
	top: 0;
	display: flex;
	flex-direction: column;
	box-sizing: border-box;
	padding: 0;
	background: #fff;
	border: 0;
	border-bottom: 2px solid transparent;
	border-radius: 3px;
	overflow: hidden;
	transition: top .4s var(--solas-ease), box-shadow .4s var(--solas-ease);
}
.solas-tile > * { margin: 0 !important; }
.solas-tile__photo { width: 100%; aspect-ratio: 16 / 10; overflow: hidden; }
.solas-tile__photo img { display: block; width: 100%; height: 100%; object-fit: cover; transition: scale .9s var(--solas-ease); }
.solas-tile__name { display: flex; flex: 1; align-items: center; justify-content: space-between; gap: 0.5rem; min-width: 0; min-height: 76px; box-sizing: border-box; padding: 0.875rem; font-size: 1.125rem; line-height: 1.2; letter-spacing: -0.025em; }
.solas-tile__name a { min-width: 0; color: var(--solas-ink); text-decoration: none; }
.solas-tile__name a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.solas-tile__name::after { content: "→" / ""; display: grid; place-items: center; flex: 0 0 28px; width: 28px; height: 28px; border-radius: 50%; color: var(--solas-m); transition: translate .3s var(--solas-ease), background-color .3s var(--solas-ease), color .3s var(--solas-ease); }
.solas-tile:hover { border-color: var(--solas-m); box-shadow: 0 12px 24px -20px rgb(40 21 47 / 0.55); }
.solas-tile:hover .solas-tile__name::after { background: var(--solas-m); color: #fff; }
.solas-tile:has(a:focus-visible) { outline: 3px solid var(--solas-m); outline-offset: 3px; }
.solas-tile a:focus-visible { outline: none; }

/* Ordinary Details blocks keep the complete service lists available without JS. */
/* Preserve WordPress's automatic inline margins for centred constrained blocks. */
.solas-disclosure { margin-block: 1rem 0 !important; border-block: 1px solid var(--wp--preset--color--line); box-sizing: border-box; }
.solas-disclosure > summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	min-height: 48px;
	padding: 0.8rem 0.15rem;
	box-sizing: border-box;
	font-size: 0.9375rem;
	font-weight: 600;
	list-style: none;
	cursor: pointer;
}
.solas-disclosure > summary::-webkit-details-marker { display: none; }
.solas-disclosure > summary::after { content: "+"; flex-shrink: 0; font-size: 1.5rem; line-height: 1; transition: rotate .4s var(--solas-ease); }
.solas-disclosure[open]:not(.is-closing) > summary::after { rotate: 45deg; }
.solas-disclosure > summary:hover { color: var(--solas-m); }
.solas-disclosure > :last-child:not(summary) { margin-bottom: 1.25rem; }
.solas-presses__more { border-color: rgb(255 255 255 / 0.25); }
.solas-presses__more > summary:hover { color: var(--solas-lime); }
.solas-presses__more .solas-press:first-of-type { margin-top: 0; border: 0; }
.solas-presses .is-style-outline .wp-block-button__link { border-color: rgb(255 255 255 / 0.65); color: #fff; }
.solas-presses .is-style-outline .wp-block-button__link:hover { background: #fff; color: var(--solas-ink); }

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
	.solas-fam:hover { top: -6px; box-shadow: 0 0 0 1px var(--wp--preset--color--line), 0 34px 50px -30px rgb(40 21 47 / 0.65); }
	.solas-fam:hover .solas-fam__photo img { scale: 1.06; }
	.solas-fam:hover .solas-fam__ink { padding-block: 1.05rem; }
	.solas-fam:hover .solas-fam__name::after { translate: 5px 0; }
	.solas-tile:hover { top: -4px; box-shadow: 0 18px 30px -24px rgb(40 21 47 / 0.4); }
	.solas-tile:hover .solas-tile__photo img { scale: 1.06; }
	.solas-tile:hover .solas-tile__name::after { translate: 3px 0; }
}

/* ---------- Since 2012 / presses / customers ---------- */

.solas-halftone { background-image: radial-gradient(rgb(255 255 255 / 0.08) 1.1px, transparent 1.6px); background-size: 11px 11px; }
.solas-halftone--dark { background-image: radial-gradient(rgb(40 21 47 / 0.16) 1.1px, transparent 1.6px); }
/* A graded screen: lime dots fade out across the section, like a halftone ramp. */
.solas-halftone--fade { position: relative; isolation: isolate; }
.solas-halftone--fade.solas-halftone { background-image: none; }
.solas-halftone--fade::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: radial-gradient(rgb(166 204 57 / 0.22) 1.4px, transparent 1.9px) 0 0 / 12px 12px;
	-webkit-mask-image: linear-gradient(160deg, #000 0%, transparent 55%);
	mask-image: linear-gradient(160deg, #000 0%, transparent 55%);
}

.solas-numeral {
	font-size: clamp(6rem, 17vw, 13.5rem);
	font-weight: 800;
	line-height: 0.8;
	letter-spacing: -0.07em;
	margin-block: 0.5rem 1.5rem;
}
.solas-years { display: block; min-width: 3ch; font-variant-numeric: tabular-nums; }
.solas-numeral__label { display: block; margin-top: 1rem; font-size: clamp(1.65rem, 3vw, 2.5rem); line-height: 1.1; letter-spacing: -0.04em; color: var(--wp--preset--color--base); }

/* Workshop snapshots, pinned up like photos on the wall. */
.solas-snaps { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 2.5rem; max-width: 38rem; }
.solas-snaps > * { margin: 0 !important; }
.solas-snap { padding: 7px 7px 0; background: #fff; box-shadow: 0 26px 40px -24px rgb(0 0 0 / 0.7); }
/* Landscape prints: the snapshots show finished work, photographed wide. */
.solas-snap img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.solas-snap figcaption { margin: 0; padding: 0.55rem 0.2rem 0.65rem; font-family: var(--solas-mono); font-size: 0.6875rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--solas-ink); }
.solas-snap--a { rotate: -2.5deg; }
.solas-snap--b { rotate: 3deg; translate: 0 1.5rem; }

.solas-press { border-top: 1px solid rgb(255 255 255 / 0.14); padding-top: 1.25rem; margin-top: 1.4rem; }
.solas-press :where(h3, p) { margin-block: 0 0.35rem; }
.solas-dot { display: flex; align-items: center; gap: 0.8rem; }
.solas-dot::before { content: ""; width: 0.85rem; height: 0.85rem; border-radius: 50%; flex-shrink: 0; }
.solas-dot--plum::before    { background: var(--solas-m); }
.solas-dot--fig::before     { background: var(--solas-fig); }
.solas-dot--butter::before  { background: var(--solas-butter); }
.solas-dot--lime::before    { background: var(--solas-lime); }
.solas-dot--orange::before  { background: var(--solas-orange); }
.solas-dot--leaf::before    { background: var(--solas-leaf); }
.solas-dot--ink::before     { background: var(--solas-ink); }
/* On dark grounds the aubergine and fig dots would disappear. */
:where(.has-ink-background-color, .has-fig-background-color) :is(.solas-dot--ink, .solas-dot--fig)::before { background: var(--wp--preset--color--base); }

.solas-clients { margin-top: clamp(3.5rem, 7vw, 6rem); padding-top: 2rem; border-top: 1px solid rgb(255 255 255 / 0.14); }
.solas-clients__cards {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
	gap: 0.85rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.solas-clients__cards li {
	display: flex;
	align-items: center;
	min-height: 5.5rem;
	margin: 0;
	padding: 1.15rem 1.25rem;
	border: 1px solid rgb(255 255 255 / 0.16);
	border-top: 3px solid var(--client-ink, var(--solas-lime));
	border-radius: 4px;
	background: rgb(255 255 255 / 0.06);
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.2rem;
	font-weight: 700;
	line-height: 1.25;
	letter-spacing: -0.02em;
	color: #fff;
	box-sizing: border-box;
}
.solas-clients__cards li:nth-child(4n+2) { --client-ink: var(--solas-butter); }
.solas-clients__cards li:nth-child(4n+3) { --client-ink: #C2478F; }
.solas-clients__cards li:nth-child(4n) { --client-ink: var(--solas-orange); }

/* ---------- How it works: job tickets ---------- */

.solas-tickets { gap: 1.25rem; }
.solas-ticket {
	position: relative;
	padding: 2rem 1.75rem 1.75rem;
	background: var(--wp--preset--color--surface);
	border-top: 2px dashed var(--solas-ink);
	/* Punched notches on both sides. */
	-webkit-mask: radial-gradient(circle 11px at 0 4.6rem, transparent 98%, #000) left / 51% 100% no-repeat,
	              radial-gradient(circle 11px at 100% 4.6rem, transparent 98%, #000) right / 51% 100% no-repeat;
	mask: radial-gradient(circle 11px at 0 4.6rem, transparent 98%, #000) left / 51% 100% no-repeat,
	      radial-gradient(circle 11px at 100% 4.6rem, transparent 98%, #000) right / 51% 100% no-repeat;
	transition: rotate .4s var(--solas-ease), translate .4s var(--solas-ease);
}
.solas-ticket:nth-child(1) { rotate: -1.2deg; }
.solas-ticket:nth-child(2) { rotate: 0.8deg; translate: 0 10px; }
.solas-ticket:nth-child(3) { rotate: -0.6deg; }
.solas-ticket :where(h3, p) { margin-block: 0 0.5rem; }
.solas-ticket__no {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 4rem;
	font-weight: 800;
	line-height: 1;
	letter-spacing: -0.06em;
	color: var(--solas-m);
}

/* ---------- Reviews: the Google rating and business cards ---------- */

.solas-reviews__cols { align-items: flex-start; }
.solas-rating { max-width: 19rem; margin-top: 2rem; padding: 1.6rem 1.75rem 1.75rem; border-radius: 4px; box-shadow: 0 26px 40px -26px rgb(40 21 47 / 0.6); }
.solas-rating p { margin: 0; }
.solas-rating__score { font-family: var(--wp--preset--font-family--heading); font-size: 5.5rem; font-weight: 800; line-height: 0.85; letter-spacing: -0.07em; }
.solas-rating__stars { margin-top: 0.5rem !important; color: var(--solas-butter); font-size: 1.45rem; letter-spacing: 0.12em; }
.solas-rating__count { margin-top: 0.2rem !important; font-size: 0.9375rem; color: var(--wp--preset--color--line); }
.solas-rating__link { margin-top: 1.1rem !important; font-weight: 700; }
.solas-rating__link a { color: var(--solas-lime); text-underline-offset: 4px; }
.solas-rating__link a::after { content: " →"; }

/* The written reviews, as business cards dealt onto the table. site.js shuffles them for
   each visit and deals a hand at a time (--hand cards); each card pops into place with
   its own slight tilt. Colours follow the position in the hand, so every hand shows
   the brand inks in turn. */
.wp-block-group.solas-deck { --hand: 6; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1rem, 2.4vw, 1.75rem); align-items: stretch; }
.solas-review {
	--tilt: 0deg;
	position: relative;
	min-height: 12.5rem;
	justify-content: space-between;
	box-sizing: border-box;
	margin: 0 !important;
	padding: clamp(1.25rem, 2.2vw, 1.6rem);
	border-radius: 3px;
	background: var(--card-bg, #fff);
	color: var(--card-ink, var(--solas-ink));
	box-shadow: 0 1px 3px rgb(40 21 47 / 0.08), 0 18px 30px -24px rgb(40 21 47 / 0.55);
	rotate: var(--tilt);
	transition: rotate .45s var(--solas-ease), translate .45s var(--solas-ease), box-shadow .45s var(--solas-ease);
}
.solas-review[hidden] { display: none; }
.solas-review:hover { rotate: 0deg; translate: 0 -4px; box-shadow: 0 1px 3px rgb(40 21 47 / 0.08), 0 26px 36px -24px rgb(40 21 47 / 0.6); }
.solas-review:nth-child(6n+1) { --card-bg: var(--solas-m); --card-ink: var(--wp--preset--color--base); --quote: var(--solas-lime); --tilt: -1.2deg; }
.solas-review:nth-child(6n+2) { --card-bg: var(--solas-butter); --tilt: 0.9deg; }
.solas-review:nth-child(6n+3) { --card-bg: #fff; --tilt: -0.5deg; }
.solas-review:nth-child(6n+4) { --card-bg: var(--solas-lime); --tilt: 1.1deg; }
.solas-review:nth-child(6n+5) { --card-bg: var(--solas-fig); --card-ink: var(--wp--preset--color--base); --quote: var(--solas-lime); --tilt: -0.8deg; }
.solas-review:nth-child(6n) { --card-bg: var(--solas-orange); --quote: var(--solas-ink); --tilt: 0.6deg; }
.solas-review p { margin: 0; }
.solas-review__quote { font-size: clamp(0.95rem, 1.15vw, 1.05rem); font-weight: 500; line-height: 1.5; }
.solas-review__quote::before { content: "\201C"; margin-right: 0.15em; font-family: var(--wp--preset--font-family--heading); font-weight: 800; color: var(--quote, var(--solas-m)); }
/* Short reviews are set larger, so every card holds its space. */
.solas-review__quote.is-short { font-family: var(--wp--preset--font-family--heading); font-size: clamp(1.35rem, 2vw, 1.7rem); font-weight: 800; line-height: 1.1; letter-spacing: -0.03em; }
.solas-review__name {
	position: relative;
	align-self: stretch;
	padding-right: 3rem;
	font-size: 0.8125rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.solas-review__name span { display: block; margin-top: 0.15rem; font-size: 0.6875rem; font-weight: 600; opacity: 0.85; }
/* Four tiny process dots, the way printers mark a proof. */
.solas-review__name::after {
	content: "";
	position: absolute;
	right: 0;
	bottom: 0.3rem;
	width: 2.6rem;
	height: 0.55rem;
	background:
		radial-gradient(circle, var(--solas-c) 60%, transparent 62%) 0 0 / 0.65rem 100% no-repeat,
		radial-gradient(circle, var(--solas-m-vivid) 60%, transparent 62%) 0.65rem 0 / 0.65rem 100% no-repeat,
		radial-gradient(circle, var(--solas-y) 60%, transparent 62%) 1.3rem 0 / 0.65rem 100% no-repeat,
		radial-gradient(circle, currentColor 60%, transparent 62%) 1.95rem 0 / 0.65rem 100% no-repeat;
}
/* Dealt: each card drops in from a little higher, overshoots and settles at its tilt. */
.solas-deck.is-ready .solas-review:not(.is-dealt) { opacity: 0; }
.solas-review.is-dealt { animation: solas-deal .62s cubic-bezier(.34, 1.45, .64, 1) both; animation-delay: calc(var(--i, 0) * 90ms); }
@keyframes solas-deal {
	from { opacity: 0; scale: 0.72; translate: 0 -1.5rem; rotate: calc(var(--tilt) - 7deg); }
	55% { opacity: 1; }
	to { opacity: 1; scale: 1; translate: 0 0; rotate: var(--tilt); }
}
.solas-deck__deal { display: flex; align-items: center; justify-content: flex-end; gap: 1rem; margin-top: 1.5rem; }
.solas-deck__deal[hidden] { display: none; }
.solas-deck__deal p { margin: 0; font-size: 0.875rem; font-variant-numeric: tabular-nums; color: var(--wp--preset--color--muted); }
.solas-deck__deal button {
	order: 2;
	min-height: 44px;
	padding: 0.6rem 1.15rem;
	border: 2px solid var(--solas-ink);
	border-radius: 3px;
	background: transparent;
	color: var(--solas-ink);
	font: 700 0.875rem var(--wp--preset--font-family--body);
	cursor: pointer;
	transition: background-color .2s, color .2s;
}
.solas-deck__deal button::after { content: " ↻"; }
.solas-deck__deal button:hover { background: var(--solas-ink); color: var(--wp--preset--color--base); }
.solas-deck__deal button:focus-visible { outline: 3px solid var(--solas-m); outline-offset: 2px; }
@media (max-width: 1099px) {
	.wp-block-group.solas-deck { --hand: 4; grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 599px) {
	.wp-block-group.solas-deck { --hand: 3; grid-template-columns: minmax(0, 1fr); }
	.solas-review { min-height: 0; gap: 1.25rem; }
	.solas-deck__deal { justify-content: space-between; }
}
@media (prefers-reduced-motion: reduce) {
	.solas-review { rotate: none; transition-property: box-shadow; }
	.solas-review:hover { translate: none; }
	.solas-review.is-dealt { animation: solas-fade .3s ease both; }
}
@keyframes solas-fade { from { opacity: 0; } }

/* ---------- Questions and answers ---------- */

.solas-faq__item { margin: 0 !important; border-top: 1px solid var(--wp--preset--color--line); box-sizing: border-box; }
.solas-faq__item:last-child { border-bottom: 1px solid var(--wp--preset--color--line); }
.solas-faq__item summary {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1.25rem;
	padding: 1.3rem 0;
	cursor: pointer;
	list-style: none;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.15rem, 1.6vw, 1.4rem);
	font-weight: 700;
	letter-spacing: -0.02em;
	line-height: 1.25;
}
.solas-faq__item summary::-webkit-details-marker { display: none; }
.solas-faq__item summary::after {
	content: "+";
	flex-shrink: 0;
	display: grid;
	place-items: center;
	width: 2.2rem;
	height: 2.2rem;
	border-radius: 50%;
	background: var(--wp--preset--color--surface);
	font-size: 1.4rem;
	font-weight: 500;
	transition: rotate .3s var(--solas-ease), background-color .2s;
}
.solas-faq__item[open] summary::after { rotate: 45deg; background: var(--solas-lime); }
.solas-faq__item.is-closing summary::after { rotate: 0deg; background: var(--wp--preset--color--surface); }
.solas-faq__item summary:hover::after { background: var(--solas-lime); }
.solas-faq__item > p { max-width: 40em; margin: 0 !important; padding: 0 3.5rem 1.4rem 0; color: var(--wp--preset--color--muted); }

/* ---------- Closing call to action ---------- */

.solas-cta.solas-section { padding-block: clamp(2rem, 4vw, 3rem); }
.solas-cta__frame { padding: 0.75rem clamp(1.25rem, 4vw, 3rem); }
.solas-cta__title {
	font-size: clamp(3rem, 6vw, 5rem);
	font-weight: 800;
	line-height: 0.92;
	letter-spacing: -0.055em;
	margin-block: 0.5rem 1.5rem;
	text-wrap: balance;
}
.solas-cta__call { margin-bottom: 0 !important; font-size: 0.9375rem; }
.solas-cta__call a { color: #fff; text-underline-offset: 3px; }
/* Outline buttons on magenta: white, never ink (ink on magenta fails contrast). */
:is(.solas-cta, .solas-band) .is-style-outline .wp-block-button__link { color: #fff; border-color: rgb(255 255 255 / 0.8); }
:is(.solas-cta, .solas-band) .is-style-outline .wp-block-button__link:hover { background: #fff; color: var(--solas-ink); }

/* ---------- WhatsApp ---------- */

.solas-wa .wp-block-button__link::before {
	content: "";
	display: inline-block;
	width: 1.2em;
	height: 1.2em;
	margin-right: 0.55em;
	vertical-align: -0.24em;
	background: #25D366;
	-webkit-mask: url("assets/images/whatsapp.svg") center / contain no-repeat;
	mask: url("assets/images/whatsapp.svg") center / contain no-repeat;
}
.solas-wa.is-style-outline .wp-block-button__link::before,
.has-base-background-color.wp-block-button__link::before { background: #128C4A; }

/* ---------- Footer ---------- */

.solas-footer { overflow: hidden; }
.solas-footer__brand { margin-bottom: 1rem; }
.solas-footer__quote a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 700; text-underline-offset: 4px; }
.solas-socials { gap: 0.5rem; margin-top: 1rem; }
.solas-socials .wp-social-link a { display: grid; place-items: center; min-width: 44px; min-height: 44px; padding: 0 !important; border: 1px solid var(--wp--preset--color--line); border-radius: 50%; }
.solas-socials .wp-social-link { transition: none; }
.solas-socials .wp-social-link:hover { transform: none; }
.solas-socials .wp-social-link a:hover { color: var(--solas-m); background: #fff; }
.solas-footer__col .solas-eyebrow { margin-bottom: 0.9rem; }
.solas-footer__links { line-height: 1.5; font-weight: 500; }
.solas-footer__links a { color: var(--solas-ink); text-decoration: none; background: linear-gradient(var(--solas-lime), var(--solas-lime)) 0 100% / 0 0.35em no-repeat; transition: background-size .3s var(--solas-ease); }
.solas-footer__links a:hover { background-size: 100% 0.35em; }
.solas-footer__services { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.solas-footer__services li { margin: 0; }
.solas-footer__services a { display: inline-flex; align-items: center; min-height: 44px; box-sizing: border-box; }
.solas-contact-links { display: grid; gap: 0.2rem; list-style: none; margin: 0; padding: 0; }
.solas-contact-links li { display: grid; grid-template-columns: 1.2rem minmax(0, 1fr); gap: 0.7rem; align-items: center; margin: 0; min-height: 36px; }
.solas-contact-links li::before { content: ""; width: 1.15rem; height: 1.15rem; background: currentColor; -webkit-mask: var(--contact-icon) center / contain no-repeat; mask: var(--contact-icon) center / contain no-repeat; }
.solas-contact-links a { display: flex; align-items: center; min-height: 44px; padding-block: 0.25rem; box-sizing: border-box; overflow-wrap: anywhere; }
.solas-contact-link--location { --contact-icon: url("assets/images/location.svg"); }
.solas-contact-link--phone { --contact-icon: url("assets/images/phone.svg"); }
.solas-contact-link--whatsapp { --contact-icon: url("assets/images/whatsapp.svg"); }
.solas-contact-link--email { --contact-icon: url("assets/images/email.svg"); }
.solas-contact-link--hours { --contact-icon: url("assets/images/clock.svg"); }

.solas-footer__base {
	margin-top: 1.5rem;
	padding-top: 1.1rem;
	padding-inline-end: 12rem;
	border-top: 1px solid var(--wp--preset--color--line);
	font-size: 0.8125rem;
	color: var(--wp--preset--color--muted);
}
.solas-footer__base p { margin: 0; }
.solas-footer__base a { color: inherit; }

/* The footer is a deep aubergine band: light type, lime for actions. */
.solas-footer .solas-brand__wordmark img { height: 54px; }
.solas-footer .solas-footer__links a { color: var(--wp--preset--color--base); }
.solas-footer .solas-footer__quote a { color: var(--solas-lime); }
.solas-footer .solas-socials .wp-social-link a { border-color: rgb(255 253 250 / 0.22); }
.solas-footer .solas-socials .wp-social-link a:hover { background: var(--solas-lime); color: var(--solas-ink); }
.solas-footer .solas-footer__base { border-top-color: rgb(255 253 250 / 0.16); color: rgb(255 253 250 / 0.65); }
.solas-footer :focus-visible { outline-color: var(--solas-lime); }

/* Floating WhatsApp button, like his old site's chat bubble. */
.solas-float { position: fixed; right: clamp(1rem, 2.5vw, 1.75rem); bottom: clamp(1rem, 2.5vw, 1.75rem); z-index: 90; margin: 0; }
.solas-float .wp-block-button__link {
	border-radius: 999px;
	padding: 0.85rem 1.3rem;
	background: var(--solas-ink);
	box-shadow: 0 12px 28px -10px rgb(40 21 47 / 0.6), 0 0 0 0 rgb(37 211 102 / 0.55);
	animation: solas-pulse 2.6s 2s 3;
}
.solas-float .wp-block-button__link:hover { background: #000; }
/* On the homepage it waits until the hero's own WhatsApp button has scrolled away, so the
   two never sit side by side or cover the stage controls (site.js adds .is-shown). */
.solas-float { transition: opacity .3s var(--solas-ease), translate .3s var(--solas-ease), visibility .3s; }
body:has(.solas-stage .solas-wa) .solas-float:not(.is-shown) { opacity: 0; translate: 0 1rem; visibility: hidden; pointer-events: none; }
@keyframes solas-pulse { 70% { box-shadow: 0 12px 28px -10px rgb(40 21 47 / 0.6), 0 0 0 12px rgb(37 211 102 / 0); } 100% { box-shadow: 0 12px 28px -10px rgb(40 21 47 / 0.6), 0 0 0 0 rgb(37 211 102 / 0); } }

/* ---------- Inner pages ---------- */

.solas-page-hero { padding-block: clamp(1.5rem, 3vw, 2.5rem) clamp(1.5rem, 3vw, 2.5rem); overflow: hidden; }
.solas-page-hero__cols { gap: clamp(1.5rem, 4vw, 4rem); }
.solas-page-title {
	font-size: clamp(3.1rem, 8vw, 6.75rem);
	font-weight: 800;
	line-height: 0.92;
	letter-spacing: -0.055em;
	margin-block: 0.25rem 1.5rem;
	text-wrap: balance;
	animation: solas-rise .5s var(--solas-ease) both;
}
.solas-page-hero .solas-lead { animation: solas-rise .5s .06s var(--solas-ease) both; }
.solas-page-hero .wp-block-buttons { margin-top: 1.75rem; animation: solas-rise .5s .12s var(--solas-ease) both; }
.solas-page-hero--plain .solas-page-title { font-size: clamp(2.6rem, 6vw, 4.75rem); }

/* A dot screen in the page's own ink, fading out across the hero. */
.solas-dotfield { position: relative; isolation: isolate; --dot: rgb(155 30 104 / 0.18); }
.solas-dotfield::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: radial-gradient(var(--dot) 1.6px, transparent 2.1px) 0 0 / 13px 13px;
	-webkit-mask-image: linear-gradient(250deg, #000 0%, transparent 48%);
	mask-image: linear-gradient(250deg, #000 0%, transparent 48%);
}
.solas-dotfield--lime { --dot: rgb(122 160 30 / 0.3); }
.solas-dotfield--fig { --dot: rgb(76 41 73 / 0.22); }
.solas-dotfield--orange { --dot: rgb(231 133 55 / 0.28); }

/* Two proofs on inner-page heroes. */
.solas-duo { position: relative; aspect-ratio: 1 / 0.92; max-width: 32rem; margin-inline: auto; }
.solas-duo > * { margin: 0 !important; }
.solas-duo .solas-proof { position: absolute; }
.solas-duo__a { left: 0; top: 0; width: 60%; aspect-ratio: 4 / 5; rotate: -4deg; }
.solas-duo__a--wide { width: 80%; aspect-ratio: 16 / 9; }
.solas-duo__b { right: 0; bottom: 0; width: 52%; aspect-ratio: 1; rotate: 5deg; z-index: 1; }

/* Local section shortcuts are visibly separate from the site's page navigation. */
.solas-page-nav { margin-block: 1.5rem 0 !important; padding-top: 1rem; border-top: 1px solid var(--wp--preset--color--line); }
.solas-page-nav__label { margin: 0; font-family: var(--solas-mono); font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--wp--preset--color--muted); }
.solas-page-nav .solas-jump { margin-block: 0.65rem 0 !important; }
.solas-jump { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-block: 1.5rem 0 !important; }
.solas-jump a {
	padding: 0.45rem 0.95rem;
	border: 1.5px solid var(--wp--preset--color--line);
	border-radius: 999px;
	background: #fff;
	color: var(--solas-ink);
	font-size: 0.875rem;
	font-weight: 600;
	text-decoration: none;
	transition: background-color .2s, color .2s, border-color .2s;
}
.solas-jump a:hover { background: var(--solas-ink); border-color: var(--solas-ink); color: #fff; }

/* Catalogue groups: photo on one side, products on the other. */
.solas-cats { padding-top: clamp(1.5rem, 3vw, 2.5rem); }
.solas-cats > * { margin-block: 0 !important; }
.solas-cats > .solas-cats__intro { margin-bottom: 1.5rem !important; }
.solas-cats__help { max-width: 45rem; margin: 0; font-size: 0.9375rem; }
.solas-cats__part { padding-block: clamp(3rem, 6vw, 5rem) clamp(1rem, 2vw, 1.5rem); }
.solas-cats__part:first-child { padding-top: 1rem; }
.solas-cats__part > * { margin-block: 0 !important; }
.solas-cats__title { margin-top: 0.25rem !important; font-size: clamp(2.6rem, 6vw, 4.75rem); font-weight: 800; line-height: 0.95; letter-spacing: -0.05em; }
.solas-cats__part .solas-lead { margin-top: 1rem !important; }
.solas-cat { padding-block: clamp(2rem, 4vw, 3.25rem); border-top: 1px solid var(--wp--preset--color--line); }
.solas-cat__cols { gap: clamp(1.5rem, 4vw, 4rem); align-items: flex-start !important; margin: 0; }
.solas-cat--flip .solas-cat__cols { flex-direction: row-reverse; }
.solas-cat__media { position: sticky; top: 7rem; }
.solas-cat__photo { margin: 0; aspect-ratio: 4 / 3.3; border-radius: 4px; overflow: hidden; box-shadow: 0 26px 44px -30px rgb(40 21 47 / 0.6); }
.solas-cat__photo img { width: 100%; height: 100%; object-fit: cover; }
.solas-cat__no { margin: 0 0 0.6rem; font-family: var(--solas-mono); font-size: 0.75rem; letter-spacing: 0.08em; color: var(--wp--preset--color--muted); }
.solas-cat__title { margin: 0 0 0.75rem; font-size: clamp(1.75rem, 3vw, 2.5rem); letter-spacing: -0.04em; }
.solas-cat__intro { max-width: 36em; margin: 0 0 1.25rem; font-size: 1.0625rem; }
.solas-cat .wp-block-buttons { margin-top: 1.5rem; }

.solas-index__heading { margin-block: 0 clamp(2rem, 4vw, 3rem); text-wrap: balance; }
.solas-index__list { columns: 2 15rem; column-gap: 2.5rem; margin: 0; padding: 0; list-style: none; counter-reset: solas-item; }
.solas-index__list li {
	counter-increment: solas-item;
	display: flex;
	gap: 0.9rem;
	align-items: baseline;
	padding: 0.55rem 0;
	border-bottom: 1px dashed var(--wp--preset--color--line);
	break-inside: avoid;
	font-size: 1.0625rem;
	font-weight: 500;
}
.solas-index__list li::before {
	content: counter(solas-item, decimal-leading-zero);
	flex-shrink: 0;
	font-family: var(--solas-mono);
	font-size: 0.6875rem;
	color: var(--wp--preset--color--muted);
}
.solas-service-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: 0 2rem; columns: auto; }
.solas-service-list li { display: flex; padding: 0; border: 0; }
.solas-service-list li::before { display: none; }
.solas-service-list a {
	display: flex;
	width: 100%;
	height: 100%;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	min-height: 46px;
	padding: 0.65rem 0.15rem;
	border-bottom: 1px solid var(--wp--preset--color--line);
	box-sizing: border-box;
	color: var(--solas-ink);
	font-size: 1rem;
	line-height: 1.45;
	text-decoration: none;
	transition: color .2s, background-color .2s;
}
.solas-service-list a::after { content: "→"; flex-shrink: 0; color: var(--solas-m); }
.solas-service-list a:hover { background: var(--wp--preset--color--surface); color: var(--solas-m); }
.solas-service-list a:focus-visible { outline-offset: -2px; }
/* Wide screens: one photo travels down beside the whole catalogue and changes to each
   group's own photo as that group reaches the middle of the screen (site.js builds the
   panel from the groups' photos, which stay in place for the editor and screen readers). */
.solas-cats__lens { display: none; }
@media (min-width: 960px) {
	.solas-cats.is-lens .solas-cats__body { display: flex; align-items: flex-start; gap: clamp(2.5rem, 5vw, 5rem); }
	.solas-cats.is-lens .solas-cats__flow { flex: 1 1 auto; min-width: 0; }
	.solas-cats.is-lens .solas-cats__flow > * { margin-block-start: 0; }
	.solas-cats__lens.solas-crop {
		--gap: 12px;
		display: block;
		position: sticky;
		top: 7.75rem;
		flex: 0 0 40%;
		height: min(calc(100svh - 10.5rem), 38rem);
		margin-top: clamp(2rem, 4vw, 3.25rem);
		color: var(--solas-ink);
	}
	.solas-cats__frame { position: relative; height: 100%; border-radius: 4px; overflow: hidden; background: var(--wp--preset--color--surface); box-shadow: 0 30px 50px -34px rgb(40 21 47 / 0.65); }
	.solas-cats__frame img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; scale: 1.06; transition: opacity .7s var(--solas-ease), scale 1.4s var(--solas-ease); }
	.solas-cats__frame img.is-current { opacity: 1; scale: 1; }
	/* A job ticket pinned to the corner: which group is in view. */
	.solas-cats__caption {
		position: absolute;
		left: 1rem;
		bottom: 1rem;
		z-index: 1;
		display: flex;
		align-items: baseline;
		gap: 0.75rem;
		margin: 0;
		padding: 0.6rem 0.9rem;
		border-radius: 3px;
		background: var(--wp--preset--color--base);
		box-shadow: 0 10px 22px -14px rgb(40 21 47 / 0.6);
	}
	.solas-cats__caption span:first-child { font-family: var(--solas-mono); font-size: 0.75rem; letter-spacing: 0.08em; color: var(--wp--preset--color--muted); }
	.solas-cats__caption span:last-child { font-family: var(--wp--preset--font-family--heading); font-size: 1.05rem; font-weight: 800; letter-spacing: -0.02em; }
	/* Each group's own photo steps aside visually; its text takes the full width. */
	.solas-cats.is-lens .solas-cat__media { position: absolute !important; width: 1px !important; height: 1px; overflow: hidden; clip-path: inset(50%); }
	.solas-cats.is-lens .solas-cat__cols > .wp-block-column:not(.solas-cat__media) { flex-basis: 100% !important; }
	.solas-cats.is-lens .solas-cat--flip .solas-cat__cols { flex-direction: row; }
}
@media (min-width: 960px) and (prefers-reduced-motion: reduce) {
	.solas-cats__frame img { scale: 1; transition: opacity .3s ease; }
}
.solas-cat__more { margin-top: 0 !important; border-top: 0; }
.solas-cat__more > .solas-service-list { margin-top: 0; }
.solas-cat__more > .solas-service-list:last-child { margin-bottom: 0.75rem; }

/* Where your logo can go on a hoodie. */
.solas-positions__art { margin: 0; }
.solas-positions__art img { display: block; box-sizing: border-box; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: contain; padding: clamp(0.35rem, 1.25vw, 1rem); background: #fff; border: 1px solid var(--wp--preset--color--line); border-radius: 6px; }
.solas-positions__list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1rem; margin: 1.5rem 0 0; padding: 0; list-style: none; counter-reset: solas-pos; }
.solas-positions__list li { counter-increment: solas-pos; display: flex; align-items: center; gap: 0.65rem; min-height: 46px; box-sizing: border-box; padding: 0.4rem 0; border-bottom: 1px solid var(--wp--preset--color--line); font-size: 0.9375rem; font-weight: 500; }
.solas-positions__list li::before {
	content: counter(solas-pos) / "";
	flex-shrink: 0;
	display: grid;
	place-items: center;
	width: 1.9rem;
	height: 1.9rem;
	border-radius: 50%;
	background: var(--solas-m);
	color: #fff;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800;
}
.solas-positions__note { font-size: 0.8125rem; line-height: 1.55; }
.solas-positions__copy .wp-block-buttons { margin-top: 1.25rem; }

/* Compact quote band at the end of inner pages. */
.solas-prep__grid { gap: 1.5rem 2rem; margin-top: 2rem; }
.solas-prep__item { border-top: 3px solid var(--solas-m); padding-top: 1rem; }
.solas-prep__item h3 { margin-top: 0; font-size: 1.35rem; }
.solas-prep__item p { font-size: 1rem; line-height: 1.6; }
.solas-prep__link { margin-top: 1.5rem; font-weight: 600; }
.solas-page-hero:has(.solas-quick) .solas-page-title { font-size: clamp(2.8rem, 6vw, 5rem); }
@media (min-width: 782px) {
	.wp-block-group.solas-prep__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.solas-band.solas-section { padding-block: clamp(2.5rem, 5vw, 3.5rem); }
.solas-band__title { font-size: clamp(2.4rem, 5.5vw, 4.5rem); font-weight: 800; line-height: 0.95; letter-spacing: -0.05em; margin: 0 0 1rem; }

/* About: principles as editorial rows. */
.solas-section--tight { padding-block: clamp(3rem, 6vw, 5rem); }
.solas-story .solas-lead { margin-top: 0; color: var(--solas-ink); }
.solas-principle { padding-block: 2rem; border-top: 1px solid var(--wp--preset--color--line); margin-block: 0 !important; align-items: baseline; }
.solas-principle:last-child { border-bottom: 1px solid var(--wp--preset--color--line); }
.solas-principle p { margin: 0; }
.solas-principle__no { font-family: var(--solas-mono); font-size: 0.8125rem; color: var(--solas-m); font-weight: 600; }
.solas-principle .solas-principle__title { margin: 0; font-size: clamp(1.6rem, 3vw, 2.4rem); line-height: 1.05; letter-spacing: -0.035em; }

/* About: photos from the shop. */
.solas-gallery { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: clamp(9rem, 16vw, 13.5rem); gap: clamp(0.75rem, 1.5vw, 1.25rem); }
.solas-gallery > * { margin: 0 !important; }
.solas-gallery__item { position: relative; overflow: hidden; border-radius: 4px; background: #fff; }
.solas-gallery__item img { width: 100%; height: 100%; object-fit: cover; }
.solas-gallery__item--wide { grid-column: span 2; }
.solas-gallery__item--tall { grid-row: span 2; }
.solas-gallery__item figcaption {
	position: absolute;
	left: 0.75rem;
	bottom: 0.75rem;
	margin: 0;
	padding: 0.35rem 0.65rem;
	border-radius: 2px;
	background: rgb(255 255 255 / 0.94);
	color: var(--solas-ink);
	font-size: 0.75rem;
	font-weight: 600;
}

/* Contact: four quick ways to reach us. */
.wp-block-group.solas-quick { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; margin-top: 1.75rem; }
.solas-quick__item {
	position: relative;
	padding: 1.2rem 1.25rem 1.35rem;
	border: 1.5px solid var(--wp--preset--color--line);
	border-radius: 4px;
	background: #fff;
	transition: border-color .2s, box-shadow .3s;
}
.solas-quick__item > * { margin: 0 !important; }
.solas-quick__value { font-size: clamp(1.05rem, 1.5vw, 1.25rem); line-height: 1.25; letter-spacing: -0.02em; }
.solas-quick__value a { display: flex; align-items: center; gap: 0.65rem; color: var(--solas-ink); text-decoration: none; }
.solas-quick__value a::before { content: ""; width: 1.5rem; height: 1.5rem; flex-shrink: 0; background: currentColor; -webkit-mask: var(--contact-icon) center / contain no-repeat; mask: var(--contact-icon) center / contain no-repeat; }
.solas-quick__value a::after { content: ""; position: absolute; inset: 0; }
.solas-quick__note { margin-top: 0.65rem !important; font-size: 0.875rem; color: var(--wp--preset--color--muted); }
.solas-quick__item:hover { border-color: var(--solas-m); box-shadow: 0 20px 30px -24px rgb(40 21 47 / 0.55); }
.solas-quick__item:has(a:focus-visible) { outline: 3px solid var(--solas-m); outline-offset: 3px; }
.solas-quick__item a:focus-visible { outline: none; }
.solas-quick__item--whatsapp { --contact-icon: url("assets/images/whatsapp.svg"); background: var(--solas-ink); border-color: var(--solas-ink); }
.solas-quick__item--whatsapp .solas-quick__value a { color: #fff; }
.solas-quick__item--whatsapp .solas-quick__value a::before { background: #25D366; }
.solas-quick__item--whatsapp .solas-quick__note { color: var(--wp--preset--color--line); }
.solas-quick__item--call  { --contact-icon: url("assets/images/phone.svg"); }
.solas-quick__item--email { --contact-icon: url("assets/images/email.svg"); }
.solas-quick__item--visit { --contact-icon: url("assets/images/location.svg"); }

/* Contact: card with details and hours. */
.solas-contact-card { padding: clamp(1.75rem, 3.5vw, 2.75rem); border-radius: 4px; position: sticky; top: 7rem; }
.solas-contact-card h3 { margin-top: 0; }
.solas-contact-card__rows { line-height: 2.3; margin: 0; }
.solas-contact-card a { color: #fff; text-decoration-color: var(--solas-lime); text-underline-offset: 4px; }
.solas-contact-card a:hover { color: var(--solas-lime); }
.solas-contact-card__rows strong { display: inline-block; min-width: 6.5rem; color: var(--solas-lime); font-family: var(--solas-mono); font-size: 0.75rem; letter-spacing: 0.08em; text-transform: uppercase; font-weight: 600; }
.solas-contact-card .solas-eyebrow + .solas-hours { margin-top: 0; }
.solas-contact-card p.solas-eyebrow:not(:first-child) { margin-top: 1.75rem; }
.solas-hours { margin: 0; line-height: 2; }
.solas-hours span { float: right; color: var(--solas-lime); font-weight: 600; }

.solas-findus__photo { margin: 0; }
.solas-findus__photo img { width: 100%; border-radius: 4px; box-shadow: 0 30px 50px -34px rgb(40 21 47 / 0.6); }
/* Where to find us, set like a printed location card: the monogram, the address, the pin. */
.solas-findus__card {
	--gap: 12px;
	display: grid;
	align-content: end;
	min-height: clamp(18rem, 32vw, 24rem);
	padding: clamp(1.5rem, 3.5vw, 2.75rem);
	border-radius: 4px;
	box-shadow: 0 30px 50px -34px rgb(40 21 47 / 0.6);
}
.solas-findus__card.solas-crop::before, .solas-findus__card.solas-crop::after { color: var(--solas-ink); }
.solas-findus__card > * { margin: 0 !important; }
.solas-findus__mark { position: absolute; top: clamp(1.5rem, 3.5vw, 2.75rem); right: clamp(1.5rem, 3.5vw, 2.75rem); width: clamp(5rem, 11vw, 8rem); }
.solas-findus__mark img { display: block; width: 100%; height: auto; }
.solas-findus__address { font-family: var(--wp--preset--font-family--heading); font-size: clamp(1.6rem, 3vw, 2.4rem); font-weight: 800; line-height: 1.05; letter-spacing: -0.03em; }
.solas-findus__pin { margin-top: 0.85rem !important; font-family: var(--solas-mono); font-size: 0.8125rem; letter-spacing: 0.08em; color: var(--solas-lime); }

/* ---------- Quote form (Forminator, design set to "none") ---------- */

.forminator-ui.forminator-custom-form { --field-border: #DDD0D9; margin-top: 2rem; font-family: var(--wp--preset--font-family--body); }
.forminator-custom-form .forminator-row { margin-bottom: 1.35rem; }
.forminator-custom-form .forminator-label {
	display: block;
	margin-bottom: 0.45rem;
	font-size: 0.9375rem;
	font-weight: 600;
	color: var(--solas-ink);
}
.forminator-custom-form .forminator-required { color: var(--solas-m); margin-left: 0.15em; }
.forminator-custom-form .forminator-description { display: block; margin-top: 0.4rem; font-size: 0.8125rem; line-height: 1.5; color: var(--wp--preset--color--muted); }

/* Multi-service enquiries use native checkboxes, with the entire label tappable. */
.forminator-custom-form #radio-1 > .forminator-field { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.65rem; }
.forminator-custom-form #radio-1 .forminator-field > :not(.forminator-radio) { grid-column: 1 / -1; }
.forminator-custom-form #radio-1 .forminator-radio { display: flex; align-items: center; gap: 0.6rem; min-height: 48px; margin: 0; padding: 0.65rem 0.85rem; border: 1.5px solid var(--field-border); border-radius: 3px; background: #fff; cursor: pointer; }
.forminator-custom-form #radio-1 input { margin: 0; width: 1.1rem; height: 1.1rem; accent-color: var(--solas-m); }
.forminator-custom-form #radio-1 .forminator-radio-bullet { display: none; }
.forminator-custom-form #radio-1 .forminator-radio:has(input:checked) { border-color: var(--solas-m); background: #F8EDF3; }
.forminator-custom-form #checkbox-1 > .forminator-field { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.65rem; }
.forminator-custom-form #checkbox-1 .forminator-field > :not(.forminator-checkbox) { grid-column: 1 / -1; }
.forminator-custom-form #checkbox-1 .forminator-checkbox { display: flex; align-items: center; gap: 0.65rem; min-height: 48px; margin: 0; padding: 0.7rem 0.85rem; border: 1.5px solid var(--field-border); border-radius: 3px; box-sizing: border-box; background: #fff; font-size: 0.9375rem; line-height: 1.4; cursor: pointer; }
.forminator-custom-form #checkbox-1 .forminator-checkbox input { width: 1.15rem; height: 1.15rem; flex-shrink: 0; margin: 0; accent-color: var(--solas-m); }
.forminator-custom-form #checkbox-1 .forminator-checkbox-box { display: none; }
.forminator-custom-form #checkbox-1 .forminator-checkbox:has(input:checked) { border-color: var(--solas-m); background: #F8EDF3; }
.forminator-custom-form #checkbox-1.forminator-has_error .forminator-checkbox { border-color: #B3261E; }

/* Inputs: 16px text so phones do not zoom in, 48px tall for comfortable tapping. */
.forminator-custom-form :is(.forminator-input, .forminator-textarea, select, .select2-selection--single) {
	width: 100%;
	min-height: 3rem;
	padding: 0.75rem 0.95rem;
	border: 1.5px solid var(--field-border);
	border-radius: 3px;
	background: #fff;
	color: var(--solas-ink);
	font: inherit;
	font-size: 1rem;
	line-height: 1.4;
	box-sizing: border-box;
	transition: border-color .15s, box-shadow .15s;
}
.forminator-custom-form .forminator-textarea { min-height: 9.5rem; resize: vertical; }
.forminator-custom-form :is(.forminator-input, .forminator-textarea, select)::placeholder { color: #85718A; }
.forminator-custom-form :is(.forminator-input, .forminator-textarea, select):hover { border-color: #B9A8B6; }
.forminator-custom-form :is(.forminator-input, .forminator-textarea, select):focus,
.forminator-custom-form .select2-container--open .select2-selection--single {
	outline: none;
	border-color: var(--solas-m);
	box-shadow: 0 0 0 3px rgb(155 30 104 / 0.18);
}
.forminator-custom-form select,
.forminator-custom-form .select2-selection--single {
	appearance: none;
	padding-right: 2.5rem;
	background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2328152F' stroke-width='1.8'/%3E%3C/svg%3E") no-repeat right 1rem center;
}
.forminator-custom-form .select2-container { width: 100% !important; }
.forminator-custom-form .select2-selection__rendered { padding: 0 !important; line-height: 1.4 !important; color: var(--solas-ink) !important; }
.forminator-custom-form .select2-selection__arrow { display: none; }

/* Artwork upload: a dashed drop zone, like a proof waiting for its file. */
.forminator-custom-form .forminator-multi-upload {
	position: relative;
	padding: 1.5rem 1.25rem;
	border: 2px dashed var(--field-border);
	border-radius: 4px;
	background: var(--wp--preset--color--surface);
	text-align: center;
	transition: border-color .15s, background-color .15s;
}
.forminator-custom-form .forminator-multi-upload:hover,
.forminator-custom-form .forminator-multi-upload.forminator-dragover { border-color: var(--solas-m); background: #F8EDF3; }
.forminator-custom-form .forminator-multi-upload :is(a, .forminator-upload--button) { color: var(--solas-m); font-weight: 600; }
/* The browser's own file picker, restyled to match the site's outline buttons. */
.forminator-custom-form input[type="file"] { max-width: 100%; font: inherit; font-size: 0.9375rem; color: var(--wp--preset--color--muted); cursor: pointer; }
.forminator-custom-form input[type="file"]::file-selector-button {
	margin-right: 0.9rem;
	padding: 0.65rem 1.15rem;
	border: 1.5px solid var(--solas-ink);
	border-radius: 2px;
	background: #fff;
	color: var(--solas-ink);
	font: 600 0.9375rem var(--wp--preset--font-family--body);
	cursor: pointer;
	transition: background-color .2s, color .2s;
}
.forminator-custom-form input[type="file"]::file-selector-button:hover { background: var(--solas-ink); color: #fff; }
.forminator-custom-form .forminator-uploaded-files { list-style: none; margin: 0.75rem 0 0; padding: 0; font-size: 0.875rem; }

.forminator-custom-form .solas-form-note { margin: 0; font-size: 0.8125rem; color: var(--wp--preset--color--muted); }

/* Errors: said plainly, next to the field. */
.forminator-custom-form .forminator-has_error :is(.forminator-input, .forminator-textarea, select, .select2-selection--single) { border-color: #B3261E; }
.forminator-custom-form :is(.forminator-error-message, .forminator-label--validation) {
	display: block;
	margin-top: 0.4rem;
	font-size: 0.8125rem;
	font-weight: 600;
	color: #B3261E;
}

/* Submit: the site's primary button. */
.forminator-custom-form .forminator-button-submit {
	display: inline-flex;
	align-items: center;
	gap: 0.6em;
	min-height: 3.1rem;
	padding: 0.85rem 1.75rem;
	border: 0;
	border-radius: 2px;
	background: var(--solas-m);
	color: #fff;
	font: 600 1rem var(--wp--preset--font-family--body);
	cursor: pointer;
	transition: background-color .2s, transform .1s;
}
.forminator-custom-form .forminator-button-submit::after { content: "\2192"; transition: transform .25s var(--solas-ease); }
.forminator-custom-form .forminator-button-submit:hover { background: var(--wp--preset--color--primary-dark); }
.forminator-custom-form .forminator-button-submit:hover::after { transform: translateX(4px); }
.forminator-custom-form .forminator-button-submit:active { transform: scale(0.97); }
.forminator-custom-form .forminator-button-submit:focus-visible { outline: 3px solid var(--solas-m); outline-offset: 3px; }

/* Response messages. */
.forminator-custom-form .forminator-response-message:not(:empty) { margin-bottom: 1.5rem; padding: 1.1rem 1.25rem; border-radius: 4px; }
.forminator-custom-form .forminator-response-message.forminator-success { background: var(--solas-lime); color: var(--solas-ink); }
.forminator-custom-form .forminator-response-message.forminator-error { background: #FCEBEA; color: #8C1D18; }
.forminator-custom-form .forminator-response-message p { margin: 0.2rem 0; }

.solas-form-fallback { padding: 1rem 1.25rem; background: var(--wp--preset--color--surface); border-radius: 4px; }


/* ---------- Scroll reveal (added by assets/js/site.js) ---------- */

/* Only while waiting to be revealed: once .is-in lands, the items' own resting pose
   and hover states take over again. */
.solas-reveal { opacity: 0; transform: translateY(36px); transition: opacity .9s var(--solas-ease), transform .9s var(--solas-ease); }
.solas-reveal.is-in { opacity: 1; transform: none; }
.solas-reveal:not(.is-in) :is(.solas-quick__item, .solas-faq__item) { opacity: 0; translate: 0 18px; }
.solas-reveal:not(.is-in) .solas-ticket { opacity: 0; }
.solas-reveal :is(.solas-quick__item, .solas-faq__item, .solas-ticket) {
	transition-property: opacity, translate, rotate, box-shadow, border-color;
	transition-duration: .7s, .7s, .45s, .45s, .2s;
	transition-timing-function: var(--solas-ease);
	transition-delay: calc(var(--i, 0) * 60ms);
}
/* Card text never rides a transformed or translucent section. Reveal the opaque
   cards with a mask and a small positional rise, keeping the existing stagger. */
.solas-reveal.solas-reveal--cards { opacity: 1; transform: none; transition: none; }
.solas-reveal--cards :is(.solas-fam, .solas-tile) {
	clip-path: inset(-3rem);
	transition-property: top, clip-path, box-shadow;
	transition-duration: .7s, .7s, .45s;
	transition-timing-function: var(--solas-ease);
	transition-delay: calc(var(--i, 0) * 60ms);
}
.solas-reveal--cards:not(.is-in) :is(.solas-fam, .solas-tile) { top: 18px; clip-path: inset(0 0 100% 0); }
.solas-reveal--cards.is-settled :is(.solas-fam, .solas-tile) { clip-path: none; transition: top .45s var(--solas-ease), box-shadow .45s var(--solas-ease); }
.solas-reveal--cards.is-settled .solas-tile { transition-duration: .4s; }
/* After the entrance, hover reacts straight away. */
.solas-reveal.is-settled * { transition-delay: 0s !important; }

/* ---------- Small screens ---------- */

@media (min-width: 782px) {
	.wp-block-group.solas-tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (min-width: 1100px) {
	.wp-block-group.solas-tiles { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (min-width: 782px) {
	.solas-hero__title { font-size: clamp(4.5rem, 8vw, 6.75rem); line-height: 0.9; margin-bottom: 1.25rem; }
	.solas-cat__more { border-bottom: 0; }
	.solas-cat__more > summary { display: none; }
	.solas-cat__more > .solas-service-list { margin-top: 0; }
}

@media (max-width: 1099px) {
	.wp-block-group.solas-quick { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.solas-gallery { grid-template-columns: repeat(2, 1fr); }
	.solas-gallery__item--tall { grid-row: span 1; }
}

@media (max-width: 781px) {
	.solas-positions > .wp-block-columns { display: grid; gap: 0; }
	.solas-positions__copy { display: contents; }
	.solas-positions__copy > .solas-eyebrow { grid-row: 1; }
	.solas-positions__copy > h2 { grid-row: 2; }
	.solas-positions__copy > p:not([class*="solas-"]) { grid-row: 3; }
	.solas-positions__visual { grid-row: 4; margin-block: 1rem !important; }
	.solas-positions__list { grid-row: 5; margin-top: 0; }
	.solas-positions__note { grid-row: 6; }
	.solas-positions__copy > .wp-block-buttons { grid-row: 7; }
	.solas-positions__art img { padding: 0.25rem; }
	html { scroll-padding-top: 5.25rem; }
	.solas-section { padding-block: 3rem; }
	.solas-section__head { margin-bottom: 1.5rem; }
	.solas-utility { display: none; }
	.wp-site-blocks > header.wp-block-template-part,
	.admin-bar .wp-site-blocks > header.wp-block-template-part { top: 0; }
	.wp-block-buttons.solas-header-cta .solas-header-cta__full { display: none; }
	.wp-block-buttons.solas-header-cta .solas-header-cta__short { display: block; }
	.solas-mainbar > .wp-block-group > .wp-block-group:last-child { gap: 0.5rem !important; }
	.solas-header-cta .wp-block-button__link { padding: 0.65rem 0.85rem; font-size: 0.8125rem; }
	.solas-mainbar { padding-block: 0.65rem; }
	.solas-sheet { padding: 1.25rem 0.75rem; }
	.solas-hero__title { margin-bottom: 1.25rem; }
	.solas-hero__actions { margin-top: 1.25rem; }
	.solas-stage__name { font-size: 1rem; }
	.solas-duo { width: 100%; max-width: 13rem; margin-top: 0.5rem; }
	.solas-slug { margin-top: 1.5rem; font-size: 0.625rem; }
	.solas-trust { margin-top: 1.25rem; gap: 0.5rem 1rem; }
	.solas-trust__stars { flex-basis: 100%; }
	.solas-page-hero { padding-block: 1.25rem; }
	.solas-page-hero__cols { gap: 1.25rem; }
	.solas-page-hero .wp-block-buttons { margin-top: 1.25rem; }
	.solas-jump { gap: 0.5rem; font-size: 0.875rem; }
	.solas-jump a { display: flex; align-items: center; min-height: 44px; padding: 0.5rem 0.85rem; box-sizing: border-box; }
	.solas-cats { padding-top: 0.75rem; }
	.solas-cats__part { padding-block: 2rem 1.25rem; }
	.solas-cat { padding-block: 1.75rem; }
	/* Small static thumbnails identify groups while keeping the service names first. */
	.solas-cat__cols { display: grid !important; grid-template-columns: minmax(0, 1fr) 5.5rem; gap: 0 1rem !important; }
	.solas-cat__media { position: static; grid-column: 2; grid-row: 1 / span 2; width: 100%; margin: 0 !important; }
	.solas-cat__cols > .wp-block-column:not(.solas-cat__media) { display: contents; }
	.solas-cat__no { grid-column: 1; margin: 0 0 0.5rem !important; font-size: 0.6875rem; }
	.solas-cat__title { grid-column: 1; margin: 0 !important; font-size: 1.6rem; gap: 0.5rem; line-height: 1.1; align-self: start; }
	.solas-cat__title::before { width: 0.6rem; height: 0.6rem; }
	.solas-cat__photo { aspect-ratio: 1; box-shadow: none; }
	.solas-cat__intro { grid-column: 1 / -1; margin: 1rem 0 0.5rem !important; font-size: 1rem; }
	.solas-cat :is(.solas-service-list, .solas-cat__more, .wp-block-buttons) { grid-column: 1 / -1; }
	.solas-cat > .solas-cat__cols .solas-service-list { grid-template-columns: 1fr; }
	.solas-cat .wp-block-buttons { margin-top: 1rem; }
	.solas-cat .wp-block-button__link { padding: 0.75rem 1rem; font-size: 0.875rem; }
	.solas-ticket:nth-child(n) { rotate: none; translate: none; }
	.solas-ticket { display: grid; grid-template-columns: 2.8rem minmax(0, 1fr); gap: 0.5rem 0.9rem; padding: 1.25rem; }
	.solas-ticket .solas-ticket__no { grid-column: 1; grid-row: 1; font-size: 2.25rem; margin: 0; }
	.solas-ticket > :not(.solas-ticket__no) { grid-column: 1 / -1; margin: 0; }
	.solas-ticket > h3.wp-block-heading { grid-column: 2; grid-row: 1; align-self: center; }
	.solas-ticket h3 { font-size: 1.35rem; }
	.solas-ticket > p:not(.solas-ticket__no) { font-size: 0.9375rem; line-height: 1.55; }
	.solas-clients { margin-top: 2.5rem; padding-top: 1.5rem; }
	.solas-clients__cards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.65rem; }
	.solas-clients__cards li { min-height: 4.5rem; padding: 0.8rem; font-size: 1rem; }
	.solas-snaps { margin-top: 1.5rem; }
	.solas-presses > .wp-block-columns { gap: 2.5rem; }
	.solas-cta.solas-section { padding-block: 2rem; }
	.solas-cta__frame { padding: 0.5rem 0.25rem; }
	.solas-cta__title { font-size: clamp(2.5rem, 7vw, 3.5rem); line-height: 1; margin-bottom: 1rem; }
	.solas-cta .solas-lead { font-size: 1rem; line-height: 1.5; }
	.solas-cta .wp-block-buttons { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.65rem; }
	.solas-cta .wp-block-button__link { display: block; padding: 0.8rem 0.4rem; font-size: 0.875rem; }
	.solas-footer__links { line-height: 1.5; }
	.solas-footer__services { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 1rem; font-size: 0.9375rem; }
	.wp-block-group.solas-quick { gap: 0.65rem; margin-top: 1.5rem; }
	.solas-quick__item { padding: 1rem 0.85rem; }
	.solas-quick__value { font-size: 1rem; }
	.solas-quick__note { font-size: 0.8125rem; line-height: 1.4; }
	.solas-contact-card { position: static; }
	.solas-snap--b { translate: 0 1rem; }
	.solas-faq__item > p { padding-right: 0; }
	/* Six compact service rows replace six full-size posters on small screens. */
	.wp-block-group.solas-chipbook { grid-template-columns: 1fr; gap: 0.85rem; }
	.solas-fam { display: grid; grid-template-columns: 6.25rem minmax(0, 1fr); }
	.solas-fam__photo { grid-column: 1; grid-row: 1 / span 2; aspect-ratio: auto; height: 100%; }
	.solas-fam__ink { grid-column: 2; padding: 0.45rem 0.85rem; font-size: 0.625rem; }
	.solas-fam__ink p:last-child { display: none; }
	.solas-fam__label { grid-column: 2; padding: 0.75rem 0.85rem 0.85rem; }
	.solas-fam__name { gap: 0.5rem; font-size: 1.25rem; margin-bottom: 0.35rem; }
	.solas-fam__list { font-size: 0.875rem; line-height: 1.45; }
	/* Reviews become a row you swipe through, instead of six cards stacked. */
	.solas-rating { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 1rem; max-width: none; padding: 1.25rem; }
	.solas-rating__score { grid-column: 1; grid-row: 1 / span 2; font-size: 4.25rem; align-self: center; }
	.solas-rating__stars { grid-column: 2; margin: 0 !important; }
	.solas-rating__count { grid-column: 2; }
	.solas-rating__link { grid-column: 1 / -1; margin-top: 0.85rem !important; }
}

@media (max-width: 599px) {
	.solas-quick__value a { flex-direction: column; align-items: flex-start; gap: 0.65rem; }
	.solas-brand .wp-block-site-title { font-size: 1.0625rem; }
	.solas-brand .wp-block-site-logo img { width: 40px; height: 40px; }
	.solas-brand__wordmark img { height: 40px; }
	.forminator-custom-form #checkbox-1 > .forminator-field { grid-template-columns: 1fr; }
	.solas-nav .is-menu-open .wp-block-navigation-item__content { font-size: 1.85rem; }
	.solas-hero__actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.65rem; }
	.solas-hero__actions .wp-block-button__link { display: block; padding: 0.8rem 0.45rem; font-size: 0.8125rem; }
	.solas-footer__base { padding-inline-end: 4.5rem; }
	.wp-block-group.solas-tiles { gap: 0.65rem; }
	.solas-tile__photo { aspect-ratio: 4 / 3; }
	.solas-tile__name { min-height: 76px; padding: 0.75rem 0.625rem; gap: 0.375rem; font-size: 1rem; }
	.solas-tile__name::after { flex-basis: 22px; width: 22px; height: 22px; font-size: 1rem; }
	/* The floating button becomes a round WhatsApp icon; its text stays for screen readers. */
	.solas-float .wp-block-button__link { display: grid; place-items: center; width: 3.5rem; height: 3.5rem; padding: 0; font-size: 0; }
	.solas-float .wp-block-button__link::before { width: 1.75rem; height: 1.75rem; margin: 0; background: #25D366; }
}

@media (max-width: 359px) {
	.solas-mainbar .solas-brand { gap: 0.4rem !important; }
	.solas-brand .wp-block-site-title { font-size: 0.9375rem; }
	.solas-brand .wp-block-site-logo img { width: 32px; height: 32px; }
	.solas-brand__wordmark img { height: 34px; }
	.solas-header-cta .wp-block-button__link { padding-inline: 0.65rem; }
	.solas-tile__name { gap: 0; }
	.solas-tile__name::after { display: none; }
}

@media (prefers-reduced-motion: reduce) {
	/* Movement goes; short fades stay, because they still help comprehension. */
	html, html:focus-within { scroll-behavior: auto; }
	.solas-page-title, .solas-page-hero .solas-lead, .solas-page-hero .wp-block-buttons { animation: solas-fade .4s ease both; }
	.solas-tape__track, .solas-float .wp-block-button__link { animation: none; }
	body:has(.solas-stage .solas-wa) .solas-float:not(.is-shown) { translate: none; }
	.solas-tape { flex-wrap: wrap; white-space: normal; }
	.solas-reveal, .solas-reveal.is-in { transform: none; transition: opacity .4s ease; }
	.solas-reveal:not(.is-in) :is(.solas-quick__item, .solas-faq__item) { translate: none; }
	.solas-reveal--cards :is(.solas-fam, .solas-tile),
	.solas-reveal--cards:not(.is-in) :is(.solas-fam, .solas-tile) { top: 0; clip-path: none; }
	:is(.solas-fam, .solas-tile, .solas-ticket, .solas-quick__item, .wp-block-button__link) {
		transition-property: opacity, background-color, color, box-shadow, border-color;
	}
	.solas-quick__item:hover { translate: none; }
	.solas-ticket:hover { rotate: none; translate: none; }
	.wp-block-button__link:active { transform: none; }
}
@keyframes solas-fade { from { opacity: 0; } to { opacity: 1; } }

@media (prefers-reduced-transparency: reduce) {
	.solas-mainbar::before, .is-scrolled .solas-mainbar::before { background: #fff; backdrop-filter: none; -webkit-backdrop-filter: none; }
}

@media (prefers-contrast: more) {
	.solas-mainbar { border-bottom: 2px solid var(--solas-ink); }
	.solas-mainbar::before { background: #fff; backdrop-filter: none; -webkit-backdrop-filter: none; }
	:is(.solas-eyebrow, .solas-slug, .solas-cat__no, .solas-fam__list, .solas-tile__note) { color: var(--solas-ink); }
}
