/*
 * style.css — Main stylesheet for the Wexcel theme.
 * WordPress requires this file to exist with the theme header comment below
 * so it can recognise and display the theme in the admin dashboard.
 * Add your custom CSS beneath the header comment block.
 *
 * Theme Name:  Wexcel
 * Description: Custom theme for Wexcel B2B site
 * Version:     1.0
 * Author:      Wexcel
 */

/* ==========================================================================
   1. CSS Custom Properties (design tokens)
   ========================================================================== */

:root {
	/* Brand colours */
	--color-navy:      #A8DADC;
	--color-navy-dark: #1c1d51;
	--color-red:       #e11e26;
	--color-white: #ffffff;
	--color-grey:  #c9c5c5;
	--color-grey-dark: #4a4a4a;

	/* Typography */
	--font-heading: 'Khand', sans-serif;
	--font-body:    'Montserrat', sans-serif;

	/* Font sizes — fluid scale */
	--fs-xs:  0.75rem;   /* 12px */
	--fs-sm:  0.875rem;  /* 14px */
	--fs-base: 1rem;     /* 16px */
	--fs-md:  1.125rem;  /* 18px */
	--fs-lg:  1.5rem;    /* 24px */
	--fs-xl:  2rem;      /* 32px */
	--fs-2xl: 2.5rem;    /* 40px */
	--fs-3xl: 3rem;      /* 48px */

	/* Spacing */
	--space-xs:  0.5rem;
	--space-sm:  1rem;
	--space-md:  1.5rem;
	--space-lg:  2.5rem;
	--space-xl:  4rem;
	--space-2xl: 6rem;

	/* Layout */
	--max-width: 1200px;
	--gutter:    1.5rem;

	/* Transitions */
	--transition: 0.2s ease;
}

/* ==========================================================================
   2. Reset / base
   ========================================================================== */

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

html {
	scroll-behavior: smooth;
	-webkit-text-size-adjust: 100%;
}

body {
	font-family: var(--font-body);
	font-size: var(--fs-base);
	color: var(--color-navy-dark);
	background-color: var(--color-white);
	line-height: 1.6;
	min-width: 360px; /* brief requirement */
}

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

a {
	color: inherit;
	text-decoration: none;
}

ul,
ol {
	list-style: none;
}

/* ==========================================================================
   3. Typography
   ========================================================================== */

h1, h2, h3, h4, h5, h6 {
	font-family: var(--font-heading);
	font-weight: 700;
	line-height: 1.2;
	color: var(--color-navy-dark);
}

h1 { font-size: var(--fs-3xl); }
h2 { font-size: var(--fs-2xl); }
h3 { font-size: var(--fs-xl); }
h4 { font-size: var(--fs-lg); }
h5 { font-size: var(--fs-md); }
h6 { font-size: var(--fs-base); }

p {
	margin-bottom: var(--space-sm);
}

p:last-child {
	margin-bottom: 0;
}

/* ==========================================================================
   4. Layout helpers
   ========================================================================== */

.container {
	width: 100%;
	max-width: var(--max-width);
	margin-inline: auto;
	padding-inline: var(--gutter);
}

.section {
	padding-block: var(--space-2xl);
}

.section--navy {
	background-color: var(--color-navy);
	color: var(--color-navy-dark);
}

.section--navy h1,
.section--navy h2,
.section--navy h3,
.section--navy h4 {
	color: var(--color-navy-dark);
}

.section--grey {
	background-color: #f5f5f5;
}

/* ==========================================================================
   5. Buttons
   ========================================================================== */

.btn {
	display: inline-block;
	font-family: var(--font-body);
	font-size: var(--fs-sm);
	font-weight: 600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	padding: 0.75rem 1.75rem;
	border-radius: 2px;
	cursor: pointer;
	border: 2px solid transparent;
	transition: background-color var(--transition), color var(--transition), border-color var(--transition);
}

/* Primary — red CTA */
.btn--primary {
	background-color: var(--color-red);
	color: var(--color-white);
	border-color: var(--color-red);
}

.btn--primary:hover,
.btn--primary:focus-visible {
	background-color: #c0191f;
	border-color: #c0191f;
}

/* Secondary — navy outline */
.btn--secondary {
	background-color: transparent;
	color: var(--color-navy-dark);
	border-color: var(--color-navy-dark);
}

.btn--secondary:hover,
.btn--secondary:focus-visible {
	background-color: var(--color-navy);
	color: var(--color-white);
}

/* White outline variant (for use on navy backgrounds) */
.btn--outline-white {
	background-color: transparent;
	color: var(--color-white);
	border-color: var(--color-white);
}

.btn--outline-white:hover,
.btn--outline-white:focus-visible {
	background-color: var(--color-white);
	color: var(--color-navy-dark);
}

/* ==========================================================================
   6. Utility classes
   ========================================================================== */

.text-center  { text-align: center; }
.text-white   { color: var(--color-white); }
.text-navy    { color: var(--color-navy-dark); }
.text-red     { color: var(--color-red); }

