
/*
Theme Name:   ESI Kadence Child
Theme URI:    https://esicorp.com
Description:  ESI Technologies child theme for Kadence. Brand: Navy #0E2C49, Orange #F79340, Font: Outfit.
Author:       ESI Technologies
Author URI:   https://esicorp.com
Template:     kadence
Version:      1.8.9
License:      GNU General Public License v2 or later
License URI:  http://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  esi-kadence-child
*/

/* Design tokens loaded first — see assets/css/design-tokens.css via functions.php */

/* ═══════════════════════════════════════════
   GLOBAL RESETS & BASE
═══════════════════════════════════════════ */
html {
	scroll-behavior: smooth;
}

body {
	font-family: var(--esi-font-body);
	font-size: var(--esi-text-base);
	font-weight: var(--esi-weight-light);
	color: var(--esi-color-text);
	background-color: var(--esi-color-white);
	line-height: var(--esi-leading-normal);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

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

/* ═══════════════════════════════════════════
   FULL-WIDTH LAYOUT — GLOBAL
   Removes all Kadence boxing/container
   constraints so section backgrounds bleed
   edge to edge. Inner blocks manage their
   own max-width (1200px) independently.
═══════════════════════════════════════════ */

/* 1. Body and site wrapper: never constrain horizontally */
body, .site, #page {
	max-width: 100% !important;
	overflow-x: hidden;
}

/* 2. Kadence site container: remove boxed layout cap */
.site-container, .kadence-site-container, #wrapper, .container {
	max-width: 100% !important;
	width: 100% !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/* 3. Kadence-specific wrappers confirmed via inspector */
.content-wrap, .entry-content-wrap {
	max-width: 100% !important;
	width: 100% !important;
	padding: 0 !important;
	margin: 0 !important;
}

/* 4. Content area: full width, no padding */
#primary, .content-area, .site-content, .site-main, #main {
	max-width: 100% !important;
	width: 100% !important;
	padding: 0 !important;
	margin: 0 !important;
	float: none !important;
}

/* 4. Entry / article wrappers: full width */
article.entry, .entry, .hentry {
	max-width: 100% !important;
	width: 100% !important;
	padding: 0 !important;
	margin: 0 !important;
}

/* 5. Entry content: full width, zero padding */
.entry-content, .page .entry-content {
	max-width: 100% !important;
	width: 100% !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/* 6. Top-level block groups/covers: stretch edge to edge */
.entry-content > .wp-block-group, .entry-content > .wp-block-cover, .entry-content > .wp-block-columns, .wp-site-blocks > .wp-block-group, .wp-site-blocks > .wp-block-cover {
	max-width: 100% !important;
	width: 100% !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
	box-sizing: border-box !important;
}

/* 7. alignfull breakout (for any blocks that use it) */
.wp-block-group.alignfull, .wp-block-cover.alignfull, .wp-block-image.alignfull {
	width: 100vw !important;
	max-width: 100vw !important;
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
}

/* 8. Header and footer: full viewport width */
.site-header, .site-footer, #masthead, #colophon, .kadence-header, .wp-block-template-part {
	width: 100% !important;
	max-width: 100% !important;
}

/* 9. Inner content containers keep their 1200px max-width */
.entry-content > .wp-block-group > .wp-block-group, .entry-content > .wp-block-group > .wp-block-columns {
	max-width: 1200px;
	margin-left: auto !important;
	margin-right: auto !important;
}

/* ═══════════════════════════════════════════
   PAGE TITLE — HIDDEN ON ALL PAGES
   (Content pages use block-level headings)
═══════════════════════════════════════════ */
.page .entry-title, .page .entry-header {
	display: none;
}

/* ═══════════════════════════════════════════
   FOCUS STATES — ACCESSIBILITY
═══════════════════════════════════════════ */
:focus-visible {
	outline: 3px solid var(--esi-color-accent);
	outline-offset: 3px;
	border-radius: 2px;
}

a:focus-visible, button:focus-visible, .wp-block-button__link:focus-visible {
	outline: 3px solid var(--esi-color-accent);
	outline-offset: 3px;
}

/* ═══════════════════════════════════════════
   LINKS
═══════════════════════════════════════════ */
a {
	color: var(--esi-color-primary);
	text-decoration: none;
	transition: color var(--esi-transition-base);
}

a:hover, a:focus {
	color: var(--esi-color-accent);
	text-decoration: underline;
}

/* ═══════════════════════════════════════════
   HEADINGS — TYPE SCALE
═══════════════════════════════════════════ */
h1, h2, h3, h4, h5, h6, .wp-block-heading {
	font-family: var(--esi-font-heading);
	color: var(--esi-color-primary);
	line-height: var(--esi-leading-tight);
	font-weight: var(--esi-weight-bold);
	margin-top: 0;
}

h1 {
	font-size: clamp(2.25rem, 5vw, var(--esi-text-7xl));
	font-weight: var(--esi-weight-bold);
}

h2 {
	font-size: clamp(1.75rem, 3vw, var(--esi-text-4xl));
	font-weight: var(--esi-weight-semibold);
}

h3 {
	font-size: clamp(1.25rem, 2vw, var(--esi-text-2xl));
	font-weight: var(--esi-weight-semibold);
}

h4 {
	font-size: var(--esi-text-xl);
	font-weight: var(--esi-weight-semibold);
}

h5 {
	font-size: var(--esi-text-lg);
	font-weight: var(--esi-weight-medium);
}

h6 {
	font-size: var(--esi-text-base);
	font-weight: var(--esi-weight-medium);
}

p {
	font-size: var(--esi-text-base);
	line-height: var(--esi-leading-normal);
	margin-top: 0;
}

