/* ==========================================================================
   AWorld IRP — main stylesheet
   Desktop values are 1:1 with the Figma frames (1920 wide, 1440 content).
   ========================================================================== */

/* ---------- Fonts (self-hosted, no Google requests) ---------- */
@font-face { font-family: "Inter"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/inter-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/inter-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 600; font-display: swap; src: url("../fonts/inter-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 700; font-display: swap; src: url("../fonts/inter-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 800; font-display: swap; src: url("../fonts/inter-latin-800-normal.woff2") format("woff2"); }
@font-face { font-family: "Manrope"; font-style: normal; font-weight: 700; font-display: swap; src: url("../fonts/manrope-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family: "Rubik"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/rubik-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Rubik"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/rubik-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "Manrope"; font-style: normal; font-weight: 800; font-display: swap; src: url("../fonts/manrope-latin-800-normal.woff2") format("woff2"); }

/* ---------- Tokens (Figma variables --aw-*) ---------- */
:root {
	--aw-navy: #17243e;
	--aw-gold: #cba44e;
	--aw-gold-hover: #d8b768;
	--aw-page: #f7f7f3;
	--aw-surface: #fff;
	--aw-cream: #faf2df;
	--aw-border: #e3e6eb;
	--aw-border-inverse: #d9dfe9;
	--aw-text: #17243e;
	--aw-text-2: #697181;
	--aw-text-inverse-muted: #d9dfe9;
	--aw-divider: #c4c4c4;

	--font-head: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;
	--font-body: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;

	--gutter: 40px;
	--container: 1440px;
	--radius-8: 8px;
	--radius-12: 12px;
	--radius-16: 16px;
	--shadow-lift: 0 12px 36px rgba(23, 36, 61, 0.06);

	/* Fluid type: exact Figma size at ≥1440px, scales down below. */
	/* v1.2: headings −15% on an 8-pt scale (58→48, 40→32, 56/54→48, 48→40, 26→24, 24→20) */
	--fs-h1: clamp(32px, 3.34vw, 48px);
	--fs-h1-sub: clamp(22px, 2.23vw, 32px);
	--fs-h2: clamp(30px, 3.34vw, 48px);
	--fs-h2-process: var(--fs-h2);
	--fs-h2-cta: clamp(28px, 2.78vw, 40px);
	--fs-24: clamp(18px, 1.67vw, 24px);
	--fs-22: clamp(17px, 1.53vw, 22px);
	--fs-20: clamp(17px, 1.39vw, 20px);
	--fs-card-title: clamp(20px, 1.67vw, 24px);
}

@media (max-width: 1199px) { :root { --gutter: 32px; } }
@media (max-width: 767px)  { :root { --gutter: 20px; } }

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 24px; }
body {
	margin: 0;
	font-family: var(--font-body);
	font-size: 16px;
	line-height: 24px;
	color: var(--aw-text);
	background: var(--aw-surface);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
	overflow-x: hidden;
}
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
h1, h2, h3, h4, p, ul, ol { margin: 0; }
ul, ol { padding: 0; list-style: none; }
button { font: inherit; }
:focus-visible { outline: 2px solid var(--aw-gold); outline-offset: 3px; }

.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.skip-link {
	position: absolute; left: 16px; top: -100px; z-index: 1000;
	background: var(--aw-gold); color: var(--aw-navy); padding: 12px 20px; border-radius: var(--radius-8); font-weight: 600;
}
.skip-link:focus { top: 16px; }

.container {
	width: min(var(--container), calc(100% - 2 * var(--gutter)));
	margin-inline: auto;
}

/* Line breaks taken from the design only apply where there's room. */
@media (max-width: 767px) { .aw-br { display: none; } }

/* ---------- Typography helpers ---------- */
.eyebrow {
	font-family: var(--font-body);
	font-weight: 600;
	font-size: 12px;
	line-height: 18px;
	letter-spacing: 2px;
	text-transform: uppercase;
	color: var(--aw-gold);
}
.h2 {
	font-family: var(--font-head);
	font-weight: 800;
	font-size: var(--fs-h2);
	line-height: 1.1667; /* 56/48 */
	letter-spacing: -1px;
	color: var(--aw-text);
}
.section-head { display: flex; flex-direction: column; gap: 16px; }
.section-head__text {
	font-size: var(--fs-22);
	line-height: 1.4545; /* 32/22 */
	color: var(--aw-text-2);
}

/* ---------- Buttons (Figma: Button) ---------- */
.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-width: 184px;
	height: 48px;
	padding: 12px 24px;
	border-radius: var(--radius-8);
	border: 1px solid transparent;
	font-family: var(--font-body);
	font-weight: 600;
	font-size: 16px;
	line-height: 24px;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color .2s ease, border-color .2s ease, color .2s ease, transform .2s ease;
}
.btn__icon { width: 16px; height: 16px; flex: none; transition: transform .2s ease; }
.btn:hover .btn__icon { transform: translate(2px, -2px); }
.btn--primary { background: var(--aw-gold); color: var(--aw-navy); }
.btn--primary:hover { background: var(--aw-gold-hover); }
.btn--secondary { background: var(--aw-navy); color: #fff; border-color: var(--aw-border-inverse); }
.btn--secondary:hover { background: rgba(255, 255, 255, 0.08); border-color: #fff; }
.btn--wide { min-width: 208px; }
.btn-row { display: flex; flex-wrap: wrap; gap: 16px; }
.btn-row--center { justify-content: center; gap: 19px; }

.more-link {
	display: inline-flex; align-items: center; gap: 8px;
	font-weight: 600; font-size: 16px; line-height: 24px; color: var(--aw-navy);
}
.more-link__icon { width: 20px; height: 20px; transition: transform .2s ease; }
.more-link:hover .more-link__icon { transform: translateX(4px); }
.more-link--gold { color: var(--aw-gold); }

/* ==========================================================================
   Header (Figma: Navigation Menu)
   ========================================================================== */
.site-header { position: relative; z-index: 50; background: var(--aw-navy); }
.site-header__inner { display: flex; align-items: center; height: 104px; }
.brand { display: block; flex: none; }
.brand__img { width: 320px; height: 52px; }
.site-nav { display: flex; align-items: center; gap: 34px; margin-left: auto; }
.primary-nav__list { display: flex; align-items: center; gap: 32px; }
.primary-nav__list li { position: relative; }
.primary-nav__list a {
	display: block;
	font-weight: 500;
	font-size: 15px;
	line-height: 24px;
	color: #fff;
	transition: color .2s ease;
}
.primary-nav__list a:hover { color: var(--aw-gold); }
.primary-nav__list .current-menu-item > a::after,
.primary-nav__list .current_page_item > a::after {
	content: "";
	position: absolute;
	left: 0;
	top: 32px;
	width: 24px;
	height: 2px;
	background: var(--aw-gold);
}
.nav-toggle { display: none; }

/* ==========================================================================
   Heroes
   ========================================================================== */
.hero { position: relative; overflow: hidden; background: var(--aw-navy); color: #fff; }
.hero__copy { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: flex-start; gap: 28px; }
.hero__title { font-family: var(--font-head); font-weight: 800; display: flex; flex-direction: column; gap: 8px; }
.hero__title-main { font-size: var(--fs-h1); line-height: 1.1667; letter-spacing: -1.5px; }
.hero__title-sub { font-family: var(--font-body); font-weight: 400; font-size: var(--fs-h1-sub); line-height: 1.25; }
.hero__lead { font-size: var(--fs-24); line-height: 1.3333; color: var(--aw-text-inverse-muted); max-width: 588px; }
.hero__lead--sm { font-size: var(--fs-20); line-height: 1.4; }
.hero__call { display: inline-flex; align-items: center; gap: 12px; font-size: var(--fs-22); line-height: 28px; }
.hero__call-icon { width: 40px; height: 40px; flex: none; }
.hero__call:hover span { color: var(--aw-gold); }

/* Photo with soft "ghost" fade on its left (home + about) */
.hero__media { position: absolute; inset: 0; pointer-events: none; }
.hero__photo,
.hero__ghost { position: absolute; background-image: var(--hero-img); background-repeat: no-repeat; }
.hero__ghost {
	left: calc(50% - 363.55px);
	top: -95.89px;
	width: 1531.28px;
	height: 912px;
	background-size: 100% 100%;
	opacity: .4;
	-webkit-mask: url("../svg/mask-hero-ellipse.svg") no-repeat 122.245px 21.08px / 666.178px 829.84px;
	        mask: url("../svg/mask-hero-ellipse.svg") no-repeat 122.245px 21.08px / 666.178px 829.84px;
}
.hero__photo { border-radius: var(--radius-16); }
.hero__img-mobile { display: none; }

/* Home hero */
.hero--home { min-height: 640px; }
.hero--home .hero__inner { padding: 65px 0; }
.hero--home .hero__copy { width: min(656px, calc(50vw - var(--gutter) - 40px)); }
.hero--home .hero__photo {
	left: calc(50% + 12px);
	top: 47.75px;
	width: 1007.41px;
	height: 544.49px;
	background-size: 1531.28px 912px;
	background-position: -375.55px -143.64px;
}
.promise-card {
	position: absolute;
	z-index: 3;
	left: calc(50% - 12px);
	top: 451px;
	width: 339px;
	display: flex;
	align-items: center;
	gap: 16px;
	padding: 20px 24px;
	background: #fff;
	border-radius: var(--radius-12);
	color: var(--aw-text);
}
.promise-card__icon { width: 48px; height: 48px; flex: none; }
.promise-card__text { display: flex; flex-direction: column; gap: 4px; font-size: 16px; line-height: 24px; white-space: nowrap; }
.promise-card__text strong { font-weight: 800; }
.promise-card__text span { color: var(--aw-text-2); }

/* About hero */
.hero--about { min-height: 797px; }
.hero--about .hero__inner { padding: 65px 0 100px; }
.hero--about .hero__copy { width: min(708px, calc(50vw - var(--gutter) - 24px)); }
.hero--about .hero__title-main { max-width: 690px; }
.hero--about .hero__lead { margin-bottom: -11.3px; } /* list sits 16.7px under the text */
.hero--about .hero__actions { margin-top: 14.3px; }   /* 42.3px gap above buttons */
.hero--about .hero__photo {
	left: calc(50% + 12px);
	top: 65px;
	width: 1007.41px;
	height: 632px;
	background-size: 1649.74px 982.56px;
	background-position: -434.78px -128.72px;
}
.check-list { display: flex; flex-direction: column; gap: 13px; }
.check-list li { display: flex; align-items: center; gap: 12px; font-weight: 600; font-size: var(--fs-22); line-height: 28px; }
.check-list__icon { width: 40px; height: 40px; flex: none; }

/* Inner page hero (services / contact / generic) */
.hero--page .hero__inner { padding: 65px 0 87px; min-height: 376px; }
.hero--page .hero__copy { width: min(708px, calc(50vw - var(--gutter) - 24px)); }
.page-hero__photo {
	position: absolute;
	top: 53.09px;
	left: calc(50% + 11.09px);
	right: max(var(--gutter), calc((100% - var(--container)) / 2));
	height: 359.22px;
	border-radius: 31px;
	background: var(--hero-img) no-repeat -267.09px -285.6px / 1462.86px 973.02px;
}
.hero--plain .hero__inner { min-height: 0; padding-bottom: 72px; }

/* ==========================================================================
   Home – highlights strip (Figma: Frame 1)
   ========================================================================== */
.highlights { background: linear-gradient(var(--aw-navy) 0 69.04px, var(--aw-page) 69.04px); }
.highlights__card {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 294px));
	justify-content: space-between;
	column-gap: 48px;
	min-height: 260px;
	padding: 43px 60px 33px;
	background: #fff;
	border-radius: var(--radius-16);
	box-shadow: var(--shadow-lift);
}
.highlight { position: relative; display: flex; flex-direction: column; }
.highlight + .highlight::before {
	content: "";
	position: absolute;
	left: -47px;
	top: 7.82px;
	width: 1px;
	height: 158.37px;
	background: var(--aw-border);
}
.highlight__icon {
	display: grid; place-items: center;
	width: 72px; height: 72px; border-radius: 999px;
	background: var(--aw-cream);
	margin-bottom: 18px;
}
.highlight__title { font-family: var(--font-head); font-weight: 800; font-size: 20px; line-height: 28px; margin-bottom: 8px; }
.highlight__text { font-size: var(--fs-20); line-height: 28px; color: var(--aw-text-2); }

/* ==========================================================================
   Home – services intro (Figma: Frame 3 / Services Introduction)
   ========================================================================== */
.services-intro { background: var(--aw-page); padding: 63px 0 45px; }
.services-intro__title { max-width: 980px; }

/* ==========================================================================
   Home – dark offer band (Figma: Frame 3 / Frame 4, 1920×908)
   Two plain features over photos + three outlined cards.
   ========================================================================== */
.offer { position: relative; overflow: hidden; background: var(--aw-navy); color: #fff; padding: 117px 0 93px; }
.offer__bg { position: absolute; inset: 0; display: grid; grid-template-columns: 1fr 1fr; pointer-events: none; }
.offer__half { position: relative; overflow: hidden; }
.offer__photo { position: absolute; }
.offer__photo img { width: 100%; height: 100%; object-fit: cover; }
.offer__photo::after { content: ""; position: absolute; inset: 0; }
/* Left photo: 1794×1196 at (-135, -288) inside a 960×908 half */
.offer__half--left .offer__photo { left: -14.0625%; width: 186.875%; top: -31.718%; height: 131.718%; }
.offer__half--left .offer__photo img { opacity: .4; }
.offer__half--left .offer__photo::after { background: linear-gradient(to left, var(--aw-navy) 62.932%, rgba(102, 102, 102, 0) 104.77%); }
/* Right photo: 1365×908 at (-202.55, 0) inside a 960×908 half, masked at 20% */
.offer__half--right { opacity: .2; }
.offer__half--right .offer__photo { left: -21.099%; width: 142.199%; top: 0; height: 100%; }
.offer__half--right .offer__photo::after { background: linear-gradient(to right, var(--aw-navy) 35.831%, rgba(102, 102, 102, 0) 70.072%); }

.offer__top { position: relative; display: grid; grid-template-columns: 1fr 1fr; }
.offer-card--left { justify-self: end; width: min(399px, calc(100% - clamp(40px, 5.35vw, 77px) - var(--gutter))); margin-right: clamp(40px, 5.35vw, 77px); }
.offer-card--right { justify-self: start; width: min(430px, calc(100% - clamp(48px, 7vw, 134px) - var(--gutter))); margin-left: clamp(48px, 7vw, 134px); }
.offer__divider { position: absolute; left: 50%; top: -50px; bottom: -50px; width: 1px; background: rgba(217, 223, 233, .3); }

.offer__cards {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
	margin-top: 106px;
}

/* Card (outlined) */
.offer-card {
	position: relative; z-index: 1;
	display: flex; flex-direction: column; align-items: flex-start; justify-content: space-between;
	gap: 24px;
	padding: 32px 30px 32px 32px;
	background: var(--aw-navy);
	border: 1px solid #697181;
	border-radius: var(--radius-12);
	transition: border-color .25s ease;
}
.offer-card:hover { border-color: var(--aw-border); }
.offer-card__body { display: flex; flex-direction: column; gap: 30px; }
.offer-card__icon { width: 64px; height: 64px; flex: none; }
.offer-card__title { font-family: var(--font-head); font-weight: 800; font-size: var(--fs-card-title); line-height: 32px; color: #fff; }
.offer-card__text { font-size: var(--fs-20); line-height: 28px; color: var(--aw-border); }
/* Plain variant (top row on desktop): no box */
.offer-card--plain { gap: 30px; padding: 0; background: none; border: 0; border-radius: 0; justify-content: flex-start; }

/* ==========================================================================
   Home – process (Figma: Frame 5)
   ========================================================================== */
.process { padding: 97px 0 119px; background: #fff; }
.process__title { font-size: var(--fs-h2-process); line-height: 1.1667; }
.process__text { font-size: var(--fs-22); line-height: 1.3636; }
.steps {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 416px));
	column-gap: 72px;
	margin-top: 57px;
}
.step { display: flex; flex-direction: column; }
@media (min-width: 1100px) { .step { min-height: 200px; } }
.step__head { display: flex; align-items: center; gap: 24px; height: 72px; margin-bottom: 20px; }
.step__num {
	display: grid; place-items: center; flex: none;
	width: 72px; height: 72px; border-radius: 999px;
	border: 1.5px solid var(--aw-gold);
	font-weight: 600; font-size: 16px; line-height: 24px;
}
.step__icon { display: grid; place-items: center; flex: none; width: 72px; height: 72px; border-radius: 999px; background: var(--aw-page); }
.step__icon svg { width: 32px; height: 32px; }
.step__connector { width: 200px; height: 16px; flex: none; }
.step__title { font-family: var(--font-head); font-weight: 700; font-size: 20px; line-height: 28px; margin-bottom: 12px; }
.step__text { font-size: 18px; line-height: 26px; color: var(--aw-text-2); }
.process__action { display: flex; justify-content: center; margin-top: 57px; }

/* ==========================================================================
   CTA banner (Figma: Frame 6 / Ready to get started)
   ========================================================================== */
.cta { padding-bottom: 61px; background: #fff; }
.cta--band { padding-bottom: 91px; background: linear-gradient(var(--aw-page) 0 115.4px, #fff 115.4px); }
.cta__card {
	position: relative;
	overflow: hidden;
	min-height: 422px;
	padding: 50.64px 24px 55px;
	border-radius: 30px;
	background: var(--aw-navy);
	color: #fff;
	text-align: center;
}
.cta__blur {
	position: absolute;
	pointer-events: none;
	background: var(--cta-img) no-repeat center / 100% 100%;
	opacity: .55;
}
.cta__blur--one {
	left: -208.45px; top: -316.83px; width: 867.45px; height: 650.58px;
	filter: blur(12px);
	-webkit-mask: url("../svg/mask-terminal-1.svg") no-repeat -137.07px 14.02px / 753.82px 753.82px;
	        mask: url("../svg/mask-terminal-1.svg") no-repeat -137.07px 14.02px / 753.82px 753.82px;
}
.cta__blur--two {
	right: -546.3px; top: 58.09px; width: 1448px; height: 1086px;
	filter: blur(10px);
	-webkit-mask: url("../svg/mask-terminal-2.svg") no-repeat 410.82px -129.88px / 813.03px 811.08px;
	        mask: url("../svg/mask-terminal-2.svg") no-repeat 410.82px -129.88px / 813.03px 811.08px;
}
.cta__content { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; }
.cta__title {
	max-width: 936px;
	margin-top: 31.36px;
	font-family: var(--font-head); font-weight: 800;
	font-size: var(--fs-h2-cta); line-height: 1.2; letter-spacing: -1px;
}
.cta__text { max-width: 936px; margin-top: 25px; font-size: var(--fs-20); line-height: 28px; color: var(--aw-text-inverse-muted); }
.cta .btn-row { margin-top: 46px; }

/* ==========================================================================
   Footer (Figma: Frame 7)
   ========================================================================== */
.site-footer { background: var(--aw-page); padding: 48px 0 27px; color: var(--aw-text-2); }
.site-footer__top {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 180px 342px;
	column-gap: 64px;
	padding-bottom: 24px;
	border-bottom: 1.1px solid #e3e5eb;
}
.site-footer__brand { display: flex; flex-direction: column; gap: 24px; }
.brand--footer .brand__img { width: 320px; height: 52px; }
.site-footer__tagline { max-width: 400px; }
.site-footer__title { font-family: var(--font-body); font-weight: 600; font-size: 16px; line-height: 24px; color: var(--aw-text); }
.site-footer__company { display: flex; flex-direction: column; gap: 12px; }
.site-footer__links { display: flex; flex-direction: column; gap: 12px; }
.site-footer__links .current-menu-item > a { color: var(--aw-text); }
.site-footer a:hover { color: var(--aw-text); }
.site-footer__contact { display: flex; flex-direction: column; gap: 16px; }
.contact-list { display: flex; flex-direction: column; gap: 16px; }
.contact-list li { display: flex; align-items: flex-start; gap: 12px; }
.contact-list__icon { width: 20px; height: 20px; flex: none; }
.site-footer__bottom { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px 24px; padding-top: 24px; }
.site-footer__legal { display: flex; gap: 24px; }

/* ==========================================================================
   About – values (Figma: Frame 3, About)
   ========================================================================== */
.values { background: var(--aw-page); padding: 102px 0; }
.values__inner { display: grid; grid-template-columns: minmax(0, 1fr) 708px; column-gap: 24px; }
.values__head .h2 { max-width: 778px; margin-right: -100px; position: relative; z-index: 1; }
.values__head .section-head__text { max-width: 607px; }
.value-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; row-gap: 28px; }
.value-card {
	min-height: 279px;
	padding: 32px;
	background: #fff;
	border: 1px solid var(--aw-border);
	border-radius: var(--radius-12);
}
.value-card__icon { width: 64px; height: 64px; margin-bottom: 23px; }
.value-card__title { font-family: var(--font-head); font-weight: 800; font-size: var(--fs-card-title); line-height: 32px; margin-bottom: 10.57px; }
.value-card__text { font-size: 18px; line-height: 26px; color: var(--aw-text-2); }

/* ==========================================================================
   Services – list (Figma: Frame 3, Our Services)
   ========================================================================== */
.services-list { background: var(--aw-page); }
.service-row {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 586px;
	column-gap: 24px;
	align-items: start;
	padding: 51.5px 0 50px;
	border-bottom: 1.1px solid var(--aw-divider);
}
.service-row:first-child { padding-top: 70px; }
.service-row:last-child { padding-bottom: 70px; border-bottom: 0; }
.service-row__main { min-height: 353px; max-width: 790px; }
.service-row__icon { width: 64px; height: 64px; margin-bottom: 37.97px; }
.service-row__title {
	font-family: var(--font-head); font-weight: 800;
	font-size: var(--fs-h2); line-height: 1.1667; letter-spacing: -1px;
	margin-bottom: 16.57px;
}
.service-row__text { font-size: var(--fs-22); line-height: 1.4545; color: var(--aw-text-2); }
.included {
	padding: 32px 32px 44px 45px;
	background: #fff;
	border: 1px solid var(--aw-border);
	border-radius: var(--radius-12);
}
.included__title { font-family: var(--font-head); font-weight: 800; font-size: var(--fs-card-title); line-height: 32px; margin-bottom: 10.57px; }
.included__list li { position: relative; padding-left: 1.05em; font-size: var(--fs-22); line-height: 1.4545; color: var(--aw-text-2); }
.included__list li::before { content: "✓"; position: absolute; left: 0; font-weight: 700; color: var(--aw-gold); }
.included__note { margin-top: 14px; font-size: 14px; line-height: 20px; color: var(--aw-text-2); }
.included__note strong { font-weight: 700; }

/* ==========================================================================
   Request a Service (Figma: 04 Request a Service)
   ========================================================================== */
.hero--request .page-hero__photo { background-position: -75.09px -75.61px; background-size: 810.41px 539.04px; }
.hero--request .hero__lead { max-width: 528px; }
.request { background: var(--aw-page); padding: 44px 0 92px; }
.request__form { max-width: 949px; margin-inline: auto; }
.page-template-templates-request-php .site-footer { border-top: 1px solid #c4c4c4; }

/* ==========================================================================
   Contact Us (Figma: 05 Contact Us – hero 1920×797)
   ========================================================================== */
.hero--contact-us { min-height: 797px; }
.hero--contact-us .hero__inner { padding: 65px 0 129px; }
.hero--contact-us .hero__copy { width: min(708px, calc(50vw - var(--gutter) - 24px)); }
.contact-details { display: flex; flex-direction: column; gap: 13px; margin-top: 16.7px; }
.contact-details li { display: flex; align-items: center; gap: 12px; font-weight: 600; font-size: var(--fs-22); line-height: 28px; color: #fff; }
.contact-details__icon { width: 40px; height: 40px; flex: none; }
.contact-details__hours { white-space: pre-wrap; }
.contact-details a:hover { color: var(--aw-gold); }
.contact-form-card {
	position: absolute; z-index: 2;
	left: calc(50% + 12px); top: 65px;
	width: 1007.41px; min-height: 603px;
	padding: 51px clamp(32px, 3.22vw, 61.78px) 56px;
	background: var(--aw-page);
	border-radius: var(--radius-16);
	color: var(--aw-text);
}
.contact-form-card__title { font-family: var(--font-head); font-weight: 800; font-size: 32px; line-height: 40px; margin-bottom: 25.7px; }
.contact-form-card .aw-form { max-width: min(506.22px, calc(50vw - 12px - clamp(32px, 3.22vw, 61.78px) - var(--gutter))); }

/* ==========================================================================
   Forms – Contact Form 7 (Figma form kit: Rubik, 55px fields, radius 10)
   ========================================================================== */
.aw-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22.32px 27px; }
.aw-form--contact { grid-template-columns: minmax(0, 1fr); gap: 11px; }
.aw-field { display: flex; flex-direction: column; min-width: 0; }
.aw-field--full { grid-column: 1 / -1; }
.aw-label { margin-bottom: 9px; font: 500 20px/28px "Rubik", var(--font-body); color: #000; }
.aw-req { color: #e02b2b; }
.aw-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px 27px; }
.wpcf7-form-control-wrap { display: block; }
.wpcf7 .hidden-fields-container { display: none; }
.wpcf7 form.init .wpcf7-response-output, .wpcf7 .wpcf7-response-output:empty { display: none; }
.wpcf7 input[type="text"], .wpcf7 input[type="email"], .wpcf7 input[type="tel"], .wpcf7 select, .wpcf7 textarea {
	display: block;
	width: 100%;
	height: 55px;
	padding: 0 19.2px;
	font: 400 16px/28px "Rubik", var(--font-body);
	color: var(--aw-text);
	background: #fff;
	border: 1px solid #c4c4c4;
	border-radius: 10px;
	transition: border-color .2s ease, box-shadow .2s ease;
	appearance: none;
}
.wpcf7 select {
	padding-right: 56px;
	background: #fff url("../svg/select-chevron.svg") no-repeat right 23.5px center / 19px 10.37px;
	cursor: pointer;
}
.wpcf7 select:invalid, .wpcf7 select.aw-placeholder { color: #697181; }
.wpcf7 textarea { height: 159.81px; padding-top: 13.5px; padding-bottom: 13.5px; resize: vertical; }
.aw-form--contact textarea { height: 98.29px; }
.wpcf7 input::placeholder, .wpcf7 textarea::placeholder { color: #697181; opacity: 1; }
.wpcf7 input:focus, .wpcf7 select:focus, .wpcf7 textarea:focus { outline: none; border-color: var(--aw-gold); box-shadow: 0 0 0 3px rgba(203, 164, 78, .2); }
.aw-field--submit { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 13.6px; }
.aw-form--contact .aw-field--submit { margin-top: 0; }
/* CF7 strips inline SVG from forms, so the button's ↗ icon is drawn with a mask */
.aw-field--submit .btn::after {
	content: ""; width: 16px; height: 16px; flex: none; background: currentColor;
	-webkit-mask: url("../svg/icon-upright.svg") no-repeat center / contain;
	        mask: url("../svg/icon-upright.svg") no-repeat center / contain;
	transition: transform .2s ease;
}
.aw-field--submit .btn:hover::after { transform: translate(2px, -2px); }
.wpcf7 .wpcf7-spinner { margin: 0; }
.wpcf7-not-valid-tip { margin-top: 6px; font-size: 13px; color: #c0392b; }
.wpcf7 form .wpcf7-response-output { margin: 24px 0 0; padding: 12px 16px; border-radius: var(--radius-8); font-size: 15px; }
.grecaptcha-badge { visibility: hidden; } /* reCAPTCHA v3 badge hidden – notice under the forms instead */
.recaptcha-notice { margin-top: 16px; font-size: 13px; line-height: 20px; color: #697181; }
.recaptcha-notice a { text-decoration: underline; }
.recaptcha-notice a:hover { color: var(--aw-text); }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
/* Placeholder with a red * (Contact form): text sits over the empty field, hides once typed in */
.aw-ph-field { position: relative; }
.aw-ph {
	position: absolute; left: 20.2px; right: 20px; top: 13.5px;
	font: 400 16px/28px "Rubik", var(--font-body); color: #697181;
	white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none;
}
.aw-ph-field--area .aw-ph { top: 14.5px; }
.aw-ph-field:has(input:not(:placeholder-shown), textarea:not(:placeholder-shown)) .aw-ph { display: none; }
.form-notice { padding: 16px; border-radius: var(--radius-8); background: var(--aw-cream); color: var(--aw-text); }

/* Generic content pages */
.prose-section { padding: 72px 0 96px; }
.prose { max-width: 800px; font-size: 18px; line-height: 30px; color: var(--aw-text-2); }
.prose > * + * { margin-top: 1em; }
.prose h2, .prose h3 { font-family: var(--font-head); color: var(--aw-text); line-height: 1.25; margin-top: 1.6em; }
.prose a { color: var(--aw-navy); text-decoration: underline; text-decoration-color: var(--aw-gold); }
.prose ul { list-style: disc; padding-left: 1.2em; }

/* ==========================================================================
   Responsive
   ========================================================================== */

/* ≥1440 – the Figma card row is 1444px wide (26px gaps) */
@media (min-width: 1520px) {
	.offer__cards { gap: 26px; margin-left: -4px; }
}

/* ≤1439 – content narrower than the design, keep layout */
@media (max-width: 1439px) {
	.hero__ghost { display: none; }
	.highlights__card { padding-inline: clamp(32px, 4.2vw, 60px); column-gap: clamp(32px, 3.3vw, 48px); }
	.highlight + .highlight::before { left: calc(clamp(32px, 3.3vw, 48px) / -2); }
	.steps { column-gap: clamp(32px, 5vw, 72px); }
	.step__connector { width: auto; flex: 1 1 auto; min-width: 40px; }
	.service-row { grid-template-columns: minmax(0, 1fr) minmax(420px, 586px); }
	.values__inner { grid-template-columns: minmax(0, 1fr) minmax(0, 708px); }
	.values__head .h2 { margin-right: 0; }
}

/* ≤1199 – compact desktop / tablet landscape */
@media (max-width: 1199px) {
	.brand__img { width: 260px; height: 42px; }
	.primary-nav__list { gap: 24px; }
	.site-nav { gap: 24px; }

	.highlights__card { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 40px; padding-block: 40px; }
	.highlight:nth-child(3)::before { display: none; }

	.offer__cards { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 88px; }
	.offer-card:last-child:nth-child(odd) { grid-column: 1 / -1; }

	.values__inner { grid-template-columns: 1fr; row-gap: 48px; }
	.values__head .h2 { max-width: 820px; }

	.service-row { grid-template-columns: 1fr; row-gap: 32px; }
	.service-row__main { min-height: 0; max-width: 820px; }
	.included { max-width: 720px; }

	.site-footer__top { grid-template-columns: minmax(0, 1fr) 180px 300px; column-gap: 40px; }
}

/* ≤1099 – stacked heroes + mobile navigation */
@media (max-width: 1099px) {
	/* Navigation */
	.site-header__inner { height: 80px; }
	.brand__img { width: 220px; height: 36px; }
	.nav-toggle {
		display: inline-grid; place-items: center;
		width: 48px; height: 48px; margin-left: auto; margin-right: -12px;
		background: none; border: 0; color: #fff; cursor: pointer;
	}
	.nav-toggle__bars { display: grid; gap: 5px; width: 24px; }
	.nav-toggle__bars span { display: block; height: 2px; background: currentColor; border-radius: 2px; transition: transform .25s ease, opacity .25s ease; }
	.nav-open .nav-toggle__bars span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
	.nav-open .nav-toggle__bars span:nth-child(2) { opacity: 0; }
	.nav-open .nav-toggle__bars span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
	.site-nav {
		position: absolute; left: 0; right: 0; top: 100%;
		flex-direction: column; align-items: stretch; gap: 24px;
		margin: 0; padding: 8px var(--gutter) 32px;
		background: var(--aw-navy);
		border-top: 1px solid rgba(217, 223, 233, .15);
		box-shadow: 0 24px 40px rgba(0, 0, 0, .25);
		visibility: hidden; opacity: 0; transform: translateY(-8px);
		transition: opacity .2s ease, transform .2s ease, visibility 0s linear .2s;
	}
	.nav-open .site-nav { visibility: visible; opacity: 1; transform: none; transition: opacity .2s ease, transform .2s ease; }
	.primary-nav__list { flex-direction: column; align-items: stretch; gap: 0; }
	.primary-nav__list a { padding: 14px 0; font-size: 18px; border-bottom: 1px solid rgba(217, 223, 233, .12); }
	.primary-nav__list .current-menu-item > a, .primary-nav__list .current_page_item > a { color: var(--aw-gold); }
	.primary-nav__list .current-menu-item > a::after, .primary-nav__list .current_page_item > a::after { display: none; }
	.site-header__cta { width: 100%; }

	/* Heroes stack: copy, then photo */
	.hero__media { display: none; }
	.hero--home, .hero--about { min-height: 0; }
	.hero--home .hero__inner, .hero--about .hero__inner { padding: 48px 0 56px; display: flex; flex-direction: column; gap: 40px; }
	.hero--home .hero__copy, .hero--about .hero__copy, .hero--page .hero__copy { width: auto; max-width: 720px; }
	.hero__visual { position: relative; }
	.hero__img-mobile { display: block; width: 100%; height: auto; aspect-ratio: 1007 / 545; object-fit: cover; object-position: 62% 60%; border-radius: var(--radius-16); }
	.promise-card { position: absolute; left: 24px; top: auto; bottom: 24px; width: auto; }
	.hero--about .hero__img-mobile { aspect-ratio: 1007 / 632; object-position: 70% 55%; }

	.hero--page .hero__inner { min-height: 0; padding: 48px 0 0; display: flex; flex-direction: column; gap: 40px; }
	.page-hero__photo {
		position: relative; inset: auto; width: 100%; height: auto; aspect-ratio: 709 / 359;
		border-radius: 24px 24px 0 0; margin-bottom: 0;
		background-size: cover; background-position: 60% 40%;
	}
	.hero--plain .hero__inner { padding-bottom: 56px; }

	/* Contact Us: form card drops under the details */
	.hero--contact-us { min-height: 0; }
	.hero--contact-us .hero__inner { padding: 48px 0 64px; display: flex; flex-direction: column; gap: 40px; }
	.hero--contact-us .hero__copy { width: auto; max-width: 720px; }
	.contact-form-card { position: static; width: 100%; min-height: 0; padding: 40px 32px; }
	.contact-form-card .aw-form { max-width: none; }

	/* Offer band: no photos, every item is an outlined card (designer note) */
	.offer { padding: 64px 0; }
	.offer__bg, .offer__divider { display: none; }
	.offer__top {
		grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px;
		width: min(var(--container), calc(100% - 2 * var(--gutter))); margin-inline: auto;
	}
	.offer__cards { margin-top: 24px; }
	.offer-card--plain,
	.offer-card--left,
	.offer-card--right {
		justify-self: stretch; width: auto; margin: 0;
		gap: 24px; padding: 32px; justify-content: space-between;
		background: var(--aw-navy); border: 1px solid #697181; border-radius: var(--radius-12);
	}

	/* Steps stack */
	.steps { grid-template-columns: 1fr; row-gap: 40px; max-width: 560px; }
	.step__connector { display: none; }

	/* Footer */
	.site-footer__top { grid-template-columns: 1fr 1fr; row-gap: 32px; column-gap: 32px; }
	.site-footer__brand { grid-column: 1 / -1; }
}

/* ≤767 – phones */
@media (max-width: 767px) {
	.btn { min-width: 0; }
	.btn-row { flex-direction: column; align-items: stretch; width: 100%; }
	.btn-row .btn { width: 100%; }
	.hero__copy { gap: 22px; }
	.hero__title-main { letter-spacing: -1px; }
	.hero__call { font-size: 17px; }
	.hero__img-mobile { aspect-ratio: 4 / 3; }
	.hero--about .hero__img-mobile { aspect-ratio: 4 / 3; }
	.promise-card { left: 16px; bottom: 16px; padding: 14px 18px; gap: 12px; }
	.promise-card__icon { width: 40px; height: 40px; }
	.promise-card__text { font-size: 14px; line-height: 20px; }
	.page-hero__photo { aspect-ratio: 4 / 3; border-radius: 20px 20px 0 0; }

	.highlights { background: linear-gradient(var(--aw-navy) 0 40px, var(--aw-page) 40px); }
	.highlights__card { grid-template-columns: 1fr; row-gap: 0; padding: 8px 24px; }
	.highlight { display: grid; grid-template-columns: 56px 1fr; column-gap: 16px; align-items: center; padding: 20px 0; }
	.highlight + .highlight { border-top: 1px solid var(--aw-border); }
	.highlight + .highlight::before { display: none; }
	.highlight__icon { grid-row: span 2; width: 56px; height: 56px; margin: 0; }
	.highlight__icon svg { transform: scale(.8); }
	.highlight__title { font-size: 20px; line-height: 26px; margin: 0; }
	.highlight__text { font-size: 16px; line-height: 24px; }

	.services-intro { padding: 56px 0 40px; }
	.offer { padding: 48px 0; }
	.offer__top, .offer__cards { grid-template-columns: 1fr; gap: 16px; }
	.offer__cards { margin-top: 16px; }
	.offer-card,
	.offer-card--plain,
	.offer-card--left,
	.offer-card--right { padding: 24px; gap: 24px; }
	.offer-card__body { gap: 16px; }
	.offer-card__icon { width: 56px; height: 56px; }
	.offer-card__title { font-size: 20px; line-height: 28px; }
	.offer-card__text { font-size: 16px; line-height: 24px; }

	.process { padding: 64px 0 72px; }
	.steps { margin-top: 40px; }
	.step__head { gap: 16px; height: 64px; margin-bottom: 16px; }
	.step__num, .step__icon { width: 64px; height: 64px; }
	.process__action { margin-top: 40px; }

	.cta { padding-bottom: 48px; }
	.cta--band { background: linear-gradient(var(--aw-page) 0 64px, #fff 64px); }
	.cta__card { min-height: 0; padding: 40px 20px; border-radius: 20px; }
	.cta__blur--one { transform: scale(.6); transform-origin: 0 0; }
	.cta__blur--two { transform: scale(.6); transform-origin: 100% 0; }
	.cta__title { margin-top: 20px; }
	.cta__text { margin-top: 16px; }
	.cta .btn-row { margin-top: 32px; }

	.values { padding: 64px 0; }
	.value-grid { grid-template-columns: 1fr; row-gap: 16px; }
	.value-card { min-height: 0; padding: 24px; }

	.service-row { padding: 48px 0 !important; row-gap: 24px; }
	.service-row:first-child { padding-top: 56px !important; }
	.service-row__icon { width: 56px; height: 56px; margin-bottom: 24px; }
	.service-row__title { margin-bottom: 12px; }
	.included { padding: 24px; }

	.request { padding: 40px 0 64px; }
	.aw-form, .aw-pair { grid-template-columns: minmax(0, 1fr); }
	.aw-form { row-gap: 20px; }
	.aw-form--contact { row-gap: 11px; }
	.aw-label { font-size: 18px; line-height: 26px; margin-bottom: 8px; }
	.aw-field--submit .btn { width: 100%; }
	.contact-form-card { padding: 32px 20px; }
	.contact-form-card__title { font-size: 24px; line-height: 32px; margin-bottom: 20px; }
	.contact-details li { font-size: 18px; line-height: 26px; }

	.site-footer { padding-top: 40px; }
	.brand--footer .brand__img { width: 240px; height: 39px; }
	.site-footer__bottom { flex-direction: column; }
}

@media (max-width: 479px) {
	.site-footer__top { grid-template-columns: 1fr; }
	.brand__img { width: 190px; height: 31px; }
}

/* ==========================================================================
   Reveal animations (only when <html> has .aw-anim — see functions.php)
   Text rises line by line from behind a mask, blocks fade up, photos settle.
   ========================================================================== */
:root { --ease-out: cubic-bezier(.22, 1, .36, 1); }

/* Blocks: fade + rise */
.aw-anim :is(
	.hero__copy > :not(.hero__title):not(.check-list),
	.hero__title-sub,
	.check-list > li,
	.promise-card,
	.highlight,
	.section-head > :not(.h2),
	.offer-card,
	.step,
	.process__action,
	.cta__content > :not(.cta__title),
	.value-card,
	.service-row__main > :not(.service-row__title),
	.included,
	.contact-details > li,
	.contact-form-card,
	.request__form
):not(.is-in) {
	opacity: 0;
	transform: translate3d(0, 28px, 0);
}
.aw-anim .rv {
	transition:
		opacity .8s var(--ease-out) var(--rv-d, 0s),
		transform 1s var(--ease-out) var(--rv-d, 0s);
}

/* Photos: fade in while settling from a slight zoom */
.aw-anim :is(.hero__photo, .hero__img-mobile, .page-hero__photo, .offer__photo):not(.is-in) {
	opacity: 0;
	transform: scale(1.04);
}
.aw-anim .rv-photo {
	transition: opacity 1.1s var(--ease-out) var(--rv-d, 0s), transform 1.6s var(--ease-out) var(--rv-d, 0s);
}
.aw-anim .hero__ghost { opacity: 0; transition: opacity 1.6s var(--ease-out) .3s; }
.aw-anim.aw-anim-ready .hero__ghost { opacity: .4; }

/* Headings: hidden until split into lines, then each line slides up */
.aw-anim :is(.hero__title-main, .section-head .h2, .cta__title, .service-row__title):not(.rv-split) { visibility: hidden; }
.rv-line { display: block; overflow: hidden; padding-bottom: .12em; margin-bottom: -.12em; }
.rv-line > span { display: inline-block; transform: translate3d(0, 110%, 0); transition: transform 1.05s var(--ease-out) calc(var(--rv-d, 0s) + var(--rv-i, 0) * 90ms); }
.rv-split.is-in .rv-line > span { transform: none; }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}


