/* TXEXP Homepage — uses the shared design-system tokens (.txp-*).
   Geist + Geist Mono fonts are enqueued by the homepage module.
   All selectors scoped to .txexp-home-wrap to avoid Blocksy conflicts. */

:root {
	--txp-navy:        #1a2b5c;
	--txp-red:         #c8102e;
	--txp-red-deep:    #a40d24;
	--txp-blue:        #2e4a8a;
	--txp-ink:         #242629;
	--txp-muted:       #687082;
	--txp-muted-soft:  #8a909c;
	--txp-bg:          #f4f4f0;
	--txp-card:        #ffffff;
	--txp-line:        rgba(26, 43, 92, 0.14);
	--txp-line-strong: rgba(26, 43, 92, 0.22);
	--txp-tint:        rgba(26, 43, 92, 0.04);
	--txp-radius:      6px;
}

/* ---- Base context ---- */
.txp {
	font-family: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	font-feature-settings: "ss01", "ss02", "cv11";
	color: var(--txp-ink);
	background: var(--txp-bg);
	line-height: 1.5;
	font-size: 15px;
	-webkit-font-smoothing: antialiased;
}
.txp *, .txp *::before, .txp *::after { box-sizing: border-box; }
.txp a { text-decoration: none; }
.txp button { font: inherit; color: inherit; cursor: pointer; border: 0; }
.txp input, .txp textarea, .txp select { font: inherit; color: inherit; }

/* ---- Type primitives ---- */
.txp-mono {
	font-family: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
	font-size: 11px;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--txp-muted);
	font-weight: 500;
}
.txp-mono-tight { font-family: "Geist Mono", monospace; font-size: 12px; color: var(--txp-muted); }
.txp-eyebrow { color: var(--txp-blue); }
.txp-h1 {
	font-family: "Geist", sans-serif;
	font-weight: 500;
	letter-spacing: -0.02em;
	color: var(--txp-navy);
	font-size: 38px;
	line-height: 1.1;
	margin: 0;
}
.txp-h1.tight { font-size: 32px; }
.txp-h1.display { font-size: 52px; letter-spacing: -0.025em; line-height: 1.02; }
.txp-h2 {
	font-family: "Geist", sans-serif;
	font-weight: 500;
	letter-spacing: -0.012em;
	color: var(--txp-navy);
	font-size: 20px;
	margin: 0;
}
.txp-excerpt { color: var(--txp-muted); font-size: 16px; line-height: 1.55; }
.txp-excerpt-sm { color: var(--txp-muted); font-size: 14px; line-height: 1.55; }

/* ---- Buttons ---- */
.txp-btn {
	display: inline-flex; align-items: center; justify-content: center;
	gap: 8px;
	padding: 0 18px;
	height: 44px;
	border: 1px solid transparent;
	border-radius: var(--txp-radius);
	font-weight: 500;
	font-size: 14px;
	letter-spacing: 0.005em;
	background: var(--txp-card);
	color: var(--txp-ink);
	white-space: nowrap;
	cursor: pointer;
	font-family: inherit;
}
.txp-btn.primary {
	background: var(--txp-red);
	color: #fff;
	border-color: var(--txp-red);
}
.txp-btn.primary:hover { background: var(--txp-red-deep); border-color: var(--txp-red-deep); }
.txp-btn.outline {
	background: var(--txp-card);
	border-color: var(--txp-line-strong);
	color: var(--txp-navy);
}
.txp-btn.outline:hover { background: var(--txp-tint); }
.txp-btn.outline-light {
	background: transparent;
	border-color: rgba(255, 255, 255, 0.32);
	color: #fff;
}
.txp-btn.outline-light:hover { background: rgba(255, 255, 255, 0.06); }
.txp-btn.sm { height: 36px; font-size: 13px; padding: 0 14px; }
.txp-btn.lg { height: 48px; font-size: 15px; padding: 0 22px; }