/* ═══════════════════════════════════════════
   HERO SECTION — HOMEPAGE
═══════════════════════════════════════════ */
.esi-hero {
	position: relative;
	min-height: 680px;
	display: flex;
	align-items: center;
	overflow: hidden;
	background-color: var(--esi-color-primary);
	/*
   * HERO BACKGROUND IMAGE
   * Replace the URL below with your chosen Unsplash image.
   * Recommended search: "access control office building" or "commercial security camera"
   * Format: url('https://images.unsplash.com/photo-PHOTO_ID?w=2400&q=80&auto=format&fit=crop')
   *
   * The linear-gradient provides the navy overlay at 78% opacity.
   * Even without an image, the navy background looks correct.
   */
	background-image: linear-gradient(135deg, rgba(14, 44, 73, .88) 0%, rgba(14, 44, 73, .72) 100%), url("https://cdn-ildkkml.nitrocdn.com/ELYYhZGWHEtrYxSXdbCHJugMebobtgEw/assets/images/optimized/rev-19a45dd/esicorp.com/wp-content/uploads/2026/04/commercial-security-system-installation-colorado.jpg");
	background-size: cover;
	background-position: center center;
	color: var(--esi-color-white);
}

.esi-hero.nitro-lazy {
	background-image: none !important;
}

.esi-hero .wp-block-group {
	position: relative;
	z-index: 2;
	width: 100%;
}

/* H1 inside hero — 72px desktop, scales to 44px tablet, 36px mobile */
.esi-hero h1, .esi-hero .wp-block-heading[level="1"], .esi-hero h1.wp-block-heading {
	font-size: 4.5rem !important;
	/* 72px */
	font-weight: var(--esi-weight-bold) !important;
	line-height: 1.08 !important;
	color: #fff !important;
	letter-spacing: -.025em;
	margin-top: 1rem !important;
	margin-bottom: 1.5rem !important;
}

/* Location tag → H1 gap: at least 16px */
.esi-hero .esi-section__eyebrow {
	margin-bottom: 1.25rem !important;
}

.esi-hero p {
	font-size: var(--esi-text-lg);
	line-height: 1.7;
	color: rgba(255, 255, 255, .88);
}

/* Location tag line above H1 */
.esi-hero .esi-location-tags, .esi-hero p:first-of-type {
	letter-spacing: .06em;
	margin-bottom: var(--esi-space-5) !important;
}

/* ═══════════════════════════════════════════
   PAGE HERO — INTERIOR PAGES
═══════════════════════════════════════════ */
.esi-page-hero {
	background-color: var(--esi-color-primary);
	color: var(--esi-color-white);
}

.esi-page-hero h1 {
	color: #fff !important;
	font-size: clamp(2rem, 4vw, var(--esi-text-5xl)) !important;
	font-weight: var(--esi-weight-bold) !important;
	line-height: 1.1 !important;
	margin-bottom: var(--esi-space-4) !important;
}

.esi-page-hero p {
	color: rgba(255, 255, 255, .85) !important;
	font-size: var(--esi-text-lg) !important;
}

/* ═══════════════════════════════════════════
   BUTTONS — PRIMARY
═══════════════════════════════════════════ */
.wp-block-button .wp-block-button__link, .esi-btn, .esi-btn-primary .wp-block-button__link {
	background-color: var(--esi-color-accent) !important;
	color: #fff !important;
	border: none !important;
	border-radius: var(--esi-radius-md) !important;
	font-family: var(--esi-font-heading) !important;
	font-weight: var(--esi-weight-bold) !important;
	font-size: 1rem !important;
	padding: .9rem 1.75rem !important;
	min-height: 52px;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	line-height: 1.2 !important;
	transition: background-color .2s ease, transform .15s ease, box-shadow .2s ease;
	text-decoration: none !important;
	cursor: pointer;
	letter-spacing: .01em;
}

.wp-block-button .wp-block-button__link:hover, .esi-btn:hover, .esi-btn-primary .wp-block-button__link:hover {
	background-color: var(--esi-color-accent-dark) !important;
	color: #fff !important;
	text-decoration: none !important;
	transform: translateY(-1px);
	box-shadow: 0 4px 16px rgba(247, 147, 64, .35);
}

/* ═══════════════════════════════════════════
   BUTTONS — SECONDARY / GHOST (on dark bg)
═══════════════════════════════════════════ */
.esi-btn-ghost .wp-block-button__link {
	background-color: transparent !important;
	color: #fff !important;
	border: 2px solid rgba(255, 255, 255, .75) !important;
	border-radius: var(--esi-radius-md) !important;
	font-family: var(--esi-font-heading) !important;
	font-weight: var(--esi-weight-semibold) !important;
	font-size: 1rem !important;
	padding: .9rem 1.75rem !important;
	min-height: 52px;
	display: inline-flex !important;
	align-items: center;
	transition: background-color .2s ease, color .2s ease, border-color .2s ease;
	text-decoration: none !important;
	cursor: pointer;
}

.esi-btn-ghost .wp-block-button__link:hover {
	background-color: #fff !important;
	color: var(--esi-color-primary) !important;
	border-color: #fff !important;
	text-decoration: none !important;
}

/* ═══════════════════════════════════════════
   BUTTONS — SECONDARY (light bg)
═══════════════════════════════════════════ */
.esi-btn-secondary {
	background-color: transparent !important;
	color: var(--esi-color-primary) !important;
	border: 2px solid var(--esi-color-primary) !important;
	border-radius: var(--esi-radius-md) !important;
	font-family: var(--esi-font-heading) !important;
	font-weight: var(--esi-weight-semibold) !important;
	font-size: 1rem !important;
	padding: calc(.9rem - 2px) calc(1.75rem - 2px) !important;
	min-height: 52px;
	display: inline-flex !important;
	align-items: center;
	transition: background-color .2s ease, color .2s ease;
	text-decoration: none !important;
}

.esi-btn-secondary:hover {
	background-color: var(--esi-color-primary) !important;
	color: #fff !important;
	text-decoration: none !important;
}

/* ═══════════════════════════════════════════
   SERVICE CARDS
═══════════════════════════════════════════ */
.esi-card {
	background: var(--esi-color-white);
	border: 1px solid var(--esi-color-border);
	border-radius: var(--esi-radius-lg);
	padding: var(--esi-space-8);
	box-shadow: var(--esi-shadow-sm);
	transition: box-shadow .25s ease, transform .25s ease;
	display: flex;
	flex-direction: column;
	height: 100%;
}

