/*
 * CRITICAL CATALYST website — cc-web.css (cc-web v0.16), the responsive token layer.
 * Spec: tokens v0.3 §1, §3, §5.2, §7, §9, §10, §14; component library v0.3 §0.2, §0.7.
 * Static tokens are V4 variables in the kit (B4); this file holds only what changes per
 * breakpoint or per area, and the rules V4 class CSS cannot express. Selectors: :root,
 * html, cc- classes and attribute states inside cc- scopes only (TOK §1.1 cascade rule).
 * Breakpoints (kit, TOK §7.1): laptop ≤ 1280, tablet ≤ 960, mobile ≤ 700.
 */

/* Type scale (TOK §5.2): desktop values; rem at a 16 px base (REV #34). */
:root {
	--cc-fs-display: 6rem;      --cc-lh-display: 6.5rem;
	--cc-fs-1: 3.5rem;          --cc-lh-1: 4rem;
	--cc-fs-2: 3rem;            --cc-lh-2: 3.5rem;
	--cc-fs-3: 2.5rem;          --cc-lh-3: 3rem;
	--cc-fs-4: 2rem;            --cc-lh-4: 2.5rem;
	--cc-fs-5: 1.5rem;          --cc-lh-5: 2rem;
	--cc-fs-6: 1.25rem;         --cc-lh-6: 1.5rem;
	--cc-fs-lede: 1.125rem;     --cc-lh-lede: 1.5rem;
	--cc-fs-body: 1.0625rem;    --cc-lh-body: 1.5625rem;
	--cc-fs-body-sm: 1rem;      --cc-lh-body-sm: 1.5rem;
	--cc-fs-caption: 0.875rem;  --cc-lh-caption: 1.25rem;
	--cc-fs-micro: 0.75rem;     --cc-lh-micro: 1rem;
	--cc-fs-label-caps: 0.75rem; --cc-lh-label-caps: 1rem;
	--cc-fs-numeral-lg: 3.5rem; --cc-lh-numeral-lg: 4rem;
	--cc-fs-numeral: 2.5rem;    --cc-lh-numeral: 3rem;
	--cc-fs-index: 1.125rem;    --cc-lh-index: 1.5rem;

	/* Layout (TOK §7, §9) */
	--cc-gutter: 56px;
	--cc-header-h: 80px;
	--cc-section-gap: 80px;
	--cc-logo-ink-h: 24px;
	--cc-logo-ink-h-footer: 21px;
}

@media (max-width: 1280px) {
	:root {
		--cc-fs-display: 5.5rem;  --cc-lh-display: 6rem;
		--cc-fs-1: 3rem;          --cc-lh-1: 3.5rem;
	}
}

@media (max-width: 960px) {
	:root {
		--cc-gutter: 32px;
		--cc-logo-ink-h: 22px;
	}
}

@media (max-width: 700px) {
	:root {
		--cc-fs-display: 3.25rem; --cc-lh-display: 3.75rem;
		--cc-fs-1: 2.5rem;        --cc-lh-1: 3rem;
		--cc-fs-2: 2rem;          --cc-lh-2: 2.5rem;
		--cc-fs-3: 1.5rem;        --cc-lh-3: 2rem;
		--cc-fs-4: 1.5rem;        --cc-lh-4: 2rem;
		--cc-fs-6: 1.125rem;      --cc-lh-6: 1.5rem;
		--cc-fs-body: 1rem;       --cc-lh-body: 1.5rem;
		--cc-fs-numeral-lg: 2.5rem; --cc-lh-numeral-lg: 3rem;
		--cc-fs-numeral: 2rem;    --cc-lh-numeral: 2.5rem;
		--cc-fs-index: 0.875rem;  --cc-lh-index: 1.25rem;
		--cc-gutter: 16px;
		--cc-header-h: 64px;
		--cc-section-gap: 56px;
		--cc-logo-ink-h: 21px;
	}
}

