/*
 * 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;
	/* 0.37 §4 (R13): micro and label-caps are 14/20 (were 12/16); no rendered text under 14 px. */
	--cc-fs-micro: 0.875rem;      --cc-lh-micro: 1.25rem;
	--cc-fs-label-caps: 0.875rem; --cc-lh-label-caps: 1.25rem;
	--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;
		/* 0.37 §2: --cc-logo-ink-h (was 22px) is set in the 0.37 block at the end of this file. */
	}
}

@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;
		/* 0.37 §2: --cc-logo-ink-h (was 21px) is set in the 0.37 block at the end of this file. */
	}
}

/* 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);
}

/* 0.37 §3 (owner point 6; F1, F2), review fix 2: the 0.36 selector is kept (0,1,3; a weaker one
   would lose to Elementor's .elementor a { text-decoration: none }, making prose links invisible).
   The frame components are reset explicitly after it. */
body :is(p, li, dd, td) > a:not([class]) {
	text-decoration: underline;
	text-underline-offset: 3px;
	text-decoration-thickness: 1px;
}
/* 0.37 §3: frame links are not prose (footer, header panels, breadcrumb): no underline at rest,
   underline on hover and keyboard focus. */
body .cc-footer :is(p, li) > a:not([class]),
body .cc-header :is(p, li) > a:not([class]),
body .cc-breadcrumb li > a:not([class]) { text-decoration: none; }
body .cc-footer :is(p, li) > a:not([class]):is(:hover, :focus-visible),
body .cc-header :is(p, li) > a:not([class]):is(:hover, :focus-visible),
body .cc-breadcrumb li > a:not([class]):is(:hover, :focus-visible) { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }

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; }
}

/* ======================================================================================
   cc-web 0.37 · Batch 1 · 2026-11-14 · post-launch design review (D143).
   Spec: 03_sessions/20261114/review/fable_review_v2.md, "Batch 1: ready-to-implement spec",
   §1–§14; rules R1–R13; owner decisions D1–D10 (all defaults accepted). Live DOM readings
   that override the spec: 03_sessions/20261114/review/devtools_readings.md.
   Served only from cc-web/next/ (preview token or option cc_web_channel = 'next'); the
   0.36 file in cc-web/ is untouched. Edited in place above, each marked "0.37":
   §2 (two --cc-logo-ink-h lines removed), §3 (frame-link reset after the inline-link rule), §4
   (micro and label-caps sizes) and the stray quotes of the route hero tail (review fix 8).
   Everything else is in this block, in spec order.
   To revert the channel: set the option cc_web_channel back to 'stable' (README).
   ====================================================================================== */

/* §2 Logo (owner points 2, 7; R1, R2; D1, D2). Logo ink height = height of the control
   beside it. Files are cropped to their ink box, so the img height IS the ink height.
   >= 1375: 40 px (= "Talk to us"); 1281-1374: 29-39 px (scales so the PT bar fits one
   line; the 1030 is an ESTIMATE, see test T1); 701-1280: 40 px; <= 700: compact mark 40-44 px. */
:root {
	--cc-header-h: 80px;
	--cc-logo-ink-h: clamp(28px, calc((100vw - 1030px) / 8.6), 40px);
	--cc-ctrl-h: 40px;
	--cc-logo-ink-h-footer: 40px;
}
@media (max-width: 1280px) { :root { --cc-logo-ink-h: 40px; } }
@media (max-width: 700px) {
	:root {
		--cc-header-h: 72px;
		--cc-logo-ink-h: clamp(40px, 12.5vw, 44px);
		--cc-ctrl-h: 44px;
		--cc-logo-ink-h-footer: 32px;
	}
	/* review fix 3: the bar gap is 32 px by default; 16 px keeps logo (195 px at 320) + Menu inside the gutters. */
	.cc-header__bar { gap: var(--cc-space-3); }
}
.cc-header__logo img,
.cc-header__logo picture {
	display: block;
	width: auto;
	height: var(--cc-logo-ink-h);
}
.cc-header .cc-header__bar > .cc-btn,
.cc-header__menu {
	min-height: var(--cc-ctrl-h);
	padding-block: 0;
}
@media (min-width: 1281px) {
	.cc-nav { gap: 20px; }
	.cc-nav__item--sep { padding-left: 20px; }
	.cc-header__bar,
	.cc-header__panel { gap: var(--cc-space-4); }
}
/* 0.37.1 (acceptance FAIL 2): the 40 px Menu button below 352 px of the 0.37 block is removed; the Menu
   button is 44 px tall at every phone width (--cc-ctrl-h). Width at 320: 195 + 74 + 16 + 32 = 317. */