.esi-card:hover {
	box-shadow: var(--esi-shadow-md);
	transform: translateY(-2px);
}

/* Highlighted card — orange top accent border */
.esi-card--featured {
	border-top: 3px solid var(--esi-color-accent);
}

.esi-card__icon {
	color: var(--esi-color-accent);
	margin-bottom: var(--esi-space-5);
	font-size: 2.5rem;
	width: 48px;
	height: 48px;
	display: flex;
	align-items: center;
}

.esi-card__icon svg {
	width: 48px;
	height: 48px;
	stroke: var(--esi-color-accent);
}

.esi-card__title {
	font-size: var(--esi-text-xl);
	font-weight: var(--esi-weight-semibold);
	margin-bottom: var(--esi-space-3);
	color: var(--esi-color-primary);
}

.esi-card__body {
	color: var(--esi-color-text-muted);
	font-size: var(--esi-text-base);
	line-height: 1.7;
	flex: 1;
}

.esi-card__link {
	margin-top: var(--esi-space-5);
	font-weight: var(--esi-weight-semibold);
	font-size: var(--esi-text-sm);
	color: var(--esi-color-primary);
	display: inline-flex;
	align-items: center;
	gap: 4px;
	transition: color var(--esi-transition-base), gap var(--esi-transition-base);
}

.esi-card__link:hover {
	color: var(--esi-color-accent);
	text-decoration: none;
	gap: 8px;
}

/* ═══════════════════════════════════════════
   SECTION BACKGROUNDS
═══════════════════════════════════════════ */
.esi-bg-navy {
	background-color: var(--esi-color-primary);
	color: var(--esi-color-white);
}

.esi-bg-navy h1, .esi-bg-navy h2, .esi-bg-navy h3, .esi-bg-navy p, .esi-bg-navy li {
	color: var(--esi-color-white);
}

.esi-bg-light {
	background-color: var(--esi-color-light);
}

.esi-bg-white {
	background-color: var(--esi-color-white);
}

/* ═══════════════════════════════════════════
   SECTION UTILITY
═══════════════════════════════════════════ */
.esi-section {
	padding: var(--esi-space-20) 0;
}

.esi-section--sm {
	padding: var(--esi-space-12) 0;
}

.esi-section--lg {
	padding: var(--esi-space-28) 0;
}

/* Eyebrow label above section headings */
.esi-section__eyebrow, .esi-eyebrow {
	display: block;
	font-size: var(--esi-text-xs);
	font-weight: var(--esi-weight-semibold);
	color: var(--esi-color-accent);
	text-transform: uppercase;
	letter-spacing: .1em;
	margin-bottom: var(--esi-space-3);
}

.esi-section__title {
	font-size: clamp(1.75rem, 3vw, var(--esi-text-4xl));
	font-weight: var(--esi-weight-semibold);
	margin-bottom: var(--esi-space-4);
	color: var(--esi-color-primary);
}

.esi-section__subtitle {
	font-size: var(--esi-text-lg);
	color: var(--esi-color-text-muted);
	max-width: 640px;
	line-height: 1.7;
	margin-bottom: var(--esi-space-10);
}

/* Orange accent bar alternative to eyebrow */
.esi-section__accent-bar {
	display: block;
	width: 48px;
	height: 4px;
	background-color: var(--esi-color-accent);
	border-radius: 2px;
	margin-bottom: var(--esi-space-5);
}

/* ═══════════════════════════════════════════
   STATS / WHY ESI SECTION
═══════════════════════════════════════════ */
.esi-stats {
	background-color: var(--esi-color-primary);
	padding: var(--esi-space-20) 0;
}

.esi-stat {
	text-align: center;
	padding: var(--esi-space-6);
}

.esi-stat__number {
	font-size: clamp(3.5rem, 7vw, 5rem);
	font-weight: var(--esi-weight-bold);
	color: var(--esi-color-accent);
	line-height: 1;
	margin-bottom: var(--esi-space-3);
	font-family: var(--esi-font-heading);
	letter-spacing: -.02em;
}

.esi-stat__label {
	font-size: var(--esi-text-base);
	color: rgba(255, 255, 255, .8);
	font-weight: var(--esi-weight-regular);
	line-height: 1.5;
}

/* ═══════════════════════════════════════════
   TRUST BAR / LOGO STRIP
═══════════════════════════════════════════ */
.esi-trust-bar {
	background-color: var(--esi-color-white);
	padding: var(--esi-space-8) 0;
	border-top: 1px solid var(--esi-color-border);
	border-bottom: 1px solid var(--esi-color-border);
}

.esi-trust-bar__label {
	font-size: var(--esi-text-xs);
	font-weight: var(--esi-weight-semibold);
	color: var(--esi-color-text-subtle);
	text-transform: uppercase;
	letter-spacing: .1em;
	margin-bottom: var(--esi-space-4);
}

/* ═══════════════════════════════════════════
   BOTTOM CTA BANNER
   Navy background, orange accent headline
═══════════════════════════════════════════ */
.esi-cta-banner {
	background-color: var(--esi-color-primary);
	padding: var(--esi-space-20) 0;
	text-align: center;
}

.esi-cta-banner h2, .esi-cta-banner .esi-cta-banner__title {
	color: #fff !important;
	font-size: clamp(1.75rem, 3.5vw, var(--esi-text-4xl)) !important;
	font-weight: var(--esi-weight-bold) !important;
	margin-bottom: var(--esi-space-4) !important;
}

.esi-cta-banner p {
	color: rgba(255, 255, 255, .82) !important;
	font-size: var(--esi-text-lg) !important;
	max-width: 600px;
	margin: 0 auto var(--esi-space-8);
	line-height: 1.7;
}

/* Override orange background blocks at bottom of pages */

/* CTA sections: HTML uses #F79340 background with navy button, but the
   intended design is navy background with orange button. CSS enforces this. */