.mt-sm { margin-top: var(--space-sm); }
.mt-md { margin-top: var(--space-md); }
.mt-lg { margin-top: var(--space-lg); }

/* ==========================================================================
   7. Responsive breakpoints
   ========================================================================== */

/* Tablet and up */
@media (min-width: 768px) {
	h1 { font-size: clamp(2.5rem, 5vw, 4rem); }
	h2 { font-size: clamp(2rem, 4vw, 3rem); }
}

/* Desktop and up */
@media (min-width: 1024px) {
	:root {
		--gutter: 2rem;
	}
}

/* ==========================================================================
   8. Site Header
   ========================================================================== */

.site-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background-color: transparent;
	box-shadow: none;
	transition: background-color 0.3s ease, box-shadow 0.3s ease;
}

/* White background once user scrolls */
.site-header.is-scrolled {
	background-color: var(--color-white);
	box-shadow: 0 2px 16px rgba(0, 0, 0, 0.14);
	border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

/* Home page: pull hero up behind the transparent header (page-hero already has -72px globally) */
.home .section-hero {
	margin-top: -72px; /* kept for safety — front-page now uses .page-hero */
}

/* Transparent nav (all pages): white nav links over dark heroes */
.site-header:not(.is-scrolled) .primary-nav__list a {
	color: var(--color-white);
}

/* Hover stays red on transparent nav — exclude CTA button */
.site-header:not(.is-scrolled) .primary-nav__list li:not(.nav-cta-btn) a:hover {
	color: var(--color-red);
}

/* Active page link stays red even on transparent nav — exclude CTA button */
.site-header:not(.is-scrolled) .primary-nav__list li.current-menu-item:not(.nav-cta-btn) > a,
.site-header:not(.is-scrolled) .primary-nav__list li.current-menu-ancestor:not(.nav-cta-btn) > a {
	color: var(--color-red);
}

.site-header:not(.is-scrolled) .nav-toggle__bar {
	background-color: var(--color-white);
}

/* Logo swap: light logo on transparent nav, dark logo when scrolled */
.site-header .logo-dark  { display: none; }
.site-header .logo-light { display: block; }

.site-header.is-scrolled .logo-light { display: none; }
.site-header.is-scrolled .logo-dark  { display: block; }

/* WP admin bar offset */
@media screen {
	.admin-bar .site-header {
		top: 32px;
	}
}

.site-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: 72px;
}

.site-header__logo img {
	height: 56px;
	width: auto;
}

/* --- Hamburger toggle (hidden on desktop) --- */

.nav-toggle {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	width: 28px;
	height: 20px;
	background: none;
	border: none;
	cursor: pointer;
	padding: 0;
}

.nav-toggle__bar {
	display: block;
	width: 100%;
	height: 2px;
	background-color: var(--color-navy);
	border-radius: 2px;
	transition: transform var(--transition), opacity var(--transition);
}

/* Animate hamburger → X when menu is open */
.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(1) {
	transform: translateY(9px) rotate(45deg);
}

.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(2) {
	opacity: 0;
}

.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(3) {
	transform: translateY(-9px) rotate(-45deg);
}

/* ── Shared nav link styles (all screen sizes) ─────────── */

.primary-nav__list {
	display: flex;
	list-style: none;
}

.primary-nav__list li a {
	display: block;
	font-family: var(--font-body);
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	transition: color var(--transition);
}

.primary-nav__list li a:hover,
.primary-nav__list li.current-menu-item > a {
	color: var(--color-red);
}

/* Header turns navy when mobile menu is open */
.site-header.menu-is-open {
	background-color: var(--color-navy) !important;
	box-shadow: none !important;
	border-bottom: none !important;
}

.site-header.menu-is-open .logo-dark  { display: block; }
.site-header.menu-is-open .logo-light { display: none; }

.site-header.menu-is-open .nav-toggle__bar {
	background-color: var(--color-navy-dark);
}

/* ── MOBILE nav — full-screen overlay (max 767px) ──────── */

@media (max-width: 767px) {
	.primary-nav {
		display: none;
		position: fixed;
		inset: 0;
		z-index: 99;
		background-color: var(--color-navy);
		flex-direction: column;
		justify-content: center;
		align-items: center;
		padding-top: 0;
	}

	.primary-nav.is-open {
		display: flex;
	}

	/* Logo + close button row at top of overlay */
	.primary-nav__mobile-header {
		position: absolute;
		top: 0;
		left: 0;
		right: 0;
		height: 72px;
		display: flex;
		align-items: center;
		justify-content: space-between;
		padding: 0 var(--gutter);
		border-bottom: 1px solid rgba(28, 29, 81, 0.15);
	}

	.admin-bar .primary-nav__mobile-header {
		top: 46px;
	}

	.primary-nav__mobile-logo img {
		height: 36px;
		width: auto;
		display: block;
	}

	.nav-close {
		background: none;
		border: none;
		cursor: pointer;
		color: var(--color-navy-dark);
		font-size: 2.2rem;
		line-height: 1;
		padding: 0 0.25rem;
		display: flex;
		align-items: center;
		justify-content: center;
		opacity: 0.8;
		transition: opacity var(--transition);
	}

	.nav-close:hover {
		opacity: 1;
	}

	.primary-nav__list {
		flex-direction: column;
		width: 100%;
		text-align: center;
	}

	.primary-nav__list li {
		border-bottom: 1px solid rgba(28, 29, 81, 0.12);
	}

	.primary-nav__list li:first-child {
		border-top: 1px solid rgba(28, 29, 81, 0.12);
	}

	.primary-nav__list li a {
		padding: 1.1rem var(--gutter);
		font-family: var(--font-heading);
		font-size: 1.4rem;
		color: var(--color-navy-dark);
	}

	/* Contact Us — plain text in mobile overlay */
	.primary-nav__list li.nav-cta-btn > a {
		color: var(--color-red);
		background: none;
	}

	/* Admin bar offset for the overlay */
	.admin-bar .primary-nav {
		padding-top: calc(72px + 32px);
	}
}

