/*
 * ACS Cyber - main stylesheet (theme acs-cyber).
 *
 * Dark-first enterprise design system. Mobile-first, no preprocessor. Class names follow the component contract in
 * docs/build-spec.md section 4.4 and the theme/plugin block markup contracts. The same file is loaded in the block
 * editor canvas (editor.css adds editor-only tweaks).
 *
 * Contents
 *   01 Tokens
 *   02 Base
 *   03 Typography helpers
 *   04 Layout: sections, wraps, tones
 *   05 Buttons
 *   06 Icons, chips, lists
 *   07 Header: sticky shell, top strip, bar, logo
 *   08 Header: navigation (desktop, mega panel, overlay)
 *   09 Header: actions and focused (landing) header
 *   10 Hero and page hero, breadcrumbs
 *   11 Trust strip, section heads
 *   12 Lifecycle stages
 *   13 Cards and grids
 *   14 Coverage matrix
 *   15 Split, panels, relationship
 *   16 Points and steps
 *   17 Incident and phone panel
 *   18 Compromise campaign band
 *   19 Tables, checklists, FAQ
 *   20 CTA band and final CTA
 *   21 Calendly, team, notices, link list, visuals
 *   22 Prose and article
 *   23 Templates: query cards, pagination, search, 404
 *   24 Footer
 *   25 Mobile sticky bar
 *   26 Plugin UI: privacy dialog, Calendly
 *   27 Motion and reduced motion
 *   28 Print
 */

/* =====================================================================================================================
   01 Tokens
   ================================================================================================================== */
:root {
	/* Colour (build-spec 4.1) */
	--acs-bg: #060a17;
	--acs-bg-raised: #0a1022;
	--acs-bg-deep: #04060f;
	--acs-surface: #0d1530;
	--acs-surface-2: #121c3d;
	--acs-border: rgba(140, 155, 255, 0.16);
	--acs-border-strong: rgba(140, 155, 255, 0.30);
	--acs-grid: rgba(120, 140, 255, 0.07);
	--acs-text: #eef1ff;
	--acs-text-muted: #b9c1e0;
	--acs-text-subtle: #8f99c0;
	--acs-primary: #3346ff;
	--acs-primary-hover: #4a5cff;
	--acs-link: #9aa6ff;
	--acs-cyan: #2cc4f0;
	--acs-amber: #ffb547;
	--acs-amber-strong: #f59e0b;
	--acs-success: #34d399;
	--acs-focus: #7dd8ff;

	/* Derived tints */
	--acs-on-amber: #140c00;
	--acs-cyan-soft: rgba(44, 196, 240, 0.10);
	--acs-cyan-line: rgba(44, 196, 240, 0.30);
	--acs-amber-soft: rgba(255, 181, 71, 0.10);
	--acs-amber-line: rgba(255, 181, 71, 0.38);
	--acs-primary-soft: rgba(51, 70, 255, 0.16);
	--acs-header-bg: rgba(6, 10, 23, 0.74);
	--acs-header-bg-solid: rgba(6, 10, 23, 0.94);

	/* Type */
	--acs-font: var(--wp--preset--font-family--manrope, "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif);
	--acs-mono: var(--wp--preset--font-family--fira-code, ui-monospace, monospace);
	--acs-fs-xs: 0.8125rem;
	--acs-fs-sm: 0.9375rem;
	--acs-fs-base: 1.0625rem;
	--acs-fs-lead: clamp(1.0625rem, 1rem + 0.35vw, 1.25rem);
	--acs-fs-h3: clamp(1.2rem, 1.05rem + 0.5vw, 1.375rem);
	--acs-fs-h2: clamp(1.875rem, 1.3rem + 2.4vw, 3rem);
	--acs-fs-h1: clamp(2.375rem, 1.5rem + 4vw, 4.25rem);
	--acs-fs-hero: clamp(2.5rem, 1.55rem + 4.3vw, 4.5rem);
	--acs-fs-display: clamp(2.5rem, 1.6rem + 4vw, 5rem);

	/* Space */
	--acs-gutter: var(--wp--style--root--padding-left, clamp(16px, 4vw, 40px));
	--acs-section-y: clamp(64px, 9vw, 128px);
	--acs-gap: clamp(16px, 2vw, 24px);
	--acs-gap-lg: clamp(24px, 3.2vw, 48px);
	--acs-eyebrow-gap: 16px;
	--acs-wide: var(--wp--style--global--wide-size, 1240px);
	--acs-narrow: 760px;

	/* Shape and depth */
	--acs-r-sm: 8px;
	--acs-r: 14px;
	--acs-r-lg: 20px;
	--acs-r-pill: 999px;
	--acs-shadow-soft: 0 1px 2px rgba(0, 0, 0, 0.35), 0 8px 24px rgba(2, 4, 12, 0.35);
	--acs-shadow-raised: 0 2px 6px rgba(0, 0, 0, 0.4), 0 20px 48px rgba(2, 4, 12, 0.5);
	--acs-shadow-glow: 0 0 0 1px rgba(140, 155, 255, 0.3), 0 12px 40px rgba(51, 70, 255, 0.32);

	/* Motion */
	--acs-ease: cubic-bezier(0.16, 1, 0.3, 1);
	--acs-dur-fast: 180ms;
	--acs-dur: 300ms;
	--acs-dur-slow: 500ms;

	/* Chrome */
	--acs-header-h: 64px;
	--acs-strip-h: 0px;
	--acs-admin-top: 0px;
	--acs-stickybar-h: 72px;

	/* Inline SVG masks (ASCII-only data URIs) */
	--acs-mask-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E");
	--acs-mask-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 12h15M13 5.5l6.5 6.5-6.5 6.5'/%3E%3C/svg%3E");
	--acs-mask-ext: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7M8.5 7H17v8.5'/%3E%3C/svg%3E");
	--acs-mask-chev: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 5.5 6.5 6.5L9 18.5'/%3E%3C/svg%3E");

	color-scheme: dark;
}

@media (min-width: 782px) {
	:root {
		--acs-header-h: 72px;
	}
}

/* Admin bar offsets for the sticky header (logged-in users only). Below 601px the admin bar scrolls away. */
@media (min-width: 601px) {
	html:has(> body.admin-bar) {
		--acs-admin-top: 46px;
	}
}
@media (min-width: 783px) {
	html:has(> body.admin-bar) {
		--acs-admin-top: 32px;
	}
}

/* =====================================================================================================================
   02 Base
   ================================================================================================================== */
*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	scroll-behavior: smooth;
	/* Anchors and focused elements clear the sticky header (and the top strip on desktop where it stays pinned). */
	scroll-padding-top: calc(var(--acs-admin-top) + var(--acs-header-h) + 16px);
	scroll-padding-bottom: 88px;
}
@media (min-width: 782px) {
	html {
		scroll-padding-top: calc(var(--acs-admin-top) + var(--acs-header-h) + var(--acs-strip-h) + 16px);
		scroll-padding-bottom: 24px;
	}
}

body {
	margin: 0;
	background-color: var(--acs-bg);
	color: var(--acs-text);
	font-family: var(--acs-font);
	font-size: var(--acs-fs-base);
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
	font-feature-settings: "ss01" 0;
}

::selection {
	background: rgba(44, 196, 240, 0.32);
	color: #fff;
}

img,
svg,
video {
	max-width: 100%;
	height: auto;
}

/* Block-gap reset between the site regions: sections own their spacing. */
.wp-site-blocks > * {
	margin-block-start: 0;
}
.wp-site-blocks > * + * {
	margin-block-start: 0;
}

a {
	color: var(--acs-link);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.18em;
	transition: color var(--acs-dur-fast) ease, text-decoration-color var(--acs-dur-fast) ease;
}
a:hover {
	color: var(--acs-text);
}

h1,
h2,
h3,
h4,
h5,
h6 {
	color: var(--acs-text);
	font-family: var(--acs-font);
	text-wrap: balance;
}
p,
li {
	text-wrap: pretty;
}

strong,
b {
	font-weight: 700;
	color: var(--acs-text);
}

hr,
.wp-block-separator {
	border: 0;
	border-top: 1px solid var(--acs-border);
	opacity: 1;
}

code,
kbd,
pre,
samp {
	font-family: var(--acs-mono);
	font-size: 0.9em;
}
:not(pre) > code {
	padding: 0.1em 0.35em;
	border-radius: 6px;
	background: var(--acs-surface);
	border: 1px solid var(--acs-border);
}

/* Phone numbers, short ranges and whitelisted compounds never break at their hyphens or spaces (.acs-nowrap and .acs-nw
   spans added by the component library and the theme/plugin PHP mirror; inline tel links). */
.acs-nowrap,
.acs-nw,
:where(p, li, td, th, dd, figcaption) > a[href^="tel:"]:not(.wp-block-button__link) {
	white-space: nowrap;
}
/* Safety valve: on the narrowest phones a long compound in a display heading, or in a two-column aside-panel table
   (which is not stacked), may wrap rather than overflow. */
@media (max-width: 359.98px) {
	:is(h1, h2, .acs-panel .acs-table) .acs-nw {
		white-space: normal;
	}
}
/* Optional line break inside two-sentence headings, from 768px up. Below that the balanced natural wrap reads better
   (with the break, 600-767px left one-word orphans such as "incident / line."). Content writes it as
   <span class="acs-br-wide"><br></span> after a space (rich text keeps a span class, not a br class); a bare
   br.acs-br-wide is covered too. */
@media (max-width: 767.98px) {
	.acs-br-wide {
		display: none;
	}
}

/* Focus: one visible ring everywhere (WCAG 2.4.7 / 2.4.11). */
:focus-visible {
	outline: 3px solid var(--acs-focus);
	outline-offset: 3px;
}
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[role="switch"]:focus-visible,
[tabindex]:focus-visible,
.wp-block-button__link:focus-visible,
.wp-block-navigation-item__content:focus-visible,
.wp-block-navigation-submenu__toggle:focus-visible,
.wp-block-navigation__responsive-container-open:focus-visible,
.wp-block-navigation__responsive-container-close:focus-visible,
.wp-block-accordion-heading__toggle:focus-visible,
.wp-block-search__input:focus-visible,
.wp-block-search__button:focus-visible {
	outline: 3px solid var(--acs-focus);
	outline-offset: 3px;
	box-shadow: none;
}
:focus:not(:focus-visible) {
	outline: none;
}

/* Skip link (core) */
.skip-link.screen-reader-text:focus {
	z-index: 100001;
	top: 8px;
	left: 8px;
	padding: 12px 18px;
	border-radius: var(--acs-r-sm);
	background: var(--acs-text);
	color: var(--acs-bg);
	font-weight: 700;
	text-decoration: none;
	clip-path: none;
}

.screen-reader-text:not(:focus) {
	border: 0;
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	width: 1px;
	word-wrap: normal !important;
}

/* =====================================================================================================================
   03 Typography helpers
   ================================================================================================================== */
/* Block flow, not flex: in a flex container every no-wrap span (.acs-nw) would become its own flex item and the
   spaces around it would collapse ("FREE30-MINUTECONSULTATION"). The dash is an inline box on the first line and the
   text hangs past it (padding + negative indent), so a wrapped eyebrow still lines up after the dash. */
.acs-eyebrow {
	display: block;
	margin: 0 0 16px;
	padding-left: 32px;
	text-indent: -32px;
	color: var(--acs-cyan);
	font-family: var(--acs-mono);
	font-size: 0.8rem;
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}
.acs-eyebrow::before {
	content: "";
	display: inline-block;
	width: 22px;
	height: 1px;
	margin-right: 10px;
	vertical-align: 0.3em;
	background: currentColor;
	opacity: 0.7;
}
.acs-eyebrow.is-amber {
	color: var(--acs-amber);
}
@media (max-width: 599.98px) {
	.acs-eyebrow {
		letter-spacing: 0.1em;
	}
}
/* Centred eyebrows: dash and text centre together as one line (the parents set text-align: center). */
.is-center > .acs-eyebrow,
.acs-final__panel > .acs-eyebrow,
.acs-phonepanel > .acs-eyebrow {
	padding-left: 0;
	text-indent: 0;
}

.acs-lead {
	max-width: 64ch;
	color: var(--acs-text-muted);
	font-size: var(--acs-fs-lead);
	line-height: 1.6;
}

.acs-section h2 {
	font-size: var(--acs-fs-h2);
	font-weight: 700;
	line-height: 1.12;
	letter-spacing: -0.02em;
}
.acs-section h3 {
	font-size: var(--acs-fs-h3);
	font-weight: 700;
	line-height: 1.25;
	letter-spacing: -0.01em;
}

/* =====================================================================================================================
   04 Layout: sections, wraps, tones
   ================================================================================================================== */
.acs-main {
	position: relative;
	margin: 0;
}

/* Sections are full-bleed bands; spacing between them comes from their own padding, never from block gap. */
section.acs-section {
	position: relative;
	isolation: isolate;
	margin-block: 0;
	padding-block: var(--acs-section-y);
}
.acs-main > .wp-block-post-content,
.acs-main > .entry-content {
	margin-block: 0;
}
.acs-main > * {
	margin-block-start: 0;
}

/* Two untoned sections in a row: do not double the vertical rhythm. The :not() chains sit inside :where() so this rule
   stays at 0,2,2 and the targeted joins below (and component rules) can override it. */
section.acs-section:where(:not([class*="acs-tone-"]):not(.acs-section--pagehero):not(.acs-section--ctaband)) + section.acs-section:where(:not([class*="acs-tone-"]):not(.acs-section--pagehero):not(.acs-section--ctaband)),
section.acs-section.acs-tone-raised + section.acs-section.acs-tone-raised {
	padding-top: clamp(16px, 2.5vw, 40px);
}
/* Targeted joins (systemic decision i). */
/* An incident band ends on its own hairline, so the plain section after it needs only a short lead-in. */
section.acs-section.acs-tone-incident + section.acs-section:not([class*="acs-tone-"]):not(.acs-section--pagehero),
/* A CTA band carries its own box and padding; the plain section after it does not add a full section top. */
section.acs-section--ctaband + section.acs-section:not([class*="acs-tone-"]):not(.acs-section--pagehero) {
	/* 40px at desktop: incident band to next heading about 168px (the plain-section rhythm is 164px), CTA band box to
	   next heading about 112px (measured at 1440). */
	padding-top: clamp(32px, 2.8vw, 40px);
}
/* Notice bands and untoned CTA bands after a plain section sit in that section's bottom padding. */
section.acs-section:not([class*="acs-tone-"]):not(.acs-section--pagehero) + section.acs-section--notice,
section.acs-section:not([class*="acs-tone-"]):not(.acs-section--pagehero) + section.acs-section--ctaband:not([class*="acs-tone-"]) {
	padding-top: 0;
}
/* Default pages and articles: the prose starts close under the compact hero rule. */
section.acs-section--pagehero:is(.is-simple, .is-article) + section.acs-section--prose {
	padding-top: clamp(32px, 4.5vw, 64px);
}

.acs-section > .acs-wrap {
	position: relative;
	z-index: 1;
	width: 100%;
	max-width: var(--acs-wide);
	margin-inline: auto;
}
.acs-section > .acs-wrap.acs-wrap--narrow,
.acs-wrap.acs-wrap--narrow {
	max-width: var(--acs-narrow);
}

/* Flow children inside wraps: tight, intentional rhythm. */
.acs-wrap > * {
	margin-block: 0;
}
.acs-wrap > * + * {
	margin-block-start: clamp(20px, 2.4vw, 32px);
}
.acs-wrap > .acs-sechead + * {
	margin-block-start: 0;
}

/* Tones ------------------------------------------------------------------------------------------------------------ */
.acs-tone-raised {
	background-color: var(--acs-bg-raised);
	border-block: 1px solid var(--acs-border);
}
.acs-tone-deep {
	background-color: var(--acs-bg-deep);
}

/* Grid texture: layered hairlines masked by a soft radial, plus restrained glows. */
.acs-tone-grid {
	background-color: var(--acs-bg);
	overflow: clip;
}
.acs-tone-grid::before,
.acs-section--compromise::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	background-image:
		linear-gradient(var(--acs-grid) 1px, transparent 1px),
		linear-gradient(90deg, var(--acs-grid) 1px, transparent 1px);
	background-size: 64px 64px;
	background-position: center top;
	-webkit-mask-image: radial-gradient(ellipse 75% 70% at 50% 30%, #000 0%, rgba(0, 0, 0, 0.55) 45%, transparent 80%);
	mask-image: radial-gradient(ellipse 75% 70% at 50% 30%, #000 0%, rgba(0, 0, 0, 0.55) 45%, transparent 80%);
}
.acs-tone-grid::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -2;
	pointer-events: none;
	background:
		radial-gradient(42% 55% at 80% 42%, rgba(44, 196, 240, 0.11) 0%, rgba(44, 196, 240, 0) 70%),
		radial-gradient(45% 50% at 8% 0%, rgba(51, 70, 255, 0.18) 0%, rgba(51, 70, 255, 0) 72%);
}

/* Incident tone: amber hairline and a soft amber glow. Calm, never red. */
.acs-tone-incident {
	background:
		radial-gradient(110% 80% at 50% 0%, rgba(245, 158, 11, 0.09) 0%, rgba(245, 158, 11, 0) 60%),
		linear-gradient(180deg, var(--acs-bg-raised) 0%, var(--acs-bg) 100%);
	border-top: 1px solid rgba(255, 181, 71, 0.22);
	border-bottom: 1px solid rgba(255, 181, 71, 0.16);
}
.acs-tone-incident::after {
	content: "";
	position: absolute;
	top: -1px;
	left: 50%;
	width: min(720px, 80%);
	height: 1px;
	transform: translateX(-50%);
	background: linear-gradient(90deg, rgba(255, 181, 71, 0), rgba(255, 181, 71, 0.85), rgba(255, 181, 71, 0));
	pointer-events: none;
}

/* =====================================================================================================================
   05 Buttons
   ================================================================================================================== */
.wp-block-buttons {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
}
.wp-block-buttons > .wp-block-button {
	margin: 0;
}

.wp-block-button .wp-block-button__link,
.wp-block-button__link.wp-element-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.55em;
	min-height: 48px;
	padding: 0.8rem 1.35rem;
	border: 1px solid transparent;
	border-radius: 10px;
	background-color: var(--acs-primary);
	color: #fff;
	font-family: var(--acs-font);
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: -0.005em;
	text-align: center;
	text-decoration: none;
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), 0 1px 2px rgba(0, 0, 0, 0.4);
	transition:
		background-color var(--acs-dur-fast) ease,
		border-color var(--acs-dur-fast) ease,
		color var(--acs-dur-fast) ease,
		box-shadow var(--acs-dur-fast) ease,
		transform var(--acs-dur-fast) var(--acs-ease);
}
.wp-block-button .wp-block-button__link:hover,
.wp-block-button .wp-block-button__link:focus-visible {
	background-color: var(--acs-primary-hover);
	color: #fff;
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18), 0 10px 30px rgba(51, 70, 255, 0.38);
}
.wp-block-button .wp-block-button__link:active {
	transform: translateY(1px);
}