.wp-block-group[style*="background-color:#F79340"], .wp-block-group[style*="background-color:#f79340"] {
	background-color: #0e2c49 !important;
}

.wp-block-group[style*="background-color:#F79340"] h2, .wp-block-group[style*="background-color:#F79340"] p, .wp-block-group[style*="background-color:#f79340"] h2, .wp-block-group[style*="background-color:#f79340"] p {
	color: #fff !important;
}

.wp-block-group[style*="background-color:#F79340"] .wp-block-button__link, .wp-block-group[style*="background-color:#f79340"] .wp-block-button__link {
	background-color: #f79340 !important;
	color: #fff !important;
}

/* ═══════════════════════════════════════════
   TWO OFFICES SECTION
═══════════════════════════════════════════ */
.esi-office-card {
	border: 2px solid var(--esi-color-border);
	border-radius: var(--esi-radius-lg);
	padding: var(--esi-space-8);
	background-color: var(--esi-color-white);
	box-shadow: var(--esi-shadow-sm);
	height: 100%;
}

.esi-office-card h3 {
	font-size: var(--esi-text-xl);
	font-weight: var(--esi-weight-semibold);
	margin-bottom: var(--esi-space-3);
	color: var(--esi-color-primary);
}

.esi-office-card__phone {
	font-size: var(--esi-text-3xl) !important;
	font-weight: var(--esi-weight-bold) !important;
	color: var(--esi-color-primary) !important;
	display: block;
	margin: var(--esi-space-3) 0 var(--esi-space-4) !important;
	text-decoration: none;
	letter-spacing: -.01em;
}

.esi-office-card__phone:hover {
	color: var(--esi-color-accent) !important;
	text-decoration: none;
}

/* Make phone numbers in office blocks big and prominent */
.wp-block-group[style*="border:2px solid"] p a[href^="tel:"] {
	font-size: 1.875rem !important;
	font-weight: var(--esi-weight-bold) !important;
}

/* ═══════════════════════════════════════════
   FORMS
═══════════════════════════════════════════ */
.esi-form input[type="text"], .esi-form input[type="email"], .esi-form input[type="tel"], .esi-form select, .esi-form textarea, .wpcf7-form input[type="text"], .wpcf7-form input[type="email"], .wpcf7-form input[type="tel"], .wpcf7-form select, .wpcf7-form textarea {
	width: 100%;
	border: 1.5px solid var(--esi-color-border);
	border-radius: var(--esi-radius-sm);
	padding: .75rem 1rem;
	font-family: var(--esi-font-body);
	font-size: var(--esi-text-base);
	font-weight: var(--esi-weight-regular);
	color: var(--esi-color-text);
	background-color: var(--esi-color-white);
	transition: border-color .2s ease, box-shadow .2s ease;
}

.wpcf7-form input:focus, .wpcf7-form select:focus, .wpcf7-form textarea:focus {
	outline: none;
	border-color: var(--esi-color-primary);
	box-shadow: 0 0 0 3px rgba(14, 44, 73, .12);
}

/* ═══════════════════════════════════════════
   CHECKLIST
═══════════════════════════════════════════ */
.esi-checklist {
	list-style: none;
	padding: 0;
	margin: 0;
}

.esi-checklist li {
	padding: var(--esi-space-2) 0 var(--esi-space-2) var(--esi-space-8);
	position: relative;
	color: var(--esi-color-text);
	font-size: var(--esi-text-base);
	line-height: 1.8;
}

.esi-checklist li::before {
	content: "✓";
	position: absolute;
	left: 0;
	color: var(--esi-color-accent);
	font-weight: var(--esi-weight-bold);
	font-size: var(--esi-text-lg);
}

/* ═══════════════════════════════════════════
   SCROLL-TRIGGERED ANIMATIONS
═══════════════════════════════════════════ */
.esi-fade-in {
	opacity: 0;
	transform: translateY(24px);
	transition: opacity .45s ease, transform .45s ease;
}

.esi-fade-in.is-visible {
	opacity: 1;
	transform: translateY(0);
}

/* Delay variants for staggered children */
.esi-fade-in--d1 {
	transition-delay: .1s;
}

.esi-fade-in--d2 {
	transition-delay: .2s;
}

.esi-fade-in--d3 {
	transition-delay: .3s;
}

.esi-fade-in--d4 {
	transition-delay: .4s;
}

/* ═══════════════════════════════════════════
   HEADER — SCROLLED STATE
═══════════════════════════════════════════ */
.is-scrolled {
	box-shadow: 0 2px 20px rgba(14, 44, 73, .12);
}

/* ═══════════════════════════════════════════
   RESPONSIVE — TABLET (768px)
═══════════════════════════════════════════ */
@media (max-width: 1024px) {
	.esi-hero h1, .esi-hero h1.wp-block-heading {
		font-size: 2.75rem !important;
	}
}

@media (max-width: 768px) {
	/* Prevent all top-level constrained sections from bleeding to screen edges.
     Excludes .esi-hero which has its own padding. Nested blocks (cards, columns)
     don't use is-layout-constrained so they are unaffected. */
	.wp-block-group.is-layout-constrained:not(.esi-hero) {
		padding-left: 1.25rem !important;
		padding-right: 1.25rem !important;
	}
	
	.esi-hero {
		min-height: 520px;
		padding-top: 3.5rem !important;
		padding-left: 1.25rem !important;
		padding-right: 1.25rem !important;
	}
	
	.esi-hero h1, .esi-hero h1.wp-block-heading {
		font-size: 2.5rem !important;
	}
	
	.esi-page-hero {
		padding: var(--esi-space-16) 0;
	}
	
	.esi-page-hero h1 {
		font-size: 2rem !important;
	}
	
	.esi-section {
		padding: var(--esi-space-16) 0;
	}
	
	.esi-section__title {
		font-size: var(--esi-text-3xl);
	}
	
	.esi-stat__number {
		font-size: 3.5rem;
	}
	
	.esi-cta-banner h2 {
		font-size: var(--esi-text-3xl) !important;
	}
}

