/* ==========================================================================
   Cor-Tech Engineering — design system
   Fonts: Archivo (display), IBM Plex Sans (body), IBM Plex Mono (labels).
   All self-hosted under SIL Open Font License.
   ========================================================================== */

@font-face {
	font-family: "Archivo";
	src: url("../fonts/archivo-var.woff2") format("woff2-variations"), url("../fonts/archivo-var.woff2") format("woff2");
	font-weight: 100 900;
	font-stretch: 62% 125%;
	font-style: normal;
	font-display: swap;
}
@font-face { font-family: "IBM Plex Sans"; src: url("../fonts/ibm-plex-sans-latin-400-normal.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "IBM Plex Sans"; src: url("../fonts/ibm-plex-sans-latin-500-normal.woff2") format("woff2"); font-weight: 500; font-display: swap; }
@font-face { font-family: "IBM Plex Sans"; src: url("../fonts/ibm-plex-sans-latin-600-normal.woff2") format("woff2"); font-weight: 600; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("../fonts/ibm-plex-mono-latin-400-normal.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("../fonts/ibm-plex-mono-latin-500-normal.woff2") format("woff2"); font-weight: 500; font-display: swap; }

:root {
	--ct-black: #0D0D0E;
	--ct-ink: #151618;
	--ct-line: #26282B;
	--ct-line-strong: #34373B;
	--ct-paper: #F4F4F2;
	--ct-white: #FFFFFF;
	--ct-steel: #A9AEB4;
	--ct-steel-light: #C9CCD0;
	--ct-steel-dark: #8A8E94;
	--ct-text-dark: #3A3D42;
	--ct-muted-dark: #50545A;
	--ct-label-dark: #5C6066;
	--ct-rule-light: #D4D5D7;
	--ct-accent: #A9AEB4;

	--ct-font-display: "Archivo", "Arial Narrow", Arial, sans-serif;
	--ct-font-body: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
	--ct-font-mono: "IBM Plex Mono", ui-monospace, Menlo, Consolas, monospace;

	--ct-gutter: clamp(20px, 5vw, 72px);
	--ct-section-y: clamp(72px, 9vw, 140px);
	--ct-wrap: 1296px;
	--ct-header-h: 97px;
}

/* ---------- Base ---------- */
html { scroll-behavior: smooth; }
body {
	margin: 0;
	background: var(--ct-black);
	color: var(--ct-paper);
	font-family: var(--ct-font-body);
	font-size: 17px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
body.ct-nav-open { overflow: hidden; }
a { color: inherit; }
img { max-width: 100%; height: auto; }
.ct-main { display: block; }
.screen-reader-text:focus { z-index: 100000; }

.ct-mono { font-family: var(--ct-font-mono); }

/* ---------- Buttons (theme + Elementor button widget) ---------- */
.ct-btn,
.elementor .ct-button .elementor-button {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	min-height: 52px;
	padding: 0 28px;
	border: 1px solid transparent;
	border-radius: 0;
	font-family: var(--ct-font-body);
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0.1em;
	line-height: 1;
	text-transform: uppercase;
	text-decoration: none;
	transition: background-color .2s ease, color .2s ease, border-color .2s ease;
	box-shadow: none;
}
.ct-btn--light,
.elementor .ct-button--light .elementor-button { background: var(--ct-paper); color: var(--ct-black); }
.ct-btn--light:hover,
.elementor .ct-button--light .elementor-button:hover { background: var(--ct-white); color: var(--ct-black); }

.elementor .ct-button--ghost .elementor-button { background: transparent; color: var(--ct-paper); border-color: rgba(244, 244, 242, .5); }
.elementor .ct-button--ghost .elementor-button:hover { border-color: var(--ct-paper); background: rgba(244, 244, 242, .06); color: var(--ct-white); }

/* Underlined text link with arrow (light or dark backgrounds) */
.elementor .ct-button--link .elementor-button {
	min-height: 44px;
	padding: 0 0 2px;
	background: transparent;
	color: currentColor;
	border: 0;
	border-bottom: 2px solid currentColor;
}
.elementor .ct-button--link-dark .elementor-button { color: var(--ct-black); }
.elementor .ct-button--link-dark .elementor-button:hover { color: #000; }

/* Arrow after button text */
.elementor .ct-button--arrow .elementor-button-text::after {
	content: "";
	display: inline-block;
	width: 16px;
	height: 16px;
	margin-left: 12px;
	vertical-align: -3px;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.6'%3E%3Cpath d='M2 8h11M9 4l4 4-4 4'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.6'%3E%3Cpath d='M2 8h11M9 4l4 4-4 4'/%3E%3C/svg%3E") center / contain no-repeat;
	transition: transform .2s ease;
}
.elementor .ct-button--arrow .elementor-button:hover .elementor-button-text::after { transform: translateX(3px); }

/* ---------- Header ---------- */
.ct-header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 50;
	background: var(--ct-black);
	border-bottom: 1px solid rgba(244, 244, 242, .14);
	transition: background-color .35s ease, border-color .35s ease, backdrop-filter .35s ease;
}
body:not(.ct-header-overlay) .ct-main { padding-top: var(--ct-header-h); }
.ct-header-overlay .ct-header { background: transparent; }
.ct-header.is-scrolled {
	background: rgba(13, 13, 14, .92);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	border-bottom-color: var(--ct-line);
}
.admin-bar .ct-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .ct-header { top: 46px; } }
@media (max-width: 600px) { .admin-bar .ct-header.is-scrolled { top: 0; } }

.ct-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	padding: 28px var(--ct-gutter);
	transition: padding .35s ease;
}
.ct-header.is-scrolled .ct-header__inner { padding-top: 16px; padding-bottom: 16px; }
.ct-header__logo img { transition: height .35s ease; }
.ct-header.is-scrolled .ct-header__logo img { height: 28px; }
.ct-header__logo { display: block; flex: none; line-height: 0; }
.ct-header__logo img { display: block; height: 34px; width: auto; max-width: 62vw; }

.ct-nav .ct-menu {
	display: flex;
	gap: 40px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.ct-nav .ct-menu a {
	display: inline-block;
	padding: 4px 0;
	position: relative;
	color: var(--ct-steel-light);
	font-size: 14px;
	font-weight: 500;
	letter-spacing: .08em;
	text-transform: uppercase;
	text-decoration: none;
	transition: color .2s ease, border-color .2s ease;
}
.ct-nav .ct-menu a:hover { color: var(--ct-white); }
.ct-nav .ct-menu a::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 1px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: right;
	transition: transform .35s cubic-bezier(.2, .7, .2, 1);
}
.ct-nav .ct-menu a:hover::after { transform: scaleX(1); transform-origin: left; }
.ct-nav .ct-menu .current-menu-item > a,
.ct-nav .ct-menu .current_page_item > a { color: var(--ct-white); }
.ct-nav .ct-menu .current-menu-item > a::after,
.ct-nav .ct-menu .current_page_item > a::after { transform: scaleX(1); }
.ct-header__cta { min-height: 44px; padding: 0 22px; font-size: 13px; }
.ct-nav__cta-mobile { display: none; }

.ct-burger {
	display: none;
	position: relative;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 1px solid rgba(244, 244, 242, .3);
	border-radius: 0;
	background: transparent;
	cursor: pointer;
}
.ct-burger span {
	position: absolute;
	left: 11px;
	width: 20px;
	height: 2px;
	background: var(--ct-paper);
	transition: transform .25s ease, opacity .2s ease;
}
.ct-burger span:nth-child(1) { top: 14px; }
.ct-burger span:nth-child(2) { top: 20px; }
.ct-burger span:nth-child(3) { top: 26px; }
.ct-header.is-open .ct-burger span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.ct-header.is-open .ct-burger span:nth-child(2) { opacity: 0; }
.ct-header.is-open .ct-burger span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
.ct-burger:hover, .ct-burger:focus { background: transparent; }

@media (max-width: 1024px) {
	.ct-burger { display: block; }
	.ct-header__cta { display: none; }
	.ct-nav {
		position: fixed;
		inset: 0;
		z-index: -1;
		display: flex;
		flex-direction: column;
		justify-content: center;
		gap: 40px;
		padding: 120px var(--ct-gutter) 48px;
		background: var(--ct-black);
		opacity: 0;
		visibility: hidden;
		transition: opacity .25s ease, visibility .25s ease;
	}
	.ct-header.is-open .ct-nav { opacity: 1; visibility: visible; }
	.ct-nav .ct-menu { flex-direction: column; gap: 8px; }
	.ct-nav .ct-menu a {
		font-family: var(--ct-font-display);
		font-stretch: 118%;
		font-weight: 800;
		font-size: 32px;
		letter-spacing: 0;
		color: var(--ct-paper);
	}
	.ct-nav__cta-mobile { display: inline-flex; align-self: flex-start; }
}

/* ---------- Footer ---------- */
.ct-footer {
	border-top: 1px solid var(--ct-line);
	background: var(--ct-black);
	color: var(--ct-steel);
	padding: 72px var(--ct-gutter) 40px;
}
.ct-footer__inner {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 48px;
	max-width: var(--ct-wrap);
	margin: 0 auto;
}
.ct-footer__brand { flex: 1 1 360px; max-width: 440px; }
.ct-footer__brand img { display: block; height: 30px; width: auto; }
.ct-footer__brand p { margin: 24px 0 0; font-size: 14px; line-height: 1.7; }
.ct-footer__cols { display: flex; flex-wrap: wrap; gap: 64px; }
.ct-footer__col { display: flex; flex-direction: column; gap: 12px; font-size: 15px; }
.ct-footer__col a, .ct-footer__col span { color: var(--ct-steel-light); text-decoration: none; }
.ct-footer__col a:hover { color: var(--ct-white); }
.ct-footer__col address { display: flex; flex-direction: column; gap: 12px; font-style: normal; }
.ct-footer__label {
	margin: 0 0 6px;
	font-family: var(--ct-font-mono);
	font-size: 11px;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--ct-steel-dark);
}
.ct-footer__menu { display: flex; flex-direction: column; gap: 12px; margin: 0; padding: 0; list-style: none; }
.ct-footer__bar {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 16px;
	max-width: var(--ct-wrap);
	margin: 64px auto 0;
	padding-top: 24px;
	border-top: 1px solid var(--ct-line);
	font-size: 13px;
	color: var(--ct-steel-dark);
}

/* ==========================================================================
   Elementor content — typography helpers (add these CSS classes in
   Advanced › CSS Classes on any widget)
   ========================================================================== */
.elementor .ct-eyebrow .elementor-heading-title,
.elementor .ct-eyebrow p {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 0;
	font-family: var(--ct-font-mono);
	font-size: 13px;
	font-weight: 400;
	line-height: 1.4;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--ct-accent);
}
.elementor .ct-eyebrow--dark .elementor-heading-title { color: var(--ct-label-dark); }
.elementor .ct-eyebrow--rule .elementor-heading-title::before {
	content: "";
	flex: none;
	width: 40px;
	height: 1px;
	background: currentColor;
}

.elementor .ct-display .elementor-heading-title,
.elementor .ct-h1 .elementor-heading-title,
.elementor .ct-h2 .elementor-heading-title,
.elementor .ct-h3 .elementor-heading-title {
	margin: 0;
	font-family: var(--ct-font-display);
	font-stretch: 118%;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: -.01em;
	color: var(--ct-paper);
}
.elementor .ct-h1 .elementor-heading-title { font-size: clamp(34px, 6.2vw, 90px); line-height: .92; }
.elementor .ct-h2 .elementor-heading-title { font-size: clamp(30px, 3.5vw, 48px); line-height: .98; }
.elementor .ct-h3 .elementor-heading-title { font-size: 23px; line-height: 1.1; }
.elementor .ct-h2--xl .elementor-heading-title { font-size: clamp(36px, 5.2vw, 76px); line-height: .95; }
.elementor .ct-on-light .elementor-heading-title { color: var(--ct-black); }

.elementor .ct-text { font-size: 17px; line-height: 1.65; color: var(--ct-steel); }
.elementor .ct-text p { margin: 0 0 1em; }
.elementor .ct-text p:last-child { margin-bottom: 0; }
.elementor .ct-text--lead { font-size: 19px; line-height: 1.6; color: var(--ct-steel-light); }
.elementor .ct-text--dark { font-size: 18px; line-height: 1.7; color: var(--ct-text-dark); }

/* ==========================================================================
   Sections
   ========================================================================== */
.elementor .ct-section { padding-left: var(--ct-gutter); padding-right: var(--ct-gutter); }
.elementor .ct-wrap { max-width: var(--ct-wrap); margin-left: auto; margin-right: auto; }


/* ---------- Layout helpers (grids/columns on Elementor containers) ---------- */
.elementor .e-con.ct-grid { display: grid !important; gap: 0; }
.elementor .e-con.ct-grid > .e-con { width: auto !important; max-width: none; }
.elementor .ct-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.elementor .ct-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.elementor .ct-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.elementor .ct-principles { gap: 28px 32px !important; }
.elementor .ct-services__grid { gap: 2px !important; }
.elementor .ct-showcase__grid { gap: 24px !important; }
.elementor .ct-split > .ct-col,
.elementor .ct-quality > .ct-col { width: auto !important; flex: 1 1 0 !important; min-width: 0; }
.elementor .ct-services__head > .ct-col,
.elementor .ct-showcase__head > .ct-col { width: auto !important; flex: 1 1 480px; max-width: 720px; }
.elementor .ct-services__head > .elementor-widget { flex: 0 1 420px; }
@media (max-width: 1024px) {
	.elementor .ct-grid--3, .elementor .ct-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.elementor .ct-split > .ct-col,
	.elementor .ct-quality > .ct-col { flex: 1 1 auto !important; width: 100% !important; }
}
@media (max-width: 767px) {
	.elementor .ct-grid--3, .elementor .ct-grid--4 { grid-template-columns: minmax(0, 1fr); }
	.elementor .ct-stats .ct-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 480px) {
	.elementor .ct-grid--2, .elementor .ct-stats .ct-grid--4 { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- Hero ---------- */
.elementor .ct-hero { min-height: 860px; }
.elementor .ct-hero__content { max-width: 1040px; }
.elementor .ct-hero .ct-text--lead { max-width: 560px; }
.elementor .ct-hero__creds {
	border-top: 1px solid rgba(244, 244, 242, .14);
	background: rgba(13, 13, 14, .6);
}
.elementor .ct-cred { padding: 26px 32px; border-right: 1px solid rgba(244, 244, 242, .14); }
.elementor .ct-cred:first-child { padding-left: var(--ct-gutter); }
.elementor .ct-cred:last-child { border-right: 0; }
.elementor .ct-cred__label .elementor-heading-title {
	margin: 0;
	font-family: var(--ct-font-mono);
	font-size: 11px;
	font-weight: 400;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--ct-steel);
}
.elementor .ct-cred__value .elementor-heading-title {
	margin: 8px 0 0;
	font-family: var(--ct-font-body);
	font-size: 16px;
	font-weight: 600;
	line-height: 1.4;
	color: var(--ct-paper);
}
@media (max-width: 1024px) {
	.elementor .ct-cred { border-bottom: 1px solid rgba(244, 244, 242, .14); }
	.elementor .ct-cred:first-child { padding-left: 32px; }
}
@media (max-width: 767px) {
	.elementor .ct-cred, .elementor .ct-cred:first-child { padding: 20px var(--ct-gutter); border-right: 0; }
}

/* ---------- About ---------- */
.elementor .ct-about { background: var(--ct-paper); color: var(--ct-black); }
.elementor .ct-about__media { position: relative; }
.elementor .ct-about__media .elementor-widget-image img {
	display: block;
	width: 100%;
	height: 620px;
	object-fit: cover;
	object-position: center 70%;
}
.elementor .ct-about__badge {
	position: absolute !important;
	left: 0;
	bottom: 0;
	width: auto !important;
	background: var(--ct-black);
	padding: 28px 32px !important;
}
.elementor .ct-about__badge .ct-display .elementor-heading-title { font-size: 44px; line-height: 1; }
.elementor .ct-about__badge .ct-badge-note p {
	margin: 10px 0 0;
	font-family: var(--ct-font-mono);
	font-size: 12px;
	letter-spacing: .14em;
	line-height: 1.6;
	text-transform: uppercase;
	color: var(--ct-steel);
}
.elementor .ct-principles { border-top: 1px solid var(--ct-rule-light); padding-top: 32px !important; }
.elementor .ct-principle__title .elementor-heading-title {
	margin: 0;
	font-family: var(--ct-font-body);
	font-size: 16px;
	font-weight: 600;
	color: var(--ct-black);
}
.elementor .ct-principle__text { margin-top: 6px; font-size: 15px; line-height: 1.55; color: var(--ct-muted-dark); }
.elementor .ct-principle__text p { margin: 0; }
@media (max-width: 767px) {
	.elementor .ct-about__media .elementor-widget-image img { height: 440px; }
}

/* ---------- Stats band ---------- */
.elementor .ct-stats { background: var(--ct-black); }
.elementor .ct-stat { padding: 56px 32px; border-right: 1px solid var(--ct-line); }
.elementor .ct-stat:first-child { padding-left: 0; }
.elementor .ct-stat:last-child { border-right: 0; }
.elementor .ct-stat .ct-display .elementor-heading-title { font-size: clamp(40px, 3.9vw, 56px); line-height: 1; white-space: nowrap; }
.elementor .ct-stat__label { margin-top: 12px; font-size: 15px; color: var(--ct-steel); }
.elementor .ct-stat__label p { margin: 0; }
@media (max-width: 1024px) {
	.elementor .ct-stat { padding: 40px 24px; border-bottom: 1px solid var(--ct-line); }
	.elementor .ct-stat:nth-child(2n) { border-right: 0; }
	.elementor .ct-stat:first-child { padding-left: 24px; }
}
@media (max-width: 767px) {
	.elementor .ct-stat { padding: 32px 0; border-right: 0; }
	.elementor .ct-stat:first-child { padding-left: 0; }
}

/* ---------- Services ---------- */
.elementor .ct-services { background: var(--ct-ink); }
.elementor .ct-services__intro { max-width: 420px; }
.elementor .ct-services__grid { background: var(--ct-line); border: 2px solid var(--ct-line); }
.elementor .ct-card { background: var(--ct-ink); color: var(--ct-paper); text-decoration: none; }
.elementor .ct-card__img { overflow: hidden; height: 260px; }
.elementor .ct-card__img .elementor-widget-container,
.elementor .ct-card__img img { height: 100%; }
.elementor .ct-card__img img {
	display: block;
	width: 100%;
	object-fit: cover;
	transition: transform .6s ease;
}
.elementor .ct-card:hover .ct-card__img img { transform: scale(1.04); }
.elementor .ct-card__img--contain { background: var(--ct-paper); }
.elementor .ct-card__img--contain img { object-fit: contain; }
.elementor .ct-card__body { position: relative; flex-grow: 1; }
.elementor .ct-card__badge {
	position: absolute !important;
	top: -32px;
	left: 32px;
	width: 64px !important;
	height: 64px;
	display: flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	background: var(--ct-black);
	border: 1px solid var(--ct-line-strong);
}
.elementor .ct-card__badge img { display: block; width: 38px; height: 38px; }
.elementor .ct-card__num p,
.elementor .ct-card__spec p {
	margin: 0;
	font-family: var(--ct-font-mono);
	font-size: 12px;
	line-height: 1.5;
}
.elementor .ct-card__num p { letter-spacing: .14em; color: var(--ct-steel-dark); }
.elementor .ct-card__text { font-size: 15px; line-height: 1.6; color: var(--ct-steel); }
.elementor .ct-card__text p { margin: 0; }
.elementor .ct-card__spec { margin-top: auto !important; padding-top: 16px; border-top: 1px solid var(--ct-line); }
.elementor .ct-card__spec p { color: var(--ct-steel-light); }

/* ---------- Quality ---------- */
.elementor .ct-quality { background: var(--ct-paper); color: var(--ct-black); }
.elementor .ct-quality__media { background: var(--ct-white); min-height: 560px; }
.elementor .ct-quality__media .elementor-widget-image img {
	display: block;
	width: 100%;
	height: 100%;
	max-height: 640px;
	object-fit: contain;
}
.elementor .ct-quality__icon img { display: block; width: 56px; height: 56px; }
.elementor .ct-specs ul { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--ct-rule-light); }
.elementor .ct-specs li {
	display: flex;
	justify-content: space-between;
	gap: 24px;
	padding: 18px 0;
	border-bottom: 1px solid var(--ct-rule-light);
	font-weight: 600;
	color: var(--ct-black);
}
.elementor .ct-specs li span:last-child { font-family: var(--ct-font-mono); font-size: 14px; font-weight: 400; color: var(--ct-muted-dark); text-align: right; }
@media (max-width: 767px) { .elementor .ct-quality__media { min-height: 380px; } }

/* ---------- Industries ---------- */
.elementor .ct-industries { background: var(--ct-black); }
.elementor .ct-industries__img img {
	display: block;
	width: 100%;
	height: 380px;
	object-fit: cover;
	object-position: center 60%;
}
.elementor .ct-industry-list ul { margin: 0; padding: 0; list-style: none; border-bottom: 1px solid var(--ct-line); }
.elementor .ct-industry-list li { padding: 30px 0; border-top: 1px solid var(--ct-line); }
.elementor .ct-industry-list .ct-industry__row { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; }
.elementor .ct-industry-list strong {
	font-family: var(--ct-font-display);
	font-stretch: 118%;
	font-weight: 800;
	font-size: 26px;
	line-height: 1.1;
	text-transform: uppercase;
	color: var(--ct-paper);
}
.elementor .ct-industry-list em,
.elementor .ct-industry-list small {
	font-family: var(--ct-font-mono);
	font-style: normal;
	color: var(--ct-steel-dark);
	font-size: 12px;
}
.elementor .ct-industry-list small { display: block; margin-top: 14px; font-size: 13px; letter-spacing: .08em; color: var(--ct-steel); }

/* ---------- Showcase ---------- */
.elementor .ct-showcase { background: var(--ct-paper); color: var(--ct-black); }
.elementor .ct-fig__img { overflow: hidden; background: #E2E3E5; height: 240px; }
.elementor .ct-fig--tall .ct-fig__img { height: auto; min-height: 360px; flex-grow: 1; }
.elementor .ct-fig__img .elementor-widget-container,
.elementor .ct-fig__img img { height: 100%; }
.elementor .ct-fig__img img { display: block; width: 100%; object-fit: cover; transition: transform .6s ease; }
.elementor .ct-fig:hover .ct-fig__img img { transform: scale(1.04); }
.elementor .ct-fig__caption p { display: flex; justify-content: space-between; gap: 16px; margin: 0; padding-top: 16px; color: var(--ct-black); }
.elementor .ct-fig__caption strong { font-weight: 600; }
.elementor .ct-fig__caption span { font-family: var(--ct-font-mono); font-size: 13px; color: var(--ct-muted-dark); }
@media (min-width: 768px) {
	.elementor .ct-showcase__grid > .ct-fig--tall { grid-row: span 2; }
}

/* ---------- Closing CTA ---------- */
.elementor .ct-cta { position: relative; overflow: hidden; background: var(--ct-black); }
.elementor .ct-cta__mark {
	position: absolute !important;
	right: -60px;
	top: 50%;
	width: 560px !important;
	transform: translateY(-50%);
	opacity: .08;
	pointer-events: none;
}
.elementor .ct-cta__mark svg { display: block; width: 100%; height: auto; }
.elementor .ct-cta .ct-h2--xl { max-width: 960px; }
.elementor .ct-cta__contact p { display: flex; flex-wrap: wrap; gap: 16px 40px; margin: 0; }
.elementor .ct-cta__contact a { font-family: var(--ct-font-mono); font-size: 16px; color: var(--ct-paper); text-decoration: none; }
.elementor .ct-cta__contact a:hover { text-decoration: underline; }
@media (max-width: 900px) { .elementor .ct-cta__mark { display: none; } }


/* ==========================================================================
   Motion & hover
   ========================================================================== */
:root { --ct-ease: cubic-bezier(.2, .7, .2, 1); }

/* ---- Buttons: fill sweep on light buttons ---- */
.ct-btn--light,
.elementor .ct-button--light .elementor-button { position: relative; overflow: hidden; isolation: isolate; }
.ct-btn--light::before,
.elementor .ct-button--light .elementor-button::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: var(--ct-steel-light);
	transform: scaleX(0);
	transform-origin: right;
	transition: transform .45s var(--ct-ease);
}
.ct-btn--light:hover::before,
.elementor .ct-button--light .elementor-button:hover::before { transform: scaleX(1); transform-origin: left; }
.ct-btn--light:hover,
.elementor .ct-button--light .elementor-button:hover { background: var(--ct-paper); }

/* Underline links: underline re-draws on hover */
.elementor .ct-button--link .elementor-button { border-bottom: 0; background-image: linear-gradient(currentColor, currentColor); background-repeat: no-repeat; background-position: 0 100%; background-size: 100% 2px; transition: background-size .45s var(--ct-ease); }
.elementor .ct-button--link .elementor-button:hover { background-size: 0% 2px; background-position: 100% 100%; }

/* ---- Service cards ---- */
.elementor .ct-card { position: relative; transition: background-color .35s ease; }
.elementor .ct-card::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 2px;
	z-index: 3;
	background: var(--ct-paper);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .5s var(--ct-ease);
}
.elementor .ct-card:hover { background: #1B1C1F; }
.elementor .ct-card:hover::after { transform: scaleX(1); }
.elementor .ct-card__img img { transition: transform .8s var(--ct-ease); }
.elementor .ct-card:hover .ct-card__img img { transform: scale(1.06); }
.elementor .ct-card__badge { transition: border-color .35s ease, transform .45s var(--ct-ease); }
.elementor .ct-card:hover .ct-card__badge { border-color: var(--ct-paper); transform: translateY(-4px); }
.elementor .ct-card .ct-h3 .elementor-heading-title { transition: transform .45s var(--ct-ease); }
.elementor .ct-card:hover .ct-h3 .elementor-heading-title { transform: translateX(4px); }

/* ---- Components ---- */
.elementor .ct-fig__img img { transition: transform .8s var(--ct-ease); }
.elementor .ct-fig:hover .ct-fig__img img { transform: scale(1.06); }
.elementor .ct-fig__caption strong { transition: transform .45s var(--ct-ease); display: inline-block; }
.elementor .ct-fig:hover .ct-fig__caption strong { transform: translateX(4px); }

/* ---- Industries rows ---- */
.elementor .ct-industry-list li { position: relative; transition: padding-left .45s var(--ct-ease); }
.elementor .ct-industry-list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: -1px;
	width: 100%;
	height: 1px;
	background: var(--ct-paper);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .55s var(--ct-ease);
}
.elementor .ct-industry-list li:hover { padding-left: 14px; }
.elementor .ct-industry-list li:hover::before { transform: scaleX(1); }
.elementor .ct-industry-list strong,
.elementor .ct-industry-list em { transition: color .3s ease; }
.elementor .ct-industry-list li:hover em { color: var(--ct-paper); }