/* ── DESKTOP nav — inline in header (min 768px) ─────────── */

@media (min-width: 768px) {
	.nav-toggle {
		display: none;
	}

	.primary-nav__mobile-header,
	.nav-close {
		display: none;
	}

	.primary-nav {
		display: flex;
		align-items: center;
	}

	.primary-nav__list {
		flex-direction: row;
		align-items: center;
		gap: var(--space-md);
	}

	.primary-nav__list li a {
		padding: 0;
		font-size: 0.75rem;
		color: var(--color-navy-dark);
	}

	/* Contact Us — red button */
	.primary-nav__list li.nav-cta-btn > a {
		background-color: var(--color-red);
		color: var(--color-white);
		padding: 0.45rem 1.1rem;
		border-radius: 2px;
		font-weight: 700;
		transition: background-color var(--transition);
	}

	.primary-nav__list li.nav-cta-btn > a:hover {
		background-color: #c0191f;
		color: var(--color-white);
	}
}

/* ==========================================================================
   9. Site Footer
   ========================================================================== */

.site-footer {
	background-color: var(--color-navy);
	color: var(--color-navy-dark);
	padding-top: var(--space-2xl);
	padding-bottom: 0;
}

/* Top: 3-column grid */
.site-footer__top {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--space-xl);
	padding-bottom: var(--space-xl);
	border-bottom: 1px solid rgba(28, 29, 81, 0.15);
}

@media (min-width: 768px) {
	.site-footer__top {
		grid-template-columns: 1.4fr 1fr 1.6fr;
		gap: var(--space-2xl);
		align-items: start;
	}
}

/* Brand column */
.site-footer__logo img {
	height: 56px;
	width: auto;
	margin-bottom: var(--space-sm);
}

.site-footer__tagline {
	font-size: var(--fs-sm);
	font-weight: 700;
	color: rgba(28, 29, 81, 0.8);
	margin-top: var(--space-sm);
	margin-bottom: var(--space-xs);
	line-height: 1.6;
	letter-spacing: 0.02em;
}

.site-footer__about {
	font-size: var(--fs-xs);
	color: rgba(28, 29, 81, 0.6);
	line-height: 1.75;
	margin-bottom: 0;
	max-width: 300px;
}

/* Column headings */
.site-footer__col-title {
	font-family: var(--font-body);
	font-size: var(--fs-xs);
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: rgba(28, 29, 81, 0.5);
	margin-bottom: var(--space-md);
}

/* Nav links */
.footer-nav__list {
	display: flex;
	flex-direction: column;
	gap: var(--space-xs);
}

.footer-nav__list li a {
	font-size: var(--fs-sm);
	color: rgba(28, 29, 81, 0.75);
	transition: color var(--transition);
}

.footer-nav__list li a:hover {
	color: var(--color-navy-dark);
}

