.bce-accessibility-skip-link,
.bce-skip-link[data-bce-skip-link] {
	position: fixed;
	top: 8px;
	left: 8px;
	z-index: 1000001;
	padding: 0.8rem 1rem;
	color: #fff;
	background: #0d2742;
	border: 3px solid #fff;
	border-radius: 0.5rem;
	font-weight: 800;
	transform: translateY(-160%);
	transition: transform 0.15s ease;
}

.bce-accessibility-skip-link:focus,
.bce-accessibility-skip-link:focus-visible,
.bce-skip-link[data-bce-skip-link]:focus,
.bce-skip-link[data-bce-skip-link]:focus-visible {
	transform: translateY(0);
}

.bce-accessibility-root,
.bce-accessibility-root * {
	box-sizing: border-box;
}

.bce-accessibility-root {
	--bce-a11y-navy: #0d2742;
	--bce-a11y-blue: #174c78;
	--bce-a11y-accent: #c9623d;
	--bce-a11y-border: #d9e0e6;
	--bce-a11y-muted: #52677b;
	--bce-a11y-surface: #fff;
	position: fixed;
	left: max(18px, env(safe-area-inset-left));
	bottom: max(18px, env(safe-area-inset-bottom));
	z-index: 999999;
	font-family: Arial, Helvetica, sans-serif !important;
	font-size: 16px !important;
	line-height: 1.4 !important;
	color: var(--bce-a11y-navy) !important;
	text-align: left;
}

.bce-accessibility-launcher {
	width: 58px;
	height: 58px;
	display: grid;
	place-items: center;
	padding: 0;
	border: 3px solid #fff;
	border-radius: 50%;
	color: #fff;
	background: var(--bce-a11y-navy);
	box-shadow: 0 10px 28px rgba(7, 27, 46, 0.28);
	cursor: pointer;
	transition: transform 0.18s ease, background 0.18s ease;
}

.bce-accessibility-launcher:hover {
	background: var(--bce-a11y-blue);
	transform: translateY(-2px);
}