/* ---- Scroll reveals (only when JS enabled motion) ---- */
.ct-motion .ct-rv {
	opacity: 0;
	transform: translateY(28px);
	transition: opacity .9s var(--ct-ease), transform .9s var(--ct-ease);
	transition-delay: var(--ct-d, 0ms);
}
.ct-motion .ct-rv.is-in { opacity: 1; transform: none; }
/* Image wipe: a solid panel slides off the photo (the image itself is never
   clipped, so lazy-loading and the reveal observer always see it). */
.elementor .ct-about, .elementor .ct-quality { --ct-wipe-bg: var(--ct-paper); }
.elementor .ct-industries { --ct-wipe-bg: var(--ct-black); }
.ct-motion .ct-rv--wipe { position: relative; opacity: 1; transform: none; }
.ct-motion .ct-rv--wipe::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 5;
	background: var(--ct-wipe-bg, var(--ct-black));
	transform: scaleY(1);
	transform-origin: bottom;
	transition: transform 1.2s var(--ct-ease);
	pointer-events: none;
}
.ct-motion .ct-rv--wipe.is-in::after { transform: scaleY(0); }
/* Cards keep their hover transitions once revealed */
.ct-motion .ct-card.ct-rv.is-in { transition: opacity .9s var(--ct-ease), transform .9s var(--ct-ease), background-color .35s ease; }

