.elementor-kit-6{--e-global-color-primary:#007374;--e-global-color-secondary:#2F3131;--e-global-color-text:#2F3131;--e-global-color-accent:#007374;--e-global-color-ccdfd02:#64C6C2;--e-global-color-a7e45c9:#F2F1F1;--e-global-color-f66e39a:#FFFFFF00;--e-global-typography-primary-font-family:"Neue Haas Grot Disp-65Medium";--e-global-typography-primary-font-size:64px;--e-global-typography-primary-font-weight:500;--e-global-typography-primary-line-height:1.25em;--e-global-typography-primary-letter-spacing:-0.01em;--e-global-typography-secondary-font-family:"Neue Haas Grot Disp-65Medium";--e-global-typography-secondary-font-size:46px;--e-global-typography-secondary-font-weight:500;--e-global-typography-secondary-line-height:1.25em;--e-global-typography-secondary-letter-spacing:-0.01em;--e-global-typography-text-font-family:"Neue Haas Grot Disp-65Medium";--e-global-typography-text-font-size:20px;--e-global-typography-text-font-weight:500;--e-global-typography-accent-font-family:"Neue Haas Grot Disp-65Medium";--e-global-typography-accent-font-size:24px;--e-global-typography-accent-font-weight:500;--e-global-typography-accent-line-height:1.35em;--e-global-typography-62cbc25-font-family:"Neue Haas Grot Disp-65Medium";--e-global-typography-62cbc25-font-size:16px;--e-global-typography-62cbc25-font-weight:500;--e-global-typography-62cbc25-line-height:1.35em;--e-global-typography-cc5485d-font-family:"Neue Haas Grot Disp-65Medium";--e-global-typography-cc5485d-font-size:36px;--e-global-typography-cc5485d-font-weight:500;--e-global-typography-cc5485d-line-height:1.25em;--e-global-typography-cc5485d-letter-spacing:-0.01em;background-color:var( --e-global-color-a7e45c9 );color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-size:var( --e-global-typography-text-font-size );font-weight:var( --e-global-typography-text-font-weight );line-height:var( --e-global-typography-text-line-height );}.elementor-kit-6 e-page-transition{background-color:#FFBC7D;}.elementor-kit-6 a{color:var( --e-global-color-secondary );font-family:"Neue Haas Grot Disp-65Medium", Sans-serif;font-size:20px;font-weight:600;line-height:1.25em;letter-spacing:0em;}.elementor-kit-6 h1{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-size:var( --e-global-typography-primary-font-size );font-weight:var( --e-global-typography-primary-font-weight );line-height:var( --e-global-typography-primary-line-height );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-kit-6 h2{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-size:var( --e-global-typography-secondary-font-size );font-weight:var( --e-global-typography-secondary-font-weight );line-height:var( --e-global-typography-secondary-line-height );letter-spacing:var( --e-global-typography-secondary-letter-spacing );}.elementor-kit-6 h3{font-family:var( --e-global-typography-cc5485d-font-family ), Sans-serif;font-size:var( --e-global-typography-cc5485d-font-size );font-weight:var( --e-global-typography-cc5485d-font-weight );line-height:var( --e-global-typography-cc5485d-line-height );letter-spacing:var( --e-global-typography-cc5485d-letter-spacing );}.elementor-kit-6 h4{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-size:var( --e-global-typography-accent-font-size );font-weight:var( --e-global-typography-accent-font-weight );line-height:var( --e-global-typography-accent-line-height );}.elementor-kit-6 h5{font-family:"Neue Haas Grot Disp-65Medium", Sans-serif;font-size:20px;line-height:1.25em;letter-spacing:-0.01em;}.elementor-kit-6 h6{font-family:"Neue Haas Grot Disp-65Medium", Sans-serif;font-size:16px;font-weight:500;line-height:1.25em;letter-spacing:-0.01em;}.elementor-kit-6 button,.elementor-kit-6 input[type="button"],.elementor-kit-6 input[type="submit"],.elementor-kit-6 .elementor-button{font-family:"Neue Haas Grot Disp-65Medium", Sans-serif;font-size:14px;line-height:1.35em;letter-spacing:0em;color:var( --e-global-color-text );border-style:solid;border-width:1px 1px 1px 1px;border-color:var( --e-global-color-text );border-radius:4px 4px 4px 4px;padding:8px 16px 8px 16px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1440px;}.e-con{--container-max-width:1440px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-kit-6{font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );}.elementor-kit-6 h1{font-size:var( --e-global-typography-primary-font-size );line-height:var( --e-global-typography-primary-line-height );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-kit-6 h2{font-size:var( --e-global-typography-secondary-font-size );line-height:var( --e-global-typography-secondary-line-height );letter-spacing:var( --e-global-typography-secondary-letter-spacing );}.elementor-kit-6 h3{font-size:var( --e-global-typography-cc5485d-font-size );line-height:var( --e-global-typography-cc5485d-line-height );letter-spacing:var( --e-global-typography-cc5485d-letter-spacing );}.elementor-kit-6 h4{font-size:var( --e-global-typography-accent-font-size );line-height:var( --e-global-typography-accent-line-height );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-kit-6{font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );}.elementor-kit-6 h1{font-size:var( --e-global-typography-primary-font-size );line-height:var( --e-global-typography-primary-line-height );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-kit-6 h2{font-size:var( --e-global-typography-secondary-font-size );line-height:var( --e-global-typography-secondary-line-height );letter-spacing:var( --e-global-typography-secondary-letter-spacing );}.elementor-kit-6 h3{font-size:var( --e-global-typography-cc5485d-font-size );line-height:var( --e-global-typography-cc5485d-line-height );letter-spacing:var( --e-global-typography-cc5485d-letter-spacing );}.elementor-kit-6 h4{font-size:var( --e-global-typography-accent-font-size );line-height:var( --e-global-typography-accent-line-height );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}
/* Start custom CSS *//* =========================================================================
 * EPOCH — Elementor Site Settings → Custom CSS
 * This file is the ENTIRE contents of that field. Select all, delete, paste.
 * Requires Epoch Projects 1.1.5 or later.
 *
 * Site grid, confirmed against the Figma file:
 *   12 columns · 24px gutter · 32px page margin
 *   Logo col 1 · menu col 5 · Contact col 12
 *   Page heading col 5 · project titles col 5
 * ====================================================================== */

:root {
	--epoch-page-margin: 32px;
	--epoch-page-gap: 24px;
	--epoch-page-columns: 12;
}

/* -------------------------------------------------------------------------
 * PART 1 — Header (template 1279)
 *   7ca5893  header container
 *   4221d15  logo column
 *   91f0012  menu + Contact column
 *   868750a  menu widget
 *   f38d6bb  Contact widget
 * ---------------------------------------------------------------------- */

.elementor-element-7ca5893 {
	display: grid;
	grid-template-columns: repeat( var( --epoch-page-columns, 12 ), minmax( 0, 1fr ) );
	gap: var( --epoch-page-gap, 24px );
	padding-left: var( --epoch-page-margin, 32px );
	padding-right: var( --epoch-page-margin, 32px );
	align-items: center;
}

.elementor-element-4221d15 {
	grid-column: 1 / 5;
	width: auto;
}

/* Columns 5-12. Nested on the same gutter, so its own 8 columns land exactly
   on the outer ones: menu on column 5, Contact on column 12, one line. */
.elementor-element-91f0012 {
	grid-column: 5 / -1;
	width: auto;
	display: grid;
	grid-template-columns: repeat( 8, minmax( 0, 1fr ) );
	gap: var( --epoch-page-gap, 24px );
	align-items: center;
}

.elementor-element-868750a {
	grid-column: 1 / 8;
	width: auto;
}

.elementor-element-f38d6bb {
	grid-column: 8 / -1;
	width: auto;
	text-align: right;
}

/* -------------------------------------------------------------------------
 * PART 1b — Homepage header (template 35)
 * There are two header templates. This is the one the homepage uses. Same
 * structure, different ids, so it needs the same rules.
 *   d815c92  header container
 *   e5ec04a  logo column
 *   43ad278  menu + Contact column
 *   e777ed7  menu widget
 *   697f23e  Contact widget
 *
 * The other container in this template (10804aa) is the mobile header and is
 * deliberately left alone.
 * ---------------------------------------------------------------------- */

.elementor-element-d815c92 {
	display: grid;
	grid-template-columns: repeat( var( --epoch-page-columns, 12 ), minmax( 0, 1fr ) );
	gap: var( --epoch-page-gap, 24px );
	padding-left: var( --epoch-page-margin, 32px );
	padding-right: var( --epoch-page-margin, 32px );
	align-items: center;
}

.elementor-element-e5ec04a {
	grid-column: 1 / 5;
	width: auto;
}

.elementor-element-43ad278 {
	grid-column: 5 / -1;
	width: auto;
	display: grid;
	grid-template-columns: repeat( 8, minmax( 0, 1fr ) );
	gap: var( --epoch-page-gap, 24px );
	align-items: center;
}

.elementor-element-e777ed7 {
	grid-column: 1 / 8;
	width: auto;
}

.elementor-element-697f23e {
	grid-column: 8 / -1;
	width: auto;
	text-align: right;
}

/* -------------------------------------------------------------------------
 * PART 2 — Reusable row classes for page content
 *
 * On a full width row:            epoch-row
 * On its left column:             epoch-col-1-4
 * On its right column:            epoch-col-5-12
 *
 * On Our Projects that is the breadcrumb + intro row (d40917a), its
 * breadcrumb column (6517acd) and its heading column (4b40e82).
 * ---------------------------------------------------------------------- */

.epoch-row {
	display: grid;
	grid-template-columns: repeat( var( --epoch-page-columns, 12 ), minmax( 0, 1fr ) );
	gap: var( --epoch-page-gap, 24px );
	padding-left: var( --epoch-page-margin, 32px );
	padding-right: var( --epoch-page-margin, 32px );
	align-items: start;
}

.epoch-row--center {
	align-items: center;
}

.epoch-col-1-4 {
	grid-column: 1 / 5;
	width: auto;
}

.epoch-col-5-12 {
	grid-column: 5 / -1;
	width: auto;
}

@media ( max-width: 900px ) {
	.epoch-col-1-4,
	.epoch-col-5-12 {
		grid-column: 1 / -1;
	}
}

/* -------------------------------------------------------------------------
 * PART 3 — Client Success slider: brand, type and control sizing.
 * Layout is handled by the plugin, which now sits on the same 12 column grid.
 * ---------------------------------------------------------------------- */

.epoch-testimonials {
	--epoch-fg: #1a1a1a;
	--epoch-muted: #6d6d6a;
	--epoch-accent: #2d3131;
	--epoch-placeholder: #e5e5e3;
	--epoch-radius: 0px;
	--epoch-ratio: 3 / 2;

	/* Column spans. The plugin's defaults already match the Figma file
	   (image columns 1-6, quotes 8-12), so these are here only as the place
	   to change it if the design moves.
	   --epoch-testimonial-media: 1 / 7;
	   --epoch-testimonial-quotes: 8 / -1; */

	/* Reveal of the next quote. The plugin shows this minus --epoch-gap
	   (24px), so 184 gives the 160px reveal the old mask was aiming for. */
	--epoch-testimonial-peek: 184px;

	/* Fade on the quotes either side of the current one. */
	--epoch-testimonial-dim: 0.25;
}

@media ( max-width: 1024px ) {
	.epoch-testimonials {
		--epoch-testimonial-peek: 104px;
	}
}

@media ( max-width: 767px ) {
	.epoch-testimonials {
		--epoch-testimonial-peek: 0px;
	}
}

/* --- Type ---------------------------------------------------------------- */

.epoch-testimonials .epoch-testimonial__body {
	margin: 0;
	padding: 0;
	border: 0;
	box-shadow: none;
}

.epoch-testimonials .epoch-testimonial__mark {
	font-size: 48px;
	line-height: 1;
	color: var( --epoch-fg );
	margin-bottom: 8px;
}

.epoch-testimonials .epoch-testimonial__quote p {
	font-size: 20px;
	line-height: 1.5;
	color: var( --epoch-fg );
	margin: 0 0 24px;
}

@media ( max-width: 767px ) {
	.epoch-testimonials .epoch-testimonial__quote p {
		font-size: 16px;
		margin: 0 0 16px;
	}
}

.epoch-testimonials .epoch-testimonial__cite {
	font-size: 15px;
	line-height: 1.6;
}

.epoch-testimonials .epoch-testimonial__author {
	font-weight: 700;
	font-size: 20px;
	color: var( --epoch-fg );
}

.epoch-testimonials .epoch-testimonial__meta {
	color: var( --epoch-fg );
	font-size: 20px;
}

.epoch-testimonials .epoch-testimonial__project {
	color: var( --epoch-accent );
	text-decoration: underline;
	text-underline-offset: 3px;
}

.epoch-testimonials .epoch-testimonial__project:hover {
	color: var( --epoch-fg );
	text-decoration: none;
}

/* --- Arrows: bigger than the plugin default, and lighter until hovered ---- */

/* Three classes deep so these win regardless of stylesheet order. */
.epoch-testimonials .epoch-arrows .epoch-arrows__btn {
	width: 54px;
	height: 54px;
	padding: 0;
	color: var( --epoch-fg );
	opacity: 0.55;
	transition: opacity 0.2s ease;
}

.epoch-testimonials .epoch-arrows .epoch-arrows__btn svg {
	width: 100%;
	height: 100%;
}

.epoch-testimonials .epoch-arrows .epoch-arrows__btn[data-epoch-dir="next"],
.epoch-testimonials .epoch-arrows .epoch-arrows__btn:hover {
	opacity: 1;
}

.epoch-testimonials .epoch-arrows .epoch-arrows__btn.is-disabled {
	opacity: 0.2;
}

/* --- Dots (mobile only) --------------------------------------------------- */

.epoch-testimonials .epoch-dots {
	flex-wrap: wrap;
	max-width: 100%;
	gap: 6px;
	margin-top: 20px;
}

.epoch-testimonials .epoch-dots .epoch-dots__dot {
	width: 12px;
	height: 12px;
	background: #2d3131;
	opacity: 0.2;
	transition: opacity 0.2s ease;
}

.epoch-testimonials .epoch-dots .epoch-dots__dot.is-active {
	opacity: 1;
}/* End custom CSS */
/* Start Custom Fonts CSS */@font-face {
	font-family: 'Neue Haas Grot Disp-65Medium';
	font-style: normal;
	font-weight: 600;
	font-display: auto;
	src: url('https://epoch.nz/wp-content/uploads/2026/08/NeueHaasGroteskDisplay-65Medium-Web.woff2') format('woff2');
}
/* End Custom Fonts CSS */