.bce-accessibility-launcher svg {
	width: 30px;
	height: 30px;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.9;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.bce-accessibility-panel {
	position: absolute;
	left: 0;
	bottom: 72px;
	width: min(360px, calc(100vw - 36px));
	max-height: min(650px, calc(100vh - 115px));
	overflow: auto;
	border: 1px solid var(--bce-a11y-border);
	border-radius: 18px;
	background: var(--bce-a11y-surface);
	box-shadow: 0 20px 55px rgba(7, 27, 46, 0.26);
}

.bce-accessibility-panel[hidden] {
	display: none !important;
}

.bce-accessibility-panel__header {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 16px;
	padding: 20px 20px 17px;
	color: #fff;
	background: linear-gradient(135deg, #0d2742, #174c78);
}

.bce-accessibility-panel__eyebrow {
	margin: 0 0 3px !important;
	color: rgba(255, 255, 255, 0.72) !important;
	font: 800 11px/1.2 Arial, Helvetica, sans-serif !important;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.bce-accessibility-panel h2 {
	margin: 0 !important;
	color: #fff !important;
	font: 800 20px/1.25 Arial, Helvetica, sans-serif !important;
	letter-spacing: -0.01em;
}

.bce-accessibility-close {
	flex: 0 0 auto;
	width: 38px;
	height: 38px;
	display: grid;
	place-items: center;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.45);
	border-radius: 10px;
	color: #fff;
	background: rgba(255, 255, 255, 0.08);
	cursor: pointer;
}

.bce-accessibility-close:hover {
	background: rgba(255, 255, 255, 0.18);
}

.bce-accessibility-close svg,
.bce-accessibility-reset svg {
	width: 21px;
	height: 21px;
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.bce-accessibility-panel__body {
	padding: 18px 20px 20px;
	background: #fff;
}

.bce-accessibility-control-label {
	display: block;
	margin-bottom: 9px;
	color: var(--bce-a11y-navy) !important;
	font: 800 14px/1.3 Arial, Helvetica, sans-serif !important;
}

.bce-accessibility-stepper {
	display: grid;
	grid-template-columns: 54px minmax(0, 1fr) 54px;
	align-items: center;
	min-height: 48px;
	border: 1px solid var(--bce-a11y-border);
	border-radius: 12px;
	overflow: hidden;
}

.bce-accessibility-stepper button {
	align-self: stretch;
	border: 0;
	color: var(--bce-a11y-navy);
	background: #eef4f8;
	font: 850 16px/1 Arial, Helvetica, sans-serif !important;
	cursor: pointer;
}

.bce-accessibility-stepper button:hover:not(:disabled) {
	color: #fff;
	background: var(--bce-a11y-blue);
}

.bce-accessibility-stepper button:disabled {
	opacity: 1;
	color: #52677b;
	background: #e4e9ed;
	cursor: not-allowed;
}

.bce-accessibility-stepper output {
	padding: 0 8px;
	color: var(--bce-a11y-navy) !important;
	background: #fff;
	font: 750 13px/1.25 Arial, Helvetica, sans-serif !important;
	text-align: center;
}

.bce-accessibility-options {
	display: grid;
	gap: 9px;
	margin-top: 16px;
}

.bce-accessibility-option {
	width: 100%;
	min-height: 51px;
	display: grid;
	grid-template-columns: 28px minmax(0, 1fr) 42px;
	align-items: center;
	gap: 11px;
	padding: 9px 11px;
	border: 1px solid var(--bce-a11y-border);
	border-radius: 12px;
	color: var(--bce-a11y-navy);
	background: #fff;
	font: 750 14px/1.3 Arial, Helvetica, sans-serif !important;
	text-align: left;
	cursor: pointer;
}

.bce-accessibility-option:hover {
	border-color: #9fb3c3;
	background: #f7fafc;
}

.bce-accessibility-option.is-active {
	border-color: var(--bce-a11y-blue);
	background: #edf5fb;
}

.bce-accessibility-option > svg {
	width: 25px;
	height: 25px;
	fill: none;
	stroke: var(--bce-a11y-blue);
	stroke-width: 1.8;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.bce-accessibility-switch {
	position: relative;
	width: 39px;
	height: 23px;
	border-radius: 999px;
	background: #cbd5dd;
	transition: background 0.16s ease;
}

.bce-accessibility-switch::after {
	content: "";
	position: absolute;
	top: 3px;
	left: 3px;
	width: 17px;
	height: 17px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);
	transition: transform 0.16s ease;
}

.bce-accessibility-option.is-active .bce-accessibility-switch {
	background: var(--bce-a11y-blue);
}

.bce-accessibility-option.is-active .bce-accessibility-switch::after {
	transform: translateX(16px);
}

.bce-accessibility-reset {
	width: 100%;
	min-height: 46px;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin-top: 16px;
	padding: 10px 14px;
	border: 1px solid #d7a18e;
	border-radius: 12px;
	color: #934225;
	background: #fff7f3;
	font: 800 14px/1.3 Arial, Helvetica, sans-serif !important;
	cursor: pointer;
}

.bce-accessibility-reset:hover {
	color: #fff;
	background: var(--bce-a11y-accent);
	border-color: var(--bce-a11y-accent);
}

.bce-accessibility-note {
	margin: 12px 0 0 !important;
	color: var(--bce-a11y-muted) !important;
	font: 400 12px/1.45 Arial, Helvetica, sans-serif !important;
	text-align: center;
}

.bce-accessibility-root button:focus-visible,
.bce-accessibility-root [tabindex]:focus-visible {
	outline: 3px solid #ffbf47 !important;
	outline-offset: 3px !important;
}

/* Text scaling uses the root font size so rem-based theme typography scales consistently. */
html.bce-a11y-font-1 { font-size: 106.25% !important; }
html.bce-a11y-font-2 { font-size: 112.5% !important; }
html.bce-a11y-font-3 { font-size: 125% !important; }

/* Keep the toolbar itself stable while page text is enlarged. */
html.bce-a11y-font-1 .bce-accessibility-root,
html.bce-a11y-font-2 .bce-accessibility-root,
html.bce-a11y-font-3 .bce-accessibility-root {
	font-size: 16px !important;
}

/* Tailored high-contrast treatment for the BCE Consultancy theme. */
html.bce-a11y-contrast {
	--bce-navy-950: #000 !important;
	--bce-navy-900: #000 !important;
	--bce-navy-800: #111 !important;
	--bce-blue-100: #181818 !important;
	--bce-neutral-50: #000 !important;
	--bce-neutral-100: #111 !important;
	--bce-neutral-200: #fff !important;
	--bce-text: #fff !important;
	--bce-muted: #fff !important;
	--bce-terracotta-600: #ffdf00 !important;
	--bce-terracotta-700: #ffdf00 !important;
}

html.bce-a11y-contrast body,
html.bce-a11y-contrast #main-content,
html.bce-a11y-contrast .site-header,
html.bce-a11y-contrast .site-footer,
html.bce-a11y-contrast .bce-topbar,
html.bce-a11y-contrast .bce-section,
html.bce-a11y-contrast .bce-page-hero,
html.bce-a11y-contrast .bce-card,
html.bce-a11y-contrast .bce-process__item,
html.bce-a11y-contrast .bce-tabs,
html.bce-a11y-contrast .bce-tabs__list,
html.bce-a11y-contrast .bce-accordion__item,
html.bce-a11y-contrast .bce-accordion__button,
html.bce-a11y-contrast .bce-summary-panel__item,
html.bce-a11y-contrast .bce-doc-item,
html.bce-a11y-contrast .bce-document-notes,
html.bce-a11y-contrast .bce-field input,
html.bce-a11y-contrast .bce-field select,
html.bce-a11y-contrast .bce-field textarea {
	color: #fff !important;
	background: #000 !important;
	border-color: #fff !important;
	box-shadow: none !important;
}

html.bce-a11y-contrast :where(header, main, footer) :where(h1, h2, h3, h4, h5, h6, p, li, dt, dd, label, small, strong, span) {
	color: #fff !important;
}

html.bce-a11y-contrast :where(header, main, footer) a {
	color: #ffdf00 !important;
	text-decoration-color: currentColor !important;
}

html.bce-a11y-contrast :where(header, main, footer) :where(button, .bce-btn) {
	color: #000 !important;
	background: #ffdf00 !important;
	border-color: #ffdf00 !important;
}

html.bce-a11y-contrast :where(header, main, footer) img {
	border: 2px solid #fff !important;
}

html.bce-a11y-grayscale :where(header, main, footer) {
	filter: grayscale(1) !important;
}

html.bce-a11y-links :where(header, main, footer) a:not(.bce-btn) {
	text-decoration: underline !important;
	text-decoration-thickness: 0.14em !important;
	text-underline-offset: 0.16em !important;
}

html.bce-a11y-readable body :where(h1, h2, h3, h4, h5, h6, p, li, a, button, input, select, textarea, label, dt, dd, blockquote, figcaption) {
	font-family: Arial, Helvetica, sans-serif !important;
	letter-spacing: 0.01em;
}

html.bce-a11y-motion *,
html.bce-a11y-motion *::before,
html.bce-a11y-motion *::after {
	scroll-behavior: auto !important;
	animation-duration: 0.01ms !important;
	animation-iteration-count: 1 !important;
	transition-duration: 0.01ms !important;
	transition-delay: 0ms !important;
}

html.bce-a11y-focus *:focus-visible {
	outline: 4px solid #ffbf47 !important;
	outline-offset: 4px !important;
	box-shadow: 0 0 0 2px #111 !important;
}

@media (max-width: 520px) {
	.bce-accessibility-root {
		left: max(10px, env(safe-area-inset-left));
		bottom: max(10px, env(safe-area-inset-bottom));
	}

	.bce-accessibility-panel {
		width: calc(100vw - 20px);
		max-height: calc(100vh - 94px);
		bottom: 68px;
		border-radius: 15px;
	}

	.bce-accessibility-panel__header,
	.bce-accessibility-panel__body {
		padding-left: 16px;
		padding-right: 16px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.bce-accessibility-launcher,
	.bce-accessibility-skip-link,
	.bce-accessibility-switch,
	.bce-accessibility-switch::after {
		transition: none !important;
	}
}