/* ---- Image placeholder ---- */
.txp-img {
	background-color: rgba(26, 43, 92, 0.04);
	background-image: repeating-linear-gradient(
		135deg,
		rgba(26, 43, 92, 0.075) 0 1px,
		transparent 1px 14px
	);
	position: relative;
	overflow: hidden;
	display: block;
}
.txp-img .label {
	position: absolute; top: 12px; left: 12px;
	font-family: "Geist Mono", monospace;
	font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase;
	color: var(--txp-muted);
	background: var(--txp-bg);
	padding: 3px 8px;
	border-radius: 3px;
	border: 1px solid var(--txp-line);
}
.txp-img .corner {
	position: absolute; bottom: 10px; right: 12px;
	font-family: "Geist Mono", monospace;
	font-size: 10.5px; color: var(--txp-muted-soft);
}
.txp-photo {
	position: relative;
	margin: 0;
	overflow: hidden;
	background: rgba(26, 43, 92, 0.08);
}
.txp-photo img,
.txp-product-photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.txp-photo figcaption {
	position: absolute;
	left: 12px;
	top: 12px;
	padding: 4px 8px;
	border-radius: 3px;
	background: var(--txp-bg);
	border: 1px solid var(--txp-line);
	color: var(--txp-muted);
	font-family: "Geist Mono", monospace;
	font-size: 10.5px;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

/* ============================================================
   HOMEPAGE — .txexp-home-wrap scope
   ============================================================ */

.txexp-home-wrap {
	width: 100%;
	overflow-x: hidden;
}

/* ---- Section shell ---- */
.txexp-home-wrap .txp-home-section {
	max-width: 1240px;
	margin: 0 auto;
	padding: 80px 28px;
}
.txexp-home-wrap .txp-home-section.alt {
	max-width: none;
	background: var(--txp-card);
	border-top: 1px solid var(--txp-line);
	border-bottom: 1px solid var(--txp-line);
}
.txexp-home-wrap .txp-home-section.alt > * {
	max-width: 1240px;
	margin-left: auto;
	margin-right: auto;
}

/* ---- Section head ---- */
.txp-home-sectionhead {
	display: grid;
	grid-template-columns: 1.4fr 1fr;
	gap: 48px;
	align-items: end;
	padding-bottom: 28px;
	border-bottom: 1px solid var(--txp-line);
	margin-bottom: 32px;
}
.txp-home-sectionhead .left { min-width: 0; }
.txp-home-section-cta { margin-top: 18px; }

/* ---- Hero ---- */
.txp-home-hero {
	max-width: 1240px;
	margin: 0 auto;
	padding: 96px 28px 0;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	min-height: 580px;
}
.txp-home-hero .copy { padding-bottom: 52px; max-width: 680px; }
.txp-home-hero .cta-row { display: flex; gap: 12px; margin-top: 28px; flex-wrap: wrap; }
.txp-home-hero .trust {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	border-top: 1px solid var(--txp-line);
	border-left: 1px solid var(--txp-line);
}
.txp-home-hero .trust .cell {
	padding: 18px 20px;
	border-right: 1px solid var(--txp-line);
	border-bottom: 1px solid var(--txp-line);
	background: var(--txp-card);
}
.txp-home-hero .trust .k {
	font-family: "Geist Mono", monospace;
	font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase;
	color: var(--txp-navy); margin-bottom: 4px;
}
.txp-home-hero .trust .v { color: var(--txp-muted); font-size: 12.5px; }

.txp-home-trust-strip {
	display: grid;
	grid-template-columns: .85fr 1.15fr;
	gap: 48px;
	align-items: center;
}
.txp-home-trust-strip .logos {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 10px;
}
.txp-home-trust-strip .logos span {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 74px;
	background: var(--txp-card);
	border: 1px solid var(--txp-line);
	border-radius: var(--txp-radius);
	color: var(--txp-navy);
	font-family: "Geist Mono", monospace;
	font-size: 12px;
	text-align: center;
	padding: 10px;
}

/* ---- Icon box ---- */
.txp-icon-box {
	width: 36px;
	height: 36px;
	background: var(--txp-tint);
	border: 1px solid var(--txp-line);
	border-radius: var(--txp-radius);
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--txp-navy);
	margin-bottom: 14px;
	flex-shrink: 0;
}

/* ---- Section eyebrow accent ---- */
.txp-home-sectionhead .left > .txp-mono {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 4px 10px 4px 8px;
	border: 1px solid var(--txp-line);
	border-radius: 3px;
	background: var(--txp-card);
	width: fit-content;
}
.txp-home-sectionhead .left > .txp-mono::before {
	content: "";
	width: 6px;
	height: 6px;
	background: var(--txp-red);
	border-radius: 50%;
	flex-shrink: 0;
}