/* ═══════════════════════════════════════════
   RESPONSIVE — MOBILE (480px)
═══════════════════════════════════════════ */
@media (max-width: 480px) {
	.esi-hero {
		min-height: 480px;
	}
	
	.esi-hero h1, .esi-hero h1.wp-block-heading {
		font-size: 2.25rem !important;
		/* 36px */
		letter-spacing: -.01em;
	}
	
	.esi-page-hero h1 {
		font-size: 1.875rem !important;
	}
	
	.esi-card {
		padding: var(--esi-space-6);
	}
	
	.esi-stat {
		padding: var(--esi-space-4);
	}
	
	.esi-stat__number {
		font-size: 3rem;
	}
	
	.wp-block-button .wp-block-button__link, .esi-btn-primary .wp-block-button__link {
		width: 100%;
		text-align: center;
		justify-content: center;
	}
}

/* ═══════════════════════════════════════════
   RESPONSIVE — LARGE (1440px+)
═══════════════════════════════════════════ */
@media (min-width: 1440px) {
	.esi-hero {
		min-height: 760px;
	}
}

/* ═══════════════════════════════════════════
   FIX 1: HERO — TARGETED REFINEMENTS
═══════════════════════════════════════════ */

/* Ghost button: enforce white border + text, match primary height */
.esi-btn-ghost .wp-block-button__link {
	border: 2px solid #fff !important;
	color: #fff !important;
	background-color: transparent !important;
	min-height: 52px !important;
	font-size: 1rem !important;
	font-weight: 700 !important;
	padding: .9rem 1.75rem !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
}

.esi-btn-ghost .wp-block-button__link:hover {
	background-color: #fff !important;
	color: var(--esi-color-primary) !important;
	border-color: #fff !important;
	text-decoration: none !important;
}

/* Hero buttons: force identical height regardless of border/padding differences */
.esi-hero .wp-block-buttons .wp-block-button__link {
	height: 52px !important;
	box-sizing: border-box !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	font-size: 1rem !important;
	font-weight: 700 !important;
	padding-left: 1.75rem !important;
	padding-right: 1.75rem !important;
}

/* ═══════════════════════════════════════════
   FIX 2: SERVICE CARDS — TARGETED REFINEMENTS
═══════════════════════════════════════════ */

/* Section background: light gray to lift white cards */
.esi-section-services {
	background-color: #f5f7fa !important;
}

/* Card: 36px padding, refined shadow */
.esi-section-services .wp-block-group.esi-card {
	padding: 36px !important;
	border: 1px solid #e2e8f0 !important;
	border-radius: 8px !important;
	background-color: #fff !important;
	box-shadow: 0 2px 16px rgba(0, 0, 0, .08) !important;
	transition: box-shadow 250ms ease, transform 250ms ease !important;
}

.esi-section-services .wp-block-group.esi-card:hover {
	box-shadow: 0 6px 28px rgba(0, 0, 0, .14) !important;
	transform: translateY(-3px) !important;
}

/* MSA featured card: top-only orange border */
.esi-section-services .wp-block-group.esi-card.esi-card--featured {
	border: 1px solid #e2e8f0 !important;
	border-top: 3px solid #f79340 !important;
	background-color: #fff !important;
}

/* Equal-height cards: stretch columns and make inner card fill height */
.esi-section-services .wp-block-columns {
	align-items: stretch !important;
}

.esi-section-services .wp-block-columns .wp-block-column {
	display: flex !important;
	flex-direction: column !important;
}

.esi-section-services .wp-block-columns .wp-block-column > .wp-block-group.esi-card {
	flex: 1 !important;
	display: flex !important;
	flex-direction: column !important;
}

/* Card icon SVGs */
.esi-card svg.esi-icon {
	display: block;
	width: 48px;
	height: 48px;
	margin-bottom: 20px;
	flex-shrink: 0;
}

/* Card heading: 18px SemiBold navy */
.esi-section-services .esi-card h3.wp-block-heading {
	font-size: 1.125rem !important;
	/* 18px */
	font-weight: 600 !important;
	color: #0e2c49 !important;
	margin-bottom: 10px !important;
	margin-top: 0 !important;
}

/* Card body: 15px Regular muted */
.esi-section-services .esi-card p.has-text-color {
	font-size: .9375rem !important;
	/* 15px */
	line-height: 1.7 !important;
}

/* Card body: flex-grow so all cards in a row reach the same height */
.esi-section-services .wp-block-group.esi-card {
	display: flex !important;
	flex-direction: column !important;
}

/* Description paragraph: expands to fill available space */
.esi-section-services .wp-block-group.esi-card > p.has-text-color {
	flex: 1 !important;
}

/* Link paragraph: pinned to bottom */
.esi-section-services .wp-block-group.esi-card > p:last-of-type {
	margin-top: auto !important;
	padding-top: 12px !important;
	flex-shrink: 0 !important;
}

/* Card links: 14px SemiBold orange */
.esi-section-services .esi-card p:last-of-type a {
	font-size: .875rem !important;
	/* 14px */
	font-weight: 600 !important;
	color: #f79340 !important;
	text-decoration: none;
}

.esi-section-services .esi-card p:last-of-type a:hover {
	color: #e07e2a !important;
	text-decoration: underline;
}

/* ═══════════════════════════════════════════
   FIX 3: WHY ESI — TARGETED REFINEMENTS
═══════════════════════════════════════════ */

/* Section: 100px vertical padding */
.esi-why-section {
	padding-top: 100px !important;
	padding-bottom: 100px !important;
}

/* Inner card: inline styles applied directly on .esi-why-card wrapper in HTML (Approach 3) */

/* CSS here only handles column divider — card bg/border/radius/shadow is inline */

/* Vertical divider between left and right columns */
.esi-why-card .wp-block-column:first-child {
	padding-right: 48px !important;
	border-right: 1px solid #e5e9ef !important;
}