/* ---- Hero intro ---- */
.ct-motion .ct-hero .ct-eyebrow,
.ct-motion .ct-hero .ct-text--lead,
.ct-motion .ct-hero .ct-button,
.ct-motion .ct-hero__creds { opacity: 0; transform: translateY(20px); }
.ct-motion.ct-ready .ct-hero .ct-eyebrow,
.ct-motion.ct-ready .ct-hero .ct-text--lead,
.ct-motion.ct-ready .ct-hero .ct-button,
.ct-motion.ct-ready .ct-hero__creds { animation: ctUp 1s var(--ct-ease) forwards; }
.ct-motion.ct-ready .ct-hero .ct-eyebrow { animation-delay: .1s; }
.ct-motion.ct-ready .ct-hero .ct-text--lead { animation-delay: .75s; }
.ct-motion.ct-ready .ct-hero .ct-button:nth-child(1) { animation-delay: .9s; }
.ct-motion.ct-ready .ct-hero .ct-button:nth-child(2) { animation-delay: 1s; }
.ct-motion.ct-ready .ct-hero__creds { animation-delay: 1.15s; }
.ct-motion .ct-hero .ct-eyebrow--rule .elementor-heading-title::before { transform: scaleX(0); transform-origin: left; }
.ct-motion.ct-ready .ct-hero .ct-eyebrow--rule .elementor-heading-title::before { animation: ctRule 1s var(--ct-ease) .3s forwards; }