/* Footer logo: its own first row, the white file (no filter), 40 px (32 px <= 700). */
.cc-footer__logo { grid-column: 1 / -1; justify-self: start; }
.cc-footer__logo img { filter: none; height: var(--cc-logo-ink-h-footer); }
/* The logo took the first row of .cc-footer__top: about, offices and nav move down one row
   where the 0.36 layout placed them by row number (<= 1280). */
@media (max-width: 1280px) {
	.cc-footer__about,
	.cc-footer__offices { grid-row: 2; }
	.cc-footer__nav { grid-row: 3; }
}
@media (max-width: 700px) {
	.cc-footer__about,
	.cc-footer__offices,
	.cc-footer__nav { grid-row: auto; }
}

/* §3 Link underline rule (owner point 6; F1, F2): the 0.36 inline-link rule is unchanged;
   explicit no-underline / hover / focus rules for the footer, header and breadcrumb links were
   added after it in place (review fix 2). */

/* §4 Minimum type (R13): --cc-fs-micro and --cc-fs-label-caps edited in place (14/20).
   Consent and helper text of the forms: 16/24, never line-height 1. */
.elementor .cc-form .elementor-field-type-acceptance .elementor-field-option,
.elementor .cc-form .elementor-field-type-acceptance label {
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
}

/* §5 Kit heading leak (owner point 8): prose headings never fall back to the kit's h3/h4. */
.elementor .cc-prose :is(h3, 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;
}
html body .cc-content :where(h3, h4):where(:not([class])) {
	font-size: var(--cc-fs-5);
	line-height: var(--cc-lh-5);
	font-weight: 400;
}
/* review (minor): the guard must not enlarge the search result titles (0.36 rule at .cc-search__item h3). */
html body .cc-search__item h3 { font-size: var(--cc-fs-6); line-height: var(--cc-lh-6); }

/* §6 Wrapper padding (S7; N1): NOT SHIPPED. devtools_readings.md 2: six unclassed wrappers on
   /medical-devices/ compute padding 0, so S7 is not confirmed; the 10 px offsets seen on
   /firm/ (H1 at 66), Contact (pills at 36) and "What you get" (957) need an element-level
   reading first. Spec rule, held back:
   .cc-content .elementor :where(.e-div-block-base, .e-flexbox-base):where(:not([class*="cc-"])) { padding: 0; }
   TODO(§6): ship (or replace by a rule aimed at the element the reading names) only after
   that reading; the durable fix is Elementor's own default styles (Batch 3.4). Acceptance
   items that depend on it (H1 at 56 on /firm/ and /pt/empresa/, "What you get" at 947,
   Contact pills at the content edge) are expected to FAIL in this build. */

/* §7 Section head on one edge, numbered by a counter (owner point 9; S1). Main form, as
   confirmed by devtools_readings.md 1 (index, title, sub are direct children; the empty
   index is :empty; the parent is an unclassed e-div-block). The counter is digits only. */
.cc-content .cc-wrap { counter-reset: cc-sec; }
.elementor .elementor-element.cc-sec-head {
	grid-template-columns: minmax(0, 8fr) minmax(0, 4fr);
	column-gap: var(--cc-space-7, 48px);
	row-gap: var(--cc-space-2, 8px);
	align-items: end;
}
.elementor .cc-sec-head > .cc-sec-head__idx { grid-column: 1 / -1; counter-increment: cc-sec; }
.elementor .cc-sec-head > .cc-sec-head__idx:empty::before { content: counter(cc-sec, decimal-leading-zero); }
.elementor .cc-sec-head > .cc-sec-head__title { grid-column: 1; }
.elementor .cc-sec-head > .cc-sec-head__sub { grid-column: 2; justify-self: start; text-align: left; }
@media (max-width: 960px) {
	.elementor .elementor-element.cc-sec-head { grid-template-columns: minmax(0, 1fr); }
	.elementor .cc-sec-head > .cc-sec-head__sub { grid-column: 1; }
}
.cc-wrap[data-cc-plain] .cc-sec-head__idx { display: none; }
/* step heads: same component, not a section, no generated content */
.elementor .cc-step-section .cc-sec-head { grid-template-columns: minmax(0, 1fr); }
.elementor .cc-step-section .cc-sec-head__idx {
	counter-increment: none;
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
}
.elementor .cc-step-section .cc-sec-head__idx:empty { display: none; }
.elementor .cc-step-section .cc-sec-head__title {
	font-size: var(--cc-fs-4);
	line-height: var(--cc-lh-4);
}

