/**
 * Site chrome: announcement ribbon + header (logo, navigation, megamenus,
 * off-canvas menu, Contact button).
 * Breakpoints: desktop >= 1025px; the menu collapses to the off-canvas panel at <= 1024px;
 * mobile <= 767px; small <= 480px.
 */

/* ===== Announcement ribbon ================================================= */
.csat-ribbon {
	position: relative;
	z-index: 1200;
	background: #022047;
	color: #fff;
	font-family: "Raleway", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	font-size: 13px;
	line-height: 1.3;
}
.csat-ribbon-dismissed .csat-ribbon { display: none; }
.csat-ribbon__inner {
	max-width: 1440px;
	margin: 0 auto;
	padding: 9px 48px 9px 20px;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	text-align: center;
	min-height: 20px;
}
.csat-ribbon__text { margin: 0; }
.csat-ribbon__text a { display: block; color: #fff; text-decoration: none; font-weight: 600; }
.csat-ribbon__text .csat-ribbon__cta { color: #7FD0F5; font-weight: 800; white-space: nowrap; }
.csat-ribbon__text .csat-ribbon__cta::after {
	content: "\2192";
	display: inline-block;
	transition: transform .15s ease;
}
.csat-ribbon__text a:hover .csat-ribbon__cta,
.csat-ribbon__text a:focus-visible .csat-ribbon__cta { text-decoration: underline; }
.csat-ribbon__text a:hover .csat-ribbon__cta::after { transform: translateX(3px); }
.csat-ribbon .wp-block-buttons,
.csat-ribbon .wp-block-button { display: contents; }
.csat-ribbon__close > button {
	position: absolute;
	top: 50%;
	right: 14px;
	transform: translateY(-50%);
	width: 26px;
	height: 26px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: transparent;
	color: rgba(255, 255, 255, .75);
	font-size: 18px;
	line-height: 1;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background .15s ease, color .15s ease;
}
/* Width only, at a specificity that beats core's `.wp-block-buttons .wp-block-button__link { width: 100% }`. */
.csat-ribbon .csat-ribbon__close > .wp-block-button__link { width: 26px; }
.csat-ribbon__close > button:hover,
.csat-ribbon__close > button:focus-visible { background: rgba(255, 255, 255, .14); color: #fff; outline: none; }
@media (max-width: 560px) {
	.csat-ribbon { font-size: 12px; }
	.csat-ribbon__inner { padding: 8px 44px 8px 14px; }
}

/* ===== Header bar ========================================================== */
.csat-header-part {
	position: sticky;
	top: 0;
	z-index: 1001;
	clear: both;
	background: #ffffff;
	border-bottom: 1px solid transparent;
	transition: border-color .25s ease;
	font-variant-numeric: lining-nums;
	font-feature-settings: "lnum" 1;
}
.csat-header-part.is-scrolled { border-bottom-color: #E7E7E7; }

.csat-header {
	display: flex;
	flex-direction: column;
	width: 100%;
	max-width: 100%;
	margin-inline: auto;
	transition: padding .25s ease;
}
.csat-header__inner {
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap;
	gap: 0;
	width: 100%;
	max-width: min(100%, 1440px);
	height: 100%;
	margin: 0 auto;
}
.csat-header-part.is-scrolled .csat-header,
.csat-header-part.is-scrolled .csat-header__inner { padding-top: 4px; padding-bottom: 4px; }

/* Logo */
.csat-header__brand {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-start;
	flex: 0 0 auto;
	min-width: 0;
	width: 13.392%;
}
.csat-header__logo { position: relative; margin: 0; min-width: 0; max-width: 100%; }
.csat-header__logo a { display: inline; }
.csat-header__logo img {
	display: inline;
	vertical-align: baseline;
	width: 80px;
	max-width: 80px;
	height: auto;
	border: none;
	border-radius: 0;
	box-shadow: none;
	transform-origin: left center;
	transition: transform .25s ease;
}
.csat-header-part.is-scrolled .csat-header__logo img { transform: scale(0.7); }

/* Navigation column */
.csat-header__nav {
	position: relative;
	display: flex;
	flex-direction: column;
	flex: 0 1 auto;
	min-width: 0;
	width: 75%;
}

/* Contact button */
.csat-header__cta {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-end;
	flex: 0 0 auto;
	min-width: 0;
	width: 13.392%;
}
.csat-header__cta .wp-block-buttons { display: block; position: relative; min-width: 0; max-width: 100%; }
.csat-header__cta .wp-block-button { display: contents; }
.csat-header__contact > .wp-block-button__link {
	display: inline-block;
	width: 100%;
	padding: 12px 26px;
	border: 0;
	border-radius: 10px;
	background-color: #022047;
	color: #fff;
	fill: #fff;
	font-family: "Raleway", sans-serif;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .3px;
	line-height: 1;
	text-align: center;
	text-decoration: none;
	word-break: normal;
	transition: background-color .18s ease, transform .18s ease, box-shadow .18s ease;
}
.csat-header__contact > .wp-block-button__link:hover,
.csat-header__contact > .wp-block-button__link:focus {
	background-color: #279BD7;
	color: #fff;
	transform: translateY(-1px);
}

/* ===== Menu (shared) ======================================================= */
.csat-offcanvas {
	z-index: 1000;
	background: transparent;
	transition: height .25s ease;
}
.csat-offcanvas .csat-nav { display: block; height: 100%; position: static; }
.csat-nav .wp-block-navigation__container {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-start;
	align-items: stretch;
	gap: 0;
	height: 100%;
	margin: 0;
	padding-left: 0;
	list-style: none;
}
.csat-nav .wp-block-navigation-item {
	display: list-item;
	position: relative;
	margin: 0;
	padding: 0;
	background: transparent;
	list-style: none;
}
.csat-header .csat-nav .wp-block-navigation-item__content {
	position: relative;
	display: flex;
	align-items: center;
	height: 100%;
	font-family: "Raleway", sans-serif;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 1.5px;
	text-transform: none;
	text-decoration: none;
	transition: all .4s ease;
}
.csat-nav .wp-block-navigation-item__label { overflow-wrap: normal; word-break: normal; }
/* Submenu indicator (former icon-font chevron, same glyph). */
.csat-nav .csat-has-mega > .wp-block-navigation-item__content::before {
	content: "";
	order: 2;
	display: block;
	flex: none;
	margin-right: 6px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath fill='%23101010' d='M1011 272Q997 257 976.5 256.5Q956 256 942 270L512 677L82 270Q68 256 47.5 256.5Q27 257 13 272Q-1 287 0 307Q1 327 15 341L478 780Q485 786 494 789.5Q503 793 512 793Q521 793 529.5 789.5Q538 786 546 780L1009 341Q1023 327 1024 307Q1025 287 1011 272Z'/%3E%3C/svg%3E") no-repeat;
	background-origin: content-box;
	transition: transform .2s ease;
}

/* ===== Megamenu panels ===================================================== */
.csat-megamenu {
	position: absolute;
	top: 100%;
	left: 0;
	right: 0;
	z-index: 1000;
	opacity: 0;
	visibility: hidden;
	transform: translateY(10px);
	transition: opacity .2s ease, transform .2s ease, visibility .2s;
	pointer-events: none;
	text-align: left;
}
.csat-megamenu::before { content: ""; position: absolute; left: 0; right: 0; top: -18px; height: 18px; }
.csat-has-mega:hover > .csat-megamenu,
.csat-has-mega:focus-within > .csat-megamenu,
.csat-has-mega.csat-mega-open > .csat-megamenu {
	opacity: 1;
	visibility: visible;
	transform: none;
	pointer-events: auto;
}
.csat-megamenu p { margin: 0; }
.csat-megamenu__inner { background: #ffffff; border-top: 1px solid #E7E7E7; border-bottom: 1px solid #E7E7E7; }

/* Services: four linked cards (the whole card is the title link's hit area). */
.csat-megamenu--services .csat-megamenu__cards {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 0;
	max-width: 1440px;
	margin: 0 auto;
	padding: 34px 40px;
}
.csat-megamenu__svc {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding: 2px 34px;
	border-left: 1px solid #EEF1F5;
}
.csat-megamenu__svc:first-child { padding-left: 0; border-left: 0; }
.csat-megamenu__svc:last-child { padding-right: 0; }
.csat-megamenu__svctitle { font-family: "Raleway", sans-serif; font-size: 17px; font-weight: 800; line-height: 1.2; color: #022047; transition: color .15s ease; }
.csat-megamenu__svctitle a { color: inherit; text-decoration: none; outline: 0; }
.csat-megamenu__svctitle a::after,
.csat-megamenu__cardtitle a::after { content: ""; position: absolute; inset: 0; }
.csat-megamenu__svctext { font-family: "Raleway", sans-serif; font-size: 13px; line-height: 1.5; color: #5b6b7b; flex: 1; }
.csat-megamenu__svclink { font-family: "Raleway", sans-serif; font-size: 11px; font-weight: 800; letter-spacing: 1.2px; text-transform: uppercase; color: #279BD7; }
.csat-megamenu__svclink::after { content: "\a0\2192"; display: inline-block; transition: transform .15s ease; }
.csat-megamenu__svc:hover .csat-megamenu__svctitle,
.csat-megamenu__svc:focus-within .csat-megamenu__svctitle { color: #279BD7; }
.csat-megamenu__svc:hover .csat-megamenu__svclink::after,
.csat-megamenu__svc:focus-within .csat-megamenu__svclink::after { transform: translateX(4px); }

/* Industries: three link columns + a featured card. */
.csat-megamenu__grid {
	display: grid;
	grid-template-columns: 1.8fr 1fr 1fr 1.3fr;
	gap: 0;
	max-width: 1440px;
	margin: 0 auto;
	padding: 34px 40px;
}
.csat-megamenu--industries .csat-megamenu__grid { grid-template-columns: 1fr 1fr 1fr 1.3fr; }
.csat-megamenu__col { padding: 0 34px; border-left: 1px solid #EEF1F5; }
.csat-megamenu__col:first-child { padding-left: 0; border-left: 0; }
.csat-megamenu__col:last-child { padding-right: 0; }
.csat-megamenu__links { list-style: none; margin: 0; padding: 0; }
.csat-megamenu__links li { margin: 0; break-inside: avoid; border-bottom: 1px solid #EEF1F5; }
.csat-megamenu__links li:last-child { border-bottom: 0; }
.csat-megamenu__links a,
.csat-megamenu__links a:link,
.csat-megamenu__links a:visited {
	display: block;
	font-family: "Raleway", sans-serif;
	font-size: 14px;
	font-weight: 400 !important;
	line-height: 1.35;
	color: #404040 !important;
	text-decoration: none;
	padding: 8px 8px;
	border-radius: 8px;
	transition: color .15s ease, background-color .15s ease;
}
.csat-megamenu__links a:hover,
.csat-megamenu__links a:focus { color: #279BD7 !important; background: #F3F6F9; }
.csat-megamenu__feature { display: flex; }
.csat-megamenu__card {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 8px;
	width: 100%;
	padding: 22px;
	border-radius: 12px;
	background: linear-gradient(135deg, #022047 0%, #092357 100%);
	color: #fff;
	transition: transform .2s ease, box-shadow .2s ease;
}
.csat-megamenu__card:hover { transform: translateY(-3px); }
.csat-megamenu__cardtitle { font-size: 17px; font-weight: 800; line-height: 1.2; }
.csat-megamenu__cardtitle a { color: inherit; text-decoration: none; }
.csat-megamenu__cardtext { font-size: 13px; line-height: 1.5; color: rgba(255, 255, 255, 0.82); }
.csat-megamenu__cardlink { margin-top: auto; font-size: 12px; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; color: #7fd0f5; }

/* Off-canvas menu controls (hidden on desktop). */
.csat-menu-toggle-wrap,
.csat-offcanvas__identity,
.csat-offcanvas-overlay { display: none; }
.csat-menu-toggle-wrap .wp-block-button,
.csat-menu-close-wrap,
.csat-menu-close-wrap .wp-block-button { display: contents; }

/* ===== Desktop (>= 1025px) ================================================= */
@media (min-width: 1025px) {
	.csat-header { position: relative; }
	.csat-header__nav,
	.csat-offcanvas,
	.csat-nav .wp-block-navigation-item.csat-has-mega { position: static; }
	.csat-offcanvas { display: block; height: 80px; }
	.csat-header-part.is-scrolled .csat-offcanvas { height: 58px; }

	.csat-header .csat-nav .wp-block-navigation-item__content {
		display: inline-flex;
		align-items: center;
		padding: 0 20px;
		font-size: 14px;
		font-weight: 700;
		letter-spacing: 0.2px;
		color: #022047;
		transition: color .18s ease;
	}
	/* Animated underline, inset to the label. */
	.csat-nav .wp-block-navigation-item__content::after {
		content: "";
		position: absolute;
		left: 20px;
		right: 20px;
		top: calc(50% + 12px);
		height: 2px;
		border-radius: 2px;
		background: #279BD7;
		transform: scaleX(0);
		transform-origin: left center;
		transition: transform .22s ease;
	}
	.csat-nav .wp-block-navigation-item > .wp-block-navigation-item__content:hover,
	.csat-nav .wp-block-navigation-item > .wp-block-navigation-item__content:focus,
	.csat-nav .wp-block-navigation-item:hover > .wp-block-navigation-item__content,
	.csat-nav .wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content,
	.csat-nav .wp-block-navigation-item.current-menu-ancestor > .wp-block-navigation-item__content { color: #279BD7; }
	.csat-nav .wp-block-navigation-item:hover > .wp-block-navigation-item__content::after,
	.csat-nav .wp-block-navigation-item:focus-within > .wp-block-navigation-item__content::after,
	.csat-nav .wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content::after,
	.csat-nav .wp-block-navigation-item.current-menu-ancestor > .wp-block-navigation-item__content::after { transform: scaleX(1); }

	.csat-nav .csat-has-mega > .wp-block-navigation-item__content::before {
		width: 9.2px;
		height: 13.5px;
		margin-left: 5px;
		opacity: .85;
		background-size: 9px 9px;
		background-position: 0 1.25px;
	}
	.csat-has-mega:hover > .wp-block-navigation-item__content::before,
	.csat-has-mega:focus-within > .wp-block-navigation-item__content::before { transform: rotate(180deg); }

	/* Page scrim while a megamenu is open (below the header, above content). */
	body::after {
		content: "";
		position: fixed;
		inset: 0;
		z-index: 999;
		background: rgba(2, 32, 71, 0.5);
		opacity: 0;
		visibility: hidden;
		pointer-events: none;
		transition: opacity .2s ease, visibility .2s;
	}
	body:has(.csat-has-mega:hover)::after,
	body:has(.csat-has-mega:focus-within)::after,
	body:has(.csat-has-mega.csat-mega-open)::after { opacity: 1; visibility: visible; }
}

/* ===== Collapsed menu (<= 1024px) ========================================== */
@media (max-width: 1024px) {
	.csat-header__inner { align-items: center; max-width: min(100%, 1024px); }
	.csat-header__brand { width: auto; flex: 0 0 auto; order: 1; }
	.csat-header__cta { width: auto; flex: 0 0 auto; order: 2; margin-left: auto; align-items: center; }
	.csat-header__nav { width: auto; flex: 0 0 auto; order: 3; margin-left: 14px; justify-content: center; }

	/* Hamburger. Background colour and text colour are left to the base button
	   rules so focus styling is unchanged. */
	.csat-menu-toggle-wrap { display: block; }
	.csat-menu-toggle > button { color: #000; }
	.csat-header .csat-menu-toggle > .wp-block-button__link {
		position: relative;
		z-index: 10;
		display: block;
		width: 45px;
		height: 29px;
		padding: 8px;
		border: 1px solid rgba(0, 0, 0, .2);
		border-radius: 3px;
		font-size: 0;
		line-height: 0;
		cursor: pointer;
		background-image:
			linear-gradient(rgba(0, 0, 0, .5), rgba(0, 0, 0, .5)),
			linear-gradient(rgba(0, 0, 0, .5), rgba(0, 0, 0, .5)),
			linear-gradient(rgba(0, 0, 0, .5), rgba(0, 0, 0, .5));
		background-repeat: no-repeat;
		background-size: 27px 1px;
		background-position: 8px 8px, 8px 13px, 8px 18px;
		background-origin: padding-box;
		transition: all .4s ease-in;
	}

	/* Off-canvas panel. */
	.csat-offcanvas {
		position: fixed;
		top: 0;
		left: -100vw;
		z-index: 1000;
		display: flex;
		flex-direction: column-reverse;
		justify-content: flex-end;
		width: 100%;
		max-width: 350px;
		height: 100% !important;
		padding: 0 0 10px;
		overflow-x: hidden;
		overflow-y: auto;
		background-color: #f7f7f7;
		box-shadow: 0 10px 30px 0 rgba(255, 165, 0, 0);
		transition: left .6s cubic-bezier(.6, .1, .68, .53);
	}
	.csat-offcanvas.is-open { left: 0; }
	.csat-offcanvas .csat-nav { overflow-y: auto; flex: 0 1 auto; }
	.csat-nav .wp-block-navigation__container { display: block; height: auto; }
	.csat-header .csat-nav .wp-block-navigation-item__content {
		padding: 10px 15px;
		color: #000;
	}
	.csat-nav .csat-has-mega > .wp-block-navigation-item__content::before {
		width: 15.5px;
		height: 20px;
		border: 1px solid #101010;
		border-radius: 30px;
		background-size: 12px 12px;
		background-position: 0 3px;
	}

	.csat-offcanvas__identity { display: block; position: relative; z-index: 5; width: 100%; padding: 10px 0; }
	.csat-menu-close > button { color: rgba(51, 51, 51, 1); }
	.csat-header .csat-menu-close > .wp-block-button__link {
		position: relative;
		z-index: 10;
		display: block;
		float: right;
		width: 45px;
		height: auto;
		margin: 12px;
		padding: 8px;
		border: 1px solid rgba(0, 0, 0, .5);
		border-radius: 3px;
		font-size: 1rem;
		line-height: 1.5;
		text-align: center;
		cursor: pointer;
		transition: all .4s ease-in;
	}

	.csat-offcanvas-overlay {
		display: block;
		position: fixed;
		z-index: 14;
		top: 0;
		left: -100%;
		width: 100%;
		height: 100% !important;
		padding-bottom: 10px;
		background-color: rgba(51, 51, 51, .5);
		opacity: 1;
		visibility: visible;
		transition: all .6s cubic-bezier(.6, .1, .68, .53) .4s;
	}
	.csat-offcanvas-overlay.is-open { left: 0; transition: all .6s cubic-bezier(.22, .61, .24, 1) 0s; }

	/* Megamenus render inline and stacked inside the panel. */
	.csat-megamenu { position: static; width: auto; max-width: none; padding-top: 0; opacity: 1; visibility: visible; transform: none; pointer-events: auto; }
	.csat-megamenu__inner { background: transparent; border: 0; box-shadow: none; }
	.csat-megamenu--services .csat-megamenu__cards { grid-template-columns: 1fr; padding: 6px 0 10px 14px; }
	.csat-megamenu__svc { border-left: 0; padding: 14px 0; border-bottom: 1px solid rgba(2, 32, 71, 0.08); }
	.csat-megamenu__svc:first-child { padding-top: 4px; }
	.csat-megamenu__svc:last-child { border-bottom: 0; }
	.csat-megamenu__grid { grid-template-columns: 1fr; gap: 18px; max-width: none; margin: 0; padding: 6px 0 10px 14px; }
	.csat-megamenu__col { padding: 0; border-left: 0; }
	.csat-megamenu__card { background: rgba(2, 32, 71, 0.04); color: #022047; }
	.csat-megamenu__card .csat-megamenu__cardtext { color: #555; }
	.csat-megamenu__card .csat-megamenu__cardlink { color: #279BD7; }
}

/* ===== Mobile (<= 767px) =================================================== */
@media (max-width: 767px) {
	.csat-header { padding-left: 10px; padding-right: 10px; }
	.csat-header__inner { justify-content: center; max-width: min(100%, 767px); padding-top: 10px; padding-bottom: 10px; }
	.csat-header__brand { flex-direction: row; flex-wrap: wrap; justify-content: center; align-items: center; }
	.csat-header__nav { flex-wrap: wrap; }
	.csat-header__nav > * { align-self: center; }
}
@media (max-width: 480px) {
	.csat-header__nav { margin-left: 10px; }
	.csat-header__contact > .wp-block-button__link { padding: 10px 16px; font-size: 12px; }
}