.ct-hero .ct-line { display: block; overflow: hidden; padding-bottom: .04em; margin-bottom: -.04em; }
.ct-hero .ct-line > span { display: block; }
.ct-motion .ct-hero .ct-line > span { transform: translateY(105%); }
.ct-motion.ct-ready .ct-hero .ct-line > span { animation: ctLine 1.1s var(--ct-ease) forwards; animation-delay: calc(.25s + var(--ct-i, 0) * .12s); }


@keyframes ctUp { to { opacity: 1; transform: none; } }
@keyframes ctLine { to { transform: translateY(0); } }
@keyframes ctRule { to { transform: scaleX(1); } }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; }
}


/* ==========================================================================
   Secondary pages (About, and reusable for Services / Showcase / Contact)
   ========================================================================== */
.elementor .ct-light { background: var(--ct-paper); color: var(--ct-black); --ct-wipe-bg: var(--ct-paper); }
.elementor .ct-dark { background: var(--ct-black); --ct-wipe-bg: var(--ct-black); }
.elementor .ct-head { max-width: 760px; }
.elementor .ct-col--narrow { max-width: 460px; }

/* Compact page header with photo */
.elementor .ct-page-hero { padding-top: calc(var(--ct-header-h) + 72px); }
.elementor .ct-page-hero__inner > .ct-col { width: auto !important; flex: 1 1 480px; max-width: 720px; }
.elementor .ct-page-hero__lead { flex: 1 1 420px; max-width: 520px; }
.elementor .ct-h1--page .elementor-heading-title { font-size: clamp(32px, 3.6vw, 52px); line-height: .98; }
.elementor .ct-breadcrumb p {
	margin: 0;
	font-family: var(--ct-font-mono);
	font-size: 12px;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--ct-steel-light);
}
.elementor .ct-breadcrumb a { color: var(--ct-steel-dark); text-decoration: none; }
.elementor .ct-breadcrumb a:hover { color: var(--ct-paper); }
.elementor .ct-breadcrumb span { padding: 0 10px; color: var(--ct-steel-dark); }
@media (max-width: 767px) { .elementor .ct-page-hero { padding-top: calc(var(--ct-header-h) + 40px); } }