/* §8 Steps, Variant L (owner point 11; S6; D5): no pager, middle steps one column, steps 32 px apart. */
/* 0.37.1 (acceptance FAIL 4): the class's own display:flex and the 0.35.2 exits rules left the pager on the
   first and last step. !important removes the element; the durable removal is the component edit (Batch 3). */
.cc-content .cc-step .cc-step__pager,
.elementor .elementor-element.cc-step__pager { display: none !important; }
.cc-step + .cc-step:has(+ .cc-step) .cc-step-exits { display: none; }
.elementor .cc-step + .cc-step:has(+ .cc-step) { grid-template-columns: minmax(0, 1fr); }
.elementor .elementor-element.cc-step { padding-bottom: var(--cc-space-5, 32px); }

/* §9 Area order and the "Corporate" label: PHP and JS only (cc-web.php, next/cc-ui.js). */

/* §10 Header CTA fill (N12): the primary button's fill does not depend on page CSS. */
:root body .cc-header .cc-btn--primary {
	background: var(--cc-charcoal);
	border-color: var(--cc-charcoal);
	color: var(--cc-marble);
}

/* §11 Chips, interim (owner point 10; F6). Lane roles read as a plain list; role links are
   link chips that wrap in rows. Cause of F6 (devtools_readings.md 3): inside .cc-role-pills
   (flex) each pill sits in its own unclassed e-con wrapper that is display:block and full
   width, so each wrapper takes a row. The bundle (component 11084) says cc-role-pills >
   [label, cc-pill-row > cc-pill-item > a]; the reading says unclassed wrappers. Written for
   both (review fix 5): the immediate wrapper of each link pill shrinks to it, at any depth;
   the label and the pill row keep a full row. If a wrapper still takes a full row, the reading's
   alternative is: .elementor .cc-role-pills > .e-con { display: contents } (not shipped:
   it would also un-hide the empty-pill wrappers that the 0.36 hide rule removes). */
.elementor .cc-lane__roles .cc-pill { padding: 0; border-radius: 0; background: none; }
.elementor .cc-role-pills,
.elementor .cc-role-pills .cc-pill-row { flex-wrap: wrap; }
.elementor .cc-role-pills > .cc-role-pills__label { flex: 1 1 100%; }
.elementor .cc-role-pills .cc-pill-row { flex: 1 1 100%; }
/* review fix 5: the immediate wrapper of each link pill, whatever its class or depth */
.elementor .cc-role-pills :has(> .cc-pill--link) { flex: 0 1 auto; width: auto; max-width: 100%; }
.elementor .cc-pill--link {
	min-height: 40px;
	border-color: var(--cc-charcoal);
	font-size: var(--cc-fs-body-sm);
	line-height: var(--cc-lh-body-sm);
	text-decoration: none;
}
/* The arrow is decorative: declared with empty alternative text where supported. */
.elementor .cc-pill--link::after {
	content: "\2192";
	content: "\2192" / "";
	margin-left: var(--cc-space-2);
}
@media (max-width: 700px) { .elementor .cc-pill--link { min-height: 44px; } }
.elementor .cc-pill { overflow-wrap: normal; hyphens: manual; }

/* §12 Closing card, interim (owner point 5): the foot row sits at the bottom of its half. */
/* 0.37.1 (acceptance FAIL 9): the pinned-foot rule is removed (it only moved the empty band); each card is as
   tall as its content until cc-close (Batch 3). If the grid class differs, use .elementor .cc-rung { align-self: start; }. */