/* ---- Card grids ---- */
.txp-home-cards {
	display: grid;
	gap: 0;
	border-top: 1px solid var(--txp-line);
	border-left: 1px solid var(--txp-line);
}
.txp-home-cards.three { grid-template-columns: repeat(3, 1fr); }
.txp-home-cards.two   { grid-template-columns: repeat(2, 1fr); }
.txp-home-card {
	background: var(--txp-card);
	border-right: 1px solid var(--txp-line);
	border-bottom: 1px solid var(--txp-line);
	padding: 28px 24px 26px;
	display: flex;
	flex-direction: column;
	min-height: 220px;
	position: relative;
	transition: background 0.15s ease;
}
.txp-home-card::before {
	content: "";
	position: absolute;
	inset: 0 auto 0 0;
	width: 3px;
	background: var(--txp-navy);
	transform: scaleY(0);
	transform-origin: bottom center;
	transition: transform 0.18s ease;
}
.txp-home-card:hover { background: var(--txp-tint); }
.txp-home-card:hover::before { transform: scaleY(1); }
.txp-home-card .body {
	color: var(--txp-muted);
	font-size: 14px;
	line-height: 1.55;
	margin: 12px 0 18px;
}
.txp-home-card .link {
	margin-top: auto;
	color: var(--txp-navy);
	font-size: 13px;
	border-bottom: 1px solid var(--txp-line-strong);
	padding-bottom: 4px;
	align-self: flex-start;
}
.txp-home-card .link:hover { border-bottom-color: var(--txp-red); color: var(--txp-red); }
.txp-home-card.service .head {
	display: flex;
	justify-content: space-between;
	align-items: center;
}

/* ---- Services mini archive ---- */
.txp-home-services-mini {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 1px;
	background: rgba(255, 255, 255, 0.12);
	border: 1px solid rgba(255, 255, 255, 0.12);
}
.txp-home-service-tile {
	display: grid;
	grid-template-rows: 220px 1fr;
	min-height: 430px;
	background: rgba(255, 255, 255, 0.04);
	color: inherit;
	position: relative;
	overflow: hidden;
}
.txp-home-service-tile::after {
	content: "";
	position: absolute;
	inset: auto 0 0;
	height: 3px;
	background: var(--txp-red);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform 0.18s ease;
}
.txp-home-service-tile:hover::after { transform: scaleX(1); }
.txp-home-service-tile .media {
	position: relative;
	background: rgba(255, 255, 255, 0.06);
	overflow: hidden;
}
.txp-home-service-tile .media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to bottom, rgba(13, 23, 40, 0.12), rgba(13, 23, 40, 0.58));
	pointer-events: none;
}
.txp-home-service-tile img,
.txp-home-service-tile .placeholder {
	width: 100%;
	height: 100%;
	display: block;
	object-fit: cover;
	transition: transform 0.28s ease;
}
.txp-home-service-tile:hover img,
.txp-home-service-tile:hover .placeholder {
	transform: scale(1.04);
}
.txp-home-service-tile .placeholder {
	background-image:
		linear-gradient(135deg, rgba(255, 255, 255, 0.09) 25%, transparent 25%),
		linear-gradient(225deg, rgba(255, 255, 255, 0.09) 25%, transparent 25%),
		linear-gradient(45deg, rgba(255, 255, 255, 0.09) 25%, transparent 25%),
		linear-gradient(315deg, rgba(255, 255, 255, 0.09) 25%, rgba(255, 255, 255, 0.02) 25%);
	background-position: 18px 0, 18px 0, 0 0, 0 0;
	background-size: 36px 36px;
	background-color: rgba(255, 255, 255, 0.05);
}
.txp-home-service-tile .num {
	position: absolute;
	left: 16px;
	top: 14px;
	z-index: 2;
	font-family: "Geist Mono", monospace;
	font-size: 11px;
	color: #fff;
	background: rgba(13, 23, 40, 0.72);
	border: 1px solid rgba(255, 255, 255, 0.2);
	border-radius: 3px;
	padding: 4px 8px;
}
.txp-home-service-tile .body {
	padding: 22px 20px 24px;
	display: flex;
	flex-direction: column;
}
.txp-home-service-tile h3 {
	color: #fff;
	font-size: 20px;
	line-height: 1.15;
	font-weight: 500;
	letter-spacing: -0.012em;
	margin: 0;
}
.txp-home-service-tile p {
	color: rgba(255, 255, 255, 0.56);
	font-size: 13.5px;
	line-height: 1.55;
	margin: 12px 0 18px;
}
.txp-home-service-tile .txp-mono-tight {
	margin-top: auto;
	color: rgba(255, 255, 255, 0.38);
}