/* Key facts row */
.elementor .ct-facts { background: var(--ct-white); border-bottom: 1px solid var(--ct-rule-light); }
.elementor .ct-fact { border-right: 1px solid var(--ct-rule-light); }
.elementor .ct-fact:last-child { border-right: 0; }
.elementor .ct-fact__icon {
	flex: none;
	width: 56px !important;
	height: 56px;
	display: flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	border: 1px solid var(--ct-black);
}
.elementor .ct-fact__icon img { display: block; width: 30px; height: 30px; }
.elementor .ct-fact__body { width: auto !important; }
.elementor .ct-fact__label .elementor-heading-title {
	margin: 0;
	font-family: var(--ct-font-mono);
	font-size: 11px;
	font-weight: 400;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--ct-label-dark);
}
.elementor .ct-fact__value .elementor-heading-title { margin: 0; font-family: var(--ct-font-body); font-size: 16px; font-weight: 600; line-height: 1.4; color: var(--ct-black); }
@media (max-width: 1024px) {
	.elementor .ct-fact { border-bottom: 1px solid var(--ct-rule-light); }
	.elementor .ct-fact:nth-child(2n) { border-right: 0; }
}
@media (max-width: 767px) { .elementor .ct-fact { border-right: 0; padding-left: 20px !important; padding-right: 20px !important; } }