/* Ghost */
.wp-block-button.is-style-acs-ghost .wp-block-button__link {
	background-color: rgba(13, 21, 48, 0.35);
	border-color: var(--acs-border-strong);
	color: var(--acs-text);
	box-shadow: none;
}
.wp-block-button.is-style-acs-ghost .wp-block-button__link:hover,
.wp-block-button.is-style-acs-ghost .wp-block-button__link:focus-visible {
	background-color: var(--acs-surface-2);
	border-color: rgba(140, 155, 255, 0.5);
	color: #fff;
	box-shadow: none;
}

/* Incident (amber fill, dark text 8:1; bold so dark-on-amber reads as heavy as the other buttons) */
.wp-block-button.is-style-acs-incident .wp-block-button__link {
	background-color: var(--acs-amber-strong);
	border-color: var(--acs-amber-strong);
	color: var(--acs-on-amber);
	font-weight: 700;
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.4);
}
.wp-block-button.is-style-acs-incident .wp-block-button__link:hover,
.wp-block-button.is-style-acs-incident .wp-block-button__link:focus-visible {
	background-color: var(--acs-amber);
	border-color: var(--acs-amber);
	color: var(--acs-on-amber);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0 10px 30px rgba(245, 158, 11, 0.28);
}

/* Incident outline (header): transparent, amber border and text, small amber dot */
.wp-block-button.is-style-acs-incident.acs-incident-outline .wp-block-button__link {
	background-color: rgba(255, 181, 71, 0.04);
	border-color: var(--acs-amber-line);
	color: var(--acs-amber);
	box-shadow: none;
}
.wp-block-button.acs-incident-outline .wp-block-button__link::before {
	content: "";
	flex: none;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--acs-amber);
	box-shadow: 0 0 0 3px rgba(255, 181, 71, 0.18);
}
.wp-block-button.is-style-acs-incident.acs-incident-outline .wp-block-button__link:hover,
.wp-block-button.is-style-acs-incident.acs-incident-outline .wp-block-button__link:focus-visible {
	background-color: var(--acs-amber-soft);
	border-color: var(--acs-amber);
	color: #ffd08a;
	box-shadow: none;
}

/* Text link with arrow: cyan like card links everywhere (white only on the blue final panel); flush with the text edge. */
.wp-block-button.is-style-acs-text .wp-block-button__link {
	min-height: 44px;
	padding: 0.5rem 0;
	background: none;
	border-color: transparent;
	color: var(--acs-cyan);
	box-shadow: none;
}
.wp-block-button.is-style-acs-text .wp-block-button__link::after {
	content: "";
	flex: none;
	width: 1em;
	height: 1em;
	background: currentColor;
	-webkit-mask: var(--acs-mask-arrow) center / contain no-repeat;
	mask: var(--acs-mask-arrow) center / contain no-repeat;
	transition: transform var(--acs-dur-fast) var(--acs-ease);
}
.wp-block-button.is-style-acs-text .wp-block-button__link:hover,
.wp-block-button.is-style-acs-text .wp-block-button__link:focus-visible {
	background: none;
	color: var(--acs-text);
	box-shadow: none;
}
.wp-block-button.is-style-acs-text .wp-block-button__link:hover::after {
	transform: translateX(3px);
}

/* Section-level button rows */
.acs-actions {
	margin-top: clamp(24px, 3vw, 36px);
}
@media (max-width: 599.98px) {
	.acs-actions > .wp-block-button:not(.is-style-acs-text) {
		flex: 1 1 100%;
	}
	.acs-actions > .wp-block-button:not(.is-style-acs-text) .wp-block-button__link {
		width: 100%;
	}
}

/* =====================================================================================================================
   06 Icons, chips, lists
   ================================================================================================================== */
.acs-icon {
	display: block;
	flex: none;
	width: 1.25em;
	height: 1.25em;
	overflow: visible;
}
.acs-icon-wrap {
	display: inline-grid;
	place-items: center;
	flex: none;
	width: 44px;
	height: 44px;
	border-radius: 12px;
	background: linear-gradient(180deg, rgba(44, 196, 240, 0.14), rgba(44, 196, 240, 0.05));
	border: 1px solid rgba(44, 196, 240, 0.22);
	color: var(--acs-cyan);
}
.acs-icon-wrap .acs-icon {
	width: 22px;
	height: 22px;
}

/* Chips (pill tags) */
ul.acs-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-inline: 0;
	margin-block-end: 0;
	padding: 0;
	list-style: none;
}
/* Chips are blocks (not flex boxes) so a no-wrap span inside a label keeps the spaces around it. */
ul.acs-chips > li {
	display: block;
	margin: 0;
	padding: 6px 12px;
	border: 1px solid var(--acs-border-strong);
	border-radius: var(--acs-r-pill);
	background: rgba(13, 21, 48, 0.6);
	color: var(--acs-text-muted);
	font-size: 0.875rem;
	font-weight: 600;
	line-height: 1.35;
}
ul.acs-chips.is-amber > li {
	border-color: rgba(255, 181, 71, 0.32);
	background: rgba(255, 181, 71, 0.07);
	color: #ffd08a;
}

/* Checklist with cyan check marks */
ul.acs-checklist {
	display: grid;
	gap: 12px;
	margin-inline: 0;
	margin-block-end: 0;
	padding: 0;
	list-style: none;
}
ul.acs-checklist > li {
	position: relative;
	margin: 0;
	padding-left: 34px;
	color: var(--acs-text-muted);
	line-height: 1.6;
}
ul.acs-checklist > li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.12em;
	width: 22px;
	height: 22px;
	border-radius: 50%;
	background: var(--acs-cyan-soft);
	box-shadow: inset 0 0 0 1px rgba(44, 196, 240, 0.3);
}
ul.acs-checklist > li::after {
	content: "";
	position: absolute;
	left: 5px;
	top: calc(0.12em + 5px);
	width: 12px;
	height: 12px;
	background: var(--acs-cyan);
	-webkit-mask: var(--acs-mask-check) center / contain no-repeat;
	mask: var(--acs-mask-check) center / contain no-repeat;
}
ul.acs-checklist > li strong {
	color: var(--acs-text);
}
/* Two balanced columns (multicol, not a grid) so a short item never leaves a gap beside a long one. */
@media (min-width: 700px) {
	ul.acs-checklist.acs-checklist--2col {
		display: block;
		columns: 2;
		column-gap: clamp(24px, 4vw, 56px);
	}
	ul.acs-checklist.acs-checklist--2col > li {
		break-inside: avoid;
		margin-bottom: 16px;
	}
	ul.acs-checklist.acs-checklist--2col > li:last-child {
		margin-bottom: 0;
	}
}

/* Link list */
ul.acs-linklist {
	display: grid;
	gap: 0;
	margin-inline: 0;
	margin-block-end: 0;
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--acs-border);
}
ul.acs-linklist > li {
	margin: 0;
	border-bottom: 1px solid var(--acs-border);
}
ul.acs-linklist > li > a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	min-height: 56px;
	padding: 14px 4px;
	color: var(--acs-text);
	font-weight: 600;
	text-decoration: none;
}
ul.acs-linklist > li > a::after {
	content: "";
	flex: none;
	width: 18px;
	height: 18px;
	background: var(--acs-cyan);
	-webkit-mask: var(--acs-mask-arrow) center / contain no-repeat;
	mask: var(--acs-mask-arrow) center / contain no-repeat;
	transition: transform var(--acs-dur-fast) var(--acs-ease);
}
ul.acs-linklist > li > a:hover {
	color: #fff;
}
ul.acs-linklist > li > a:hover::after {
	transform: translateX(4px);
}
@media (min-width: 700px) {
	ul.acs-linklist {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: 32px;
	}
}
@media (min-width: 1024px) {
	ul.acs-linklist {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

/* =====================================================================================================================
   07 Header: sticky shell, top strip, bar, logo
   ================================================================================================================== */
/*
 * The header template part is sticky. Its translucent background lives on ::before so that backdrop-filter does not
 * become the containing block of the fixed navigation overlay inside it.
 * Below 782px the top strip scrolls away and only the bar stays pinned (the script measures the strip into
 * --acs-strip-h); from 782px the strip is a single slim line and stays pinned with the bar.
 */
header.wp-block-template-part {
	position: sticky;
	top: calc(var(--acs-admin-top) - var(--acs-strip-h));
	z-index: 100;
	margin: 0;
}
@media (min-width: 782px) {
	header.wp-block-template-part {
		top: var(--acs-admin-top);
	}
}
header.wp-block-template-part::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: var(--acs-header-bg);
	-webkit-backdrop-filter: saturate(150%) blur(14px);
	backdrop-filter: saturate(150%) blur(14px);
	border-bottom: 1px solid var(--acs-border);
	transition: background-color var(--acs-dur) ease, box-shadow var(--acs-dur) ease;
	pointer-events: none;
}
header.wp-block-template-part.is-scrolled::before {
	background: var(--acs-header-bg-solid);
	box-shadow: 0 12px 32px rgba(2, 4, 12, 0.45);
}

.acs-header {
	position: relative;
	margin: 0;
}
.acs-header > * {
	margin-block: 0;
}

/* Top strip (campaign) ---------------------------------------------------------------------------------------------- */
.acs-header > .acs-topstrip,
.acs-topstrip {
	position: relative;
	margin-block: 0;
	padding-block: 7px;
	background:
		linear-gradient(90deg, rgba(255, 181, 71, 0) 0%, rgba(255, 181, 71, 0.07) 50%, rgba(255, 181, 71, 0) 100%),
		var(--acs-bg-deep);
	border-bottom: 1px solid rgba(255, 181, 71, 0.2);
	color: var(--acs-text-muted);
}
.acs-topstrip > .acs-topstrip__text,
.acs-topstrip__text {
	max-width: var(--acs-wide);
	margin: 0 auto;
	font-size: 0.8125rem;
	line-height: 1.5;
	text-align: center;
}
.acs-topstrip__text strong {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-right: 4px;
	color: var(--acs-amber);
	font-weight: 700;
}
.acs-topstrip__text strong::before {
	content: "";
	flex: none;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--acs-amber);
	box-shadow: 0 0 0 3px rgba(255, 181, 71, 0.18);
}
.acs-topstrip__text a {
	color: var(--acs-text);
	font-weight: 600;
	text-decoration: underline;
	text-decoration-color: rgba(255, 181, 71, 0.55);
	text-underline-offset: 0.2em;
	white-space: nowrap;
}
.acs-topstrip__text a:hover {
	color: var(--acs-amber);
	text-decoration-color: currentColor;
}
.acs-topstrip__text a:focus-visible {
	outline-offset: 2px;
	border-radius: 2px;
}
@media (min-width: 782px) {
	.acs-topstrip__text {
		font-size: 0.84375rem;
	}
}

/* Bar ----------------------------------------------------------------------------------------------------------------- */
.acs-header > .acs-header__bar,
.acs-header__bar {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	max-width: var(--acs-wide);
	min-height: var(--acs-header-h);
	margin-inline: auto;
}
@media (min-width: 1280px) {
	.acs-header > .acs-header__bar {
		gap: 16px;
	}
}
@media (min-width: 1440px) {
	/* The bar may run wider than the content column so the phone fits beside both CTAs. */
	.acs-header > .acs-header__bar {
		gap: 20px;
		max-width: 1400px;
	}
}

/* Logo (theme block acs-cyber/logo) ----------------------------------------------------------------------------------- */
.acs-logo {
	display: inline-flex;
	flex: none;
	align-items: center;
	gap: 10px;
	min-height: 44px;
	color: var(--acs-text);
	text-decoration: none;
}
.acs-logo:hover {
	color: #fff;
}
.acs-logo__mark {
	display: block;
	flex: none;
	width: 36px;
	height: 36px;
	border-radius: 9px;
}
.acs-logo__text {
	display: flex;
	flex-direction: column;
	min-width: 0;
	line-height: 1.1;
}
.acs-logo__name {
	font-size: 1.125rem;
	font-weight: 800;
	letter-spacing: -0.015em;
	white-space: nowrap;
}
.acs-logo__sub {
	display: block;
	margin-top: 3px;
	color: var(--acs-text-subtle);
	font-size: 0.6875rem;
	font-weight: 600;
	letter-spacing: 0.01em;
	line-height: 1.2;
	white-space: nowrap;
}
.acs-logo__sub-a,
.acs-logo__sub-b {
	display: inline;
}
/* Narrow headers: the endorsement line stacks on two short lines beside the mark. */
@media (max-width: 599.98px) {
	.acs-logo--header .acs-logo__sub {
		margin-top: 2px;
		font-size: 0.625rem;
		letter-spacing: 0;
		line-height: 1.25;
	}
	.acs-logo--header .acs-logo__sub-a,
	.acs-logo--header .acs-logo__sub-b {
		display: block;
	}
}
@media (min-width: 782px) {
	.acs-logo__mark {
		width: 40px;
		height: 40px;
	}
	.acs-logo__name {
		font-size: 1.1875rem;
	}
}
.acs-logo--footer .acs-logo__sub {
	font-size: 0.75rem;
}

/* =====================================================================================================================
   08 Header: navigation (core navigation block)
   ================================================================================================================== */
/* Core switches to the overlay only below 600px; this theme uses the overlay below 1280px (measured: the logo with its endorsement line, the six links and both CTAs need about 1240px of bar). */
.acs-header nav.acs-nav {
	order: 3;
	flex: none;
	color: var(--acs-text);
	font-family: var(--acs-font);
}

/* Menu toggle (hamburger) */
.acs-header nav.acs-nav .wp-block-navigation__responsive-container-open {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border: 1px solid var(--acs-border-strong);
	border-radius: 10px;
	background: rgba(13, 21, 48, 0.5);
	color: var(--acs-text);
	transition: background-color var(--acs-dur-fast) ease, border-color var(--acs-dur-fast) ease;
}
.acs-header nav.acs-nav .wp-block-navigation__responsive-container-open:hover {
	background: var(--acs-surface-2);
	border-color: rgba(140, 155, 255, 0.5);
}
.acs-header nav.acs-nav .wp-block-navigation__responsive-container-open svg {
	width: 24px;
	height: 24px;
}

/* Below 1280px the inline menu is hidden until the overlay opens. */
@media (max-width: 1279.98px) {
	.acs-header nav.acs-nav .wp-block-navigation__responsive-container:not(.is-menu-open) {
		display: none !important;
	}
}

/* Desktop inline menu ------------------------------------------------------------------------------------------------- */
/* 1280-1439px: slightly tighter top-level items so the logo endorsement line, menu and CTAs keep clear space. */
@media (min-width: 1280px) and (max-width: 1439.98px) {
	.acs-header nav.acs-nav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content {
		padding-inline: 6px !important;
	}
	.acs-header nav.acs-nav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content::after {
		left: 6px;
		right: 6px;
	}
}
@media (min-width: 1280px) {
	.acs-header nav.acs-nav {
		order: 0;
		flex: 1 1 auto;
		min-width: 0;
		justify-content: center;
	}
	.acs-header nav.acs-nav .wp-block-navigation__responsive-container-open {
		display: none !important;
	}
	.acs-header nav.acs-nav .wp-block-navigation__responsive-container:not(.is-menu-open) {
		display: block !important;
		position: static;
		width: auto;
		background: none !important;
	}
	.acs-header nav.acs-nav .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__responsive-container-content {
		justify-content: center;
		gap: 0;
	}
	.acs-header nav.acs-nav .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container {
		flex-wrap: nowrap;
		gap: 0;
	}

	/* Overlay-only items stay out of the desktop bar. */
	.acs-header nav.acs-nav .wp-block-navigation__responsive-container:not(.is-menu-open) .acs-nav__mobile-actions,
	.acs-header nav.acs-nav .wp-block-navigation__responsive-container:not(.is-menu-open) .acs-nav__tel {
		display: none !important;
	}

	/* Top-level items */
	.acs-header nav.acs-nav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content {
		position: relative;
		display: flex;
		align-items: center;
		min-height: 44px;
		padding: 0 8px;
		border-radius: 8px;
		color: var(--acs-text-muted);
		font-size: 0.90625rem;
		font-weight: 600;
		line-height: 1.2;
		white-space: nowrap;
		text-decoration: none;
		transition: color var(--acs-dur-fast) ease;
	}
	.acs-header nav.acs-nav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content::after {
		content: "";
		position: absolute;
		left: 8px;
		right: 8px;
		bottom: 6px;
		height: 2px;
		border-radius: 2px;
		background: var(--acs-cyan);
		transform: scaleX(0);
		transform-origin: left center;
		transition: transform var(--acs-dur) var(--acs-ease);
	}
	.acs-header nav.acs-nav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content:hover,
	.acs-header nav.acs-nav .wp-block-navigation__container > .wp-block-navigation-item:hover > .wp-block-navigation-item__content,
	.acs-header nav.acs-nav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content[aria-current="page"],
	.acs-header nav.acs-nav .wp-block-navigation__container > .current-menu-item > .wp-block-navigation-item__content,
	.acs-header nav.acs-nav .wp-block-navigation__container > .current-menu-ancestor > .wp-block-navigation-item__content {
		color: var(--acs-text);
	}
	.acs-header nav.acs-nav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content:hover::after,
	.acs-header nav.acs-nav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content[aria-current="page"]::after,
	.acs-header nav.acs-nav .wp-block-navigation__container > .current-menu-item > .wp-block-navigation-item__content::after,
	.acs-header nav.acs-nav .wp-block-navigation__container > .current-menu-ancestor > .wp-block-navigation-item__content::after {
		transform: scaleX(1);
	}

	/* Services: link + keyboard toggle */
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation-item__content {
		padding-right: 4px;
	}
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation-item__content::after {
		right: 4px;
	}
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation-submenu__toggle {
		display: inline-grid;
		place-items: center;
		width: 24px;
		height: 32px;
		margin: 0 2px 0 0;
		padding: 0;
		border-radius: 6px;
		color: var(--acs-text-subtle);
		transition: color var(--acs-dur-fast) ease, background-color var(--acs-dur-fast) ease;
	}
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation-submenu__toggle svg {
		width: 11px;
		height: 11px;
		margin: 0;
		transition: transform var(--acs-dur-fast) ease;
	}
	.acs-header nav.acs-nav li.acs-nav__services:hover > .wp-block-navigation-submenu__toggle,
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation-submenu__toggle[aria-expanded="true"] {
		color: var(--acs-cyan);
		background: rgba(44, 196, 240, 0.08);
	}

	/* Mega panel (2 columns, label + description) */
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation__submenu-container {
		top: calc(100% + 12px);
		left: -14px;
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 4px;
		padding: 10px;
		border: 1px solid var(--acs-border-strong);
		border-radius: 16px;
		background: rgba(10, 16, 34, 0.98) !important;
		color: var(--acs-text) !important;
		box-shadow: var(--acs-shadow-raised), 0 0 0 1px rgba(2, 4, 12, 0.6);
		transform: translateY(6px);
		transition: opacity var(--acs-dur-fast) ease, transform var(--acs-dur) var(--acs-ease), visibility 0s linear var(--acs-dur-fast);
	}
	/* Hover bridge across the gap so the panel does not close between the toggle and the panel. */
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation__submenu-container::before {
		content: "";
		position: absolute;
		left: 0;
		right: 0;
		top: -14px;
		height: 14px;
	}
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation-submenu__toggle[aria-expanded="true"] ~ .wp-block-navigation__submenu-container {
		width: min(640px, calc(100vw - 48px));
		height: auto;
		visibility: visible;
		overflow: visible;
		opacity: 1;
		transform: none;
		transition: opacity var(--acs-dur-fast) ease, transform var(--acs-dur) var(--acs-ease), visibility 0s;
	}
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation__submenu-container > .wp-block-navigation-item {
		display: block;
	}
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
		display: flex;
		flex-direction: column;
		align-items: flex-start;
		gap: 3px;
		height: 100%;
		padding: 12px 14px;
		border-radius: 10px;
		color: var(--acs-text);
		text-decoration: none;
		transition: background-color var(--acs-dur-fast) ease;
	}
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover,
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation__submenu-container .wp-block-navigation-item__content:focus-visible {
		background: var(--acs-surface-2);
	}
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation__submenu-container .wp-block-navigation-item__label {
		font-size: 0.9375rem;
		font-weight: 700;
		line-height: 1.3;
	}
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation__submenu-container .wp-block-navigation-item__description {
		display: block;
		color: var(--acs-text-subtle);
		font-size: 0.8125rem;
		font-weight: 500;
		line-height: 1.45;
	}
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation__submenu-container > .acs-nav__all {
		grid-column: 1 / -1;
		margin-top: 4px;
		padding-top: 6px;
		border-top: 1px solid var(--acs-border);
	}
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation__submenu-container > .acs-nav__all .wp-block-navigation-item__content {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: baseline;
		column-gap: 12px;
	}
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation__submenu-container > .acs-nav__all .wp-block-navigation-item__label {
		display: inline-flex;
		align-items: center;
		gap: 8px;
		color: var(--acs-cyan);
	}
	.acs-header nav.acs-nav li.acs-nav__services > .wp-block-navigation__submenu-container > .acs-nav__all .wp-block-navigation-item__label::after {
		content: "";
		width: 14px;
		height: 14px;
		background: currentColor;
		-webkit-mask: var(--acs-mask-arrow) center / contain no-repeat;
		mask: var(--acs-mask-arrow) center / contain no-repeat;
	}
}