/* ---- Services expanding band ---- */
.txp-home-future {
	margin-top: 36px;
	border: 1px solid var(--txp-line);
	background: var(--txp-bg);
	padding: 22px 24px;
}
.txp-home-future .head {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding-bottom: 16px;
	border-bottom: 1px solid var(--txp-line);
	flex-wrap: wrap;
	gap: 12px;
}
.txp-home-future ul {
	list-style: none;
	padding: 0;
	margin: 16px 0 0;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 0;
}
.txp-home-future li {
	display: flex;
	gap: 10px;
	align-items: baseline;
	padding: 10px 0;
	color: var(--txp-ink);
	font-size: 14px;
}
.txp-home-future li .t { color: var(--txp-navy); }

/* ---- Product discovery search ---- */
.txp-home-search {
	margin-top: 4px;
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	border: 1px solid var(--txp-line-strong);
	border-radius: var(--txp-radius);
	background: var(--txp-card);
	padding: 6px 6px 6px 18px;
	height: 64px;
}
.txp-home-search .ico {
	font-family: "Geist Mono", monospace;
	font-size: 22px;
	color: var(--txp-navy);
}
.txp-home-search input {
	border: 0;
	outline: none;
	background: transparent;
	height: 100%;
	padding: 0 18px;
	font-size: 16px;
	color: var(--txp-ink);
	font-family: inherit;
	min-width: 0;
}
.txp-home-search input::placeholder { color: var(--txp-muted-soft); }
.txp-home-search .txp-btn { height: 52px; padding: 0 22px; }

/* ---- Chips ---- */
.txp-home-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 18px 0 32px;
}
.txp-home-chips .chip {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 8px 14px;
	border: 1px solid var(--txp-line);
	border-radius: 999px;
	background: var(--txp-card);
	font-size: 13px;
	color: var(--txp-ink);
}
.txp-home-chips .chip:hover { border-color: var(--txp-navy); }
.txp-home-chips .chip .n {
	font-family: "Geist Mono", monospace;
	font-size: 11px;
	color: var(--txp-muted);
}

/* ---- Catalog preview ---- */
.txp-home-catalog-preview {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	border-top: 1px solid var(--txp-line);
	border-left: 1px solid var(--txp-line);
}
.txp-home-catalog-preview .card {
	background: var(--txp-card);
	border-right: 1px solid var(--txp-line);
	border-bottom: 1px solid var(--txp-line);
	display: block;
	color: inherit;
	position: relative;
	overflow: hidden;
	transition: background 0.12s ease;
}
.txp-home-catalog-preview .card::after {
	content: "";
	position: absolute;
	bottom: 0; left: 0; right: 0;
	height: 2px;
	background: var(--txp-red);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform 0.15s ease;
}
.txp-home-catalog-preview .card:hover { background: var(--txp-tint); }
.txp-home-catalog-preview .card:hover::after { transform: scaleX(1); }
.txp-home-catalog-preview .info { padding: 14px 16px; }
.txp-home-catalog-preview .info .t {
	color: var(--txp-navy);
	font-size: 14px;
	font-weight: 500;
	margin-bottom: 4px;
}