/* Innovation / certification split */
.elementor .ct-innov { background: var(--ct-ink); --ct-wipe-bg: var(--ct-ink); }
.elementor .ct-innov > .ct-col { width: auto !important; flex: 1 1 0 !important; min-width: 0; }
.elementor .ct-innov__media { position: relative; min-height: 560px; overflow: hidden; }
.elementor .ct-innov__media .elementor-widget-image { position: absolute; inset: 0; }
.elementor .ct-innov__media .elementor-widget-image .elementor-widget-container,
.elementor .ct-innov__media img { height: 100%; }
.elementor .ct-innov__media img { display: block; width: 100%; object-fit: cover; }
.elementor .ct-innov__block { flex: 1 1 auto; }
.elementor .ct-innov__block + .ct-innov__block { border-top: 1px solid var(--ct-line); }
.elementor .ct-innov__block .ct-text { max-width: 520px; }
.elementor .ct-h3--lg .elementor-heading-title { font-size: 30px; line-height: 1; }
@media (max-width: 1024px) {
	.elementor .ct-innov > .ct-col { flex: 1 1 auto !important; width: 100% !important; }
	.elementor .ct-innov__media { min-height: 380px; }
}

/* Mission / vision / values */
.elementor .ct-mvv { gap: 2px !important; background: var(--ct-line); border: 2px solid var(--ct-line); }
.elementor .ct-mvv__tile { background: var(--ct-black); }
.elementor .ct-mvv__icon {
	width: 88px !important;
	height: 88px;
	display: flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	border: 1px solid var(--ct-line-strong);
	border-radius: 50%;
	transition: border-color .35s ease;
}
.elementor .ct-mvv__icon img { display: block; width: 46px; height: 46px; }
.elementor .ct-mvv__tile:hover .ct-mvv__icon { border-color: var(--ct-paper); }
.elementor .ct-mvv__label .elementor-heading-title {
	margin: 8px 0 0;
	font-family: var(--ct-font-mono);
	font-size: 13px;
	font-weight: 400;
	letter-spacing: .3em;
	text-transform: uppercase;
	color: var(--ct-paper);
}
.elementor .ct-mvv__text { font-size: 18px; }