/* Mega panel opening on hover (pointer devices) and on keyboard focus inside it. Separate rules on purpose: a browser
   without :has() drops only the focus rule. */
@media (min-width: 1280px) and (hover: hover) {
	.acs-header nav.acs-nav li.acs-nav__services:hover > .wp-block-navigation__submenu-container {
		width: min(640px, calc(100vw - 48px));
		height: auto;
		visibility: visible;
		overflow: visible;
		opacity: 1;
		transform: none;
		transition: opacity var(--acs-dur-fast) ease, transform var(--acs-dur) var(--acs-ease), visibility 0s;
	}
}
@media (min-width: 1280px) {
	.acs-header nav.acs-nav li.acs-nav__services:focus-within:not(:has(> .wp-block-navigation-submenu__toggle[aria-expanded="false"]:focus)) > .wp-block-navigation__submenu-container {
		width: min(640px, calc(100vw - 48px));
		height: auto;
		visibility: visible;
		overflow: visible;
		opacity: 1;
		transform: none;
		transition: opacity var(--acs-dur-fast) ease, transform var(--acs-dur) var(--acs-ease), visibility 0s;
	}
}

/* Overlay (drawer) ------------------------------------------------------------------------------------------------------ */
:root .acs-header .wp-block-navigation.acs-nav .wp-block-navigation__responsive-container.is-menu-open {
	--navigation-layout-justification-setting: flex-start;
	--navigation-layout-justify: flex-start;
	--navigation-layout-align: stretch;
	padding: 0;
	background:
		radial-gradient(80% 50% at 100% 0%, rgba(51, 70, 255, 0.18) 0%, rgba(51, 70, 255, 0) 70%),
		radial-gradient(60% 40% at 0% 100%, rgba(44, 196, 240, 0.08) 0%, rgba(44, 196, 240, 0) 70%),
		var(--acs-bg);
	color: var(--acs-text);
	overscroll-behavior: contain;
}
.acs-header nav.acs-nav .is-menu-open .wp-block-navigation__responsive-close {
	max-width: 640px;
	margin-inline: auto;
}
.acs-header nav.acs-nav .is-menu-open .wp-block-navigation__responsive-dialog {
	min-height: 100%;
	padding: 0 var(--acs-gutter) calc(32px + env(safe-area-inset-bottom));
}
.acs-header nav.acs-nav .is-menu-open .wp-block-navigation__responsive-container-close {
	position: absolute;
	top: 10px;
	right: 0;
	display: inline-grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border: 1px solid var(--acs-border-strong);
	border-radius: 10px;
	background: rgba(13, 21, 48, 0.6);
	color: var(--acs-text);
}
.acs-header nav.acs-nav .is-menu-open .wp-block-navigation__responsive-container-close:hover {
	background: var(--acs-surface-2);
}
.acs-header nav.acs-nav .is-menu-open .wp-block-navigation__responsive-dialog::before {
	content: "Menu";
	display: flex;
	align-items: center;
	height: 64px;
	color: var(--acs-text-subtle);
	font-family: var(--acs-mono);
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	border-bottom: 1px solid var(--acs-border);
}
:root .acs-header nav.acs-nav .is-menu-open .wp-block-navigation__responsive-container-content {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 0;
	padding-top: 8px;
}
:root .acs-header nav.acs-nav .is-menu-open .wp-block-navigation__container {
	--navigation-layout-justification-setting: flex-start;
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 0;
	width: 100%;
}
:root .acs-header nav.acs-nav .is-menu-open .wp-block-navigation__container > .wp-block-navigation-item {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	width: 100%;
	border-bottom: 1px solid var(--acs-border);
}
:root .acs-header nav.acs-nav .is-menu-open .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content {
	display: flex;
	align-items: center;
	min-height: 56px;
	padding: 10px 0;
	color: var(--acs-text);
	font-size: 1.375rem;
	font-weight: 700;
	letter-spacing: -0.015em;
	text-decoration: none;
}
:root .acs-header nav.acs-nav .is-menu-open .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content[aria-current="page"] {
	color: var(--acs-cyan);
}
/* Services children listed with their descriptions */
:root .acs-header nav.acs-nav .is-menu-open li.acs-nav__services > .wp-block-navigation__submenu-container > .wp-block-navigation-item {
	align-items: stretch;
}
:root .acs-header nav.acs-nav .is-menu-open li.acs-nav__services > .wp-block-navigation__submenu-container {
	display: grid;
	gap: 2px;
	min-width: 0;
	margin: 0 0 14px;
	padding: 4px 0 4px 14px;
	border-left: 1px solid var(--acs-border-strong);
}
:root .acs-header nav.acs-nav .is-menu-open li.acs-nav__services > .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 2px;
	min-height: 44px;
	padding: 8px 0;
	color: var(--acs-text);
	text-decoration: none;
}
:root .acs-header nav.acs-nav .is-menu-open li.acs-nav__services > .wp-block-navigation__submenu-container .wp-block-navigation-item__label {
	font-size: 1.0625rem;
	font-weight: 600;
	line-height: 1.3;
}
:root .acs-header nav.acs-nav .is-menu-open li.acs-nav__services > .wp-block-navigation__submenu-container .wp-block-navigation-item__description {
	display: block;
	color: var(--acs-text-subtle);
	font-size: 0.875rem;
	line-height: 1.45;
}
:root .acs-header nav.acs-nav .is-menu-open li.acs-nav__services > .wp-block-navigation__submenu-container > .acs-nav__all .wp-block-navigation-item__label {
	color: var(--acs-cyan);
}
:root .acs-header nav.acs-nav .is-menu-open li.acs-nav__services > .wp-block-navigation__submenu-container > .acs-nav__all .wp-block-navigation-item__description {
	display: none;
}

/* Overlay CTAs: full width, stacked, at the top of the drawer (then the tel link, a divider and the menu links). */
:root .acs-header nav.acs-nav .is-menu-open .acs-nav__mobile-actions {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 10px;
	width: 100%;
	margin: 8px 0 12px;
}
:root .acs-header nav.acs-nav .is-menu-open .acs-nav__mobile-actions > .wp-block-button {
	width: 100%;
}
:root .acs-header nav.acs-nav .is-menu-open .acs-nav__mobile-actions .wp-block-button__link {
	width: 100%;
	min-height: 52px;
	font-size: 1.0625rem;
}
/* Tel link: prominent, only inside the overlay */
:root .acs-header nav.acs-nav .is-menu-open .wp-block-navigation__container > .acs-nav__tel {
	margin-bottom: 12px;
	border-bottom: 0;
}
/* Divider before the menu links: the next item when the tel link shares their list, or the next list when it has its own. */
:root .acs-header nav.acs-nav .is-menu-open .wp-block-navigation__container > .acs-nav__tel + .wp-block-navigation-item,
:root .acs-header nav.acs-nav .is-menu-open .wp-block-navigation__container:has(> .acs-nav__tel) ~ .wp-block-navigation__container {
	border-top: 1px solid var(--acs-border);
}
:root .acs-header nav.acs-nav .is-menu-open .wp-block-navigation__container > .acs-nav__tel > .wp-block-navigation-item__content {
	justify-content: center;
	min-height: 56px;
	padding: 12px 16px;
	border: 1px solid var(--acs-amber-line);
	border-radius: 12px;
	background: var(--acs-amber-soft);
	color: var(--acs-amber);
	font-size: 1.0625rem;
	font-weight: 700;
	letter-spacing: 0;
	text-align: center;
}
:root .acs-header nav.acs-nav .is-menu-open .wp-block-navigation__container > .acs-nav__tel > .wp-block-navigation-item__content:hover {
	background: rgba(255, 181, 71, 0.16);
}

/* =====================================================================================================================
   09 Header: actions and focused (landing) header
   ================================================================================================================== */
.acs-header__actions {
	display: flex;
	flex: none;
	flex-wrap: nowrap;
	align-items: center;
	gap: 12px;
	order: 2;
	margin-left: auto;
}
.acs-header__ctas {
	flex-wrap: nowrap;
	gap: 8px;
}
.acs-header__ctas .wp-block-button__link {
	gap: 0.5em;
	min-height: 44px;
	padding: 0.6rem 0.9rem;
	font-size: 0.875rem;
	white-space: nowrap;
}

.acs-header > .acs-header__bar > .acs-header__actions {
	margin-left: auto;
}

/* Header phone (plugin acsc/phone header): label over number */
.acsc-phone {
	text-decoration: none;
}
.acsc-phone--header {
	display: none;
	flex-direction: column;
	justify-content: center;
	min-height: 44px;
	padding: 0 2px;
	color: var(--acs-text);
	line-height: 1.15;
	text-align: right;
}
.acsc-phone--header .acsc-phone__label {
	color: var(--acs-amber);
	font-size: 0.6875rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}
.acsc-phone--header .acsc-phone__number {
	font-size: 0.9375rem;
	font-weight: 700;
	letter-spacing: 0.01em;
	white-space: nowrap;
}
.acsc-phone--header:hover .acsc-phone__number {
	color: var(--acs-amber);
}

/* Below 1280px: compact incident chip next to the menu toggle; below 900px the expert CTA lives in the drawer only. */
@media (max-width: 1279.98px) {
	.acs-header .acs-header__expert {
		display: none;
	}
	.acs-header .acs-incident-outline .wp-block-button__link {
		min-height: 44px;
		padding: 0.5rem 0.8rem;
		font-size: 0.875rem;
	}
	.acs-header__actions {
		gap: 8px;
	}
}
/* 900-1279px: the bar has room for the booking CTA beside the chip (the inline menu still needs 1280px). */
@media (min-width: 900px) and (max-width: 1279.98px) {
	.acs-header .acs-header__expert {
		display: block;
	}
}
/* Below 414px the header buttons drop their optional words (theme markup: span.acs-hide-xs), visually only, so the
   chip and the focused-header call stay on one line and keep their full accessible names. */
@media (max-width: 413.98px) {
	.acs-header .acs-hide-xs {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip-path: inset(50%);
		white-space: nowrap;
	}
	/* Slim inline padding keeps 12px clear on both sides of the chip at 320px (logo text, menu toggle). */
	.acs-header .acs-incident-outline .wp-block-button__link {
		gap: 0.4em;
		padding: 0.35rem 0.5rem;
		font-size: 0.8125rem;
		line-height: 1.1;
		white-space: nowrap;
		text-align: center;
	}
	.acs-header .acs-incident-outline .wp-block-button__link::before {
		width: 6px;
		height: 6px;
		box-shadow: 0 0 0 2px rgba(255, 181, 71, 0.18);
	}
	.acs-logo--header .acs-logo__name {
		font-size: 1.0625rem;
	}
	.acs-logo--header .acs-logo__mark {
		width: 32px;
		height: 32px;
	}
}
@media (min-width: 1440px) {
	.acs-header .acsc-phone--header {
		display: flex;
	}
}

/* Active incident page: the chip would link to the page itself, and the booking CTA steps down to a ghost button so it
   never outweighs the call-first page content. */
body.acs-pt-incident .acs-header .acs-incident-outline {
	display: none;
}
body.acs-pt-incident .acs-header .acs-header__expert .wp-block-button__link {
	background-color: transparent;
	border-color: var(--acs-border-strong);
	color: var(--acs-text);
	box-shadow: none;
}
body.acs-pt-incident .acs-header .acs-header__expert .wp-block-button__link:hover,
body.acs-pt-incident .acs-header .acs-header__expert .wp-block-button__link:focus-visible {
	background-color: var(--acs-surface-2);
	border-color: rgba(140, 155, 255, 0.5);
	color: #fff;
	box-shadow: none;
}

/* Focused header (page-landing template): logo, phone, Call 24/7, Talk to an expert. No navigation. */
.acs-header--focused .acs-header__actions {
	order: 0;
}
.acs-header--focused .acs-header__call .wp-block-button__link::before {
	content: "";
	flex: none;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--acs-on-amber);
	opacity: 0.7;
}
@media (max-width: 1279.98px) {
	.acs-header--focused .acsc-phone--header {
		display: none;
	}
}
@media (max-width: 899.98px) {
	.acs-header.acs-header--focused .acs-header__expert {
		display: none;
	}
}
@media (min-width: 900px) and (max-width: 1099.98px) {
	.acs-header.acs-header--focused .acs-header__expert {
		display: block;
	}
}
@media (max-width: 413.98px) {
	.acs-header--focused .acs-header__call .wp-block-button__link {
		padding: 0.35rem 0.75rem;
		font-size: 0.8125rem;
		line-height: 1.15;
		white-space: nowrap;
		text-align: center;
	}
	.acs-header--focused .acs-header__call .wp-block-button__link::before {
		display: none;
	}
}

/* =====================================================================================================================
   10 Hero and page hero, breadcrumbs
   ================================================================================================================== */
section.acs-section--hero {
	padding-top: clamp(48px, 7vw, 104px);
	padding-bottom: clamp(56px, 8vw, 120px);
}

/* Column layouts become CSS grids (the inline flex-basis from core/columns is then inert). */
.wp-block-columns.acs-hero__grid,
.wp-block-columns.acs-pagehero__grid,
.wp-block-columns.acs-split,
.wp-block-columns.acs-points-layout,
.wp-block-columns.acs-incident__grid,
.wp-block-columns.acs-calendly-layout,
.wp-block-columns.acs-relationship__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--acs-gap-lg);
	margin: 0;
}
.wp-block-columns.acs-hero__grid > .wp-block-column,
.wp-block-columns.acs-pagehero__grid > .wp-block-column,
.wp-block-columns.acs-split > .wp-block-column,
.wp-block-columns.acs-points-layout > .wp-block-column,
.wp-block-columns.acs-incident__grid > .wp-block-column,
.wp-block-columns.acs-calendly-layout > .wp-block-column,
.wp-block-columns.acs-relationship__grid > .wp-block-column {
	min-width: 0;
	margin: 0;
}
.wp-block-column > * {
	margin-block: 0;
}
.wp-block-column > * + * {
	margin-block-start: 20px;
}

.acs-hero__copy {
	align-self: center;
}
.acs-hero__title {
	max-width: 15ch;
	margin: 0;
	font-size: var(--acs-fs-hero);
	font-weight: 800;
	line-height: 1.04;
	letter-spacing: -0.035em;
}
.wp-block-column.acs-hero__copy > .acs-lead {
	margin-top: 22px;
	font-size: clamp(1.125rem, 1rem + 0.5vw, 1.3125rem);
}
.acs-hero__copy > .acs-actions {
	margin-top: 32px;
}
.wp-block-column.acs-hero__copy > .acs-hero__urgent {
	margin-top: 24px;
}
/* One flowing sentence in a shrink-wrapped box (block flow, not flex, so no-wrap spans keep their spaces); the dot sits
   in the left padding, centred on the first line. */
.acs-hero__urgent {
	position: relative;
	display: block;
	width: fit-content;
	max-width: 100%;
	padding: 9px 14px 9px 28px;
	border: 1px solid rgba(255, 181, 71, 0.28);
	border-radius: 12px;
	background: rgba(255, 181, 71, 0.06);
	color: var(--acs-text-muted);
	font-size: 0.9375rem;
	line-height: 1.45;
}
.acs-hero__urgent::before {
	content: "";
	position: absolute;
	left: 12px;
	top: calc(9px + 0.725em - 4px);
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--acs-amber);
	box-shadow: 0 0 0 3px rgba(255, 181, 71, 0.18);
}
.acs-hero__urgent a {
	color: var(--acs-amber);
	font-weight: 700;
	text-decoration: underline;
	text-decoration-color: rgba(255, 181, 71, 0.5);
}
.acs-hero__urgent a:hover {
	color: #ffd08a;
}
.acs-hero__visual {
	align-self: center;
	justify-self: center;
	width: 100%;
	max-width: 400px;
}
@media (min-width: 1024px) {
	.wp-block-columns.acs-hero__grid {
		grid-template-columns: minmax(0, 1.12fr) minmax(0, 0.88fr);
		align-items: center;
		gap: clamp(32px, 4vw, 72px);
	}
	.acs-hero__visual {
		max-width: 560px;
	}
}

