/**
 * Base styles.
 *
 * Only what theme.json cannot express. Design tokens are NOT redeclared here —
 * they arrive as --wp--preset--* and --wp--custom--* custom properties
 * generated from theme.json, which stays the single source of truth.
 */

/* ---------------------------------------------------------------------------
   Metric-matched fallback fonts

   Fixes the width-reflow CLS that appears under throttling: with
   `font-display: swap`, text first paints in the platform fallback and
   re-paints when the webfont arrives. Line height is fixed in theme.json, so
   the line box does not change — but glyph WIDTHS do, so text re-wraps and
   everything below moves.

   Fix: declare fallback faces whose glyphs are width-scaled to the webfont so
   the swap changes typeface without changing how the text wraps.

   NOTE: the size-adjust / ascent / descent values below are estimates for the
   new families (Instrument Sans body, Manrope headings, DM Mono data). They
   must be re-measured in-browser against a Swedish sample string — the
   tests/visual/cls-check.mjs harness is the check. Estimates are close enough
   to prevent gross reflow; treat a cls-check regression as the signal to tune.
   --------------------------------------------------------------------------- */

@font-face {
	font-family: "Instrument Sans Fallback";
	src: local("Arial"), local("Helvetica Neue"), local("Liberation Sans");
	size-adjust: 98%;
	ascent-override: 93%;
	descent-override: 23.5%;
	line-gap-override: 0%;
}

@font-face {
	font-family: "Manrope Fallback";
	src: local("Arial"), local("Helvetica Neue"), local("Liberation Sans");
	size-adjust: 103%;
	ascent-override: 98%;
	descent-override: 27%;
	line-gap-override: 0%;
}

@font-face {
	font-family: "DM Mono Fallback";
	src: local("Consolas"), local("SFMono-Regular"), local("Menlo"),
		local("Liberation Mono");
	size-adjust: 102%;
	ascent-override: 88%;
	descent-override: 22%;
	line-gap-override: 0%;
}

/* ---------------------------------------------------------------------------
   Local aliases
   Shorter names for the tokens used most. Aliases only; no new values.
   --------------------------------------------------------------------------- */

:root {
	--indoor-focus-ring: var(--wp--preset--color--brand-primary);
	/*
	 * On the dark surfaces (surface-inverse #1B2124) the green ring falls to
	 * ~1.4:1 and vanishes. brand-accent-soft (#DCE7E1) reads well above the 3:1
	 * required of a non-text focus indicator.
	 */
	--indoor-focus-ring-inverse: var(--wp--preset--color--brand-accent-soft);
	/*
	 * The eyebrow's soft green on dark bands. Not in the editor palette because
	 * it is a single decorative tint; #9FBFB4 clears 4.5:1 on #1B2124 (~6.4:1).
	 */
	--indoor-eyebrow-on-dark: #9fbfb4;
	--indoor-transition-fast: var(--wp--custom--transition--fast);
	--indoor-transition-base: var(--wp--custom--transition--base);
	--indoor-measure-body: var(--wp--custom--measure--body);
	--indoor-measure-heading: var(--wp--custom--measure--heading);
	--indoor-radius-card: var(--wp--custom--radius--card);
	--indoor-radius-field: var(--wp--custom--radius--field);
	--indoor-hairline: 1px solid var(--wp--preset--color--border-subtle);
}

/* ---------------------------------------------------------------------------
   Document
   --------------------------------------------------------------------------- */

html {
	/*
	 * Only when the user agent supports it; never override user zoom.
	 *
	 * The prefixed property is kept deliberately: iOS Safari implements only
	 * `-webkit-text-size-adjust`, and it is the browser that actually needs this
	 * declaration. Dropping the prefix would silently reintroduce Safari's
	 * automatic text inflation in landscape.
	 */
	/* stylelint-disable-next-line property-no-vendor-prefix */
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
}

/*
 * Smooth scrolling is opt-out for users who ask for reduced motion. Declaring
 * it inside the media query rather than overriding it later means it is never
 * applied to those users, not even briefly.
 */