/* ---- Why us reasons ---- */
.txp-home-reasons {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	border-top: 1px solid var(--txp-line);
	border-left: 1px solid var(--txp-line);
}
.txp-home-reasons .cell {
	padding: 26px 22px 28px;
	background: var(--txp-card);
	border-right: 1px solid var(--txp-line);
	border-bottom: 1px solid var(--txp-line);
	position: relative;
	transition: background 0.15s ease;
}
.txp-home-reasons .cell::before {
	content: "";
	position: absolute;
	inset: 0 auto 0 0;
	width: 3px;
	background: var(--txp-blue);
	transform: scaleY(0);
	transform-origin: bottom center;
	transition: transform 0.18s ease;
}
.txp-home-reasons .cell:hover { background: var(--txp-tint); }
.txp-home-reasons .cell:hover::before { transform: scaleY(1); }
.txp-home-reasons .cell .icon {
	width: 32px;
	height: 32px;
	background: var(--txp-tint);
	border: 1px solid var(--txp-line);
	border-radius: var(--txp-radius);
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--txp-navy);
	margin-bottom: 12px;
}
.txp-home-reasons .cell .t {
	margin: 12px 0 8px;
	font-size: 16px;
	font-weight: 500;
	color: var(--txp-navy);
	letter-spacing: -0.005em;
}
.txp-home-reasons .cell .b {
	color: var(--txp-muted);
	font-size: 13.5px;
	line-height: 1.55;
	margin: 0;
}

/* ---- Process ---- */
.txp-home-process {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
}
.txp-home-process > li {
	padding: 28px 20px 24px 0;
	position: relative;
}
.txp-home-process > li .num {
	width: 44px; height: 44px;
	border: 1px solid var(--txp-navy);
	display: flex; align-items: center; justify-content: center;
	background: var(--txp-navy);
	border-radius: 50%;
}
.txp-home-process > li .num span {
	font-family: "Geist Mono", monospace;
	font-size: 13px;
	color: #fff;
}
.txp-home-process > li .body { margin-top: 16px; }
.txp-home-process > li .body .t {
	font-size: 16px; font-weight: 500;
	color: var(--txp-navy);
	margin: 0 0 6px;
}
.txp-home-process > li .body .b {
	color: var(--txp-muted);
	font-size: 13.5px;
	line-height: 1.55;
	margin: 0;
}
.txp-home-process > li .line {
	position: absolute;
	top: 50px; left: 56px; right: 0;
	height: 1px;
	background: linear-gradient(to right, var(--txp-navy), var(--txp-line));
}

/* ---- Coverage ---- */
.txp-home-coverage {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 40px;
	align-items: start;
}
.txp-home-coverage .map {
	position: relative;
	background: var(--txp-card);
	border: 1px solid var(--txp-line);
	height: 320px;
	overflow: hidden;
}
.txp-home-coverage .map .state {
	position: absolute;
	border: 1px solid var(--txp-line-strong);
	background: var(--txp-tint);
}
.txp-home-coverage .map .state.texas {
	left: 8%; top: 14%;
	width: 56%; height: 70%;
	clip-path: polygon(0% 24%, 18% 24%, 18% 0%, 64% 0%, 64% 16%, 88% 22%, 100% 38%, 92% 62%, 76% 76%, 64% 88%, 50% 96%, 38% 100%, 14% 92%, 0% 78%);
}
.txp-home-coverage .map .state.louisiana {
	left: 60%; top: 30%;
	width: 30%; height: 50%;
	clip-path: polygon(0% 14%, 26% 0%, 60% 6%, 76% 18%, 100% 28%, 100% 80%, 86% 100%, 56% 96%, 30% 100%, 12% 84%, 0% 64%);
}
.txp-home-coverage .map .label {
	position: absolute;
	background: var(--txp-card);
	border: 1px solid var(--txp-line-strong);
	padding: 6px 10px;
	font-size: 11px;
	line-height: 1.4;
	z-index: 2;
}
.txp-home-coverage .map .state.texas .label { left: 30%; top: 38%; }
.txp-home-coverage .map .state.louisiana .label { left: 12%; top: 36%; }
.txp-home-coverage .map .label .city {
	font-family: "Geist Mono", monospace;
	color: var(--txp-muted);
	font-size: 10px;
	margin-top: 2px;
}
.txp-home-coverage .map .pin {
	position: absolute;
	width: 8px; height: 8px;
	background: var(--txp-red);
	border-radius: 50%;
	z-index: 3;
	box-shadow: 0 0 0 4px rgba(200, 16, 46, 0.18);
}
.txp-home-coverage .map .state.texas .pin.a { left: 50%; top: 56%; }
.txp-home-coverage .map .state.texas .pin.b { left: 28%; top: 26%; }
.txp-home-coverage .map .state.texas .pin.c { left: 60%; top: 30%; }
.txp-home-coverage .map .state.louisiana .pin.a { left: 28%; top: 56%; }
.txp-home-coverage .locs {
	display: grid;
	gap: 0;
	border-top: 1px solid var(--txp-line);
}
.txp-home-coverage .loc {
	padding: 22px 0;
	border-bottom: 1px solid var(--txp-line);
}
.txp-home-coverage .loc .meta {
	list-style: none;
	padding: 0;
	margin: 14px 0 0;
}
.txp-home-coverage .loc .meta li {
	display: grid;
	grid-template-columns: 100px 1fr;
	gap: 16px;
	padding: 8px 0;
	border-top: 1px solid var(--txp-line);
	font-size: 13px;
}
.txp-home-coverage .loc .meta li .k {
	font-family: "Geist Mono", monospace;
	font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase;
	color: var(--txp-muted);
}
.txp-home-coverage .loc .meta li .v { color: var(--txp-ink); }