/* Page hero */
section.acs-section--pagehero {
	padding-top: clamp(56px, 7.5vw, 104px);
	padding-bottom: clamp(48px, 6.5vw, 96px);
	background:
		radial-gradient(60% 80% at 85% 0%, rgba(51, 70, 255, 0.14) 0%, rgba(51, 70, 255, 0) 70%),
		linear-gradient(180deg, var(--acs-bg-raised) 0%, var(--acs-bg) 100%);
	border-bottom: 1px solid var(--acs-border);
}
.acs-pagehero__title {
	max-width: 20ch;
	margin: 0;
	font-size: var(--acs-fs-h1);
	font-weight: 800;
	line-height: 1.08;
	letter-spacing: -0.03em;
}
.acs-section--pagehero .acs-wrap > .acs-lead,
.acs-pagehero__copy > .acs-lead {
	margin-top: 20px;
}
.acs-section--pagehero ul.acs-chips {
	margin-top: 28px;
}
.acs-pagehero__visual {
	align-self: center;
	justify-self: center;
	width: 100%;
	max-width: 360px;
}
.acs-pagehero__copy {
	align-self: center;
}
@media (min-width: 1024px) {
	.wp-block-columns.acs-pagehero__grid {
		grid-template-columns: minmax(0, 1.25fr) minmax(0, 0.75fr);
		align-items: center;
		gap: clamp(32px, 4vw, 64px);
	}
	.acs-pagehero__visual {
		max-width: 460px;
	}
}
/* Phones: answer first. The page-hero visual is decorative (aria-hidden), so it does not push the content down. */
@media (max-width: 599.98px) {
	.acs-pagehero__visual {
		display: none;
	}
}
/* Narrow phones: long page-hero titles step down so they stay within four lines (32.5px at 390; the longest title,
   multi-location, needs 33.3px or less there). */
@media (max-width: 419.98px) {
	.acs-pagehero__title {
		font-size: clamp(2rem, 1.25rem + 3.2vw, 2.375rem);
	}
}
/* Four hero chips: two by two instead of three plus one. */
@media (min-width: 782px) {
	.acs-section--pagehero ul.acs-chips:has(> li:nth-child(4):last-child) {
		display: grid;
		grid-template-columns: repeat(2, max-content);
		justify-items: start;
	}
}

/* Compact page hero (default pages, archives, search, 404) */
section.acs-section--pagehero.is-simple {
	padding-top: clamp(36px, 5vw, 64px);
	padding-bottom: clamp(32px, 4.5vw, 56px);
}
.acs-section--pagehero.is-simple .acs-pagehero__title {
	max-width: 24ch;
	font-size: clamp(2.125rem, 1.45rem + 2.8vw, 3.375rem);
}
.acs-section--pagehero.is-simple .acs-wrap > * + * {
	margin-block-start: 16px;
}
.acs-section--pagehero.is-simple .acs-wrap > .acs-actions {
	margin-block-start: 28px;
}

/* Article hero */
section.acs-section--pagehero.is-article {
	padding-top: clamp(36px, 5vw, 72px);
	padding-bottom: clamp(32px, 4.5vw, 56px);
}
.acs-section--pagehero.is-article .acs-pagehero__title {
	max-width: none;
	font-size: clamp(2rem, 1.35rem + 2.7vw, 3.25rem);
	line-height: 1.1;
}
.acs-section--pagehero.is-article .acs-wrap > * + * {
	margin-block-start: 16px;
}

/* Breadcrumbs (Yoast) */
.acs-crumbs {
	color: var(--acs-text-subtle);
	font-size: 0.84375rem;
	line-height: 1.5;
}
.acs-crumbs:empty {
	display: none;
}
.acs-crumbs a {
	color: var(--acs-text-muted);
	text-decoration: none;
}
.acs-crumbs a:hover {
	color: var(--acs-text);
	text-decoration: underline;
}
.acs-crumbs .breadcrumb_last,
.acs-crumbs [aria-current="page"] {
	color: var(--acs-text);
	font-weight: 600;
}
.acs-crumbs p,
.acs-crumbs nav,
.acs-crumbs .yoast-breadcrumbs {
	margin: 0;
}
.acs-section--pagehero .acs-wrap > .acs-crumbs {
	margin-bottom: 8px;
}
/* Canvas pages: the crumbs float over the top padding of the first section. */
.acs-main--canvas > .acs-crumbs {
	position: relative;
	z-index: 3;
	box-sizing: border-box;
	height: 48px;
	margin: 0 auto -48px;
	padding-top: 16px;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}
.acs-main--canvas > .acs-crumbs > .yoast-breadcrumbs {
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}
.acs-main--canvas > .acs-crumbs + .wp-block-post-content {
	margin-top: 0;
}
/* Phones: the H1 right below repeats the current page, so the trail stops at its parent (the plugin wraps each
   separator in span.acsc-crumb-sep). The nowrap + ellipsis above stays as a fallback. */
@media (max-width: 599.98px) {
	.acs-crumbs .breadcrumb_last,
	.acs-crumbs .acsc-crumb-sep:has(+ .breadcrumb_last) {
		display: none;
	}
}

/* =====================================================================================================================
   11 Trust strip, section heads
   ================================================================================================================== */
section.acs-section--trust {
	padding-block: clamp(24px, 3.5vw, 40px);
}
.acs-trust__list {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 14px 16px;
}
@media (min-width: 600px) {
	.acs-trust__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 18px 24px;
	}
}
.acs-trust__list > * {
	margin: 0;
}
.acs-trust__item {
	display: flex;
	align-items: center;
	gap: 12px;
	min-width: 0;
}
.acs-trust__item > * {
	margin: 0;
}
.acs-trust__item .acs-icon-wrap {
	width: 38px;
	height: 38px;
	border-radius: 10px;
}
.acs-trust__item .acs-icon-wrap .acs-icon {
	width: 19px;
	height: 19px;
}
.acs-trust__label {
	color: var(--acs-text);
	font-size: 0.875rem;
	font-weight: 600;
	line-height: 1.3;
	text-wrap: balance;
}
@media (min-width: 900px) {
	.acs-trust__list {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 0;
	}
	.acs-trust__item {
		justify-content: center;
		padding: 6px 16px;
	}
	.acs-trust__item + .acs-trust__item {
		border-left: 1px solid var(--acs-border);
	}
	.acs-trust__label {
		font-size: 0.9375rem;
	}
}
/* Five items: one row of five on wide screens; below that the fifth item spans the row, centred, with no divider. */
@media (min-width: 1200px) {
	.acs-trust__list:has(> .acs-trust__item:nth-child(5):last-child) {
		grid-template-columns: repeat(5, minmax(0, 1fr));
	}
}
@media (min-width: 900px) and (max-width: 1199.98px) {
	.acs-trust__item:nth-child(4n+1) {
		border-left: 0;
	}
}
@media (min-width: 600px) and (max-width: 1199.98px) {
	.acs-trust__item:nth-child(5):last-child {
		grid-column: 1 / -1;
		justify-content: center;
		border-left: 0;
	}
}

/* Section head */
.acs-sechead {
	max-width: 780px;
	margin-bottom: clamp(32px, 4vw, 56px);
}
.acs-sechead > * {
	margin-block: 0;
}
/* The eyebrow gap comes from the shared rule in section 15 (systemic decision d). */
.acs-sechead > .acs-lead {
	margin-top: 18px;
}
.acs-sechead__title {
	margin: 0;
}
.acs-sechead.is-center {
	margin-inline: auto;
	text-align: center;
}
.acs-sechead.is-center > .acs-lead {
	margin-inline: auto;
}

/* =====================================================================================================================
   12 Lifecycle stages
   ================================================================================================================== */
/*
 * Each stage is a column: a numbered node on a shared connector line, then a card body drawn by ::after (so the line
 * runs above the cards, never through them). Mobile: horizontal scroll-snap carousel with a dots row (script).
 */
.acs-stages {
	--acs-stage-gap: 14px;
	--acs-node: 40px;
	--acs-node-row: 60px;
	position: relative;
	display: flex;
	gap: var(--acs-stage-gap);
	margin-inline: calc(var(--acs-gutter) * -1);
	padding: 0 var(--acs-gutter) 6px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-padding-inline: var(--acs-gutter);
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}
.acs-stages::-webkit-scrollbar {
	display: none;
}
.acs-stage {
	position: relative;
	isolation: isolate;
	display: flex;
	flex: 0 0 84%;
	flex-direction: column;
	min-width: 0;
	margin: 0;
	padding: calc(var(--acs-node-row) + 22px) 22px 24px;
	scroll-snap-align: start;
}
.acs-stage > * {
	margin: 0;
}
/* Card body */
.acs-stage::after {
	content: "";
	position: absolute;
	inset: var(--acs-node-row) 0 0;
	z-index: -1;
	border: 1px solid var(--acs-border);
	border-radius: var(--acs-r-lg);
	background: linear-gradient(180deg, var(--acs-surface) 0%, rgba(13, 21, 48, 0.5) 100%);
	transition: border-color var(--acs-dur) ease, box-shadow var(--acs-dur) ease;
}
/* Numbered node */
.acs-stage__num {
	position: absolute;
	top: 0;
	left: 22px;
	z-index: 1;
	display: grid;
	place-items: center;
	width: var(--acs-node);
	height: var(--acs-node);
	border: 1px solid var(--acs-border-strong);
	border-radius: 50%;
	background: var(--acs-bg);
	color: var(--acs-text-muted);
	font-family: var(--acs-mono);
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	transition: border-color var(--acs-dur) ease, color var(--acs-dur) ease, background-color var(--acs-dur) ease, box-shadow var(--acs-dur) ease;
}
/* Connector: from this node to the next stage's node (lit with a cyan fill that grows left to right) */
.acs-stage:not(:last-child)::before {
	content: "";
	position: absolute;
	top: calc(var(--acs-node) / 2);
	left: calc(22px + var(--acs-node) + 8px);
	right: calc((var(--acs-stage-gap) + 22px - 8px) * -1);
	z-index: 0;
	height: 1px;
	background: linear-gradient(90deg, var(--acs-cyan), var(--acs-cyan)) left center / 0% 100% no-repeat, var(--acs-border-strong);
	transition: background-size var(--acs-dur-slow) var(--acs-ease);
	pointer-events: none;
}
.acs-stage .acs-icon-wrap {
	align-self: flex-start;
	width: 40px;
	height: 40px;
}
.acs-stage__title {
	margin-top: 16px !important;
}
.acs-stage__text {
	margin-top: 8px !important;
	color: var(--acs-text-muted);
	font-size: 0.96875rem;
	line-height: 1.6;
}
ul.acs-stage__list {
	display: grid;
	gap: 8px;
	margin: 18px 0 0 !important;
	padding: 16px 0 0;
	border-top: 1px solid var(--acs-border);
	list-style: none;
}
ul.acs-stage__list > li {
	position: relative;
	margin: 0;
	padding-left: 18px;
	color: var(--acs-text-muted);
	font-size: 0.90625rem;
	line-height: 1.5;
}
ul.acs-stage__list > li::before {
	content: "";
	position: absolute;
	left: 2px;
	top: 0.62em;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--acs-cyan);
	opacity: 0.8;
}

/* Lit state (script sets data-active on .acs-stages and is-active on the stage) */
.acs-stage.is-active::after {
	border-color: var(--acs-cyan-line);
	box-shadow: 0 0 0 1px rgba(44, 196, 240, 0.1), 0 18px 40px rgba(2, 4, 12, 0.45);
}
.acs-stage.is-active .acs-stage__num,
.acs-stages[data-active="1"] .acs-stage:nth-child(-n+2) .acs-stage__num,
.acs-stages[data-active="2"] .acs-stage:nth-child(-n+3) .acs-stage__num,
.acs-stages[data-active="3"] .acs-stage:nth-child(-n+4) .acs-stage__num,
.acs-stages[data-active="4"] .acs-stage:nth-child(-n+5) .acs-stage__num,
.acs-stages[data-active="5"] .acs-stage:nth-child(-n+6) .acs-stage__num {
	border-color: var(--acs-cyan);
	background: #08263a;
	color: var(--acs-text);
	box-shadow: 0 0 0 4px rgba(44, 196, 240, 0.1);
}
.acs-stages[data-active="1"] .acs-stage:nth-child(-n+1)::before,
.acs-stages[data-active="2"] .acs-stage:nth-child(-n+2)::before,
.acs-stages[data-active="3"] .acs-stage:nth-child(-n+3)::before,
.acs-stages[data-active="4"] .acs-stage:nth-child(-n+4)::before,
.acs-stages[data-active="5"] .acs-stage:nth-child(-n+5)::before {
	background-size: 100% 100%, auto;
}

/* Mobile dots row (built by the script) */
.acs-stages__dots {
	display: flex;
	justify-content: center;
	gap: 6px;
	margin-top: 18px !important;
}
.acs-stages__dot {
	width: 8px;
	height: 8px;
	border-radius: var(--acs-r-pill);
	background: var(--acs-border-strong);
	cursor: pointer;
	transition: width var(--acs-dur) var(--acs-ease), background-color var(--acs-dur) ease;
}
.acs-stages__dot.is-active {
	width: 22px;
	background: var(--acs-cyan);
}

@media (min-width: 600px) {
	.acs-stage {
		flex-basis: 60%;
	}
}
@media (min-width: 782px) {
	.acs-stages {
		--acs-stage-gap: 20px;
		display: grid;
		grid-auto-flow: column;
		grid-auto-columns: minmax(0, 1fr);
		margin-inline: 0;
		padding: 0;
		overflow: visible;
		scroll-snap-type: none;
	}
	.acs-stages__dots {
		display: none;
	}
}
@media (min-width: 782px) and (max-width: 1023.98px) {
	/* Four columns would be too narrow: two by two, connectors only within a row. */
	.acs-stages {
		grid-auto-flow: row;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		row-gap: 28px;
	}
	.acs-stage:nth-child(2n)::before {
		display: none;
	}
}
/* Side-by-side stages share their rows (icon, title, text, list) through a subgrid, so every bullet list starts at the
   same height whatever the length of the text above it. Without subgrid the stages keep their own flow. */
@supports (grid-template-rows: subgrid) {
	@media (min-width: 782px) {
		.acs-stage {
			display: grid;
			grid-row: span 4;
			grid-template-rows: subgrid;
			row-gap: 0;
			align-content: start;
			align-items: start;
		}
	}
}

/* =====================================================================================================================
   13 Cards and grids
   ================================================================================================================== */
.acs-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--acs-gap);
}
.acs-grid > * {
	margin: 0;
}
@media (min-width: 640px) {
	.acs-grid--2,
	.acs-grid--3,
	.acs-grid--4 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (min-width: 1024px) {
	.acs-grid--3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
@media (min-width: 1100px) {
	.acs-grid--4 {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.acs-card {
	position: relative;
	display: flex;
	flex-direction: column;
	min-width: 0;
	padding: clamp(22px, 2.4vw, 30px);
	border: 1px solid var(--acs-border);
	border-radius: var(--acs-r-lg);
	background: linear-gradient(180deg, rgba(13, 21, 48, 0.92) 0%, rgba(10, 16, 34, 0.92) 100%);
	transition:
		transform var(--acs-dur-fast) var(--acs-ease),
		border-color var(--acs-dur-fast) ease,
		box-shadow var(--acs-dur-fast) ease,
		background-color var(--acs-dur-fast) ease;
}
.acs-card > * {
	margin: 0;
}
.acs-card > * + * {
	margin-top: 12px;
}
.acs-card > .acs-icon-wrap {
	margin-bottom: 8px;
}
.acs-card > .acs-icon-wrap + * {
	margin-top: 12px;
}
.acs-card__title {
	color: var(--acs-text);
	font-size: var(--acs-fs-h3);
	line-height: 1.25;
}
.acs-card__title a {
	color: inherit;
	text-decoration: none;
}
.acs-card__text,
.acs-card .acs-card__text {
	color: var(--acs-text-muted);
	font-size: 0.96875rem;
	line-height: 1.6;
}
ul.acs-card__list {
	display: grid;
	gap: 8px;
	padding: 0;
	list-style: none;
}
ul.acs-card__list > li {
	position: relative;
	margin: 0;
	padding-left: 24px;
	color: var(--acs-text-muted);
	font-size: 0.9375rem;
	line-height: 1.5;
}
ul.acs-card__list > li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.22em;
	width: 15px;
	height: 15px;
	background: var(--acs-cyan);
	-webkit-mask: var(--acs-mask-check) center / contain no-repeat;
	mask: var(--acs-mask-check) center / contain no-repeat;
}
.acs-card__link {
	margin-top: auto !important;
	padding-top: 18px;
	font-size: 0.96875rem;
	font-weight: 700;
}
/* Inline text so a wrapped label keeps its arrow right after the last word. */
.acs-card__link a {
	display: inline;
	color: var(--acs-cyan);
	text-decoration: none;
}
/* Arrow: an inline (not inline-block) box that starts with a word joiner, so it can never wrap onto a line of its own
   (browsers always allow a wrap before an atomic inline). The padding is the 8px gap plus the 16px glyph. */
.acs-card__link a::after {
	content: "\2060";
	position: relative;
	left: 0;
	padding-left: 24px;
	background: currentColor;
	-webkit-mask: var(--acs-mask-arrow) right center / 16px 16px no-repeat;
	mask: var(--acs-mask-arrow) right center / 16px 16px no-repeat;
	transition: left var(--acs-dur-fast) var(--acs-ease);
}
/* Stretched link: the whole card is the hit area */
.acs-card.has-link .acs-card__link a::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	border-radius: inherit;
}
.acs-card.has-link:hover,
.acs-card.has-link:focus-within,
.acs-card--resource:hover,
.acs-card--resource:focus-within {
	transform: translateY(-3px);
	border-color: rgba(140, 155, 255, 0.36);
	background-color: var(--acs-surface-2);
	box-shadow: 0 0 0 1px rgba(140, 155, 255, 0.12), 0 18px 44px rgba(2, 4, 12, 0.55), 0 0 40px rgba(51, 70, 255, 0.12);
}
.acs-card.has-link:hover .acs-card__link a::after {
	left: 4px;
}
/* Rows of three or four cards: titles reserve two lines so the body text starts level across the row. */
@media (min-width: 1024px) {
	:is(.acs-grid--3, .acs-grid--4) > .acs-card > .acs-card__title {
		min-height: 2lh;
	}
}
@supports selector(:has(*)) {
	.acs-card.has-link:has(.acs-card__link a:focus-visible),
	.acs-card--resource:has(.acs-card__title a:focus-visible) {
		outline: 3px solid var(--acs-focus);
		outline-offset: 3px;
	}
	.acs-card.has-link .acs-card__link a:focus-visible,
	.acs-card--resource .acs-card__title a:focus-visible {
		outline: none;
	}
}

/* Service: featured, larger padding, top accent line */
.acs-card--service {
	padding: clamp(26px, 2.8vw, 36px);
	overflow: hidden;
}
.acs-card--service::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 2px;
	background: linear-gradient(90deg, var(--acs-cyan) 0%, var(--acs-primary) 55%, rgba(51, 70, 255, 0) 100%);
	opacity: 0.85;
}
.acs-card--service > .acs-icon-wrap {
	width: 48px;
	height: 48px;
}
.acs-card--service .acs-card__title {
	font-size: clamp(1.25rem, 1.1rem + 0.5vw, 1.5rem);
}

/* Feature: quieter surface */
.acs-card--feature {
	background: linear-gradient(180deg, rgba(13, 21, 48, 0.7) 0%, rgba(10, 16, 34, 0.5) 100%);
}

/* Industry: icon row accent */
.acs-card--industry > .acs-icon-wrap {
	background: linear-gradient(180deg, rgba(51, 70, 255, 0.22), rgba(51, 70, 255, 0.08));
	border-color: rgba(140, 155, 255, 0.3);
	color: #c3caff;
}

/* Link and topic: compact */
.acs-card--link,
.acs-card--topic {
	padding: clamp(20px, 2vw, 26px);
}
.acs-card--link .acs-card__title,
.acs-card--topic .acs-card__title {
	font-size: 1.125rem;
}
.acs-card--topic > .acs-icon-wrap {
	width: 40px;
	height: 40px;
}
.acs-card--topic .acs-card__text {
	font-size: 0.90625rem;
}

/* Resource (plugin acsc/recent-resources and the query template) */
.acs-card--resource {
	padding: clamp(22px, 2.2vw, 28px);
}
.acs-card__topic {
	color: var(--acs-cyan);
	font-family: var(--acs-mono);
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	line-height: 1.4;
	text-transform: uppercase;
}
.acs-card__topic a {
	position: relative;
	z-index: 2;
	color: inherit;
	text-decoration: none;
}
.acs-card__topic a:hover {
	color: var(--acs-text);
	text-decoration: underline;
}
.acs-card__topic .wp-block-post-terms__separator {
	color: var(--acs-text-subtle);
}
.acs-card--resource .acs-card__title {
	font-size: 1.1875rem;
	line-height: 1.3;
}
.acs-card--resource .acs-card__title a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	border-radius: inherit;
}
.acs-card--resource .acs-card__title a:hover {
	color: #fff;
}
.acs-card__date {
	margin-top: auto !important;
	padding-top: 16px;
	color: var(--acs-text-subtle);
	font-size: 0.84375rem;
}
.acs-card--resource .acs-card__text p {
	margin: 0;
}
.acs-card--resource .wp-block-post-excerpt__more-text {
	display: none;
}