@media (prefers-reduced-motion: no-preference) {
	html {
		scroll-behavior: smooth;
	}
}

/*
 * Keeps anchored targets clear of the sticky header (WCAG 2.2 SC 2.4.11 Focus
 * Not Obscured). Declared OUTSIDE the reduced-motion query — a reduced-motion
 * user still has the sticky header and still needs the offset.
 */
:target,
:focus-visible {
	scroll-margin-top: 6rem;
}

body {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

/*
 * The `hidden` attribute must always win. Elements the theme toggles with
 * `hidden` (tab panels, quote-wizard steps and nav buttons) also carry classes
 * that set `display` — `.wp-block-button__link` is `display: inline-flex` — and
 * that declaration otherwise beats the UA `[hidden] { display: none }`, leaving
 * a "hidden" control visible. This restores the intent.
 */
[hidden] {
	display: none !important;
}

/*
 * Contain the editorial-split image bleed (and any stray wide element) so the
 * page never scrolls sideways. `overflow-x: clip` does not establish a scroll
 * container, so the sticky header is unaffected.
 */
.wp-site-blocks {
	overflow-x: clip;
}

/* ---------------------------------------------------------------------------
   Typography rhythm
   --------------------------------------------------------------------------- */

/*
 * The owl selector: space is added between siblings rather than after every
 * element, so the first and last child never contribute stray outer margin.
 */
p + p {
	margin-block-start: 1em;
}

/*
 * Headings get more space above than below, tying them to what follows.
 *
 * `hyphens` and `overflow-wrap` are Swedish typesetting rules. The service
 * vocabulary is almost entirely long closed compounds — kontorsstädning,
 * fastighetsförvaltning — so hyphenation is actively harmful (a broken compound
 * can read as two words with a different meaning; Digg's webbriktlinjer advises
 * against it), and a single word can be wider than a narrow viewport, so
 * `overflow-wrap` is the safety net against horizontal overflow.
 */
:where(h1, h2, h3, h4, h5, h6) {
	margin-block: 1.5em 0.5em;
	max-inline-size: var(--indoor-measure-heading);
	text-wrap: balance;
	hyphens: none;
	overflow-wrap: break-word;
}

:where(h1):first-child,
:where(h2):first-child,
:where(h3):first-child {
	margin-block-start: 0;
}

/* ---------------------------------------------------------------------------
   Section heading rhythm

   The redesign opens sections with a green eyebrow and spacing rather than the
   old gold hairline rule, so no ::before mark is drawn. These rules only carry
   the vertical rhythm: a section heading that opens its band needs no extra
   space above (the band padding is the space); a raw-prose H2 keeps a generous
   lead-in.
   --------------------------------------------------------------------------- */

:where(.entry-content, .indoor-prose) > h2,
:where(.indoor-section, .indoor-section--tight) > h2 {
	margin-block: var(--wp--preset--spacing--2-xl) var(--wp--preset--spacing--m);
}

:where(.indoor-section, .indoor-section--tight) > h2:first-child {
	margin-block-start: 0;
}

/* Prose stays within a readable measure regardless of container width. */
:where(.entry-content, .indoor-prose) > :where(p, ul, ol, blockquote) {
	max-inline-size: var(--indoor-measure-body);
}

:where(p) {
	text-wrap: pretty;
}

.indoor-lead {
	font-size: var(--wp--preset--font-size--lead);
	line-height: var(--wp--custom--line-height--lead);
	/*
	 * Capped against the content width: the 54ch measure is expressed in the
	 * lead's own (larger) font size, so uncapped it resolves wider than the
	 * content column and reads as a broken indent. The global content-size token
	 * is the actual bound (100% here would be the viewport, not the column).
	 */
	max-inline-size: min(
		var(--wp--custom--measure--lead),
		var(--wp--style--global--content-size)
	);
	color: var(--wp--preset--color--text-secondary);
}

/* ---------------------------------------------------------------------------
   Eyebrow

   The redesign's section label: a short green line in the body face, sentence
   case, above a section heading — not the old letterspaced amber caps. The two
   uppercase label styles the design also uses live in .indoor-label (letter-
   spaced sans) and .indoor-mono (DM Mono data caps) below.

   brand-primary on the light surfaces it sits on: surface 6.4:1, surface-raised
   6.9:1, surface-sunken 6.6:1 — all clear 4.5:1 at this size.
   --------------------------------------------------------------------------- */

.indoor-eyebrow {
	display: block;
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 500;
	letter-spacing: 0;
	text-transform: none;
	color: var(--wp--preset--color--brand-primary);
	margin-block-end: var(--wp--preset--spacing--xs);
}

/* An uppercase, letterspaced label in the body face — section kickers and
   footer column titles ("HÄLSO- OCH SJUKVÅRDSFÖRVALTNINGENS KRAV"). */
.indoor-label {
	display: block;
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--micro);
	font-weight: 500;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--text-muted);
	margin-block-end: var(--wp--preset--spacing--xs);
}