/* Contact list */
.footer-contact__list {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.footer-contact__list li {
	display: flex;
	align-items: flex-start;
	gap: 0.75rem;
	font-size: var(--fs-sm);
	color: rgba(28, 29, 81, 0.75);
}

.footer-contact__list li i {
	color: var(--color-red);
	font-size: 1rem;
	margin-top: 2px;
	flex-shrink: 0;
}

.footer-contact__list li a {
	color: rgba(28, 29, 81, 0.75);
	transition: color var(--transition);
}

.footer-contact__list li a:hover {
	color: var(--color-navy-dark);
}

.footer-contact__address address {
	font-style: normal;
	line-height: 1.7;
}

.footer-contact__address strong {
	color: var(--color-navy-dark);
	font-weight: 600;
}

/* Bottom bar */
.site-footer__bottom {
	padding-block: var(--space-md);
	text-align: center;
}

.site-footer__copy {
	font-size: var(--fs-xs);
	color: rgba(28, 29, 81, 0.5);
	margin-bottom: 0;
}

/* ==========================================================================
   10. Hero — Home page
   ========================================================================== */

/* Section fills full viewport height */
.section-hero {
	position: relative;
	overflow: hidden;
	height: 100vh;
	min-height: 600px;
}

/* Image covers the full section */
.hero-image-wrap {
	position: absolute;
	inset: 0;
	line-height: 0;
}

.hero-image {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 10%; /* favour the faces / upper portion */
	display: block;
}

/* Flex column, content anchored near the bottom */
.hero-content {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	padding-bottom: calc(5vh + 40px); /* ~70% image above / 30% below at most viewport sizes */
	color: var(--color-white);
}

/* Flex child — centred column */
.hero-content .container {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	max-width: 960px;
	padding-inline: var(--gutter);
}

/* Headline — single line on desktop */
.hero-headline {
	font-family: var(--font-heading);
	font-size: 3rem; /* 48px */
	font-weight: 700;
	color: var(--color-white);
	line-height: 1.2;
	white-space: nowrap;
	background: rgba(0, 0, 0, 0.48);
	padding: 6px 14px;
	border-radius: 2px;
	margin-bottom: 10px;
}

/* Tagline */
.hero-tagline {
	font-family: var(--font-heading);
	font-size: clamp(1.3rem, 2.4vw, 1.9rem);
	font-weight: 600;
	color: var(--color-white);
	letter-spacing: 0.04em;
	background: rgba(0, 0, 0, 0.45);
	padding: 5px 14px;
	border-radius: 2px;
	margin-bottom: 10px;
}

/* Subtext */
.hero-subtext {
	font-size: var(--fs-base);
	color: var(--color-white);
	max-width: 860px;
	line-height: 1.75;
	background: rgba(0, 0, 0, 0.45);
	padding: 6px 14px;
	border-radius: 2px;
	margin-bottom: 20px;
}

.hero-ctas {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--space-sm);
}

/* ── Mobile hero ── */
@media (max-width: 767px) {
	.section-hero {
		height: 100vh;
		min-height: 480px;
	}

	.hero-image {
		object-position: top center;
	}

	.hero-headline {
		white-space: normal;
		font-size: clamp(1.4rem, 5vw, 2rem);
	}
}

/* ==========================================================================
   11. Stats Bar
   ========================================================================== */

.section-stats {
	background: var(--color-navy);
	border-top: 1px solid rgba(28, 29, 81, 0.12);
	padding-block: var(--space-xl);
	position: relative;
	overflow: hidden;
}

.section-stats::before {
	display: none;
}

/* All screen sizes: row layout */
.stats-bar {
	display: flex;
	flex-direction: row;
	justify-content: center;
	align-items: flex-start;
	gap: 0;
	text-align: center;
}

.stats-bar__item {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.25rem;
	flex: 1;
	padding-inline: 0.75rem;
}

.stats-bar__item + .stats-bar__item {
	border-left: 1px solid rgba(28, 29, 81, 0.2);
}

.stats-bar__number {
	font-family: var(--font-heading);
	font-size: clamp(1.6rem, 6vw, 4rem);
	font-weight: 700;
	color: var(--color-navy-dark);
	line-height: 1;
}

.stats-bar__label {
	font-size: clamp(0.6rem, 1.8vw, 0.875rem);
	font-weight: 500;
	color: rgba(28, 29, 81, 0.6);
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

/* Tablet (768px+): more padding */
@media (min-width: 768px) {
	.stats-bar__item {
		max-width: 260px;
		padding-inline: var(--space-sm);
	}
}

/* Desktop (1024px+): full padding */
@media (min-width: 1024px) {
	.stats-bar__item {
		padding-inline: var(--space-md);
	}
}

/* ==========================================================================
   12. What We Do
   ========================================================================== */

.section-whatwedo {
	padding-block: var(--space-2xl);
}

.section-whatwedo h2 {
	margin-bottom: var(--space-md);
}

.section-intro {
	font-size: var(--fs-md);
	color: var(--color-grey-dark);
	max-width: 760px;
	margin-inline: auto;
	line-height: 1.75;
}

.section--navy .section-intro {
	color: rgba(28, 29, 81, 0.75);
}

/* ==========================================================================
   13. Offering Cards
   ========================================================================== */

.section-offerings {
	padding-block: var(--space-2xl);
}

.section-offerings__title {
	margin-bottom: var(--space-sm);
}

.section-offerings__intro {
	color: var(--color-grey-dark);
	max-width: 680px;
	margin-inline: auto;
	margin-bottom: var(--space-xl);
	line-height: 1.7;
}

.offerings-grid {
	display: grid;
	gap: var(--space-lg);
	grid-template-columns: 1fr;
}

.offering-card {
	background-color: var(--color-white);
	border-radius: 4px;
	overflow: hidden;
	box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
	display: flex;
	flex-direction: column;
}

.offering-card__img-wrap {
	width: 100%;
	height: 220px;
	overflow: hidden;
}

.offering-card__img-wrap img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center top;
	display: block;
	transition: transform 0.4s ease;
}

.offering-card:hover .offering-card__img-wrap img {
	transform: scale(1.04);
}

.offering-card__body-wrap {
	border-bottom: 4px solid var(--color-red);
	padding: var(--space-lg);
	flex: 1;
	display: flex;
	flex-direction: column;
}

.offering-card__title {
	font-size: var(--fs-xl);
	margin-bottom: var(--space-sm);
	color: var(--color-navy-dark);
}