/* Person (plugin acsc/team) */
.acs-card--person {
	align-items: flex-start;
}
.acs-person__photo {
	display: block;
	width: 88px;
	height: 88px;
	margin-bottom: 8px;
	border-radius: 50%;
	object-fit: cover;
	border: 1px solid var(--acs-border-strong);
	box-shadow: 0 0 0 4px rgba(13, 21, 48, 0.8);
}
.acs-person__role {
	color: var(--acs-cyan);
	font-size: 0.9375rem;
	font-weight: 600;
}
.acs-person__creds {
	color: var(--acs-text-subtle);
	font-family: var(--acs-mono);
	font-size: 0.78125rem;
	letter-spacing: 0.04em;
}
.acs-person__link a {
	font-weight: 600;
}
.acs-card--person .acs-card__text {
	color: var(--acs-text-muted);
	font-size: 0.9375rem;
}
.acs-card--person .acs-card__text p {
	margin: 0 0 0.75em;
}

/* =====================================================================================================================
   14 Coverage matrix
   ================================================================================================================== */
.acs-matrix {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 12px;
}
.acs-matrix > * {
	margin: 0;
}
.acs-matrix__item {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 10px;
	min-width: 0;
	padding: 22px;
	border: 1px solid var(--acs-border);
	border-radius: var(--acs-r);
	background: linear-gradient(180deg, rgba(13, 21, 48, 0.75), rgba(13, 21, 48, 0.35));
	transition: border-color var(--acs-dur-fast) ease, background-color var(--acs-dur-fast) ease;
}
.acs-matrix__item > * {
	margin: 0;
}
.acs-matrix__item::after {
	content: "";
	position: absolute;
	top: 22px;
	right: 22px;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--acs-success);
	box-shadow: 0 0 0 3px rgba(52, 211, 153, 0.14);
}
.acs-matrix__item:hover {
	border-color: var(--acs-border-strong);
}
.acs-matrix__item .acs-icon-wrap {
	width: 40px;
	height: 40px;
	border-radius: 10px;
}
.acs-matrix__item .acs-icon-wrap .acs-icon {
	width: 20px;
	height: 20px;
}
.acs-matrix__title {
	margin-top: 4px !important;
	font-size: 1.0625rem !important;
	line-height: 1.3;
}
.acs-matrix__text {
	color: var(--acs-text-muted);
	font-size: 0.90625rem;
	line-height: 1.55;
}
@media (min-width: 600px) {
	.acs-matrix {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (min-width: 900px) {
	.acs-matrix {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
@media (min-width: 1200px) {
	/* Five across only when the items fill whole rows (5, 10, 15 ...). */
	.acs-matrix:has(> .acs-matrix__item:nth-child(5n):last-child) {
		grid-template-columns: repeat(5, minmax(0, 1fr));
	}
}

/* =====================================================================================================================
   15 Split, panels, relationship
   ================================================================================================================== */
.acs-split__title,
.acs-relationship__title,
.acs-incident__title {
	margin: 0;
}
.acs-split__main > p:not([class]),
.acs-split__main > .wp-block-paragraph:not(.acs-eyebrow),
.acs-relationship__main > p:not([class]),
.acs-relationship__main > .wp-block-paragraph:not(.acs-eyebrow):not(.acs-extlink) {
	color: var(--acs-text-muted);
	font-size: 1.0625rem;
	line-height: 1.7;
	max-width: 62ch;
}
.acs-split__main > .acs-eyebrow + *,
.acs-relationship__main > .acs-eyebrow + *,
.acs-incident__main > .acs-eyebrow + * {
	margin-top: 0;
}
.acs-split__main > .acs-checklist {
	margin-top: 24px;
}
@media (min-width: 960px) {
	.wp-block-columns.acs-split {
		grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
		align-items: start;
		gap: clamp(40px, 5vw, 80px);
	}
	.wp-block-columns.acs-split.is-reversed > .acs-split__main {
		order: 2;
	}
	.acs-split__aside {
		position: sticky;
		top: calc(var(--acs-admin-top) + var(--acs-header-h) + var(--acs-strip-h) + 24px);
	}
}

/* Panel */
.acs-panel {
	position: relative;
	padding: clamp(22px, 2.6vw, 34px);
	border: 1px solid var(--acs-border);
	border-radius: var(--acs-r-lg);
	background:
		radial-gradient(90% 60% at 100% 0%, rgba(51, 70, 255, 0.1) 0%, rgba(51, 70, 255, 0) 70%),
		linear-gradient(180deg, var(--acs-surface) 0%, rgba(10, 16, 34, 0.9) 100%);
	box-shadow: var(--acs-shadow-soft);
}
.acs-panel > * {
	margin: 0;
}
.acs-panel > * + * {
	margin-top: 18px;
}
.acs-panel__title {
	font-size: 1.25rem !important;
	line-height: 1.3;
}
.acs-panel > p {
	color: var(--acs-text-muted);
}
.acs-panel > .acs-icon-wrap + .acs-panel__title {
	margin-top: 16px;
}
/* The table block's own margin reset (0,2,1) would otherwise glue a panel table to the panel title. */
.acs-panel > * + figure.wp-block-table.acs-table {
	margin-top: 18px;
}
.acs-panel > .acs-visual {
	margin-inline: auto;
	max-width: 420px;
}
.acs-panel--incident {
	border-color: rgba(255, 181, 71, 0.24);
	background:
		radial-gradient(90% 60% at 100% 0%, rgba(245, 158, 11, 0.1) 0%, rgba(245, 158, 11, 0) 70%),
		linear-gradient(180deg, var(--acs-surface) 0%, rgba(10, 16, 34, 0.9) 100%);
}
.acs-panel--incident .acs-panel__title {
	color: var(--acs-text);
}

/* Relationship */
.acs-extlink a {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	color: var(--acs-link);
	font-weight: 700;
	text-decoration: underline;
	text-decoration-color: rgba(154, 166, 255, 0.45);
}
.acs-extlink a::after {
	content: "";
	flex: none;
	width: 16px;
	height: 16px;
	background: currentColor;
	-webkit-mask: var(--acs-mask-ext) center / contain no-repeat;
	mask: var(--acs-mask-ext) center / contain no-repeat;
	transition: transform var(--acs-dur-fast) var(--acs-ease);
}
.acs-extlink a:hover {
	color: var(--acs-text);
}
.acs-extlink a:hover::after {
	transform: translate(2px, -2px);
}
@media (min-width: 960px) {
	.wp-block-columns.acs-relationship__grid {
		grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
		align-items: center;
		gap: clamp(40px, 5vw, 80px);
	}
}

/* Eyebrow to heading: one gap in every component (systemic decision d). Specificity 0,3,0 beats the flow resets
   (.wp-block-column > *, .acs-wrap > *, .acs-phonepanel > *, .acs-final__panel > * ...) that zeroed it in some. */
:is(.acs-hero__copy, .acs-pagehero__copy, .acs-section--pagehero .acs-wrap, .acs-split__main, .acs-relationship__main, .acs-incident__main, .acs-sechead, .acs-compromise, .acs-final__panel, .acs-phonepanel, .acs-calendly__main) > .acs-eyebrow {
	margin-bottom: var(--acs-eyebrow-gap);
}
:is(.acs-hero__copy, .acs-pagehero__copy, .acs-section--pagehero .acs-wrap, .acs-split__main, .acs-relationship__main, .acs-incident__main, .acs-sechead, .acs-compromise, .acs-final__panel, .acs-phonepanel, .acs-calendly__main) > .acs-eyebrow + * {
	margin-top: 0;
}

/* =====================================================================================================================
   16 Points and steps
   ================================================================================================================== */
.acs-points__main .acs-sechead {
	margin-bottom: 0;
}
/* The points heading sits in a narrow column beside the list: a step smaller than a full-width H2. */
.acs-points-layout .acs-sechead__title {
	font-size: clamp(1.75rem, 1.2rem + 1.6vw, 2.5rem);
}
/* Two columns from 960px: the heading column is only 330-470px wide, so the size tracks it (29px at 1024, 38px from
   1440) and the longest two-line headings ("The commitments behind / every engagement.") stay on two lines. */
@media (min-width: 960px) {
	.acs-points-layout .acs-sechead__title {
		font-size: clamp(1.75rem, 0.5rem + 2.07vw, 2.375rem);
	}
}
.acs-points__main > p:not([class]),
.acs-points__main > .wp-block-paragraph {
	color: var(--acs-text-muted);
	max-width: 56ch;
}
.acs-points {
	display: grid;
	gap: 0;
	border-top: 1px solid var(--acs-border);
}
.acs-points > * {
	margin: 0;
}
.acs-point {
	display: grid;
	grid-template-columns: 48px minmax(0, 1fr);
	column-gap: 16px;
	padding: 22px 0;
	border-bottom: 1px solid var(--acs-border);
}
.acs-point > * {
	margin: 0;
	grid-column: 2;
}
.acs-point__num {
	grid-column: 1;
	grid-row: 1 / span 2;
	color: var(--acs-cyan);
	font-family: var(--acs-mono);
	font-size: 0.875rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	line-height: 1.9;
}
.acs-point__title {
	font-size: 1.1875rem !important;
	line-height: 1.35;
}
.acs-point__text {
	margin-top: 6px !important;
	color: var(--acs-text-muted);
	font-size: 0.96875rem;
	line-height: 1.6;
}
@media (min-width: 960px) {
	.wp-block-columns.acs-points-layout {
		grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
		gap: clamp(40px, 5vw, 88px);
	}
	.acs-points__main {
		align-self: start;
		position: sticky;
		top: calc(var(--acs-admin-top) + var(--acs-header-h) + var(--acs-strip-h) + 32px);
	}
}

/* Steps: numbered cards */
.acs-steps {
	--acs-step-cols: 4;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--acs-gap);
	counter-reset: acs-step;
}
.acs-steps > * {
	margin: 0;
}
.acs-step {
	position: relative;
	min-width: 0;
	padding: 24px;
	border: 1px solid var(--acs-border);
	border-radius: var(--acs-r-lg);
	background: linear-gradient(180deg, rgba(13, 21, 48, 0.8), rgba(13, 21, 48, 0.4));
}
.acs-step > * {
	margin: 0;
}
.acs-step__num {
	display: inline-grid;
	place-items: center;
	width: 40px;
	height: 40px;
	border: 1px solid var(--acs-cyan-line);
	border-radius: 50%;
	background: var(--acs-bg-raised);
	color: var(--acs-cyan);
	font-family: var(--acs-mono);
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.04em;
}
.acs-step__title {
	margin-top: 18px !important;
	font-size: 1.1875rem !important;
	line-height: 1.3;
}
.acs-step__text {
	margin-top: 8px !important;
	color: var(--acs-text-muted);
	font-size: 0.96875rem;
	line-height: 1.6;
}
@media (min-width: 640px) {
	.acs-steps {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (min-width: 1024px) {
	.acs-steps {
		grid-template-columns: repeat(var(--acs-step-cols), minmax(0, 1fr));
	}
	.acs-steps:has(> .acs-step:nth-child(3):last-child),
	.acs-steps:has(> .acs-step:nth-child(6):last-child) {
		--acs-step-cols: 3;
	}
	.acs-steps:has(> .acs-step:nth-child(5):last-child) {
		--acs-step-cols: 5;
	}
	.acs-steps:has(> .acs-step:nth-child(2):last-child) {
		--acs-step-cols: 2;
	}
}
/* Five step cards in one row below 1280px leave a ~124px measure; a slimmer inline padding lets an unbreakable compound
   (.acs-nw, e.g. "Google Workspace,") fit inside the text box instead of running into the padding. */
@media (min-width: 1024px) and (max-width: 1279.98px) {
	.acs-steps:not(.acs-steps--timeline):has(> .acs-step:nth-child(5):last-child) > .acs-step {
		padding-inline: 16px;
	}
}

/* Steps timeline: vertical line on mobile, horizontal on desktop */
.acs-steps--timeline {
	gap: 0;
}
.acs-steps--timeline > .acs-step {
	padding: 0 0 28px 60px;
	border: 0;
	border-radius: 0;
	background: none;
}
.acs-steps--timeline > .acs-step:last-child {
	padding-bottom: 0;
}
.acs-steps--timeline > .acs-step .acs-step__num {
	position: absolute;
	left: 0;
	top: 0;
	z-index: 1;
	width: 42px;
	height: 42px;
	box-shadow: 0 0 0 6px var(--acs-bg);
}
.acs-tone-raised .acs-steps--timeline > .acs-step .acs-step__num {
	box-shadow: 0 0 0 6px var(--acs-bg-raised);
}
.acs-steps--timeline > .acs-step:not(:last-child)::before {
	content: "";
	position: absolute;
	left: 20px;
	top: 42px;
	bottom: 0;
	width: 1px;
	background: linear-gradient(180deg, var(--acs-cyan-line), var(--acs-border));
}
.acs-steps--timeline > .acs-step .acs-step__title {
	margin-top: 8px !important;
}
@media (min-width: 640px) and (max-width: 1023.98px) {
	.acs-steps--timeline {
		grid-template-columns: minmax(0, 1fr);
		max-width: 680px;
	}
}
@media (min-width: 1024px) {
	.acs-steps--timeline {
		column-gap: 28px;
		row-gap: 44px;
	}
	.acs-steps--timeline > .acs-step,
	.acs-steps--timeline > .acs-step:last-child {
		padding: 62px 0 0;
	}
	.acs-steps--timeline > .acs-step:not(:last-child)::before {
		left: 54px;
		right: -22px;
		top: 20px;
		bottom: auto;
		width: auto;
		height: 1px;
		background: linear-gradient(90deg, var(--acs-cyan-line), var(--acs-border));
	}
	/* Ten steps: two rows of five instead of 4 + 4 + 2. */
	.acs-steps--timeline:has(> .acs-step:nth-child(10):last-child) {
		--acs-step-cols: 5;
	}
	/* No connector from the last step of a row. */
	.acs-steps--timeline:not(:has(> .acs-step:nth-child(5):last-child)):not(:has(> .acs-step:nth-child(6):last-child)):not(:has(> .acs-step:nth-child(3):last-child)):not(:has(> .acs-step:nth-child(10):last-child)) > .acs-step:nth-child(4n)::before,
	.acs-steps--timeline:has(> .acs-step:nth-child(6):last-child) > .acs-step:nth-child(3n)::before,
	.acs-steps--timeline:has(> .acs-step:nth-child(3):last-child) > .acs-step:nth-child(3n)::before,
	.acs-steps--timeline:has(> .acs-step:nth-child(10):last-child) > .acs-step:nth-child(5n)::before {
		display: none;
	}
}

/* =====================================================================================================================
   17 Incident and phone panel
   ================================================================================================================== */
.acs-incident__main > .acs-lead {
	margin-top: 18px;
}
.acs-incident__note {
	color: var(--acs-text-subtle);
	font-size: 0.90625rem;
	line-height: 1.6;
	max-width: 60ch;
}
.acs-incident__note a {
	color: var(--acs-amber);
}
@media (min-width: 960px) {
	.wp-block-columns.acs-incident__grid {
		grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr);
		align-items: center;
		gap: clamp(40px, 5vw, 80px);
	}
}

/* Phone panel (incident page) */
.acs-phonepanel {
	max-width: 880px;
	margin-inline: auto;
	text-align: center;
}
.acs-phonepanel > * {
	margin: 0 auto;
}
.acs-phonepanel__title {
	max-width: 20ch;
	font-size: var(--acs-fs-h1) !important;
	font-weight: 800 !important;
	line-height: 1.08 !important;
	letter-spacing: -0.03em;
}
.acs-phonepanel > .acs-lead {
	margin-top: 20px;
}
.acs-phonepanel > .acs-actions {
	justify-content: center;
	margin-top: 28px;
}
.acsc-phone--hero {
	display: inline-flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	max-width: 100%;
	margin-top: 36px;
	padding: clamp(18px, 3vw, 32px) clamp(16px, 5vw, 56px);
	border: 1px solid var(--acs-amber-line);
	border-radius: var(--acs-r-lg);
	background:
		radial-gradient(80% 120% at 50% 0%, rgba(245, 158, 11, 0.14) 0%, rgba(245, 158, 11, 0) 70%),
		rgba(10, 16, 34, 0.85);
	box-shadow: 0 0 0 6px rgba(255, 181, 71, 0.04), 0 24px 60px rgba(2, 4, 12, 0.5);
	color: var(--acs-text);
	text-decoration: none;
	transition: border-color var(--acs-dur-fast) ease, box-shadow var(--acs-dur-fast) ease, transform var(--acs-dur-fast) var(--acs-ease);
}
.acsc-phone--hero .acsc-phone__label {
	color: var(--acs-amber);
	font-family: var(--acs-mono);
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}
.acsc-phone--hero .acsc-phone__number {
	font-size: clamp(1.75rem, 0.75rem + 5.5vw, 4.5rem);
	font-weight: 800;
	line-height: 1;
	letter-spacing: -0.02em;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}
.acsc-phone--hero:hover {
	border-color: var(--acs-amber);
	box-shadow: 0 0 0 6px rgba(255, 181, 71, 0.08), 0 24px 60px rgba(245, 158, 11, 0.16);
	color: #fff;
}
.acs-phonepanel > .acsc-phone--hero {
	display: inline-flex;
}
.acs-phonepanel__note {
	margin-top: 24px !important;
	max-width: 60ch;
	color: var(--acs-text-subtle);
	font-size: 0.9375rem;
}

/* Inline / nav / footer phone variants */
.acsc-phone--inline {
	color: var(--acs-amber);
	font-weight: 700;
	white-space: nowrap;
}
.acsc-phone--inline:hover {
	color: #ffd08a;
}
.acsc-phone--nav {
	display: inline-flex;
	flex-direction: column;
	color: var(--acs-amber);
	font-weight: 700;
}
.acsc-phone--nav .acsc-phone__label {
	color: var(--acs-text-subtle);
	font-size: 0.75rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}
.acsc-phone-buttons {
	margin-top: 24px;
}

/* =====================================================================================================================
   18 Compromise campaign band ("Have you been compromised?")
   ================================================================================================================== */
section.acs-section--compromise {
	padding-block: clamp(72px, 10vw, 144px);
	/* The band ends on the note's hairline, so its bottom needs less than its top (systemic decision i). */
	padding-bottom: clamp(56px, 7vw, 96px);
	background:
		radial-gradient(70% 55% at 50% 0%, rgba(245, 158, 11, 0.14) 0%, rgba(245, 158, 11, 0) 65%),
		radial-gradient(50% 40% at 100% 100%, rgba(51, 70, 255, 0.12) 0%, rgba(51, 70, 255, 0) 70%),
		linear-gradient(180deg, #070c1d 0%, var(--acs-bg-deep) 100%);
	border-block: 1px solid rgba(255, 181, 71, 0.22);
	overflow: clip;
}
.acs-section--compromise::before {
	-webkit-mask-image: radial-gradient(ellipse 80% 70% at 50% 20%, #000 0%, rgba(0, 0, 0, 0.5) 50%, transparent 85%);
	mask-image: radial-gradient(ellipse 80% 70% at 50% 20%, #000 0%, rgba(0, 0, 0, 0.5) 50%, transparent 85%);
}
.acs-compromise {
	position: relative;
}
.acs-compromise > * {
	margin: 0;
}
.acs-compromise__title {
	max-width: 16ch;
	color: #fff;
	font-size: var(--acs-fs-display) !important;
	font-weight: 800 !important;
	line-height: 1.02 !important;
	letter-spacing: -0.035em !important;
}
.acs-compromise__lead {
	max-width: 68ch;
	margin-top: clamp(20px, 2.4vw, 28px) !important;
	color: var(--acs-text-muted);
	font-size: clamp(1.0625rem, 1rem + 0.45vw, 1.3125rem);
}

/* Journey steps: vertical timeline on mobile, connected row on desktop */
.acs-compromise__steps {
	--acs-cnode: 46px;
	position: relative;
	display: grid;
	gap: 0;
	max-width: 760px;
	margin-top: clamp(40px, 5vw, 64px) !important;
	counter-reset: acs-cstep;
}
.acs-compromise__steps > * {
	margin: 0;
}
.acs-compromise__step {
	position: relative;
	min-width: 0;
	padding: 0 0 30px calc(var(--acs-cnode) + 18px);
}
.acs-compromise__step:last-child {
	padding-bottom: 0;
}
.acs-compromise__step > * {
	margin: 0;
}
.acs-compromise__step:not(:last-child)::before {
	content: "";
	position: absolute;
	left: calc(var(--acs-cnode) / 2);
	top: var(--acs-cnode);
	bottom: 0;
	width: 1px;
	background: linear-gradient(180deg, rgba(255, 181, 71, 0.6), rgba(255, 181, 71, 0.15));
}
.acs-compromise__num {
	position: absolute;
	left: 0;
	top: 0;
	display: grid;
	place-items: center;
	width: var(--acs-cnode);
	height: var(--acs-cnode);
	border: 1px solid rgba(255, 181, 71, 0.55);
	border-radius: 50%;
	background:
		radial-gradient(circle at 50% 30%, rgba(255, 181, 71, 0.22), rgba(255, 181, 71, 0.04) 70%),
		var(--acs-bg-deep);
	box-shadow: 0 0 0 6px rgba(255, 181, 71, 0.05), 0 0 24px rgba(245, 158, 11, 0.16);
	color: var(--acs-amber);
	font-family: var(--acs-mono);
	font-size: 0.875rem;
	font-weight: 600;
	letter-spacing: 0.04em;
}
.acs-compromise__steptitle {
	padding-top: 9px;
	color: var(--acs-text);
	font-size: clamp(1.25rem, 1.1rem + 0.5vw, 1.5rem) !important;
	font-weight: 800 !important;
	letter-spacing: -0.015em;
	line-height: 1.2;
}
.acs-compromise__steptext {
	margin-top: 8px !important;
	color: var(--acs-text-muted);
	font-size: 0.96875rem;
	line-height: 1.6;
}
@media (min-width: 1100px) {
	.acs-compromise__steps {
		grid-auto-flow: column;
		grid-auto-columns: minmax(0, 1fr);
		gap: 24px;
		max-width: none;
	}
	.acs-compromise__step,
	.acs-compromise__step:last-child {
		padding: calc(var(--acs-cnode) + 22px) 0 0;
	}
	.acs-compromise__step:not(:last-child)::before {
		left: calc(var(--acs-cnode) + 10px);
		right: -14px;
		top: calc(var(--acs-cnode) / 2);
		bottom: auto;
		width: auto;
		height: 1px;
		background: linear-gradient(90deg, rgba(255, 181, 71, 0.6), rgba(255, 181, 71, 0.18));
	}
	.acs-compromise__steptitle {
		padding-top: 0;
	}
	/* Titles of one to three lines share a row (subgrid), so every step text starts at the same height. */
	.acs-compromise__steps {
		grid-template-rows: auto auto;
	}
	.acs-compromise__step {
		display: grid;
		grid-row: span 2;
		grid-template-rows: subgrid;
		row-gap: 8px;
	}
	.acs-compromise__step .acs-compromise__steptext {
		margin-top: 0 !important;
	}
}

.acs-compromise__actions,
.acs-compromise > .acs-actions {
	margin-top: clamp(36px, 4.5vw, 56px) !important;
	gap: 14px;
}
.acs-compromise__actions .wp-block-button:not(.is-style-acs-text) .wp-block-button__link {
	min-height: 56px;
	padding: 1rem 1.6rem;
	font-size: 1.0625rem;
}
.acs-compromise__actions .wp-block-button.is-style-acs-incident .wp-block-button__link {
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0 12px 36px rgba(245, 158, 11, 0.26);
}
.acs-compromise > ul.acs-chips {
	margin-top: 28px;
}
/* The hairline spans the band (under the full chip row); the text keeps a 72ch measure. */
.acs-compromise__note {
	max-width: none;
	padding-right: max(0px, calc(100% - 72ch));
	margin-top: 24px !important;
	padding-top: 20px;
	border-top: 1px solid rgba(255, 181, 71, 0.16);
	color: var(--acs-text-subtle);
	font-size: 0.875rem;
	line-height: 1.6;
}
.acs-compromise__note a {
	color: var(--acs-amber);
}
/* Optional uppercase, letter-spaced headline treatment for the campaign hub (h1 variant). */
h1.acs-compromise__title {
	max-width: 22ch;
}

/* Campaign page type tweaks (landing template) */
body.acs-pt-campaign .acs-main--landing > .wp-block-post-content > .acs-section:first-child {
	padding-top: clamp(56px, 8vw, 112px);
}

/* =====================================================================================================================
   19 Tables, checklists, FAQ
   ================================================================================================================== */
figure.wp-block-table.acs-table,
.acs-table {
	margin: 0;
	overflow-x: auto;
	border: 1px solid var(--acs-border);
	border-radius: var(--acs-r);
	background: rgba(10, 16, 34, 0.6);
	-webkit-overflow-scrolling: touch;
	scrollbar-color: var(--acs-border-strong) transparent;
	scrollbar-width: thin;
}
/* No forced minimum width: tables fit their column; below 600px section and prose tables stack (see below). */
.acs-table table {
	width: 100%;
	margin: 0;
	border-collapse: collapse;
	font-size: 0.9375rem;
	line-height: 1.55;
}
.acs-table thead {
	border: 0;
}
.acs-table th,
.acs-table td {
	padding: 14px 18px;
	border: 0;
	border-bottom: 1px solid var(--acs-border);
	text-align: left;
	vertical-align: top;
	/* Core sets word-break: break-word on table cells, which splits words mid-way in narrow columns. */
	word-break: normal;
	overflow-wrap: break-word;
}
@media (max-width: 599.98px) {
	.acs-panel .acs-table th,
	.acs-panel .acs-table td {
		padding: 10px 12px;
	}
	.acs-panel .acs-table table {
		font-size: 0.875rem;
	}
}
.acs-table thead th {
	background: var(--acs-surface-2);
	color: var(--acs-text);
	font-family: var(--acs-mono);
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	white-space: normal;
	border-bottom: 1px solid var(--acs-border-strong);
}
.acs-table tbody tr:nth-child(even) {
	background: rgba(13, 21, 48, 0.55);
}
.acs-table tbody tr:last-child th,
.acs-table tbody tr:last-child td {
	border-bottom: 0;
}
.acs-table tbody th[scope="row"] {
	color: var(--acs-text);
	font-weight: 700;
}
.acs-table td {
	color: var(--acs-text-muted);
}
.acs-table__note {
	margin-top: 14px !important;
	color: var(--acs-text-subtle);
	font-size: 0.875rem;
}
/* Row headers keep a readable width beside wide value columns (two-column aside panels excepted). */
@media (min-width: 600px) {
	.acs-table tbody th[scope="row"] {
		min-width: 11rem;
	}
	.acs-panel .acs-table tbody th[scope="row"] {
		min-width: 0;
	}
}
/*
 * Phones: section and prose tables become one card per row (systemic decision a). The theme's render_block_core/table
 * filter copies each column header into data-label on the body cells and adds explicit ARIA table roles, so the table
 * semantics survive display:block. Each cell prints its column label first; the alt text ( / "") keeps screen readers
 * from hearing the label twice. Row headers print theirs only when the table has .has-row-labels. Aside-panel tables
 * (two columns) are not stacked.
 */
@media (max-width: 599.98px) {
	:is(.acs-section--table, .acs-prose) .acs-table table,
	:is(.acs-section--table, .acs-prose) .acs-table tbody,
	:is(.acs-section--table, .acs-prose) .acs-table tr,
	:is(.acs-section--table, .acs-prose) .acs-table th,
	:is(.acs-section--table, .acs-prose) .acs-table td {
		display: block;
		width: auto;
	}
	:is(.acs-section--table, .acs-prose) .acs-table thead {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip-path: inset(50%);
		white-space: nowrap;
		border: 0;
	}
	:is(.acs-section--table, .acs-prose) .acs-table tbody tr {
		padding: 14px 16px;
		border-bottom: 1px solid var(--acs-border);
	}
	:is(.acs-section--table, .acs-prose) .acs-table tbody tr:last-child {
		border-bottom: 0;
	}
	:is(.acs-section--table, .acs-prose) .acs-table tbody th,
	:is(.acs-section--table, .acs-prose) .acs-table tbody td {
		padding: 0;
		border: 0;
	}
	:is(.acs-section--table, .acs-prose) .acs-table tbody th[scope="row"] {
		margin-bottom: 6px;
		color: var(--acs-text);
	}
	:is(.acs-section--table, .acs-prose) .acs-table tbody td + td,
	:is(.acs-section--table, .acs-prose) .acs-table tbody th + td {
		margin-top: 10px;
	}
	:is(.acs-section--table, .acs-prose) .acs-table tbody td[data-label]::before,
	:is(.acs-section--table, .acs-prose) .has-row-labels tbody th[scope="row"][data-label]::before {
		content: attr(data-label);
		content: attr(data-label) / "";
		display: block;
		margin-bottom: 2px;
		color: var(--acs-text-subtle);
		font: 600 0.6875rem/1.4 var(--acs-mono);
		letter-spacing: 0.1em;
		text-transform: uppercase;
	}
}

/* FAQ (core accordion) */
.wp-block-accordion.acs-faq {
	border-top: 1px solid var(--acs-border);
}
.acs-faq > .wp-block-accordion-item {
	margin: 0;
	border-bottom: 1px solid var(--acs-border);
}
.acs-faq .wp-block-accordion-heading {
	margin: 0;
	font-size: clamp(1.0625rem, 1rem + 0.3vw, 1.1875rem) !important;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: -0.005em;
}
.acs-faq .wp-block-accordion-heading__toggle {
	gap: 16px;
	min-height: 64px;
	padding: 18px 0;
	color: var(--acs-text);
	text-align: left;
	border-radius: 6px;
}
.acs-faq .wp-block-accordion-heading__toggle:hover .wp-block-accordion-heading__toggle-title {
	text-decoration: none;
	color: #fff;
}
.acs-faq .wp-block-accordion-heading__toggle-icon {
	position: relative;
	flex: none;
	width: 30px;
	height: 30px;
	border: 1px solid var(--acs-border-strong);
	border-radius: 50%;
	color: transparent;
	font-size: 0;
	transition: border-color var(--acs-dur-fast) ease, background-color var(--acs-dur-fast) ease;
}
.acs-faq .wp-block-accordion-heading__toggle-icon::before,
.acs-faq .wp-block-accordion-heading__toggle-icon::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 12px;
	height: 1.75px;
	border-radius: 2px;
	background: var(--acs-cyan);
	transform: translate(-50%, -50%);
	transition: transform var(--acs-dur) var(--acs-ease);
}
.acs-faq .wp-block-accordion-heading__toggle-icon::after {
	transform: translate(-50%, -50%) rotate(90deg);
}
.acs-faq .wp-block-accordion-heading__toggle:hover .wp-block-accordion-heading__toggle-icon {
	border-color: var(--acs-cyan-line);
	background: var(--acs-cyan-soft);
}
/* Open state: plus becomes minus (no core 45deg rotation) */
.acs-faq .wp-block-accordion-item.is-open > .wp-block-accordion-heading .wp-block-accordion-heading__toggle-icon {
	transform: none;
}
.acs-faq .wp-block-accordion-heading__toggle[aria-expanded="true"] .wp-block-accordion-heading__toggle-icon {
	border-color: var(--acs-cyan-line);
	background: var(--acs-cyan-soft);
}
.acs-faq .wp-block-accordion-heading__toggle[aria-expanded="true"] .wp-block-accordion-heading__toggle-icon::after {
	transform: translate(-50%, -50%) rotate(0deg);
}
.acs-faq .wp-block-accordion-panel {
	margin: 0;
	padding: 0 52px 22px 0;
	color: var(--acs-text-muted);
	font-size: 1rem;
	line-height: 1.7;
}
.acs-faq .wp-block-accordion-panel > * {
	margin: 0;
}
.acs-faq .wp-block-accordion-panel > * + * {
	margin-top: 0.85em;
}
.acs-faq .wp-block-accordion-panel[hidden] {
	display: none;
}

/* =====================================================================================================================
   20 CTA band and final CTA
   ================================================================================================================== */
section.acs-section--ctaband {
	padding-block: clamp(40px, 5.5vw, 72px);
}
.acs-ctaband {
	position: relative;
	display: grid;
	gap: 24px;
	padding: clamp(24px, 3.2vw, 44px);
	border: 1px solid var(--acs-border-strong);
	border-radius: var(--acs-r-lg);
	background:
		radial-gradient(70% 120% at 100% 50%, rgba(51, 70, 255, 0.16) 0%, rgba(51, 70, 255, 0) 70%),
		linear-gradient(180deg, var(--acs-surface) 0%, var(--acs-bg-raised) 100%);
	overflow: hidden;
}
.acs-ctaband > * {
	margin: 0;
}
.acs-ctaband__copy > * {
	margin: 0;
}
.acs-ctaband__title {
	font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2.125rem) !important;
	line-height: 1.18;
}
.acs-ctaband__copy > p {
	margin-top: 10px;
	color: var(--acs-text-muted);
	max-width: 60ch;
}
.acs-ctaband__copy a {
	color: var(--acs-amber);
	font-weight: 600;
}
.acs-ctaband > .acs-actions {
	margin-top: 0;
}
.acs-tone-incident .acs-ctaband {
	border-color: rgba(255, 181, 71, 0.28);
	background:
		radial-gradient(70% 120% at 100% 50%, rgba(245, 158, 11, 0.12) 0%, rgba(245, 158, 11, 0) 70%),
		linear-gradient(180deg, var(--acs-surface) 0%, var(--acs-bg-raised) 100%);
}
@media (min-width: 960px) {
	.acs-ctaband {
		grid-template-columns: minmax(0, 1fr) auto;
		align-items: center;
		gap: 40px;
	}
	.acs-ctaband > .acs-actions {
		justify-content: flex-end;
	}
}

/* Final CTA: ACS blue to navy, grid texture, glow */
section.acs-section--finalcta {
	padding-block: clamp(56px, 8vw, 112px);
}
.acs-final__panel {
	position: relative;
	isolation: isolate;
	padding: clamp(40px, 6vw, 88px) clamp(22px, 5vw, 72px);
	border: 1px solid rgba(140, 155, 255, 0.34);
	border-radius: clamp(20px, 2vw, 28px);
	background:
		radial-gradient(60% 80% at 50% 0%, rgba(125, 216, 255, 0.18) 0%, rgba(125, 216, 255, 0) 65%),
		linear-gradient(135deg, #3346ff 0%, #1b2789 48%, #0a1022 100%);
	box-shadow: 0 30px 80px rgba(2, 4, 12, 0.55), 0 0 0 1px rgba(2, 4, 12, 0.4);
	text-align: center;
	overflow: hidden;
}
.acs-final__panel::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image:
		linear-gradient(rgba(255, 255, 255, 0.07) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255, 255, 255, 0.07) 1px, transparent 1px);
	background-size: 48px 48px;
	background-position: center;
	-webkit-mask-image: radial-gradient(ellipse 70% 80% at 50% 0%, #000 10%, transparent 75%);
	mask-image: radial-gradient(ellipse 70% 80% at 50% 0%, #000 10%, transparent 75%);
}
.acs-final__panel::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: -40%;
	z-index: -1;
	width: 70%;
	height: 70%;
	transform: translateX(-50%);
	border-radius: 50%;
	background: radial-gradient(closest-side, rgba(44, 196, 240, 0.22), rgba(44, 196, 240, 0));
}
.acs-final__panel > * {
	margin: 0 auto;
}
.acs-final__panel > .acs-eyebrow {
	color: #bfeaff;
}
.acs-final__title {
	max-width: 22ch;
	color: #fff;
}
.acs-final__panel > .acs-lead {
	margin-top: 18px;
	color: #dfe4ff;
}
.acs-final__panel > .acs-actions {
	justify-content: center;
	margin-top: 32px;
}
/* Primary on the blue panel inverts to white for contrast. */
.acs-final__panel .wp-block-button:not([class*="is-style-"]) .wp-block-button__link {
	background-color: #fff;
	color: #0a1240;
	box-shadow: 0 10px 30px rgba(2, 4, 12, 0.35);
}
.acs-final__panel .wp-block-button:not([class*="is-style-"]) .wp-block-button__link:hover,
.acs-final__panel .wp-block-button:not([class*="is-style-"]) .wp-block-button__link:focus-visible {
	background-color: #e8ecff;
	color: #0a1240;
}
.acs-final__panel .wp-block-button.is-style-acs-ghost .wp-block-button__link {
	background-color: rgba(4, 6, 15, 0.22);
	border-color: rgba(255, 255, 255, 0.45);
	color: #fff;
}
.acs-final__panel .wp-block-button.is-style-acs-ghost .wp-block-button__link:hover {
	background-color: rgba(4, 6, 15, 0.4);
	border-color: #fff;
}
/* One filled button per group (systemic decision j): a secondary incident action is an amber outline. Campaign and
   incident pages lead with the filled Call button, which stays filled. */
.acs-final__panel .acs-actions > .wp-block-button.is-style-acs-incident:not(:first-child) .wp-block-button__link {
	background-color: rgba(4, 6, 15, 0.25);
	border: 1px solid rgba(255, 181, 71, 0.6);
	color: #ffd08a;
	box-shadow: none;
}
.acs-final__panel .acs-actions > .wp-block-button.is-style-acs-incident:not(:first-child) .wp-block-button__link:hover,
.acs-final__panel .acs-actions > .wp-block-button.is-style-acs-incident:not(:first-child) .wp-block-button__link:focus-visible {
	background-color: rgba(4, 6, 15, 0.4);
	border-color: var(--acs-amber);
	color: #ffd08a;
	box-shadow: none;
}
.acs-final__panel .wp-block-button.is-style-acs-text .wp-block-button__link {
	color: #fff;
}
.acs-final__panel a:not(.wp-block-button__link) {
	color: #fff;
}

/* =====================================================================================================================
   21 Calendly, team, notices, link list, visuals
   ================================================================================================================== */
.acs-calendly__main .acs-sechead {
	margin-bottom: 0;
}
.acs-calendly__main > .acs-checklist {
	margin-top: 28px;
}
.acs-calendly__alt {
	padding: 14px 16px;
	border: 1px solid rgba(255, 181, 71, 0.24);
	border-radius: 12px;
	background: rgba(255, 181, 71, 0.05);
	color: var(--acs-text-muted);
	font-size: 0.9375rem;
}
.acs-calendly__alt a {
	color: var(--acs-amber);
	font-weight: 700;
}
@media (min-width: 1024px) {
	.wp-block-columns.acs-calendly-layout {
		grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
		align-items: start;
		gap: clamp(32px, 4vw, 64px);
	}
}

/* Plugin acsc/calendly: light surface panel (the Calendly widget is light) */
.acsc-calendly {
	position: relative;
	overflow: hidden;
	border: 1px solid rgba(140, 155, 255, 0.3);
	border-radius: var(--acs-r-lg);
	background: #f5f7ff;
	color: #0a1240;
	box-shadow: var(--acs-shadow-raised);
	color-scheme: light;
}
.acsc-calendly iframe,
.calendly-inline-widget,
.calendly-inline-widget iframe {
	color-scheme: light;
}
.acsc-calendly iframe {
	display: block;
	width: 100%;
	border: 0;
}
.acsc-calendly__fallback {
	display: grid;
	place-items: center;
	min-height: inherit;
	padding: 32px 24px;
	text-align: center;
}
.acsc-calendly__fallback[hidden],
.acsc-calendly.is-ready .acsc-calendly__fallback {
	display: none;
}
/*
 * Until the scheduler iframe has loaded (the plugin adds .is-ready), the panel stays dark like the page, with the
 * fallback text, and only turns light once the calendar paints. While the widget initialises (.is-loaded) the fallback
 * covers the reserved iframe box instead of stacking above it, so the height never changes (no layout shift).
 */
.acsc-calendly:not(.is-ready) {
	border-color: var(--acs-border);
	background: var(--acs-surface);
	color: var(--acs-text);
}
.acsc-calendly.is-loaded:not(.is-ready) .acsc-calendly__fallback {
	position: absolute;
	inset: 0;
	z-index: 1;
	background: var(--acs-surface);
}
.acsc-calendly:not(.is-ready) .acsc-calendly__fallback p {
	color: var(--acs-text-muted);
}
.acsc-calendly:not(.is-ready) .acsc-calendly__fallback a {
	color: var(--acs-link);
}
.acsc-calendly:not(.is-ready) .acsc-calendly__fallback a:hover {
	color: var(--acs-text);
}
.acsc-calendly:not(.is-ready) .acsc-calendly__fallback a:focus-visible {
	outline-color: var(--acs-focus);
}
.acsc-calendly__fallback p {
	max-width: 42ch;
	margin: 0;
	color: #3a4470;
	font-size: 0.9375rem;
	line-height: 1.6;
}
.acsc-calendly__fallback a {
	color: #2233cc;
	font-weight: 700;
}
.acsc-calendly__fallback a:hover {
	color: #0a1240;
}
.acsc-calendly__fallback a:focus-visible {
	outline-color: #2233cc;
}

/* Team grid (plugin) */
.acsc-team {
	margin-top: 0;
}

/* Notices */
section.acs-section--notice {
	padding-block: clamp(28px, 4vw, 48px);
}
/* A notice band sits in the wide wrap: left edge in line with the section heads around it, reading width capped. */
section.acs-section--notice .acs-notice {
	max-width: var(--acs-narrow);
}
.acs-notice {
	display: flex;
	align-items: flex-start;
	gap: 14px;
	padding: 18px 20px;
	border: 1px solid var(--acs-cyan-line);
	border-left-width: 3px;
	border-radius: var(--acs-r);
	background: var(--acs-cyan-soft);
}
.acs-notice > * {
	margin: 0;
}
.acs-notice .acs-icon-wrap {
	width: 28px;
	height: 28px;
	border: 0;
	background: none;
}
.acs-notice .acs-icon-wrap .acs-icon {
	width: 22px;
	height: 22px;
}
.acs-notice p {
	color: var(--acs-text);
	font-size: 0.96875rem;
	line-height: 1.6;
}
.acs-notice.is-amber {
	border-color: rgba(255, 181, 71, 0.42);
	background: rgba(255, 181, 71, 0.07);
}
.acs-notice.is-amber .acs-icon-wrap {
	color: var(--acs-amber);
}
.acs-notice a {
	color: inherit;
	font-weight: 700;
	text-decoration: underline;
}

/* Visuals (theme block acs-cyber/visual): reserve the box so nothing shifts while the SVG paints. */
.acs-visual {
	--acs-visual-ar: 4 / 3;
	display: block;
	width: 100%;
	margin: 0;
	aspect-ratio: var(--acs-visual-ar);
}
.acs-visual > svg {
	display: block;
	width: 100%;
	height: 100%;
}
.acs-visual--telemetry,
.acs-visual--lifecycle,
.acs-visual--scan {
	--acs-visual-ar: 1 / 1;
}
.acs-visual--advisory,
.acs-visual--email,
.acs-visual--incident {
	--acs-visual-ar: 4 / 3;
}
.acs-visual--cloud {
	--acs-visual-ar: 600 / 520;
}
.acs-visual--compliance,
.acs-visual--network {
	--acs-visual-ar: 640 / 520;
}
.acs-visual--identity,
.acs-visual--shield-grid,
.acs-visual--training {
	--acs-visual-ar: 600 / 560;
}

/* =====================================================================================================================
   22 Prose and article
   ================================================================================================================== */
.acs-prose,
.acs-article {
	max-width: 72ch;
	color: var(--acs-text-muted);
	font-size: clamp(1.0625rem, 1.02rem + 0.2vw, 1.125rem);
	line-height: 1.75;
}
.acs-wrap--narrow > .acs-prose {
	max-width: none;
}
.acs-prose > *,
.acs-prose > .wp-block-post-content > *,
.acs-prose .wp-block-post-content > * {
	margin-block: 0;
}
.acs-prose > * + *,
.acs-prose .wp-block-post-content > * + * {
	margin-block-start: 1.15em;
}
.acs-prose .wp-block-post-content {
	max-width: none;
	padding: 0;
	margin: 0;
}
.acs-prose .wp-block-post-content > * {
	max-width: none;
}
.acs-prose h2,
.acs-article h2 {
	margin-block-start: 2.2em !important;
	color: var(--acs-text);
	font-size: clamp(1.5rem, 1.25rem + 1vw, 2rem) !important;
	line-height: 1.2;
	letter-spacing: -0.02em;
}
.acs-prose h3,
.acs-article h3 {
	margin-block-start: 1.8em !important;
	color: var(--acs-text);
	font-size: clamp(1.1875rem, 1.1rem + 0.4vw, 1.375rem) !important;
	line-height: 1.3;
}
.acs-prose h4 {
	margin-block-start: 1.6em !important;
	color: var(--acs-text);
	font-size: 1.0625rem;
}
.acs-prose h2 + *,
.acs-prose h3 + *,
.acs-prose h4 + * {
	margin-block-start: 0.6em !important;
}
/* A subheading straight after a heading still needs a clear step. */
.acs-prose h2 + h3,
.acs-article h2 + h3 {
	margin-block-start: 1em !important;
}
.acs-prose > :first-child,
.acs-prose .wp-block-post-content > :first-child {
	margin-block-start: 0 !important;
}
.acs-prose a:not(.wp-block-button__link) {
	color: var(--acs-link);
	text-decoration: underline;
	text-decoration-color: rgba(154, 166, 255, 0.5);
}
.acs-prose a:not(.wp-block-button__link):hover {
	color: var(--acs-text);
	text-decoration-color: currentColor;
}
.acs-prose strong {
	color: var(--acs-text);
}
.acs-prose ul:not([class*="acs-"]),
.acs-prose ol:not([class*="acs-"]) {
	padding-left: 1.4em;
}
.acs-prose ul:not([class*="acs-"]) > li,
.acs-prose ol:not([class*="acs-"]) > li {
	margin-block: 0.45em;
	padding-left: 0.25em;
}
.acs-prose ul:not([class*="acs-"]) > li::marker {
	color: var(--acs-cyan);
}
.acs-prose ol:not([class*="acs-"]) > li::marker {
	color: var(--acs-cyan);
	font-family: var(--acs-mono);
	font-size: 0.9em;
	font-weight: 600;
}
.acs-prose blockquote,
.acs-prose .wp-block-quote {
	margin-inline: 0;
	padding: 4px 0 4px 22px;
	border-left: 2px solid var(--acs-cyan);
	color: var(--acs-text);
	font-size: 1.125em;
}
.acs-prose blockquote cite {
	display: block;
	margin-top: 8px;
	color: var(--acs-text-subtle);
	font-size: 0.875rem;
	font-style: normal;
}
.acs-prose .acs-table,
.acs-prose figure.wp-block-table {
	margin-block: 1.6em;
}
.acs-prose .acs-notice {
	margin-block: 1.6em;
}
.acs-prose .acs-actions {
	margin-block-start: 1.6em;
}
.acs-prose figcaption,
.acs-prose .wp-element-caption {
	color: var(--acs-text-subtle);
	font-size: 0.875rem;
}
.acs-prose img {
	border-radius: var(--acs-r);
}

/* Article meta row and topic pill */
.acs-article__topic {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}
.acs-article__topic a {
	display: inline-flex;
	align-items: center;
	min-height: 30px;
	padding: 4px 12px;
	border: 1px solid var(--acs-cyan-line);
	border-radius: var(--acs-r-pill);
	background: var(--acs-cyan-soft);
	color: var(--acs-cyan);
	font-family: var(--acs-mono);
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-decoration: none;
	text-transform: uppercase;
}
.acs-article__topic a:hover {
	background: rgba(44, 196, 240, 0.18);
	color: var(--acs-text);
}
.acs-article__topic .wp-block-post-terms__separator {
	display: none;
}
.acs-article__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 18px;
	color: var(--acs-text-subtle);
	font-size: 0.90625rem;
}
.acs-article__meta > * {
	margin: 0;
}
.acs-article__meta > * + *::before {
	content: "";
	display: inline-block;
	width: 4px;
	height: 4px;
	margin-right: 18px;
	border-radius: 50%;
	background: var(--acs-text-subtle);
	vertical-align: middle;
}

/* =====================================================================================================================
   23 Templates: query cards, pagination, search, 404
   ================================================================================================================== */
.acs-postquery > * {
	margin-block: 0;
}
.acs-postgrid,
ul.wp-block-post-template.acs-postgrid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--acs-gap);
	margin: 0;
	padding: 0;
	list-style: none;
}
.acs-postgrid > li {
	display: flex;
	margin: 0;
}
.acs-postgrid > li > .acs-card {
	flex: 1;
}
@media (min-width: 640px) {
	.acs-postgrid,
	ul.wp-block-post-template.acs-postgrid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (min-width: 1024px) {
	.acs-postgrid,
	ul.wp-block-post-template.acs-postgrid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
/* Resource grids (query loops and the plugin's recent-resources block) with counts that do not fill rows of three:
   2 or 4 cards as 2-up, a single card at reading width, and a third card spanning the row in the 2-up range. */
@media (min-width: 1024px) {
	:is(.acs-postgrid, .acsc-resources):has(> :nth-child(4):last-child),
	:is(.acs-postgrid, .acsc-resources):has(> :nth-child(2):last-child) {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	/* ul.wp-block-post-template in the list so this beats the 0,2,1 three-column rule above. */
	:is(ul.wp-block-post-template.acs-postgrid, .acs-postgrid, .acsc-resources):has(> :only-child) {
		grid-template-columns: minmax(0, 1fr);
		max-width: 760px;
	}
}
@media (min-width: 640px) and (max-width: 1023.98px) {
	:is(.acs-postgrid, .acsc-resources) > :nth-child(3):last-child,
	:is(.acs-postgrid, .acsc-resources) > :only-child {
		grid-column: 1 / -1;
	}
}

/* Pagination */
.acs-pagination,
.wp-block-query-pagination.acs-pagination {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin-top: clamp(32px, 4vw, 48px) !important;
}
.acs-pagination .page-numbers,
.acs-pagination .wp-block-query-pagination-previous,
.acs-pagination .wp-block-query-pagination-next {
	display: inline-grid;
	place-items: center;
	min-width: 44px;
	min-height: 44px;
	margin: 0;
	padding: 0 14px;
	border: 1px solid var(--acs-border);
	border-radius: 10px;
	background: rgba(13, 21, 48, 0.5);
	color: var(--acs-text-muted);
	font-size: 0.9375rem;
	font-weight: 600;
	text-decoration: none;
}
.acs-pagination .wp-block-query-pagination-numbers {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}
.acs-pagination a.page-numbers:hover,
.acs-pagination .wp-block-query-pagination-previous:hover,
.acs-pagination .wp-block-query-pagination-next:hover {
	border-color: var(--acs-border-strong);
	color: var(--acs-text);
}
.acs-pagination .page-numbers.current {
	border-color: var(--acs-primary);
	background: var(--acs-primary);
	color: #fff;
}
.acs-pagination .page-numbers.dots {
	border-color: transparent;
	background: none;
}

/* No results */
.acs-noresults {
	max-width: 62ch;
	padding: 24px;
	border: 1px dashed var(--acs-border-strong);
	border-radius: var(--acs-r);
	color: var(--acs-text-muted);
}
.acs-noresults a {
	color: var(--acs-link);
	font-weight: 600;
}

/* Search (core search block) */
.acs-search {
	max-width: 560px;
}
.acs-search .wp-block-search__inside-wrapper {
	display: flex;
	gap: 8px;
	padding: 0;
	border: 0;
	background: none;
}
.acs-search .wp-block-search__input {
	flex: 1 1 auto;
	min-width: 0;
	min-height: 52px;
	margin: 0;
	padding: 0 16px;
	border: 1px solid var(--acs-border-strong);
	border-radius: 10px;
	background: var(--acs-bg-deep);
	color: var(--acs-text);
	font-family: var(--acs-font);
	font-size: 1rem;
	-webkit-appearance: none;
	appearance: none;
}
.acs-search .wp-block-search__input::placeholder {
	color: var(--acs-text-subtle);
	opacity: 1;
}
.acs-search .wp-block-search__input:hover {
	border-color: rgba(140, 155, 255, 0.5);
}
.acs-search .wp-block-search__input:focus-visible {
	border-color: var(--acs-focus);
	outline-offset: 2px;
}
.acs-search .wp-block-search__button {
	flex: none;
	min-height: 52px;
	margin: 0;
	padding: 0 22px;
	border: 0;
	border-radius: 10px;
	background: var(--acs-primary);
	color: #fff;
	font-family: var(--acs-font);
	font-size: 1rem;
	font-weight: 600;
	cursor: pointer;
	transition: background-color var(--acs-dur-fast) ease;
}
.acs-search .wp-block-search__button:hover {
	background: var(--acs-primary-hover);
}

/* 404 */
.acs-main--404 section.acs-section--pagehero.is-simple {
	padding-top: clamp(56px, 8vw, 112px);
	padding-bottom: clamp(48px, 6vw, 88px);
}
/* Search field under a compact hero title (404 and search results): same distance on both templates. */
.acs-section--pagehero.is-simple .acs-search {
	margin-top: 28px !important;
}

/* =====================================================================================================================
   24 Footer
   ================================================================================================================== */
footer.wp-block-template-part {
	margin: 0;
}
.acs-footer {
	position: relative;
	margin: 0;
	padding-top: clamp(56px, 7vw, 88px);
	padding-bottom: calc(24px + env(safe-area-inset-bottom));
	background:
		radial-gradient(50% 60% at 0% 0%, rgba(51, 70, 255, 0.08) 0%, rgba(51, 70, 255, 0) 70%),
		var(--acs-bg-deep);
	border-top: 1px solid var(--acs-border);
	color: var(--acs-text-muted);
	font-size: 0.9375rem;
}
.acs-footer > * {
	margin-block: 0;
}
.acs-footer__inner,
.acs-footer__bottom {
	max-width: var(--acs-wide);
	margin-inline: auto;
}
/* Grid: brand + 4 link columns. <360px: one column. 360-781px: brand on top, links 2-up.
   782-1199px: brand on top, links 4-up. >=1200px: wider brand column, then 4 equal link columns. */
.wp-block-columns.acs-footer__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 36px 24px;
	margin: 0;
}
.wp-block-columns.acs-footer__grid > .wp-block-column {
	min-width: 0;
	margin: 0;
}
.wp-block-columns.acs-footer__grid > .acs-footer__brand {
	grid-column: 1 / -1;
}
.acs-footer__brand > * {
	margin: 0;
}
.acs-footer__brand > * + * {
	margin-top: 16px;
}
/* Tagline and division share one measure (rem, not ch: their font sizes differ; 26.25rem = 46ch of the tagline). */
.acs-footer__tagline {
	max-width: 26.25rem;
	color: var(--acs-text-muted);
	font-size: 0.9375rem;
	line-height: 1.65;
}
.acs-footer__division {
	max-width: 26.25rem;
	color: var(--acs-text-subtle);
	font-size: 0.875rem;
}
.acs-footer .acs-logo__sub {
	display: block;
}
.acsc-phone--footer {
	display: inline-flex;
	flex-direction: column;
	gap: 4px;
	padding: 12px 16px;
	border: 1px solid rgba(255, 181, 71, 0.28);
	border-radius: 12px;
	background: rgba(255, 181, 71, 0.05);
	color: var(--acs-text);
	text-decoration: none;
	transition: border-color var(--acs-dur-fast) ease, background-color var(--acs-dur-fast) ease;
}
.acsc-phone--footer .acsc-phone__label {
	color: var(--acs-amber);
	font-family: var(--acs-mono);
	font-size: 0.6875rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}
.acsc-phone--footer .acsc-phone__number {
	font-size: 1.25rem;
	font-weight: 800;
	letter-spacing: 0.005em;
	white-space: nowrap;
}
.acsc-phone--footer:hover {
	border-color: var(--acs-amber);
	background: rgba(255, 181, 71, 0.1);
	color: #fff;
}
.acs-footer__col > * {
	margin: 0;
}
.acs-footer__heading {
	margin: 0 0 16px !important;
	color: var(--acs-text-subtle);
	font-family: var(--acs-mono);
	font-size: 0.75rem !important;
	font-weight: 600 !important;
	letter-spacing: 0.14em !important;
	line-height: 1.4 !important;
	text-transform: uppercase;
}
ul.acs-footer__links {
	display: grid;
	gap: 2px;
	margin: 0;
	padding: 0;
	list-style: none;
}
ul.acs-footer__links > li {
	margin: 0;
}
/* Inline-block, not inline-flex, so a no-wrap span in a label keeps its spaces; 8px + 8px padding around the 1.35
   line gives the same 36px target as before. */
ul.acs-footer__links a {
	display: inline-block;
	min-height: 36px;
	padding: 8px 0;
	color: var(--acs-text-muted);
	font-size: 0.9375rem;
	line-height: 1.35;
	text-decoration: none;
}
ul.acs-footer__links a:hover {
	color: var(--acs-text);
	text-decoration: underline;
	text-decoration-color: var(--acs-border-strong);
}
@media (min-width: 360px) {
	.wp-block-columns.acs-footer__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 40px 24px;
	}
}
@media (min-width: 782px) {
	.wp-block-columns.acs-footer__grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 44px 32px;
	}
}
@media (min-width: 1200px) {
	.wp-block-columns.acs-footer__grid {
		/* Brand column first, then four equal link columns wide enough for one-line headings. */
		grid-template-columns: minmax(288px, 1fr) repeat(4, minmax(0, 1fr));
		grid-template-rows: auto 1fr;
		gap: 0 24px;
	}
	.wp-block-columns.acs-footer__grid > .acs-footer__brand {
		grid-column: auto;
		grid-row: span 2;
		padding-right: 24px;
	}
	/* Column headings on one line (the longest is "Atlantic Computer Systems"). */
	.acs-footer__heading {
		letter-spacing: 0.08em !important;
		white-space: nowrap;
	}
}
/* Side-by-side link columns share heading and list rows, so the lists line up even when a heading wraps. */
@supports (grid-template-rows: subgrid) {
	@media (min-width: 360px) {
		.wp-block-columns.acs-footer__grid > .acs-footer__col {
			display: grid;
			grid-row: span 2;
			grid-template-rows: subgrid;
			row-gap: 0;
			align-content: start;
		}
		.wp-block-columns.acs-footer__grid > .acs-footer__col > * {
			align-self: start;
		}
	}
}

/* Bottom bar */
.acs-footer > .acs-footer__bottom,
.acs-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 12px 24px;
	margin-top: clamp(40px, 5vw, 64px);
	padding-top: 22px;
	border-top: 1px solid var(--acs-border);
}
.acs-footer__bottom > * {
	margin: 0;
}
.acsc-copyright {
	margin: 0;
	color: var(--acs-text-subtle);
	font-size: 0.84375rem;
}
ul.acs-footer__legal {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0 4px;
	margin: 0;
	padding: 0;
	list-style: none;
}
ul.acs-footer__legal > li {
	display: inline-flex;
	align-items: center;
	margin: 0;
}
@media (max-width: 781.98px) {
	ul.acs-footer__legal {
		gap: 0 20px;
	}
	ul.acs-footer__legal > li + li::before {
		display: none !important;
	}
}
ul.acs-footer__legal > li + li::before {
	content: "";
	width: 3px;
	height: 3px;
	margin: 0 10px 0 6px;
	border-radius: 50%;
	background: var(--acs-text-subtle);
	opacity: 0.7;
}
ul.acs-footer__legal a {
	display: inline-flex;
	align-items: center;
	min-height: 36px;
	color: var(--acs-text-subtle);
	font-size: 0.84375rem;
	text-decoration: none;
}
ul.acs-footer__legal a:hover {
	color: var(--acs-text);
	text-decoration: underline;
}
ul.acs-footer__legal a[href^="http"]:not([href*="acscyber.net"])::after {
	content: "";
	width: 12px;
	height: 12px;
	margin-left: 4px;
	background: currentColor;
	-webkit-mask: var(--acs-mask-ext) center / contain no-repeat;
	mask: var(--acs-mask-ext) center / contain no-repeat;
}

/* =====================================================================================================================
   25 Mobile sticky bar
   ================================================================================================================== */
.acs-stickybar {
	display: none;
}
.acs-stickybar[hidden] {
	display: none !important;
}
@media (max-width: 781.98px) {
	.acs-stickybar {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 90;
		display: block;
		padding: 10px var(--acs-gutter) calc(10px + env(safe-area-inset-bottom));
		background: rgba(6, 10, 23, 0.94);
		-webkit-backdrop-filter: saturate(150%) blur(14px);
		backdrop-filter: saturate(150%) blur(14px);
		border-top: 1px solid var(--acs-border-strong);
		box-shadow: 0 -12px 32px rgba(2, 4, 12, 0.5);
		transform: translateY(110%);
		transition: transform var(--acs-dur) var(--acs-ease);
	}
	.acs-stickybar.is-visible {
		transform: none;
	}
	.acs-stickybar__msg {
		display: none;
		margin: 0 52px 8px 0;
		color: var(--acs-text-muted);
		font-size: 0.84375rem;
		font-weight: 600;
		line-height: 1.3;
	}
	.acs-stickybar__actions {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 8px;
	}
	.acs-stickybar__btn {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		min-height: 48px;
		padding: 0 10px;
		border: 1px solid var(--acs-amber-line);
		border-radius: 10px;
		background: var(--acs-amber-soft);
		color: var(--acs-amber);
		font-size: 0.9375rem;
		font-weight: 700;
		line-height: 1.15;
		text-align: center;
		text-decoration: none;
		white-space: nowrap;
	}
	.acs-stickybar__btn.acs-book {
		border-color: var(--acs-border-strong);
		background: rgba(13, 21, 48, 0.7);
		color: var(--acs-text);
	}
	.acs-stickybar__btn--primary.acs-book {
		border-color: var(--acs-primary);
		background: var(--acs-primary);
		color: #fff;
	}
	.acs-stickybar__btn--primary:not(.acs-book) {
		border-color: var(--acs-amber-strong);
		background: var(--acs-amber-strong);
		color: var(--acs-on-amber);
	}
	/* Below 480px the dismiss circle floats above the bar; its 44px hit area ends where the buttons start. */
	.acs-stickybar__close {
		position: absolute;
		top: -34px;
		right: calc(var(--acs-gutter) - 6px);
		display: grid;
		place-items: center;
		width: 44px;
		height: 44px;
		margin: 0;
		padding: 0;
		border: 0;
		border-radius: 50%;
		background: transparent;
		color: var(--acs-text-muted);
		cursor: pointer;
	}
	.acs-stickybar__close::before {
		content: "";
		position: absolute;
		inset: 8px;
		z-index: -1;
		border: 1px solid var(--acs-border-strong);
		border-radius: 50%;
		background: var(--acs-surface);
		box-shadow: 0 4px 12px rgba(2, 4, 12, 0.5);
	}
	.acs-stickybar__close:hover {
		color: var(--acs-text);
	}
	.acs-stickybar__close .acs-icon-wrap {
		width: auto;
		height: auto;
		border: 0;
		background: none;
		color: inherit;
	}
	.acs-stickybar__close .acs-icon,
	.acs-stickybar__close svg {
		width: 14px;
		height: 14px;
	}
	/* No body padding reserve: the script hides the bar while the footer is in view, so nothing is ever covered at the
	   end of the page (a reserve only painted a strip of page background under the footer). */
}
@media (min-width: 480px) and (max-width: 781.98px) {
	/* The message row is at least as tall as the dismiss hit area, so the buttons start below it. */
	.acs-stickybar__msg {
		display: flex;
		align-items: center;
		min-height: 34px;
	}
	.acs-stickybar__close {
		top: 4px;
	}
	.acs-stickybar__close::before {
		box-shadow: none;
	}
}

/* =====================================================================================================================
   26 Plugin UI: privacy dialog, Calendly
   ================================================================================================================== */
dialog.acsc-privacy,
.acsc-privacy {
	width: min(520px, calc(100vw - 32px));
	max-height: calc(100dvh - 32px);
	margin: auto;
	padding: clamp(22px, 4vw, 32px);
	overflow: auto;
	border: 1px solid var(--acs-border-strong);
	border-radius: var(--acs-r-lg);
	background:
		radial-gradient(90% 60% at 100% 0%, rgba(51, 70, 255, 0.14) 0%, rgba(51, 70, 255, 0) 70%),
		var(--acs-surface);
	color: var(--acs-text);
	box-shadow: 0 30px 80px rgba(0, 0, 0, 0.6);
	font-family: var(--acs-font);
}
.acsc-privacy::backdrop {
	background: rgba(2, 4, 12, 0.72);
	-webkit-backdrop-filter: blur(4px);
	backdrop-filter: blur(4px);
}
.acsc-privacy > * {
	margin: 0;
}
.acsc-privacy > * + * {
	margin-top: 16px;
}
.acsc-privacy h2,
#acsc-privacy-title {
	margin: 0;
	font-size: 1.375rem;
	line-height: 1.25;
}
.acsc-privacy p {
	color: var(--acs-text-muted);
	font-size: 0.9375rem;
	line-height: 1.6;
}
.acsc-privacy a {
	color: var(--acs-link);
}
.acsc-privacy__gpc {
	padding: 12px 14px;
	border: 1px solid var(--acs-cyan-line);
	border-radius: 10px;
	background: var(--acs-cyan-soft);
	color: var(--acs-text) !important;
}
.acsc-privacy__gpc[hidden],
.acsc-privacy__status:empty {
	display: none;
}
ul.acsc-privacy__list {
	display: grid;
	gap: 8px;
	padding: 0;
	list-style: none;
}
ul.acsc-privacy__list > li {
	position: relative;
	margin: 0;
	padding-left: 18px;
	color: var(--acs-text-muted);
	font-size: 0.875rem;
	line-height: 1.55;
}
ul.acsc-privacy__list > li::before {
	content: "";
	position: absolute;
	left: 2px;
	top: 0.6em;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--acs-cyan);
}
.acsc-privacy__note {
	font-size: 0.875rem !important;
}
.acsc-privacy__status {
	color: var(--acs-success) !important;
	font-weight: 600;
}
.acsc-switch[aria-disabled="true"] {
	cursor: not-allowed;
	opacity: 0.6;
}