/* Commitments list */
.elementor .ct-commit ol { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--ct-rule-light); }
.elementor .ct-commit li {
	display: grid;
	grid-template-columns: 64px minmax(0, 1fr);
	gap: 24px;
	padding: 28px 0;
	border-bottom: 1px solid var(--ct-rule-light);
	transition: padding-left .45s var(--ct-ease, ease);
}
.elementor .ct-commit li:hover { padding-left: 10px; }
.elementor .ct-commit li > span { padding-top: 4px; font-family: var(--ct-font-mono); font-size: 14px; color: var(--ct-steel-dark); }
.elementor .ct-commit strong {
	display: block;
	font-family: var(--ct-font-display);
	font-stretch: 118%;
	font-weight: 800;
	font-size: 22px;
	line-height: 1.1;
	text-transform: uppercase;
	color: var(--ct-black);
}
.elementor .ct-commit p { margin: 10px 0 0; font-size: 16px; line-height: 1.6; color: var(--ct-muted-dark); }

/* Map + legend */
.ct-legend { display: flex; flex-wrap: wrap; gap: 12px 28px; font-family: var(--ct-font-mono); font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--ct-steel); }
.ct-legend span { display: inline-flex; align-items: center; gap: 10px; }
.ct-legend svg { width: 14px; height: 13px; fill: none; stroke: var(--ct-paper); stroke-width: 1.6; }
.ct-legend__proj i { width: 10px; height: 10px; box-sizing: border-box; border: 2px solid var(--ct-steel); border-radius: 50%; }
.ct-legend__exp i { width: 10px; height: 10px; background: var(--ct-paper); border-radius: 50%; }
.ct-map { position: relative; }
.ct-map > img { display: block; width: 100%; height: auto; }
.ct-map__pin { position: absolute; border-radius: 50%; transform: translate(-50%, -50%); }
.ct-map__pin--exp { width: 12px; height: 12px; background: var(--ct-paper); box-shadow: 0 0 0 6px rgba(244, 244, 242, .15); }
.ct-map__pin--proj { width: 14px; height: 14px; box-sizing: border-box; border: 2px solid var(--ct-steel); background: var(--ct-black); }
.ct-map__home { position: absolute; display: flex; align-items: center; gap: 10px; transform: translate(-13px, -60%); }
.ct-map__home svg { width: 26px; height: 24px; fill: var(--ct-black); stroke: var(--ct-paper); stroke-width: 1.4; }
.ct-map__home em { font-family: var(--ct-font-mono); font-size: 11px; font-style: normal; letter-spacing: .14em; text-transform: uppercase; color: var(--ct-paper); }
.ct-motion .ct-map__pin--exp { animation: ctPulse 2.6s ease-out infinite; }
@keyframes ctPulse {
	0% { box-shadow: 0 0 0 0 rgba(244, 244, 242, .35); }
	70% { box-shadow: 0 0 0 12px rgba(244, 244, 242, 0); }
	100% { box-shadow: 0 0 0 0 rgba(244, 244, 242, 0); }
}
@media (max-width: 767px) {
	.ct-map__pin--exp { width: 8px; height: 8px; box-shadow: 0 0 0 4px rgba(244, 244, 242, .15); }
	.ct-map__pin--proj { width: 10px; height: 10px; }
	.ct-map__home svg { width: 18px; height: 16px; }
	.ct-map__home em { font-size: 9px; }
}
.elementor .ct-locs { gap: 48px !important; padding-top: 48px; border-top: 1px solid var(--ct-line); }
.elementor .ct-loc__text { font-size: 16px; }