.offering-card__body {
	font-size: var(--fs-base);
	color: var(--color-grey-dark);
	line-height: 1.7;
	margin-bottom: 0;
	flex: 1;
}

@media (min-width: 768px) {
	.offerings-grid {
		grid-template-columns: 1fr 1fr;
	}

	.offering-card__img-wrap {
		height: 260px;
	}
}

/* ==========================================================================
   14. Pillars Grid (Why Choose Wexcel)
   ========================================================================== */

.section-pillars {
	padding-block: var(--space-2xl);
	background: var(--color-navy);
	position: relative;
	overflow: hidden;
}

/* Subtle diagonal line texture */
.section-pillars::before {
	display: none;
}

.section-pillars h2 {
	margin-bottom: var(--space-sm);
	position: relative;
}

.section-pillars__intro {
	color: rgba(28, 29, 81, 0.7);
	max-width: 680px;
	margin-inline: auto;
	margin-bottom: var(--space-xl);
	line-height: 1.75;
	position: relative;
}

/* Counter for ghost numbers */
.pillars-grid {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--space-lg);
	counter-reset: pillar-counter;
	position: relative;
}

.pillar-item {
	counter-increment: pillar-counter;
	background: rgba(255, 255, 255, 0.35);
	border: 1px solid rgba(28, 29, 81, 0.1);
	border-bottom: 2px solid var(--color-red);
	border-radius: 4px;
	padding: var(--space-lg);
	position: relative;
	overflow: hidden;
	transition: background var(--transition), transform var(--transition), box-shadow var(--transition);
}

.pillar-item:hover {
	background: rgba(255, 255, 255, 0.55);
	transform: translateY(-4px);
	box-shadow: 0 12px 32px rgba(0, 0, 0, 0.3);
}

/* Large ghost number in background */
.pillar-item::before {
	content: counter(pillar-counter, decimal-leading-zero);
	position: absolute;
	bottom: -10px;
	right: 12px;
	font-family: var(--font-heading);
	font-size: 5rem;
	font-weight: 700;
	color: rgba(28, 29, 81, 0.06);
	line-height: 1;
	pointer-events: none;
	user-select: none;
}

.pillar-item__icon {
	margin-bottom: var(--space-sm);
}

.pillar-item__icon i {
	font-size: 1.75rem;
	color: rgba(28, 29, 81, 0.55);
}

.pillar-item__title {
	font-size: var(--fs-md);
	font-weight: 700;
	color: var(--color-navy-dark);
	margin-bottom: var(--space-xs);
	position: relative;
}

.pillar-item__body {
	font-size: var(--fs-sm);
	color: rgba(28, 29, 81, 0.7);
	line-height: 1.75;
	margin-bottom: 0;
	position: relative;
}

.pillar-item {
	flex: 1 1 100%;
}

@media (min-width: 600px) {
	.pillar-item {
		flex: 1 1 calc(50% - var(--space-lg) / 2);
		max-width: calc(50% - var(--space-lg) / 2);
	}
}

@media (min-width: 1024px) {
	.pillar-item {
		flex: 0 1 calc(33.333% - var(--space-lg) * 2 / 3);
		max-width: calc(33.333% - var(--space-lg) * 2 / 3);
	}
}

/* ==========================================================================
   15. Testimonials
   ========================================================================== */

.section-testimonials {
	padding-block: var(--space-2xl);
	background-color: #f0f2f5;
}

.section-testimonials h2 {
	color: var(--color-navy-dark);
	margin-bottom: var(--space-xl);
}

.testimonials-grid {
	display: grid;
	gap: var(--space-lg);
	grid-template-columns: 1fr;
}

.testimonial-card {
	background: var(--color-white);
	border: 1px solid rgba(0, 0, 0, 0.06);
	border-bottom: 3px solid var(--color-red);
	border-radius: 4px;
	padding: var(--space-lg);
	margin: 0;
	position: relative;
	display: flex;
	flex-direction: column;
	box-shadow: 0 2px 12px rgba(0, 0, 0, 0.05);
	transition: transform var(--transition), box-shadow var(--transition);
}

.testimonial-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 12px 32px rgba(0, 0, 0, 0.1);
}

/* Large decorative quote mark */
.testimonial-card::before {
	content: '\201C';
	position: absolute;
	top: -8px;
	left: var(--space-lg);
	font-family: var(--font-heading);
	font-size: 5rem;
	line-height: 1;
	color: var(--color-red);
	opacity: 0.15;
	pointer-events: none;
}

/* Star rating row */
.testimonial-card__stars {
	display: flex;
	gap: 3px;
	margin-bottom: var(--space-sm);
	padding-top: 1.25rem;
}

.testimonial-card__stars i {
	color: #f5a623;
	font-size: 0.75rem;
}

.testimonial-card__quote {
	font-size: var(--fs-base);
	font-style: italic;
	color: var(--color-grey-dark);
	line-height: 1.8;
	margin-bottom: var(--space-md);
	flex: 1;
}

.testimonial-card__quote::before,
.testimonial-card__quote::after { content: ''; }