/* Area sets (TOK §3): one set per surface; never text colour. */
.cc-area-cos  { --cc-area-main: var(--cc-lavander, #846df2); --cc-area-tag: var(--cc-lavander-02, #ddd2f7); --cc-area-ground: var(--cc-lavander-01, #f1edf9); }
.cc-area-med  { --cc-area-main: var(--cc-hospital, #3b8ced); --cc-area-tag: var(--cc-hospital-02, #9fbdf4); --cc-area-ground: var(--cc-hospital-01, #d1dcf9); }
.cc-area-ph   { --cc-area-main: var(--cc-field, #6beda0);    --cc-area-tag: var(--cc-field-02, #d0f4e1);    --cc-area-ground: var(--cc-field-01, #edf7f2); }
.cc-area-none { --cc-area-main: var(--cc-steel, #bfbfbf);    --cc-area-tag: var(--cc-silver, #d8d8d6);      --cc-area-ground: var(--cc-marble, #f3f2ee); }
.cc-area-cos, .cc-area-med, .cc-area-ph, .cc-area-none { --cc-border-area: var(--cc-area-main); }

/* Page-level rules (TOK §5.1, §7; criteria 1–3 of the review carry-over list). */
html {
	font-synthesis: none;
	scroll-padding-top: calc(var(--cc-header-h) + 16px);
}

:focus-visible {
	outline: var(--cc-focus-width, 2px) solid var(--cc-focus-color, #262321);
	outline-offset: var(--cc-focus-offset, 3px);
}

/* Marble focus ring on Charcoal surfaces (TOK §4). */
.cc-surface-inverse :focus-visible {
	outline-color: var(--cc-marble, #f3f2ee);
}

/* Focused and selected route node: ring outside the selection ring (S-03). */
.cc-route [aria-current="true"]:focus-visible {
	outline-offset: var(--cc-focus-offset-selected, 7px);
}

/* Visually hidden, still read (CL §2.1). */
.cc-vh {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

/* Empty lanes hidden on home and area pages (CL §2.16; D66 O5): a lane whose loop printed no
   item. Elementor prints the empty state in every case (inline display:none when items exist),
   so a marker inside it cannot tell (D77(2)). Hub and listing lanes are not .cc-lane. */
.elementor .cc-lane:not(:has([data-element_type="e-collection-loop-item"])):not(:has(.cc-lane-empty:not(:empty))) {
	display: none;
}

/* Empty Component slots (B5 step 2). A section head with no sub (CL §2.3) prints an
   empty <p>; an unused role pill (CL §2.12) prints a <button>, because e-button falls
   back to button when its link is empty. */
.elementor .cc-sec-head__sub:empty {
	display: none;
}

.elementor .cc-role-pills .cc-pill-item:has(> button.cc-pill--link) {
	display: none;
}

/* Optional links in Components sit in a .cc-slot; an empty link prints a <button>.
   Hide rules are scoped under .elementor: Elementor prints its per-page class CSS
   after this file, so a rule of equal specificity would lose. */
.elementor .cc-slot:has(> button) {
	display: none;
}

/* Empty optional text slots (CL §2.14, §2.16, §2.22, §2.25). */
.elementor .cc-pill:empty,
.elementor .cc-scope-item:empty,
.elementor .cc-lane__note:empty,
.elementor .cc-tile__meta:empty {
	display: none;
}

.elementor .cc-evidence__line:has(> .cc-evidence__text:empty),
.elementor .cc-evidence:not(:has(.cc-evidence__text:not(:empty))),
.elementor .cc-lane__roles:not(:has(.cc-pill:not(:empty))),
.elementor .cc-lane-id__name:has(> .cc-lane-id__title:empty),
.elementor .cc-lane-id__team:has(> .cc-lane-id__names:empty) {
	display: none;
}

/* Wedge marks (TOK §9; D20). Pseudo-elements, which V4 class CSS cannot hold. */
.cc-go::after {
	content: "";
	flex: none;
	width: 32px;
	height: 8px;
	background: currentColor;
	clip-path: polygon(0 50%, 100% 0, 100% 100%);
	transform-origin: left center;
	transition: transform var(--cc-dur-base, 250ms) var(--cc-ease-standard, ease);
}

.cc-go:hover::after,
.cc-go:focus-visible::after {
	transform: var(--cc-go-stretch, scaleX(1.5));
}

.cc-person__name::before {
	content: "";
	flex: none;
	width: 20px;
	height: 6px;
	background: var(--cc-charcoal, #262321);
	clip-path: polygon(0 50%, 100% 0, 100% 100%);
	transform: scaleX(-1);
}

/* Disclosure summaries: no native marker (CL §2.13, §2.25). */
.cc-toggle,
.cc-disclosure__summary {
	list-style: none;
}

.cc-toggle::-webkit-details-marker,
.cc-disclosure__summary::-webkit-details-marker {
	display: none;
}

@media (min-width: 701px) {
	.cc-header {
		-webkit-backdrop-filter: saturate(1.2) blur(6px);
		backdrop-filter: saturate(1.2) blur(6px);
	}
}

@media (prefers-reduced-transparency: reduce) {
	.cc-header {
		-webkit-backdrop-filter: none;
		backdrop-filter: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation: none !important;
		transition: none !important;
	}
	html {
		scroll-behavior: auto;
	}
}

/* ------------------------------------------------------------------
   V3 bridge: Elementor Pro Form inside .cc-form (CL §0.1, §2.32; D73).
   Targets Elementor's own form classes only under the cc-form scope.
   Recheck after every Elementor update (TOK §1.1). The widget itself
   carries the button colours and the field background (builder).
   ------------------------------------------------------------------ */
.elementor .cc-form {
	max-width: 640px;
	font-family: var(--cc-font-family);
	color: var(--cc-text);
}

.elementor .cc-form * {
	font-weight: 400;
}

/* Hidden fields and the honeypot take no room (the widget adds a row gap per group). */
.elementor .cc-form .elementor-field-type-hidden,
.elementor .cc-form .elementor-field-type-text:not(.elementor-field-group) {
	display: none;
}

.elementor .cc-form .elementor-field-group > .elementor-field-label {
	margin-bottom: var(--cc-space-2);
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	color: var(--cc-text);
}

.elementor .cc-form .elementor-field-group .elementor-field-textual {
	min-height: 48px;
	padding: var(--cc-pad-input);
	border: 1px solid var(--cc-border-control);
	border-radius: var(--cc-radius-field);
	font-family: inherit;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	color: var(--cc-text);
}

.elementor .cc-form .elementor-field-group .elementor-field-textual:hover {
	border-color: var(--cc-border-control-hover);
}

/* Elementor removes the outline on focus; the token ring comes back (TOK §4). */
.elementor .cc-form .elementor-field-group .elementor-field-textual:focus-visible,
.elementor .cc-form .elementor-field-option input:focus-visible {
	outline: var(--cc-focus-width) solid var(--cc-focus-color);
	outline-offset: var(--cc-focus-offset);
	box-shadow: none;
}

.elementor .cc-form .elementor-field-group .elementor-select-wrapper::before {
	color: var(--cc-text);
	text-shadow: none;
}

/* Help text: an HTML field right after its input. */
.elementor .cc-form .elementor-field-type-html {
	display: block;
	margin-top: calc(var(--cc-space-2) - var(--cc-space-4));
}

.elementor .cc-form .cc-help {
	margin: 0;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

/* Choice pills (CL §2.7; S-06: outline = control, Charcoal fill when chosen; S15). */
.elementor .cc-form .elementor-field-subgroup {
	gap: var(--cc-space-2);
}

.elementor .cc-form .elementor-field-subgroup .elementor-field-option {
	display: inline-flex;
	align-items: center;
	gap: var(--cc-space-2);
	min-height: 44px;
	padding: var(--cc-space-1) var(--cc-space-3);
	border: 1px solid var(--cc-border-control);
	border-radius: var(--cc-radius-pill);
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
}

/* Checkbox and radio pills only: the consent (acceptance) line never takes the fill. */
.elementor .cc-form :is(.elementor-field-type-checkbox, .elementor-field-type-radio) .elementor-field-option:has(input:checked) {
	background-color: var(--cc-state-selected-bg);
	border-color: var(--cc-state-selected-bg);
	color: var(--cc-marble);
}

.elementor .cc-form .elementor-field-option input {
	accent-color: var(--cc-charcoal);
	margin: 0;
}

/* Consent (acceptance) is a sentence, not a pill. */
.elementor .cc-form .elementor-field-type-acceptance .elementor-field-option {
	min-height: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	align-items: flex-start;
	background: none;
	color: var(--cc-text);
}

.elementor .cc-form .elementor-field-type-acceptance .elementor-field-option input {
	margin-top: 4px;
}

.elementor .cc-form .elementor-field-option a,
.elementor .cc-form-notes a {
	color: var(--cc-text);
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* Submit: primary button (CL §2.6). Full width only on phones. */
.elementor .cc-form .e-form__buttons {
	flex-basis: auto;
	max-width: none;
	width: auto;
}

.elementor .cc-form .elementor-button {
	flex-basis: auto;
	width: auto;
	min-height: 46px;
	padding: var(--cc-pad-button);
	border-radius: var(--cc-radius-pill);
	font-family: inherit;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
}

.elementor .cc-form .elementor-button:active {
	background-color: var(--cc-leather);
}

@media (max-width: 700px) {
	.elementor .cc-form .e-form__buttons,
	.elementor .cc-form .elementor-button {
		flex-basis: 100%;
		width: 100%;
	}
}

/* Field error: 4 px Charcoal rule on the group, Charcoal message with a Danger "!" (S-02). */
.elementor .cc-form .elementor-field-group.elementor-error {
	padding-left: var(--cc-space-3);
	border-left: 4px solid var(--cc-state-error-rule);
}

/* The help text under an errored field is its own group: the rule and indent carry on to it,
   with no gap (the help group is pulled up the full row gap, then padded back by 8 px). */
.elementor .cc-form .elementor-field-group.elementor-error + .elementor-field-type-html {
	margin-top: calc(var(--cc-space-4) * -1);
	padding-top: var(--cc-space-2);
	padding-left: var(--cc-space-3);
	border-left: 4px solid var(--cc-state-error-rule);
}

.elementor .cc-form .elementor-error .elementor-field {
	border-color: var(--cc-border-control);
}

.elementor .cc-form .elementor-field-group .elementor-message {
	margin: var(--cc-space-2) 0 0;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text);
}

.elementor .cc-form .elementor-message::before {
	content: "!";
	display: inline-grid;
	place-items: center;
	width: 1.25em;
	height: 1.25em;
	margin-inline-end: var(--cc-space-2);
	border-radius: var(--cc-radius-round);
	background: var(--cc-danger);
	color: var(--cc-charcoal);
	font-family: inherit;
	font-size: inherit;
}

/* Form-level messages: success band and failure band (CL §2.32 states). */
.elementor .cc-form .elementor-message.elementor-message-success,
.elementor .cc-form .elementor-message.form-message-success {
	padding: var(--cc-space-3);
	background: var(--cc-state-success-bg);
	color: var(--cc-text);
	line-height: var(--cc-lh-body-sm);
}

.elementor .cc-form .elementor-message.elementor-message-success::before,
.elementor .cc-form .elementor-message.form-message-success::before {
	content: none;
}

.elementor .cc-form .elementor-form > .elementor-message-danger {
	padding: var(--cc-space-3);
	border-left: 4px solid var(--cc-state-error-summary-rule);
	background: var(--cc-state-error-bg);
	color: var(--cc-text);
	line-height: var(--cc-lh-body-sm);
}

/* Lines under the form: who replies, privacy. */
.elementor .cc-form-notes p {
	margin: 0 0 var(--cc-space-2);
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

/* ------------------------------------------------------------------
   B5 step 3 Components (cc-web v0.10). Rules class CSS cannot hold:
   pseudo-elements, :has(), states of children, shortcode and V3 output.
   Overrides of class CSS are scoped .elementor (class CSS prints later).
   ------------------------------------------------------------------ */

/* FAQ (CL §2.15): no native marker; a decorative + that turns to × when open. */
.cc-faq__q {
	list-style: none;
}

.cc-faq__q::-webkit-details-marker {
	display: none;
}

.cc-faq__q::after {
	content: "+";
	flex: none;
	font-size: var(--cc-fs-5);
	line-height: var(--cc-lh-6);
	transition: transform var(--cc-dur-fast, 200ms) var(--cc-ease-standard, ease);
}

details[open] > .cc-faq__q::after {
	transform: rotate(45deg);
}

.elementor .cc-faq__item:has(> .cc-faq__q .cc-t-6:empty) {
	display: none;
}

/* Briefing card (CL §2.17): one link, stretched over the card; meta from [cc_card_meta]. */
.cc-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--cc-space-2);
	margin: 0;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

.cc-meta-pill {
	display: inline-flex;
	align-items: center;
	padding: var(--cc-pad-pill);
	border-radius: var(--cc-radius-pill);
	background: var(--cc-silver);
	color: var(--cc-text-secondary);
}

.elementor .cc-card > .elementor-widget-shortcode {
	margin: 0;
}

.elementor .cc-card__title a {
	color: inherit;
	text-decoration: none;
}

.cc-card__title a::after {
	content: "";
	position: absolute;
	inset: 0;
}

.elementor .cc-card:hover .cc-card__title a {
	text-decoration: underline;
}

.cc-card__title a:focus-visible {
	outline: none;
}

.cc-card:has(.cc-card__title a:focus-visible) {
	outline: var(--cc-focus-width, 2px) solid var(--cc-focus-color, #262321);
	outline-offset: var(--cc-focus-offset, 3px);
}

.cc-card:hover .cc-card__read::after {
	transform: var(--cc-go-stretch, scaleX(1.5));
}

/* Featured: the first card of a lane (CL §2.16, §2.17). */
.elementor .cc-lane [data-element_type="e-collection-loop-item"]:first-child .cc-card__title {
	font-size: var(--cc-fs-4);
	line-height: var(--cc-lh-4);
}

.elementor .cc-lane [data-element_type="e-collection-loop-item"]:first-child .cc-card__excerpt {
	display: block;
}

.elementor .cc-lane [data-element_type="e-collection-loop-item"]:first-child .cc-card__read {
	display: inline-flex;
}

/* Links inside text slots: role name, rung email, document link. */
.elementor .cc-role-row__name a,
.elementor .cc-rung__email a,
.elementor .cc-doclink__link a {
	color: inherit;
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

/* Roles hub market filter (CL §2.21): native radios as choice pills (S-06), no script. */
.elementor .cc-roles > div > .elementor-widget-html {
	margin: 0;
}

.cc-mkt-filter {
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

.cc-mkt-filter__legend {
	margin: 0 0 var(--cc-space-2);
	padding: 0;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

.cc-mkt-filter__opts {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cc-space-2);
}

.cc-mkt-filter input {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: 0;
	opacity: 0;
}

.cc-mkt-filter label {
	display: inline-flex;
	align-items: center;
	gap: var(--cc-space-1);
	min-height: 44px;
	padding: 0 var(--cc-space-3);
	border: 1px solid var(--cc-border-control);
	border-radius: var(--cc-radius-pill);
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	color: var(--cc-text);
	cursor: pointer;
}

.cc-mkt-filter label:hover {
	border-color: var(--cc-border-control-hover);
}

.cc-mkt-filter input:checked + label {
	border-color: var(--cc-state-selected-bg);
	background: var(--cc-state-selected-bg);
	color: var(--cc-marble);
}

.cc-mkt-filter input:checked + label::before {
	content: "\2713";
}

.cc-mkt-filter input:focus-visible + label {
	outline: var(--cc-focus-width, 2px) solid var(--cc-focus-color, #262321);
	outline-offset: var(--cc-focus-offset, 3px);
}

.cc-mkt-line {
	display: none;
	max-width: 62ch;
	margin: var(--cc-space-3) 0 0;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	color: var(--cc-text-secondary);
}

.cc-roles:has(#cc-mkt-eu:checked) .cc-mkt-line--eu,
.cc-roles:has(#cc-mkt-uk:checked) .cc-mkt-line--uk,
.cc-roles:has(#cc-mkt-us:checked) .cc-mkt-line--us,
.cc-roles:has(#cc-mkt-pt:checked) .cc-mkt-line--pt {
	display: block;
}

.elementor .cc-roles:has(#cc-mkt-eu:checked) .cc-role-slot:not(.cc-m-eu),
.elementor .cc-roles:has(#cc-mkt-uk:checked) .cc-role-slot:not(.cc-m-uk),
.elementor .cc-roles:has(#cc-mkt-us:checked) .cc-role-slot:not(.cc-m-us),
.elementor .cc-roles:has(#cc-mkt-pt:checked) .cc-role-slot:not(.cc-m-pt) {
	display: none;
}

.elementor .cc-roles:has(#cc-mkt-eu:checked) .cc-role-card:not(:has(.cc-m-eu)) .cc-role-card__none,
.elementor .cc-roles:has(#cc-mkt-uk:checked) .cc-role-card:not(:has(.cc-m-uk)) .cc-role-card__none,
.elementor .cc-roles:has(#cc-mkt-us:checked) .cc-role-card:not(:has(.cc-m-us)) .cc-role-card__none,
.elementor .cc-roles:has(#cc-mkt-pt:checked) .cc-role-card:not(:has(.cc-m-pt)) .cc-role-card__none {
	display: block;
}

.elementor .cc-roles:has(#cc-mkt-eu:checked) .cc-entity-slot.cc-m-eu .cc-entity,
.elementor .cc-roles:has(#cc-mkt-uk:checked) .cc-entity-slot.cc-m-uk .cc-entity,
.elementor .cc-roles:has(#cc-mkt-us:checked) .cc-entity-slot.cc-m-us .cc-entity,
.elementor .cc-roles:has(#cc-mkt-pt:checked) .cc-entity-slot.cc-m-pt .cc-entity {
	border-color: var(--cc-border-rule);
}

/* "On this page" key (CL §2.24): wedge rule above the list. */
.cc-onpage::before {
	content: "";
	display: block;
	width: 120px;
	height: 8px;
	background: var(--cc-charcoal, #262321);
	clip-path: polygon(0 50%, 100% 0, 100% 100%);
}

/* How we work strip (CL §2.26): no rule before the first column of a row; unset icons hidden. */
.elementor .cc-position__icon[src*="placeholder"] {
	display: none;
}

@media (min-width: 1281px) {
	.elementor .cc-strip > .cc-position:nth-child(5n+1) {
		padding-left: 0;
		border-left: 0;
	}
}

@media (min-width: 701px) and (max-width: 1280px) {
	.elementor .cc-strip > .cc-position:nth-child(3n+1) {
		padding-left: 0;
		border-left: 0;
	}
}

@media (max-width: 700px) {
	.elementor .cc-strip > .cc-position + .cc-position {
		border-top: 1px solid var(--cc-border-hairline);
	}
}

/* Next-step rungs (CL §2.29): the Follow form template sits in a V3 Shortcode widget. */
.elementor .cc-rung > .elementor-widget-shortcode {
	margin: 0;
}

@media (max-width: 700px) {
	.elementor .cc-rung__actions .cc-btn {
		flex: 1 1 100%;
	}
}

/* Listing filter bar (CL §2.35), printed by [cc_listing_filter]. */
.cc-filter-bar {
	margin: 0 0 var(--cc-space-4);
}

.cc-filter__fields {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr)) auto;
	align-items: end;
	gap: var(--cc-space-3);
}

.cc-filter__field label {
	display: block;
	margin-bottom: var(--cc-space-2);
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	color: var(--cc-text);
}

.cc-filter select {
	width: 100%;
	min-height: 48px;
	padding: var(--cc-pad-input);
	border: 1px solid var(--cc-border-control);
	border-radius: var(--cc-radius-field);
	background: var(--cc-white);
	font-family: inherit;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	color: var(--cc-text);
}

.cc-filter select:hover {
	border-color: var(--cc-border-control-hover);
}

.cc-filter__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--cc-space-3);
}

.cc-filter__apply {
	min-height: 48px;
	padding: var(--cc-pad-button);
	border: 1px solid var(--cc-charcoal);
	border-radius: var(--cc-radius-pill);
	background: transparent;
	font-family: inherit;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	color: var(--cc-text);
	cursor: pointer;
}

.cc-filter__apply:hover {
	background: var(--cc-charcoal);
	color: var(--cc-marble);
}

.cc-filter__clear {
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	color: var(--cc-text);
	text-decoration: underline;
}

.cc-filter__count {
	margin: var(--cc-space-3) 0 0;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

@media (max-width: 960px) {
	.cc-filter__fields {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.cc-filter__actions {
		grid-column: 1 / -1;
	}
}

@media (max-width: 700px) {
	.cc-filter__fields {
		grid-template-columns: minmax(0, 1fr);
	}

	.cc-filter__apply {
		flex: 1 1 100%;
	}
}

/* cc-ui.js (cc-web v0.11). A group or line the script hides stays hidden (field groups are flex). */
.elementor .cc-form .elementor-field-group[hidden],
.elementor .cc-form-notes .cc-form-role-line[hidden] {
	display: none;
}

/* Error summary (CL §2.32 states): Danger-01 band, Charcoal rule, links to each field; takes focus. */
.elementor .cc-form .elementor-form > .cc-form-summary {
	margin: 0 0 var(--cc-space-4);
}

.elementor .cc-form .cc-form-summary::before {
	content: none;
}

.elementor .cc-form .cc-form-summary p {
	margin: 0;
}

.elementor .cc-form .cc-form-summary ul {
	margin: var(--cc-space-2) 0 0;
	padding-left: 1.25em;
}

.elementor .cc-form .cc-form-summary a {
	color: var(--cc-text);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.elementor .cc-form .cc-form-summary:focus-visible {
	outline: var(--cc-focus-width, 2px) solid var(--cc-focus-color, #262321);
	outline-offset: var(--cc-focus-offset, 3px);
}

/* ------------------------------------------------------------------
   Route instruments (CL §2.8–§2.10; B6). Markup from [cc_route] and the
   route module of cc-ui.js; the mount is the panel body (area ground).
   Title, eyebrow and people are V4 widgets above and below it.
   ------------------------------------------------------------------ */
.cc-route {
	position: relative;
	overflow: hidden;
	padding: var(--cc-space-4) var(--cc-space-5) 28px;
	background: var(--cc-area-ground);
	color: var(--cc-text);
}

.cc-route > * {
	position: relative;
}

.cc-route p,
.cc-route ol,
.cc-route ul {
	margin: 0;
}

/* Buttons and go-links, in case the page prints no cc-btn / cc-go class CSS. */
.cc-route .cc-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: var(--cc-pad-button, 12px 16px);
	border: 1px solid var(--cc-charcoal);
	border-radius: var(--cc-radius-pill);
	background: transparent;
	color: var(--cc-charcoal);
	font: inherit;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	text-decoration: none;
	cursor: pointer;
}

.cc-route .cc-btn--primary {
	background: var(--cc-charcoal);
	color: var(--cc-marble);
}

.cc-route .cc-go,
.cc-rstrip .cc-go {
	display: inline-flex;
	align-items: center;
	gap: var(--cc-space-2);
	min-height: 44px;
	color: var(--cc-charcoal);
	text-decoration: none;
}

/* Inputs: native radios and checkboxes as choice pills in labelled fieldsets. */
.cc-route__inputs {
	display: grid;
	grid-template-columns: 1.25fr 1fr;
	gap: 28px;
	margin-bottom: 26px;
}

.cc-route__inputs:has(> .cc-route__fs:only-child) {
	grid-template-columns: 1fr;
}

.cc-route__fs {
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

.cc-route__fs legend {
	display: flex;
	gap: var(--cc-space-2);
	align-items: baseline;
	margin: 0 0 var(--cc-space-3);
	padding: 0;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
}

.cc-route__n {
	color: var(--cc-text-secondary);
}

.cc-route__choices {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cc-space-2);
}

.cc-route--ph .cc-route__choices {
	flex-direction: column;
	align-items: flex-start;
}

.cc-route__choice {
	position: relative;
	display: inline-flex;
}

.cc-route__choice input {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	margin: 0;
	opacity: 0;
	cursor: pointer;
}

.cc-route__choice span {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 var(--cc-space-3);
	border: 1px solid var(--cc-border-control);
	border-radius: var(--cc-radius-pill);
	background: var(--cc-surface-veil-soft, rgba(255, 255, 255, .35));
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	transition: background-color var(--cc-dur-fast, 200ms), border-color var(--cc-dur-fast, 200ms), color var(--cc-dur-fast, 200ms);
}

.cc-route__choice:hover span {
	border-color: var(--cc-border-control-hover);
}

.cc-route__choice input:checked + span {
	border-color: var(--cc-state-selected-bg);
	background: var(--cc-state-selected-bg);
	color: var(--cc-marble);
}

.cc-route__choice input:focus-visible + span {
	outline: var(--cc-focus-width, 2px) solid var(--cc-focus-color, #262321);
	outline-offset: var(--cc-focus-offset, 3px);
}

/* From–to bar (decorative). */
.cc-route__ab {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--cc-space-3);
	margin-bottom: var(--cc-space-1) !important;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

.cc-route__ab-line {
	flex: 1;
	height: 7px;
	background: var(--cc-charcoal);
	clip-path: polygon(0 50%, 100% 0, 100% 100%);
}

/* Rows: market code and cite, then the track with its nodes. */
.cc-route__row {
	display: grid;
	grid-template-columns: 96px minmax(0, 1fr);
	gap: var(--cc-space-3);
	padding: 20px 0 var(--cc-space-3);
	border-bottom: 1px solid var(--cc-border-row, rgba(38, 35, 33, .16));
	animation: cc-rowin var(--cc-dur-row, 500ms) var(--cc-ease-standard, ease) both;
	animation-delay: calc(var(--cc-i, 0) * var(--cc-stagger-row, 90ms));
}

.cc-route__code {
	display: block;
	font-size: var(--cc-fs-numeral);
	line-height: var(--cc-lh-numeral);
	letter-spacing: -.03em;
}

.cc-route__cite,
.cc-route__ent {
	display: block;
	margin-top: var(--cc-space-2);
	font-size: var(--cc-fs-micro);
	line-height: var(--cc-lh-micro);
	color: var(--cc-text-secondary);
}

.cc-route__ent {
	margin-top: var(--cc-space-1);
}

.cc-route__branch {
	margin-bottom: var(--cc-space-2) !important;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

.cc-route__track + .cc-route__branch {
	margin-top: 18px;
}

.cc-route__track {
	position: relative;
	min-width: 0;
	padding-top: var(--cc-space-1);
}

.cc-route__wedge {
	position: absolute;
	top: 15px;
	right: 0;
	left: 0;
	height: 9px;
	background: var(--cc-area-main);
	clip-path: polygon(0 50%, 100% 0, 100% 100%);
	transform-origin: left center;
	animation: cc-grow var(--cc-dur-route, 800ms) var(--cc-ease-route, cubic-bezier(.2, .7, .2, 1)) both;
	animation-delay: calc(var(--cc-i, 0) * var(--cc-stagger-row, 90ms) + 60ms);
}

.cc-route__row.is-open .cc-route__wedge {
	background: repeating-linear-gradient(90deg, var(--cc-area-main) 0 6px, transparent 6px 12px);
}

.cc-route__steps {
	position: relative;
	display: grid;
	grid-auto-columns: minmax(0, 1fr);
	grid-auto-flow: column;
	gap: var(--cc-space-2);
}

.cc-route__step {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 9px;
	min-width: 0;
	animation: cc-fade var(--cc-dur-enter, 400ms) var(--cc-ease-standard, ease) both;
	animation-delay: calc(var(--cc-i, 0) * var(--cc-stagger-row, 90ms) + 140ms + var(--cc-j, 0) * var(--cc-stagger-step, 60ms));
}

.cc-route__node {
	flex: none;
	box-sizing: border-box;
	display: block;
	width: var(--cc-node-size, 24px);
	height: var(--cc-node-size, 24px);
	padding: 0;
	border: var(--cc-stroke-node, 1.5px) solid var(--cc-charcoal);
	border-radius: 50%;
	background: var(--cc-area-ground);
	cursor: pointer;
	transition: transform var(--cc-dur-instant, 150ms);
}

span.cc-route__node {
	cursor: default;
}

button.cc-route__node:hover {
	transform: scale(1.15);
}

/* Role node: area fill with the Charcoal outline kept (1.4.11). */
.cc-route__step.has-role .cc-route__node,
.cc-route__lane:has(.cc-route__tag) .cc-route__node {
	background: var(--cc-area-main);
}

.cc-route__node[aria-current="true"] {
	box-shadow: 0 0 0 4px var(--cc-area-ground), 0 0 0 5.5px var(--cc-charcoal);
}

.cc-route__label {
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	overflow-wrap: break-word;
	hyphens: manual;
}

.cc-route__tag {
	padding: 5px 9px 6px;
	border-radius: var(--cc-radius-pill);
	background: var(--cc-area-tag);
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
}

.cc-route__step--end {
	align-items: flex-end;
	text-align: right;
}

.cc-route__edot {
	display: block;
	width: var(--cc-node-size, 24px);
	height: var(--cc-node-size, 24px);
}

.cc-route__step--end .cc-route__label {
	color: var(--cc-text-secondary);
}

/* Side lane (D4, CL §2.8): node, label, then a 4 px bar in the tag colour. */
.cc-route__lane {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--cc-space-2) 12px;
	margin-top: var(--cc-space-3);
}

.cc-route__lane::after {
	content: "";
	flex: 1 1 40px;
	height: var(--cc-stroke-rule, 4px);
	background: var(--cc-area-tag);
}

.cc-route__lane-label {
	font-size: var(--cc-fs-micro);
	line-height: var(--cc-lh-micro);
	color: var(--cc-text-secondary);
}

/* Cosmetics: the C6 track (collapsed) and the C7 exit line. */
.cc-route__trackrow {
	padding: 12px 0 14px;
	border-bottom: 1px solid var(--cc-border-row, rgba(38, 35, 33, .16));
}

.cc-route__trackrow summary {
	padding: var(--cc-space-1) 0;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	cursor: pointer;
}

.cc-route__trackin {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-top: 10px;
}

.cc-route__exit {
	padding: 14px 0 var(--cc-space-1);
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	color: var(--cc-text-secondary);
}

.cc-route__exit span {
	color: var(--cc-text);
}

/* Detail panel. */
.cc-route__detail {
	display: grid;
	grid-template-columns: 96px minmax(0, 1fr);
	gap: var(--cc-space-3);
	min-height: 118px;
	margin-top: 20px;
}

.cc-route__k {
	padding-top: 5px;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

.cc-route .cc-route__dt {
	margin: 0 0 6px;
	font-size: var(--cc-fs-5);
	font-weight: 400;
	line-height: var(--cc-lh-5);
	letter-spacing: -.01em;
}

.cc-route__dd {
	max-width: 62ch;
	margin-bottom: 6px !important;
	color: var(--cc-text-secondary);
}

.cc-route__dc,
.cc-route__dr {
	max-width: 62ch;
	margin-bottom: 6px !important;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

.cc-route__dr {
	color: var(--cc-text);
}

.cc-route__dr a,
.cc-route__list a:not(.cc-go),
.cc-route__nojs a {
	color: var(--cc-text);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.cc-route__dl {
	display: flex;
	flex-wrap: wrap;
	gap: 0 var(--cc-space-4);
	margin-top: var(--cc-space-1) !important;
}

/* Close: actions, the Save form slot, frame line, list alternative. */
.cc-route__close {
	margin-top: 22px;
	padding-top: 20px;
	border-top: 1px solid var(--cc-text-secondary);
}

.cc-route--ph .cc-route__close {
	margin-top: var(--cc-space-4);
}

.cc-route__acts {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.cc-route__save {
	margin-top: 14px;
	padding: var(--cc-space-3) 18px;
	background: var(--cc-surface-veil, rgba(255, 255, 255, .55));
}

.cc-route__frame,
.cc-route__note,
.cc-route__nojs {
	max-width: 62ch;
	margin-top: 14px !important;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

.cc-route__note + .cc-route__v {
	margin-top: var(--cc-space-3);
}

.cc-route__nojs {
	margin: 0 0 var(--cc-space-3) !important;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	color: var(--cc-text);
}

.cc-route__list {
	margin-top: 14px;
}

.cc-route__list summary {
	padding: 6px 0;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	cursor: pointer;
}

.cc-route .cc-route__list-h {
	margin: 14px 0 6px;
	font-size: var(--cc-fs-body);
	font-weight: 400;
	line-height: var(--cc-lh-body);
}

.cc-route__list-ol {
	padding-left: 22px !important;
}

.cc-route__list-ol li {
	margin: 6px 0;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	color: var(--cc-text-secondary);
}

.cc-route__li-t {
	font-weight: 400;
	color: var(--cc-text);
}

.cc-route__empty {
	padding: var(--cc-space-4) 0;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
}

/* Public health: a plain vertical route (CL §2.10), wedge pointing down. */
.cc-route__v {
	position: relative;
	padding: 0 0 0 38px !important;
	list-style: none;
}

.cc-route__v::before {
	content: "";
	position: absolute;
	top: 6px;
	bottom: 6px;
	left: 7px;
	width: 9px;
	background: var(--cc-area-main);
	clip-path: polygon(50% 0, 100% 100%, 0 100%);
	transform-origin: center top;
	animation: cc-growv var(--cc-dur-route, 800ms) var(--cc-ease-route, cubic-bezier(.2, .7, .2, 1)) both;
}

.cc-route__vstep {
	position: relative;
	padding: 0 0 18px;
	animation: cc-fade var(--cc-dur-enter, 400ms) var(--cc-ease-standard, ease) both;
	animation-delay: calc(120ms + var(--cc-j, 0) * var(--cc-stagger-vstep, 80ms));
}

.cc-route__vstep::before {
	content: "";
	position: absolute;
	top: 1px;
	left: -38px;
	box-sizing: border-box;
	width: var(--cc-node-size, 24px);
	height: var(--cc-node-size, 24px);
	border: var(--cc-stroke-node, 1.5px) solid var(--cc-charcoal);
	border-radius: 50%;
	background: var(--cc-area-ground);
}

.cc-route__vl {
	display: block;
	font-size: var(--cc-fs-body);
	line-height: var(--cc-lh-body);
}

.cc-route__vd {
	display: block;
	max-width: 44ch;
	margin-top: 3px;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

.cc-route__vstep--end {
	padding-bottom: 0;
}

.cc-route__vstep--end::before {
	border: 0;
	background: none;
}

.cc-route__vstep--end .cc-route__vl {
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	color: var(--cc-text-secondary);
}

/* RECAPE branch and the data review: indented 24 px, joined by a short wedge. */
.cc-route__vstep.is-branch {
	margin-left: var(--cc-space-4);
}

.cc-route__vstep.is-branch::before {
	left: -38px;
}

.cc-route__vstep.is-branch-h {
	margin-left: var(--cc-space-4);
}

.cc-route__vstep.is-branch-h .cc-route__vl {
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

.cc-route__vstep.is-branch-h::before {
	top: 7px;
	left: -38px;
	width: 16px;
	height: 6px;
	border: 0;
	border-radius: 0;
	background: var(--cc-area-tag);
	clip-path: polygon(0 0, 100% 50%, 0 100%);
}

.cc-route__figs {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 12px;
	margin-top: 22px !important;
	padding: var(--cc-space-3) 0 0 !important;
	border-top: 1px solid var(--cc-border-row, rgba(38, 35, 33, .16));
	list-style: none;
}

.cc-route__fig-v {
	display: block;
	font-size: var(--cc-fs-numeral);
	line-height: var(--cc-lh-numeral);
	letter-spacing: -.03em;
}

.cc-route__fig-l {
	display: block;
	margin-top: 6px;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

/* The Save my route Pro Form stays hidden until the Save action opens it (CL §2.8 Saving);
   without script it never shows and Save is a link to Contact. */
.elementor .cc-save-form:not(.is-open) {
	display: none;
}

/* Role-in-context strip (CL §2.36): static, no script, no motion. */
.cc-rstrip__cap {
	margin: 0 0 12px;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

.cc-rstrip__fig {
	margin: 0;
	padding: 20px var(--cc-space-4) 18px;
	background: var(--cc-area-ground);
}

.cc-rstrip__row {
	display: grid;
	grid-template-columns: 96px minmax(0, 1fr);
	gap: var(--cc-space-3);
}

.cc-rstrip__mk {
	margin: 0;
}

.cc-rstrip__code {
	display: block;
	font-size: var(--cc-fs-numeral);
	line-height: var(--cc-lh-numeral);
	letter-spacing: -.03em;
	color: var(--cc-text);
}

.cc-rstrip__ent {
	display: block;
	margin-top: var(--cc-space-1);
	font-size: var(--cc-fs-micro);
	line-height: var(--cc-lh-micro);
	color: var(--cc-text-secondary);
}

.cc-rstrip__track {
	position: relative;
	min-width: 0;
	padding-top: var(--cc-space-1);
}

.cc-rstrip__wedge {
	position: absolute;
	top: 15px;
	right: 0;
	left: 0;
	height: 9px;
	background: var(--cc-area-main);
	clip-path: polygon(0 50%, 100% 0, 100% 100%);
}

.cc-rstrip__steps {
	position: relative;
	display: grid;
	grid-auto-columns: minmax(0, 1fr);
	grid-auto-flow: column;
	gap: var(--cc-space-2);
	margin: 0;
	padding: 0;
	list-style: none;
}

.cc-rstrip__step {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 9px;
	min-width: 0;
}

.cc-rstrip__node {
	box-sizing: border-box;
	display: block;
	width: var(--cc-node-size, 24px);
	height: var(--cc-node-size, 24px);
	border: var(--cc-stroke-node, 1.5px) solid var(--cc-charcoal);
	border-radius: 50%;
	background: var(--cc-area-ground);
}

.cc-rstrip__step.is-role .cc-rstrip__node {
	background: var(--cc-area-main);
}

.cc-rstrip__label {
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
	overflow-wrap: break-word;
	hyphens: manual;
}

.cc-rstrip__step.is-role .cc-rstrip__label {
	color: var(--cc-text);
}

.cc-rstrip__tag {
	padding: 5px 9px 6px;
	border-radius: var(--cc-radius-pill);
	background: var(--cc-area-tag);
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
}

.cc-rstrip .cc-go {
	margin-top: 12px;
}

@keyframes cc-grow {
	from { transform: scaleX(0); }
	to { transform: scaleX(1); }
}

@keyframes cc-growv {
	from { transform: scaleY(0); }
	to { transform: scaleY(1); }
}

@keyframes cc-fade {
	from { opacity: 0; transform: translateY(4px); }
	to { opacity: 1; transform: none; }
}

@keyframes cc-rowin {
	from { opacity: 0; }
	to { opacity: 1; }
}

@media (max-width: 1280px) {
	.cc-route__inputs {
		grid-template-columns: 1fr;
		gap: 20px;
	}
}

/* ≤ 700: vertical rows (wedge pointing down, nodes left, labels right), body to the edge. */
@media (max-width: 700px) {
	.cc-route {
		margin-inline: var(--cc-bleed, -16px);
		padding: 22px var(--cc-gutter, 16px);
	}

	.cc-route__ab {
		display: none;
	}

	.cc-route__row,
	.cc-rstrip__row {
		grid-template-columns: minmax(0, 1fr);
		gap: 14px;
	}

	.cc-route__mk {
		display: flex;
		flex-wrap: wrap;
		align-items: baseline;
		gap: 0 12px;
	}

	.cc-route__cite,
	.cc-route__ent {
		margin: 0;
	}

	.cc-route__track,
	.cc-rstrip__track {
		padding: 0 0 0 36px;
	}

	.cc-route__wedge,
	.cc-rstrip__wedge {
		top: 0;
		right: auto;
		bottom: 0;
		left: 7px;
		width: 9px;
		height: auto;
		clip-path: polygon(50% 0, 100% 100%, 0 100%);
		transform-origin: center top;
		animation-name: cc-growv;
	}

	.cc-route__row.is-open .cc-route__wedge {
		background: repeating-linear-gradient(180deg, var(--cc-area-main) 0 6px, transparent 6px 12px);
	}

	.cc-route__steps,
	.cc-rstrip__steps {
		grid-auto-columns: auto;
		grid-auto-flow: row;
		gap: var(--cc-space-3);
	}

	.cc-route__step,
	.cc-rstrip__step {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: center;
		gap: 6px 12px;
		margin-left: -36px;
	}

	.cc-route__step .cc-route__label,
	.cc-rstrip__label {
		flex: 1 1 0;
		min-width: 0;
		font-size: var(--cc-fs-body-sm);
		line-height: var(--cc-lh-body-sm);
	}

	.cc-route__step .cc-route__tag,
	.cc-rstrip__tag {
		order: 3;
		margin-left: 36px;
	}

	.cc-route__step--end {
		align-items: center;
		text-align: left;
	}

	/* Side lane: node on the wedge, label beside it, tag under the label; no bar. */
	.cc-route__lane {
		gap: 6px 12px;
		margin-left: -36px;
	}

	.cc-route__lane::after {
		display: none;
	}

	.cc-route__lane-label {
		flex: 1 1 0;
		min-width: 0;
		font-size: var(--cc-fs-caption);
		line-height: var(--cc-lh-caption);
	}

	.cc-route__lane .cc-route__tag {
		order: 3;
		margin-left: 36px;
	}

	.cc-route__detail {
		grid-template-columns: minmax(0, 1fr);
		gap: var(--cc-space-1);
	}

	.cc-route__figs {
		grid-template-columns: minmax(0, 1fr);
	}

	.cc-rstrip__fig {
		margin-inline: var(--cc-bleed, -16px);
		padding: 18px var(--cc-gutter, 16px);
	}
}

/* Print: the list, not the drawing (CL §2.11; cc-ui.js opens the list before printing). */
@media print {
	.cc-route__inputs,
	.cc-route:not(.cc-route--ph) .cc-route__draw,
	.cc-route__acts,
	.cc-route__save {
		display: none !important;
	}

	.cc-route {
		background: none;
	}
}

/* ------------------------------------------------------------------
   Site frame (CL §2.1, §2.2; B7). Markup from [cc_header] / [cc_footer]
   inside the Theme Builder header and footer templates.
   ------------------------------------------------------------------ */
.elementor-location-header:has(.cc-header) {
	position: sticky;
	top: 0;
	z-index: var(--cc-z-header, 20);
}

.admin-bar .elementor-location-header:has(.cc-header) {
	top: var(--wp-admin--admin-bar--height, 32px);
}

.cc-header {
	position: relative;
	border-bottom: 1px solid var(--cc-border-hairline);
	background: var(--cc-header-veil, rgba(243, 242, 238, .94));
	font-family: var(--cc-font-family);
	color: var(--cc-text);
}

.cc-header a,
.cc-footer a {
	color: inherit;
}

.cc-skip {
	position: absolute;
	top: 8px;
	left: 8px;
	z-index: var(--cc-z-skip, 100);
	padding: var(--cc-space-2) var(--cc-space-3);
	background: var(--cc-charcoal);
	color: var(--cc-marble) !important;
	transform: translateY(-200%);
}

.cc-skip:focus {
	transform: none;
}

.cc-content:focus {
	outline: none;
}

.cc-header__bar {
	display: flex;
	align-items: center;
	gap: var(--cc-space-5);
	box-sizing: border-box;
	max-width: var(--cc-wrap-max, 1440px);
	height: var(--cc-header-h);
	margin: 0 auto;
	padding: 0 var(--cc-gutter);
}

.cc-header__logo {
	display: inline-flex;
	flex: none;
	align-items: center;
	min-height: 44px;
}

.cc-header__logo img {
	display: block;
	width: auto;
	height: var(--cc-logo-ink-h, 24px);
}

.cc-header__panel {
	display: flex;
	flex: 1 1 auto;
	align-items: center;
	justify-content: flex-end;
	gap: var(--cc-space-5);
	min-width: 0;
}

.cc-header__menu,
.cc-header .cc-header__panel > .cc-header__cta--panel,
.cc-header__search {
	display: none;
}

.cc-nav,
.cc-nav__steps,
.cc-nav__roles,
.cc-header .cc-lang ul,
.cc-footer ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.cc-nav {
	display: flex;
	align-items: center;
	gap: 28px;
}

.cc-nav__item {
	position: relative;
	display: flex;
	align-items: center;
	gap: 2px;
}

.cc-nav__item--sep {
	padding-left: 28px;
	border-left: 1px solid var(--cc-border-hairline);
}

.cc-nav__link,
.cc-header .cc-lang a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	text-decoration: none;
	white-space: nowrap;
}

.cc-nav__link:hover,
.cc-nav__link[aria-current="page"],
.cc-nav__panel a:hover,
.cc-footer a:hover,
.cc-footer a:focus-visible {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 4px;
}

/* Disclosure button: a chevron beside the area link; the name is visually hidden. */
.cc-nav__disc {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 44px;
	padding: 0;
	border: 0;
	background: none;
	color: var(--cc-text);
	cursor: pointer;
}

.cc-nav__disc::before {
	content: "";
	width: 8px;
	height: 8px;
	margin-top: -4px;
	border-right: 1.5px solid currentColor;
	border-bottom: 1.5px solid currentColor;
	transform: rotate(45deg);
	transition: transform var(--cc-dur-fast, 200ms);
}

.cc-nav__disc[aria-expanded="true"]::before {
	margin-top: 4px;
	transform: rotate(225deg);
}

/* Area panel: Steps and Roles columns, then the go-link. */
.cc-nav__panel {
	position: absolute;
	top: calc(100% + 18px);
	left: -24px;
	z-index: var(--cc-z-dropdown, 30);
	display: grid;
	grid-template-columns: 280px 240px;
	gap: var(--cc-space-3) var(--cc-space-5);
	padding: var(--cc-space-4);
	border-top: var(--cc-stroke-rule, 4px) solid var(--cc-area-main);
	background: var(--cc-surface-card, #fff);
	box-shadow: 0 1px 0 var(--cc-border-hairline), 0 12px 32px rgba(38, 35, 33, .08);
}

.cc-nav__panel[hidden] {
	display: none;
}

.cc-nav__panel:not(:has(.cc-nav__roles)) {
	grid-template-columns: 300px;
}

.cc-nav__head {
	margin: 0 0 var(--cc-space-2);
	font-size: var(--cc-fs-label-caps);
	line-height: var(--cc-lh-label-caps);
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--cc-text-secondary);
}

.cc-nav__steps a {
	display: flex;
	gap: 12px;
	padding: 6px 0;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	text-decoration: none;
}

.cc-nav__i {
	flex: none;
	width: 22px;
	color: var(--cc-text-secondary);
}

.cc-nav__side {
	color: var(--cc-text-secondary);
}

.cc-nav__roles {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cc-space-2);
}

.cc-nav__role {
	display: inline-flex;
	align-items: center;
	min-height: 32px;
	padding: 4px 12px;
	border-radius: var(--cc-radius-pill);
	background: var(--cc-area-tag);
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	text-decoration: none;
}

.cc-nav__go {
	grid-column: 1 / -1;
	margin: 0;
}

.cc-header .cc-go,
.cc-footer .cc-go {
	display: inline-flex;
	align-items: center;
	gap: var(--cc-space-2);
	min-height: 44px;
	text-decoration: none;
}

/* Language links: the current one Charcoal, the other Leather (no Incense, D48(9)). */
.cc-header .cc-lang ul {
	display: flex;
	gap: var(--cc-space-2);
}

.cc-header .cc-lang a {
	color: var(--cc-text-secondary);
}

.cc-header .cc-lang a[aria-current="true"] {
	color: var(--cc-text);
}

.cc-header .cc-lang li + li::before {
	content: "·";
	margin-right: var(--cc-space-2);
	color: var(--cc-text-secondary);
}

.cc-header .cc-lang li {
	display: flex;
	align-items: center;
}

.cc-header .cc-btn,
.cc-footer .cc-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: var(--cc-pad-button, 12px 16px);
	border: 1px solid var(--cc-charcoal);
	border-radius: var(--cc-radius-pill);
	background: transparent;
	color: var(--cc-charcoal);
	font: inherit;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	text-decoration: none;
	white-space: nowrap;
	cursor: pointer;
}

.cc-header .cc-btn--primary {
	background: var(--cc-charcoal);
	color: var(--cc-marble);
}

.cc-header__cta {
	flex: none;
}

/* ≤ 1280: the nav collapses to the Menu button in both languages (D48(1)). */
@media (max-width: 1280px) {
	.cc-header__menu {
		display: inline-flex;
		align-items: center;
		order: 3;
		min-height: 44px;
		margin-left: calc(var(--cc-space-3) - var(--cc-space-5));
		padding: 0 var(--cc-space-3);
		border: 1px solid var(--cc-border-control);
		border-radius: var(--cc-radius-pill);
		background: transparent;
		color: var(--cc-text);
		font: inherit;
		font-size: var(--cc-fs-body-sm);
		cursor: pointer;
	}

	.cc-header__bar > .cc-header__cta {
		order: 2;
		margin-left: auto;
	}

	.cc-header__panel {
		position: absolute;
		top: 100%;
		right: 0;
		left: 0;
		z-index: var(--cc-z-dropdown, 30);
		display: none;
		flex-direction: column;
		align-items: stretch;
		gap: var(--cc-space-4);
		box-sizing: border-box;
		max-height: calc(100dvh - var(--cc-header-h));
		padding: var(--cc-space-4) var(--cc-gutter) var(--cc-space-6);
		overflow-y: auto;
		border-bottom: 1px solid var(--cc-border-hairline);
		background: var(--cc-marble);
	}

	.cc-header.is-open .cc-header__panel {
		display: flex;
	}

	.cc-header .cc-header__panel > .cc-header__cta--panel {
		display: inline-flex;
		align-self: flex-start;
	}

	.cc-header__panel .cc-header__nav {
		order: 2;
	}

	.cc-nav {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
	}

	.cc-nav__item {
		flex-wrap: wrap;
		justify-content: space-between;
		border-bottom: 1px solid var(--cc-border-hairline);
	}

	.cc-nav__item--sep {
		padding-left: 0;
		border-left: 0;
	}

	.cc-nav__link {
		font-size: var(--cc-fs-6);
		line-height: var(--cc-lh-6);
	}

	.cc-nav__disc {
		width: 44px;
	}

	.cc-nav__panel {
		position: static;
		flex-basis: 100%;
		grid-template-columns: minmax(0, 1fr);
		margin-bottom: var(--cc-space-3);
		padding: var(--cc-space-3);
		box-shadow: none;
	}

	.cc-nav__panel:not(:has(.cc-nav__roles)) {
		grid-template-columns: minmax(0, 1fr);
	}

	.cc-header__search {
		display: flex;
		order: 3;
		gap: var(--cc-space-2);
	}

	.cc-header__search input {
		flex: 1 1 auto;
		min-width: 0;
		min-height: 44px;
		padding: 0 var(--cc-space-3);
		border: 1px solid var(--cc-border-control);
		border-radius: var(--cc-radius-pill);
		background: var(--cc-surface-card, #fff);
		font: inherit;
	}

	.cc-header__panel .cc-lang {
		order: 4;
	}
}

@media (max-width: 700px) {
	.cc-header .cc-header__bar > .cc-header__cta {
		display: none;
	}

	.cc-header__menu {
		margin-left: auto;
	}
}

/* Footer: Charcoal ground, Silver text, White links, Steel heads (CL §2.2). */
.cc-footer {
	background: var(--cc-surface-inverse, #262321);
	font-family: var(--cc-font-family);
	color: var(--cc-text-inverse-secondary, #d8d8d6);
}

.cc-footer :focus-visible {
	outline-color: var(--cc-marble, #f3f2ee);
}

.cc-footer a {
	color: var(--cc-white, #fff);
	text-decoration: none;
}

.cc-footer__top,
.cc-footer__bottom {
	box-sizing: border-box;
	max-width: var(--cc-wrap-max, 1440px);
	margin: 0 auto;
	padding-right: var(--cc-gutter);
	padding-left: var(--cc-gutter);
}

.cc-footer__top {
	display: grid;
	grid-template-columns: 1.4fr 5fr 1fr;
	gap: var(--cc-space-6) var(--cc-space-5);
	padding-top: var(--cc-space-9);
	padding-bottom: var(--cc-space-7);
}

.cc-footer__nav {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: var(--cc-space-5);
}

.cc-footer__logo {
	display: inline-flex;
	min-height: 44px;
	align-items: center;
}

.cc-footer__logo img {
	display: block;
	width: auto;
	height: var(--cc-logo-ink-h-footer, 21px);
	filter: brightness(0) invert(1); /* the colour logo printed white */
}

.cc-footer__about p {
	margin: var(--cc-space-3) 0 0;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
}

.cc-footer__head {
	margin: 0 0 var(--cc-space-3);
	font-size: var(--cc-fs-label-caps);
	line-height: var(--cc-lh-label-caps);
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--cc-text-inverse-label, #bfbfbf);
}

.cc-footer__col li {
	margin: 0 0 var(--cc-space-2);
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
}

.cc-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: var(--cc-space-3) var(--cc-space-5);
	padding-top: var(--cc-space-4);
	padding-bottom: var(--cc-space-6);
	border-top: 1px solid var(--cc-border-hairline-inverse, #403b37);
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
}

.cc-footer__legal {
	margin: 0;
}

.cc-footer__links {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cc-space-2) var(--cc-space-4);
}

.cc-footer .cc-cookie-settings {
	padding: 0;
	border: 0;
	background: none;
	color: var(--cc-white, #fff);
	font: inherit;
	cursor: pointer;
}

.cc-footer .cc-cookie-settings:hover {
	text-decoration: underline;
	text-underline-offset: 4px;
}

@media (max-width: 1280px) {
	.cc-footer__top {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.cc-footer__nav {
		grid-column: 1 / -1;
		grid-row: 2;
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 700px) {
	.cc-footer__top,
	.cc-footer__nav {
		grid-template-columns: minmax(0, 1fr);
	}

	.cc-footer__nav {
		grid-row: auto;
	}
}

/* ------------------------------------------------------------------
   Singles, 404 and search (CL §2.18–§2.20, §2.30, §2.31; B7 part 2).
   Markup from [cc_single], [cc_404], [cc_search]; the template puts the
   post body in a container with class cc-wrap and cc-briefing / cc-legacy.
   ------------------------------------------------------------------ */
.cc-wrap,
.cc-single,
.cc-single-end,
.cc-404,
.cc-search {
	box-sizing: border-box;
	max-width: var(--cc-wrap-max, 1440px);
	margin-right: auto;
	margin-left: auto;
	padding-right: var(--cc-gutter);
	padding-left: var(--cc-gutter);
	font-family: var(--cc-font-family);
	color: var(--cc-text);
}

.cc-single p,
.cc-single-end p,
.cc-404 p,
.cc-search p {
	margin: 0;
}

/* Breadcrumb (CL §2.31): the whole trail, wrapping; current page Charcoal. */
.cc-breadcrumb ol {
	display: flex;
	flex-wrap: wrap;
	gap: 0 var(--cc-space-2);
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

.cc-breadcrumb li {
	display: inline-flex;
	gap: var(--cc-space-2);
}

.cc-breadcrumb a {
	color: var(--cc-text-secondary);
	text-decoration: none;
}

/* F5 (v0.33): 44 px tall hit area; the list's negative margin keeps the trail where it was. */
.cc-breadcrumb ol {
	margin-block: -12px;
}

.cc-breadcrumb li {
	align-items: center;
}

.cc-breadcrumb a {
	display: inline-block;
	padding-block: 12px;
}

.cc-breadcrumb a:hover,
.cc-breadcrumb a:focus-visible {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.cc-breadcrumb [aria-current="page"] {
	color: var(--cc-text);
}

/* Single head: 4 px area edge (REV #20), meta or dated line, title, byline, lead band. */
.cc-single {
	padding-top: var(--cc-space-6);
}

.cc-single .cc-breadcrumb {
	margin-bottom: var(--cc-space-5);
}

.cc-single--briefing .cc-breadcrumb,
.cc-single--explainer .cc-breadcrumb,
.cc-single--report .cc-breadcrumb {
	padding-bottom: var(--cc-space-4);
	border-bottom: var(--cc-stroke-rule, 4px) solid var(--cc-area-main);
}

.cc-single__title {
	max-width: 22ch;
	margin: var(--cc-space-3) 0 0;
	font-size: var(--cc-fs-1);
	font-weight: 400;
	line-height: var(--cc-lh-1);
	letter-spacing: -.03em;
}

.cc-single__dated,
.cc-single__byline,
.cc-single__lang {
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

.cc-single__byline,
.cc-single__lang {
	margin-top: var(--cc-space-3) !important;
}

.cc-single__byline a,
.cc-single-end a:not(.cc-go):not(.cc-btn) {
	color: var(--cc-text);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.cc-single__lead {
	max-width: 72ch;
	margin-top: var(--cc-space-5);
	padding: var(--cc-space-4);
	background: var(--cc-area-ground);
}

.cc-single__lead p + p {
	margin-top: var(--cc-space-2);
}

/* Archive notice (CL §2.20): Marble band, Silver hairlines, before the H1; not a warning. */
.cc-archive-note {
	padding: var(--cc-space-3) 0;
	border-top: 1px solid var(--cc-border-hairline);
	border-bottom: 1px solid var(--cc-border-hairline);
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

.cc-archive-note__label {
	color: var(--cc-text);
}

.cc-archive-note p + p {
	margin-top: var(--cc-space-1);
}

.cc-single .cc-go,
.cc-single-end .cc-go,
.cc-404 .cc-go,
.cc-search .cc-go {
	display: inline-flex;
	align-items: center;
	gap: var(--cc-space-2);
	min-height: 44px;
	color: var(--cc-text);
	text-decoration: none;
}

/* Bodies. Briefing sections (S4): 160 px label column, content right; stacked ≤ 700. */
.cc-briefing > *,
.cc-legacy > * {
	max-width: 860px;
}

.cc-briefing,
.cc-legacy {
	margin-top: var(--cc-space-6);
	font-size: var(--cc-fs-body);
	line-height: var(--cc-lh-body);
}

.cc-briefing .cc-brief-sec {
	display: grid;
	grid-template-columns: 160px minmax(0, 1fr);
	gap: 0 var(--cc-space-5);
	padding: var(--cc-space-4) 0;
	border-top: 1px solid var(--cc-border-hairline);
}

.cc-briefing .cc-brief-sec > h2 {
	grid-row: 1 / span 99;
	margin: 0;
	font-size: var(--cc-fs-5);
	font-weight: 400;
	line-height: var(--cc-lh-5);
}

.cc-briefing .cc-brief-sec > :not(h2) {
	grid-column: 2;
}

/* Legacy bodies (TOK §5.3): Leather text, Charcoal emphasis. */
.cc-legacy {
	color: var(--cc-leather);
}

.cc-legacy :is(strong, b) {
	color: var(--cc-charcoal);
}

.cc-legacy a {
	color: var(--cc-text);
}

/* Single end: closing block, related line, Ask the team, then the rung. */
.cc-single-end {
	display: grid;
	gap: var(--cc-space-6);
	margin-top: var(--cc-space-7);
	margin-bottom: var(--cc-space-9);
}

.cc-single__close {
	max-width: 72ch;
	padding-top: var(--cc-space-4);
	border-top: 1px solid var(--cc-text);
}

.cc-single__links {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cc-space-2) var(--cc-space-5);
	margin: var(--cc-space-3) 0 0;
	padding: 0;
	list-style: none;
}

.cc-single__related {
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
}

.cc-single__ask h2,
.cc-search h1,
.cc-404 h1 {
	margin: 0 0 var(--cc-space-4);
	font-weight: 400;
	letter-spacing: -.015em;
}

.cc-single__ask h2 {
	font-size: var(--cc-fs-4);
	line-height: var(--cc-lh-4);
}

/* 404 and search (CL §2.30). */
.cc-404,
.cc-search {
	padding-top: var(--cc-space-7);
	padding-bottom: var(--cc-space-9);
}

.cc-404 h1,
.cc-search h1 {
	font-size: var(--cc-fs-1);
	line-height: var(--cc-lh-1);
	letter-spacing: -.03em;
}

.cc-404__route {
	display: flex;
	align-items: center;
	gap: 48px;
	max-width: 420px;
	margin-bottom: var(--cc-space-6);
	background: linear-gradient(var(--cc-steel), var(--cc-steel)) left center / 75% 9px no-repeat;
}

.cc-404__route span {
	box-sizing: border-box;
	width: var(--cc-node-size, 24px);
	height: var(--cc-node-size, 24px);
	border: var(--cc-stroke-node, 1.5px) solid var(--cc-charcoal);
	border-radius: 50%;
	background: var(--cc-marble);
}

.cc-404__route .is-open {
	border-style: dashed;
}

.cc-404__body {
	max-width: 62ch;
}

.cc-404__links,
.cc-search__areas {
	display: flex;
	flex-wrap: wrap;
	gap: 0 var(--cc-space-5);
	margin: var(--cc-space-4) 0 0;
	padding: 0;
	list-style: none;
}

.cc-searchform {
	max-width: 640px;
	margin-top: var(--cc-space-5);
}

.cc-searchform label {
	display: block;
	margin-bottom: var(--cc-space-2);
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
}

.cc-searchform__row {
	display: flex;
	gap: var(--cc-space-2);
}

.cc-searchform input {
	flex: 1 1 auto;
	min-width: 0;
	min-height: 48px;
	padding: 0 var(--cc-space-4);
	border: 1px solid var(--cc-border-control);
	border-radius: var(--cc-radius-pill);
	background: var(--cc-surface-card, #fff);
	font: inherit;
}

.cc-searchform .cc-btn {
	display: inline-flex;
	align-items: center;
	min-height: 48px;
	padding: 0 var(--cc-space-4);
	border: 1px solid var(--cc-charcoal);
	border-radius: var(--cc-radius-pill);
	background: var(--cc-charcoal);
	color: var(--cc-marble);
	font: inherit;
	cursor: pointer;
}

.cc-search__count {
	margin: var(--cc-space-6) 0 var(--cc-space-3);
	font-size: var(--cc-fs-5);
	font-weight: 400;
	line-height: var(--cc-lh-5);
}

.cc-search__list {
	max-width: 860px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cc-search__item {
	padding: var(--cc-space-4) 0;
	border-top: 1px solid var(--cc-border-hairline);
}

.cc-search__type {
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	color: var(--cc-text-secondary);
}

.cc-search__item h3 {
	margin: var(--cc-space-1) 0 0;
	font-size: var(--cc-fs-6);
	font-weight: 400;
	line-height: var(--cc-lh-6);
}

.cc-search__item h3 a {
	color: var(--cc-text);
	text-decoration: none;
}

.cc-search__item h3 a:hover {
	text-decoration: underline;
	text-underline-offset: 4px;
}

.cc-search__ex {
	margin-top: var(--cc-space-2) !important;
	color: var(--cc-text-secondary);
}

.cc-search__none,
.cc-search__lang {
	max-width: 62ch;
	margin-top: var(--cc-space-4) !important;
}

.cc-search__areas a {
	color: var(--cc-text);
}

.cc-pagination {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--cc-space-4);
	margin-top: var(--cc-space-5);
	font-size: var(--cc-fs-body-sm);
}

.cc-pagination a {
	color: var(--cc-text);
}

@media (max-width: 700px) {
	.cc-briefing .cc-brief-sec {
		grid-template-columns: minmax(0, 1fr);
	}

	.cc-briefing .cc-brief-sec > h2 {
		grid-row: auto;
		margin-bottom: var(--cc-space-2);
	}

	.cc-briefing .cc-brief-sec > :not(h2) {
		grid-column: 1;
	}
}

/* ------------------------------------------------------------------
   cc-web v0.19 (build log B9 batch).
   ------------------------------------------------------------------ */

/* (b) A section whose lanes have no item is hidden with its heading and links (home 02,
   area briefings), unless a lane shows its empty-state line. The Public Health divider on
   home goes with an empty Public Health lane: Elementor sets display:none inline on the
   loop list when it has no item (:has() cannot nest, so the item test is not used here). */
.elementor .cc-sec:has(.cc-lane):not(:has(.cc-lane [data-element_type="e-collection-loop-item"])):not(:has(.cc-lane-empty:not(:empty))) {
	display: none;
}

.elementor #cc-ph-divider:has(+ .cc-lane .cc-loop-list[style*="none"]) {
	display: none;
}

.cc-lane-empty:not(:empty) {
	display: block;
	max-width: 62ch;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	color: var(--cc-text-secondary);
}

/* (c) Prose from the V3 Text Editor (CL §2.13 disclosures, S1): t-5 subheads at Book
   weight, body paragraphs at 62ch, spaced lists; references as two columns from 700. */
.elementor .cc-prose {
	max-width: 62ch;
	font-size: var(--cc-fs-body);
	line-height: var(--cc-lh-body);
}

.elementor .cc-prose h4 {
	margin: var(--cc-space-5) 0 var(--cc-space-2);
	font-size: var(--cc-fs-5);
	line-height: var(--cc-lh-5);
	font-weight: 400;
}

.elementor .cc-prose > :first-child,
.elementor .cc-prose .elementor-widget-container > :first-child {
	margin-top: 0;
}

.elementor .cc-prose p {
	margin: 0 0 var(--cc-space-3);
}

.elementor .cc-prose ul,
.elementor .cc-prose ol {
	margin: 0 0 var(--cc-space-4);
	padding-left: 1.25em;
}

.elementor .cc-prose li + li {
	margin-top: var(--cc-space-2);
}

.elementor .cc-prose dl {
	margin: 0;
}

.elementor .cc-prose dt {
	color: var(--cc-text-secondary);
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
}

.elementor .cc-prose dd {
	margin: 0 0 var(--cc-space-3);
}

@media (min-width: 700px) {
	.elementor .cc-prose dl {
		display: grid;
		grid-template-columns: minmax(8rem, 12rem) minmax(0, 1fr);
		gap: var(--cc-space-2) var(--cc-space-4);
	}

	.elementor .cc-prose dd {
		margin: 0;
	}
}

/* (d) Disclosure summaries: the FAQ's + marker, turned to x when open. */
.elementor .cc-disclosure__summary {
	display: flex;
	align-items: baseline;
	gap: var(--cc-space-3);
	cursor: pointer;
}

.cc-disclosure__summary::after {
	content: "+";
	flex: none;
	margin-left: auto;
	font-size: var(--cc-fs-5);
	line-height: var(--cc-lh-6);
	transition: transform var(--cc-dur-fast, 200ms) var(--cc-ease-standard, ease);
}

details[open] > .cc-disclosure__summary::after {
	transform: rotate(45deg);
}

@media (prefers-reduced-motion: reduce) {
	.cc-disclosure__summary::after {
		transition: none;
	}
}

/* ------------------------------------------------------------------
   cc-web v0.20 (build log B10 batch).
   ------------------------------------------------------------------ */

/* (a) A strip with six positions (Firm) runs in three columns at every desktop width;
   the five-column edge rule is undone for it. */
@media (min-width: 701px) {
	.elementor .cc-strip:has(> .cc-position:nth-child(6)) {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 1281px) {
	.elementor .cc-strip:has(> .cc-position:nth-child(6)) > .cc-position:nth-child(5n+1) {
		padding-left: var(--cc-space-4);
		border-left: 1px solid var(--cc-border-hairline);
	}

	.elementor .cc-strip:has(> .cc-position:nth-child(6)) > .cc-position:nth-child(3n+1) {
		padding-left: 0;
		border-left: 0;
	}
}

/* (b) Contact path chooser (CL §2.32, S7): the native e-tabs as a row of pill buttons, the
   selected one Charcoal; a vertical list of four on phones. Elementor's tab defaults
   (fixed width, grey fill, black border) are replaced. */
.elementor #contact-paths .e-tabs-menu-base {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cc-space-2);
	margin-bottom: var(--cc-space-5);
}

.elementor #contact-paths .e-tab-base {
	width: auto;
	min-height: 48px;
	padding: 10px 20px;
	border: 1px solid var(--cc-border-control);
	border-radius: var(--cc-radius-pill);
	background: var(--cc-surface-card, #fff);
	color: var(--cc-text);
	text-align: left;
	cursor: pointer;
}

.elementor #contact-paths .e-tab-base p {
	margin: 0;
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	color: inherit;
}

.elementor #contact-paths .e-tab-base:hover {
	border-color: var(--cc-border-control-hover);
}

.elementor #contact-paths .e-tab-base[aria-selected="true"] {
	border-color: var(--cc-charcoal);
	background: var(--cc-charcoal);
	color: var(--cc-marble);
}

.elementor #contact-paths .e-tab-content-base > .e-paragraph-base:first-child {
	max-width: 62ch;
	margin: 0 0 var(--cc-space-4);
	color: var(--cc-text-secondary);
}

#cc-context-banner:not([hidden]) {
	display: block;
	max-width: 62ch;
	margin: 0 0 var(--cc-space-4);
	padding: var(--cc-space-3) var(--cc-space-4);
	border-left: 4px solid var(--cc-charcoal);
	background: var(--cc-surface-card, #fff);
}

@media (max-width: 700px) {
	.elementor #contact-paths .e-tabs-menu-base {
		flex-direction: column;
	}

	.elementor #contact-paths .e-tab-base {
		width: 100%;
	}
}

/* ------------------------------------------------------------------
   cc-web v0.21 (build log B10 Briefings).
   ------------------------------------------------------------------ */

/* (a) Briefings hub: lanes without a filter, results with one (body classes from cc-web.php);
   the monitoring-reports band only with the report format. */
body.cc-filtered #briefing-lanes,
body:not(.cc-filtered) #briefing-results,
#reports-band {
	display: none;
}

body.cc-filter-format-monitoring-report #reports-band,
body.cc-filter-format-relatorio-de-monitorizacao #reports-band {
	display: block;
}


/* ------------------------------------------------------------------
   cc-web v0.28 (B15): the legacy Posts widget on the report pages kept its
   thumbnail-left row on phones and ran past 320 px. Stack it.
   ------------------------------------------------------------------ */
@media (max-width: 767px) {
	.elementor-widget-posts .elementor-posts--thumbnail-left .elementor-post {
		flex-direction: column;
	}

	.elementor-widget-posts .elementor-posts--thumbnail-left .elementor-post__thumbnail__link {
		width: 100%;
		margin-right: 0;
	}

	.elementor-widget-posts .elementor-post__text {
		min-width: 0;
		overflow-wrap: anywhere;
	}
}


/* ------------------------------------------------------------------
   cc-web v0.35 (2026-11-09): launch blockers from the five-lens review
   (03_sessions/20261108/review/20261108_review_consolidated.md).
   ------------------------------------------------------------------ */

/* VD-01 / F6: the kit's legacy h1 (22/60) and h2 (18/70) beat the frame's title rules
   (".elementor-kit-N h1" is 0,1,1 and loads after this file). :root body lifts ours. */
:root body .cc-single__title,
:root body .cc-404 h1,
:root body .cc-search h1,
:root body .cc-page-title h1,
:root body .cc-page-title .elementor-heading-title {
	font-size: var(--cc-fs-1);
	line-height: var(--cc-lh-1);
	font-weight: 400;
	letter-spacing: -.03em;
}

/* VD-02: legacy and briefing bodies keep the frame's gutter and a reading measure. */
:root body .cc-wrap.cc-legacy,
:root body .cc-wrap.cc-briefing {
	box-sizing: border-box;
	max-width: var(--cc-wrap-max, 1440px);
	margin-inline: auto;
	padding-inline: var(--cc-gutter);
}

.cc-wrap .elementor-widget-theme-post-content :is(p, ul, ol, h2, h3, h4, h5, blockquote) {
	max-width: var(--cc-measure, 62ch);
}

.cc-wrap .elementor-widget-theme-post-content :is(p, li) {
	font-size: var(--cc-fs-body);
	line-height: var(--cc-lh-body);
}

:root body .cc-wrap .elementor-widget-theme-post-content h2 {
	margin: var(--cc-space-6, 40px) 0 var(--cc-space-3, 12px);
	font-size: var(--cc-fs-5);
	line-height: var(--cc-lh-5);
	font-weight: 400;
}

:root body .cc-wrap .elementor-widget-theme-post-content :is(h3, h4) {
	margin: var(--cc-space-5, 32px) 0 var(--cc-space-2, 8px);
	font-size: var(--cc-fs-6);
	line-height: var(--cc-lh-6);
	font-weight: 400;
}

/* VD-03: Hello Elementor's base link and button colour (#c36) leaked into inline links and
   the Route Finder nodes. Element-only selectors keep every classed link rule above these. */
body a {
	color: var(--cc-text, #262321);
}

body a:hover,
body a:active {
	color: var(--cc-text, #262321);
}

body :is(p, li, dd, td) > a:not([class]) {
	text-decoration: underline;
	text-underline-offset: 3px;
	text-decoration-thickness: 1px;
}

body .e-paragraph-link-base,
body .e-paragraph-link-base:hover {
	color: inherit;
}

:root body button.cc-route__node,
:root body button.cc-route__node:hover,
:root body button.cc-route__node:focus {
	color: var(--cc-charcoal, #262321);
	border-color: var(--cc-charcoal, #262321);
}

/* VD-04, UX-13: atomic pagination showed two empty circles. Labels from aria-label (cc-ui
   puts the PT words there), the "Page 1 of 22" status visible, the disabled side faded. */
:root body .cc-pagination {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--cc-space-3, 12px) var(--cc-space-4, 16px);
}

:root body .cc-pagination [data-e-pagination-status] {
	position: static !important;
	width: auto !important;
	height: auto !important;
	margin: 0 !important;
	overflow: visible !important;
	clip: auto !important;
	clip-path: none !important;
	white-space: nowrap;
	order: 2;
	font-size: var(--cc-fs-caption);
	color: var(--cc-text-secondary);
}

:root body .cc-pagination [data-e-pagination] {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	width: auto;
	min-width: 44px;
	height: auto;
	min-height: 44px;
	padding: 10px 18px;
	border: 1px solid var(--cc-charcoal, #262321);
	border-radius: 999px;
	background: transparent;
	color: var(--cc-text, #262321);
	font-size: var(--cc-fs-body-sm);
	text-decoration: none;
}

:root body .cc-pagination [data-e-pagination] > * {
	display: none;
}

:root body .cc-pagination [data-e-pagination="prev"] {
	order: 1;
}

:root body .cc-pagination [data-e-pagination="next"] {
	order: 3;
}

:root body .cc-pagination [data-e-pagination="prev"]::before {
	content: "\2190\00a0" attr(aria-label);
}

:root body .cc-pagination [data-e-pagination="next"]::after {
	content: attr(aria-label) "\00a0\2192";
}

:root body .cc-pagination [data-e-pagination]:hover:not(.e--disabled) {
	background: var(--cc-charcoal, #262321);
	color: var(--cc-marble, #f3f2ee);
}

:root body .cc-pagination .e--disabled {
	opacity: .4;
	pointer-events: none;
}

/* VD-06: the context banner shows its rule only when it has text. */
:root body #cc-context-banner:empty {
	display: none !important;
}

/* UX-03: the filter bar moved above the lanes by cc-ui; its count is meaningful only when
   a filter is set. */
.cc-filter-bar--moved {
	margin-bottom: var(--cc-space-6, 40px);
}

body:not(.cc-filtered) .cc-filter-bar--moved .cc-filter__count {
	display: none;
}

/* UX-05: no background scroll behind the open Menu panel (it only exists at ≤ 1280 px). */
@media (max-width: 1280px) {
	html.cc-menu-open,
	html.cc-menu-open body {
		overflow: hidden;
	}
}


/* ------------------------------------------------------------------
   Space pass (brief 20261109_brief_imagery-and-space_v0.1 §1). DS spacing tokens only;
   section gap unchanged (DS max 80). Delete this block to revert.
   ------------------------------------------------------------------ */
:root {
	--cc-hero-top: 64px;
	--cc-head-pad-top: 32px;
	--cc-head-pad-bottom: 48px;
	--cc-card-gap: 24px;
	--cc-card-pad: 32px;
}
@media (max-width: 960px) {
	:root { --cc-hero-top: 48px; --cc-head-pad-bottom: 40px; --cc-card-pad: 24px; }
}
@media (max-width: 700px) {
	:root { --cc-hero-top: 32px; --cc-head-pad-top: 24px; --cc-head-pad-bottom: 32px; --cc-card-gap: 16px; }
}

/* S1 Measure (VD-17): cap running text at the TOK measure. */
.elementor .cc-prose > :is(p, ul, ol, dl, h3, h4, blockquote),
.elementor .cc-prose .elementor-widget-container > :is(p, ul, ol, dl, h3, h4, blockquote),
.elementor .cc-route__list-ol,
.elementor .cc-step__main > :is(.cc-t-body, .cc-t-body-sm) {
	max-width: 62ch;
}

/* S2 Hero air (VD-23): first section of every Elementor page. */
.cc-content > .elementor > .cc-wrap:first-child > .cc-sec:first-child {
	padding-top: var(--cc-hero-top);
}
.cc-content > .elementor > .cc-wrap:first-child > .cc-sec:first-child .cc-t-caption + h1 {
	margin-top: var(--cc-space-3, 16px);
}
.cc-content > .elementor > .cc-wrap:first-child > .cc-sec:first-child h1 + .cc-t-lede {
	margin-top: var(--cc-space-4, 24px);
}

/* S3 Section heads (VD-11, spacing part): more air between rule, title and content. */
.elementor .elementor-element.cc-sec-head {
	padding-top: var(--cc-head-pad-top);
	padding-bottom: var(--cc-head-pad-bottom);
}

/* S4 Card grids: separate the cards, give them room inside. */
.elementor .elementor-element.cc-grid:is(.cc-grid--2, .cc-grid--3, .cc-grid--3-1, .cc-grid--3-700) {
	gap: var(--cc-card-gap);
}
.elementor .elementor-element:is(.cc-role-card, .cc-entity) {
	padding: var(--cc-card-pad);
}
.elementor .elementor-element.cc-person {
	padding: var(--cc-space-4, 24px);
}

/* S5 Figures band (VD-19): three figures across the grid at display scale. */
.elementor .elementor-element.cc-figures {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--cc-space-5, 32px);
}
.elementor .elementor-element.cc-figure {
	padding-left: var(--cc-space-4, 24px);
	border-left: 4px solid var(--cc-area-main, #6beda0);
}
.elementor .cc-figures .cc-figure__value {
	font-size: clamp(3.5rem, 1.5rem + 3.5vw, 5rem);
	line-height: 1;
}
@media (max-width: 700px) {
	.elementor .elementor-element.cc-figures { grid-template-columns: 1fr; gap: var(--cc-space-4, 24px); }
	.elementor .cc-figures .cc-figure__value { font-size: var(--cc-fs-numeral-lg); line-height: var(--cc-lh-numeral-lg); }
}

/* S6 Line breaking (VD-21): no orphans in titles, fewer ragged last lines in text. */
.cc-content :is(h1, h2, h3) { text-wrap: balance; }
.cc-content .cc-prose p { text-wrap: pretty; }


/* ------------------------------------------------------------------
   cc-web 0.35.2 (2026-11-09, MD team feedback, D130).
   ------------------------------------------------------------------ */

/* Step sidebars: "Talk about a product", "Ongoing support" and "Follow an area" once at the
   start and once at the end of the route, not beside every step (VD-16). The pager stays. */
.cc-step + .cc-step .cc-step-exits > .cc-slot {
	display: none;
}

.cc-step:has(+ :not(.cc-step)) .cc-step-exits > .cc-slot,
.cc-step:last-child .cc-step-exits > .cc-slot {
	display: block;
}

/* Search results pagination: pills like the listings, "Next" filled so it stands out. */
.cc-search .cc-pagination a {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 10px 18px;
	border: 1px solid var(--cc-charcoal, #262321);
	border-radius: 999px;
	text-decoration: none;
}

.cc-search .cc-pagination span + a,
.cc-search .cc-pagination a:hover {
	background: var(--cc-charcoal, #262321);
	color: var(--cc-marble, #f3f2ee);
}

/* cc-web 0.35.4 (VD-10): area pills fit their label instead of stretching to the column. */
:root body .cc-pill--area {
	width: fit-content;
	max-width: 100%;
	align-self: flex-start;
}

/* ======================================================================================
   Route hero (D134; cc-web v0.36): [cc_route_hero]. One instrument for the three areas,
   drawn as lines and stations by cc-ui.js. Colours are the kit variables; the area sets
   --main, --tag and --ground. Generated from the reviewed prototype v0.3 by make_v036.py.
   ====================================================================================== */
/* ------------------------------------------------------------ instrument frame */
.cc-rh.cc-rh {
	--charcoal: var(--cc-charcoal, #262321); --leather: var(--cc-leather, #403b37); --brown: var(--cc-brown, #59524d); --white: var(--cc-white, #fff);
	--row: var(--cc-border-row, rgba(38, 35, 33, .16));
	--main: var(--cc-hospital, #3b8ced); --tag: var(--cc-hospital-02, #9fbdf4); --ground: var(--cc-hospital-01, #d1dcf9);
	color: var(--charcoal); font-family: var(--cc-font-family, "PP Neue Montreal", "Helvetica Neue", Helvetica, Arial, sans-serif); font-size: 17px; line-height: 1.47; font-weight: 400; text-align: left;
}
.cc-rh[data-area="cp"] { --main: var(--cc-lavander, #846df2); --tag: var(--cc-lavander-02, #ddd2f7); --ground: var(--cc-lavander-01, #f1edf9); }
.cc-rh[data-area="ph"] { --main: var(--cc-field, #6beda0); --tag: var(--cc-field-02, #d0f4e1); --ground: var(--cc-field-01, #edf7f2); }
.cc-rh.cc-rh .cc-rh__in { background: var(--ground); transition: background-color .5s ease; padding: 40px 48px 32px; }
/* Element resets: only what cc-ui.js draws, never the fallback lists or the Save my route form. */
.cc-rh.cc-rh :where(.cc-rh__in *:not(.cc-rh__save *)), .cc-rh.cc-rh :where(.cc-rh__in *:not(.cc-rh__save *))::before, .cc-rh.cc-rh :where(.cc-rh__in *:not(.cc-rh__save *))::after { box-sizing: border-box; }
.cc-rh.cc-rh :where(.cc-rh__in :is(button, a):not(.cc-rh__save *)) { font: inherit; color: inherit; }
.cc-rh.cc-rh :where(.cc-rh__in button:not(.cc-rh__save *)) { cursor: pointer; background-color: transparent; border: 0; border-radius: 0; margin: 0; padding: 0; min-height: 0; text-transform: none; letter-spacing: normal; white-space: normal; box-shadow: none; text-align: inherit; }
.cc-rh.cc-rh :where(.cc-rh__in button:not(.cc-rh__save *)):is(:hover, :focus) { color: inherit; }
.cc-rh.cc-rh :where(.cc-rh__in :is(fieldset, legend):not(.cc-rh__save *)) { float: none; width: auto; }
.cc-rh.cc-rh :where(.cc-rh__in svg:not(.cc-rh__save *)) { max-width: none; height: auto; }
.cc-rh.cc-rh :where(.cc-rh__in :is(p, h2, h3, h4, h5, h6, ol, ul, li):not(.cc-rh__save *)) { margin: 0; padding: 0; font-weight: 400; font-family: inherit; color: inherit; }
.cc-rh.cc-rh :where(.cc-rh__in :is(ol, ul):not(.cc-rh__save *)) { list-style: none; }
.cc-rh.cc-rh :focus-visible { outline: 2px solid var(--charcoal); outline-offset: 3px; }
.cc-rh.cc-rh [hidden] { display: none !important; }

/* Area tabs: the three areas, one instrument. */
.cc-rh.cc-rh .cc-rh__top { display: flex; align-items: baseline; justify-content: space-between; gap: 24px; border-bottom: 1px solid var(--charcoal); }
.cc-rh.cc-rh .cc-rh__eyebrow { font-size: 14px; letter-spacing: .06em; text-transform: uppercase; }
.cc-rh.cc-rh .cc-rh__tabs { display: flex; gap: 40px; }
.cc-rh.cc-rh .cc-rh__tab { position: relative; background: none; border: 0; padding: 12px 0 16px; font-size: 20px; color: var(--leather); display: inline-flex; align-items: center; gap: 10px; }
.cc-rh.cc-rh .cc-rh__tab i { width: 12px; height: 12px; border-radius: 50%; border: 1.5px solid var(--charcoal); background: var(--c); flex: none; }
.cc-rh.cc-rh .cc-rh__tab--md { --c: var(--cc-hospital, #3b8ced); }
.cc-rh.cc-rh .cc-rh__tab--cp { --c: var(--cc-lavander, #846df2); }
.cc-rh.cc-rh .cc-rh__tab--ph { --c: var(--cc-field, #6beda0); }
.cc-rh.cc-rh .cc-rh__tab::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 6px; background: var(--charcoal); clip-path: polygon(0 100%, 100% 0, 100% 100%); transform: scaleX(0); transform-origin: left; transition: transform .35s ease; }
.cc-rh.cc-rh .cc-rh__tab:hover { color: var(--charcoal); }
.cc-rh.cc-rh .cc-rh__tab[aria-selected="true"] { color: var(--charcoal); }
.cc-rh.cc-rh .cc-rh__tab[aria-selected="true"]::after { transform: scaleX(1); }

/* Question, inputs and the live answer. */
.cc-rh.cc-rh .cc-rh__intro { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 56px; padding: 40px 0 36px; align-items: end; }
.cc-rh.cc-rh .cc-rh__kicker { font-size: 14px; color: var(--leather); margin-bottom: 12px !important; }
.cc-rh.cc-rh .cc-rh__h { font-size: clamp(2.25rem, 4.2vw, 3.75rem); line-height: 1.04; letter-spacing: -.02em; max-width: 14em; }
.cc-rh.cc-rh .cc-rh__sub { margin-top: 14px !important; color: var(--leather); max-width: 38em; }
.cc-rh.cc-rh .cc-rh__key { margin-top: 10px !important; font-size: 14px; color: var(--leather); max-width: 46em; }
.cc-rh.cc-rh .cc-rh__inputs { margin-top: 28px; display: grid; gap: 20px; }
.cc-rh.cc-rh .cc-rh__fs { border: 0; margin: 0; padding: 0; min-width: 0; }
.cc-rh.cc-rh .cc-rh__fs legend { padding: 0; font-size: 14px; color: var(--leather); margin-bottom: 10px; }
.cc-rh.cc-rh .cc-rh__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.cc-rh.cc-rh .cc-rh__chip { position: relative; }
.cc-rh.cc-rh .cc-rh__chip input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.cc-rh.cc-rh .cc-rh__chip span { display: inline-flex; align-items: center; min-height: 44px; padding: 0 18px; border: 1px solid var(--brown); border-radius: 999px; background: rgba(255, 255, 255, .55); transition: background-color .2s, color .2s, border-color .2s; }
.cc-rh.cc-rh .cc-rh__chip:hover span { border-color: var(--charcoal); background: var(--white); }
.cc-rh.cc-rh .cc-rh__chip input:checked + span { background: var(--charcoal); border-color: var(--charcoal); color: var(--white); }
.cc-rh.cc-rh .cc-rh__chip input:focus-visible + span { outline: 2px solid var(--charcoal); outline-offset: 3px; }

.cc-rh.cc-rh .cc-rh__sum { background: var(--white); padding: 24px 28px; min-height: 180px; display: grid; gap: 18px; align-content: start; }
.cc-rh.cc-rh .cc-rh__counts { display: grid; gap: 4px; font-size: 18px; line-height: 1.3; }
.cc-rh.cc-rh .cc-rh__counts li { padding-left: 18px; position: relative; }
.cc-rh.cc-rh .cc-rh__counts li::before { content: ""; position: absolute; left: 0; top: .62em; width: 12px; height: 4px; background: var(--charcoal); clip-path: polygon(0 50%, 100% 0, 100% 100%); }
.cc-rh.cc-rh .cc-rh__rolesum { display: grid; grid-template-columns: auto 1fr; gap: 6px 18px; align-items: start; border-top: 1px solid var(--row); padding-top: 16px; }
.cc-rh.cc-rh .cc-rh__num { font-size: 3.5rem; line-height: .9; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.cc-rh.cc-rh .cc-rh__num.is-new { animation: cc-rh-tick .45s ease; }
@keyframes cc-rh-tick { from { transform: translateY(.25em); opacity: 0; } }
.cc-rh.cc-rh .cc-rh__sumh { font-size: 14px; color: var(--leather); }
.cc-rh.cc-rh .cc-rh__roles { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px !important; }
.cc-rh.cc-rh .cc-rh__rolechip { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 4px 16px 4px 12px; border-radius: 22px; line-height: 1.25; background: var(--tag); text-decoration: none; font-size: 15px; }
.cc-rh.cc-rh .cc-rh__rolechip::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--main); border: 1.5px solid var(--charcoal); flex: none; }
.cc-rh.cc-rh .cc-rh__rolechip:hover { text-decoration: underline; text-underline-offset: 3px; }
.cc-rh.cc-rh .cc-rh__empty { font-size: 20px; }
.cc-rh.cc-rh .cc-rh__figs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.cc-rh.cc-rh .cc-rh__figs b { display: block; font-weight: 400; font-size: 2.25rem; line-height: 1; }
.cc-rh.cc-rh .cc-rh__figs span { display: block; font-size: 14px; color: var(--leather); line-height: 1.3; margin-top: 6px; }
.cc-rh.cc-rh .cc-rh__end { font-size: 22px; line-height: 1.2; }
.cc-rh.cc-rh .cc-rh__small { font-size: 15px; color: var(--leather); margin-top: 6px !important; }

/* Map. */
.cc-rh.cc-rh .cc-rh__mapbar { display: flex; justify-content: space-between; align-items: center; gap: 16px; min-height: 44px; margin-bottom: 8px; }
.cc-rh.cc-rh .cc-rh__legend { font-size: 14px; color: var(--leather); display: inline-flex; align-items: center; gap: 8px; }
.cc-rh.cc-rh .cc-rh__legend i, .cc-rh.cc-rh .cc-rh__dot { width: 14px; height: 14px; border-radius: 50%; border: 1.5px solid var(--charcoal); background: var(--white); flex: none; display: inline-block; }
.cc-rh.cc-rh .cc-rh__legend i, .cc-rh.cc-rh .cc-rh__dot.is-role { background: var(--main); }
.cc-rh.cc-rh .cc-rh__tools { display: flex; gap: 8px; margin-left: auto; }
.cc-rh.cc-rh .cc-rh__tool { min-height: 44px; padding: 0 16px; border: 1px solid var(--brown); border-radius: 999px; background: none; font-size: 15px; display: inline-flex; align-items: center; gap: 8px; }
.cc-rh.cc-rh .cc-rh__tool:hover { background: var(--white); border-color: var(--charcoal); }
.cc-rh.cc-rh .cc-rh__tool[aria-pressed="true"] { background: var(--charcoal); color: var(--white); border-color: var(--charcoal); }
.cc-rh.cc-rh .cc-rh__map { position: relative; }
.cc-rh.cc-rh .cc-rh__map svg { display: block; width: 100%; overflow: visible; }
.cc-rh.cc-rh .cc-rh__lane { fill: var(--main); stroke: var(--charcoal); stroke-width: .75; stroke-linejoin: round; transform-box: fill-box; transform-origin: left center; }
.cc-rh.cc-rh .cc-rh__lane.is-open, .cc-rh.cc-rh .cc-rh__lane.is-track, .cc-rh.cc-rh .cc-rh__lane.is-dim { fill: none; stroke: var(--charcoal); stroke-width: 1.5; stroke-linecap: round; }
.cc-rh.cc-rh .cc-rh__lane.is-open { stroke-dasharray: 2 7; }
.cc-rh.cc-rh .cc-rh__lane.is-track { stroke: var(--brown); stroke-dasharray: 2 7; }
.cc-rh.cc-rh .cc-rh__lane.is-dim { stroke: var(--brown); stroke-width: 1; }
.cc-rh.cc-rh .cc-rh__term { fill: var(--charcoal); }
.cc-rh.cc-rh .cc-rh__mini { fill: var(--white); stroke: var(--brown); stroke-width: 1.2; }
.cc-rh.is-drawing .cc-rh__lane { animation: cc-rh-draw .9s cubic-bezier(.6, 0, .2, 1) both; animation-delay: calc(var(--i) * 90ms); }
.cc-rh.is-drawing .cc-rh__stop, .cc-rh.is-drawing .cc-rh__pill, .cc-rh.is-drawing .cc-rh__col { animation: cc-rh-pop .4s ease both; animation-delay: calc(250ms + var(--j) * 80ms); }
@keyframes cc-rh-draw { from { transform: scaleX(0); } }
@keyframes cc-rh-pop { from { opacity: 0; } }
.cc-rh.cc-rh .cc-rh__ov > * { position: absolute; }
.cc-rh.cc-rh .cc-rh__col { padding: 0 4px; text-align: center; font-size: 15px; line-height: 1.25; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 4px; color: var(--leather); cursor: pointer; overflow-wrap: break-word; }
.cc-rh.cc-rh .cc-rh__col small { font-size: 14px; font-variant-numeric: tabular-nums; }
.cc-rh.cc-rh .cc-rh__col.is-cur, .cc-rh.cc-rh .cc-rh__col:hover { color: var(--charcoal); }
.cc-rh.cc-rh .cc-rh__col.is-cur span { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1.5px; }
.cc-rh.cc-rh .cc-rh__stop { width: 44px; margin-left: -22px; background: none; border: 0; padding: 7px; }
.cc-rh.cc-rh .cc-rh__stop::before { content: ""; position: absolute; inset: 7px; border-radius: 15px; background: var(--white); border: 1.5px solid var(--charcoal); transition: background-color .2s, transform .2s; }
.cc-rh.cc-rh .cc-rh__stop:hover::before { transform: scale(1.12); }
.cc-rh.cc-rh .cc-rh__stop[aria-current="true"]::before { background: var(--charcoal); }
.cc-rh.cc-rh .cc-rh__stop .cc-rh__dot { position: absolute; left: 15px; margin-top: -7px; }
.cc-rh.cc-rh .cc-rh__stop[aria-current="true"] .cc-rh__dot { background: transparent; border-color: var(--white); }
.cc-rh.cc-rh .cc-rh__stop[aria-current="true"] .cc-rh__dot.is-role { background: var(--main); }
.cc-rh.cc-rh .cc-rh__stop.is-changed::after { content: ""; position: absolute; inset: 7px; border-radius: 15px; border: 2px solid var(--charcoal); animation: cc-rh-ring .9s ease-out both; pointer-events: none; }
@keyframes cc-rh-ring { to { transform: scale(1.9); opacity: 0; } }
.cc-rh.cc-rh .cc-rh__pill { transform: translate(-50%, -50%); min-height: 44px; padding: 6px 16px 6px 12px; border-radius: 22px; border: 1.5px solid var(--charcoal); background: var(--white); font-size: 15px; line-height: 1.2; text-align: left; display: inline-flex; align-items: center; gap: 8px; transition: background-color .2s, color .2s; }
.cc-rh.cc-rh .cc-rh__pill:hover { background: var(--tag); }
.cc-rh.cc-rh .cc-rh__pill[aria-current="true"] { background: var(--charcoal); color: var(--white); }
.cc-rh.cc-rh .cc-rh__pill[aria-current="true"] .cc-rh__dot { border-color: var(--white); }
.cc-rh.cc-rh .cc-rh__lab { display: flex; flex-direction: column; justify-content: center; transform: translateY(-50%); line-height: 1.2; }
.cc-rh.cc-rh .cc-rh__lab b { font-weight: 400; font-size: 24px; letter-spacing: -.01em; }
.cc-rh.cc-rh .cc-rh__lab span { font-size: 14px; color: var(--leather); }
.cc-rh.cc-rh .cc-rh__lab.is-need { cursor: pointer; }
.cc-rh.cc-rh .cc-rh__lab.is-need b { font-size: 18px; line-height: 1.2; letter-spacing: 0; }
.cc-rh.cc-rh .cc-rh__lab.is-need.is-dim b { color: var(--leather); }
.cc-rh.cc-rh .cc-rh__lab.is-need:hover b, .cc-rh.cc-rh .cc-rh__lab.is-need:not(.is-dim) b { text-decoration: underline; text-underline-offset: 4px; }
.cc-rh.cc-rh .cc-rh__to { transform: translateY(-50%); font-size: 14px; line-height: 1.25; color: var(--leather); }

/* Detail panel: attached to the stop it describes. */
.cc-rh.cc-rh .cc-rh__card { position: relative; background: var(--white); margin-top: 18px; padding: 32px 36px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.7fr); gap: 48px; }
.cc-rh.cc-rh .cc-rh__card::before { content: ""; position: absolute; top: -9px; left: var(--cx, 50%); width: 18px; height: 18px; background: var(--white); transform: translateX(-50%) rotate(45deg); transition: left .35s cubic-bezier(.6, 0, .2, 1); }
.cc-rh.cc-rh .cc-rh__card.is-swap .cc-rh__card-a, .cc-rh.cc-rh .cc-rh__card.is-swap .cc-rh__entries { animation: cc-rh-pop .3s ease both; }
.cc-rh.cc-rh .cc-rh__k { font-size: 14px; color: var(--leather); }
.cc-rh.cc-rh .cc-rh__t { font-size: 2rem; line-height: 1.12; letter-spacing: -.015em; margin: 8px 0 20px !important; }
.cc-rh.cc-rh .cc-rh__go { display: inline-block; padding: 10px 0; text-decoration: none; }
.cc-rh.cc-rh .cc-rh__go::after { content: ""; display: inline-block; vertical-align: middle; margin-left: 10px; width: 32px; height: 8px; background: currentColor; clip-path: polygon(0 50%, 100% 0, 100% 100%); transform-origin: left; transition: transform .25s; }
.cc-rh.cc-rh .cc-rh__go:hover::after { transform: scaleX(1.5); }
.cc-rh.cc-rh .cc-rh__nav { display: flex; gap: 8px; margin-top: 20px; }
.cc-rh.cc-rh .cc-rh__nav button { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--brown); background: none; font-size: 18px; }
.cc-rh.cc-rh .cc-rh__nav button:hover:not(:disabled) { background: var(--charcoal); color: var(--white); }
.cc-rh.cc-rh .cc-rh__nav button:disabled { opacity: .35; cursor: default; }
.cc-rh.cc-rh .cc-rh__entries { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 0 32px; align-content: start; }
.cc-rh.cc-rh .cc-rh__entry { border-top: 1px solid var(--charcoal); padding: 14px 0 20px; display: grid; gap: 10px; align-content: start; }
.cc-rh.cc-rh .cc-rh__codes { display: flex; gap: 6px; align-items: center; }
.cc-rh.cc-rh .cc-rh__codes > span { font-size: 14px; border: 1px solid var(--charcoal); border-radius: 999px; padding: 1px 10px; }
.cc-rh.cc-rh .cc-rh__et { font-size: 18px; line-height: 1.25; }
.cc-rh.cc-rh .cc-rh__d { font-size: 17px; }
.cc-rh.cc-rh .cc-rh__role { display: flex; gap: 10px; align-items: flex-start; background: var(--ground); padding: 12px 14px; font-size: 16px; line-height: 1.35; }
.cc-rh.cc-rh .cc-rh__role .cc-rh__dot { margin-top: 3px; }
.cc-rh.cc-rh .cc-rh__role a { text-underline-offset: 3px; }
.cc-rh.cc-rh .cc-rh__ent { font-size: 14px; color: var(--leather); }
.cc-rh.cc-rh .cc-rh__cit { display: flex; flex-wrap: wrap; gap: 6px; }
.cc-rh.cc-rh .cc-rh__cit li { font-size: 14px; color: var(--leather); border: 1px solid var(--row); padding: 3px 10px; line-height: 1.35; }
.cc-rh.cc-rh .cc-rh__btn { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 18px; border: 1px solid var(--charcoal); border-radius: 999px; text-decoration: none; background: none; justify-self: start; }
.cc-rh.cc-rh .cc-rh__btn.is-primary, .cc-rh.cc-rh .cc-rh__btn:hover { background: var(--charcoal); color: var(--white); }

/* Foot. */
.cc-rh.cc-rh .cc-rh__note { margin-top: 18px !important; font-size: 15px; color: var(--leather); }
.cc-rh.cc-rh .cc-rh__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; margin-top: 28px; padding-top: 24px; border-top: 1px solid var(--charcoal); }
.cc-rh.cc-rh .cc-rh__acts { display: flex; flex-wrap: wrap; gap: 8px; }
.cc-rh.cc-rh .cc-rh__frame { font-size: 14px; color: var(--leather); margin-left: auto !important; max-width: 30em; text-align: right; }
.cc-rh.cc-rh .cc-rh__save { flex-basis: 100%; }
.cc-rh.cc-rh .cc-rh__list { flex-basis: 100%; font-size: 15px; }
.cc-rh.cc-rh .cc-rh__list summary { cursor: pointer; min-height: 44px; display: flex; align-items: center; gap: 8px; }
.cc-rh.cc-rh .cc-rh__list summary::before { content: "▸"; }
.cc-rh.cc-rh .cc-rh__list[open] summary::before { content: "▾"; }
.cc-rh.cc-rh .cc-rh__lh { font-size: 16px; margin: 14px 0 6px; }
.cc-rh.cc-rh .cc-rh__list ol { list-style: decimal; padding-left: 22px; display: grid; gap: 4px; }
.cc-rh.cc-rh .cc-rh__list p { margin-top: 8px; }

/* Up to 1100 px the map becomes one list of stops; each opens in place. */
.cc-rh.cc-rh .cc-rh__steps { display: none; }
@media (max-width: 1100px) {
	.cc-rh.cc-rh .cc-rh__in { padding: 24px 16px; }
	.cc-rh.cc-rh .cc-rh__top { flex-direction: column; gap: 4px; align-items: stretch; }
	.cc-rh.cc-rh .cc-rh__tabs { gap: 20px; }
	.cc-rh.cc-rh .cc-rh__intro { grid-template-columns: 1fr; gap: 28px; padding: 28px 0; }
	.cc-rh.cc-rh .cc-rh__sum { min-height: 0; padding: 20px; }
	.cc-rh.cc-rh .cc-rh__num { font-size: 2.5rem; }
	.cc-rh.cc-rh .cc-rh__map, .cc-rh.cc-rh .cc-rh__card { display: none; }
	.cc-rh.cc-rh .cc-rh__mapbar { flex-wrap: wrap; }
	.cc-rh.cc-rh .cc-rh__steps { display: block; border-top: 1px solid var(--charcoal); }
	.cc-rh.cc-rh .cc-rh__steps > li { border-bottom: 1px solid var(--row); }
	.cc-rh.cc-rh .cc-rh__sbtn { width: 100%; background: none; border: 0; padding: 14px 0; display: grid; grid-template-columns: 34px 1fr auto; gap: 8px; align-items: center; text-align: left; font-size: 18px; line-height: 1.25; }
	.cc-rh.cc-rh .cc-rh__sbtn small { font-size: 14px; color: var(--leather); }
	.cc-rh.cc-rh .cc-rh__sbtn .cc-rh__codes > span { padding: 1px 7px; display: inline-flex; align-items: center; gap: 5px; }
	.cc-rh.cc-rh .cc-rh__sbtn .cc-rh__codes .is-role::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--main); border: 1px solid var(--charcoal); }
	.cc-rh.cc-rh .cc-rh__spanel { padding: 0 0 16px 42px; }
	.cc-rh.cc-rh .cc-rh__spanel .cc-rh__entries { grid-template-columns: 1fr; }
	.cc-rh.cc-rh .cc-rh__frame { margin-left: 0 !important; text-align: left; }
}
@media (max-width: 1100px) and (min-width: 601px) { .cc-rh.cc-rh .cc-rh__in { padding: 32px; } }
@media (max-width: 600px) {
	.cc-rh.cc-rh .cc-rh__tabs { display: grid; grid-template-columns: repeat(3, minmax(0, auto)); gap: 12px; justify-content: space-between; }
	.cc-rh.cc-rh .cc-rh__tab { font-size: 15px; line-height: 1.2; text-align: left; align-items: flex-start; gap: 6px; padding: 10px 0 14px; }
	.cc-rh.cc-rh .cc-rh__tab i { margin-top: 3px; }
}
@media (prefers-reduced-motion: reduce) {
	.cc-rh.cc-rh *, .cc-rh.cc-rh *::before, .cc-rh.cc-rh *::after { animation: none !important; transition: none !important; }
	.cc-rh.cc-rh [data-act="play"] { display: none !important; }
}

/* Until cc-ui.js draws it, and without script: the default routes as lists (the [cc_route] fallback). */
.cc-rh__fallback { display: grid; gap: var(--cc-space-4, 24px); }
.cc-rh__fallback .cc-route { margin-inline: 0; }
/* While the script is on its way the frame holds its place, so the page below does not jump. */
.cc-rh.is-loading { min-height: 860px; background: var(--cc-hospital-01, #d1dcf9); }
.cc-rh.is-loading[data-area="cp"] { background: var(--cc-lavander-01, #f1edf9); }
.cc-rh.is-loading[data-area="ph"] { background: var(--cc-field-01, #edf7f2); }
@media (max-width: 1100px) { .cc-rh.is-loading { min-height: 1100px; } }
.cc-rh.cc-rh .cc-rh__role a { text-decoration: underline; text-decoration-thickness: 1px; }'
        '.cc-rh.cc-rh .cc-rh__nav button { display: inline-flex; align-items: center; justify-content: center; }
.cc-rh.cc-rh .cc-rh__list summary::-webkit-details-marker { display: none; }
/* In the list layout the walk-through would open panels under the reader. */
@media (max-width: 1100px) { .cc-rh.cc-rh [data-act="play"] { display: none !important; } }
@media (max-width: 600px) { .cc-rh.cc-rh .cc-rh__tabs { gap: 8px; } .cc-rh.cc-rh .cc-rh__tab { font-size: 14px; } }
.cc-rh__fallback .cc-rh__fh { margin: 0 0 12px; font-size: var(--cc-fs-3, 2rem); line-height: 1.12; font-weight: 400; }
/* Print: the list alternative, not the drawing. */
@media print {
	.cc-rh.cc-rh :is(.cc-rh__tabs, .cc-rh__inputs, .cc-rh__mapbar, .cc-rh__map, .cc-rh__steps, .cc-rh__card, .cc-rh__acts, .cc-rh__save) { display: none !important; }
	.cc-rh.cc-rh .cc-rh__in { background: none; padding: 0; }
}