/* Switch */
.acsc-switch {
	display: flex;
	align-items: center;
	gap: 14px;
	width: 100%;
	min-height: 56px;
	padding: 12px 14px;
	border: 1px solid var(--acs-border-strong);
	border-radius: 12px;
	background: var(--acs-bg-raised);
	color: var(--acs-text);
	font-family: var(--acs-font);
	font-size: 0.9375rem;
	font-weight: 600;
	text-align: left;
	cursor: pointer;
}
.acsc-switch:hover {
	border-color: rgba(140, 155, 255, 0.5);
}
.acsc-switch__track {
	position: relative;
	flex: none;
	width: 46px;
	height: 26px;
	border: 1px solid var(--acs-border-strong);
	border-radius: var(--acs-r-pill);
	background: #2a3358;
	transition: background-color var(--acs-dur-fast) ease, border-color var(--acs-dur-fast) ease;
}
.acsc-switch__track::after {
	content: "";
	position: absolute;
	top: 2px;
	left: 2px;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	background: #c9cfec;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
	transition: transform var(--acs-dur-fast) var(--acs-ease), background-color var(--acs-dur-fast) ease;
}
.acsc-switch[aria-checked="true"] .acsc-switch__track {
	border-color: var(--acs-cyan);
	background: #1a8fb5;
}
.acsc-switch[aria-checked="true"] .acsc-switch__track::after {
	transform: translateX(20px);
	background: #fff;
}
.acsc-switch__label {
	flex: 1;
}
.acsc-switch__label::after {
	content: "Off";
	float: right;
	margin-left: 12px;
	color: var(--acs-text-subtle);
	font-family: var(--acs-mono);
	font-size: 0.75rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.acsc-switch[aria-checked="true"] .acsc-switch__label::after {
	content: "On";
	color: var(--acs-cyan);
}

.acsc-privacy__actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: 10px;
	padding-top: 8px;
}
.acsc-privacy__save,
.acsc-privacy__close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 46px;
	padding: 0 20px;
	border: 1px solid transparent;
	border-radius: 10px;
	font-family: var(--acs-font);
	font-size: 0.9375rem;
	font-weight: 600;
	cursor: pointer;
	transition: background-color var(--acs-dur-fast) ease, border-color var(--acs-dur-fast) ease;
}
.acsc-privacy__save {
	background: var(--acs-primary);
	color: #fff;
}
.acsc-privacy__save:hover {
	background: var(--acs-primary-hover);
}
.acsc-privacy__close {
	border-color: var(--acs-border-strong);
	background: transparent;
	color: var(--acs-text);
}
.acsc-privacy__close:hover {
	background: var(--acs-surface-2);
}
@media (max-width: 479.98px) {
	.acsc-privacy__actions > * {
		flex: 1 1 100%;
	}
}