.testimonial-card__footer {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	border-top: 1px solid rgba(0, 0, 0, 0.07);
	padding-top: var(--space-sm);
}

.testimonial-card__avatar {
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: var(--color-navy);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--font-heading);
	font-size: 1rem;
	font-weight: 700;
	color: var(--color-white);
	flex-shrink: 0;
}

.testimonial-card__meta {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
}

.testimonial-card__name {
	font-style: normal;
	font-weight: 700;
	font-size: var(--fs-sm);
	color: var(--color-navy-dark);
}

.testimonial-card__role {
	font-size: var(--fs-xs);
	color: var(--color-grey-dark);
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

@media (min-width: 768px) {
	.testimonials-grid {
		grid-template-columns: 1fr 1fr;
	}
}

@media (min-width: 1024px) {
	.testimonials-grid {
		grid-template-columns: repeat(3, 1fr);
	}
}


/* ==========================================================================
   Inner Page Hero
   ========================================================================== */

.page-hero {
	position: relative;
	overflow: hidden;
	margin-top: -72px;
	min-height: 55vh;
	display: flex;
	align-items: center;
	padding-top: calc(72px + var(--space-2xl));
	padding-bottom: var(--space-2xl);
	background: var(--color-navy);
}

/* Full viewport height hero — used on pages with background images (R&R, T&E) */
.page-hero--fullscreen {
	min-height: 100vh;
}

/* Width-fit hero — desktop: let image drive height so full width is shown without cropping */
@media (min-width: 768px) {
	.page-hero--img-fit,
	.page-hero.page-hero--img-fit {
		min-height: 0;
		display: block;
		padding-top: 0;
		padding-bottom: 0;
	}
	.page-hero--img-fit .page-hero__bg-wrap {
		position: relative;
		width: 100%;
	}
	.page-hero--img-fit .page-hero__bg-wrap picture {
		height: auto;
	}
	.page-hero--img-fit .page-hero__bg-img {
		height: auto;
		object-fit: unset;
	}
	.page-hero--img-fit .page-hero__content {
		position: absolute;
		inset: 0;
		display: flex;
		align-items: center;
		margin-top: 0;
		padding-top: calc(72px + var(--space-2xl));
		padding-bottom: var(--space-2xl);
	}
	.admin-bar .page-hero--img-fit .page-hero__content {
		padding-top: calc(72px + 32px + var(--space-2xl));
	}
}

/* Diagonal texture — matches other navy sections */
.page-hero::after {
	display: none;
}

.page-hero__bg-wrap {
	position: absolute;
	inset: 0;
}

/* Allow <picture> to fill the bg-wrap the same as a bare <img> */
.page-hero__bg-wrap picture {
	display: block;
	width: 100%;
	height: 100%;
}

.page-hero__bg-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 20%;
	display: block;
}

.page-hero__overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(
		to bottom,
		rgba(0, 0, 0, 0.25) 0%,
		rgba(0, 0, 0, 0.55) 100%
	);
}

.page-hero__content {
	position: relative;
	z-index: 1;
	width: 100%;
	text-align: center;
	color: var(--color-white);
	margin-top: -320px;
}

@media (min-width: 768px) {
	.page-hero__content {
		margin-top: 180px;
	}
}

/* Home page hero text overrides */
.home .page-hero__content {
	margin-top: -220px; /* mobile: 100px down from -320px */
}

@media (min-width: 768px) {
	.home .page-hero__content {
		margin-top: -120px; /* desktop: 300px up from 180px */
	}
}

/* About & Contact pages — move text down 300px on mobile */
@media (max-width: 767px) {
	.page-hero--img-fit .page-hero__content {
		margin-top: -20px;
	}
}

.page-hero__title {
	font-family: var(--font-heading);
	font-size: clamp(2rem, 4vw, 3.5rem);
	font-weight: 700;
	color: var(--color-white);
	margin-bottom: 5px;
	line-height: 1.15;
}

.page-hero__tagline {
	font-family: var(--font-heading);
	font-size: clamp(1rem, 1.8vw, 1.3rem);
	color: var(--color-white);
	font-style: italic;
	letter-spacing: 0.03em;
	margin-bottom: 5px;
}

.page-hero__body {
	font-size: var(--fs-base);
	font-weight: 700;
	color: var(--color-white);
	max-width: 680px;
	margin-inline: auto;
	line-height: 1.75;
	margin-bottom: 30px;
}

@media screen {
	.admin-bar .page-hero {
		margin-top: calc(-72px - 32px);
		padding-top: calc(72px + 32px + var(--space-2xl));
	}
}

@media screen and (min-width: 768px) {
	.admin-bar .page-hero.page-hero--img-fit {
		padding-top: 0;
		padding-bottom: 0;
		min-height: 0;
		display: block;
	}
	.admin-bar .page-hero--img-fit .page-hero__content {
		padding-top: calc(72px + 32px + var(--space-2xl));
	}
}

/* ==========================================================================
   Vision & Mission (About page)
   ========================================================================== */

.vm-grid {
	display: grid;
	gap: var(--space-lg);
	grid-template-columns: 1fr;
}

