/*
Theme Name: Forte Technologies
Description: Project-owned standalone theme for the Forte Elementor site.
Author: CSBG
Version: 0.1.0
Text Domain: forte
*/

html {
	box-sizing: border-box;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

*,
*::before,
*::after {
	box-sizing: inherit;
}

body {
	margin: 0;
	background: #ffffff;
	color: #474044;
}

img {
	display: block;
	max-width: 100%;
	height: auto;
}

.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.screen-reader-text:focus {
	z-index: 100000;
	top: 1rem;
	left: 1rem;
	width: auto;
	height: auto;
	padding: 0.75rem 1rem;
	clip: auto;
	background: #ffffff;
	color: var(--forte-color-brand, #063b5a);
}

.forte-fallback-shell {
	width: min(calc(100% - 2.5rem), var(--forte-content-max, 1280px));
	margin-inline: auto;
}

.forte-elementor-page {
	width: 100%;
	max-width: none;
	padding: 0;
	margin: 0;
}

.forte-fallback-header {
	padding-block: 1.5rem;
}

.forte-fallback-footer {
	padding-block: 6.5rem 3.125rem;
	background: var(--forte-color-surface, #ffffff);
	color: #000000;
	font-family: var(--forte-font-body, "Instrument Sans", sans-serif);
}

.forte-fallback-footer__inner {
	display: grid;
	grid-template-columns: 22.25rem minmax(0, 1fr);
	column-gap: clamp(6rem, 15.4vw, 18.5rem);
	row-gap: 4rem;
	align-items: start;
}

.forte-fallback-footer__brand-column {
	display: flex;
	flex-direction: column;
	gap: 3.125rem;
	align-items: flex-start;
	padding-top: 0.5625rem;
}

.forte-fallback-footer__brand {
	display: block;
	width: min(100%, 18.75rem);
}

.forte-fallback-footer__brand img {
	width: 100%;
	height: auto;
}

.forte-fallback-footer__trust,
.forte-fallback-footer__legal p {
	margin: 0;
}

.forte-fallback-footer__trust {
	max-width: 22.25rem;
	font-size: 1.125rem;
	line-height: 1.75rem;
}

.forte-fallback-footer a {
	color: inherit;
	text-decoration: none;
	text-underline-offset: 0.3em;
}

.forte-fallback-footer a:hover,
.forte-fallback-footer a:focus-visible {
	text-decoration: underline;
	text-decoration-color: var(--forte-color-accent, #db222a);
	text-decoration-thickness: 0.125rem;
}

.forte-fallback-footer a:focus-visible {
	outline: 0.125rem solid var(--forte-color-accent, #db222a);
	outline-offset: 0.1875rem;
}

.forte-fallback-footer__legal {
	grid-column: 1 / -1;
}

.forte-fallback-footer__phone {
	display: inline-block;
	margin-top: 2.5rem;
	color: var(--forte-color-brand, #063b5a);
	font-size: 1rem;
	font-weight: 700;
	line-height: 1.5rem;
}

.forte-fallback-footer__legal {
	display: flex;
	gap: 1.875rem;
	align-items: center;
	justify-content: center;
	color: var(--forte-color-text, #474044);
	font-size: 0.875rem;
	line-height: 1.25rem;
}

body.elementor-page .forte-fallback-header {
	position: absolute;
	z-index: 20;
	top: 0;
	right: 0;
	left: 0;
	padding-block: clamp(1.5rem, 2.6vw, 3.125rem);
	color: #ffffff;
}

body.admin-bar.elementor-page .forte-fallback-header {
	top: var(--wp-admin--admin-bar--height, 2rem);
}

body.elementor-page .forte-fallback-header__inner {
	width: min(calc(100% - 5rem), var(--forte-content-max, 1280px));
}

.forte-fallback-header__inner {
	display: flex;
	gap: 1.5rem;
	align-items: center;
	justify-content: space-between;
}

.forte-fallback-header__brand {
	display: block;
	flex: 0 0 auto;
	width: clamp(11rem, 14.8vw, 17.75rem);
	transform: translateY(0.6875rem);
}

.forte-fallback-header__brand img {
	width: 100%;
	height: auto;
}

.forte-fallback-header__desktop-nav {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	gap: 1.5rem;
	align-items: flex-end;
	font-family: "Instrument Sans", sans-serif;
}

.forte-fallback-header ul {
	display: flex;
	flex-wrap: wrap;
	gap: clamp(0.875rem, 1.3vw, 1.5625rem);
	align-items: center;
	padding: 0;
	margin: 0;
	list-style: none;
}

.forte-fallback-header__utility ul {
	gap: 1.875rem;
	font-size: 0.875rem;
	line-height: 1.25rem;
}

.forte-fallback-header .forte-utility-item > a {
	display: inline-flex;
	gap: 0.4375rem;
	align-items: center;
}

.forte-fallback-header .forte-utility-item > a::before {
	display: block;
	flex: 0 0 auto;
	width: 1.125rem;
	height: 1.125rem;
	background-position: center;
	background-repeat: no-repeat;
	background-size: contain;
	content: "";
}

.forte-fallback-header .forte-utility-item--portal > a::before {
	background-image: url("assets/images/utility-client-portal.svg");
}

.forte-fallback-header .forte-utility-item--search > a::before {
	background-image: url("assets/images/utility-search.svg");
}

.forte-fallback-header .forte-utility-item--phone > a::before {
	background-image: url("assets/images/utility-phone.svg");
}

.forte-fallback-header__primary ul {
	font-size: 1rem;
	font-weight: 500;
	line-height: 1.5rem;
}

.forte-fallback-header a {
	color: inherit;
	text-decoration: none;
}

.forte-fallback-header nav a {
	text-underline-offset: 0.3em;
}

.forte-fallback-header nav a:hover,
.forte-fallback-header nav a:focus-visible {
	text-decoration: underline;
	text-decoration-color: var(--forte-color-accent, #db222a);
	text-decoration-thickness: 0.125rem;
}

.forte-fallback-header__mobile-nav {
	display: none;
	position: relative;
	font-family: "Instrument Sans", sans-serif;
}

.forte-fallback-header__mobile-nav summary {
	padding: 0.625rem 1rem;
	border: 0.125rem solid var(--forte-color-accent, #db222a);
	border-radius: 0.625rem;
	cursor: pointer;
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.5rem;
	list-style: none;
}

.forte-fallback-header__mobile-nav summary::-webkit-details-marker {
	display: none;
}

.forte-fallback-header__mobile-nav summary:focus-visible {
	outline: 0.125rem solid #ffffff;
	outline-offset: 0.1875rem;
}

.forte-fallback-header__mobile-panel {
	position: absolute;
	top: calc(100% + 0.75rem);
	right: 0;
	width: min(19rem, calc(100vw - 2.5rem));
	padding: 1.25rem;
	border-radius: 0.625rem;
	background: var(--forte-color-brand, #063b5a);
	box-shadow: 0 1rem 2rem rgba(0, 0, 0, 0.28);
}

.forte-fallback-header__mobile-panel ul {
	flex-direction: column;
	gap: 0.75rem;
	align-items: flex-start;
}

@media (max-width: 1100px) {
	.forte-fallback-header__desktop-nav {
		display: none;
	}

	.forte-fallback-header__mobile-nav {
		display: block;
	}

	.forte-fallback-footer__inner {
		grid-template-columns: 1fr;
		column-gap: 0;
	}

	.forte-fallback-footer__legal {
		grid-column: auto;
	}

}

@media (max-width: 767px) {
	body.elementor-page .forte-fallback-header {
		padding-block: 1.25rem;
	}

	.forte-fallback-header__brand {
		width: 10rem;
		transform: none;
	}

	body.elementor-page .forte-fallback-header__inner {
		width: calc(100% - 2.5rem);
	}

	.forte-fallback-footer {
		padding-block: 4rem 2.5rem;
	}

	.forte-fallback-footer__brand {
		width: min(100%, 18rem);
	}

	.forte-fallback-footer__brand-column {
		gap: 2rem;
		padding-top: 0;
	}

	.forte-fallback-footer__legal {
		align-items: flex-start;
		flex-direction: column;
	}
}

/*
 * Native Elementor Theme Builder site shell.
 *
 * Theme Builder owns the header/footer structure, WordPress owns menu content,
 * and these semantic component classes own the shared presentation. Local
 * Elementor controls remain available for intentional template exceptions.
 */
:where(.forte-site-header),
:where(.forte-site-footer) {
	width: 100%;
	font-family: var(--forte-font-body, "Instrument Sans", sans-serif);
}

body.forte-shared-header {
	--forte-header-logo-compact-width: 9rem;
	--forte-header-compact-padding-block: 0.375rem;
	--forte-header-compact-row-gap: 0.125rem;
	--forte-header-compact-link-padding-block: 0.25rem;
	--forte-header-motion-duration: 320ms;
	--forte-header-motion-easing: cubic-bezier(0.22, 1, 0.36, 1);
	--forte-header-mobile-control-width: 3rem;
	--forte-header-utility-item-gap: 0.5rem;
	--forte-header-logo-optical-offset: 19.3%;
	--forte-header-overlay: transparent;
	--forte-header-scrim-opacity: 0.5;
	/* Set to 1 to restore the resting overlay without changing the scrolled header. */
	--forte-header-resting-overlay-opacity: 0;
	--forte-header-surface-opacity: 90%;
	--forte-header-backdrop-blur: 12px;
}

body.forte-shared-header.forte-header-is-stuck {
	--forte-header-surface-color: var(--forte-color-brand, #063b5a);
	--forte-header-surface-opacity: 95%;
}

body.forte-shared-header .elementor-location-header {
	position: sticky;
	z-index: 1000;
	top: 0;
	height: 0;
}

body.admin-bar.forte-shared-header .elementor-location-header {
	top: var(--wp-admin--admin-bar--height, 2rem);
}

body.forte-shared-header .elementor-location-header :where(.forte-site-header) {
	position: relative;
	isolation: isolate;
	top: auto;
	right: auto;
	left: auto;
	background: var(--forte-header-overlay);
	box-shadow: none;
	transition: padding-block var(--forte-header-motion-duration) var(--forte-header-motion-easing), background-color var(--forte-header-motion-duration) var(--forte-header-motion-easing), box-shadow var(--forte-header-motion-duration) var(--forte-header-motion-easing);
}

/* Navigation has a straight edge; page surfaces own the decorative angles. */
body.forte-shared-header .elementor-location-header :where(.forte-site-header)::after {
	position: absolute;
	z-index: -1;
	top: -0.625rem;
	left: 0;
	width: 100%;
	/* Cover the logo's optical offset with a small, even bottom clearance. */
	height: calc(100% + 1.25rem);
	background: rgba(0, 0, 0, var(--forte-header-scrim-opacity));
	opacity: var(--forte-header-resting-overlay-opacity);
	clip-path: none;
	content: "";
	pointer-events: none;
	transition: height var(--forte-header-motion-duration) var(--forte-header-motion-easing), background-color var(--forte-header-motion-duration) var(--forte-header-motion-easing), opacity var(--forte-header-motion-duration) var(--forte-header-motion-easing), filter var(--forte-header-motion-duration) var(--forte-header-motion-easing);
}

body.elementor-page :where(.forte-site-header) {
	position: absolute;
	z-index: 20;
	top: 0;
	right: 0;
	left: 0;
	color: #ffffff;
}

body.admin-bar.elementor-page :where(.forte-site-header) {
	top: var(--wp-admin--admin-bar--height, 2rem);
}

/* Theme Builder already sits beneath the WordPress admin bar. Do not apply
 * the fallback header's second admin-bar offset inside the shared wrapper. */
body.admin-bar.forte-shared-header .elementor-location-header :where(.forte-site-header) {
	top: 0;
}

body:not(.elementor-page) :where(.forte-site-header) {
	background: var(--forte-color-brand, #063b5a);
	color: #ffffff;
}

:where(.forte-site-header__brand) {
	flex: 0 0 auto;
	transform: translateY(var(--forte-header-logo-optical-offset));
}

body.forte-shared-header .elementor-location-header :where(.forte-site-header__brand) {
	align-self: flex-end;
	transition: width var(--forte-header-motion-duration) var(--forte-header-motion-easing), transform var(--forte-header-motion-duration) var(--forte-header-motion-easing);
}

:where(.forte-site-header__brand img),
:where(img.forte-site-header__brand) {
	width: 100%;
	height: auto;
}

body.forte-shared-header .elementor-location-header :where(.forte-site-header__navigation) {
	transition: gap var(--forte-header-motion-duration) var(--forte-header-motion-easing);
}

:where(.forte-site-header__mobile-menu) {
	display: none;
}

.elementor .forte-site-header__primary-menu .elementor-nav-menu--main > .elementor-nav-menu {
	flex-wrap: nowrap;
	justify-content: flex-end;
}

.elementor .forte-site-header__primary-menu .elementor-nav-menu--main .elementor-item {
	padding-inline: 0;
	white-space: nowrap;
}

:where(.forte-site-header .elementor-nav-menu a) {
	color: inherit;
	text-decoration: none;
	text-underline-offset: 0.3em;
}

:where(.forte-site-header .elementor-nav-menu a:hover),
:where(.forte-site-header .elementor-nav-menu a:focus-visible) {
	text-decoration: underline;
	text-decoration-color: var(--forte-color-accent, #db222a);
	text-decoration-thickness: 0.125rem;
}

/* Keep each utility icon inside its link so menu spacing cannot separate it
 * from its label. The utility widget uses Elementor's native Pointer: None. */
.elementor .forte-site-header__utility-menu .forte-utility-item > a.elementor-item {
	display: inline-flex;
	align-items: center;
	gap: var(--forte-header-utility-item-gap);
	padding-inline: 0;
}

body.forte-shared-header .elementor .forte-site-header__utility-menu .forte-utility-item > a.elementor-item::before {
	background-color: transparent;
	position: static;
	display: block;
	flex: 0 0 1.125rem;
	width: 1.125rem;
	height: 1.125rem;
	background-position: center;
	background-size: contain;
	background-repeat: no-repeat;
	content: "";
	opacity: 1;
	transform: none;
}

.elementor .forte-site-header__utility-menu .forte-utility-item--portal > a.elementor-item::before {
	background-image: url("assets/images/utility-client-portal.svg");
}

.elementor .forte-site-header__utility-menu .forte-utility-item--search > a.elementor-item::before {
	background-image: url("assets/images/utility-search.svg");
}

.elementor .forte-site-header__utility-menu .forte-utility-item--phone > a.elementor-item::before {
	background-image: url("assets/images/utility-phone.svg");
}

body.forte-shared-header .elementor-location-header .elementor-item {
	transition: padding-block var(--forte-header-motion-duration) var(--forte-header-motion-easing);
}

.elementor .forte-site-header .elementor-nav-menu--dropdown a:focus-visible {
	outline: 2px solid var(--forte-color-accent, #db222a);
	outline-offset: -4px;
}

/* Only the scrolled state overrides native resting dimensions. */
body.forte-shared-header.forte-header-is-stuck .elementor-location-header .forte-site-header {
	padding-block: var(--forte-header-compact-padding-block);
	background: transparent;
	box-shadow: none;
}

body.forte-shared-header.forte-header-is-stuck .elementor-location-header :where(.forte-site-header)::after {
	top: 0;
	height: 100%;
	background: var(--forte-header-surface-color, var(--forte-color-brand));
	opacity: 1;
	filter: drop-shadow(0 0.625rem 1.875rem rgba(3, 14, 36, 0.2));
}

body.forte-shared-header.forte-header-is-stuck .elementor-location-header .forte-site-header__brand {
	width: var(--forte-header-logo-compact-width);
	align-self: center;
	transform: none;
}

body.forte-shared-header.forte-header-is-stuck .elementor-location-header .forte-site-header__navigation {
	gap: var(--forte-header-compact-row-gap);
}

body.forte-shared-header.forte-header-is-stuck .elementor-location-header .elementor-nav-menu--main .elementor-item {
	padding-block: var(--forte-header-compact-link-padding-block);
}

:where(.forte-site-header .elementor-menu-toggle) {
	display: inline-flex;
	min-width: 2.75rem;
	min-height: 2.75rem;
	align-items: center;
	justify-content: center;
	border: 0.125rem solid var(--forte-color-accent, #db222a);
	border-radius: 0.625rem;
	background: transparent;
	color: #ffffff;
}

:where(.forte-site-header .elementor-menu-toggle:focus-visible) {
	outline: 0.125rem solid #ffffff;
	outline-offset: 0.1875rem;
}

:where(.forte-site-header .elementor-nav-menu--dropdown) {
	padding: 1.25rem;
	border-radius: 0.625rem;
	background: var(--forte-color-brand, #063b5a);
	box-shadow: 0 1rem 2rem rgba(0, 0, 0, 0.28);
}

/* Elementor excludes dropdown line height and adds an 8px transparent indent.
 * Keep navigation metrics stable across default, hover, and focus states. */
.elementor .forte-site-header .elementor-nav-menu--dropdown a,
.elementor .forte-site-header .elementor-nav-menu--dropdown a:hover,
.elementor .forte-site-header .elementor-nav-menu--dropdown a:focus {
	line-height: var(--e-global-typography-accent-line-height, 1.5);
	border-inline-start: 0;
}

.elementor .forte-site-header__primary-menu .elementor-nav-menu--main .sub-menu {
	/* SmartMenus sets a smaller minimum inline when it opens each submenu. */
	min-width: 15rem !important;
}

body.search.forte-shared-header .elementor-location-header .forte-site-header::after {
	/* Search has no dark hero behind the shared white navigation. */
	background: var(--forte-color-brand, #063b5a);
	opacity: 1;
}

/* Keep the opaque fallback when backdrop blur is unavailable. */
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
	body.forte-shared-header.forte-header-is-stuck .elementor-location-header :where(.forte-site-header)::after,
	body.search.forte-shared-header .elementor-location-header .forte-site-header::after {
		background: color-mix(in srgb, var(--forte-header-surface-color, var(--forte-color-brand, #063b5a)) var(--forte-header-surface-opacity), transparent);
		-webkit-backdrop-filter: blur(var(--forte-header-backdrop-blur));
		backdrop-filter: blur(var(--forte-header-backdrop-blur));
	}
}

.forte-search {
	/* Only the PHP fallback needs header clearance. Elementor owns its hero spacing. */
	padding-block: 12rem 4rem;
}

.forte-search .search-form {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 1rem;
	margin-block: 2rem;
}

.forte-search .search-field {
	box-sizing: border-box;
	width: 100%;
	padding: 0.75rem 1rem;
	border: 1px solid var(--forte-color-brand, #063b5a);
	border-radius: 0.25rem;
	font: inherit;
}

.forte-search .search-submit {
	padding: 0.75rem 1.5rem;
	border: 0;
	border-radius: 0.25rem;
	background: var(--forte-color-brand, #063b5a);
	color: #fff;
	font: inherit;
	cursor: pointer;
}

.forte-search__results li {
	margin-block: 1rem;
}

/* Footer content, typography, spacing, and responsive composition live in
 * Theme Builder. These hooks only provide shared surface and link behavior. */
:where(.forte-site-footer) {
	background: var(--forte-color-surface, #ffffff);
	color: var(--forte-color-text, #474044);
}

:where(.forte-site-footer__brand img),
:where(img.forte-site-footer__brand) {
	height: auto;
}

:where(.forte-site-footer__trust p),
:where(p.forte-site-footer__trust),
:where(.forte-site-footer__copyright p),
:where(p.forte-site-footer__copyright) {
	margin: 0;
}

:where(.forte-site-footer a) {
	color: inherit;
	text-underline-offset: 0.3em;
}

:where(.forte-site-footer a:hover),
:where(.forte-site-footer a:focus-visible) {
	text-decoration: underline;
	text-decoration-color: var(--forte-color-accent, #db222a);
	text-decoration-thickness: 1px;
}

.elementor .forte-site-footer .elementor-nav-menu a:is(:hover, :focus-visible, .elementor-item-active) {
	text-decoration: underline;
	text-decoration-color: var(--forte-color-accent, #db222a);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.3em;
}

:where(.forte-site-footer a:focus-visible) {
	outline: 0.125rem solid var(--forte-color-accent, #db222a);
	outline-offset: 0.1875rem;
}

@media (max-width: 1200px) {
	:where(.forte-site-header__utility-menu),
	:where(.forte-site-header__primary-menu) {
		display: none;
	}

	body.forte-shared-header .elementor-location-header .forte-site-header__mobile-menu {
		display: block;
	}

	body.forte-shared-header .elementor-location-header .forte-site-header__mobile-menu .elementor-nav-menu--main {
		display: none;
	}

	body.forte-shared-header .elementor-location-header .forte-site-header__mobile-menu > .elementor-menu-toggle {
		display: flex;
	}

	body.forte-shared-header .elementor-location-header .forte-site-header__mobile-menu > .elementor-menu-toggle.elementor-active + .elementor-nav-menu--dropdown {
		display: block;
	}

	body.forte-shared-header .elementor-location-header :where(.forte-site-header__inner) {
		flex-wrap: nowrap;
	}

	body.forte-shared-header .elementor-location-header :where(.forte-site-header__brand) {
		flex: 0 0 auto;
	}

	body.forte-shared-header .elementor-location-header :where(.forte-site-header__navigation) {
		flex: 0 0 auto;
		width: var(--forte-header-mobile-control-width);
	}

	body.forte-shared-header .elementor-location-header :where(.forte-site-header__mobile-menu) {
		width: var(--forte-header-mobile-control-width);
	}

	body.forte-shared-header .elementor-location-header .forte-site-header__mobile-menu:not(.elementor-nav-menu--stretch) .elementor-nav-menu--dropdown {
		position: absolute;
		inset-block-start: 100%;
		inset-inline-end: 0;
		inset-inline-start: auto;
		width: min(calc(100vw - 2rem), 22rem);
	}

	/* Elementor's Full Width control owns the viewport width and offset. */
	:where(.forte-site-header__mobile-menu.elementor-nav-menu--stretch .elementor-nav-menu--dropdown) {
		padding: 1rem 0;
	}
}

@media (max-width: 767px) {
	:where(.forte-site-header__brand) {
		--forte-header-logo-compact-width: 7.5rem;
	}

}

@media (prefers-reduced-motion: reduce) {
	body.forte-shared-header .elementor-location-header :where(.forte-site-header),
	body.forte-shared-header .elementor-location-header :where(.forte-site-header)::after,
	body.forte-shared-header .elementor-location-header :where(.forte-site-header__brand),
	body.forte-shared-header .elementor-location-header :where(.forte-site-header__navigation),
	body.forte-shared-header :where(.elementor-location-header .forte-site-header__utility-menu) a.elementor-item,
	body.forte-shared-header :where(.elementor-location-header .forte-site-header__primary-menu .elementor-nav-menu--main) a.elementor-item {
		transition-duration: 0.01ms;
	}
}


/* Forte CookieYes presentation.
 * CookieYes owns markup, consent behavior and content. These scoped rules
 * isolate its controls from Elementor's generic button states. Only color
 * declarations that must beat CookieYes inline settings use !important. */
body :is(.cky-consent-container, .cky-modal, .cky-btn-revisit-wrapper) {
	--forte-consent-brand: var(--forte-color-brand, #063b5a);
	--forte-consent-accent: var(--forte-color-accent, #db222a);
	--forte-consent-accent-hover: var(--forte-accent-hover, #b81d24);
	--forte-consent-surface: var(--forte-color-surface, #ffffff);
	--forte-consent-subtle: var(--forte-color-surface-subtle, #f4f4f4);
}
/* The attribute selector gives this boundary precedence over Kit button
 * defaults in every state, without changing buttons outside CookieYes. */
body :is(.cky-consent-container, .cky-modal, .cky-btn-revisit-wrapper) button[class] {
	background: var(--forte-consent-control-bg, transparent) !important;
	color: var(--forte-consent-control-color, var(--forte-consent-brand)) !important;
	border-color: var(--forte-consent-control-border, transparent) !important;
	border-style: solid;
	border-width: 0;
	border-radius: 0;
	padding: 0;
	min-height: 0;
	font-family: var(--forte-font-body, "Instrument Sans", sans-serif);
	text-transform: none;
	text-shadow: none;
	box-shadow: none;
	transform: none;
	opacity: 1;
	cursor: pointer;
	transition: background-color 180ms ease, color 180ms ease, border-color 180ms ease;
}
body :is(.cky-consent-container, .cky-modal) button.cky-btn {
	--forte-consent-control-bg: var(--forte-consent-surface);
	--forte-consent-control-color: var(--forte-consent-brand);
	--forte-consent-control-border: var(--forte-consent-brand);
	min-height: 3.125rem;
	padding: 0.5625rem 1rem;
	border-width: 2px;
	border-radius: 8px;
	font-size: 1.125rem;
	font-weight: 600;
	line-height: 1.5;
}
body :is(.cky-consent-container, .cky-modal) button.cky-btn-accept {
	--forte-consent-control-bg: var(--forte-consent-accent);
	--forte-consent-control-color: var(--forte-consent-surface);
	--forte-consent-control-border: var(--forte-consent-accent);
}
body :is(.cky-consent-container, .cky-modal) button.cky-btn:not(:disabled):is(:hover, :active) {
	--forte-consent-control-bg: var(--forte-consent-brand);
	--forte-consent-control-color: var(--forte-consent-surface);
	--forte-consent-control-border: var(--forte-consent-brand);
}
body :is(.cky-consent-container, .cky-modal) button.cky-btn-accept:not(:disabled):is(:hover, :active) {
	--forte-consent-control-bg: var(--forte-consent-accent-hover);
	--forte-consent-control-border: var(--forte-consent-accent-hover);
}
/* Icon controls keep an appropriate shape and hit area in every state. */
body .cky-btn-revisit-wrapper {
	background-color: var(--forte-consent-brand) !important;
}
body .cky-btn-revisit-wrapper button.cky-btn-revisit {
	width: 45px;
	height: 45px;
	border-radius: 50%;
}
body .cky-btn-revisit-wrapper:is(:hover, :focus-within) {
	background-color: var(--forte-consent-accent) !important;
}
body .cky-btn-revisit-wrapper::before {
	background-color: var(--forte-consent-brand);
	font-family: var(--forte-font-body, "Instrument Sans", sans-serif);
}
body .cky-revisit-bottom-left::after {
	border-right-color: var(--forte-consent-brand);
}
body .cky-revisit-bottom-right::after {
	border-left-color: var(--forte-consent-brand);
}
body :is(.cky-consent-container, .cky-modal) :is(button.cky-btn-close, button.cky-banner-btn-close) {
	width: 36px;
	height: 36px;
	min-width: 36px;
	border-radius: 8px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
}
body :is(.cky-consent-container, .cky-modal) :is(button.cky-btn-close, button.cky-banner-btn-close):is(:hover, :active) {
	--forte-consent-control-bg: var(--forte-consent-subtle);
}
body :is(.cky-consent-container, .cky-modal) :is(.cky-btn-close, .cky-banner-btn-close) img {
	width: 12px;
	height: 12px;
	filter: brightness(0.45);
}
/* Text controls retain their native layout and never acquire a CTA fill. */
body .cky-modal :is(button.cky-show-desc-btn, button.cky-accordion-btn):is(:hover, :active) {
	--forte-consent-control-color: var(--forte-consent-accent-hover);
	text-decoration: underline;
	text-underline-offset: 0.2em;
}
body :is(.cky-consent-container, .cky-modal) a {
	color: var(--forte-consent-brand) !important;
}
body :is(.cky-consent-container, .cky-modal) a:is(:hover, :focus-visible) {
	color: var(--forte-consent-accent-hover) !important;
}
body :is(.cky-consent-container, .cky-modal, .cky-btn-revisit-wrapper) :is(button[class], a, input):focus-visible {
	outline: 2px solid var(--forte-consent-brand);
	outline-offset: 3px;
}
body :is(.cky-consent-container, .cky-modal) button[class]:disabled {
	opacity: 0.55;
	cursor: not-allowed;
}
/* Desktop card actions are one row; mobile keeps a readable vertical stack. */
@media (min-width: 768px) {
	body .cky-consent-container.cky-box-bottom-left {
		width: min(35rem, calc(100vw - 5rem));
	}
	body .cky-consent-container .cky-notice-btn-wrapper {
		display: flex;
		flex-direction: row;
		flex-wrap: nowrap;
		gap: 0.5rem;
	}
	body .cky-consent-container .cky-notice-btn-wrapper > button.cky-btn {
		flex: 1 1 0;
		width: auto;
		min-width: 0;
		max-width: none;
		margin: 0;
		order: 0;
		white-space: nowrap;
	}
}
@media (max-width: 767px) {
	body :is(.cky-consent-container, .cky-modal) button.cky-btn {
		font-size: 1rem;
		line-height: 1.5;
		white-space: normal;
	}
}
@media (prefers-reduced-motion: reduce) {
	body :is(.cky-consent-container, .cky-modal, .cky-btn-revisit-wrapper) button[class] {
		transition: none;
	}
}