/* ---- Final CTA ---- */
.txp-home-final {
	background: var(--txp-navy);
	position: relative;
}
.txp-home-final::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image:
		linear-gradient(rgba(255, 255, 255, 0.04) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px);
	background-size: 56px 56px;
	pointer-events: none;
}
.txp-home-final .inner {
	max-width: 1240px;
	margin: 0 auto;
	padding: 96px 28px;
	position: relative;
}
.txp-home-final .cta-row {
	display: flex;
	gap: 12px;
	margin-top: 32px;
	flex-wrap: wrap;
}
.txp-home-final .bottom {
	margin-top: 48px;
	padding-top: 24px;
	border-top: 1px solid rgba(255, 255, 255, 0.14);
	display: flex;
	gap: 14px;
	align-items: center;
	flex-wrap: wrap;
	color: rgba(255, 255, 255, 0.7);
}
.txp-home-final .bottom .dot { color: rgba(255, 255, 255, 0.32); }
.txp-home-final .bottom .txp-mono { color: rgba(255, 255, 255, 0.7); }

/* ---- Map pin pulse ---- */
@keyframes txp-ping {
	0%   { box-shadow: 0 0 0 0 rgba(200, 16, 46, 0.45); }
	70%  { box-shadow: 0 0 0 8px rgba(200, 16, 46, 0); }
	100% { box-shadow: 0 0 0 0 rgba(200, 16, 46, 0); }
}
.txp-home-coverage .map .pin {
	animation: txp-ping 2s ease infinite;
}
.txp-home-coverage .map .state.texas .pin.b  { animation-delay: 0.4s; }
.txp-home-coverage .map .state.texas .pin.c  { animation-delay: 0.8s; }
.txp-home-coverage .map .state.louisiana .pin.a { animation-delay: 1.2s; }

/* ============================================================
   RESPONSIVE
   ============================================================ */

@media (max-width: 1080px) {
	.txp-home-reasons { grid-template-columns: repeat(2, 1fr); }
	.txp-home-process { grid-template-columns: repeat(2, 1fr); }
	.txp-home-process > li .line { display: none; }
	.txp-home-services-mini { grid-template-columns: repeat(2, 1fr); }
	.txp-home-service-tile { grid-template-rows: 240px 1fr; min-height: 410px; }
}

@media (max-width: 860px) {
	.txp-home-hero .trust { grid-template-columns: repeat(2, 1fr); }
	.txp-home-trust-strip { grid-template-columns: 1fr; gap: 24px; }
	.txp-home-sectionhead { grid-template-columns: 1fr; gap: 16px; }
	.txp-home-cards.three { grid-template-columns: 1fr; }
	.txp-home-cards.two   { grid-template-columns: 1fr; }
	.txp-home-section-cta { margin-top: 14px; }
	.txp-home-future ul { grid-template-columns: repeat(2, 1fr); }
	.txp-home-coverage { grid-template-columns: 1fr; }
	.txp-home-catalog-preview { grid-template-columns: repeat(2, 1fr); }
	.txp-h1.display { font-size: 38px; }
	.txp-home-section, .txexp-home-wrap .txp-home-section { padding: 52px 20px; }
	.txp-home-hero { padding-left: 20px; padding-right: 20px; }
	.txp-home-final .inner { padding: 64px 20px; }
}