/* Facility band */
.elementor .ct-band { position: relative; }

/* Group tiles */
.elementor .ct-group { gap: 1px !important; background: var(--ct-rule-light); border: 1px solid var(--ct-rule-light); }
.elementor .ct-group__tile { background: var(--ct-paper); min-height: 120px; transition: background-color .35s ease; }
.elementor .ct-group__tile:hover { background: var(--ct-white); }
.elementor .ct-group__tile--dark, .elementor .ct-group__tile--dark:hover { background: var(--ct-black); }
.elementor .ct-group__label .elementor-heading-title {
	margin: 0;
	font-family: var(--ct-font-mono);
	font-size: 11px;
	font-weight: 400;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--ct-label-dark);
}
.elementor .ct-group__name .elementor-heading-title { margin: 0; font-family: var(--ct-font-body); font-size: 20px; font-weight: 600; line-height: 1.3; color: var(--ct-black); }
.elementor .ct-group__tile--dark .ct-group__label .elementor-heading-title { color: var(--ct-steel); }
.elementor .ct-group__tile--dark .ct-group__name .elementor-heading-title { color: var(--ct-paper); }

/* Page header: stack cleanly on tablet/phone (flex-basis must not become a height) */
@media (max-width: 1024px) {
	.elementor .ct-page-hero__inner > .ct-col,
	.elementor .ct-page-hero__lead { flex: 0 0 auto !important; max-width: 100%; }
	.elementor .ct-page-hero__inner { align-items: flex-start !important; }
}
@media (max-width: 480px) {
	.elementor .ct-h1--page .elementor-heading-title { font-size: 28px; }
}

/* ---- About refinements: taller page banner, clearer map markers ---- */
.elementor .ct-page-hero {
	min-height: 500px;
	justify-content: flex-end;
	padding-top: calc(var(--ct-header-h) + 104px);
	padding-bottom: 104px;
}
.elementor .ct-h1--page .elementor-heading-title { font-size: clamp(34px, 4.2vw, 60px); }
@media (max-width: 767px) {
	.elementor .ct-page-hero { min-height: 0; padding-top: calc(var(--ct-header-h) + 56px); padding-bottom: 64px; }
}

.ct-map__pin { z-index: 2; }
.ct-map__pin--exp {
	width: 16px;
	height: 16px;
	border: 3px solid var(--ct-black);
	box-sizing: border-box;
	background: var(--ct-white);
	box-shadow: 0 0 0 4px rgba(244, 244, 242, .35);
}
.ct-map__pin--proj {
	width: 18px;
	height: 18px;
	border: 3px solid var(--ct-steel-light);
	background: var(--ct-black);
	box-shadow: 0 0 0 3px rgba(13, 13, 14, .8);
}
.ct-map__pin::after {
	content: attr(title);
	position: absolute;
	left: calc(100% + 10px);
	top: 50%;
	transform: translateY(-50%);
	padding: 3px 6px;
	background: rgba(13, 13, 14, .85);
	font-family: var(--ct-font-mono);
	font-size: 11px;
	letter-spacing: .12em;
	line-height: 1.2;
	text-transform: uppercase;
	white-space: nowrap;
	color: var(--ct-paper);
	pointer-events: none;
}
.ct-map__pin--proj::after { color: var(--ct-steel-light); }
.ct-map__home { z-index: 3; }
.ct-map__home svg { width: 30px; height: 28px; stroke-width: 1.6; }
.ct-map__home em { padding: 3px 6px; background: rgba(13, 13, 14, .85); font-size: 12px; }
.ct-motion .ct-map__pin--exp { animation: ctPulse2 2.6s ease-out infinite; }
@keyframes ctPulse2 {
	0% { box-shadow: 0 0 0 4px rgba(244, 244, 242, .35); }
	70% { box-shadow: 0 0 0 16px rgba(244, 244, 242, 0); }
	100% { box-shadow: 0 0 0 4px rgba(244, 244, 242, 0); }
}
@media (max-width: 1024px) { .ct-map__pin::after { display: none; } }
@media (max-width: 767px) {
	.ct-map__pin--exp { width: 10px; height: 10px; border-width: 2px; }
	.ct-map__pin--proj { width: 11px; height: 11px; border-width: 2px; }
}
@media (min-width: 768px) {
	.elementor .ct-page-hero__inner > .ct-col { flex-basis: 580px; }
	.elementor .ct-h1--page .elementor-heading-title { white-space: nowrap; font-size: clamp(34px, 3.9vw, 56px); }
}