.elementor .cc-grid--2:has(> .cc-rung) { align-items: start; }
/* 0.37.1 (acceptance FAIL 10): the email at body size (17 desktop, 16 at <= 700 through --cc-fs-body), on the
   element and on whatever text element inside it sets its own size. */
.elementor .cc-rung__email,
.elementor .cc-rung__email :is(p, a, span, div) {
	font-size: var(--cc-fs-body);
	line-height: var(--cc-lh-body);
}

/* §13 Phone fixes (N2, N3, N4, N5, N11; F8; owner point 8e). */
/* N2 Contact path chooser */
.elementor #contact-paths .e-tab-base { box-sizing: border-box; max-width: 100%; height: auto; white-space: normal; }
.elementor #contact-paths .e-tab-base p { white-space: normal; overflow-wrap: break-word; }
@media (max-width: 700px) {
	/* N3 Route strip and route lists: the tag takes its own line, the label keeps the row */
	.cc-route__step .cc-route__tag,
	.cc-rstrip__tag { flex: 0 0 calc(100% - 36px); margin-left: 36px; }
	.cc-route__step .cc-route__label,
	.cc-rstrip__label { flex: 1 1 12ch; }
	/* 0.37.1 (acceptance FAIL 11): the same fix on the side lane ("runs alongside"), as N3 */
	.cc-route__lane .cc-route__tag { flex: 0 0 calc(100% - 36px); }
	.cc-route__lane-label { flex: 1 1 12ch; }
	/* N4 lanes edge to edge. Written for the probable cause (the atomic block's base width);
	   the §E 7 reading (lane width, margin, grid-template-columns on /briefings/ at 375) was
	   not supplied: check /briefings/ and home, where lanes sit inside a grid. */
	.elementor .elementor-element.cc-lane {
		width: calc(100% + 2 * var(--cc-gutter));
		max-width: none;
		margin-inline: calc(var(--cc-gutter) * -1);
		grid-template-columns: minmax(0, 1fr);
	}
	/* N11 footer tap targets: every link row 44 px */
	.cc-footer__col li,
	.cc-footer__links li { margin: 0; }
	.cc-footer__col li a,
	.cc-footer__links a,
	.cc-footer .cc-cookie-settings { display: block; padding-block: 12px; }
}
/* N5 pager */
:root body .cc-pagination [data-e-pagination] { flex: 0 0 auto; min-width: max-content; white-space: nowrap; aspect-ratio: auto; }
@media (max-width: 700px) {
	:root body .cc-pagination [data-e-pagination-status] { order: 3; flex-basis: 100%; }
	:root body .cc-pagination [data-e-pagination="next"] { order: 2; }
}
/* F8 roles filter */
.cc-mkt-filter__opts { position: relative; }
/* point 8e: text stacks never touch */
.cc-content :where(.cc-t-4, .cc-t-5, .cc-t-6) + :where(p) { margin-top: var(--cc-space-2); }
.cc-content :where(p.cc-t-caption) + :where(p.cc-t-body-sm) { margin-top: var(--cc-space-2); }

/* §13 Footer length (R2): the three area columns are <details> (markup in [cc_footer], 0.37).
   Wide: open, the head looks like the 0.36 head and is not a control. <= 700: closed by
   cc-ui.js, 44 px rows with a plus/minus. Without script all lists stay open, as in 0.36. */