/* Monospace data caps — table headers, metric labels, step numbers. */
.indoor-mono {
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--micro);
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--wp--preset--color--text-muted);
	font-variant-numeric: tabular-nums;
}

/* ---------------------------------------------------------------------------
   Hero credibility marker

   The founded-year line some heros carry below the CTAs — a real, sourced
   figure from packages/indoor-core, set quiet with a short green tick and
   tabular figures so it reads as a stated fact rather than decoration.
   --------------------------------------------------------------------------- */

.indoor-hero__cred {
	display: flex;
	align-items: baseline;
	gap: 0.7ch;
	margin-block-start: var(--wp--preset--spacing--m);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--text-muted);
}

.indoor-hero__cred::before {
	content: "";
	flex: none;
	align-self: center;
	inline-size: 1.5rem;
	block-size: 2px;
	background-color: var(--wp--preset--color--brand-primary);
}

/*
 * The year is a flex item, so on the /om-oss variant — where it leads and a
 * long sentence follows — it shrank below its content width and broke "2006"
 * across two lines. It must never wrap, whichever side of the line it sits on.
 */
.indoor-hero__cred strong {
	flex: none;
	color: var(--wp--preset--color--brand-primary);
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

/* ---------------------------------------------------------------------------
   Margin note

   The pulled-out line beside off-centre prose (composer archetype). The
   section's own opening sentence echoed large in the wide margin — a
   typographic pull, not new copy — in the heading face.
   --------------------------------------------------------------------------- */

.indoor-marginnote {
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--heading-4);
	line-height: 1.25;
	color: var(--wp--preset--color--brand-primary);
	border-block-start: 2px solid var(--wp--preset--color--brand-primary);
	padding-block-start: var(--wp--preset--spacing--s);
	margin: 0;
	text-wrap: balance;
}

@media (width < 48em) {
	.indoor-marginnote {
		font-size: var(--wp--preset--font-size--lead);
	}
}

/* ---------------------------------------------------------------------------
   Cards

   The redesign's white card on paper: soft border, generous radius, a raised
   shadow only on hover for linked cards. Patterns add .indoor-card; media and
   body wrappers keep padding off the image edge.
   --------------------------------------------------------------------------- */

.indoor-card {
	background-color: var(--wp--preset--color--surface-raised);
	border: var(--indoor-hairline);
	border-radius: var(--indoor-radius-card);
	overflow: clip;
}

.indoor-card__media {
	margin: 0;
	border-radius: 0;
}

.indoor-card__media img {
	display: block;
	inline-size: 100%;
	border-radius: 0;
}

/* Linked cards lift and green their border on hover — the only card motion. */
a.indoor-card,
.indoor-card:has(> * a[href]) {
	transition:
		border-color var(--indoor-transition-fast),
		box-shadow var(--indoor-transition-base),
		transform var(--indoor-transition-base);
}

@media (prefers-reduced-motion: no-preference) {
	a.indoor-card:hover,
	a.indoor-card:focus-within {
		transform: translateY(-2px);
	}
}

a.indoor-card:hover,
a.indoor-card:focus-within {
	border-color: var(--wp--preset--color--brand-primary);
	box-shadow: var(--wp--preset--shadow--raised);
}