.vm-card {
	background: var(--color-white);
	border-radius: 4px;
	border-bottom: 4px solid var(--color-red);
	padding: var(--space-xl);
	box-shadow: 0 2px 16px rgba(0, 0, 0, 0.06);
}

.vm-card__icon {
	margin-bottom: var(--space-sm);
}

.vm-card__icon i {
	font-size: 2rem;
	color: var(--color-red);
}

.vm-card__title {
	font-size: var(--fs-xl);
	color: var(--color-navy-dark);
	margin-bottom: var(--space-sm);
}

.vm-card__body {
	font-size: var(--fs-base);
	color: var(--color-grey-dark);
	line-height: 1.75;
}

@media (min-width: 768px) {
	.vm-grid {
		grid-template-columns: 1fr 1fr;
	}
}

/* ==========================================================================
   Service Cards (navy background — About, R&R, T&E)
   ========================================================================== */

.services-grid {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--space-lg);
	margin-top: var(--space-xl);
	counter-reset: service-counter;
}

.service-card {
	counter-increment: service-counter;
	background: rgba(255, 255, 255, 0.35);
	border: 1px solid rgba(28, 29, 81, 0.1);
	border-bottom: 2px solid var(--color-red);
	border-radius: 4px;
	padding: var(--space-lg);
	position: relative;
	overflow: hidden;
	transition: background var(--transition), transform var(--transition);
}

.service-card::before {
	content: counter(service-counter, decimal-leading-zero);
	position: absolute;
	bottom: -10px;
	right: 12px;
	font-family: var(--font-heading);
	font-size: 5rem;
	font-weight: 700;
	color: rgba(28, 29, 81, 0.06);
	line-height: 1;
	pointer-events: none;
	user-select: none;
}

.service-card:hover {
	background: rgba(255, 255, 255, 0.55);
	transform: translateY(-3px);
}

.service-card__icon {
	margin-bottom: var(--space-sm);
}

.service-card__icon i {
	font-size: 1.5rem;
	color: rgba(28, 29, 81, 0.55);
}

.service-card__title {
	font-size: var(--fs-md);
	font-weight: 700;
	color: var(--color-navy-dark);
	margin-bottom: var(--space-xs);
}

.service-card__body {
	font-size: var(--fs-sm);
	color: rgba(28, 29, 81, 0.7);
	line-height: 1.7;
}

.service-card {
	flex: 1 1 100%;
}

@media (min-width: 768px) {
	.service-card {
		flex: 1 1 calc(50% - var(--space-lg) / 2);
		max-width: calc(50% - var(--space-lg) / 2);
	}
}

@media (min-width: 1024px) {
	.service-card {
		flex: 0 1 calc(33.333% - var(--space-lg) * 2 / 3);
		max-width: calc(33.333% - var(--space-lg) * 2 / 3);
	}
}

/* ==========================================================================
   Why Grid (grey background — checkmark tiles)
   ========================================================================== */

.why-grid {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--space-md);
	margin-top: var(--space-xl);
}

.why-item {
	background: var(--color-white);
	border-radius: 4px;
	padding: var(--space-md) var(--space-lg);
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
	display: flex;
	align-items: flex-start;
	gap: var(--space-sm);
	border-bottom: 2px solid var(--color-red);
	transition: transform var(--transition), box-shadow var(--transition);
}

.why-item:hover {
	transform: translateY(-3px);
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
}

.why-item__icon {
	color: var(--color-red);
	font-size: 1rem;
	margin-top: 3px;
	flex-shrink: 0;
}

.why-item__content { flex: 1; }

.why-item__title {
	font-size: var(--fs-base);
	font-weight: 700;
	color: var(--color-navy-dark);
	margin-bottom: 4px;
}

.why-item__body {
	font-size: var(--fs-sm);
	color: var(--color-grey-dark);
	line-height: 1.65;
}

.why-item {
	flex: 1 1 100%;
}

@media (min-width: 600px) {
	.why-item {
		flex: 1 1 calc(50% - var(--space-md) / 2);
		max-width: calc(50% - var(--space-md) / 2);
	}
}

@media (min-width: 1024px) {
	.why-item {
		flex: 0 1 calc(33.333% - var(--space-md) * 2 / 3);
		max-width: calc(33.333% - var(--space-md) * 2 / 3);
	}
}

/* ==========================================================================
   CTA Banner (navy — R&R, T&E bottom section)
   ========================================================================== */

.section-cta {
	text-align: center;
	padding-block: var(--space-2xl);
	background: var(--color-navy);
	position: relative;
	overflow: hidden;
}

.section-cta::before {
	display: none;
}

.section-cta__inner {
	position: relative;
	z-index: 1;
}

.section-cta h2 {
	color: var(--color-navy-dark);
	margin-bottom: var(--space-sm);
}

.section-cta p {
	color: rgba(28, 29, 81, 0.75);
	max-width: 560px;
	margin-inline: auto;
	margin-bottom: var(--space-lg);
	line-height: 1.7;
}

/* ==========================================================================
   About — Wexcel Difference section
   ========================================================================== */