.cc-footer details.cc-footer__col > summary { list-style: none; cursor: default; }
.cc-footer details.cc-footer__col > summary::-webkit-details-marker { display: none; }
@media (max-width: 700px) {
	.cc-footer__nav { gap: 0; }
	.cc-footer .cc-footer__col { border-top: 1px solid var(--cc-border-hairline-inverse, #403b37); }
	.cc-footer .cc-footer__col:not(details) { padding-block: var(--cc-space-3); }
	.cc-footer .cc-footer__offices li { margin-bottom: var(--cc-space-2); }
	.cc-footer details.cc-footer__col > summary {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: var(--cc-space-3);
		min-height: 44px;
		margin: 0;
		cursor: pointer;
	}
	.cc-footer details.cc-footer__col > summary::after {
		content: "+";
		content: "+" / "";
		flex: none;
		font-size: var(--cc-fs-6);
		line-height: 1;
	}
	.cc-footer details.cc-footer__col[open] > summary::after {
		content: "\2212";
		content: "\2212" / "";
	}
}

/* §14 Legacy report links (N10): "Read More »" in Charcoal, 14 px, underlined. Review fix 7: selector
   at 0,5,1 to beat the Posts widget's own colour rule (0,4,0). If the preview still shows red, add
   !important to color only. */
:root body .cc-legacy .elementor-widget-posts .elementor-post .elementor-post__read-more {
	color: var(--cc-text);
	font-size: var(--cc-fs-caption);
	line-height: var(--cc-lh-caption);
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* ======================================================================================
   cc-web 0.37.1 · 2026-11-15 · acceptance follow-up (batch1_acceptance.md FAIL list;
   batch1_code_review.md "Acceptance follow-up"). FAIL 2, 4, 9, 10, 11 are edited in place
   above (marked 0.37.1). FAIL 5, 6 are page data (Batch 2).
   ====================================================================================== */

/* FAIL 1: PT header, nav over the logo at 1281-1440. The panel keeps its content width and the logo
   yields (every language, no constant to tune); PT gets a tighter bar rhythm (about 88 px saved).
   8.5625 = 1644 / 192, the ratio of cc-logo-h.png. Test by positions (nav.left - logo.right >= 16),
   not by scrollWidth. */
@media (min-width: 1281px) {
	.cc-header__panel { flex: 0 0 auto; margin-left: auto; }
	.cc-header__logo { flex: 0 1 auto; min-width: 0; }
	.cc-header__logo picture { height: auto; }
	.cc-header__logo img { width: 100%; height: auto; max-width: calc(var(--cc-logo-ink-h) * 8.5625); }
	:lang(pt) .cc-nav { gap: 12px; }
	:lang(pt) .cc-nav__item--sep { padding-left: 12px; }
	:lang(pt) .cc-nav__disc { width: 24px; }
	:lang(pt) .cc-header__bar,
	:lang(pt) .cc-header__panel { gap: var(--cc-space-3); }
}

/* FAIL 3: footer "Cookie settings" is a button; cc-consent.css underlines it at rest. Same as the
   footer links: none at rest, underline on hover and keyboard focus. */
.cc-footer .cc-cookie-settings { text-decoration: none; }
.cc-footer .cc-cookie-settings:is(:hover, :focus-visible) {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 4px;
}

/* FAIL 7: archive pager, the disabled "Previous page" pill measured 38 px wide with its label (123 px)
   spilling over the next pill and the status. Natural width for every pager item, disabled included.
   !important: the width that shrinks it was not identified (no DOM reading); verify at 1440, 375, 320. */
:root body .cc-pagination [data-e-pagination],
:root body .cc-pagination .e--disabled,
:root body .cc-pagination [aria-disabled="true"] {
	width: auto !important;
	min-width: max-content !important;
	max-width: none !important;
	flex: 0 0 auto !important;
	white-space: nowrap;
	overflow: visible;
}

/* FAIL 8: /firm/ bios, the credentials caption sits directly under the person card (measured 0 px):
   8 px, whether the caption follows the card or ends it. */
.elementor .cc-person + .cc-t-caption,
.elementor .cc-person > .cc-t-caption:not(:first-child) { margin-top: var(--cc-space-2); }

/* FAIL 12: PT person area pill ("Assuntos regulamentares") overflowed its border by 3 px at 320:
   less side padding and a break allowed inside the word as the last resort, phones only. */
@media (max-width: 700px) {
	.elementor .cc-pill.cc-pill--area {
		padding-inline: var(--cc-space-2);
		overflow-wrap: anywhere;
	}
}


/* 0.37.2 (2026-11-15) — acceptance FAIL 7 and FAIL 10, from live DOM readings.
   FAIL 7: the pager label is drawn by ::before/::after, which another rule positions absolute,
   so the pill takes no width from it (38 px vs 123 px label). Keep the label in flow. */
:root body .cc-pagination [data-e-pagination]::before,
:root body .cc-pagination [data-e-pagination]::after {
	position: static !important;
	inset: auto !important;
	width: auto !important;
	height: auto !important;
	transform: none !important;
}
/* FAIL 10: the email paragraph keeps the global class cc-t-5 (24 px); body size wins here. */
:root body .elementor p.cc-rung__email {
	font-size: var(--cc-fs-body);
	line-height: var(--cc-lh-body);
}