/* ---------------------------------------------------------------------------
   Bold

   The theme loads the body face at 400/500/600 only. `<strong>`/`<b>` default
   to 700, which no loaded weight provides, so the browser synthesises one by
   smearing the 400 outlines — visibly muddier and wider, and the extra width
   reflows Swedish compounds. 600 is the heaviest real body weight, so bold
   resolves to it.
   --------------------------------------------------------------------------- */

:where(strong, b) {
	font-weight: 600;
}

/* ---------------------------------------------------------------------------
   Text selection
   A branded highlight; text forced to text-primary so it stays legible on
   every surface, including the dark bands.
   --------------------------------------------------------------------------- */

::selection {
	background-color: var(--wp--preset--color--brand-accent-soft);
	color: var(--wp--preset--color--text-primary);
}

/* ---------------------------------------------------------------------------
   Links
   --------------------------------------------------------------------------- */

a {
	text-underline-offset: 0.18em;
	text-decoration-thickness: from-font;
	transition: color var(--indoor-transition-fast);
}

/* ---------------------------------------------------------------------------
   Links on dark surfaces

   theme.json sets the global link colour to brand-primary, correct on light
   backgrounds. On surface-inverse (#1B2124) that green is unreadable, so inline
   links on dark bands and in the footer flip to paper white (kept underlined by
   the global rule so they are never signalled by colour alone).
   --------------------------------------------------------------------------- */

.indoor-footer a,
.has-surface-inverse-background-color a {
	color: var(--wp--preset--color--text-on-dark);
}

.indoor-footer a:hover,
.indoor-footer a:focus,
.has-surface-inverse-background-color a:hover,
.has-surface-inverse-background-color a:focus {
	color: var(--wp--preset--color--text-on-dark-muted);
}

/*
 * Footer navigation links match the header's navigation, not prose links: no
 * underline at rest, underline on hover/focus. A column of links under a
 * heading is not prose, so colour-alone signalling (WCAG 1.4.1) does not apply,
 * and the hover gains an underline, not only a colour change.
 */
.indoor-footer__nav a {
	text-decoration: none;
}

.indoor-footer__nav a:hover,
.indoor-footer__nav a:focus-visible {
	text-decoration: underline;
}

/* The eyebrow's green is too dark on the footer/dark bands; it flips to a soft
   green tint that clears 4.5:1 on #1B2124. */
.indoor-footer .indoor-eyebrow,
.has-surface-inverse-background-color .indoor-eyebrow {
	color: var(--indoor-eyebrow-on-dark);
}

.indoor-footer .indoor-label,
.has-surface-inverse-background-color .indoor-label,
.indoor-footer .indoor-mono,
.has-surface-inverse-background-color .indoor-mono {
	color: var(--wp--preset--color--text-on-dark-muted);
}

/* ---------------------------------------------------------------------------
   Focus
   WCAG 2.2 (2.4.11 Focus Not Obscured, 2.4.13 Focus Appearance).
   A single consistent ring everywhere; never removed without replacement.
   --------------------------------------------------------------------------- */

:focus-visible {
	outline: 3px solid var(--indoor-focus-ring);
	outline-offset: 2px;
	border-radius: 2px;
}

/* On dark surfaces the green ring would disappear, so it flips to the soft
   light tint. */
.has-surface-inverse-background-color :focus-visible,
.indoor-footer :focus-visible {
	outline-color: var(--indoor-focus-ring-inverse);
}

@supports selector(:focus-visible) {
	:focus:not(:focus-visible) {
		outline: none;
	}
}

/* ---------------------------------------------------------------------------
   Skip link
   Styles WordPress core's block-theme skip link (.skip-link); the theme emits
   none of its own. Visually hidden until focused, then pinned to the top.
   --------------------------------------------------------------------------- */

.skip-link {
	position: absolute;
	inset-inline-start: var(--wp--preset--spacing--s);
	inset-block-start: var(--wp--preset--spacing--s);
	z-index: 999;
}