.esi-why-card .wp-block-column:last-child {
	padding-left: 48px !important;
}

/* Stat numbers: bold orange */
.esi-stat .has-text-color:first-of-type {
	font-size: clamp(2rem, 3.5vw, 3rem) !important;
	font-weight: 700 !important;
	color: #f79340 !important;
	line-height: 1 !important;
	letter-spacing: -.02em !important;
}

/* Stat labels: 11px uppercase spaced */
.esi-stat .has-text-color:last-of-type {
	font-size: .6875rem !important;
	/* 11px */
	text-transform: uppercase !important;
	letter-spacing: .05em !important;
	color: #666 !important;
	font-weight: 400 !important;
	line-height: 1.4 !important;
}

/* Stat boxes: light border so they read as cards on white background */
.esi-why-card .esi-stat {
	border: 1px solid #e5e9ef !important;
}

/* Checklist: 16px, 1.9 line-height, 8px item gap */
.esi-checklist li {
	font-size: 1rem !important;
	/* 16px */
	line-height: 1.9 !important;
	padding-bottom: 8px !important;
}

/* Why ESI button: orange (overrides navy inline style) */
.esi-why-section .wp-block-buttons .wp-block-button__link {
	background-color: #f79340 !important;
	color: #fff !important;
	font-weight: 700 !important;
}

.esi-why-section .wp-block-buttons .wp-block-button__link:hover {
	background-color: #e07e2a !important;
	color: #fff !important;
}

/* Why ESI mobile: collapse divider and card padding */
@media (max-width: 768px) {
	.esi-why-card {
		padding: 28px !important;
	}
	
	.esi-why-card .wp-block-column:first-child {
		padding-right: 0 !important;
		border-right: none !important;
		padding-bottom: 32px !important;
		border-bottom: 1px solid #e5e9ef !important;
		margin-bottom: 32px !important;
	}
	
	.esi-why-card .wp-block-column:last-child {
		padding-left: 0 !important;
	}
	
	.esi-stat .has-text-color:first-of-type {
		font-size: 2rem !important;
	}
	
	/* Stats nested columns: single column on mobile */
	.esi-why-card .wp-block-column:last-child > .wp-block-columns {
		grid-template-columns: 1fr 1fr !important;
		column-gap: 20px !important;
	}
}

/* ═══════════════════════════════════════════
   FIX 1: STATS — 2x2 GRID STRUCTURE
   Nested columns inside Why ESI right column
═══════════════════════════════════════════ */

/* Remove card styling from nested stats columns, convert to CSS grid */
.esi-why-card .wp-block-column:last-child > .wp-block-columns {
	display: grid !important;
	grid-template-columns: repeat(2, minmax(180px, 1fr)) !important;
	column-gap: 40px !important;
	row-gap: 0 !important;
	border: none !important;
	border-radius: 0 !important;
	padding: 0 !important;
	background-color: transparent !important;
	position: static !important;
}

/* Each stat column: flex column with 32px gap between stat boxes */
.esi-why-card .wp-block-column:last-child > .wp-block-columns > .wp-block-column {
	display: flex !important;
	flex-direction: column !important;
	gap: 32px !important;
	min-width: 180px !important;
	/* Reset border/padding inherited from outer column rules */
	padding-right: 0 !important;
	padding-left: 0 !important;
	border-right: none !important;
}

/* Stat grid: 2-column CSS grid so rows auto-equalize height */
.esi-stat-grid {
	display: grid !important;
	grid-template-columns: 1fr 1fr;
	grid-auto-rows: 1fr;
	gap: 16px;
	align-items: stretch;
}

.esi-stat-grid .esi-stat {
	margin-top: 0 !important;
	align-self: stretch;
	height: 100%;
	box-sizing: border-box;
	display: flex !important;
	flex-direction: column;
	justify-content: center;
}

/* Equal-height industry cards (security-systems page) */
.wp-block-columns:has(.esi-industry-card) {
	align-items: stretch !important;
}

.esi-industry-card {
	height: 100%;
	box-sizing: border-box;
}

/* Equal-height location cards (why-esi page) */
.esi-location-cards {
	align-items: stretch !important;
}

.esi-location-card {
	height: 100%;
	display: flex;
	flex-direction: column;
	align-items: flex-start !important;
	text-align: left !important;
	box-sizing: border-box;
}

.esi-location-card > p:last-of-type {
	margin-top: auto !important;
}

.esi-location-card .wp-block-buttons {
	justify-content: flex-start !important;
}

/* Equal-height service cards (security-systems page) */
.wp-block-columns:has(.esi-service-card) {
	align-items: stretch !important;
}

.esi-service-card {
	height: 100%;
	box-sizing: border-box;
	display: flex !important;
	flex-direction: column;
}

.esi-service-card > p:last-child {
	margin-top: auto !important;
	padding-top: 1.5rem;
}

/* Equal-height stat callout cards (why-esi page) */
.wp-block-columns:has(.esi-stat-callout) {
	align-items: stretch !important;
}

.esi-stat-callout {
	height: 100%;
	box-sizing: border-box;
	display: flex !important;
	flex-direction: column;
}

/* ═══════════════════════════════════════════
   FIX 3: SOCIAL PROOF BAR — 13px NOWRAP
═══════════════════════════════════════════ */
.esi-trust-bar .wp-block-columns .wp-block-column p {
	font-size: .8125rem !important;
	/* 13px */
	white-space: nowrap !important;
	margin-bottom: 0 !important;
}

/* Client logos in trust bar */
.esi-client-logo {
	margin: 0 !important;
}

.esi-client-logo img {
	height: 48px !important;
	width: auto !important;
	max-width: 100% !important;
	object-fit: contain !important;
	display: block !important;
	margin: 0 auto !important;
	filter: grayscale(100%) !important;
	opacity: .65 !important;
	transition: filter .2s ease, opacity .2s ease !important;
}

.esi-client-logo img:hover {
	filter: grayscale(0%) !important;
	opacity: 1 !important;
}