@media (max-width: 540px) {
	.txp-home-hero .trust { grid-template-columns: repeat(2, 1fr); }
	.txp-home-trust-strip .logos { grid-template-columns: 1fr 1fr; }
	.txp-home-reasons { grid-template-columns: 1fr; }
	.txp-home-process { grid-template-columns: 1fr; }
	.txp-home-services-mini { grid-template-columns: 1fr; }
	.txp-home-service-tile { grid-template-rows: 210px auto; min-height: 0; }
	.txp-home-service-tile .body { padding: 20px 18px 22px; }
	.txp-home-future ul { grid-template-columns: 1fr; }
	.txp-home-catalog-preview { grid-template-columns: 1fr; }
	.txp-home-search {
		grid-template-columns: auto 1fr;
		height: auto;
		padding: 10px;
		gap: 8px;
	}
	.txp-home-search .txp-btn { grid-column: 1 / -1; height: 44px; width: 100%; }
	.txp-home-search input { padding: 0 8px; }
	.txp-h1.tight { font-size: 26px; }
	.txp-home-final .bottom { flex-direction: column; align-items: flex-start; gap: 8px; }
	.txp-home-final .bottom .dot { display: none; }
}

/* ============================================================
   COLOR DEPTH — section-by-section visual variation
   ============================================================ */

/* ── 1. Hero: full-bleed background image ── */
.txexp-home-wrap .txp-home-hero {
	max-width: none;
	padding: 0 max(28px, calc(50% - 620px)) 0;
	background-color: #09132a;
	background-image:
		linear-gradient(
			to bottom,
			rgba(6,12,32,.7)   0%,
			rgba(6,12,32,.48)  40%,
			rgba(6,12,32,.82) 100%
		),
		url('https://images.unsplash.com/photo-1497366216548-37526070297c?w=1920&q=80');
	background-size: cover;
	background-position: center 30%;
	min-height: 680px;
	position: relative;
	overflow: hidden;
}
/* Red top-right accent bar */
.txp-home-hero::before {
	content: "";
	position: absolute;
	top: 0; right: 0; width: 50%; height: 3px;
	background: linear-gradient(to left, var(--txp-red) 0%, transparent 100%);
	pointer-events: none;
	z-index: 2;
}
/* Bottom vignette on top of image (not needed since gradient covers it, but clean) */
.txp-home-hero::after { display: none; }
.txp-home-hero > * { position: relative; z-index: 1; }