.skip-link:focus {
	clip: auto !important;
	clip-path: none;
	width: auto;
	height: auto;
	padding: var(--wp--preset--spacing--xs) var(--wp--preset--spacing--m);
	background-color: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--brand-primary);
	font-weight: 500;
	text-decoration: underline;
	box-shadow: var(--wp--preset--shadow--raised);
	border-radius: 4px;
}

/* ---------------------------------------------------------------------------
   Media
   --------------------------------------------------------------------------- */

img,
picture,
video,
canvas,
svg {
	max-inline-size: 100%;
	block-size: auto;
}

/*
 * Images carry width and height attributes so the browser can reserve space
 * before load. This keeps the intrinsic ratio intact when CSS constrains one
 * axis, which is what actually prevents layout shift.
 */
img[width][height] {
	height: auto;
}

figure {
	margin: 0;
}

/* ---------------------------------------------------------------------------
   Breadcrumbs
   --------------------------------------------------------------------------- */

.indoor-breadcrumbs {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.6875rem;
	letter-spacing: 0.01em;
	color: var(--wp--preset--color--text-muted);
	padding-block: var(--wp--preset--spacing--m) 0;
}

.indoor-breadcrumbs span {	
	font-size: 0.875rem;
}

/* Yoast wraps its trail in a <p>; drop its default margins so the breadcrumb is
   one tight line under the header, not a 72px block. */
.indoor-breadcrumbs p {
	margin: 0;
}

.indoor-breadcrumbs ol {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--2-xs);
	list-style: none;
	margin: 0;
	padding: 0;
}

.indoor-breadcrumbs li:not(:last-child)::after {
	content: "/";
	margin-inline-start: var(--wp--preset--spacing--2-xs);
	color: var(--wp--preset--color--border-strong);
}

.indoor-breadcrumbs [aria-current="page"] {
	color: var(--wp--preset--color--text-primary);
}

/* ---------------------------------------------------------------------------
   Buttons
   Secondary and ghost variants. Primary comes from theme.json.
   --------------------------------------------------------------------------- */

.wp-block-button__link {
	transition:
		background-color var(--indoor-transition-fast),
		color var(--indoor-transition-fast),
		border-color var(--indoor-transition-fast);
}

/*
 * Secondary / outline button: a thin neutral hairline with dark text, matching
 * the design's "Ring 08 …" style, not a green-bordered button. Fills to a quiet
 * tint on hover.
 */
.wp-block-button.is-style-outline > .wp-block-button__link {
	border: 1px solid var(--wp--preset--color--border-strong);
	color: var(--wp--preset--color--text-primary);
	background-color: transparent;
}

.wp-block-button.is-style-outline > .wp-block-button__link:hover,
.wp-block-button.is-style-outline > .wp-block-button__link:focus {
	border-color: var(--wp--preset--color--text-primary);
	background-color: var(--wp--preset--color--surface-sunken);
	color: var(--wp--preset--color--text-primary);
}

/* On dark bands the outline button flips to a light hairline + paper text. */
.has-surface-inverse-background-color
	.wp-block-button.is-style-outline
	> .wp-block-button__link {
	border-color: var(--wp--preset--color--text-on-dark-muted);
	color: var(--wp--preset--color--text-on-dark);
}

.has-surface-inverse-background-color
	.wp-block-button.is-style-outline
	> .wp-block-button__link:hover,
.has-surface-inverse-background-color
	.wp-block-button.is-style-outline
	> .wp-block-button__link:focus {
	border-color: var(--wp--preset--color--text-on-dark);
	background-color: rgb(255 255 255 / 10%);
	color: var(--wp--preset--color--text-on-dark);
}