/* ═══════════════════════════════════════════
   FIX 4: MAIN NAVIGATION
   Sticky header, transparent over hero,
   dropdowns, CTA button, mobile hamburger
═══════════════════════════════════════════ */

/* ── Header inner padding — keeps logo + CTA off screen edges ── */

/* Kadence row container inner is the flex parent of logo + nav + CTA */
.site-header-row-container-inner, .site-header-main-wrap, .header-main-container-inner {
	padding-left: 32px !important;
	padding-right: 32px !important;
	box-sizing: border-box !important;
}

/* ── Header base ─────────────────────────── */
.site-header, #masthead, .kadence-header {
	position: sticky !important;
	top: 0 !important;
	z-index: 9999 !important;
	transition: background-color .3s ease, box-shadow .3s ease, border-color .3s ease !important;
	background-color: #fff !important;
	border-bottom: 1px solid #e5e9ef !important;
	padding-left: 32px !important;
	padding-right: 32px !important;
	box-sizing: border-box !important;
}

/* Scrolled state — shadow added on scroll */
.site-header.is-scrolled, #masthead.is-scrolled, .kadence-header.is-scrolled {
	background-color: #fff !important;
	border-bottom-color: #e5e9ef !important;
	box-shadow: 0 2px 20px rgba(14, 44, 73, .12) !important;
}

/* Logo area */
.site-header .site-logo img, .site-header .custom-logo, .kadence-header .site-logo img, .kadence-header .custom-logo {
	height: 44px !important;
	width: auto !important;
}

/* ── Navigation wrapper ────────────────────── */
.primary-navigation, #site-navigation, .kadence-navigation {
	display: flex;
	align-items: center;
}

/* ── Top-level menu ──────────────────────── */

/* :not(.sub-menu) keeps sub-menus untouched so Kadence can show/hide them */
.primary-navigation ul.menu, .primary-navigation ul.nav-menu, #site-navigation ul:not(.sub-menu) {
	display: flex !important;
	align-items: center !important;
	list-style: none !important;
	margin: 0 !important;
	padding: 0 !important;
	gap: 0 !important;
}

.primary-navigation ul.menu > li, .primary-navigation ul.nav-menu > li, #site-navigation ul:not(.sub-menu) > li {
	position: relative !important;
	margin: 0 !important;
}

/* Top-level links */
.primary-navigation ul.menu > li > a, .primary-navigation ul.nav-menu > li > a, #site-navigation ul:not(.sub-menu) > li > a {
	display: flex !important;
	align-items: center !important;
	padding: 0 1rem !important;
	height: 72px !important;
	font-family: var(--esi-font-heading) !important;
	font-size: .9375rem !important;
	/* 15px */
	font-weight: 500 !important;
	color: #0e2c49 !important;
	text-decoration: none !important;
	white-space: nowrap !important;
	transition: color .2s ease !important;
	gap: 4px;
}

/* Kadence provides its own dropdown toggle button — we do not add a second one */

/* Hover/active */
.primary-navigation ul.menu > li > a:hover, #site-navigation ul:not(.sub-menu) > li > a:hover {
	color: #f79340 !important;
	text-decoration: none !important;
}

/* ── Dropdown menus ──────────────────────── */

/* Kadence controls show/hide — we only style the appearance */
.primary-navigation .sub-menu, .kadence-navigation .sub-menu, #site-navigation .sub-menu {
	background-color: #fff !important;
	border: 1px solid #e5e9ef !important;
	border-radius: 8px !important;
	box-shadow: 0 8px 32px rgba(14, 44, 73, .14) !important;
	min-width: 220px !important;
	padding: 8px 0 !important;
	list-style: none !important;
}

/* Two-column list (used on Denver metro service area) */
.esi-two-col-list {
	column-count: 2 !important;
	column-gap: 2rem !important;
	padding-left: 1.25rem !important;
}

.esi-two-col-list li {
	break-inside: avoid !important;
}

/* Active/current page item in dropdown — ensure text is readable */
#site-navigation .sub-menu .current-menu-item > a, #site-navigation .sub-menu .current_page_item > a, #site-navigation .sub-menu .current-menu-ancestor > a {
	color: #fff !important;
	background-color: #0e2c49 !important;
}

/* Locations dropdown (3rd nav item) — 3 columns for 30 cities */
#site-navigation ul:not(.sub-menu) > li:nth-child(3) > .sub-menu {
	column-count: 3 !important;
	column-gap: 0 !important;
	min-width: 560px !important;
	padding: 8px 0 !important;
}

#site-navigation ul:not(.sub-menu) > li:nth-child(3) > .sub-menu > li {
	break-inside: avoid !important;
}

/* Dropdown items */
.primary-navigation .sub-menu li a, .kadence-navigation .sub-menu li a, #site-navigation .sub-menu li a {
	display: block !important;
	padding: .5rem 1.25rem !important;
	font-size: .875rem !important;
	font-weight: 400 !important;
	color: #0e2c49 !important;
	text-decoration: none !important;
	white-space: nowrap !important;
}

.primary-navigation .sub-menu li a:hover, .kadence-navigation .sub-menu li a:hover, #site-navigation .sub-menu li a:hover {
	background-color: #f5f7fa !important;
	color: #f79340 !important;
	text-decoration: none !important;
}

/* ── CTA button in nav ───────────────────── */
.primary-navigation ul.menu > li.esi-nav-cta > a, #site-navigation ul:not(.sub-menu) > li.esi-nav-cta > a {
	background-color: #f79340 !important;
	color: #fff !important;
	border-radius: 6px !important;
	padding: .6rem 1.25rem !important;
	height: auto !important;
	font-weight: 700 !important;
	font-size: .9375rem !important;
	margin-left: 1rem !important;
	transition: background-color .2s ease, transform .15s ease !important;
}

.primary-navigation ul.menu > li.esi-nav-cta > a:hover, #site-navigation ul:not(.sub-menu) > li.esi-nav-cta > a:hover {
	background-color: #e07e2a !important;
	color: #fff !important;
	transform: translateY(-1px) !important;
}