.section-difference {
	background: #f0f2f5;
	padding-block: var(--space-2xl);
	text-align: center;
}

.section-difference h2 {
	margin-bottom: var(--space-sm);
	color: var(--color-navy-dark);
}

.section-difference p {
	max-width: 700px;
	margin-inline: auto;
	margin-bottom: var(--space-lg);
	color: var(--color-grey-dark);
	line-height: 1.75;
	font-size: var(--fs-md);
}

/* ==========================================================================
   Contact Page
   ========================================================================== */

.contact-layout {
	display: grid;
	gap: var(--space-xl);
	grid-template-columns: 1fr;
}

@media (min-width: 960px) {
	.contact-layout {
		grid-template-columns: 1.6fr 1fr;
		align-items: start;
	}
}

.contact-form-wrap {
	background: var(--color-white);
	border-radius: 4px;
	padding: var(--space-xl);
	box-shadow: 0 2px 16px rgba(0, 0, 0, 0.06);
}

.contact-form-wrap h3 {
	margin-bottom: var(--space-lg);
	color: var(--color-navy-dark);
	font-size: var(--fs-xl);
}

/* CF7 form field styling */
.contact-form-wrap .wpcf7-form p {
	margin-bottom: var(--space-sm);
}

.cf7-field-wrap {
	margin-bottom: var(--space-sm);
}

.cf7-field-wrap .wpcf7-form-control-wrap {
	display: block;
	width: 100%;
}

.contact-form-wrap input[type="text"],
.contact-form-wrap input[type="email"],
.contact-form-wrap input[type="tel"],
.contact-form-wrap textarea,
.contact-form-wrap select {
	width: 100%;
	padding: 0.75rem 1rem;
	border: 1px solid #dde1e8;
	border-radius: 2px;
	font-family: var(--font-body);
	font-size: var(--fs-sm);
	color: var(--color-navy-dark);
	background: #fafbfc;
	transition: border-color var(--transition);
}

.contact-form-wrap input:focus,
.contact-form-wrap textarea:focus {
	outline: none;
	border-color: var(--color-navy-dark);
}

.contact-form-wrap textarea { min-height: 140px; resize: vertical; }

.contact-form-wrap .wpcf7-submit {
	background-color: var(--color-red);
	color: var(--color-white);
	border: none;
	padding: 0.75rem 2rem;
	font-family: var(--font-body);
	font-size: var(--fs-sm);
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	border-radius: 2px;
	cursor: pointer;
	transition: background-color var(--transition);
}

.contact-form-wrap .wpcf7-submit:hover {
	background-color: #c0191f;
}

/* Honeypot — invisible to humans, visible to bots */
.wexcel-honeypot {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
	opacity: 0;
	pointer-events: none;
}

.contact-info {
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.contact-info__card {
	background: var(--color-white);
	border-radius: 4px;
	padding: var(--space-lg);
	box-shadow: 0 2px 12px rgba(0, 0, 0, 0.05);
	display: flex;
	align-items: flex-start;
	gap: var(--space-md);
	border-left: 3px solid var(--color-red);
}

.contact-info__icon-wrap {
	width: 44px;
	height: 44px;
	background: var(--color-navy);
	border-radius: 8px;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}

.contact-info__icon-wrap i {
	color: var(--color-white);
	font-size: 1rem;
}

.contact-info__label {
	font-size: var(--fs-xs);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--color-grey-dark);
	margin-bottom: 4px;
	display: block;
}

.contact-info__value {
	font-size: var(--fs-base);
	color: var(--color-navy-dark);
	font-weight: 500;
	line-height: 1.5;
}

.contact-info__value a {
	color: var(--color-navy-dark);
	text-decoration: none;
}

.contact-info__value a:hover {
	color: var(--color-red);
}

/* ==========================================================================
   404 Page
   ========================================================================== */

.section-404 {
	padding: var(--space-4xl) 0;
	min-height: 60vh;
	display: flex;
	align-items: center;
}

.error-404__code {
	font-family: var(--font-heading);
	font-size: clamp(6rem, 20vw, 12rem);
	font-weight: 700;
	color: var(--color-red);
	line-height: 1;
	margin: 0 0 var(--space-sm);
	opacity: 0.15;
}

.error-404__title {
	font-size: clamp(1.5rem, 4vw, 2.5rem);
	color: var(--color-navy-dark);
	margin-bottom: var(--space-md);
}

.error-404__body {
	font-size: var(--fs-lg);
	color: var(--color-grey-dark);
	max-width: 480px;
	margin: 0 auto var(--space-xl);
}

.error-404__links {
	margin-top: var(--space-xl);
}

.error-404__links p {
	color: var(--color-grey-dark);
	margin-bottom: var(--space-sm);
}

.error-404__links ul {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--space-sm) var(--space-lg);
}

.error-404__links a {
	color: var(--color-navy-dark);
	font-weight: 600;
	text-decoration: none;
	border-bottom: 2px solid var(--color-red);
	padding-bottom: 2px;
	transition: color 0.2s;
}

.error-404__links a:hover {
	color: var(--color-red);
}