/* Minimum 44x44px touch target (WCAG 2.5.8). */
.wp-block-button__link,
.indoor-tap-target {
	min-block-size: 44px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

/* ---------------------------------------------------------------------------
   Section rhythm
   Adjacent full-bleed bands must touch — the global blockGap would paint a
   paper stripe across the join. Separation comes from colour change + each
   band's own padding.
   --------------------------------------------------------------------------- */

.indoor-section {
	padding-block: var(--wp--preset--spacing--section);
}

.indoor-section--tight {
	padding-block: var(--wp--preset--spacing--section-tight);
}

.indoor-section + .indoor-section,
.indoor-section + .indoor-section--tight,
.indoor-section--tight + .indoor-section,
.indoor-section--tight + .indoor-section--tight {
	margin-block-start: 0;
}

.wp-site-blocks > main,
.wp-site-blocks > footer {
	margin-block-start: 0;
}

/* ---------------------------------------------------------------------------
   Section intros align with wide content

   Sections holding a wide grid introduce it with an eyebrow, heading and copy
   at the content measure. A constrained layout centres those while the grid
   spans wide, so the intro would start indented from the content it introduces.
   Shifting the intro to the wide container's left edge lines the two up.

   `!important` is required: WordPress's constrained-layout support emits
   `margin-left: auto !important` for every child, so specificity alone cannot
   override it. Scoped with :has() to sections that actually contain wide
   content; engines without :has() keep the centred behaviour.
   --------------------------------------------------------------------------- */

@supports selector(:has(*)) {
	.indoor-section:has(> .alignwide) > :is(h1, p, h2, h3, h4, ul, ol, hr, figure, .wp-block-buttons),
	.indoor-section--tight:has(> .alignwide) > :is(h1, p, h2, h3, h4, ul, ol, hr, figure, .wp-block-buttons) {
		margin-inline: max(0px, (100% - var(--wp--style--global--wide-size)) / 2) auto !important;
	}
}

/* A hairline rule in brand green, used to open a section without a heavy band. */
.indoor-rule-accent {
	border: 0;
	border-block-start: 2px solid var(--wp--preset--color--brand-primary);
	inline-size: 3rem;
	margin-block: var(--wp--preset--spacing--m);
	margin-inline: 0;
}

/* ---------------------------------------------------------------------------
   Reduced motion
   --------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* ---------------------------------------------------------------------------
   Forced colours (Windows high contrast)
   --------------------------------------------------------------------------- */

@media (forced-colors: active) {
	:focus-visible {
		outline-color: Highlight;
	}

	.wp-block-button__link {
		border: 1px solid ButtonText;
	}
}

/* ---------------------------------------------------------------------------
   Print
   --------------------------------------------------------------------------- */

@media print {
	.skip-link,
	.wp-block-navigation,
	.indoor-footer,
	.indoor-cta,
	.indoor-mobile-bar {
		display: none;
	}

	/* Procurement staff print service pages; make link targets recoverable. */
	a[href^="http"]::after {
		content: " (" attr(href) ")";
		font-size: 0.85em;
		word-break: break-all;
	}
}

/* ---------------------------------------------------------------------------
   Pull-quote band

   One strong sentence from the page, set large on the dark surface (composer
   archetype). The page's own copy lifted for emphasis — a beat in the argument,
   not a testimonial. Sentence stays white; the mark takes the soft green tint.
   --------------------------------------------------------------------------- */

.indoor-section--quote {
	text-align: center;
}

.indoor-pullquote {
	max-inline-size: 34ch;
	margin-inline: auto;
	border: 0;
	padding: 0;
}

.indoor-pullquote p {
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--heading-2);
	line-height: var(--wp--custom--line-height--heading);
	color: var(--wp--preset--color--text-on-dark);
	text-wrap: balance;
	margin: 0;
	max-inline-size: none;
}

.indoor-pullquote::before {
	content: "\201D";
	display: block;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--display);
	line-height: 0.6;
	color: var(--indoor-eyebrow-on-dark);
	margin-block-end: var(--wp--preset--spacing--xs);
}

/* ---------------------------------------------------------------------------
   Mid-page call to action
   The dark band the composer drops halfway down a long service page.
   --------------------------------------------------------------------------- */

.indoor-section--midcta .wp-block-buttons {
	margin-block-start: var(--wp--preset--spacing--l);
	justify-content: center;
}

.indoor-section--midcta .indoor-pullquote {
	margin-block-end: 0;
}