/* ── Mobile nav toggle ───────────────────── */
.esi-mobile-toggle {
	display: none;
	flex-direction: column;
	justify-content: space-between;
	width: 28px;
	height: 20px;
	background: none;
	border: none;
	cursor: pointer;
	padding: 0;
	gap: 5px;
	-webkit-tap-highlight-color: transparent;
	outline: none;
}

.esi-mobile-toggle, .esi-mobile-toggle:hover, .esi-mobile-toggle:focus, .esi-mobile-toggle:focus-visible, .esi-mobile-toggle:active {
	outline: none !important;
	box-shadow: none !important;
	background: none !important;
	background-color: transparent !important;
	-webkit-appearance: none !important;
	appearance: none !important;
}

.esi-mobile-toggle span {
	display: block;
	height: 2px;
	background-color: #0e2c49;
	border-radius: 2px;
	transition: transform .3s ease, opacity .3s ease;
}

.esi-mobile-toggle.is-open span:nth-child(1) {
	transform: translateY(7px) rotate(45deg);
}

.esi-mobile-toggle.is-open span:nth-child(2) {
	opacity: 0;
}

.esi-mobile-toggle.is-open span:nth-child(3) {
	transform: translateY(-7px) rotate(-45deg);
}

/* ── Mobile drawer ───────────────────────── */
.esi-mobile-nav {
	display: none;
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background-color: #0e2c49;
	z-index: 9998;
	padding: 80px 32px 40px;
	overflow-y: auto;
	transform: translateX(-100%);
	transition: transform .35s cubic-bezier(.4, 0, .2, 1);
}

.esi-mobile-nav.is-open {
	transform: translateX(0);
}

.esi-mobile-nav ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.esi-mobile-nav ul > li {
	border-bottom: 1px solid rgba(255, 255, 255, .1);
}

.esi-mobile-nav ul > li > a {
	display: block;
	padding: 1rem 0;
	font-family: var(--esi-font-heading);
	font-size: 1.125rem;
	font-weight: 500;
	color: #fff;
	text-decoration: none;
}

.esi-mobile-nav ul > li > a:hover {
	color: #f79340;
}

.esi-mobile-nav .sub-menu {
	padding: 0 0 8px 16px;
}

.esi-mobile-nav .sub-menu li a {
	display: block;
	padding: .5rem 0;
	font-size: .9375rem;
	color: rgba(255, 255, 255, .75);
	text-decoration: none;
}

.esi-mobile-nav .sub-menu li a:hover {
	color: #f79340;
}

.esi-mobile-nav .esi-nav-cta a {
	display: inline-block;
	margin-top: 1.5rem;
	background-color: #f79340;
	color: #fff;
	padding: .9rem 2rem;
	border-radius: 6px;
	font-weight: 700;
	font-size: 1rem;
	text-align: center;
	text-decoration: none;
}

/* ── Responsive: hide desktop nav, show hamburger ── */
@media (max-width: 1024px) {
	.primary-navigation, #site-navigation {
		display: none !important;
	}
	
	/* Hide Kadence's built-in mobile toggle — ESI uses its own custom drawer.
     CSS handles this (not JS) to prevent a flash on page load. */
	.site-header button:not(.esi-mobile-toggle), #masthead button:not(.esi-mobile-toggle), .kadence-header button:not(.esi-mobile-toggle), .menu-toggle, .kadence-menu-toggle-open {
		display: none !important;
	}
	
	/* Fixed position keeps the toggle in the top-right corner regardless of
     where it lands in the DOM — avoids fragile header injection. */
	.esi-mobile-toggle {
		display: flex !important;
		position: fixed !important;
		top: 16px !important;
		right: 20px !important;
		z-index: 10001 !important;
	}
	
	.esi-mobile-nav {
		display: block !important;
	}
}

@media (min-width: 1025px) {
	.esi-mobile-nav {
		display: none !important;
	}
	
	.esi-mobile-toggle {
		display: none !important;
	}
}

/* ═══════════════════════════════════════════
   FOOTER: HIDE KADENCE CREDIT TEXT
   CSS fallback — PHP filters cover most cases
   but this catches any remaining rendered output.
═══════════════════════════════════════════ */
.site-info .credit, .site-footer .credit, .kadence-footer .site-info, .footer-bottom-wrap .site-info, span.credit, p.credit {
	display: none !important;
}

/* ═══════════════════════════════════════════
   FIX 4: HIDE IMAGE CAPTIONS
   Suppresses figcaption / wp-caption text
   that may render beneath hero images.
═══════════════════════════════════════════ */
.wp-caption-text, .wp-element-caption, figcaption, .wp-block-image figcaption {
	display: none !important;
}

/* ═══════════════════════════════════════════
   CTA SECTION: ORANGE-TO-NAVY OVERRIDE (CLASS-BASED)
   Replaces fragile [style*="..."] and JS computed-style approaches.
   Class is set in block markup so NitroPack cannot strip it.
═══════════════════════════════════════════ */
.esi-cta-orange {
	background-color: #0e2c49 !important;
}

.esi-cta-orange h1, .esi-cta-orange h2, .esi-cta-orange h3, .esi-cta-orange h4, .esi-cta-orange p {
	color: #fff !important;
}

.esi-cta-orange .wp-block-button__link {
	background-color: #f79340 !important;
	color: #fff !important;
}

/* ═══════════════════════════════════════════
   FOOTER: LEGAL LINKS BAR
   Appended via wp_footer hook below #colophon.
   Navy background matches site footer.
═══════════════════════════════════════════ */
.esi-footer-legal {
	background-color: #0a2240;
	padding: .75rem 1.5rem;
	text-align: center;
}

.esi-footer-legal nav {
	display: inline-flex;
	gap: 1.5rem;
}

.esi-footer-legal a {
	color: #94a3b8;
	font-size: .8125rem;
	text-decoration: none;
}

.esi-footer-legal a:hover {
	color: #fff;
}