/* Text on image hero */
.txp-home-hero .copy .txp-h1       { color: #fff; }
.txp-home-hero .copy .txp-excerpt  { color: rgba(255,255,255,.7); }
.txp-home-hero .txp-eyebrow        { color: #e8a0aa !important; opacity: 1; }
.txp-home-hero .cta-row .txp-btn.outline {
	background: transparent;
	border-color: rgba(255,255,255,.3);
	color: #fff;
}
.txp-home-hero .cta-row .txp-btn.outline:hover { background: rgba(255,255,255,.08); }
/* Trust stats — frosted glass strip */
.txp-home-hero .trust              { border-color: rgba(255,255,255,.12); }
.txp-home-hero .trust .cell {
	background: rgba(6,12,32,.52);
	backdrop-filter: blur(14px);
	-webkit-backdrop-filter: blur(14px);
	border-color: rgba(255,255,255,.12);
}
.txp-home-hero .trust .k { color: #fff; }
.txp-home-hero .trust .v { color: rgba(255,255,255,.5); }

@media (max-width: 860px) {
	.txexp-home-wrap .txp-home-hero { padding: 48px 20px 0; min-height: 560px; }
}
@media (max-width: 540px) {
	.txexp-home-wrap .txp-home-hero { padding: 40px 18px 0; min-height: 480px; }
}

/* ── 2. Section 01 (Builders) — slightly warmer cards ── */
.txexp-home-wrap .txp-home-section:not(.alt):first-of-type .txp-home-card {
	background: #fff;
}

/* ── 3. Services section — dark ink ── */
#txp-services {
	background: #0d1728;
	border: none;
}
#txp-services .txp-home-sectionhead  { border-bottom-color: rgba(255,255,255,.1); }
#txp-services .txp-home-sectionhead .left > .txp-mono {
	border-color: rgba(255,255,255,.12) !important;
	background: rgba(255,255,255,.06) !important;
	color: rgba(255,255,255,.45) !important;
}
#txp-services .txp-home-sectionhead .left > .txp-mono::before { background: var(--txp-red); }
#txp-services .txp-h1.tight  { color: #fff !important; }
#txp-services .txp-excerpt   { color: rgba(255,255,255,.55); }
/* Cards */
#txp-services .txp-home-cards          { border-color: rgba(255,255,255,.1); }
#txp-services .txp-home-card           { background: rgba(255,255,255,.04); border-color: rgba(255,255,255,.1); }
#txp-services .txp-home-card:hover     { background: rgba(255,255,255,.08); }
#txp-services .txp-home-card::before   { background: var(--txp-red); }
#txp-services .txp-home-card .txp-h2  { color: #fff; }
#txp-services .txp-home-card .body    { color: rgba(255,255,255,.5); }
#txp-services .txp-mono-tight         { color: rgba(255,255,255,.3) !important; }
/* Icon boxes — red on dark */
#txp-services .txp-icon-box {
	background: rgba(200,16,46,.14);
	border-color: rgba(200,16,46,.3);
	color: #e83050;
}
/* Future/expanding band */
#txp-services .txp-home-future            { background: rgba(255,255,255,.03); border-color: rgba(255,255,255,.1); }
#txp-services .txp-home-future .head      { border-bottom-color: rgba(255,255,255,.1); }
#txp-services .txp-home-future .txp-mono  { color: rgba(255,255,255,.4) !important; }
#txp-services .txp-home-future h4         { color: rgba(255,255,255,.9); }
#txp-services .txp-home-future li .t      { color: rgba(255,255,255,.8); }
#txp-services .txp-btn.outline {
	border-color: rgba(255,255,255,.24);
	color: rgba(255,255,255,.82);
	background: transparent;
}
#txp-services .txp-btn.outline:hover { background: rgba(255,255,255,.07); }

/* ── 4. Product catalog section — subtle cream with left accent ── */
#txp-catalog { border-left: 4px solid var(--txp-red); padding-left: 24px; }

/* ── 5. Why us section — blue-tinted light ── */
.txexp-home-wrap .txp-home-section.alt:has(.txp-home-reasons) {
	background: #edf1fb;
}
.txexp-home-wrap .txp-home-section.alt:has(.txp-home-reasons) .txp-home-reasons .cell { background: #fff; }
.txexp-home-wrap .txp-home-section.alt:has(.txp-home-reasons) .txp-home-reasons .cell .icon {
	background: rgba(46,74,138,.09);
	border-color: rgba(46,74,138,.18);
}

/* ── 6. Trust strip section — dark navy ── */
.txexp-home-wrap .txp-home-section.alt:has(.txp-home-trust-strip) {
	background: #111e3a;
	border: none;
}
.txexp-home-wrap .txp-home-section.alt:has(.txp-home-trust-strip) .txp-mono { color: rgba(255,255,255,.48) !important; }
.txexp-home-wrap .txp-home-section.alt:has(.txp-home-trust-strip) .txp-h1.tight { color: #fff !important; }
.txp-home-trust-strip .logos span {
	background: rgba(255,255,255,.07);
	border-color: rgba(255,255,255,.13);
	color: rgba(255,255,255,.82);
}

/* ── 7. Coverage section — cool blue-tinted ── */
.txexp-home-wrap .txp-home-section.alt:has(.txp-home-coverage) {
	background: #f0f4fc;
}
.txexp-home-wrap .txp-home-section.alt:has(.txp-home-coverage) .txp-home-coverage .map {
	background: #e2eaf8;
	border-color: rgba(26,43,92,.18);
}
.txexp-home-wrap .txp-home-section.alt:has(.txp-home-coverage) .txp-home-coverage .map .state {
	background: rgba(46,74,138,.11);
	border-color: rgba(46,74,138,.2);
}

/* ── Icon box color variants ── */
/* Sections 01, 03, 05: richer navy icon boxes */
.txexp-home-wrap .txp-home-section:not(#txp-services) .txp-icon-box {
	background: rgba(26,43,92,.07);
	border-color: rgba(26,43,92,.16);
}
