/*
 * RST Cloud design system (marketing redesign, 2026).
 * Design tokens + reusable component styles. Content lives in Beaver Builder
 * modules; those modules reference these classes via their Advanced > Class
 * field, so copy stays editable in the builder while styling stays in code.
 *
 * Tokens per website-plan.md Step 5a. Confirmed values:
 *   navy #1E1F4B · blue #235FE8 · slate #5F6682 · verdict-green #1FA97A
 *   agent-cyan #22C6D2 · mono = JetBrains Mono
 */

:root {
	--rst-navy: #1E1F4B;
	--rst-blue: #235FE8;
	--rst-slate: #5F6682;
	--rst-good: #1FA97A;
	--rst-agent: #22C6D2;
	--rst-line: #e6e8f2;
	--rst-bg: #f7f8fc;
	--rst-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
}

/* ============================================================
   How We Score — page components
   ============================================================ */

/* Eyebrow (rich text) */
.rst-hws-eyebrow .fl-rich-text p {
	font-family: var(--rst-mono);
	text-transform: uppercase;
	letter-spacing: .14em;
	font-size: 12px;
	font-weight: 600;
	color: var(--rst-blue);
	margin: 0;
}

/* Page title (heading module, tag h1) */
.rst-hws-title .fl-heading,
.rst-hws-title .fl-heading .fl-heading-text {
	font-size: clamp(30px, 4.6vw, 44px) !important;
	line-height: 1.12 !important;
	font-weight: 800 !important;
	color: var(--rst-navy) !important;
	letter-spacing: -.01em;
}

/* Lead paragraph (rich text) */
.rst-hws-lead .fl-rich-text p {
	font-size: 18px;
	line-height: 1.6;
	color: var(--rst-slate);
	margin: 0;
}
.rst-hws-lead .fl-rich-text strong {
	color: var(--rst-navy);
	font-weight: 600;
}

/* ---- signature pipeline diagram (HTML module) ---- */
.rst-hws-pipe-label {
	font-family: var(--rst-mono);
	text-transform: uppercase;
	letter-spacing: .12em;
	font-size: 11px;
	font-weight: 600;
	color: var(--rst-slate);
	margin: 0 0 18px;
	text-align: center;
}
.rst-hws-pipe {
	display: flex;
	align-items: stretch;
	justify-content: center;
	background: var(--rst-navy);
	border-radius: 18px;
	padding: 30px 26px;
	box-shadow: 0 18px 40px rgba(30, 31, 75, .18);
	overflow: hidden;
}
.rst-hws-pipe * { box-sizing: border-box; }
.rst-hws-pipe__node {
	flex: 1 1 0;
	display: flex;
	flex-direction: column;
	justify-content: center;
	text-align: center;
	padding: 4px 10px;
	min-width: 0;
}
.rst-hws-pipe__io-cap {
	font-family: var(--rst-mono);
	text-transform: uppercase;
	letter-spacing: .1em;
	font-size: 10px;
	color: #9aa0c4;
	margin: 0 0 10px;
}
.rst-hws-pipe__chip {
	display: inline-block;
	font-family: var(--rst-mono);
	font-size: 13px;
	color: #cfe0ff;
	background: rgba(255, 255, 255, .06);
	border: 1px solid rgba(255, 255, 255, .16);
	border-radius: 8px;
	padding: 8px 10px;
	word-break: break-all;
}
.rst-hws-pipe__layer {
	border-radius: 12px;
	background: rgba(255, 255, 255, .04);
	border: 1px solid rgba(255, 255, 255, .10);
	padding: 16px 12px;
	height: 100%;
	display: flex;
	flex-direction: column;
	justify-content: center;
}
.rst-hws-pipe__num {
	font-family: var(--rst-mono);
	font-size: 13px;
	font-weight: 700;
	color: var(--rst-agent);
	margin: 0 0 8px;
}
.rst-hws-pipe__layer h3 {
	font-size: 15px;
	line-height: 1.25;
	font-weight: 700;
	color: #fff;
	margin: 0 0 6px;
}
.rst-hws-pipe__layer p {
	font-size: 12px;
	line-height: 1.45;
	color: #b9bedd;
	margin: 0;
}
.rst-hws-pipe__arrow {
	flex: 0 0 26px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--rst-blue);
}
.rst-hws-pipe__arrow svg { width: 18px; height: 18px; }
.rst-hws-pipe__gauge {
	width: 74px;
	height: 74px;
	border-radius: 50%;
	margin: 0 auto 10px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--rst-mono);
	font-weight: 700;
	font-size: 24px;
	color: #fff;
	background: conic-gradient(var(--rst-good) 0 82%, rgba(255, 255, 255, .12) 82% 100%);
	position: relative;
}
.rst-hws-pipe__gauge::before {
	content: "";
	position: absolute;
	inset: 7px;
	border-radius: 50%;
	background: var(--rst-navy);
}
.rst-hws-pipe__gauge span { position: relative; z-index: 1; }
.rst-hws-pipe__out-lbl { font-size: 12px; color: var(--rst-good); font-weight: 600; }

@media (max-width: 820px) {
	.rst-hws-pipe { flex-direction: column; padding: 24px 18px; }
	.rst-hws-pipe__arrow { flex: 0 0 30px; transform: rotate(90deg); }
	.rst-hws-pipe__node { padding: 12px 4px; }
	.rst-hws-pipe__layer { height: auto; }
}

/* ---- three layer detail cards (rich text modules) ----
   Numbers are auto-generated with a CSS counter, so editors only touch the
   heading + paragraph text in the builder. Counter is reset on the column
   (class rst-hws-cards) and incremented per card. */
.rst-hws-cards { counter-reset: hwscard; }
.rst-hws-card .fl-rich-text {
	position: relative;
	background: #fff;
	border: 1px solid var(--rst-line);
	border-left: 4px solid var(--rst-blue);
	border-radius: 14px;
	padding: 24px 28px 24px 92px;
	box-shadow: 0 8px 24px rgba(71, 95, 107, .06);
}
.rst-hws-card .fl-rich-text::before {
	counter-increment: hwscard;
	content: counter(hwscard, decimal-leading-zero);
	position: absolute;
	left: 24px;
	top: 24px;
	width: 52px;
	height: 52px;
	font-family: var(--rst-mono);
	font-size: 19px;
	font-weight: 700;
	color: var(--rst-blue);
	background: var(--rst-bg);
	border-radius: 10px;
	display: flex;
	align-items: center;
	justify-content: center;
}
.rst-hws-card .fl-rich-text h2 {
	font-size: 20px;
	line-height: 1.25;
	font-weight: 700;
	color: var(--rst-navy);
	margin: 0 0 8px;
}
.rst-hws-card .fl-rich-text p {
	font-size: 15px;
	line-height: 1.62;
	color: var(--rst-slate);
	margin: 0;
}
.rst-hws-card .fl-rich-text em { color: var(--rst-navy); font-style: italic; }

@media (max-width: 600px) {
	.rst-hws-card .fl-rich-text { padding: 74px 22px 22px; }
	.rst-hws-card .fl-rich-text::before { top: 20px; left: 22px; }
}

/* ---- callout (rich text) ---- */
.rst-hws-callout .fl-rich-text {
	background: var(--rst-bg);
	border: 1px solid var(--rst-line);
	border-radius: 14px;
	padding: 26px 30px;
}
.rst-hws-callout .fl-rich-text p {
	font-size: 16px;
	line-height: 1.6;
	color: var(--rst-navy);
	margin: 0;
}
.rst-hws-callout .fl-rich-text cite,
.rst-hws-callout .fl-rich-text .rst-cite {
	display: block;
	margin-top: 12px;
	font-size: 13px;
	color: var(--rst-slate);
	font-family: var(--rst-mono);
	font-style: normal;
}

