/* ==========================================================================
   Ironvale Builders: fonts, tokens, base styles and component utilities.
   Colors read Elementor's Global Colors, so Site Settings controls them.
   ========================================================================== */

@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 600; font-display: swap; src: url("../fonts/barlow-condensed-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 700; font-display: swap; src: url("../fonts/barlow-condensed-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family: "Barlow"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/barlow-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Barlow"; font-style: italic; font-weight: 400; font-display: swap; src: url("../fonts/barlow-latin-400-italic.woff2") format("woff2"); }
@font-face { font-family: "Barlow"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/barlow-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "Barlow"; font-style: normal; font-weight: 600; font-display: swap; src: url("../fonts/barlow-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/ibm-plex-mono-latin-500-normal.woff2") format("woff2"); }

:root {
	--iv-ink: var(--e-global-color-primary, #111418);
	--iv-graphite: var(--e-global-color-secondary, #1c2127);
	--iv-muted: var(--e-global-color-text, #5e6670);
	--iv-ember: var(--e-global-color-accent, #e2621b);
	--iv-steel: var(--e-global-color-steel, #3b4450);
	--iv-concrete: var(--e-global-color-concrete, #e8e4dd);
	--iv-paper: var(--e-global-color-paper, #f6f4f0);
	--iv-white: var(--e-global-color-white, #fff);
	--iv-ember-dark: var(--e-global-color-emberdark, #b84d12);
	--iv-light-muted: #a7aeb6;
	--iv-line-dark: rgba(255, 255, 255, .08);
	--iv-lift: 0 18px 40px -24px rgba(17, 20, 24, .35);
	--iv-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
	--iv-condensed: "Barlow Condensed", "Arial Narrow", Arial, sans-serif;
}

html { -webkit-text-size-adjust: 100%; scroll-padding-top: 96px; }
body { overflow-x: clip; }
img { max-width: 100%; height: auto; }
.iv-menu-open, .iv-menu-open body { overflow: hidden; }

/* Focus and skip link */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible, [tabindex]:focus-visible {
	outline: 2px solid var(--iv-ember-dark);
	outline-offset: 3px;
}
.iv-section-dark a:focus-visible, .iv-header a:focus-visible, .iv-footer a:focus-visible, .iv-mobile-panel a:focus-visible, .iv-section-dark button:focus-visible { outline-color: var(--iv-ember); }
.skip-link.screen-reader-text:focus {
	position: fixed; top: 8px; left: 8px; z-index: 100000; clip: auto; clip-path: none; width: auto; height: auto;
	padding: 16px 24px; background: var(--iv-white); color: var(--iv-ink); font-weight: 600;
}

/* Eyebrow: mono "drawing sheet number" label */
.iv-eyebrow .elementor-heading-title { letter-spacing: 3px; }

/* Text link */
.iv-link a, a.iv-link {
	color: var(--iv-ember-dark);
	font-weight: 600;
	text-decoration: underline;
	text-decoration-thickness: 1.5px;
	text-underline-offset: 4px;
	transition: color .2s ease;
}
.iv-link a:hover { color: var(--iv-ink); }
.iv-link--on-dark a { color: var(--iv-ember); }
.iv-link--on-dark a:hover { color: var(--iv-white); }

/* Buttons: arrow slides 4px on hover */
.elementor-button { transition: background-color .25s ease, color .25s ease, border-color .25s ease; }
.elementor-button .elementor-button-icon svg { width: 18px; height: 18px; }
.elementor-button .elementor-button-icon { transition: transform .25s ease; }
.elementor-button:hover .elementor-button-icon { transform: translateX(4px); }
.elementor-button .elementor-button-content-wrapper { align-items: center; }

/* Lucide icons: stroke, not fill */
svg.lucide { fill: none !important; stroke: currentColor; }
.elementor-icon svg.lucide { width: 1em; height: 1em; }
/* Elementor only sets fill on list icons, so stroke follows the section tone through Global Colors. */
.elementor-icon-list-icon svg.lucide { stroke: var(--iv-ember-dark); width: var(--e-icon-list-icon-size, 20px); height: var(--e-icon-list-icon-size, 20px); }
.iv-section-dark .elementor-icon-list-icon svg.lucide, .iv-header .elementor-icon-list-icon svg.lucide, .iv-footer .elementor-icon-list-icon svg.lucide { stroke: var(--iv-ember); }

/* Blueprint grid on dark sections */
.iv-grid-bg { background-image: url("../img/pattern-blueprint-grid.svg"); background-size: 80px 80px; }

/* --------------------------------------------------------------------------
   Header
   -------------------------------------------------------------------------- */
.iv-header { position: absolute; top: 0; left: 0; width: 100%; z-index: 100; }
.iv-mainbar { transition: background-color .25s ease, min-height .25s ease, border-color .25s ease; border-bottom: 1px solid transparent; }
.iv-mainbar.elementor-sticky--effects { background-color: var(--iv-ink); min-height: 72px; border-bottom-color: var(--iv-line-dark); }
.iv-logo { flex: 0 0 188px; width: 188px; }
.iv-logo img { display: block; width: 188px !important; max-width: none !important; height: auto; }
@media (max-width: 767px) { .iv-logo { flex-basis: 160px; width: 160px; } .iv-logo img { width: 160px !important; } }
.iv-logo a { display: block; }

.iv-nav .elementor-nav-menu--main .elementor-item { font-family: "Barlow", sans-serif; font-weight: 500; font-size: 16px; color: var(--iv-white); padding: 12px 14px; }
.iv-nav .elementor-nav-menu--main .elementor-item:hover, .iv-nav .elementor-nav-menu--main .elementor-item:focus { color: var(--iv-white); }
.iv-nav .elementor-nav-menu--main .elementor-item::after { background-color: var(--iv-ember) !important; height: 2px !important; }
.iv-nav .sub-arrow svg { width: 10px; height: 10px; fill: currentColor; }
.iv-nav > .elementor-widget-container > nav.elementor-nav-menu--dropdown, .iv-nav > nav.elementor-nav-menu--dropdown, .iv-nav .elementor-menu-toggle { display: none !important; }
.iv-nav .elementor-nav-menu--main .sub-menu {
	background: var(--iv-graphite);
	border: 1px solid var(--iv-line-dark);
	border-radius: 2px;
	padding: 8px;
	box-shadow: 0 24px 48px -24px rgba(0, 0, 0, .6);
	min-width: 220px;
}
.iv-nav .elementor-nav-menu--main .sub-menu a {
	color: var(--iv-white);
	font-family: "Barlow", sans-serif;
	font-weight: 500;
	font-size: 15px;
	padding: 12px 16px;
	border-radius: 2px;
	white-space: normal;
	background: transparent;
}
.iv-nav .elementor-nav-menu--main .sub-menu a:hover, .iv-nav .elementor-nav-menu--main .sub-menu a:focus { background: rgba(255, 255, 255, .06); color: var(--iv-ember); }

/* Mega dropdown: 2 columns of services + image card (menu item class iv-mega-card) */
@media (min-width: 1025px) {
	.iv-nav .elementor-nav-menu--main > .elementor-nav-menu > .menu-item:first-child > .sub-menu {
		width: 720px !important;
		max-width: 720px !important;
		grid-template-columns: 1fr 1fr 240px;
		grid-auto-rows: min-content;
		gap: 4px 8px;
		padding: 16px;
	}
	.iv-nav .elementor-nav-menu--main > .elementor-nav-menu > .menu-item:first-child > .sub-menu[style*="display: block"] { display: grid !important; }
	.iv-nav .iv-mega-card { grid-column: 3; grid-row: 1 / span 3; }
	.iv-nav .elementor-nav-menu--main .iv-mega-card > a,
	.iv-nav .elementor-nav-menu--main .iv-mega-card > a:hover,
	.iv-nav .elementor-nav-menu--main .iv-mega-card > a:focus {
		height: 100%;
		min-height: 176px;
		display: flex;
		align-items: flex-end;
		font-family: var(--iv-condensed);
		font-weight: 600;
		font-size: 22px;
		line-height: 1.2;
		background: linear-gradient(0deg, rgba(17, 20, 24, .85), rgba(17, 20, 24, .1)), var(--iv-mega-image, none) center / cover no-repeat;
	}
}

/* Burger */
.iv-burger .elementor-button { background: transparent !important; border: 1.5px solid rgba(255, 255, 255, .4); color: var(--iv-white) !important; padding: 12px 16px; min-height: 44px; font-family: var(--iv-mono); font-size: 12px; letter-spacing: 2px; }
.iv-burger .elementor-button:hover { background: var(--iv-white) !important; color: var(--iv-ink) !important; }

/* Off-canvas mobile panel */
.iv-mobile-panel {
	position: fixed !important;
	inset: 0;
	z-index: 200;
	overflow-y: auto;
	transform: translateX(100%);
	visibility: hidden;
	transition: transform .3s ease, visibility .3s;
}
.iv-mobile-panel.is-open { transform: none; visibility: visible; }
.elementor-editor-active .iv-mobile-panel { position: static !important; transform: none; visibility: visible; }
.iv-panel-nav .elementor-nav-menu--main { display: block !important; }
.iv-panel-nav > nav.elementor-nav-menu--dropdown, .iv-panel-nav > .elementor-widget-container > nav.elementor-nav-menu--dropdown, .iv-panel-nav .elementor-menu-toggle { display: none !important; }
.iv-panel-nav .elementor-item { font-family: var(--iv-condensed); font-weight: 600; font-size: 32px; line-height: 1.15; color: var(--iv-white) !important; padding: 12px 0 !important; border-bottom: 1px solid var(--iv-line-dark); }
.iv-panel-nav .elementor-item::after, .iv-panel-nav .elementor-item::before { display: none !important; }
.iv-panel-nav .sub-menu a { font-family: "Barlow", sans-serif; font-size: 18px; color: var(--iv-light-muted) !important; padding: 12px 0 12px 16px !important; background: transparent !important; }
.iv-panel-nav .sub-menu { background: transparent !important; border: 0; position: static !important; width: auto !important; }
.iv-panel-nav .sub-arrow { margin-left: auto; padding: 8px 8px 8px 24px; }
.iv-panel-nav .sub-arrow svg { width: 16px; height: 16px; fill: var(--iv-ember); }

/* --------------------------------------------------------------------------
   Sections and cards
   -------------------------------------------------------------------------- */
.iv-card { transition: box-shadow .3s ease, transform .3s ease; overflow: hidden; }
.iv-card:hover { box-shadow: var(--iv-lift); }
.iv-card-media { overflow: hidden; display: block; width: 100%; line-height: 0; }
.iv-card-media img { width: 100%; object-fit: cover; display: block; transition: transform .6s ease; }
.iv-card:hover .iv-card-media img { transform: scale(1.04); }
.iv-ratio-4x3 img { aspect-ratio: 4 / 3; }
.iv-ratio-3x2 img { aspect-ratio: 3 / 2; }
a.iv-card, a.iv-card:hover { color: inherit; text-decoration: none; }

/* Service card icon square */
.iv-card-top { position: relative; }
.iv-service-icon { position: absolute !important; left: 0; bottom: 0; width: 56px !important; line-height: 0; }
.iv-service-icon img { width: 56px; height: 56px; padding: 14px; background: var(--iv-ember); display: block; }
.iv-card:hover .iv-arrow-line .elementor-heading-title { color: var(--iv-ink); }
.iv-card-dark:hover .iv-arrow-line .elementor-heading-title { color: var(--iv-white); }

/* Dark project cards, asymmetric featured grid */
.iv-card-dark { position: relative; min-height: 100%; isolation: isolate; }
.iv-card-dark .iv-card-media { position: absolute !important; inset: 0; height: 100%; z-index: -2; }
.iv-card-dark .iv-card-media img { height: 100%; }
.iv-card-dark::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(0deg, rgba(17, 20, 24, .94) 40%, rgba(17, 20, 24, .15) 90%); pointer-events: none; }
.iv-featured-grid .elementor-loop-container { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 300px; gap: 24px; }
.iv-featured-grid .e-loop-item { height: 100%; }
.iv-featured-grid .e-loop-item > .e-con, .iv-featured-grid .e-loop-item .iv-card-dark { height: 100%; }
.iv-featured-grid .e-loop-item:first-of-type { grid-column: span 2; grid-row: span 2; }
.iv-featured-grid .e-loop-item:first-of-type h3 { font-size: 44px; }
@media (max-width: 1024px) {
	.iv-featured-grid .elementor-loop-container { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
	.iv-featured-grid .elementor-loop-container { grid-template-columns: minmax(0, 1fr); grid-auto-rows: 280px; }
	.iv-featured-grid .e-loop-item:first-of-type { grid-column: auto; grid-row: auto; }
	.iv-featured-grid .e-loop-item:first-of-type h3 { font-size: 26px; }
}

/* Zig-zag services */
@media (min-width: 768px) {
	.iv-zigzag .e-loop-item:nth-of-type(even) .iv-service-row { flex-direction: row-reverse; }
}

/* Stat blocks */
.iv-stat .elementor-counter-title { letter-spacing: 3px; text-align: left; }
.iv-stat .elementor-counter { flex-direction: column-reverse; align-items: flex-start; gap: 8px; display: flex; }
.iv-stat .elementor-counter-number-wrapper { justify-content: flex-start; line-height: 1; }
.iv-stat + .iv-stat { border-left: 1px solid var(--iv-line-dark); }
.iv-stat:first-child { padding-left: 0 !important; }
@media (max-width: 767px) {
	.iv-stat:nth-child(odd) { border-left: 0; padding-left: 0 !important; }
	.iv-stat:nth-child(n+3) { border-top: 1px solid var(--iv-line-dark); }
}

/* Timeline on Home */
.iv-step { position: relative; border-top: 2px solid var(--iv-concrete); }
.iv-step::before { content: ""; position: absolute; top: -7px; left: 0; width: 12px; height: 12px; background: var(--iv-ember); }
@media (max-width: 767px) {
	.iv-step { border-top: 0; border-left: 2px solid var(--iv-concrete); padding-left: 24px !important; }
	.iv-step::before { top: 0; left: -7px; }
}

/* Vertical milestones */
.iv-milestone { border-left: 2px solid var(--iv-concrete); position: relative; }
.iv-milestone::before { content: ""; position: absolute; left: -7px; top: 6px; width: 12px; height: 12px; background: var(--iv-ember); }

/* Hero featured card */
.iv-home-hero { position: relative; overflow: visible; z-index: 2; }
.iv-hero-card { position: absolute !important; right: max(32px, calc((100% - 1280px) / 2)); bottom: -48px; z-index: 5; width: 360px !important; }
@media (max-width: 1024px) { .iv-hero-card { display: none !important; } }
.iv-hero-card .iv-card-media img { aspect-ratio: 16 / 9; }

/* Offset frame on the About image */
.iv-offset-frame { position: relative; }
.iv-offset-frame::before { content: ""; position: absolute; top: 16px; left: 16px; right: -16px; bottom: -16px; border: 2px solid var(--iv-ember); z-index: 0; pointer-events: none; }
.iv-offset-frame > * { position: relative; z-index: 1; }
.iv-float-stat { position: absolute !important; left: -24px; bottom: 32px; z-index: 2; width: auto !important; }
@media (max-width: 767px) { .iv-float-stat { left: 0; } .iv-offset-frame::before { right: -8px; bottom: -8px; left: 8px; top: 8px; } }

/* Sticky card */
@media (min-width: 1025px) { .iv-sticky-card { position: sticky; top: 104px; align-self: flex-start; } }

/* Fact bar */
.iv-fact + .iv-fact { border-left: 1px solid var(--iv-line-dark); padding-left: 24px; }
@media (max-width: 1024px) { .iv-fact + .iv-fact { border-left: 0; padding-left: 0; } }

/* --------------------------------------------------------------------------
   Lists and FAQ from dynamic tags
   -------------------------------------------------------------------------- */
.iv-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; }
.iv-list--checks li, .iv-list--plain li { position: relative; padding-left: 32px; color: var(--iv-ink); line-height: 1.5; }
.iv-list--checks li::before {
	content: ""; position: absolute; left: 0; top: 2px; width: 20px; height: 20px; background: var(--iv-ember-dark);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;
}
.iv-list--plain li { padding-left: 16px; }
.iv-list--plain li::before { content: ""; position: absolute; left: 0; top: 10px; width: 6px; height: 6px; background: var(--iv-ember-dark); }
.iv-section-dark .iv-list--checks li, .iv-section-dark .iv-list--plain li { color: var(--iv-white); }
.iv-section-dark .iv-list--checks li::before { background: var(--iv-ember); }
.iv-list-2col .iv-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 32px; }
@media (max-width: 767px) { .iv-list-2col .iv-list { grid-template-columns: minmax(0, 1fr); } }
.iv-list--numbered { counter-reset: iv-step; gap: 0; }
.iv-list--numbered li { counter-increment: iv-step; display: grid; grid-template-columns: 72px 1fr; column-gap: 16px; padding: 24px 0; border-top: 1px solid var(--iv-concrete); }
.iv-list--numbered li::before { content: counter(iv-step, decimal-leading-zero); font-family: var(--iv-mono); font-weight: 500; font-size: 28px; line-height: 1; color: var(--iv-ember-dark); grid-row: span 2; }
.iv-list--numbered strong { font-family: var(--iv-condensed); font-weight: 600; font-size: 22px; line-height: 1.2; color: var(--iv-ink); display: block; margin-bottom: 8px; }
.iv-list--numbered span { color: var(--iv-muted); }

.iv-faq__item { border-top: 1px solid var(--iv-concrete); }
.iv-faq__item:last-child { border-bottom: 1px solid var(--iv-concrete); }
.iv-faq__item summary { list-style: none; cursor: pointer; padding: 24px 40px 24px 0; font-family: var(--iv-condensed); font-weight: 600; font-size: 22px; line-height: 1.2; color: var(--iv-ink); position: relative; }
.iv-faq__item summary::-webkit-details-marker { display: none; }
.iv-faq__item summary::after { content: "+"; position: absolute; right: 8px; top: 20px; font-size: 28px; color: var(--iv-ember-dark); font-family: var(--iv-mono); font-weight: 500; }
.iv-faq__item[open] summary::after { content: "\2212"; }
.iv-faq__answer { padding: 0 40px 24px 0; color: var(--iv-muted); }

/* Nested accordion matches the FAQ look */
.iv-accordion .e-n-accordion-item { border-top: 1px solid var(--iv-concrete); }
.iv-accordion .e-n-accordion-item:last-child { border-bottom: 1px solid var(--iv-concrete); }
.iv-accordion .e-n-accordion-item-title { padding: 24px 0; min-height: 44px; background: transparent !important; border: 0 !important; }
.iv-accordion .e-n-accordion-item-title-text { font-family: var(--iv-condensed); font-weight: 600; font-size: 22px; line-height: 1.2; color: var(--iv-ink); }
.iv-accordion .e-n-accordion-item-title-icon svg { fill: var(--iv-ember-dark); width: 18px; height: 18px; }
.iv-accordion .e-n-accordion-item > [role="region"], .iv-accordion .e-n-accordion-item > .e-con { padding: 0 40px 24px 0; border: 0 !important; }

/* Text editor paragraph rhythm */
.elementor-widget-text-editor p { margin: 0 0 16px; }
.elementor-widget-text-editor p:last-child { margin-bottom: 0; }
.iv-measure { max-width: 720px; }

/* --------------------------------------------------------------------------
   Before/After widget
   -------------------------------------------------------------------------- */
.iv-ba { --iv-ba-pos: 50%; --iv-ba-handle: var(--iv-ember); position: relative; overflow: hidden; width: 100%; border-radius: 2px; touch-action: pan-y; cursor: ew-resize; user-select: none; background: var(--iv-graphite); }
.iv-ba__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; pointer-events: none; max-width: none; }
/* The after image stays in flow, so the box keeps its height inside collapsed mobile rows. */
.iv-ba__img--after { position: relative; display: block; aspect-ratio: var(--iv-ba-ratio, 3 / 2); height: auto; }
.iv-ba__clip { position: absolute; inset: 0; clip-path: inset(0 calc(100% - var(--iv-ba-pos)) 0 0); }
.iv-ba__label { position: absolute; top: 16px; padding: 4px 12px; background: var(--iv-ink); color: var(--iv-white); font-family: var(--iv-mono); font-weight: 500; font-size: 12px; letter-spacing: 3px; text-transform: uppercase; }
.iv-ba__label--before { left: 16px; }
.iv-ba__label--after { right: 16px; }
.iv-ba__handle { position: absolute; top: 0; bottom: 0; left: var(--iv-ba-pos); width: 44px; margin-left: -22px; display: flex; align-items: center; justify-content: center; }
.iv-ba__handle::before { content: ""; position: absolute; top: 0; bottom: 0; left: 50%; width: 3px; margin-left: -1.5px; background: var(--iv-ba-handle); }
.iv-ba__grip { position: relative; width: 44px; height: 44px; background: var(--iv-ba-handle); border-radius: 2px; display: block; }
.iv-ba__grip::before, .iv-ba__grip::after { content: ""; position: absolute; top: 50%; width: 8px; height: 8px; border-left: 2px solid var(--iv-ink); border-bottom: 2px solid var(--iv-ink); }
.iv-ba__grip::before { left: 12px; transform: translateY(-50%) rotate(45deg); }
.iv-ba__grip::after { right: 12px; transform: translateY(-50%) rotate(225deg); }

/* Breadcrumbs */
.iv-breadcrumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 8px; font-family: var(--iv-mono); font-weight: 500; font-size: 12px; letter-spacing: 1px; text-transform: uppercase; line-height: 1.4; }
.iv-breadcrumbs li + li::before { content: "\203A"; margin-right: 8px; }
.iv-breadcrumbs--dark, .iv-breadcrumbs--dark a { color: var(--iv-light-muted); }
.iv-breadcrumbs--dark a:hover { color: var(--iv-white); }
.iv-breadcrumbs--light, .iv-breadcrumbs--light a { color: var(--iv-steel); }
.iv-breadcrumbs--light a:hover { color: var(--iv-ember-dark); }
.iv-breadcrumbs a { display: inline-block; padding: 4px 0; }

/* Taxonomy filter */
.iv-filter .e-filter { gap: 8px; flex-wrap: wrap; display: flex; }
.iv-filter .e-filter-item { font-family: var(--iv-mono); font-weight: 500; font-size: 13px; letter-spacing: 1px; text-transform: uppercase; padding: 12px 16px; min-height: 44px; border: 1px solid var(--iv-concrete); border-radius: 2px; background: var(--iv-white); color: var(--iv-ink); cursor: pointer; transition: background-color .2s ease, color .2s ease; }
.iv-filter .e-filter-item:hover, .iv-filter .e-filter-item:focus { background: var(--iv-ink); color: var(--iv-white); }
.iv-filter .e-filter-item[aria-pressed="true"] { background: var(--iv-ink); color: var(--iv-white); border-color: var(--iv-ink); }
.iv-filter .e-filter-item[data-filter="__all"] { order: 0; }
.iv-filter .e-filter-item[data-filter="custom-homes"] { order: 1; }
.iv-filter .e-filter-item[data-filter="remodels"] { order: 2; }
.iv-filter .e-filter-item[data-filter="kitchens-baths"] { order: 3; }
.iv-filter .e-filter-item[data-filter="additions"] { order: 4; }
.iv-filter .e-filter-item[data-filter="commercial"] { order: 5; }

/* Map */
.iv-map iframe { filter: grayscale(1) contrast(1.05); display: block; }

/* Reviews carousel */
.iv-reviews .elementor-testimonial__image img { border-radius: 50%; width: 48px; height: 48px; }
.iv-reviews .swiper-slide { border-radius: 2px; }
.iv-reviews .elementor-swiper-button { min-width: 44px; min-height: 44px; display: flex; align-items: center; justify-content: center; }

/* Masonry testimonials */
.iv-masonry > .e-con-inner { display: block !important; columns: 3; column-gap: 24px; }
.iv-masonry .iv-masonry-item { break-inside: avoid; margin-bottom: 24px; width: 100% !important; }
@media (max-width: 1024px) { .iv-masonry > .e-con-inner { columns: 2; } }
@media (max-width: 767px) { .iv-masonry > .e-con-inner { columns: 1; } }
.iv-testimonial .elementor-testimonial-image img { border-radius: 50%; width: 48px !important; height: 48px !important; }
.iv-testimonial .elementor-testimonial-wrapper { text-align: left; }
.iv-testimonial .elementor-testimonial-meta-inner { display: flex; align-items: center; gap: 16px; }

/* Forms */
.iv-form .elementor-field-group { margin-bottom: 8px; }
.iv-form .elementor-field-label { font-family: "Barlow", sans-serif; font-weight: 600; font-size: 15px; color: var(--iv-ink); margin-bottom: 8px; display: block; }
.iv-form .elementor-field-textual, .iv-form select.elementor-field { min-height: 52px; background: var(--iv-white); border: 1px solid #6f7680; border-radius: 2px; font-family: "Barlow", sans-serif; font-size: 16px; color: var(--iv-ink); padding: 12px 16px; }
.iv-form textarea.elementor-field-textual { min-height: 120px; }
.iv-form .elementor-field-textual:focus, .iv-form select.elementor-field:focus { border-color: var(--iv-ember-dark); box-shadow: 0 0 0 1px var(--iv-ember-dark); outline: none; }
.iv-form .elementor-select-wrapper::before { color: var(--iv-ink); }
.iv-form .elementor-message.elementor-message-danger, .iv-form .elementor-error .elementor-message { color: #a3160a; }
.iv-form .elementor-field-type-acceptance label, .iv-form .elementor-field-subgroup label { color: var(--iv-ink); font-size: 15px; }
.iv-form .elementor-field-type-acceptance a { color: var(--iv-ember-dark); text-decoration: underline; text-underline-offset: 3px; }
.iv-form .e-form__buttons .elementor-button { min-height: 52px; }
.iv-form .e-form__buttons__wrapper__button-previous { background: transparent !important; color: var(--iv-ink) !important; border: 1.5px solid var(--iv-ink) !important; }
.iv-form .e-form__buttons__wrapper__button-previous:hover { background: var(--iv-ink) !important; color: var(--iv-white) !important; }
.iv-form .e-form__indicators__indicator__progress__meter { background: var(--iv-ember); color: var(--iv-ink); font-family: var(--iv-mono); font-size: 12px; }
.iv-form .e-form__indicators__indicator__progress { background: var(--iv-concrete); border-radius: 2px; }

/* Radio cards */
.iv-radio-cards.elementor-field-subgroup { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; width: 100%; }
.iv-radio-cards .elementor-field-option { margin: 0 !important; width: auto !important; position: relative; flex-basis: auto !important; max-width: none !important; }
.iv-radio-cards .elementor-field-option input { position: absolute; opacity: 0; width: 100%; height: 100%; cursor: pointer; margin: 0; }
.iv-radio-cards .elementor-field-option label { display: flex !important; align-items: center; min-height: 56px; padding: 12px 16px; background: var(--iv-white); border: 1px solid #6f7680; border-radius: 2px; font-weight: 600; font-size: 16px; color: var(--iv-ink); transition: background-color .2s ease, border-color .2s ease; margin: 0; }
.iv-radio-cards .elementor-field-option input:hover + label { border-color: var(--iv-ink); }
.iv-radio-cards .elementor-field-option input:checked + label { background: var(--iv-ink); color: var(--iv-white); border-color: var(--iv-ink); }
.iv-radio-cards .elementor-field-option input:focus-visible + label { outline: 2px solid var(--iv-ember-dark); outline-offset: 3px; }
.elementor-field-type-honeypot { display: none !important; }

/* Search form on 404 */
.iv-search .elementor-search-form__container { border-radius: 2px; min-height: 52px; }
.iv-search .elementor-search-form__input { font-family: "Barlow", sans-serif; }

/* Post navigation */
.iv-post-nav a { min-height: 44px; display: flex; }

/* Footer */
.iv-footer a { color: inherit; }
.iv-footer-menu .elementor-nav-menu--main .elementor-item { font-family: "Barlow", sans-serif; font-weight: 400; font-size: 16px; color: var(--iv-light-muted) !important; padding: 8px 0 !important; }
.iv-footer-menu .elementor-nav-menu--main .elementor-item:hover { color: var(--iv-white) !important; }
.iv-footer-menu .elementor-nav-menu--main .elementor-item::after, .iv-footer-menu .elementor-nav-menu--main .elementor-item::before { display: none !important; }
.iv-footer-menu > nav.elementor-nav-menu--dropdown, .iv-footer-menu > .elementor-widget-container > nav.elementor-nav-menu--dropdown, .iv-footer-menu .elementor-menu-toggle { display: none !important; }
.iv-footer-menu .elementor-nav-menu--main { display: block !important; }
.iv-footer-links a { color: var(--iv-light-muted); text-decoration: underline; text-underline-offset: 3px; display: inline-block; padding: 8px 0; }
.iv-footer-links a:hover { color: var(--iv-white); }
.iv-footer-cities a { color: var(--iv-light-muted); display: inline-block; padding: 6px 0; }
.iv-footer-cities a:hover { color: var(--iv-white); }
.iv-is-estimate .iv-prefooter, .iv-is-thanks .iv-prefooter { display: none; }

/* Mobile action bar */
.iv-mobile-bar { display: none; }
@media (max-width: 767px) {
	body { padding-bottom: calc(64px + env(safe-area-inset-bottom)); }
	body.iv-is-estimate { padding-bottom: 0; }
	.iv-mobile-bar {
		position: fixed; left: 0; right: 0; bottom: 0; z-index: 150; display: grid; grid-template-columns: 1fr 1fr;
		padding-bottom: env(safe-area-inset-bottom); background: var(--iv-ink);
	}
	.iv-mobile-bar a { display: flex; align-items: center; justify-content: center; gap: 8px; height: 64px; font-family: "Barlow", sans-serif; font-weight: 600; font-size: 16px; text-transform: uppercase; letter-spacing: 1px; text-decoration: none; }
	.iv-mobile-bar a.iv-mobile-bar__call { background: var(--iv-ink); color: var(--iv-white); }
	.iv-mobile-bar a.iv-mobile-bar__estimate { background: var(--iv-ember); color: var(--iv-ink); }
}

/* Entrance motion: fade up 24px, 500ms */
@keyframes ivFadeUp { from { opacity: 0; transform: translate3d(0, 24px, 0); } to { opacity: 1; transform: none; } }
.animated.fadeInUp { animation-name: ivFadeUp; animation-duration: .5s; }
@media (prefers-reduced-motion: reduce) {
	.elementor-invisible { visibility: visible !important; }
	.animated { animation: none !important; }
	* { scroll-behavior: auto !important; transition-duration: .01ms !important; }
}

/* Chips and small labels */
.iv-chip .elementor-heading-title { display: inline-block; padding: 6px 12px; border: 1px solid currentColor; border-radius: 2px; }
.iv-big-number .elementor-heading-title { font-family: var(--iv-mono); font-weight: 500; }
.iv-404 .elementor-heading-title { font-family: var(--iv-mono); font-weight: 500; font-size: clamp(120px, 24vw, 280px); line-height: 1; color: var(--iv-ember); letter-spacing: -8px; }
.iv-card-pad { border: 1px solid var(--iv-concrete); border-radius: 2px; }
.iv-section-dark .iv-card-pad { border-color: var(--iv-line-dark); }
.iv-blockquote .elementor-heading-title { font-family: var(--iv-condensed); font-weight: 600; font-size: clamp(28px, 4vw, 44px); line-height: 1.15; }
.iv-estimate-layout { min-height: min(100vh, 960px); }
.iv-estimate-side .elementor-icon-list-text { color: var(--iv-white); }
.iv-post-nav .post-navigation__prev--title, .iv-post-nav .post-navigation__next--title { font-family: var(--iv-condensed); font-weight: 600; font-size: 22px; color: var(--iv-ink); }
.iv-post-nav .post-navigation__prev--label, .iv-post-nav .post-navigation__next--label { font-family: var(--iv-mono); font-weight: 500; font-size: 12px; letter-spacing: 3px; text-transform: uppercase; color: var(--iv-ember-dark); }

/* Ember Dark is only 4.0:1 on Concrete, so small accent text there uses Ink. */
.iv-tone-concrete .iv-eyebrow:not(.iv-card .iv-eyebrow, .iv-card-pad .iv-eyebrow) .elementor-heading-title { color: var(--iv-ink); }
.iv-tone-concrete .iv-link a { color: var(--iv-ink); }
.iv-tone-concrete .elementor-icon-list-icon svg.lucide { stroke: var(--iv-ink); }
.elementor-button { white-space: nowrap; }

/* The panel lives in the header's stacking context, so the header rises above the mobile bar. */
.iv-menu-open .iv-header { z-index: 300; }
@media (min-width: 1025px) {
	.iv-estimate-side { padding-left: max(32px, calc((100vw - 1280px) / 2)) !important; }
	.iv-estimate-form { padding-right: max(32px, calc((100vw - 1280px) / 2)) !important; }
}
.iv-form .elementor-button[type="submit"], .iv-form .e-form__buttons__wrapper__button-next { background-color: var(--iv-ember); color: var(--iv-ink); }
.iv-form .elementor-button[type="submit"]:hover, .iv-form .e-form__buttons__wrapper__button-next:hover { background-color: var(--iv-ember-dark); color: var(--iv-white); }

/* Carousel dots keep a 44px tap target around a small visible dot. */
.iv-reviews .swiper-pagination-bullet { position: relative; width: 44px; height: 44px; margin: 0 !important; background: transparent !important; opacity: 1; }
.iv-reviews .swiper-pagination-bullet::before { content: ""; position: absolute; top: 50%; left: 50%; width: 10px; height: 10px; margin: -5px 0 0 -5px; background: rgba(255, 255, 255, .35); }
.iv-reviews .swiper-pagination-bullet-active::before { background: var(--iv-ember); }
.iv-reviews .swiper-pagination { position: static; margin-top: 8px; }

/* Icon box title links keep a 44px tap target. */
.elementor-icon-box-title a { display: inline-block; padding: 10px 0; margin: -10px 0; }
.elementor-icon-box-icon a { display: inline-flex; min-width: 44px; min-height: 44px; align-items: center; }

/* Keyboard users: dropdowns open while focus is inside them. */
.iv-nav nav.elementor-nav-menu--main .menu-item:focus-within > .sub-menu { display: block !important; position: absolute; top: 100%; left: 0; }
@media (min-width: 1025px) {
	.iv-nav nav.elementor-nav-menu--main > ul > .menu-item:first-child:focus-within > .sub-menu { display: grid !important; }
}

/* The current crumb has no link, so it gets the same padding to stay on the baseline. */
.iv-breadcrumbs [aria-current] { padding: 4px 0; }

/* ==========================================================================
   Content section components
   ========================================================================== */

/* Lead paragraph: the first paragraph of post content carries the section. */
.iv-lead p:first-of-type { font-size: 24px; line-height: 1.5; color: var(--iv-ink); }
@media (max-width: 767px) { .iv-lead p:first-of-type { font-size: 20px; } }

/* Spec-sheet grid: hairline cells, like a schedule on a drawing sheet. */
.iv-list--cells { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; background: var(--iv-concrete); border: 1px solid var(--iv-concrete); border-radius: 2px; overflow: hidden; }
.iv-list--cells li { position: relative; display: flex; align-items: center; min-height: 80px; padding: 20px 24px 20px 76px; background: var(--iv-white); color: var(--iv-ink); font-weight: 500; line-height: 1.4; transition: background-color .2s ease; }
.iv-list--cells li:hover { background: var(--iv-paper); }
.iv-list--cells li::before { content: ""; position: absolute; left: 24px; top: 24px; width: 32px; height: 32px; background: rgba(226, 98, 27, .12); border-radius: 2px; }
.iv-list--cells li::after {
	content: ""; position: absolute; left: 31px; top: 31px; width: 18px; height: 18px; background: var(--iv-ember-dark);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;
}
.iv-cells-3 .iv-list--cells { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.iv-cells-3 .iv-list--cells li { align-items: flex-start; font-weight: 400; }
.iv-section-dark .iv-list--cells { background: var(--iv-line-dark); border-color: var(--iv-line-dark); }
.iv-section-dark .iv-list--cells li { background: var(--iv-ink); color: var(--iv-white); }
.iv-section-dark .iv-list--cells li:hover { background: var(--iv-graphite); }
.iv-section-dark .iv-list--cells li::after { background: var(--iv-ember); }
@media (max-width: 1024px) { .iv-cells-3 .iv-list--cells { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 767px) {
	.iv-list--cells { grid-template-columns: minmax(0, 1fr); }
	.iv-list--cells li { min-height: 0; padding: 20px 20px 20px 64px; }
	.iv-list--cells li::before { left: 16px; top: 18px; }
	.iv-list--cells li::after { left: 23px; top: 25px; }
}

/* Step timeline: numbered nodes joined by a rule. */
.iv-list--steps { counter-reset: iv-step; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 32px 0; }
.iv-list--steps li { counter-increment: iv-step; position: relative; padding: 80px 32px 0 0; color: var(--iv-muted); }
.iv-list--steps li::before { content: counter(iv-step, decimal-leading-zero); position: absolute; left: 0; top: 0; display: flex; align-items: center; justify-content: center; width: 56px; height: 56px; background: var(--iv-ember); color: var(--iv-ink); font-family: var(--iv-mono); font-weight: 500; font-size: 18px; border-radius: 2px; }
.iv-list--steps li::after { content: ""; position: absolute; left: 56px; right: 0; top: 28px; height: 1px; background: var(--iv-concrete); }
.iv-list--steps li:last-child::after { display: none; }
.iv-list--steps strong { display: block; margin-bottom: 8px; font-family: var(--iv-condensed); font-weight: 600; font-size: 26px; line-height: 1.15; color: var(--iv-ink); }
.iv-list--steps span { display: block; line-height: 1.55; }
.iv-section-dark .iv-list--steps li::after { background: rgba(255, 255, 255, .16); }
.iv-section-dark .iv-list--steps strong { color: var(--iv-white); }
.iv-section-dark .iv-list--steps span { color: var(--iv-light-muted); }
@media (max-width: 767px) {
	.iv-list--steps { grid-template-columns: minmax(0, 1fr); gap: 0; }
	.iv-list--steps li { padding: 8px 0 32px 80px; min-height: 96px; }
	.iv-list--steps li::after { left: 28px; right: auto; top: 56px; bottom: 0; width: 1px; height: auto; }
}

/* Neighborhood chips */
.iv-list--chips { display: flex; flex-wrap: wrap; gap: 8px; }
.iv-list--chips li { padding: 8px 14px; background: var(--iv-paper); border: 1px solid var(--iv-concrete); border-radius: 2px; color: var(--iv-ink); font-weight: 500; font-size: 15px; line-height: 1.4; }

/* "At a glance" card lifts over the hero edge */
.iv-glance { box-shadow: 0 32px 64px -32px rgba(17, 20, 24, .45); z-index: 3; }
@media (min-width: 1025px) { .iv-glance { margin-top: -168px; } }
.iv-glance-icon { flex: 0 0 auto; line-height: 0; }
.iv-glance-cell { transition: background-color .25s ease; }
.iv-glance-cell:hover { background-color: var(--iv-paper); }
.iv-glance-cell + .iv-glance-cell { border-left: 1px solid var(--iv-concrete); }
.iv-glance-cta .elementor-button { display: flex; justify-content: center; border-radius: 0; padding: 24px; }
@media (max-width: 767px) {
	.iv-glance-cell + .iv-glance-cell { border-left: 0; border-top: 1px solid var(--iv-concrete); }
}

/* Promise strip under the overview text */
.iv-promises { border-top: 1px solid var(--iv-concrete); }

/* Icon box cards */
.iv-box { background: var(--iv-white); border: 1px solid var(--iv-concrete); border-radius: 2px; padding: 32px; height: 100%; transition: box-shadow .3s ease, border-color .3s ease; }
.iv-box:hover { box-shadow: var(--iv-lift); border-color: var(--iv-ember); }
.iv-box .elementor-icon-box-icon .elementor-icon { display: flex; align-items: center; justify-content: center; width: 56px; height: 56px; background: rgba(226, 98, 27, .12); border-radius: 2px; }
.iv-section-dark .iv-box { background: rgba(255, 255, 255, .03); border-color: var(--iv-line-dark); }
.iv-section-dark .iv-box:hover { box-shadow: none; border-color: var(--iv-ember); }
.iv-section-dark .iv-box .elementor-icon-box-icon .elementor-icon { background: rgba(226, 98, 27, .16); }
@media (max-width: 767px) { .iv-box { padding: 24px; } }

/* Challenge / solution / result */
.iv-story { background: var(--iv-white); border: 1px solid var(--iv-concrete); border-top: 4px solid var(--iv-ember); border-radius: 2px; height: 100%; }
.iv-story--result { background: var(--iv-ink); border-color: var(--iv-ink); border-top-color: var(--iv-ember); }

/* Pull quote */
.iv-quote-mark { line-height: 0; }

/* Process: "What you get" panel */
.iv-panel { background: var(--iv-white); border: 1px solid var(--iv-concrete); border-radius: 2px; }
.iv-tone-white .iv-panel { background: var(--iv-paper); }

/* Accordions: quiet hover, and cards on Concrete */
.iv-accordion .e-n-accordion-item-title:hover .e-n-accordion-item-title-text, .iv-faq__item summary:hover { color: var(--iv-ember-dark); }
.iv-tone-concrete .iv-accordion .e-n-accordion-item { margin-bottom: 8px; padding: 0 24px; background: var(--iv-white); border: 1px solid var(--iv-concrete); border-radius: 2px; }
.iv-tone-concrete .iv-accordion .e-n-accordion-item:last-child { margin-bottom: 0; }

/* Larger step numbers on the About timeline */
.iv-year .elementor-heading-title { font-family: var(--iv-mono); font-weight: 500; letter-spacing: 0; }

/* Mono step numbers */
.iv-num .elementor-heading-title { font-size: 28px; line-height: 1; letter-spacing: 0; }
.iv-num--lg .elementor-heading-title { font-size: 56px; }
@media (max-width: 767px) { .iv-num--lg .elementor-heading-title { font-size: 44px; } }

/* Previous / next project: stacked on phones so titles are never cut off. */
@media (max-width: 767px) {
	.iv-post-nav .elementor-post-navigation { flex-direction: column; gap: 16px; }
	.iv-post-nav .elementor-post-navigation > * { width: 100%; max-width: 100%; }
	.iv-post-nav .post-navigation__prev--title, .iv-post-nav .post-navigation__next--title { white-space: normal; overflow: visible; text-overflow: clip; }
	.iv-post-nav .elementor-post-navigation__separator-wrapper { display: none; }
}

/* Search results */
.iv-search-card .iv-arrow-line { margin-top: auto; }

/* Team avatars are SVGs: a set ratio keeps them from spilling over the text below. */
.iv-avatar { flex: 0 0 auto; width: 100%; line-height: 0; }
.iv-avatar img { display: block; width: 100%; height: auto; aspect-ratio: 1 / 1; }

/* Before/After motion: no ring after a drag, a clear ring on the grip for keyboard users. */
.iv-ba { cursor: grab; }
.iv-ba.iv-ba--dragging { cursor: grabbing; }
.iv-ba__clip { will-change: clip-path; }
.iv-ba .iv-ba__img { height: 100%; }
.iv-ba .iv-ba__img--after { height: auto; }
.iv-ba__handle, .iv-ba__handle:focus { will-change: left; outline: none !important; box-shadow: none !important; }
.iv-ba__handle::before { width: 2px; margin-left: -1px; box-shadow: 0 0 12px rgba(17, 20, 24, .35); }
.iv-ba__grip { box-shadow: 0 8px 20px -6px rgba(17, 20, 24, .55); transition: transform .25s ease, box-shadow .25s ease; }
.iv-ba:hover .iv-ba__grip { transform: scale(1.06); }
.iv-ba--dragging .iv-ba__grip { transform: scale(1.12); box-shadow: 0 12px 28px -6px rgba(17, 20, 24, .65); }
.iv-ba__handle:focus-visible .iv-ba__grip { outline: 2px solid var(--iv-white); outline-offset: 2px; }
.iv-ba--pointer .iv-ba__handle:focus-visible .iv-ba__grip { outline: none; }
.iv-ba__label { transition: opacity .25s ease; }
.iv-ba--hide-before .iv-ba__label--before, .iv-ba--hide-after .iv-ba__label--after { opacity: 0; }

/* Checklist panel */
.iv-checklist { background: var(--iv-white); border: 1px solid rgba(17, 20, 24, .08); border-radius: 2px; }
.iv-checklist .elementor-icon-list-item { margin: 0 !important; padding: 14px 20px !important; align-items: center; }
.iv-checklist .elementor-icon-list-item + .elementor-icon-list-item { border-top: 1px solid var(--iv-concrete); }
.iv-checklist .elementor-icon-list-icon { flex: 0 0 auto; display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; background: rgba(226, 98, 27, .12); border-radius: 2px; }
.iv-checklist .elementor-icon-list-icon svg.lucide { width: 18px; height: 18px; margin: 0; stroke: var(--iv-ember-dark) !important; }
.iv-checklist .elementor-icon-list-text { font-weight: 500; line-height: 1.35; }

/* A long button label may wrap on small screens */
.iv-btn-wrap { align-self: flex-start; }
.iv-btn-wrap .elementor-button { white-space: normal; text-align: left; }
@media (max-width: 767px) { .iv-btn-wrap { align-self: stretch; } .iv-btn-wrap .elementor-button { display: flex; justify-content: space-between; } }

/* Why Ironvale: photo fills its column, four equal compact cards */
.iv-why-grid { grid-template-rows: none !important; grid-auto-rows: 1fr; }
.iv-why-grid .iv-box { padding: 24px; }
.iv-why-grid .iv-box .elementor-icon-box-icon .elementor-icon { width: 44px; height: 44px; }
.iv-why-grid .elementor-icon-box-description { font-size: 16px; line-height: 1.5; }
.iv-tall-image { flex: 1 1 auto; position: relative; width: 100%; overflow: hidden; line-height: 0; border-radius: 2px; }
.iv-tall-image img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }
@media (min-width: 1025px) { .iv-tall-image img { position: absolute; inset: 0; } }
@media (max-width: 1024px) { .iv-tall-image img { aspect-ratio: 16 / 9; height: auto; } }
@media (max-width: 767px) {
	.iv-tall-image img { aspect-ratio: 4 / 3; }
	.iv-why-grid { grid-auto-rows: auto; }
}

/* Icon boxes: one consistent 16px step from icon to title. */
.iv-box .elementor-icon-box-wrapper { gap: 16px; }
.iv-box .elementor-icon-box-icon { margin: 0 !important; line-height: 0; }
.iv-box .elementor-icon-box-title { margin-top: 0; }

/* ==========================================================================
   Reviews spotlight: one large quote on a stacked deck
   ========================================================================== */
.iv-rating-block { border-top: 1px solid var(--iv-line-dark); }
.iv-rating-block .elementor-counter { flex-direction: column; gap: 8px; }
.iv-rating-block .elementor-counter-number-wrapper { font-size: 88px; }

.iv-reviews { position: relative; padding: 0 24px 24px 0; }
.iv-reviews::before, .iv-reviews::after { content: ""; position: absolute; border: 1px solid var(--iv-line-dark); border-radius: 2px; pointer-events: none; }
.iv-reviews::before { inset: 12px 12px 12px 12px; background: rgba(255, 255, 255, .04); }
.iv-reviews::after { inset: 24px 0 0 24px; background: rgba(226, 98, 27, .1); }
.iv-reviews .elementor-main-swiper { position: relative; z-index: 2; background: var(--iv-ink); border-radius: 2px; box-shadow: 0 32px 64px -32px rgba(0, 0, 0, .7); }
.iv-reviews .swiper-slide { height: auto; background: transparent !important; border: 0 !important; }
.iv-reviews .swiper-initialized .swiper-slide, .iv-reviews .swiper-slide { transition: opacity .5s ease; }
.iv-reviews .swiper-initialized .swiper-slide:not(.swiper-slide-active) { opacity: 0; }

.iv-reviews .elementor-testimonial { position: relative; display: flex; flex-direction: column-reverse; justify-content: space-between; gap: 32px; height: 100%; min-height: 460px; padding: 88px 48px 112px; background: transparent; }
.iv-reviews .elementor-testimonial::before { content: "\201C"; position: absolute; right: 32px; top: -8px; font-family: var(--iv-condensed); font-weight: 700; font-size: 220px; line-height: 1; color: var(--iv-ember); opacity: .14; pointer-events: none; }
.iv-reviews .elementor-testimonial__content { padding: 0 !important; background: transparent; }
.iv-reviews .elementor-testimonial__text { font-family: var(--iv-condensed); font-weight: 600; font-size: 32px; line-height: 1.22; color: var(--iv-white); }
.iv-reviews .elementor-testimonial__header { padding: 0 !important; background: transparent !important; border: 0 !important; display: flex; align-items: center; gap: 16px; }
.iv-reviews .elementor-testimonial__image { margin: 0; line-height: 0; }
.iv-reviews .elementor-testimonial__image img { width: 56px !important; height: 56px !important; border-radius: 50%; box-shadow: 0 0 0 2px var(--iv-ember); }
.iv-reviews .elementor-testimonial__cite { display: flex; flex-direction: column; gap: 4px; margin: 0; font-style: normal; }
.iv-reviews .elementor-star-rating { position: absolute; left: 48px; top: 44px; font-size: 20px; letter-spacing: 3px; line-height: 1; }

/* Controls */
.iv-reviews .swiper-pagination { position: absolute; left: 48px; right: auto; bottom: 44px; width: auto; color: var(--iv-light-muted); font-family: var(--iv-mono); font-weight: 500; font-size: 14px; letter-spacing: 2px; }
.iv-reviews .swiper-pagination-current { color: var(--iv-ember); }
.iv-reviews .elementor-swiper-button { position: absolute; top: auto !important; bottom: 32px; left: auto; width: 44px; height: 44px; margin: 0; transform: none; border: 1px solid rgba(255, 255, 255, .22); border-radius: 2px; color: var(--iv-white); transition: background-color .2s ease, color .2s ease, border-color .2s ease; }
.iv-reviews .elementor-swiper-button svg { width: 16px; height: 16px; fill: currentColor; }
.iv-reviews .elementor-swiper-button:hover { background: var(--iv-ember); border-color: var(--iv-ember); color: var(--iv-ink); }
.iv-reviews .elementor-swiper-button-prev { right: 84px; }
.iv-reviews .elementor-swiper-button-next { right: 32px; }
.iv-spot-pause { position: absolute; z-index: 3; right: 136px; bottom: 32px; min-width: 72px; height: 44px; padding: 0 12px; background: transparent; border: 1px solid rgba(255, 255, 255, .22); border-radius: 2px; color: var(--iv-light-muted); font-family: var(--iv-mono); font-weight: 500; font-size: 12px; letter-spacing: 1px; text-transform: uppercase; cursor: pointer; transition: color .2s ease, border-color .2s ease; }
.iv-spot-pause:hover, .iv-spot-pause:focus { background: transparent; color: var(--iv-white); border-color: var(--iv-white); }
.iv-spot-pause[aria-pressed="true"] { color: var(--iv-ember); border-color: var(--iv-ember); }

/* Progress line */
.iv-spot-progress { position: absolute; z-index: 3; left: 0; right: 0; top: 0; height: 3px; background: var(--iv-ember); transform: scaleX(0); transform-origin: left center; }
.iv-spot-progress.is-running { animation: ivSpotProgress var(--iv-spot-time, 7s) linear forwards; }
.iv-spot--paused .iv-spot-progress, .iv-reviews:not(.iv-in-view) .iv-spot-progress, .iv-hero-card:not(.iv-in-view) .iv-spot-progress { animation-play-state: paused; }
@keyframes ivSpotProgress { to { transform: scaleX(1); } }

/* Entrance of the active review */
@keyframes ivStarPop { 0% { opacity: 0; transform: scale(.3) rotate(-25deg); } 70% { opacity: 1; transform: scale(1.25); } 100% { opacity: 1; transform: none; } }
@keyframes ivReviewRise { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: none; } }
.iv-reviews .elementor-star-rating i { display: inline-block; }
.iv-reviews.iv-in-view .swiper-slide-active .elementor-star-rating i { animation: ivStarPop .45s ease both; }
.iv-reviews.iv-in-view .swiper-slide-active .elementor-star-rating i:nth-child(2) { animation-delay: .08s; }
.iv-reviews.iv-in-view .swiper-slide-active .elementor-star-rating i:nth-child(3) { animation-delay: .16s; }
.iv-reviews.iv-in-view .swiper-slide-active .elementor-star-rating i:nth-child(4) { animation-delay: .24s; }
.iv-reviews.iv-in-view .swiper-slide-active .elementor-star-rating i:nth-child(5) { animation-delay: .32s; }
.iv-reviews.iv-in-view .swiper-slide-active .elementor-testimonial__text { animation: ivReviewRise .6s ease .15s both; }
.iv-reviews.iv-in-view .swiper-slide-active .elementor-testimonial__header { animation: ivReviewRise .6s ease .3s both; }

@media (max-width: 767px) {
	.iv-reviews { padding: 0 12px 12px 0; }
	.iv-reviews::before { inset: 6px; }
	.iv-reviews::after { inset: 12px 0 0 12px; }
	.iv-reviews .elementor-testimonial { min-height: 500px; padding: 72px 24px 128px; gap: 24px; }
	.iv-reviews .elementor-testimonial::before { right: 12px; font-size: 140px; }
	.iv-reviews .elementor-testimonial__text { font-size: 26px; }
	.iv-reviews .elementor-star-rating { left: 24px; top: 32px; }
	.iv-reviews .swiper-pagination { left: 24px; bottom: 90px; }
	.iv-reviews .elementor-swiper-button-prev { right: 72px; bottom: 24px; }
	.iv-reviews .elementor-swiper-button-next { right: 20px; bottom: 24px; }
	.iv-spot-pause { left: 24px; right: auto; bottom: 24px; }
	.iv-rating-block .elementor-counter-number-wrapper { font-size: 64px; }
}
@media (prefers-reduced-motion: reduce) {
	.iv-reviews .elementor-star-rating i, .iv-reviews .elementor-testimonial__text, .iv-reviews .elementor-testimonial__header { animation: none !important; }
}

/* Reviews controls: one row along the card's bottom edge. Elementor positions arrows with logical insets and a transform. */
.iv-reviews .elementor-swiper-button { inset-block-start: auto !important; inset-inline: auto !important; transform: none !important; bottom: 32px !important; display: flex; align-items: center; justify-content: center; }
.iv-reviews .elementor-swiper-button-prev { right: 84px !important; }
.iv-reviews .elementor-swiper-button-next { right: 32px !important; }
.iv-reviews .swiper-pagination.swiper-pagination-fraction { left: 48px !important; right: auto !important; bottom: 32px !important; width: auto !important; height: 44px; line-height: 44px; text-align: left; }
.iv-spot-pause { right: 136px; bottom: 32px; width: 72px; min-width: 0; padding: 0 !important; line-height: 42px; }
@media (max-width: 767px) {
	.iv-reviews .elementor-testimonial { padding-bottom: 92px; }
	.iv-reviews .elementor-swiper-button { bottom: 16px !important; }
	.iv-reviews .elementor-swiper-button-prev { right: 64px !important; }
	.iv-reviews .elementor-swiper-button-next { right: 12px !important; }
	.iv-spot-pause { left: 16px; right: auto; bottom: 16px; width: 64px; }
	.iv-reviews .swiper-pagination.swiper-pagination-fraction { left: 92px !important; bottom: 16px !important; letter-spacing: 1px; }
}

/* Stars sit in the author block, under the name and project. */
.iv-reviews .elementor-testimonial { padding-top: 64px; min-height: 440px; }
.iv-reviews .elementor-star-rating { position: static !important; order: 3; margin-top: 4px; font-size: 18px; color: var(--iv-ember); }
.iv-reviews .elementor-star-rating i, .iv-reviews .elementor-star-rating i::before { color: var(--iv-ember) !important; }
.iv-reviews .elementor-testimonial__title { order: 2; }
.iv-spot-pause, .iv-spot-pause:hover, .iv-spot-pause:focus { background: transparent !important; box-shadow: none; }
.iv-spot-pause { color: var(--iv-light-muted) !important; }
.iv-spot-pause:hover, .iv-spot-pause:focus-visible { color: var(--iv-white) !important; border-color: var(--iv-white) !important; }
.iv-spot-pause[aria-pressed="true"] { color: var(--iv-ember) !important; border-color: var(--iv-ember) !important; }
@media (max-width: 767px) { .iv-reviews .elementor-testimonial { padding-top: 48px; min-height: 480px; padding-bottom: 92px; } }

/* ==========================================================================
   Hero project card: rotating featured projects
   ========================================================================== */
.iv-hero-card { overflow: hidden; border-radius: 2px; box-shadow: 0 32px 64px -28px rgba(0, 0, 0, .75); }
.iv-hero-card .swiper { position: relative; }
.iv-hero-card a.iv-card { box-shadow: none; }
.iv-hero-card .iv-card-media { overflow: hidden; }
.iv-hero-card .swiper-slide { height: auto; transition: opacity .6s ease; }
.iv-hero-card .swiper-initialized .swiper-slide:not(.swiper-slide-active) { opacity: 0; }
/* Until Swiper starts, only the first card shows, so the hero never jumps. */
.iv-hero-card .swiper:not(.swiper-initialized) .swiper-slide:not(:first-child) { display: none; }
.iv-hero-card .iv-spot-progress { top: auto; bottom: 0; }
.iv-hero-card .iv-spot-pause { top: 12px; right: 12px; bottom: auto; left: auto; width: 64px; height: 44px; background: rgba(17, 20, 24, .78) !important; border-color: rgba(255, 255, 255, .25); color: var(--iv-white) !important; opacity: 0; transition: opacity .2s ease, border-color .2s ease; }
.iv-hero-card:hover .iv-spot-pause, .iv-hero-card .iv-spot-pause:focus-visible, .iv-hero-card .iv-spot-pause[aria-pressed="true"] { opacity: 1; }
@keyframes ivHeroZoom { from { transform: scale(1); } to { transform: scale(1.07); } }
.iv-hero-card.iv-in-view .swiper-slide-active .iv-card-media img { animation: ivHeroZoom 7.5s ease-out both; }
.iv-spot--paused.iv-hero-card .swiper-slide-active .iv-card-media img { animation-play-state: paused; }
.iv-hero-card.iv-in-view .swiper-slide-active .iv-hero-rise { animation: ivReviewRise .55s ease both; }
.iv-hero-card.iv-in-view .swiper-slide-active .iv-hero-rise:nth-child(2) { animation-delay: .08s; }
.iv-hero-card.iv-in-view .swiper-slide-active .iv-hero-rise:nth-child(3) { animation-delay: .16s; }
@media (prefers-reduced-motion: reduce) {
	.iv-hero-card .swiper-slide-active .iv-card-media img, .iv-hero-card .swiper-slide-active .iv-hero-rise { animation: none !important; }
}

/* Elementor makes containers wrap on phones by default. In a column that leaves a Loop Grid widget
   shorter than its cards, so the last card runs over the section's bottom padding. */
@media (max-width: 767px) {
	.e-con > .e-con-inner:has(> .elementor-widget-loop-grid),
	.e-con-full:has(> .elementor-widget-loop-grid) { flex-wrap: nowrap; }
}

/* Estimate page "What happens next": each number sits in a fixed square, level with the first line */
.iv-estimate-side .iv-num { flex: 0 0 28px; width: 28px; }
.iv-estimate-side .iv-num .elementor-heading-title { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border: 1px solid var(--iv-ember); font-size: 13px !important; line-height: 1 !important; letter-spacing: 0 !important; }
.iv-estimate-side .e-con:has(> .iv-num) { column-gap: 12px !important; }
/* Leadership cards on phones: a small monogram above the name, not a full-width square */
@media (max-width: 767px) {
	.iv-avatar { width: 88px !important; max-width: 88px; margin: 24px 24px 0 !important; }
	.iv-avatar img { width: 88px !important; }
}
/* File upload (careers resume) styled like the other fields */
.iv-form .elementor-field-type-upload input[type="file"] { width: 100%; min-height: 52px; padding: 7px 8px; background: var(--iv-white); border: 1px solid #6f7680; border-radius: 2px; font-family: "Barlow", sans-serif; font-size: 15px; color: var(--iv-muted); cursor: pointer; }
.iv-form .elementor-field-type-upload input[type="file"]::file-selector-button { margin-right: 12px; min-height: 36px; padding: 0 16px; background: var(--iv-ink); color: var(--iv-white); border: 0; border-radius: 2px; font-family: "Barlow", sans-serif; font-weight: 600; font-size: 13px; letter-spacing: 1px; text-transform: uppercase; cursor: pointer; transition: background-color .2s ease; }
.iv-form .elementor-field-type-upload input[type="file"]:hover::file-selector-button { background: var(--iv-ember-dark); }
.iv-form .elementor-field-type-upload input[type="file"]:focus-visible { outline: 2px solid var(--iv-ember-dark); outline-offset: 2px; }
/* Project filter on phones: an even two-column grid instead of ragged centred rows */
@media (max-width: 767px) {
	.iv-filter .e-filter { display: grid; grid-template-columns: 1fr 1fr; }
	.iv-filter .e-filter-item { width: 100%; padding: 12px 8px; }
}
/* Project gallery with a single photo: show it as one wide image instead of a third of a row */
.e-gallery-justified:has(> .e-gallery-item:only-child) { --container-aspect-ratio: 0.45 !important; }
.e-gallery-justified > .e-gallery-item:only-child { --item-width: 1 !important; }
@media (max-width: 767px) { .e-gallery-justified:has(> .e-gallery-item:only-child) { --container-aspect-ratio: 0.6667 !important; } }

/* Concept notice above the header. The header floats over the hero, so the page is pushed down by the
   notice's height; site.js keeps --iv-topbar-h exact when the text wraps. */
:root { --iv-topbar-h: 36px; }
@media (max-width: 599px) { :root { --iv-topbar-h: 54px; } }
body:not(.elementor-editor-active) { padding-top: var(--iv-topbar-h); }
.iv-header { top: 0; }
.iv-topbar .elementor-widget-text-editor, .iv-topbar p { margin: 0; font-size: 13px; line-height: 18px; letter-spacing: .2px; color: var(--iv-white); }
.iv-topbar strong { font-weight: 700; }