/* Calendly popup (injected by Calendly; close button injected by the plugin funnel script) */
.calendly-overlay iframe,
.calendly-popup iframe {
	color-scheme: light;
}
.acsc-cal-close {
	position: fixed;
	top: max(12px, env(safe-area-inset-top));
	right: max(12px, env(safe-area-inset-right));
	z-index: 2147483647;
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	margin: 0;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.35);
	border-radius: 50%;
	background: rgba(4, 6, 15, 0.88);
	color: #fff;
	font-size: 22px;
	line-height: 1;
	cursor: pointer;
	box-shadow: 0 6px 20px rgba(0, 0, 0, 0.45);
}
.acsc-cal-close:hover {
	background: #000;
	border-color: #fff;
}
.acsc-cal-close svg {
	width: 18px;
	height: 18px;
}
.calendly-overlay .calendly-popup-close {
	opacity: 1 !important;
	visibility: visible !important;
}

/* =====================================================================================================================
   27 Motion and reduced motion
   ================================================================================================================== */
/* Reveal on scroll: the script adds .acs-reveal-init only to elements that start below the fold. Motion only, no fade:
   content is always fully visible (never blank for crawlers or fast scrolling, and contrast is never reduced). */
.acs-reveal-init {
	transform: translateY(16px);
	transition:
		transform var(--acs-dur-slow) var(--acs-ease),
		border-color var(--acs-dur-fast) ease,
		box-shadow var(--acs-dur-fast) ease;
}
.acs-reveal-init.is-in {
	transform: none;
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		transition-delay: 0s !important;
		scroll-behavior: auto !important;
	}
	.acs-reveal-init {
		transform: none;
	}
	.acs-card.has-link:hover,
	.acs-card.has-link:focus-within,
	.acs-card--resource:hover,
	.acs-card--resource:focus-within {
		transform: none;
	}
	.acs-stickybar {
		transform: none;
	}
}

/* =====================================================================================================================
   28 Print
   ================================================================================================================== */
@media print {
	header.wp-block-template-part {
		position: static;
	}
	header.wp-block-template-part::before,
	.acs-topstrip,
	.acs-stickybar,
	.acsc-privacy,
	.acs-nav,
	.acs-header__actions,
	.acs-visual {
		display: none !important;
	}
	body,
	.acs-section,
	.acs-footer {
		background: #fff !important;
		color: #000 !important;
	}
	.acs-section *,
	.acs-footer * {
		color: #000 !important;
		box-shadow: none !important;
	}
}