/* ---- CTA band (rich text) ---- */
.rst-hws-cta .fl-rich-text {
	background: linear-gradient(120deg, #f2f5ff, #eef7f3);
	border: 1px solid var(--rst-line);
	border-radius: 16px;
	padding: 28px 30px;
}
.rst-hws-cta .fl-rich-text p {
	font-size: 16px;
	line-height: 1.6;
	color: var(--rst-navy);
}
.rst-hws-cta .fl-rich-text a:not(.rst-hws-btn) {
	color: var(--rst-blue);
	font-weight: 600;
}

/* ---- reusable buttons ---- */
.rst-hws-btn {
	display: inline-block;
	font-weight: 600;
	font-size: 15px;
	text-decoration: none;
	padding: 12px 22px;
	border-radius: 10px;
	margin: 6px 12px 0 0;
	transition: transform .15s ease, box-shadow .15s ease;
}
.rst-hws-btn--p {
	background: var(--rst-blue);
	color: #fff !important;
	box-shadow: 0 8px 18px rgba(35, 95, 232, .25);
}
.rst-hws-btn--s {
	background: #fff;
	color: var(--rst-navy) !important;
	border: 1px solid var(--rst-line);
}
.rst-hws-btn:hover { transform: translateY(-2px); box-shadow: 0 12px 24px rgba(35, 95, 232, .28); }

/* ============================================================
   Homepage — solution-first components
   ============================================================ */

/* Generic buttons (shared across marketing pages) */
.rst-btn {
	display: inline-block; font-weight: 600; font-size: 15px; text-decoration: none;
	padding: 13px 24px; border-radius: 10px; margin: 6px 14px 0 0;
	transition: transform .15s ease, box-shadow .15s ease;
}
.rst-btn--p { background: var(--rst-blue); color: #fff !important; box-shadow: 0 8px 18px rgba(35,95,232,.25); }
.rst-btn--s { background: #fff; color: var(--rst-navy) !important; border: 1px solid var(--rst-line); }
.rst-btn:hover { transform: translateY(-2px); box-shadow: 0 12px 24px rgba(35,95,232,.28); }

/* Hero */
.rst-home-eyebrow .fl-rich-text p {
	font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .14em;
	font-size: 13px; font-weight: 600; color: var(--rst-blue); margin: 0;
}
.rst-home-h1 .fl-heading, .rst-home-h1 .fl-heading .fl-heading-text {
	font-size: clamp(32px, 5vw, 52px) !important; line-height: 1.08 !important;
	font-weight: 800 !important; color: var(--rst-navy) !important; letter-spacing: -.015em;
}
.rst-home-sub .fl-rich-text p {
	font-size: 20px; line-height: 1.55; color: var(--rst-slate); margin: 0;
}
.rst-home-sub .fl-rich-text strong { color: var(--rst-navy); font-weight: 600; }

/* Shared section header */
.rst-sec-eyebrow .fl-rich-text p {
	font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .12em;
	font-size: 12px; font-weight: 600; color: var(--rst-blue); margin: 0; text-align: center;
}
.rst-sec-h2 .fl-heading, .rst-sec-h2 .fl-heading .fl-heading-text {
	font-size: clamp(26px, 3.4vw, 36px) !important; line-height: 1.2 !important;
	font-weight: 800 !important; color: var(--rst-navy) !important; text-align: center;
}
.rst-sec-intro .fl-rich-text p {
	font-size: 17px; line-height: 1.6; color: var(--rst-slate); text-align: center;
	margin: 0 auto; max-width: 720px;
}

/* "The shift" 3-up */
.rst-shift .fl-col-content { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 20px; }
.rst-shift .fl-module { margin: 0 !important; width: 100%; }
.rst-shift .fl-rich-text {
	background: #fff; border: 1px solid var(--rst-line); border-radius: 14px;
	padding: 24px 26px; height: 100%; box-shadow: 0 8px 24px rgba(71,95,107,.06);
}
.rst-shift .fl-rich-text p { font-size: 16px; line-height: 1.55; color: var(--rst-navy); margin: 0; }
.rst-shift .fl-rich-text .rst-num {
	display: block; font-family: var(--rst-mono); font-size: 13px; font-weight: 700;
	color: var(--rst-agent); margin: 0 0 10px;
}

/* Global-perspective strip */
.rst-globe .fl-rich-text p {
	font-size: 16px; line-height: 1.5; color: var(--rst-navy); text-align: center;
	background: var(--rst-bg); border: 1px solid var(--rst-line); border-radius: 12px;
	padding: 18px 24px; margin: 0;
}
.rst-globe .fl-rich-text strong { color: var(--rst-blue); font-weight: 700; }

/* The layer diagram (HTML module) */
.rst-layer { background: var(--rst-navy); border-radius: 20px; padding: 34px 30px; box-shadow: 0 20px 44px rgba(30,31,75,.2); }
.rst-layer * { box-sizing: border-box; }
.rst-layer__cap {
	font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .12em;
	font-size: 11px; color: #9aa0c4; text-align: center; margin: 0 0 14px;
}
.rst-layer__chips { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; }
.rst-layer__chip {
	font-family: var(--rst-mono); font-size: 13px; color: #cfe0ff;
	background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.16);
	border-radius: 8px; padding: 9px 14px;
}
.rst-layer__chip--agent { color: #bff3f7; border-color: rgba(34,198,210,.55); }
.rst-layer__conn { display: flex; justify-content: center; color: var(--rst-agent); margin: 10px 0; }
.rst-layer__conn svg { width: 22px; height: 22px; }
.rst-layer__core {
	background: linear-gradient(120deg, var(--rst-blue), #3a6ef0); border-radius: 14px;
	padding: 24px; text-align: center; box-shadow: 0 10px 24px rgba(35,95,232,.3);
}
.rst-layer__core h3 { font-size: 21px; font-weight: 800; color: #fff; margin: 0 0 12px; }
.rst-layer__core-tags { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.rst-layer__core-tag {
	font-family: var(--rst-mono); font-size: 12px; color: #fff;
	background: rgba(255,255,255,.18); border-radius: 999px; padding: 6px 13px;
}

/* Building blocks grid (editable rich-text cards, CSS-gridded) */
.rst-blocks .fl-col-content { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 20px; }
.rst-blocks .fl-module { margin: 0 !important; width: 100%; }
.rst-blocks .fl-rich-text {
	background: #fff; border: 1px solid var(--rst-line); border-radius: 14px;
	padding: 22px 22px 20px; height: 100%; box-shadow: 0 8px 24px rgba(71,95,107,.06);
	transition: transform .18s ease, box-shadow .18s ease;
}
.rst-blocks .fl-rich-text:hover { transform: translateY(-4px); box-shadow: 0 16px 32px rgba(71,95,107,.14); }
.rst-blocks .fl-rich-text .rst-role {
	display: block; font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .08em;
	font-size: 11px; font-weight: 700; color: var(--rst-blue); margin: 0 0 8px;
}
.rst-blocks .fl-rich-text h3 { font-size: 18px; font-weight: 700; color: var(--rst-navy); margin: 0 0 8px; }
.rst-blocks .fl-rich-text p { font-size: 14px; line-height: 1.5; color: var(--rst-slate); margin: 0 0 14px; }
.rst-blocks .fl-rich-text a { font-family: var(--rst-mono); font-size: 12px; font-weight: 600; color: var(--rst-blue); text-decoration: none; }
.rst-blocks .fl-rich-text a:hover { text-decoration: underline; }

/* Three audiences */
.rst-aud .fl-col-content { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 20px; }
.rst-aud .fl-module { margin: 0 !important; width: 100%; }
.rst-aud .fl-rich-text { border: 1px solid var(--rst-line); border-radius: 14px; padding: 26px; height: 100%; background: #fff; }
.rst-aud .fl-rich-text h3 { font-size: 18px; font-weight: 700; color: var(--rst-navy); margin: 0 0 6px; }
.rst-aud .fl-rich-text .rst-aud-tag {
	display: block; font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .08em;
	font-size: 11px; font-weight: 700; margin: 0 0 12px;
}
.rst-aud .fl-rich-text p { font-size: 14px; line-height: 1.55; color: var(--rst-slate); margin: 0; }
.rst-aud__humans .fl-rich-text .rst-aud-tag { color: var(--rst-blue); }
.rst-aud__machines .fl-rich-text .rst-aud-tag { color: var(--rst-good); }
.rst-aud__agents .fl-rich-text .rst-aud-tag { color: var(--rst-agent); }
.rst-aud__agents .fl-rich-text { border-color: rgba(34,198,210,.55); }

/* Multi-vendor strip */
.rst-mv .fl-rich-text {
	background: linear-gradient(120deg, #1E1F4B, #2b2f6b); border-radius: 18px;
	padding: 40px; text-align: center;
}
.rst-mv .fl-rich-text h2 { font-size: clamp(22px, 3vw, 30px); font-weight: 800; color: #fff; margin: 0 0 12px; }
.rst-mv .fl-rich-text p { font-size: 16px; line-height: 1.55; color: #c9cdec; margin: 0 auto 22px; max-width: 700px; }
.rst-mv .fl-rich-text .rst-btn--p { background: #fff; color: var(--rst-navy) !important; }
.rst-mv .fl-rich-text .rst-btn--p:hover { box-shadow: 0 12px 24px rgba(0,0,0,.25); }

/* Homepage JSON block → navy terminal card */
.rst-json-card { background: var(--rst-navy) !important; border-radius: 14px !important; padding: 22px 24px !important; overflow: auto; }
.rst-json-card, .rst-json-card * { font-family: var(--rst-mono) !important; }
.rst-json-card pre, .rst-json-card code { color: #cfe0ff; font-size: 13px; line-height: 1.6; background: transparent; margin: 0; white-space: pre; }

/* ============================================================
   Product pages — strapline, distinction, pipeline band
   ============================================================ */

/* Role strapline (rich text, right under the hero) */
.rst-prod-strap .fl-rich-text {
	background: var(--rst-bg); border-top: 1px solid var(--rst-line);
	border-bottom: 1px solid var(--rst-line); padding: 16px 20px;
}
.rst-prod-strap .fl-rich-text p { text-align: center; margin: 0; font-size: 16px; color: var(--rst-navy); }
.rst-prod-strap .rst-role {
	font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .08em;
	font-size: 12px; font-weight: 700; color: var(--rst-blue);
}

/* Distinction + product-specific section (rich text) */
.rst-distinct .fl-rich-text {
	background: #fff; border: 1px solid var(--rst-line); border-left: 4px solid var(--rst-blue);
	border-radius: 14px; padding: 26px 30px; box-shadow: 0 8px 24px rgba(71,95,107,.06);
}
.rst-distinct .fl-rich-text h2 { font-size: 22px; color: var(--rst-navy); font-weight: 800; margin: 0 0 12px; }
.rst-distinct .fl-rich-text p { font-size: 15px; line-height: 1.62; color: var(--rst-slate); margin: 0 0 10px; }
.rst-distinct .fl-rich-text > p:last-child { margin-bottom: 0; }
.rst-distinct .fl-rich-text a { color: var(--rst-blue); font-weight: 600; font-family: var(--rst-mono); font-size: 13px; text-decoration: none; }
.rst-distinct .fl-rich-text a:hover { text-decoration: underline; }
/* The colour is declared here, not left to inherit. This block always sits
   on a light --rst-bg panel, but the grad-band inversion sets
   `.rst-band--grad .fl-rich-text { color:#fff }`, and its restoration rules
   only cover p / h2 / li / a / code. Bare text nodes between the <code>
   chips inherited that white and rendered at 1.06:1 on the light panel —
   effectively invisible. */
.rst-distinct .rst-artifacts {
	margin-top: 16px; background: var(--rst-bg); border-radius: 10px;
	padding: 16px 18px; color: var(--rst-slate); font-size: 14px; line-height: 1.7;
}
.rst-distinct .rst-artifacts .rst-role {
	display: block; font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .08em;
	/* --rst-good (#1FA97A) measures 2.82:1 on this light panel — fine as a
	   fill, not as 11px text. #157A58 is the darker verdict green already
	   used for the same reason on Noise Control (5.31:1). */
	font-size: 11px; font-weight: 700; color: #157A58; margin: 0 0 10px;
}
.rst-distinct .rst-artifacts code {
	font-family: var(--rst-mono); font-size: 12px; background: #fff; border: 1px solid var(--rst-line);
	border-radius: 6px; padding: 4px 9px; color: var(--rst-navy); margin: 0 6px 6px 0; display: inline-block;
}

/* Key Benefits lead-in — carries the scale figures above the legacy table */
.rst-kb__lead {
	font-size: 15.5px; line-height: 1.65; color: var(--rst-slate);
	max-width: 78ch; margin: 0 0 22px;
}
.rst-kb__lead strong { color: var(--rst-navy); font-weight: 700; }

/* CTI Assistant config snippet (navy terminal card) */
.rst-snippet { background: var(--rst-navy); border-radius: 12px; padding: 18px 20px; overflow: auto; margin-top: 16px; }
.rst-snippet pre, .rst-snippet code { font-family: var(--rst-mono); color: #cfe0ff; font-size: 13px; line-height: 1.7; background: transparent; margin: 0; white-space: pre; }
.rst-snippet .rst-snippet-note { display: block; color: var(--rst-agent); font-family: var(--rst-mono); font-size: 11px; margin-top: 10px; }

/* "One pipeline" cross-link band (HTML module) */
.rst-pipeline { background: var(--rst-navy); border-radius: 18px; padding: 26px 22px; box-shadow: 0 18px 40px rgba(30,31,75,.18); }
.rst-pipeline * { box-sizing: border-box; }
.rst-pipeline__title { font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .12em; font-size: 11px; color: #9aa0c4; text-align: center; margin: 0 0 18px; }
.rst-pipeline__row { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; align-items: stretch; }
.rst-pipeline__item {
	flex: 1 1 160px; max-width: 200px; background: rgba(255,255,255,.04);
	border: 1px solid rgba(255,255,255,.10); border-radius: 12px; padding: 16px 14px;
	text-decoration: none; display: block; transition: background .15s ease, transform .15s ease;
}
.rst-pipeline__item:hover { background: rgba(255,255,255,.09); transform: translateY(-3px); }
.rst-pipeline__item--current { border-color: var(--rst-agent); background: rgba(34,198,210,.10); }
.rst-pipeline__role { display: block; font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .06em; font-size: 10px; font-weight: 700; color: var(--rst-agent); margin: 0 0 6px; }
.rst-pipeline__name { display: block; font-size: 14px; font-weight: 700; color: #fff; }
@media (max-width: 700px) { .rst-pipeline__item { flex: 1 1 100%; max-width: none; } }

/* ============================================================
   Homepage v2 — hero visual, card icons
   ============================================================ */

/* Hero two-column visual (terminal card) */
.rst-hero-viz { background: var(--rst-navy); border-radius: 16px; overflow: hidden; box-shadow: 0 20px 44px rgba(30,31,75,.22); }
.rst-hero-viz__bar { display: flex; align-items: center; gap: 6px; padding: 12px 16px; background: rgba(255,255,255,.04); border-bottom: 1px solid rgba(255,255,255,.08); }
.rst-hero-viz__bar i { width: 11px; height: 11px; border-radius: 50%; background: rgba(255,255,255,.18); display: inline-block; }
.rst-hero-viz__bar span { margin-left: 8px; font-family: var(--rst-mono); font-size: 12px; color: #9aa0c4; }
.rst-hero-viz__code { margin: 0; padding: 20px 22px; font-family: var(--rst-mono); font-size: 13.5px; line-height: 1.75; color: #cfe0ff; white-space: pre; overflow: auto; }
.rst-hero-viz__code .v-bad { color: #ff8a6b; font-weight: 700; }
.rst-hero-viz__code .v-good { color: var(--rst-good); font-weight: 700; }
.rst-hero-viz__code .v-key { color: #8ea2d8; }
@media (max-width: 820px) { .rst-hero-viz { margin-top: 30px; } }

/* Card icons (building blocks + audiences) */
.rst-ico { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 12px; background: var(--rst-bg); color: var(--rst-blue); margin: 0 0 14px; }
.rst-ico svg { width: 22px; height: 22px; }
.rst-aud__humans .fl-rich-text .rst-ico { color: var(--rst-blue); }
.rst-aud__machines .fl-rich-text .rst-ico { color: var(--rst-good); }
.rst-aud__agents .fl-rich-text .rst-ico { color: var(--rst-agent); }

/* ============================================================
   Homepage v3 — hero air, viz contrast fix, AI SOC flow
   ============================================================ */

/* Air between the nav/header and the hero */
.rst-hero-row { padding-top: 124px !important; }
@media (max-width: 1024px) { .rst-hero-row { padding-top: 84px !important; } }
@media (max-width: 767px)  { .rst-hero-row { padding-top: 60px !important; } }

/* Hero terminal card — the theme styles <pre> with a light background,
   which was washing the JSON out. Force the navy card through. */
.rst-hero-viz pre,
.rst-hero-viz__code {
	background: transparent !important;
	border: 0 !important;
	border-radius: 0 !important;
	color: #d7e5ff !important;
	box-shadow: none !important;
}
.rst-hero-viz__code { font-size: 13px !important; line-height: 1.75 !important; }
.rst-hero-viz__code .v-key  { color: #7fa6ee !important; }
.rst-hero-viz__code .v-str  { color: #d7e5ff !important; }
.rst-hero-viz__code .v-bad  { color: #ff8a6b !important; font-weight: 700; }
.rst-hero-viz__code .v-good { color: #35d39a !important; font-weight: 700; }
.rst-hero-viz__code .v-cmd  { color: #8f96bd !important; }

/* "How RST enables the AI SOC" flow */
.rst-aisoc__flow { display: grid; grid-template-columns: repeat(auto-fit, minmax(195px, 1fr)); gap: 16px; }
.rst-aisoc__step {
	background: #fff; border: 1px solid var(--rst-line); border-radius: 14px;
	padding: 20px 18px; box-shadow: 0 8px 24px rgba(71,95,107,.06);
	display: flex; flex-direction: column;
}
.rst-aisoc__n { font-family: var(--rst-mono); font-size: 12px; font-weight: 700; color: var(--rst-agent); margin: 0 0 10px; }
.rst-aisoc__q { font-size: 15px; font-weight: 700; color: var(--rst-navy); margin: 0 0 12px; line-height: 1.35; }
.rst-aisoc__prod {
	display: inline-block; align-self: flex-start; font-family: var(--rst-mono);
	font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em;
	color: var(--rst-blue); background: var(--rst-bg); border-radius: 6px; padding: 5px 9px; margin: 0 0 10px;
}
.rst-aisoc__a { font-size: 13px; line-height: 1.5; color: var(--rst-slate); margin: 0; }
.rst-aisoc__out {
	margin-top: 18px; background: var(--rst-navy); border-radius: 14px;
	padding: 24px 26px; text-align: center;
}
.rst-aisoc__out strong { color: #fff; font-size: 17px; font-weight: 700; display: block; }
.rst-aisoc__out span { display: block; margin-top: 8px; font-family: var(--rst-mono); font-size: 12px; color: var(--rst-agent); }

/* Source-card grid (Breach Alert data sources) */
.rst-srcgrid .fl-col-content { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 18px; }
.rst-srcgrid .fl-module { margin: 0 !important; width: 100%; }
.rst-srcgrid .fl-rich-text {
	background: #fff; border: 1px solid var(--rst-line); border-radius: 14px;
	padding: 22px 20px; height: 100%; box-shadow: 0 8px 24px rgba(71,95,107,.06);
}
.rst-srcgrid .fl-rich-text h3 { font-size: 16px; font-weight: 700; color: var(--rst-navy); margin: 0 0 8px; }
.rst-srcgrid .fl-rich-text p { font-size: 14px; line-height: 1.55; color: var(--rst-slate); margin: 0; }
.rst-srcgrid .fl-rich-text .rst-ico { margin-bottom: 12px; }

/* Generic numbered step-flow (Breach Alert; same visual language as the AI SOC flow) */
.rst-flow__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 16px; }
.rst-flow__step {
	background: #fff; border: 1px solid var(--rst-line); border-radius: 14px;
	padding: 20px 18px; box-shadow: 0 8px 24px rgba(71,95,107,.06);
	display: flex; flex-direction: column;
}
.rst-flow__n { font-family: var(--rst-mono); font-size: 12px; font-weight: 700; color: var(--rst-agent); margin: 0 0 10px; }
.rst-flow__t { font-size: 15px; font-weight: 700; color: var(--rst-navy); margin: 0 0 8px; line-height: 1.35; }
.rst-flow__d { font-size: 13px; line-height: 1.5; color: var(--rst-slate); margin: 0; }
.rst-flow__out { margin-top: 18px; background: var(--rst-navy); border-radius: 14px; padding: 24px 26px; text-align: center; }
.rst-flow__out strong { color: #fff; font-size: 17px; font-weight: 700; display: block; }
.rst-flow__out span { display: block; margin-top: 8px; font-family: var(--rst-mono); font-size: 12px; color: var(--rst-good); }

/* P1 / proof-of-ownership callout */
.rst-p1 .fl-rich-text { background: linear-gradient(120deg, #1E1F4B, #2b2f6b); border-radius: 16px; padding: 32px 34px; }
.rst-p1 .fl-rich-text h2 { color: #fff; font-size: 23px; font-weight: 800; margin: 0 0 12px; }
.rst-p1 .fl-rich-text p { color: #c9cdec; font-size: 15px; line-height: 1.62; margin: 0 0 10px; }
.rst-p1 .fl-rich-text p:last-child { margin-bottom: 0; }
.rst-p1 .fl-rich-text strong { color: #fff; }
.rst-p1 .fl-rich-text code { font-family: var(--rst-mono); font-size: 13px; background: rgba(255,255,255,.10); color: #bff3f7; border-radius: 6px; padding: 3px 8px; }

/* ============================================================
   Report Hub — extraction pipeline diagram
   ============================================================ */
.rst-rh {
	display: flex; align-items: stretch; justify-content: center; gap: 0;
	background: var(--rst-navy); border-radius: 18px; padding: 30px 26px;
	box-shadow: 0 18px 40px rgba(30,31,75,.18);
}
.rst-rh * { box-sizing: border-box; }
.rst-rh__stage { flex: 1 1 0; display: flex; flex-direction: column; min-width: 0; padding: 0 12px; }
.rst-rh__cap {
	font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .12em;
	font-size: 10px; color: #9aa0c4; margin: 0 0 14px; text-align: center;
}
/* left: incoming documents */
.rst-rh__docs { display: flex; flex-direction: column; gap: 8px; }
.rst-rh__doc {
	font-size: 13px; color: #cfe0ff; background: rgba(255,255,255,.05);
	border: 1px solid rgba(255,255,255,.14); border-left: 3px solid rgba(255,255,255,.28);
	border-radius: 7px; padding: 9px 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
/* middle: the engine */
.rst-rh__core {
	flex: 1 1 0; align-self: center; background: linear-gradient(120deg, var(--rst-blue), #3a6ef0);
	border-radius: 14px; padding: 22px 18px; text-align: center;
	box-shadow: 0 10px 24px rgba(35,95,232,.32); min-width: 0;
}
.rst-rh__core h3 { font-size: 17px; font-weight: 800; color: #fff; margin: 0 0 12px; }
.rst-rh__steps { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.rst-rh__steps li {
	font-family: var(--rst-mono); font-size: 12px; color: #fff;
	background: rgba(255,255,255,.16); border-radius: 999px; padding: 5px 10px;
}
.rst-rh__note { font-family: var(--rst-mono); font-size: 10px; color: #d5e2ff; margin: 12px 0 0; letter-spacing: .06em; }
/* right: structured output */
.rst-rh__out { display: flex; flex-wrap: wrap; gap: 7px; justify-content: center; }
.rst-rh__ent {
	font-family: var(--rst-mono); font-size: 11.5px; color: #bff3f7;
	background: rgba(34,198,210,.12); border: 1px solid rgba(34,198,210,.4);
	border-radius: 999px; padding: 5px 10px;
}
.rst-rh__fmt {
	margin: 14px 0 0; text-align: center; font-family: var(--rst-mono);
	font-size: 11px; color: var(--rst-good); letter-spacing: .04em;
}
/* connectors */
.rst-rh__arrow { flex: 0 0 30px; display: flex; align-items: center; justify-content: center; color: var(--rst-agent); }
.rst-rh__arrow svg { width: 20px; height: 20px; }

@media (max-width: 860px) {
	.rst-rh { flex-direction: column; padding: 24px 18px; }
	.rst-rh__stage, .rst-rh__core { padding: 0; }
	.rst-rh__core { margin: 4px 0; }
	.rst-rh__arrow { flex: 0 0 34px; transform: rotate(90deg); }
	.rst-rh__doc { white-space: normal; }
}

/* ============================================================
   STIX 2.1 bundle viewer (Report Hub)
   ============================================================ */
.rst-stix {
	background: var(--rst-navy); border-radius: 18px; padding: 26px 26px 18px;
	box-shadow: 0 18px 40px rgba(30,31,75,.18); color: #cfe0ff; min-height: 300px;
}
.rst-stix * { box-sizing: border-box; }
.rst-stix__head { text-align: center; margin-bottom: 16px; }
.rst-stix__kicker {
	font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .12em;
	font-size: 10px; color: #9aa0c4; margin: 0 0 8px;
}
.rst-stix__head h3 { font-size: 19px; font-weight: 800; color: #fff; margin: 0 0 6px; line-height: 1.3; }
.rst-stix__meta { font-family: var(--rst-mono); font-size: 11px; color: var(--rst-agent); margin: 0; }

/* legend / filters */
.rst-stix__legend { display: flex; flex-wrap: wrap; gap: 7px; justify-content: center; margin-bottom: 14px; }
.rst-stix__chip {
	display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
	font-family: var(--rst-mono); font-size: 11px; color: #cfe0ff;
	background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.14);
	border-radius: 999px; padding: 5px 11px; transition: background .15s ease, opacity .15s ease;
}
.rst-stix__chip:hover { background: rgba(255,255,255,.12); }
.rst-stix__chip i { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }
.rst-stix__chip b { color: #fff; font-weight: 700; }
.rst-stix__chip.is-off { opacity: .35; }

/* graph + panel */
.rst-stix__body { display: grid; grid-template-columns: 1fr 290px; gap: 18px; align-items: stretch; }
.rst-stix__canvas {
	background: rgba(0,0,0,.16); border: 1px solid rgba(255,255,255,.08);
	border-radius: 14px; overflow: hidden; min-height: 340px;
}
.rst-stix__svg { display: block; width: 100%; height: auto; }
.rst-stix__edge { stroke: rgba(255,255,255,.16); stroke-width: 1; transition: stroke .15s ease; }
.rst-stix__edge.is-active { stroke: var(--rst-agent); stroke-width: 1.8; }
.rst-stix__edge-label {
	font-family: var(--rst-mono); font-size: 9px; fill: var(--rst-agent);
	text-anchor: middle; paint-order: stroke; stroke: #1E1F4B; stroke-width: 3px;
}
.rst-stix__node { cursor: pointer; }
.rst-stix__node circle { stroke: rgba(255,255,255,.55); stroke-width: 1.5; transition: opacity .15s ease; }
.rst-stix__node:focus { outline: none; }
.rst-stix__node:focus circle, .rst-stix__node:hover circle { stroke: #fff; stroke-width: 2.5; }
.rst-stix__node.is-selected circle { stroke: #fff; stroke-width: 3; }
.rst-stix__node.is-dim { opacity: .28; }
.rst-stix__node.is-drag { cursor: grabbing; }
.rst-stix__label {
	font-family: var(--rst-mono); font-size: 9.5px; fill: #cfe0ff; text-anchor: middle;
	pointer-events: none; paint-order: stroke; stroke: #12132e; stroke-width: 3px;
	transition: opacity .15s ease;
}

/* details panel */
.rst-stix__panel {
	background: rgba(255,255,255,.045); border: 1px solid rgba(255,255,255,.10);
	border-radius: 14px; padding: 18px; overflow-y: auto; max-height: 520px; font-size: 13px;
}
.rst-stix__panel h4 { color: #fff; font-size: 15px; font-weight: 700; margin: 8px 0 10px; line-height: 1.35; word-break: break-word; }
.rst-stix__badge {
	display: inline-block; font-family: var(--rst-mono); font-size: 10px; font-weight: 700;
	text-transform: uppercase; letter-spacing: .06em; color: #12132e;
	border-radius: 999px; padding: 3px 9px;
}
.rst-stix__panel-kicker { font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .1em; font-size: 10px; color: var(--rst-agent); margin: 0 0 8px; }
.rst-stix__panel-desc { color: #b9bedd; line-height: 1.55; margin: 10px 0 0; font-size: 12.5px; }
.rst-stix__panel-hint { color: #8f96bd; font-size: 11.5px; line-height: 1.5; margin: 14px 0 0; font-style: italic; }
.rst-stix__kv { display: flex; gap: 8px; align-items: baseline; margin: 0 0 6px; font-size: 12px; }
.rst-stix__kv span { font-family: var(--rst-mono); font-size: 10px; text-transform: uppercase; letter-spacing: .06em; color: #8f96bd; flex: 0 0 74px; }
.rst-stix__kv code { font-family: var(--rst-mono); font-size: 11.5px; color: #bff3f7; word-break: break-word; }
.rst-stix__pattern {
	font-family: var(--rst-mono); font-size: 11px; line-height: 1.5; color: #d7e5ff;
	background: rgba(0,0,0,.3); border: 1px solid rgba(255,255,255,.1); border-radius: 8px;
	padding: 10px 11px; margin: 10px 0 0; white-space: pre-wrap; word-break: break-all;
}
.rst-stix__rel-title { font-family: var(--rst-mono); font-size: 10px; text-transform: uppercase; letter-spacing: .08em; color: #8f96bd; margin: 16px 0 8px; }
.rst-stix__rels { list-style: none; margin: 0; padding: 0; }
.rst-stix__rels li { font-size: 12px; color: #cfe0ff; padding: 5px 0; border-top: 1px solid rgba(255,255,255,.07); line-height: 1.45; word-break: break-word; }
.rst-stix__rel { font-family: var(--rst-mono); font-size: 10.5px; color: var(--rst-agent); }
.rst-stix__more { color: #8f96bd; font-style: italic; }
.rst-stix__hint { text-align: center; font-family: var(--rst-mono); font-size: 10.5px; color: #8f96bd; margin: 14px 0 0; }

@media (max-width: 900px) {
	.rst-stix__body { grid-template-columns: 1fr; }
	.rst-stix__panel { max-height: none; }
}

/* ============================================================
   Embedded video — framed to match the design language
   ============================================================ */
.rst-video-frame .fl-video {
	border-radius: 16px;
	overflow: hidden;
	background: var(--rst-navy);
	box-shadow: 0 20px 44px rgba(30,31,75,.22);
}
.rst-video-frame iframe,
.rst-video-frame video { display: block; border-radius: 16px; }

/* ============================================================
   JSON / STIX sample tabs — terminal card treatment
   The stored markup carries heavy inline styles from the old editor,
   so these rules override with !important where needed.
   ============================================================ */
.formatted-json-box .fl-tabs-panel-content.fl-tab-active,
.rst-global-tab-wrapper .fl-tabs .fl-tabs-panels .fl-tabs-panel .fl-tabs-panel-content.fl-tab-active {
	background: var(--rst-navy) !important;
	border: 1px solid rgba(255,255,255,.10) !important;
	border-radius: 16px !important;
	box-shadow: 0 18px 40px rgba(30,31,75,.18) !important;
	min-height: 0 !important;
	padding: 22px 24px !important;
}
.formatted-json-box .formatted-json-wrap,
.formatted-json-box .fl-html .formatted-json-wrap,
.formatted-json-box .formatted-fixed-json-box {
	background: transparent !important;
	box-shadow: none !important;
	border-radius: 0 !important;
	padding: 0 !important;
}
.formatted-json-box pre,
.formatted-json-box pre code,
.formatted-json-box .fl-html .formatted-json-wrap pre {
	font-family: var(--rst-mono) !important;
	font-size: 12.5px !important;
	line-height: 1.65 !important;
	color: #d7e5ff !important;
	background: transparent !important;
	text-shadow: none !important;
	max-height: 460px;
	margin: 0 !important;
	padding: 0 !important;
}
.formatted-json-box .token.property,
.formatted-json-box .token.attr-name  { color: #7fa6ee !important; }
.formatted-json-box .token.string     { color: #bff3f7 !important; }
.formatted-json-box .token.number,
.formatted-json-box .token.boolean    { color: #f5b544 !important; }
.formatted-json-box .token.punctuation,
.formatted-json-box .token.operator   { color: #6c74a0 !important; }
.formatted-json-box .token.null       { color: #ff8a6b !important; }

.formatted-json-box .fl-tabs-labels { display: flex !important; justify-content: center; gap: 6px; }
.formatted-json-box .fl-tabs-labels .fl-tabs-label {
	font-family: var(--rst-mono) !important; font-size: 13px !important; line-height: 1.2 !important;
	padding: 10px 22px !important; border: 1px solid rgba(35,95,232,.28) !important;
	border-radius: 999px !important; color: var(--rst-blue) !important; background: #fff !important;
}
.formatted-json-box .fl-tabs-labels .fl-tabs-label.fl-tab-active {
	background: var(--rst-blue) !important; color: #fff !important;
	border-color: var(--rst-blue) !important; font-weight: 700; margin-top: 0 !important;
}
.formatted-json-box .fl-tabs-panels { margin-top: 22px !important; }
.formatted-json-box pre::-webkit-scrollbar { width: 8px; height: 8px; }
.formatted-json-box pre::-webkit-scrollbar-thumb { background: rgba(255,255,255,.22); border-radius: 20px; }
.formatted-json-box pre::-webkit-scrollbar-track { background: transparent; }

/* ============================================================
   Product-family accents (per the stack architecture diagram)
   ============================================================ */
:root {
	--rst-fam-detect:   #235FE8;   /* detection & enrichment */
	--rst-fam-research: #8B5CF6;   /* research & knowledge   */
	--rst-fam-exposure: #1FA97A;   /* specialised / exposure */
	--rst-fam-ai:       #22C6D2;   /* CTI Assistant / agentic */
}

/* ============================================================
   HERO — simplified stack diagram (navy)
   ============================================================ */
.rst-hstack {
	background: var(--rst-navy); border-radius: 16px; padding: 22px 20px 18px;
	box-shadow: 0 20px 44px rgba(30,31,75,.22);
}
.rst-hstack * { box-sizing: border-box; }
.rst-hstack__ai {
	display: flex; align-items: center; justify-content: center; gap: 8px;
	border: 1px solid rgba(34,198,210,.55); background: rgba(34,198,210,.10);
	border-radius: 10px; padding: 9px 12px; margin-bottom: 14px; text-decoration: none;
}
.rst-hstack__ai b { color: #fff; font-size: 13px; font-weight: 700; }
.rst-hstack__ai span { font-family: var(--rst-mono); font-size: 10.5px; color: var(--rst-fam-ai); }
.rst-hstack__row { display: flex; align-items: stretch; gap: 0; }
.rst-hstack__col { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; }
.rst-hstack__cap {
	font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .1em;
	font-size: 9px; color: #9aa0c4; margin: 0 0 8px; text-align: center;
}
.rst-hstack__box {
	background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.13);
	border-radius: 8px; padding: 8px 9px; margin-bottom: 6px; text-align: center;
	font-size: 11.5px; color: #cfe0ff; line-height: 1.3;
}
.rst-hstack__box:last-child { margin-bottom: 0; }
.rst-hstack__box--detect   { border-left: 3px solid var(--rst-fam-detect); }
.rst-hstack__box--research { border-left: 3px solid var(--rst-fam-research); }
.rst-hstack__box--exposure { border-left: 3px solid var(--rst-fam-exposure); }
.rst-hstack__box--agent {
	border-color: rgba(34,198,210,.45); background: rgba(34,198,210,.10); color: #bff3f7;
	font-family: var(--rst-mono); font-size: 10.5px;
}
.rst-hstack__arrow { flex: 0 0 24px; display: flex; align-items: center; justify-content: center; color: var(--rst-fam-ai); }
.rst-hstack__arrow svg { width: 16px; height: 16px; }
.rst-hstack__foot {
	margin: 14px 0 0; text-align: center; font-family: var(--rst-mono);
	font-size: 10px; color: #8f96bd; letter-spacing: .04em;
}
@media (max-width: 520px) {
	.rst-hstack__row { flex-direction: column; }
	.rst-hstack__arrow { flex: 0 0 22px; transform: rotate(90deg); }
	.rst-hstack__col { margin-bottom: 2px; }
}

/* ============================================================
   FULL stack architecture diagram (light)
   ============================================================ */
.rst-stack { background: #fff; border: 1px solid var(--rst-line); border-radius: 18px; padding: 28px 26px; box-shadow: 0 12px 32px rgba(71,95,107,.08); }
.rst-stack * { box-sizing: border-box; }
.rst-stack__lead { font-size: 14.5px; line-height: 1.55; color: var(--rst-slate); text-align: center; margin: 0 0 22px; }
.rst-stack__grid { display: flex; align-items: stretch; gap: 0; }
.rst-stack__col { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; }
.rst-stack__cap {
	font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .1em;
	font-size: 10px; font-weight: 700; color: var(--rst-slate); margin: 0 0 10px; text-align: center;
}
.rst-stack__arrow { flex: 0 0 34px; display: flex; align-items: center; justify-content: center; color: var(--rst-blue); }
.rst-stack__arrow svg { width: 20px; height: 20px; }

/* CTI Assistant band */
.rst-stack__ai {
	display: block; text-decoration: none; text-align: center; margin-bottom: 12px;
	border: 1.5px solid var(--rst-fam-ai); background: rgba(34,198,210,.08);
	border-radius: 10px; padding: 10px;
}
.rst-stack__ai b { display: block; color: var(--rst-navy); font-size: 13.5px; font-weight: 800; }
.rst-stack__ai span { font-family: var(--rst-mono); font-size: 10px; color: #0f8b95; }

/* product family groups */
.rst-stack__fam { border: 1.5px solid var(--rst-line); border-radius: 12px; padding: 12px 11px; margin-bottom: 10px; }
.rst-stack__fam:last-child { margin-bottom: 0; }
.rst-stack__fam-cap {
	display: block; font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .07em;
	font-size: 9.5px; font-weight: 700; margin: 0 0 8px;
}
.rst-stack__fam a {
	display: block; text-decoration: none; font-size: 12.5px; font-weight: 600; color: var(--rst-navy);
	background: var(--rst-bg); border-radius: 7px; padding: 7px 10px; margin-bottom: 5px;
	transition: background .15s ease, transform .15s ease;
}
.rst-stack__fam a:last-child { margin-bottom: 0; }
.rst-stack__fam a:hover { background: #eef2ff; transform: translateX(2px); }
.rst-stack__fam--detect   { border-color: rgba(35,95,232,.45); }
.rst-stack__fam--detect   .rst-stack__fam-cap { color: var(--rst-fam-detect); }
.rst-stack__fam--research { border-color: rgba(139,92,246,.45); }
.rst-stack__fam--research .rst-stack__fam-cap { color: var(--rst-fam-research); }
.rst-stack__fam--exposure { border-color: rgba(31,169,122,.45); }
.rst-stack__fam--exposure .rst-stack__fam-cap { color: var(--rst-fam-exposure); }

/* SOC zone */
.rst-stack__soc { border: 1.5px dashed rgba(35,95,232,.45); border-radius: 12px; padding: 14px 12px; background: #f7f9ff; height: 100%; }
.rst-stack__people { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px; margin-bottom: 10px; }
.rst-stack__people span {
	background: #fff; border: 1px solid var(--rst-line); border-radius: 7px;
	padding: 7px 6px; text-align: center; font-size: 11px; color: var(--rst-navy); line-height: 1.25;
}
.rst-stack__agents {
	border: 1.5px solid var(--rst-fam-ai); background: rgba(34,198,210,.10); border-radius: 8px;
	padding: 9px; text-align: center; font-size: 12px; font-weight: 700; color: var(--rst-navy); margin-bottom: 10px;
}
/* 2x2 rather than 1x3: the platforms row gained GRC / risk, and a 3-col
   grid would leave a lone orphan on a second line. */
.rst-stack__tools { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px; }
.rst-stack__tools span {
	background: #fff; border: 1px solid rgba(35,95,232,.35); border-radius: 7px;
	padding: 8px 4px; text-align: center; font-family: var(--rst-mono); font-size: 11px;
	font-weight: 700; color: var(--rst-navy);
}
/* controls */
.rst-stack__ctrls { display: flex; flex-direction: column; gap: 8px; height: 100%; justify-content: center; }
.rst-stack__ctrls span {
	border: 1.5px solid var(--rst-line); border-radius: 9px; padding: 12px 8px; text-align: center;
	font-family: var(--rst-mono); font-size: 12px; font-weight: 700; color: var(--rst-navy); background: #fff;
}
.rst-stack__foot {
	margin: 22px 0 0; text-align: center; font-family: var(--rst-mono);
	text-transform: uppercase; letter-spacing: .1em; font-size: 10.5px; font-weight: 700; color: var(--rst-blue);
}
@media (max-width: 900px) {
	.rst-stack__grid { flex-direction: column; }
	.rst-stack__arrow { flex: 0 0 34px; transform: rotate(90deg); margin: 4px 0; }
	.rst-stack__col { margin-bottom: 4px; }
	.rst-stack__ctrls { flex-direction: row; flex-wrap: wrap; }
	.rst-stack__ctrls span { flex: 1 1 45%; }
}

/* Legibility: the mono micro-captions in both stack diagrams drop to 9px,
   which is too small on phones — bump them where there is room to spare. */
@media (max-width: 767px) {
	.rst-hstack__cap,
	.rst-stack__cap { font-size: 11px; letter-spacing: .08em; }
	.rst-stack__fam-cap { font-size: 11px; }
	.rst-hstack__box { font-size: 13px; padding: 10px; }
	.rst-hstack__box--agent { font-size: 12px; }
	.rst-hstack__foot,
	.rst-stack__foot { font-size: 11.5px; }
	.rst-stack__people span { font-size: 12px; }
	.rst-stack__fam a { font-size: 13.5px; }
	.rst-stack__lead { font-size: 15px; }
}

/* ============================================================
   Equal-height cards across every grid
   ------------------------------------------------------------
   Beaver Builder nests the visible card two levels below the grid
   item: .fl-col-content(grid) > .fl-module > .fl-module-content >
   .fl-rich-text. The .fl-module grid item stretches correctly, but
   .fl-module-content is auto-height, so `height:100%` on the card
   resolved against a collapsed parent and cards ended up ragged.
   Making the two wrappers flex lets the card fill its grid cell.
   ============================================================ */
.rst-shift .fl-col-content,
.rst-blocks .fl-col-content,
.rst-aud .fl-col-content,
.rst-srcgrid .fl-col-content { align-items: stretch; }

.rst-shift .fl-module,
.rst-blocks .fl-module,
.rst-aud .fl-module,
.rst-srcgrid .fl-module { display: flex; }

.rst-shift .fl-module > .fl-module-content,
.rst-blocks .fl-module > .fl-module-content,
.rst-aud .fl-module > .fl-module-content,
.rst-srcgrid .fl-module > .fl-module-content {
	display: flex; flex-direction: column; width: 100%; margin: 0;
}

.rst-shift .fl-rich-text,
.rst-blocks .fl-rich-text,
.rst-aud .fl-rich-text,
.rst-srcgrid .fl-rich-text { flex: 1 1 auto; }

/* Building-block cards: pin the "Explore →" link to the bottom so the
   call-to-action sits on one line across the whole grid. */
.rst-blocks .fl-rich-text { display: flex; flex-direction: column; }
.rst-blocks .fl-rich-text p { flex: 1 1 auto; }
.rst-blocks .fl-rich-text a { margin-top: auto; align-self: flex-start; }

/* Audience + source cards: keep body copy top-aligned under the heading */
.rst-aud .fl-rich-text,
.rst-srcgrid .fl-rich-text { display: flex; flex-direction: column; }

/* ============================================================
   Shared scoring dimensions — source confidence · context score ·
   time relevance. Used on /how-we-score/ (mapping methods to the
   published dimensions) and on the scored product pages, so the
   vocabulary reads identically everywhere.
   ============================================================ */
.rst-dims { margin: 0; }
.rst-dims__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 16px; align-items: stretch; }
.rst-dims__card {
	display: flex; flex-direction: column;
	background: #fff; border: 1px solid var(--rst-line); border-radius: 14px;
	padding: 20px 19px; box-shadow: 0 8px 24px rgba(71,95,107,.06);
}
.rst-dims__name { font-size: 15.5px; font-weight: 700; color: var(--rst-navy); margin: 0 0 8px; }
.rst-dims__desc { font-size: 13.5px; line-height: 1.55; color: var(--rst-slate); margin: 0; flex: 1 1 auto; }
.rst-dims__from {
	display: block; margin: 12px 0 0; padding-top: 11px; border-top: 1px solid var(--rst-line);
	font-family: var(--rst-mono); font-size: 10.5px; letter-spacing: .04em; color: var(--rst-blue);
}
.rst-dims__from b { font-weight: 700; }
/* dark variant, for use on navy sections */
.rst-dims--dark .rst-dims__card { background: rgba(255,255,255,.05); border-color: rgba(255,255,255,.13); box-shadow: none; }
.rst-dims--dark .rst-dims__name { color: #fff; }
.rst-dims--dark .rst-dims__desc { color: #b9bedd; }
.rst-dims--dark .rst-dims__from { border-top-color: rgba(255,255,255,.12); color: var(--rst-agent); }

/* ============================================================
   Partner routes-to-market diagram (replaces the stock
   handshake artwork on /partners/). Navy card, same treatment
   as the hero stack diagram on the homepage.
   ============================================================ */
.rst-ptrack {
	background: var(--rst-navy); border-radius: 16px; padding: 22px 20px;
	box-shadow: 0 20px 44px rgba(30,31,75,.22);
}
.rst-ptrack * { box-sizing: border-box; }
.rst-ptrack__src {
	display: block; text-align: center; border: 1px solid rgba(34,198,210,.5);
	background: rgba(34,198,210,.10); border-radius: 10px; padding: 11px 12px;
}
.rst-ptrack__src b { display: block; color: #fff; font-size: 13.5px; font-weight: 700; }
.rst-ptrack__src span {
	display: block; margin-top: 3px; font-family: var(--rst-mono);
	font-size: 10px; color: var(--rst-fam-ai); letter-spacing: .03em;
}
.rst-ptrack__arrow { display: flex; justify-content: center; color: var(--rst-fam-ai); padding: 9px 0; }
.rst-ptrack__arrow svg { width: 15px; height: 15px; }
.rst-ptrack__tracks { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.rst-ptrack__track {
	display: flex; flex-direction: column;
	background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.13);
	border-radius: 10px; padding: 13px 12px;
}
.rst-ptrack__track--channel { border-top: 3px solid var(--rst-fam-detect); }
.rst-ptrack__track--tech    { border-top: 3px solid var(--rst-fam-research); }
.rst-ptrack__tag {
	font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .08em;
	font-size: 9.5px; font-weight: 700; margin-bottom: 7px;
}
.rst-ptrack__track--channel .rst-ptrack__tag { color: #7fa6ee; }
.rst-ptrack__track--tech    .rst-ptrack__tag { color: #b79cf8; }
.rst-ptrack__track p { font-size: 12px; line-height: 1.45; color: #cfe0ff; margin: 0 0 10px; flex: 1 1 auto; }
.rst-ptrack__mode {
	font-family: var(--rst-mono); font-size: 10px; color: #8f96bd;
	padding-top: 9px; border-top: 1px solid rgba(255,255,255,.1);
}
.rst-ptrack__dest {
	text-align: center; border: 1px dashed rgba(255,255,255,.28); border-radius: 10px;
	padding: 11px 12px; font-size: 12.5px; font-weight: 600; color: #fff;
}
@media (max-width: 480px) {
	.rst-ptrack__tracks { grid-template-columns: 1fr; }
	.rst-ptrack__track p { font-size: 13px; }
}

/* ============================================================
   Partner logo strip (global row, preset "brands") — the logos
   are supplied at wildly different intrinsic heights (33px to
   101px), which left the cells ragged. Normalise each cell to a
   uniform box and cap the logo inside it so the strip reads as
   one aligned row.
   ============================================================ */
.row-preset-brands .fl-col-content { display: flex; flex-direction: column; justify-content: center; }
.row-preset-brands .fl-module-photo { margin: 0 !important; }
.row-preset-brands .fl-module-photo .fl-module-content { margin: 0; }
.row-preset-brands .fl-photo { display: flex; align-items: center; justify-content: center; min-height: 84px; }
.row-preset-brands .fl-photo-content { display: flex; align-items: center; justify-content: center; width: 100%; }
.row-preset-brands .fl-photo-img {
	max-height: 56px; width: auto; max-width: 100%; object-fit: contain;
}

/* ============================================================
   Company identity card (/about/ hero, right column).
   Replaces the 500px bulleted "Contact Info" block that used to
   sit alone at the foot of the page: the same facts, but high on
   the page and giving the hero a visual anchor.
   ============================================================ */
.rst-idcard {
	background: #fff; border: 1px solid var(--rst-line); border-radius: 16px;
	padding: 24px 24px 20px; box-shadow: 0 12px 32px rgba(71,95,107,.08);
}
.rst-idcard__eyebrow {
	font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .1em;
	font-size: 10px; font-weight: 700; color: var(--rst-blue); margin: 0 0 6px;
}
.rst-idcard__name { font-size: 19px; font-weight: 800; color: var(--rst-navy); margin: 0 0 3px; line-height: 1.25; }
.rst-idcard__where { font-size: 13.5px; color: var(--rst-slate); margin: 0; }
.rst-idcard__rule { height: 1px; background: var(--rst-line); margin: 18px 0; }
.rst-idcard__row { display: flex; align-items: baseline; gap: 12px; margin-bottom: 9px; }
.rst-idcard__row:last-of-type { margin-bottom: 0; }
.rst-idcard__label {
	flex: 0 0 62px; font-family: var(--rst-mono); font-size: 10px;
	text-transform: uppercase; letter-spacing: .06em; color: var(--rst-slate);
}
.rst-idcard__row a { font-size: 14px; color: var(--rst-blue); text-decoration: none; word-break: break-word; }
.rst-idcard__row a:hover { text-decoration: underline; }
.rst-idcard .rst-btn { width: 100%; justify-content: center; margin-top: 18px; }
.rst-idcard__legal { margin: 16px 0 0; font-size: 11.5px; line-height: 1.6; color: var(--rst-slate); }
.rst-idcard__legal a { color: var(--rst-slate); text-decoration: none; }
.rst-idcard__legal a:hover { color: var(--rst-blue); text-decoration: underline; }
.rst-idcard__legal span { opacity: .45; padding: 0 5px; }
@media (max-width: 767px) {
	.rst-idcard { padding: 20px; }
	.rst-idcard__row { flex-wrap: wrap; gap: 2px 12px; }
	.rst-idcard__label { flex-basis: 100%; }
}

/* IoC Lookup tool page: the custom rst-search.php template rendered with no
   heading at all (no h1, bad for SEO and screen readers) — it opened straight
   into the search input. */
.rst-lookup-title {
	font-size: clamp(28px, 4vw, 40px); font-weight: 800; color: var(--rst-navy);
	margin: 0 0 10px; line-height: 1.15;
}
.rst-lookup-sub { font-size: 16px; line-height: 1.55; color: var(--rst-slate); margin: 0 0 24px; max-width: 640px; }

/* ============================================================
   Full stack diagram — close the dead space in the SOC zone.
   The left column stacked 8 products one per row (639px), the
   other two columns stretched to match, and the SOC zone's 152px
   of content sat at the top of a 603px dashed box — 451px of
   empty space pooling at the bottom.
   Two changes: products lay out two-up so the left column stops
   dictating an excessive height, and the SOC zone distributes its
   three groups over whatever height remains.
   ============================================================ */
.rst-stack__fam { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; align-content: start; }
.rst-stack__fam-cap { grid-column: 1 / -1; margin-bottom: 2px; }
.rst-stack__fam a { margin-bottom: 0; }

.rst-stack__soc { display: flex; flex-direction: column; justify-content: space-between; gap: 14px; }

/* Group captions for the Security Operations column.
   The left column's families are captioned (.rst-stack__fam-cap) but the
   SOC column's three blocks were not — so the space-between gaps between
   them read as dead space rather than as separations between labelled
   groups. Captioning them makes the structure legible and the spacing
   deliberate. */
.rst-stack__soc-cap {
	display: block; grid-column: 1 / -1;
	font-family: var(--rst-mono); font-size: 9.5px; font-weight: 700;
	text-transform: uppercase; letter-spacing: .1em;
	color: #7b83a8; margin: 0 0 5px;
}
.rst-stack__people,
.rst-stack__agents,
.rst-stack__tools { margin-bottom: 0; }
.rst-stack__agents { display: flex; align-items: center; justify-content: center; }

/* the controls column reads better evenly distributed than centred
   once the neighbouring columns are shorter */
.rst-stack__ctrls { justify-content: space-between; }

@media (max-width: 560px) {
	.rst-stack__fam { grid-template-columns: 1fr; }
	.rst-stack__soc { gap: 10px; }
}

/* The SOC zone is where everything converges, so it should carry visual
   weight rather than float as three small fragments in a tall dashed box.
   Bulk the three groups up so the remaining gaps read as deliberate
   spacing instead of emptiness. */
.rst-stack__people { gap: 8px; }
.rst-stack__people span { padding: 13px 8px; font-size: 12px; }
.rst-stack__agents { padding: 15px 10px; font-size: 12.5px; }
.rst-stack__tools { gap: 8px; }
.rst-stack__tools span { padding: 14px 4px; font-size: 12px; }

/* ============================================================
   Stack diagram v2 — feedback pass
   - six SOC roles (CTI analyst + CISO added) in a 2x3 grid
   - the agentic-AI band is the centre of gravity, so it gets
     real prominence rather than sitting as one more chip
   - controls stack tight (the evenly-spread version left visible
     gaps between EDR/NGFW/NDR/WAF) and the list is longer
   ============================================================ */
.rst-stack__people { grid-template-columns: repeat(2, 1fr); gap: 7px; }
.rst-stack__people span { padding: 11px 6px; font-size: 11.5px; }

.rst-stack__agents {
	padding: 18px 12px; font-size: 14px; font-weight: 800;
	border-width: 2px; border-radius: 10px;
	background: rgba(34,198,210,.16);
	box-shadow: 0 6px 18px rgba(34,198,210,.18);
	flex-direction: column; gap: 3px;
}
.rst-stack__agents small {
	display: block; font-family: var(--rst-mono); font-weight: 600;
	font-size: 10px; letter-spacing: .04em; color: #0f8b95; text-transform: uppercase;
}

/* Bug found by measuring: .rst-stack__tools span was still on its older
   padding/font-size (14px 4px / 12px, from before the "People" grid was
   last resized) while .rst-stack__people span had since moved to 11px 6px
   / 11.5px. That made every Platforms item 54px tall against People's
   38px, which grew the whole SOC column and reopened a ~72px dead-space
   gap at the bottom of the RST Cloud column (flex stretch matches the
   tallest column, and that column doesn't distribute its own leftover
   height the way .rst-stack__soc does). Match the two so both grids sit
   at the same 38px item height. */
/* line-height needed explicitly: unlike .rst-stack__people span (body
   sans-serif), this span sets font-family: var(--rst-mono) — JetBrains
   Mono's browser-computed "normal" line-height resolves to ~24px at this
   size vs ~14px for the sans font, so matching padding/font-size alone
   still left every item 10px taller than its People counterpart. */
.rst-stack__tools span { padding: 11px 6px; font-size: 11.5px; line-height: 1.25; }

/* Second bug from the same measurement pass: .rst-stack__soc-cap ("People"
   / "Platforms") has lower specificity (0,1,0) than the generic item rule
   ".rst-stack__people span" / ".rst-stack__tools span" (0,1,1), so the
   caption was silently picking up the white boxed-item look (border,
   background, padding) instead of reading as a plain group label like the
   left column's .rst-stack__fam-cap. Scoped selector below outweighs it. */
.rst-stack__soc .rst-stack__people span.rst-stack__soc-cap,
.rst-stack__soc .rst-stack__tools span.rst-stack__soc-cap {
	background: none; border: none; padding: 0; text-align: left;
}

/* tight control stack, no distributed gaps */
/* Was flex-start + 7px, tightened back when this column held 6 items and
   space-between spread them too far apart. At 8 items the leftover height is
   only ~95px, so space-between now adds ~13px per gap — the column fills
   evenly instead of pooling dead space under the last item. */
.rst-stack__ctrls { justify-content: space-between; gap: 7px; }
.rst-stack__ctrls span { padding: 10px 8px; font-size: 11.5px; }

@media (max-width: 560px) {
	.rst-stack__people { grid-template-columns: repeat(2, 1fr); }
}

/* ============================================================
   Compact STIX viewer, for embedding the Report Hub graph as a
   supporting illustration rather than as the page's centrepiece.
   ============================================================ */
.rst-stix--compact { padding: 16px; }
.rst-stix--compact .rst-stix__head h3 { font-size: 14px; }
.rst-stix--compact .rst-stix__meta { font-size: 10.5px; }
/* the svg carries a fixed viewBox (900x560) with height:auto, so it scales by
   aspect ratio — never pin a pixel height here or the graph distorts */
.rst-stix--compact .rst-stix__panel { max-height: 150px; font-size: 12px; }
.rst-stix--compact .rst-stix__legend { gap: 5px; }
.rst-stix--compact .rst-stix__chip { font-size: 9.5px; padding: 3px 7px; }

/* Compact mode sits in a ~510px column, where the viewer's two-column
   body (graph + details panel) squeezed the graph to 173px wide and made it
   unreadable. Stack them instead so the graph gets the full width. */
.rst-stix--compact .rst-stix__body { grid-template-columns: 1fr; }
.rst-stix--compact .rst-stix__panel { max-height: 190px; }

/* The svg viewBox is 900 units wide; in compact mode it renders at ~480px,
   so a 9.5-unit label lands at roughly 5px on screen. Scale the type up in
   viewBox units so it reads at a legible size once shrunk. */
.rst-stix--compact .rst-stix__node text { font-size: 17px; }

/* ============================================================
   Free-trial section (row-preset-heading-with-form) sits on a
   blue photo background with white body copy. The consent line
   and the demo link were inheriting light-background colours —
   slate on blue and brand-blue on blue — and were effectively
   invisible. Everything below is scoped to that preset.
   ============================================================ */
.rst-trial-consent { font-size: 12.5px; line-height: 1.55; margin-top: 18px; }
/* Measured against the actual background image (rgb(38,112,211)): white at
   60% opacity gives only 2.74:1, and even 85% reaches 3.94:1 — both under the
   4.5:1 WCAG AA floor for 12.5px text. Pure white measures 4.84:1, so the
   consent line stays fully opaque and is de-emphasised by size and tracking
   rather than by fading it into the background. */
.row-preset-heading-with-form .rst-trial-consent {
	color: #fff; font-size: 12px; letter-spacing: .01em; max-width: 430px;
	margin-left: auto; margin-right: auto;
}

/* links must read as links against the photo background */
.row-preset-heading-with-form .fl-rich-text a {
	color: #fff; text-decoration: underline; text-underline-offset: 3px;
	text-decoration-thickness: 1px; font-weight: 600;
}
.row-preset-heading-with-form .fl-rich-text a:hover { text-decoration-thickness: 2px; }

/* the headline is longer than the "Get Free Trial" it replaced; 60px broke it
   into three ragged lines in a 500px column */
.row-preset-heading-with-form h2 { font-size: clamp(28px, 3.2vw, 40px); line-height: 1.18; }

/* give the two body paragraphs a little more air and separation */
.row-preset-heading-with-form .fl-rich-text p { margin-bottom: 14px; }
.row-preset-heading-with-form .fl-rich-text p:last-child { margin-bottom: 0; }

/* ------------------------------------------------------------------ */
/* Threat Categories glossary table — readability pass.
   The base .custom-table-wrapper rules (style.css) only stripe the
   category cell, so each row's two columns show mismatched shading and
   the eye can't track a row across 38+ entries. Category codes are
   identifiers, not prose, so they read better in the monospace face at
   a smaller size than the description column. The header also scrolled
   out of view on a table this long, losing the column labels. */
.custom-table-wrapper table { table-layout: fixed; width: 100%; }

.custom-table-wrapper table thead th {
	position: sticky;
	top: 0;
	z-index: 2;
}
.custom-table-wrapper table thead th:not(:first-child) { background-color: #fff; }

/* table-layout:fixed derives column widths from the header row's cells,
   not the body's — the width on .featured-title-col alone is ignored
   unless the matching header cell is sized too. */
.custom-table-wrapper table thead th:first-child { width: 190px !important; }

.custom-table-wrapper table tbody tr td.featured-title-col.featured-title-col {
	background-color: #2b62de !important;
	font-family: 'JetBrains Mono', ui-monospace, monospace;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0.01em;
	vertical-align: top;
	width: 190px !important;
}

.custom-table-wrapper table tbody tr td:not(.featured-title-col) {
	font-size: 15.5px;
	line-height: 1.65;
	color: #33355e;
	max-width: 60ch;
}

.custom-table-wrapper table tbody tr:nth-child(even) td:not(.featured-title-col) {
	background-color: rgba(182, 191, 205, 0.22);
}

.custom-table-wrapper table tbody tr:hover td:not(.featured-title-col) {
	background-color: rgba(43, 98, 222, 0.12);
}

@media (max-width: 600px) {
	.custom-table-wrapper table thead th,
	.custom-table-wrapper table tbody tr td {
		padding: 14px 16px !important;
	}
	.custom-table-wrapper table thead th:first-child { width: 120px !important; }
	.custom-table-wrapper table tbody tr td.featured-title-col.featured-title-col {
		width: 120px !important;
		font-size: 13px;
	}
	.custom-table-wrapper table tbody tr td:not(.featured-title-col) {
		font-size: 14px;
		line-height: 1.55;
	}
}

/* Threat Library hero screenshot ships as a flat PNG with square corners,
   out of step with the rounded visuals used everywhere else on the site
   (.rst-hero-viz, .rst-pipeline, etc.). */
.fl-node-s76mf239valn .fl-photo-img {
	border-radius: 16px;
	box-shadow: 0 20px 44px rgba(30, 31, 75, .18);
}

/* ============================================================
   CTI Assistant — "three ways in" (.rst-ways)
   Three audiences reaching the same grounded corpus: agents over
   API/MCP, humans with local AI tools (Claude Desktop, Cursor) also
   over MCP, and humans in chat (Slack/Teams). Sits inside .rst-distinct.
   ============================================================ */
.rst-ways { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 18px; }
.rst-ways__card {
	background: var(--rst-bg); border: 1px solid var(--rst-line); border-radius: 12px;
	padding: 18px 18px 16px; display: flex; flex-direction: column;
}
.rst-ways__who {
	font-family: var(--rst-mono); font-size: 10.5px; font-weight: 700;
	text-transform: uppercase; letter-spacing: .08em; color: var(--rst-blue);
	display: block; margin: 0 0 8px;
}
.rst-ways__card h4 { font-size: 15px; font-weight: 800; color: var(--rst-navy); margin: 0 0 8px; }
.rst-ways__card p { font-size: 13.5px; line-height: 1.6; color: var(--rst-slate); margin: 0 0 10px; }
.rst-ways__card p:last-of-type { margin-bottom: 0; }
.rst-ways__tags { margin-top: auto; padding-top: 8px; }
.rst-ways__tags code {
	font-family: var(--rst-mono); font-size: 11px; background: #fff;
	border: 1px solid var(--rst-line); border-radius: 5px; padding: 3px 7px;
	color: var(--rst-navy); margin: 0 4px 4px 0; display: inline-block;
}
.rst-ways__card a.rst-ways__link {
	font-family: var(--rst-mono); font-size: 12px; font-weight: 600;
	color: var(--rst-blue); text-decoration: none; margin-top: 8px; display: inline-block;
}
.rst-ways__card a.rst-ways__link:hover { text-decoration: underline; }

@media (max-width: 900px) {
	.rst-ways { grid-template-columns: 1fr; }
}

/* ============================================================
   CTI Assistant — Teams bot spotlight (.rst-teams)
   Real product screenshots from the Microsoft Teams marketplace
   listing, in a lightweight browser-chrome frame so they read as
   a live product rather than a pasted image.
   ============================================================ */
.rst-teams * { box-sizing: border-box; }
.rst-teams__grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 28px; align-items: center; }
.rst-teams__copy h2 { font-size: clamp(24px, 2.6vw, 30px); font-weight: 800; color: var(--rst-navy); margin: 0 0 12px; }
.rst-teams__copy p { font-size: 15px; line-height: 1.62; color: var(--rst-slate); margin: 0 0 12px; }
.rst-teams__list { list-style: none; margin: 14px 0; padding: 0; }
.rst-teams__list li {
	position: relative; padding-left: 22px; margin-bottom: 9px;
	font-size: 14px; line-height: 1.55; color: var(--rst-navy);
}
.rst-teams__list li::before {
	content: ''; position: absolute; left: 0; top: 7px; width: 8px; height: 8px;
	border-radius: 50%; background: var(--rst-agent);
}
.rst-teams__cta { margin-top: 18px; display: flex; gap: 12px; flex-wrap: wrap; }

.rst-teams__frame {
	background: #fff; border: 1px solid var(--rst-line); border-radius: 14px;
	box-shadow: 0 20px 44px rgba(30, 31, 75, .16); overflow: hidden;
}
.rst-teams__chrome {
	display: flex; align-items: center; gap: 6px;
	padding: 10px 12px; background: #f1f2f8; border-bottom: 1px solid var(--rst-line);
}
.rst-teams__chrome i { width: 9px; height: 9px; border-radius: 50%; background: #d7dae8; display: inline-block; }
.rst-teams__chrome span {
	font-family: var(--rst-mono); font-size: 11px; color: #8a90b0; margin-left: 6px;
}
.rst-teams__frame img { display: block; width: 100%; height: auto; }

@media (max-width: 900px) {
	.rst-teams__grid { grid-template-columns: 1fr; }
}

/* ============================================================
   Documentation pages — numbered setup steps (.rst-steps) and a
   command-reference grid (.rst-cmds). Light cards, since these are
   docs pages rather than product-marketing sections.
   ============================================================ */
.rst-steps { list-style: none; margin: 0; padding: 0; counter-reset: rststep; }
.rst-steps li {
	counter-increment: rststep; position: relative; padding: 0 0 22px 46px;
	border-left: 2px solid var(--rst-line); margin-left: 15px;
}
.rst-steps li:last-child { padding-bottom: 0; border-left-color: transparent; }
.rst-steps li::before {
	content: counter(rststep); position: absolute; left: -15px; top: -2px;
	width: 30px; height: 30px; border-radius: 50%; background: var(--rst-blue); color: #fff;
	font-family: var(--rst-mono); font-weight: 700; font-size: 13px;
	display: flex; align-items: center; justify-content: center;
}
.rst-steps h4 { font-size: 16px; font-weight: 800; color: var(--rst-navy); margin: 0 0 6px; }
.rst-steps p { font-size: 14.5px; line-height: 1.62; color: var(--rst-slate); margin: 0 0 8px; }
.rst-steps p:last-child { margin-bottom: 0; }
.rst-steps code {
	font-family: var(--rst-mono); font-size: 13px; background: var(--rst-bg);
	border: 1px solid var(--rst-line); border-radius: 5px; padding: 2px 7px; color: var(--rst-navy);
}

.rst-cmds { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
.rst-cmds__card {
	background: #fff; border: 1px solid var(--rst-line); border-radius: 12px;
	padding: 18px 20px;
}
.rst-cmds__card code {
	font-family: var(--rst-mono); font-size: 13.5px; font-weight: 700; color: #fff;
	background: var(--rst-navy); border-radius: 6px; padding: 4px 10px; display: inline-block; margin-bottom: 10px;
}
.rst-cmds__card p { font-size: 14px; line-height: 1.6; color: var(--rst-slate); margin: 0; }

@media (max-width: 700px) {
	.rst-cmds { grid-template-columns: 1fr; }
}

/* ============================================================
   Documentation pages — screenshot strip (.rst-shots)
   Reuses the .rst-teams__frame browser-chrome treatment for a row
   of smaller supporting screenshots.
   ============================================================ */
.rst-shots { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 10px; }
.rst-shots figure { margin: 0; }
.rst-shots figcaption {
	font-size: 12.5px; color: var(--rst-slate); text-align: center; margin-top: 8px; line-height: 1.4;
}
@media (max-width: 900px) {
	.rst-shots { grid-template-columns: 1fr; }
}

/* ============================================================
   "Machine-readable by default" button group (.rst-btngrid)
   Four product buttons on a 2x2 grid with "Contact us" spanning the
   full width beneath them, so the products read as a set and the
   contact CTA reads as the step after.
   ============================================================ */
.rst-btngrid .fl-button-group-buttons {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
	align-items: stretch;
}
.rst-btngrid .fl-button-group-button { margin: 0 !important; width: 100%; }
.rst-btngrid .fl-button-group-button a.fl-button {
	width: 100%; display: flex; align-items: center; justify-content: center;
	text-align: center; height: 100%;
}
/* the last button (Contact us) spans both columns */
.rst-btngrid .fl-button-group-button:last-child { grid-column: 1 / -1; }

@media (max-width: 640px) {
	.rst-btngrid .fl-button-group-buttons { grid-template-columns: 1fr; }
	.rst-btngrid .fl-button-group-button:last-child { grid-column: auto; }
}

/* ============================================================
   Breach Alert hero flow (.rst-ba)
   Four stages: collection → scoring → delivery → on-prem validation.
   The last stage is the differentiator (most breach monitoring stops
   at "delivery"), so it carries the cyan accent. Sits on the tinted
   hero band, hence white cards.
   ============================================================ */
.rst-ba { margin-top: 34px; }
.rst-ba * { box-sizing: border-box; }

.rst-ba__flow {
	display: flex; align-items: stretch; justify-content: center;
	gap: 6px; text-align: left;
}
.rst-ba__stage {
	flex: 1 1 0; min-width: 0;
	background: #fff; border: 1px solid var(--rst-line); border-radius: 14px;
	padding: 18px 18px 16px; box-shadow: 0 8px 24px rgba(71, 95, 107, .06);
	display: flex; flex-direction: column;
}
.rst-ba__cap {
	font-family: var(--rst-mono); font-size: 10.5px; font-weight: 700;
	text-transform: uppercase; letter-spacing: .09em;
	color: var(--rst-blue); display: block; margin: 0 0 9px;
}
.rst-ba__stage h4 {
	font-size: 14.5px; line-height: 1.35; font-weight: 800;
	color: var(--rst-navy); margin: 0 0 8px;
}
.rst-ba__stage p {
	font-size: 12.5px; line-height: 1.55; color: var(--rst-slate); margin: 0;
}
.rst-ba__items { margin: 0 0 9px; }
.rst-ba__items span {
	display: inline-block; font-family: var(--rst-mono); font-size: 10.5px;
	background: var(--rst-bg); border: 1px solid var(--rst-line); border-radius: 5px;
	padding: 3px 7px; margin: 0 4px 4px 0; color: var(--rst-navy);
}

/* the arrow between stages */
.rst-ba__arrow {
	flex: 0 0 22px; display: flex; align-items: center; justify-content: center;
	color: #b9c0d8;
}
.rst-ba__arrow svg { width: 20px; height: 20px; display: block; }

/* stage 2 — the scoring core */
.rst-ba__stage--core {
	background: var(--rst-navy); border-color: var(--rst-navy);
	box-shadow: 0 14px 32px rgba(30, 31, 75, .22);
}
.rst-ba__stage--core .rst-ba__cap { color: #8fb4ff; }
.rst-ba__stage--core h4 { color: #fff; }
.rst-ba__stage--core p { color: #c3c9e6; }
.rst-ba__stage--core .rst-ba__items span {
	background: rgba(255, 255, 255, .10); border-color: rgba(255, 255, 255, .18); color: #dfe6ff;
}

/* stage 4 — on-prem validation, the part competitors don't ship */
.rst-ba__stage--agent { border: 2px solid var(--rst-agent); }
/* #0E8A93 measured 4.14:1 on white — under the 4.5:1 AA floor for a
   10.5px caption. #0E7A82 gives 5.09:1 and matches the chips below. */
.rst-ba__stage--agent .rst-ba__cap { color: #0E7A82; }
.rst-ba__dirs { margin: 0 0 9px; }
.rst-ba__dirs span {
	display: inline-block; font-family: var(--rst-mono); font-size: 10.5px; font-weight: 600;
	background: rgba(34, 198, 210, .10); border: 1px solid rgba(34, 198, 210, .40);
	border-radius: 5px; padding: 3px 7px; margin: 0 4px 4px 0; color: #0E7A82;
}
.rst-ba__verdict {
	margin-top: auto; padding-top: 10px; border-top: 1px dashed var(--rst-line);
	font-family: var(--rst-mono); font-size: 11px; font-weight: 700; color: #0E7A82;
}

/* the sovereignty note — we ship intelligence to you, we don't reach in */
.rst-ba__trust {
	margin: 16px auto 0; max-width: 76ch; text-align: center;
	font-size: 13px; line-height: 1.6; color: var(--rst-slate);
}
.rst-ba__trust strong { color: var(--rst-navy); }

/* below ~1000px four stages stop fitting; go 2x2 and turn the arrows down */
@media (max-width: 1000px) {
	.rst-ba__flow { flex-wrap: wrap; }
	.rst-ba__stage { flex: 1 1 calc(50% - 20px); }
	.rst-ba__arrow { flex: 0 0 14px; }
}
@media (max-width: 640px) {
	.rst-ba__flow { flex-direction: column; gap: 4px; }
	.rst-ba__stage { flex: 1 1 auto; }
	.rst-ba__arrow { flex: 0 0 26px; transform: rotate(90deg); }
	.rst-ba__verdict { margin-top: 10px; }
}

/* ============================================================
   Product-page hero icon (.rst-prod-icon)
   Small square brand mark used consistently across all 9 product
   pages, replacing the old pages' wide wordmark PNGs (icon + text
   baked into one raster image) with an icon-only mark that sits next
   to a real, accessible H1 — matching the pattern the 2026-redesign
   pages (Breach Alert, Bot Radar) already established.
   ============================================================ */
/* The hero column lays out as a wrapping flex row so the mark and the
   product name share a single line. Beaver Builder renders each module as
   a sibling block, so pairing them means letting the eyebrow and everything
   below claim a full row while only the icon + H1 sit together. */
/* Beaver Builder already sets display:flex + flex-direction:column on
   .fl-col-content to implement its column vertical-alignment option, so the
   direction must be stated explicitly — declaring display:flex alone leaves
   the column axis in place and every module keeps stacking (and centring,
   via BB's align-items). */
.rst-herocol .fl-col-content {
	display: flex; flex-flow: row wrap;
	align-items: center; align-content: flex-start; justify-content: flex-start;
}
.rst-herocol .fl-col-content > .fl-module { flex: 0 0 100%; }
.rst-herocol .fl-col-content > .rst-prod-icon { flex: 0 0 auto; }
/* flex-basis must be 0, not auto. In a wrapping flex container an item is
   moved to the next line when its *basis* exceeds the remaining space —
   shrinking is only applied to items already placed on that line. With
   `auto` the heading demanded its full content width (533px for "RST
   Threat Library" against 500px of remaining room) and wrapped, orphaning
   the mark on the line above. Basis 0 keeps it on the line and lets it grow
   into whatever space is left, wrapping its text internally if needed.
   min-width:0 is still required or it refuses to go below content width. */
.rst-herocol .fl-col-content > .rst-home-h1 { flex: 1 1 0; min-width: 0; }

.rst-prod-icon.fl-module { margin: 0 14px 0 0 !important; }
/* Beaver Builder puts a theme-wide margin:20px on .fl-module-content, which
   otherwise adds 40px of dead space around the mark. */
.rst-prod-icon .fl-module-content { margin: 0 !important; }
.rst-prod-icon .fl-photo-content { display: inline-block; }
.rst-prod-icon .fl-photo-img {
	width: 52px; height: 52px; object-fit: contain; display: block;
}
.rst-herocol .rst-home-h1 .fl-heading,
.rst-herocol .rst-home-h1 .fl-heading .fl-heading-text { margin: 0 !important; }

@media (max-width: 767px) {
	.rst-prod-icon .fl-photo-img { width: 42px; height: 42px; }
	.rst-prod-icon.fl-module { margin-right: 11px !important; }
}

/* The mark is centred against the H1 by the flex row, so the H1 module's
   vertical margins must stay symmetric — an asymmetric one (Bot Radar and
   Breach Alert each carried margin 0 top / 18 bottom) moves the module box
   centre without moving the text, and the mark reads as sitting low by half
   the difference. Cleared in the layout data; pinned here so a future
   per-module margin edit in the builder can't reintroduce it. */
.rst-herocol .rst-home-h1 > .fl-module-content {
	margin-top: 20px !important;
	margin-bottom: 20px !important;
}

/* ============================================================
   Product hero figure (.rst-herofig)
   Compact framed panel for the right-hand column of a product-page
   hero, showing what the product actually returns. Replaces the
   generic globe-and-magnifier clipart (attachment 701, reused on 23
   pages) that website-plan.md Step 6 calls out for removal. Uses the
   same chrome-framed treatment as .rst-teams__frame so the two read
   as one family.
   ============================================================ */
.rst-herofig * { box-sizing: border-box; }
.rst-herofig {
	background: #fff; border: 1px solid var(--rst-line); border-radius: 14px;
	box-shadow: 0 20px 44px rgba(30, 31, 75, .14); overflow: hidden;
	max-width: 440px; width: 100%; margin: 0 auto;
}
.rst-herofig__chrome {
	display: flex; align-items: center; gap: 6px;
	padding: 9px 12px; background: #f1f2f8; border-bottom: 1px solid var(--rst-line);
}
.rst-herofig__chrome i { width: 8px; height: 8px; border-radius: 50%; background: #d7dae8; display: inline-block; }
.rst-herofig__chrome span {
	font-family: var(--rst-mono); font-size: 10px; font-weight: 700;
	letter-spacing: .07em; text-transform: uppercase; color: #5F6682; margin-left: 6px;
}
/* Greys here were originally #7b83a8 / #9aa0bd / #aeb4cd / #a3a9c4 and
   measured 2.06–3.71:1 — all failing AA. Darkened to #5F6682 / #6B7396 /
   #868DAE, which clear 4.5:1 for the small text and 3:1 for the 19px/800
   muted stat (large-text threshold). The "muted" stat now reads as
   de-emphasised through its lighter *number* only; its label matches the
   normal one, because 9.5px can never qualify for the 3:1 large-text floor. */
.rst-herofig__body { padding: 15px 17px 17px; }
.rst-herofig__lead { font-size: 12px; line-height: 1.5; color: var(--rst-slate); margin: 0 0 11px; }

/* key/value rows — "here is the record you get back" */
.rst-herofig__rows { margin: 0 0 11px; }
.rst-herofig__row {
	display: flex; justify-content: space-between; gap: 10px; align-items: baseline;
	padding: 5px 0; border-bottom: 1px dashed var(--rst-line);
	font-family: var(--rst-mono); font-size: 11.5px;
}
.rst-herofig__row:last-child { border-bottom: none; }
.rst-herofig__k { color: #6B7396; white-space: nowrap; }
.rst-herofig__v { color: var(--rst-navy); font-weight: 700; text-align: right; word-break: break-word; }

/* chips */
.rst-herofig__chips { margin: 0 0 11px; }
.rst-herofig__chip {
	display: inline-block; font-family: var(--rst-mono); font-size: 10.5px;
	background: var(--rst-bg); border: 1px solid var(--rst-line); border-radius: 5px;
	padding: 3px 7px; margin: 0 4px 4px 0; color: var(--rst-navy);
}
/* #6B7396 measures 4.65:1 on white but only 4.38:1 here — the chip carries
   its own --rst-bg tint, which eats the margin. Slate keeps it clearly
   lighter than the navy chips beside it while clearing 4.5:1. */
.rst-herofig__chip--muted { color: var(--rst-slate); }

/* downward divider between stages */
.rst-herofig__div { text-align: center; color: #b9c0d8; margin: 2px 0 9px; line-height: 0; }
.rst-herofig__div svg { width: 17px; height: 17px; display: inline-block; }

/* verdict pills — the answer the product gives */
.rst-herofig__verdict {
	display: inline-block; font-family: var(--rst-mono); font-size: 11px; font-weight: 700;
	border-radius: 999px; padding: 4px 11px;
}
.rst-herofig__verdict--good { background: rgba(21, 122, 88, .10); color: #157A58; border: 1px solid rgba(21, 122, 88, .35); }
.rst-herofig__verdict--act  { background: rgba(179, 38, 30, .09); color: #B3261E; border: 1px solid rgba(179, 38, 30, .32); }
.rst-herofig__verdict--info { background: rgba(35, 95, 232, .09); color: var(--rst-blue); border: 1px solid rgba(35, 95, 232, .30); }

/* contrast stat pair (inventory vs observed) */
.rst-herofig__stat { padding: 8px 0; }
.rst-herofig__statnum { font-size: 25px; font-weight: 800; color: var(--rst-navy); line-height: 1.05; }
.rst-herofig__statlab {
	font-family: var(--rst-mono); font-size: 9.5px; text-transform: uppercase;
	letter-spacing: .08em; color: #6B7396; margin-top: 3px;
}
.rst-herofig__stat--muted .rst-herofig__statnum { color: #868DAE; font-size: 19px; }
.rst-herofig__stat--muted .rst-herofig__statlab { color: #6B7396; }

/* dark mono block — raw payload */
.rst-herofig__mono {
	font-family: var(--rst-mono); font-size: 10.5px; line-height: 1.55;
	background: var(--rst-navy); color: #d7e5ff; border-radius: 8px;
	padding: 10px 12px; margin: 0 0 11px; overflow-x: auto; white-space: pre;
}
.rst-herofig__note {
	font-size: 11.5px; line-height: 1.5; color: var(--rst-slate);
	margin: 10px 0 0; padding-top: 10px; border-top: 1px solid var(--rst-line);
}

@media (max-width: 900px) {
	.rst-herofig { max-width: 100%; margin-top: 26px; }
}

/* ============================================================
   Section band rhythm (.rst-band--*)
   The 2026 product pages (Breach Alert, Bot Radar) were built with
   every row on plain white — sharper copy than the old pages, but
   visually flat and generic. The old pages carried a photo/gradient/
   plain alternation that gave the brand its rhythm.

   These classes bring that rhythm back without the photo backgrounds:
   a soft tint for supporting sections and the *exact* diagonal
   gradient from the old pages
   (linear-gradient(258.32deg, #1E51C5 3.68%, #339AE6 117.98%))
   for the one punchy statement per page. Applied via the row's
   Advanced > Class field, so it stays editable in the builder.
   ============================================================ */
.rst-band--tint > .fl-row-content-wrap {
	background-color: var(--rst-bg);
}

/* The old pages' light stop is #339AE6, which only gives white text 3.04:1 —
   scraping the 3:1 large-text floor and failing outright for body copy.
   Darkened to #2A76C8 (4.64:1) so every text size is safe on this band.
   The old pages keep their original gradient; this class is new, so there
   is no regression there. */
.rst-band--grad > .fl-row-content-wrap {
	background-image: linear-gradient(258.32deg, #1E51C5 3.68%, #2A76C8 117.98%);
	background-color: #1E51C5; /* fallback before the gradient paints */
}

/* Everything inside a gradient band has to invert. Beaver Builder nests
   copy several levels down, so target the text primitives directly
   rather than relying on inheritance through .fl-* wrappers. */
.rst-band--grad .fl-rich-text,
.rst-band--grad .fl-rich-text p,
.rst-band--grad .fl-rich-text li,
.rst-band--grad .fl-heading,
.rst-band--grad .fl-heading .fl-heading-text,
.rst-band--grad h1, .rst-band--grad h2,
.rst-band--grad h3, .rst-band--grad h4 {
	color: #fff;
}
.rst-band--grad .fl-rich-text p { color: #e8eeff; }
.rst-band--grad .fl-rich-text strong { color: #fff; }

/* the mono eyebrow reads as cyan on navy elsewhere; on this blue it
   needs to be near-white to stay legible */
.rst-band--grad .rst-sec-eyebrow .fl-rich-text p,
.rst-band--grad .rst-ncd__eyebrow {
	color: #bfe0ff;
}

/* links and inline code on the gradient */
.rst-band--grad .fl-rich-text a { color: #fff; text-decoration: underline; text-underline-offset: 3px; }
.rst-band--grad .fl-rich-text code {
	font-family: var(--rst-mono); font-size: 12.5px;
	background: rgba(255, 255, 255, .16); color: #fff;
	border-radius: 5px; padding: 2px 7px;
}

/* White cards keep their light treatment when they sit on the gradient —
   this is what the old "Key Benefits" band did and it still reads well.

   IMPORTANT: the inversion rules above are a blanket "make text white",
   which is wrong inside any component that paints its own white
   background — there the text must stay dark or it disappears. Every
   such component has to restore its own colours here. This bit me on
   Bot Radar: a .rst-distinct card's paragraph went #e8eeff on #fff
   (~1.1:1, effectively invisible) until these restores were added. */
.rst-band--grad .rst-enr__card,
.rst-band--grad .rst-ncd__card {
	background: #fff;
}
.rst-band--grad .rst-enr__card h3,
.rst-band--grad .rst-ncd__card h3 { color: var(--rst-navy); }
.rst-band--grad .rst-enr__card p,
.rst-band--grad .rst-ncd__card p { color: var(--rst-slate); }

/* .rst-distinct is a white statement card used on the product pages */
.rst-band--grad .rst-distinct .fl-rich-text h2 { color: var(--rst-navy); }
.rst-band--grad .rst-distinct .fl-rich-text p,
.rst-band--grad .rst-distinct .fl-rich-text li { color: var(--rst-slate); }
.rst-band--grad .rst-distinct .fl-rich-text a { color: var(--rst-blue); text-decoration: none; }
.rst-band--grad .rst-distinct .fl-rich-text code {
	background: var(--rst-bg); color: var(--rst-navy);
}

/* generic safety net: any rich-text block the theme has given a white
   card background keeps dark body copy, whatever band it lands on */
.rst-band--grad .rst-srcgrid .fl-rich-text h3 { color: var(--rst-navy); }
.rst-band--grad .rst-srcgrid .fl-rich-text p { color: var(--rst-slate); }

/* a primary button on the gradient inverts to white-on-blue */
.rst-band--grad .rst-btn--p {
	background: #fff !important; color: #1E51C5 !important;
}
.rst-band--grad .rst-btn--s {
	border-color: rgba(255, 255, 255, .7) !important; color: #fff !important;
}

/* ============================================================
   Enrichment grid (.rst-enr)
   Shared by the AI SOC agents and SOAR solution pages. Each card is
   one callable enrichment, labelled with the actual API/MCP call so
   the reader can see it is a real endpoint, not a capability bullet.
   ============================================================ */
.rst-enr * { box-sizing: border-box; }
.rst-enr__grid {
	display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
}
.rst-enr__card {
	background: #fff; border: 1px solid var(--rst-line); border-radius: 14px;
	padding: 20px 22px; box-shadow: 0 8px 24px rgba(71, 95, 107, .06);
	display: flex; flex-direction: column;
}
.rst-enr__call {
	font-family: var(--rst-mono); font-size: 11.5px; font-weight: 700;
	color: var(--rst-blue); background: var(--rst-bg); border: 1px solid var(--rst-line);
	border-radius: 6px; padding: 4px 9px; align-self: flex-start; margin: 0 0 12px;
}
.rst-enr__card h3 {
	font-size: 16px; line-height: 1.35; font-weight: 800;
	color: var(--rst-navy); margin: 0 0 8px;
}
.rst-enr__card p {
	font-size: 14px; line-height: 1.6; color: var(--rst-slate); margin: 0;
}
.rst-enr__card p + p { margin-top: 8px; }
/* the pivot/hunting payoff line */
.rst-enr__card .rst-enr__pivot {
	margin-top: auto; padding-top: 12px; border-top: 1px dashed var(--rst-line);
	font-size: 13px; color: var(--rst-navy);
}
.rst-enr__note {
	margin-top: 18px; background: var(--rst-bg); border: 1px solid var(--rst-line);
	border-radius: 12px; padding: 18px 22px;
}
.rst-enr__note p { font-size: 14.5px; line-height: 1.65; color: var(--rst-slate); margin: 0; }
.rst-enr__note strong { color: var(--rst-navy); }
.rst-enr__note code {
	font-family: var(--rst-mono); font-size: 12.5px; background: #fff;
	border: 1px solid var(--rst-line); border-radius: 5px; padding: 2px 7px;
	color: var(--rst-navy);
}

/* worked playbook example — navy terminal-ish block (SOAR page) */
.rst-play {
	background: var(--rst-navy); border-radius: 16px; padding: 26px 28px;
	box-shadow: 0 18px 40px rgba(30, 31, 75, .18);
}
.rst-play__tag {
	font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .12em;
	font-size: 11px; font-weight: 700; color: var(--rst-agent);
	display: block; margin-bottom: 16px;
}
.rst-play__steps { list-style: none; margin: 0; padding: 0; counter-reset: play; }
.rst-play__steps li {
	counter-increment: play; position: relative; padding: 0 0 16px 42px;
	color: #cfd4ea; font-size: 14.5px; line-height: 1.6;
}
.rst-play__steps li:last-child { padding-bottom: 0; }
.rst-play__steps li::before {
	content: counter(play, decimal-leading-zero);
	position: absolute; left: 0; top: 1px;
	font-family: var(--rst-mono); font-size: 11px; font-weight: 700;
	color: var(--rst-agent); background: rgba(34, 198, 210, .10);
	border: 1px solid rgba(34, 198, 210, .3); border-radius: 6px; padding: 3px 6px;
}
.rst-play__steps code {
	font-family: var(--rst-mono); font-size: 12.5px; color: #bff3f7;
	background: rgba(255, 255, 255, .08); border-radius: 5px; padding: 2px 7px;
}
.rst-play__steps strong { color: #fff; }
.rst-play__out {
	margin-top: 18px; padding-top: 16px; border-top: 1px solid rgba(255, 255, 255, .12);
	font-size: 14px; line-height: 1.6; color: #cfd4ea;
}
.rst-play__out strong { color: #fff; }

/* ============================================================
   Babel band (.rst-babel) — multi-vendor intel ops
   "Same actor, four names" made literal: vendor aliases collapsing
   into one canonical profile.
   ============================================================ */
.rst-babel * { box-sizing: border-box; }
.rst-babel__names {
	display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin: 0 0 6px;
}
.rst-babel__name {
	font-family: var(--rst-mono); font-size: 13px; font-weight: 600;
	background: #fff; border: 1px solid var(--rst-line); border-radius: 999px;
	padding: 8px 16px; color: var(--rst-navy);
}
.rst-babel__name small {
	display: block; font-size: 10px; letter-spacing: .06em; text-transform: uppercase;
	color: var(--rst-slate); font-weight: 700; margin-top: 2px;
}
.rst-babel__funnel {
	text-align: center; color: var(--rst-slate); font-size: 22px; line-height: 1; margin: 14px 0;
}
.rst-babel__one {
	background: var(--rst-navy); border-radius: 14px; padding: 22px 26px; text-align: center;
	box-shadow: 0 18px 40px rgba(30, 31, 75, .18);
}
.rst-babel__one .rst-babel__canon {
	font-family: var(--rst-mono); font-size: 17px; font-weight: 700; color: #fff; display: block;
}
.rst-babel__one p {
	font-size: 14px; line-height: 1.6; color: #cfd4ea; margin: 8px auto 0; max-width: 72ch;
}

@media (max-width: 900px) {
	.rst-enr__grid { grid-template-columns: 1fr; }
	.rst-enr__card .rst-enr__pivot { margin-top: 12px; }
	.rst-play { padding: 22px 20px; }
	.rst-play__steps li { padding-left: 38px; }
}

/* 4-card variant: repeat(3,1fr) leaves a lone orphan card on its own row.
   Used on the CTI Assistant page's benefits grid. */
.rst-enr--2x2 .rst-enr__grid { grid-template-columns: repeat(2, 1fr); }
@media (max-width: 700px) {
	.rst-enr--2x2 .rst-enr__grid { grid-template-columns: 1fr; }
}

/* ============================================================
   CTI Assistant — role-tagged example questions (.rst-roles)
   Each chip pairs a job title with a question that role would
   plausibly ask, inside the "Ask it directly" artifact block.
   ============================================================ */
.rst-roles { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px 16px; margin-top: 4px; }
.rst-roles__item { border-top: 1px solid var(--rst-line); padding-top: 8px; }
.rst-roles__item:nth-child(-n+2) { border-top: none; padding-top: 0; }
.rst-roles__who {
	display: block; font-family: var(--rst-mono); font-size: 10px; font-weight: 700;
	text-transform: uppercase; letter-spacing: .07em; color: var(--rst-blue); margin-bottom: 3px;
}
.rst-roles__q { font-size: 13.5px; line-height: 1.5; color: var(--rst-navy); }

@media (max-width: 700px) {
	.rst-roles { grid-template-columns: 1fr; }
	.rst-roles__item:nth-child(-n+2) { border-top: 1px solid var(--rst-line); padding-top: 8px; }
	.rst-roles__item:first-child { border-top: none; padding-top: 0; }
}

/* ============================================================
   Contact page — "Contact Info" sidebar heading
   It was set to 60px inside a 289px sidebar column, so "Contact"
   (251px at that size) could not fit on one line and the inherited
   `overflow-wrap: break-word` split it mid-word as "Contac / t Info".
   It was also larger than the page's own H1 (52px), inverting the
   heading hierarchy — this is a card label, not a page title.
   ============================================================ */
.fl-node-ve51gq68fual .fl-heading,
.fl-node-ve51gq68fual .fl-heading-text {
	font-size: clamp(22px, 2.2vw, 26px);
	line-height: 1.25;
}

/* A heading should wrap between words or overflow visibly — never shatter
   a word into meaningless fragments. Applies to headings site-wide. */
.fl-heading, .fl-heading-text {
	overflow-wrap: normal;
	word-break: normal;
}

/* ============================================================
   Noise Control — "inside the known-good" depth section
   Sits between the category claim and the navy pipeline band, so it
   stays light. Content is an HTML module (.rst-ncd).
   ============================================================ */
.rst-ncd * { box-sizing: border-box; }

.rst-ncd__eyebrow {
	font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .14em;
	font-size: 12px; font-weight: 700; color: var(--rst-blue); margin: 0 0 10px;
}
.rst-ncd__title {
	font-size: clamp(26px, 3vw, 34px); line-height: 1.2; font-weight: 800;
	color: var(--rst-navy); margin: 0 0 14px;
}
.rst-ncd__lede {
	font-size: 16.5px; line-height: 1.62; color: var(--rst-slate);
	margin: 0 0 32px; max-width: 68ch;
}
.rst-ncd__lede em { color: var(--rst-navy); font-style: normal; font-weight: 700; }

.rst-ncd__grid {
	display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px;
}
.rst-ncd__card {
	background: #fff; border: 1px solid var(--rst-line); border-radius: 14px;
	padding: 24px 24px 22px; box-shadow: 0 8px 24px rgba(71, 95, 107, .06);
	display: flex; flex-direction: column;
}
.rst-ncd__n {
	font-family: var(--rst-mono); font-size: 12px; font-weight: 700;
	color: var(--rst-blue); letter-spacing: .08em; display: block; margin: 0 0 10px;
}
.rst-ncd__card h3 {
	font-size: 17px; line-height: 1.35; font-weight: 800;
	color: var(--rst-navy); margin: 0 0 10px;
}
.rst-ncd__card p {
	font-size: 14.5px; line-height: 1.65; color: var(--rst-slate); margin: 0 0 10px;
}
.rst-ncd__card p:last-child { margin-bottom: 0; }

/* the "so what" line — de-emphasised label, same weight of text */
.rst-ncd__why {
	margin-top: auto; padding-top: 12px; border-top: 1px dashed var(--rst-line);
	font-size: 13.5px !important;
}
/* darker than --rst-good (#1FA97A): the token only reaches 2.99:1 on white,
   which fails AA at this 11px label size. #157A58 measures 5.31:1. */
.rst-ncd__why b {
	font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .07em;
	font-size: 11px; color: #157A58; display: block; margin-bottom: 5px;
	font-weight: 700;
}

/* golden-image / NSRL ruleset chips */
.rst-ncd__chips { margin-top: auto; padding-top: 12px; }
.rst-ncd__chips code {
	font-family: var(--rst-mono); font-size: 11.5px; background: var(--rst-bg);
	border: 1px solid var(--rst-line); border-radius: 6px; padding: 4px 8px;
	color: var(--rst-navy); margin: 0 5px 5px 0; display: inline-block;
}
.rst-ncd__chips .rst-ncd__more {
	background: transparent; border-color: transparent; color: var(--rst-slate);
}

/* the differentiator callout — the one detail competitors don't handle */
.rst-ncd__flag {
	margin-top: 20px; background: var(--rst-navy); border-radius: 14px;
	padding: 24px 28px; box-shadow: 0 18px 40px rgba(30, 31, 75, .18);
}
.rst-ncd__flagtag {
	font-family: var(--rst-mono); text-transform: uppercase; letter-spacing: .12em;
	font-size: 11px; font-weight: 700; color: var(--rst-agent);
	display: block; margin-bottom: 10px;
}
.rst-ncd__flag p {
	font-size: 15.5px; line-height: 1.68; color: #cfd4ea; margin: 0; max-width: 84ch;
}
.rst-ncd__flag strong { color: #fff; }

@media (max-width: 900px) {
	.rst-ncd__grid { grid-template-columns: 1fr; }
	.rst-ncd__why, .rst-ncd__chips { margin-top: 14px; }
	.rst-ncd__flag { padding: 20px 22px; }
}
