/*
 * JT-Media theme styles.
 *
 * Colours, fonts and sizes come from CSS variables set in
 * Appearance > Customize > Theme Options (printed inline after this file).
 * The values below are only fallbacks.
 *
 * Contents
 *  1. Variables & base
 *  2. Layout helpers
 *  3. Buttons & forms
 *  4. Header & navigation
 *  5. Slide-out menu
 *  6. Page banner
 *  7. Content & blocks
 *  8. Blog
 *  9. Footer
 * 10. Animation & effects
 * 11. Section helpers (used by the bundled patterns)
 * 12. Page builders & plugins
 * 13. Accessibility, reduced motion, print
 */

/* 1. Variables & base ------------------------------------------------------ */

:root {
	--jt-primary: #2f5bea;
	--jt-on-primary: #fff;
	--jt-dark: #111;
	--jt-dark-alt: #1c1c1e;
	--jt-heading: #111;
	--jt-text: #3b3b3b;
	--jt-light: #f4f3f0;
	--jt-bg: #fff;
	--jt-header-bg: #111;
	--jt-header-text: #fff;
	--jt-footer-bg: #0b0b0b;
	--jt-footer-text: #bdbdbd;
	--jt-border: rgba(0, 0, 0, 0.1);
	--jt-font-heading: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
	--jt-font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
	--jt-font-size: 17px;
	--jt-heading-weight: 700;
	--jt-heading-case: none;
	--jt-heading-spacing: -0.5px;
	--jt-button-case: uppercase;
	--jt-container: 1240px;
	--jt-gutter: clamp(1.25rem, 4vw, 2.5rem);
	--jt-radius: 0px;
	--jt-card-radius: 0px;
	--jt-logo-height: 46px;
	--jt-header-h: 92px;
	--jt-banner-height: 340px;
	--jt-section-pad: clamp(3.5rem, 8vw, 7rem);
	--jt-anim-duration: 800ms;
	--jt-anim-distance: 40px;
	--jt-ease: cubic-bezier(0.2, 0.7, 0.2, 1);
	--jt-admin-bar: var(--wp-admin--admin-bar--height, 0px);
}

@media (max-width: 1024px) {
	:root {
		--jt-header-h: 76px;
	}
}

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

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
	scroll-padding-top: calc(var(--jt-header-h) + var(--jt-admin-bar));
}

body {
	margin: 0;
	background-color: var(--jt-bg);
	color: var(--jt-text);
	font-family: var(--jt-font-body);
	font-size: var(--jt-font-size);
	font-weight: var(--jt-body-weight, 400);
	line-height: var(--jt-line-height, 1.7);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

.site {
	overflow-x: clip;
	min-height: 100vh;
	display: flex;
	flex-direction: column;
}

.site-main {
	flex: 1 0 auto;
}

h1, h2, h3, h4, h5, h6 {
	margin: 0 0 0.6em;
	color: var(--jt-heading);
	font-family: var(--jt-font-heading);
	font-weight: var(--jt-heading-weight);
	letter-spacing: var(--jt-heading-spacing);
	line-height: var(--jt-heading-lh, 1.15);
	text-transform: var(--jt-heading-case);
	text-wrap: balance;
}

h1 { font-size: var(--jt-h1, clamp(2.4rem, 5.2vw, 4.25rem)); }
h2 { font-size: var(--jt-h2, clamp(1.9rem, 3.8vw, 3rem)); }
h3 { font-size: var(--jt-h3, clamp(1.4rem, 2.4vw, 1.875rem)); }
h4 { font-size: var(--jt-h4, 1.3rem); }

@media (max-width: 760px) {
	body {
		font-size: var(--jt-font-size-m, var(--jt-font-size));
	}
}
h5 { font-size: var(--jt-h5, 1.1rem); }
h6 { font-size: var(--jt-h6, 0.95rem); }

p, ul, ol, dl, blockquote, figure, table, pre {
	margin: 0 0 1.4em;
}

a {
	color: inherit;
	text-decoration-color: var(--jt-primary);
	text-decoration-thickness: 2px;
	text-underline-offset: 0.2em;
	transition: color 0.2s ease, text-decoration-color 0.2s ease, background-color 0.2s ease;
}

a:hover {
	color: var(--jt-primary);
}

img, video, svg, iframe {
	max-width: 100%;
	height: auto;
	vertical-align: middle;
}

hr {
	border: 0;
	border-top: 1px solid var(--jt-border);
	margin: 2.5em 0;
}

table {
	width: 100%;
	border-collapse: collapse;
}

th, td {
	padding: 0.75em 1em;
	border-bottom: 1px solid var(--jt-border);
	text-align: left;
}

blockquote {
	margin-left: 0;
	padding: 0.25em 0 0.25em 1.5em;
	border-left: 3px solid var(--jt-primary);
	font-size: 1.2em;
	color: var(--jt-heading);
}

code, pre {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 0.9em;
}

pre {
	padding: 1.25em;
	overflow: auto;
	background: var(--jt-light);
}

::selection {
	background: var(--jt-primary);
	color: var(--jt-on-primary);
}

.jt-icon {
	width: 1.25em;
	height: 1.25em;
	flex-shrink: 0;
}

/* 2. Layout helpers ---------------------------------------------------------- */

.jt-container {
	width: 100%;
	max-width: calc(var(--jt-container) + var(--jt-gutter) * 2);
	margin-inline: auto;
	padding-inline: var(--jt-gutter);
}

.jt-narrow {
	max-width: calc(840px + var(--jt-gutter) * 2);
}

.jt-content-area {
	padding-block: var(--jt-section-pad);
}

.jt-no-content-padding .jt-content-area {
	padding-block: 0;
}

/* Sidebar layout appears only when a sidebar is printed. */
.jt-content-area:has(> .jt-sidebar) {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 320px;
	gap: clamp(2rem, 5vw, 4.5rem);
	align-items: start;
}

.jt-sidebar-left .jt-content-area:has(> .jt-sidebar) {
	grid-template-columns: 320px minmax(0, 1fr);
}

.jt-sidebar-left .jt-content-area > .jt-sidebar {
	order: -1;
}

@media (max-width: 960px) {
	.jt-content-area:has(> .jt-sidebar),
	.jt-sidebar-left .jt-content-area:has(> .jt-sidebar) {
		grid-template-columns: minmax(0, 1fr);
	}

	.jt-sidebar-left .jt-content-area > .jt-sidebar {
		order: 0;
	}
}

.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute !important;
	width: 1px;
	word-wrap: normal !important;
}

.skip-link:focus {
	clip: auto;
	clip-path: none;
	height: auto;
	width: auto;
	left: 1rem;
	top: 1rem;
	z-index: 100000;
	padding: 0.9rem 1.4rem;
	background: var(--jt-bg);
	color: var(--jt-heading);
	font-weight: 600;
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
}

:focus-visible {
	outline: 2px solid var(--jt-primary);
	outline-offset: 3px;
}

/* 3. Buttons & forms --------------------------------------------------------- */

.jt-button,
.wp-block-button__link,
.wp-element-button,
button[type="submit"],
input[type="submit"],
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.6em;
	padding: 1em 2em;
	border: 2px solid var(--jt-primary);
	border-radius: var(--jt-radius);
	background-color: var(--jt-primary);
	color: var(--jt-on-primary);
	font-family: var(--jt-font-heading);
	font-size: var(--jt-button-size, 0.82rem);
	font-weight: var(--jt-button-weight, 700);
	letter-spacing: var(--jt-button-spacing, 0.12em);
	line-height: 1.2;
	text-decoration: none;
	text-transform: var(--jt-button-case);
	cursor: pointer;
	transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease, transform 0.25s var(--jt-ease);
}

.jt-button:hover,
.wp-block-button__link:hover,
.wp-element-button:hover,
button[type="submit"]:hover,
input[type="submit"]:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #respond input#submit:hover {
	background-color: transparent;
	color: var(--jt-primary);
	border-color: var(--jt-primary);
}

/* Outline style: the block editor's "Outline" style, or class jt-button--outline. */
.jt-button--outline,
.is-style-outline > .wp-block-button__link,
.wp-block-button__link.is-style-outline {
	background-color: transparent;
	border-color: currentColor;
	color: inherit;
}

.jt-button--outline:hover,
.is-style-outline > .wp-block-button__link:hover,
.wp-block-button__link.is-style-outline:hover {
	background-color: var(--jt-primary);
	border-color: var(--jt-primary);
	color: var(--jt-on-primary);
}

.jt-button--block {
	width: 100%;
}

.jt-link-arrow {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	font-family: var(--jt-font-heading);
	font-size: 0.82rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--jt-heading);
}

.jt-link-arrow .jt-icon {
	transition: transform 0.25s var(--jt-ease);
}

.jt-link-arrow:hover .jt-icon {
	transform: translateX(4px);
}

input[type="text"],
input[type="email"],
input[type="url"],
input[type="password"],
input[type="search"],
input[type="number"],
input[type="tel"],
input[type="date"],
select,
textarea {
	width: 100%;
	padding: 0.85em 1em;
	border: 1px solid rgba(0, 0, 0, 0.18);
	border-radius: var(--jt-radius);
	background: #fff;
	color: var(--jt-heading);
	font: inherit;
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

input:focus,
select:focus,
textarea:focus {
	border-color: var(--jt-primary);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--jt-primary) 25%, transparent);
	outline: none;
}

label {
	font-weight: 600;
	color: var(--jt-heading);
}

.search-form {
	display: flex;
	gap: 0;
}

.search-form .search-field {
	border-right: 0;
}

.search-form .search-submit {
	padding: 0 1.2em;
}

/* 4. Header & navigation ----------------------------------------------------- */

.jt-header-wrap {
	position: relative;
	z-index: 100;
	color: var(--jt-header-text);
}

.jt-header-sticky .jt-header-wrap {
	position: sticky;
	top: var(--jt-admin-bar);
}

/* Transparent header floats over the first section of the page. */
.jt-header-transparent .jt-header-wrap {
	position: absolute;
	top: var(--jt-admin-bar);
	left: 0;
	right: 0;
}

.jt-header-transparent.jt-header-sticky .jt-header-wrap {
	position: fixed;
}

.site-header {
	background-color: var(--jt-header-bg);
	transition: background-color 0.35s ease, box-shadow 0.35s ease;
}

/* See-through header: its own text colour (and logo) until the page scrolls. */
.jt-header-transparent .jt-header-wrap:not(.is-scrolled) {
	--jt-header-text: var(--jt-header-text-see, #fff);
}

.jt-header-wrap :is(.site-title, .jt-menu > li > a, .jt-menu-toggle) {
	transition: color 0.35s ease, border-color 0.35s ease, background-color 0.35s ease;
}

.custom-logo--transparent {
	display: none;
}

.jt-header-transparent .jt-header-wrap:not(.is-scrolled) .has-transparent-logo .custom-logo {
	display: none;
}

.jt-header-transparent .jt-header-wrap:not(.is-scrolled) .has-transparent-logo .custom-logo--transparent {
	display: inline-block;
}

.jt-header-transparent .site-header {
	background-color: transparent;
	background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0));
}

.jt-header-wrap.is-scrolled .site-header {
	background-color: var(--jt-header-bg);
	background-image: none;
	box-shadow: 0 6px 30px rgba(0, 0, 0, 0.18);
}

.site-header__inner {
	display: flex;
	align-items: center;
	gap: 2rem;
	min-height: var(--jt-header-h);
	transition: min-height 0.35s var(--jt-ease);
}

.jt-header-wrap.is-scrolled .site-header__inner {
	min-height: calc(var(--jt-header-h) - 16px);
}

.site-branding {
	flex-shrink: 0;
	line-height: 0;
}

.custom-logo-link {
	display: inline-block;
}

.custom-logo {
	width: auto;
	height: var(--jt-logo-height);
	max-height: var(--jt-logo-height);
	object-fit: contain;
}

.site-title {
	font-family: var(--jt-font-heading);
	font-size: 1.4rem;
	font-weight: 800;
	line-height: 1.2;
	letter-spacing: -0.02em;
	text-decoration: none;
	color: inherit;
}

.main-navigation {
	margin-left: auto;
}

.main-navigation ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.jt-menu {
	display: flex;
	align-items: center;
	gap: 0.25rem;
}

.jt-menu > li {
	position: relative;
}

.jt-menu a {
	display: flex;
	align-items: center;
	gap: 0.35em;
	padding: 0.75rem 0.9rem;
	color: var(--jt-header-text);
	font-family: var(--jt-menu-font, var(--jt-font-heading));
	font-size: var(--jt-menu-size, 0.82rem);
	font-weight: var(--jt-menu-weight, 600);
	letter-spacing: var(--jt-menu-spacing, 0.1em);
	text-transform: var(--jt-menu-case, uppercase);
	text-decoration: none;
	white-space: nowrap;
}

/* Animated underline on top-level items. */
.jt-menu > li > a {
	position: relative;
}

.jt-menu > li > a::after {
	content: "";
	position: absolute;
	left: 0.9rem;
	right: 0.9rem;
	bottom: 0.4rem;
	height: 2px;
	background: var(--jt-primary);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 0.3s var(--jt-ease);
}

.jt-menu > li:hover > a::after,
.jt-menu > li:focus-within > a::after,
.jt-menu > .current-menu-item > a::after,
.jt-menu > .current-menu-ancestor > a::after,
.jt-menu > .current_page_item > a::after {
	transform: scaleX(1);
}

.jt-menu .menu-item-has-children > a::before {
	content: "";
	order: 2;
	width: 0.4em;
	height: 0.4em;
	border-right: 1.5px solid currentColor;
	border-bottom: 1.5px solid currentColor;
	transform: translateY(-25%) rotate(45deg);
	margin-left: 0.2em;
}

.jt-menu .sub-menu {
	position: absolute;
	top: 100%;
	left: 0;
	min-width: 250px;
	padding: 0.75rem 0;
	background: var(--jt-dark-alt);
	box-shadow: 0 20px 40px rgba(0, 0, 0, 0.25);
	opacity: 0;
	visibility: hidden;
	transform: translateY(10px);
	transition: opacity 0.25s ease, transform 0.25s var(--jt-ease), visibility 0.25s;
}

.jt-menu .sub-menu .sub-menu {
	top: -0.75rem;
	left: 100%;
}

.jt-menu li:hover > .sub-menu,
.jt-menu li:focus-within > .sub-menu {
	opacity: 1;
	visibility: visible;
	transform: none;
}

.jt-menu .sub-menu li {
	position: relative;
}

.jt-menu .sub-menu a {
	padding: 0.6rem 1.4rem;
	color: rgba(255, 255, 255, 0.82);
	font-size: 0.78rem;
	justify-content: space-between;
}

.jt-menu .sub-menu .menu-item-has-children > a::before {
	transform: rotate(-45deg);
}

.jt-menu .sub-menu a:hover,
.jt-menu .sub-menu .current-menu-item > a {
	color: var(--jt-primary);
	background: rgba(255, 255, 255, 0.04);
}

.site-header__actions {
	display: flex;
	align-items: center;
	gap: 1rem;
}

.main-navigation + .site-header__actions {
	margin-left: 0.5rem;
}

.site-header__cta {
	padding: 0.85em 1.6em;
}

.jt-menu-toggle {
	display: none;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	padding: 0;
	border: 1px solid color-mix(in srgb, currentColor 30%, transparent);
	border-radius: var(--jt-radius);
	background: transparent;
	color: var(--jt-header-text);
	cursor: pointer;
	letter-spacing: 0;
}

.jt-menu-toggle:hover {
	background: color-mix(in srgb, currentColor 8%, transparent);
	color: var(--jt-header-text);
	border-color: var(--jt-primary);
}

.jt-menu-toggle .jt-icon {
	width: 24px;
	height: 24px;
}

.jt-offcanvas-always .main-navigation {
	display: none;
}

.jt-offcanvas-always .site-header__actions {
	margin-left: auto;
}

.jt-offcanvas-always .jt-menu-toggle {
	display: inline-flex;
}

@media (max-width: 1024px) {
	.main-navigation {
		display: none;
	}

	.site-header__actions {
		margin-left: auto;
	}

	.jt-menu-toggle {
		display: inline-flex;
	}
}

@media (max-width: 600px) {
	.site-header__cta {
		display: none;
	}

	.custom-logo {
		height: min(var(--jt-logo-height), 38px);
	}
}

/* Top bar */

/* Height of the top bar, so content under a see-through header clears it. */
.jt-has-topbar {
	--jt-topbar-h: 41px;
}

@media (max-width: 760px) {
	.jt-has-topbar.jt-topbar-m-all {
		--jt-topbar-h: 72px;
	}

	.jt-has-topbar.jt-topbar-m-hide {
		--jt-topbar-h: 0px;
	}
}

.jt-topbar {
	background: var(--jt-topbar-bg, var(--jt-dark));
	color: var(--jt-topbar-text, rgba(255, 255, 255, 0.75));
	font-size: 0.8rem;
	border-bottom: 1px solid rgba(255, 255, 255, 0.08);
	overflow: hidden;
	max-height: 60px;
	transition: max-height 0.35s var(--jt-ease);
}

.jt-header-transparent .jt-topbar:not(.jt-topbar--bg) {
	background: transparent;
}

.jt-topbar--below {
	border-bottom: 0;
	border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.jt-header-transparent.jt-header-sticky .jt-header-wrap.is-scrolled .jt-topbar {
	max-height: 0;
}

.jt-topbar__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	min-height: 40px;
}

.jt-topbar__text p {
	margin: 0;
}

.jt-topbar__contact {
	display: flex;
	align-items: center;
	gap: 1.25rem;
}

.jt-topbar a {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	text-decoration: none;
}

.jt-topbar .jt-icon {
	width: 14px;
	height: 14px;
}

@media (max-width: 760px) {
	.jt-topbar--m-contact .jt-topbar__text,
	.jt-topbar--m-hide {
		display: none;
	}

	.jt-topbar__inner {
		justify-content: center;
	}

	.jt-topbar--m-all .jt-topbar__inner {
		flex-direction: column;
		gap: 0.25rem;
		padding-block: 0.4rem;
		text-align: center;
	}

	.jt-topbar--m-all {
		max-height: 140px;
	}

	.jt-topbar__contact {
		flex-wrap: wrap;
		justify-content: center;
		gap: 0.25rem 1rem;
	}
}

/* 5. Slide-out menu ------------------------------------------------------- */

.jt-offcanvas-overlay {
	position: fixed;
	inset: 0;
	z-index: 998;
	background: rgba(0, 0, 0, 0.6);
	opacity: 0;
	transition: opacity 0.35s ease;
}

.jt-offcanvas {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	z-index: 999;
	display: flex;
	flex-direction: column;
	width: min(420px, 100%);
	padding: 1.5rem var(--jt-gutter) 2rem;
	background: var(--jt-dark);
	color: #fff;
	overflow-y: auto;
	transform: translateX(100%);
	transition: transform 0.45s var(--jt-ease);
}

.admin-bar .jt-offcanvas {
	top: var(--jt-admin-bar);
}

.jt-offcanvas-overlay[hidden],
.jt-offcanvas[hidden] {
	display: none;
}

.jt-offcanvas-open .jt-offcanvas-overlay {
	opacity: 1;
}

.jt-offcanvas-open .jt-offcanvas {
	transform: none;
}

.jt-offcanvas-open {
	overflow: hidden;
}

.jt-offcanvas__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 2rem;
}

.jt-offcanvas__header .custom-logo {
	height: min(var(--jt-logo-height), 40px);
}

.jt-offcanvas__close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.2);
	border-radius: var(--jt-radius);
	background: transparent;
	color: #fff;
	cursor: pointer;
}

.jt-offcanvas__close:hover {
	border-color: var(--jt-primary);
	background: transparent;
	color: var(--jt-primary);
}

.jt-mobile-menu,
.jt-mobile-menu ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.jt-mobile-menu li {
	position: relative;
	border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.jt-mobile-menu a {
	display: block;
	padding: 1rem 3rem 1rem 0;
	color: #fff;
	font-family: var(--jt-font-heading);
	font-size: 1.05rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-decoration: none;
	text-transform: uppercase;
}

.jt-mobile-menu a:hover,
.jt-mobile-menu .current-menu-item > a {
	color: var(--jt-primary);
}

.jt-mobile-menu .sub-menu {
	display: none;
	padding-left: 1rem;
	border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.jt-mobile-menu .sub-menu li:last-child {
	border-bottom: 0;
}

.jt-mobile-menu .sub-menu a {
	font-size: 0.92rem;
	color: rgba(255, 255, 255, 0.75);
	text-transform: none;
	letter-spacing: 0;
}

.jt-mobile-menu .is-open > .sub-menu {
	display: block;
}

.jt-submenu-toggle {
	position: absolute;
	top: 0.5rem;
	right: 0;
	width: 40px;
	height: 40px;
	padding: 0;
	border: 0;
	background: transparent;
	color: #fff;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.jt-submenu-toggle:hover {
	background: rgba(255, 255, 255, 0.06);
	color: var(--jt-primary);
}

.jt-submenu-toggle .jt-icon {
	transition: transform 0.25s ease;
}

.is-open > .jt-submenu-toggle .jt-icon {
	transform: rotate(180deg);
}

.jt-offcanvas__footer {
	display: grid;
	gap: 1rem;
	margin-top: auto;
	padding-top: 2rem;
}

.jt-offcanvas__contact {
	display: inline-flex;
	align-items: center;
	gap: 0.6em;
	color: rgba(255, 255, 255, 0.8);
	text-decoration: none;
}

/* 6. Page banner ------------------------------------------------------------- */

.jt-page-hero {
	position: relative;
	display: flex;
	align-items: flex-end;
	min-height: var(--jt-banner-height);
	padding-block: clamp(2.5rem, 6vw, 4.5rem);
	background: var(--jt-dark);
	color: #fff;
	overflow: hidden;
	isolation: isolate;
}

.jt-header-transparent .jt-page-hero {
	padding-top: calc(var(--jt-header-h) + var(--jt-topbar-h, 0px) + 3rem);
	min-height: calc(var(--jt-banner-height) + var(--jt-header-h) + var(--jt-topbar-h, 0px));
}

.jt-page-hero__image {
	position: absolute;
	inset: 0;
	z-index: -2;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transform: scale(1.06);
	animation: jt-ken-burns 12s var(--jt-ease) forwards;
}

.jt-page-hero.has-image::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(90deg, rgba(0, 0, 0, 0.78) 0%, rgba(0, 0, 0, 0.45) 60%, rgba(0, 0, 0, 0.2) 100%);
}

.jt-page-hero .page-title {
	margin: 0;
	max-width: 22ch;
	color: #fff;
}

.jt-page-hero .archive-description {
	max-width: 60ch;
	margin-top: 1rem;
	color: rgba(255, 255, 255, 0.8);
}

.jt-page-hero::before {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 120px;
	height: 4px;
	background: var(--jt-primary);
}

.jt-breadcrumbs {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5em;
	margin-bottom: 1rem;
	font-size: 0.78rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.65);
}

.jt-breadcrumbs a {
	text-decoration: none;
}

.jt-breadcrumbs a:hover {
	color: var(--jt-primary);
}

.jt-breadcrumbs [aria-current] {
	color: var(--jt-primary);
}

.jt-page-title {
	padding-top: var(--jt-section-pad);
}

.page .jt-page-title > *,
.jt-content-area:not(:has(> .jt-sidebar)) > .jt-content > .jt-single {
	max-width: 840px;
	margin-inline: auto;
}

.jt-page-title + .jt-content-area,
.jt-page-title + .jt-page-content {
	padding-top: 2rem;
}

@keyframes jt-ken-burns {
	to {
		transform: scale(1);
	}
}

/* 7. Content & blocks ------------------------------------------------------- */

.entry-content > * {
	margin-block: 0;
}

.entry-content > * + * {
	margin-top: 1.5rem;
}

.entry-content > h2,
.entry-content > h3 {
	margin-top: 2.5rem;
}

.entry-content > :is(h1, h2, h3, h4, h5, h6) + * {
	margin-top: 1rem;
}

/* Wide and full width blocks break out of the content column. */
.jt-page-content .entry-content > :where(:not(.alignwide, .alignfull, .alignleft, .alignright)) {
	max-width: 840px;
	margin-inline: auto;
}

.entry-content > .alignwide {
	max-width: var(--jt-container);
	margin-inline: auto;
}

.entry-content > .alignfull {
	width: 100vw;
	max-width: 100vw;
	margin-inline: calc(50% - 50vw);
}

/* Full width sections stack without gaps. */
.entry-content > .alignfull + .alignfull {
	margin-top: 0;
}

/* A full width section at the very top/bottom of a page sits flush with the header/footer. */
.jt-page-content .entry-content > .alignfull:first-child {
	margin-top: calc(var(--jt-section-pad) * -1);
}

.jt-page-content .entry-content > .alignfull:last-child {
	margin-bottom: calc(var(--jt-section-pad) * -1);
}

.jt-entry-full > .alignfull:first-child,
.jt-entry-full > *:first-child {
	margin-top: 0;
}

.jt-entry-full > *:not(.alignfull, .alignwide) {
	max-width: var(--jt-container);
	margin-inline: auto;
	padding-inline: var(--jt-gutter);
}

.jt-entry-full > .alignwide {
	max-width: var(--jt-container);
	margin-inline: auto;
}

.alignleft {
	float: left;
	margin: 0.3em 2em 1em 0;
}

.alignright {
	float: right;
	margin: 0.3em 0 1em 2em;
}

.aligncenter {
	display: block;
	margin-inline: auto;
}

.wp-caption-text,
figcaption {
	margin-top: 0.6em;
	font-size: 0.85em;
	color: color-mix(in srgb, var(--jt-text) 75%, transparent);
}

.wp-block-image img,
.wp-block-media-text__media img,
.wp-block-gallery img {
	border-radius: var(--jt-card-radius);
}

.wp-block-cover {
	min-height: 480px;
}

.wp-block-cover.alignfull .wp-block-cover__inner-container {
	width: 100%;
	max-width: calc(var(--jt-container) + var(--jt-gutter) * 2);
	margin-inline: auto;
	padding-inline: var(--jt-gutter);
}

.wp-block-cover h1,
.wp-block-cover h2,
.wp-block-cover h3 {
	color: inherit;
}

.wp-block-separator {
	border-top-width: 1px;
	opacity: 1;
}

.wp-block-separator.is-style-wide {
	border-top-color: var(--jt-border);
}

.wp-block-separator:not(.is-style-wide):not(.is-style-dots) {
	width: 80px;
	border-top: 3px solid var(--jt-primary);
	margin-left: 0;
}

.wp-block-quote.is-style-large {
	border-left: 0;
	padding-left: 0;
}

.wp-block-pullquote {
	border-top: 3px solid var(--jt-primary);
	border-bottom: 3px solid var(--jt-primary);
}

.has-dark-background-color,
.has-dark-alt-background-color,
.jt-section-dark {
	color: rgba(255, 255, 255, 0.82);
}

.has-dark-background-color :is(h1, h2, h3, h4, h5, h6),
.has-dark-alt-background-color :is(h1, h2, h3, h4, h5, h6),
.jt-section-dark :is(h1, h2, h3, h4, h5, h6) {
	color: #fff;
}

.page-links {
	clear: both;
	margin-top: 2rem;
}

/* 8. Blog --------------------------------------------------------------------- */

.jt-post-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
	gap: clamp(1.5rem, 3vw, 2.5rem);
}

.jt-card {
	display: flex;
	flex-direction: column;
	background: var(--jt-bg);
	border: 1px solid var(--jt-border);
	border-radius: var(--jt-card-radius);
	overflow: hidden;
	transition: transform 0.35s var(--jt-ease), box-shadow 0.35s var(--jt-ease), opacity var(--jt-anim-duration) ease;
}

.jt-card:hover {
	transform: translateY(-6px);
	box-shadow: 0 24px 50px rgba(0, 0, 0, 0.12);
}

.jt-card__image {
	display: block;
	aspect-ratio: 16 / 11;
	overflow: hidden;
	background: var(--jt-dark);
}

.jt-card__image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.8s var(--jt-ease);
}

.jt-card:hover .jt-card__image img {
	transform: scale(1.06);
}

.jt-card__placeholder {
	display: block;
	width: 100%;
	height: 100%;
	background: linear-gradient(135deg, var(--jt-dark) 0%, var(--jt-dark-alt) 100%);
}

.jt-card__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: 1.75rem;
}

.jt-card__meta {
	margin-bottom: 0.6rem;
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--jt-primary);
}

.jt-card__title {
	font-size: 1.3rem;
	margin-bottom: 0.75rem;
}

.jt-card__title a {
	text-decoration: none;
}

.jt-card__excerpt {
	font-size: 0.95rem;
}

.jt-card .jt-link-arrow {
	margin-top: auto;
}

.sticky .jt-card__meta::after {
	content: " \2022  Featured";
}

.pagination,
.navigation.pagination {
	margin-top: 3.5rem;
}

.nav-links {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 46px;
	height: 46px;
	padding: 0 1rem;
	border: 1px solid var(--jt-border);
	border-radius: var(--jt-radius);
	font-weight: 600;
	text-decoration: none;
}

.page-numbers.current,
.page-numbers:hover {
	background: var(--jt-dark);
	border-color: var(--jt-dark);
	color: #fff;
}

.entry-meta {
	display: flex;
	gap: 1rem;
	margin-bottom: 2rem;
	font-size: 0.8rem;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--jt-primary);
}

.jt-single__image {
	margin: 0 0 2.5rem;
}

.jt-single__image img {
	width: 100%;
	border-radius: var(--jt-card-radius);
}

.jt-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	list-style: none;
	margin: 2.5rem 0 0;
	padding: 0;
}

.jt-tags a {
	display: inline-block;
	padding: 0.35em 0.9em;
	background: var(--jt-light);
	font-size: 0.8rem;
	text-decoration: none;
}

.post-navigation {
	margin-top: 3rem;
	padding-top: 2rem;
	border-top: 1px solid var(--jt-border);
}

.post-navigation .nav-links {
	justify-content: space-between;
}

.post-navigation a {
	display: flex;
	flex-direction: column;
	text-decoration: none;
}

.post-navigation .nav-next {
	text-align: right;
	margin-left: auto;
}

.nav-subtitle {
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--jt-primary);
}

.nav-title {
	font-family: var(--jt-font-heading);
	font-weight: 700;
	color: var(--jt-heading);
}

.widget {
	margin-bottom: 2.5rem;
}

.widget-title {
	margin-bottom: 1rem;
	font-size: 0.85rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

.widget ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.widget li {
	padding: 0.5em 0;
	border-bottom: 1px solid var(--jt-border);
}

.widget li a {
	text-decoration: none;
}

.comments-area {
	margin-top: 4rem;
}

.comment-list {
	list-style: none;
	padding: 0;
}

.comment-list .children {
	list-style: none;
	padding-left: 2rem;
}

.comment-body {
	padding: 1.5rem 0;
	border-bottom: 1px solid var(--jt-border);
}

.comment-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1rem;
	align-items: center;
	font-size: 0.85rem;
}

.comment-author img {
	border-radius: 50%;
	margin-right: 0.6rem;
}

.jt-404 {
	text-align: center;
}

.jt-404__code {
	margin: 0;
	font-family: var(--jt-font-heading);
	font-size: clamp(6rem, 18vw, 11rem);
	font-weight: 800;
	line-height: 1;
	color: var(--jt-primary);
}

.jt-404 .search-form {
	max-width: 460px;
	margin: 2rem auto;
}

/* 9. Footer ------------------------------------------------------------------- */

.site-footer {
	background: var(--jt-footer-bg);
	color: var(--jt-footer-text);
	font-size: 0.95rem;
}

.site-footer a {
	color: var(--jt-footer-text);
	text-decoration: none;
}

.site-footer a:hover {
	color: var(--jt-primary);
}

.site-footer :is(h1, h2, h3, h4, h5, h6),
.site-footer .widget-title {
	color: #fff;
}

.site-footer__widgets {
	display: grid;
	gap: clamp(2rem, 4vw, 3.5rem);
	padding-block: clamp(3.5rem, 7vw, 6rem);
}

.site-footer__widgets.jt-cols-4 { grid-template-columns: 1.5fr 1fr 1fr 1fr; }
.site-footer__widgets.jt-cols-3 { grid-template-columns: 1.5fr 1fr 1fr; }
.site-footer__widgets.jt-cols-2 { grid-template-columns: 1fr 1fr; }

@media (max-width: 960px) {
	.site-footer__widgets.jt-cols-4,
	.site-footer__widgets.jt-cols-3 {
		grid-template-columns: 1fr 1fr;
	}
}

@media (max-width: 600px) {
	.site-footer__widgets[class*="jt-cols-"] {
		grid-template-columns: 1fr;
	}
}

.site-footer .site-branding {
	margin-bottom: 1.5rem;
}

.site-footer .site-title {
	color: #fff;
}

.site-footer__about {
	max-width: 36ch;
}

.site-footer .widget li {
	border-color: rgba(255, 255, 255, 0.08);
}

.jt-footer-menu {
	list-style: none;
	margin: 0;
	padding: 0;
}

.jt-footer-menu li {
	padding: 0.35em 0;
}

.site-footer__address {
	font-style: normal;
	line-height: 1.8;
}

.site-footer__bottom {
	border-top: 1px solid rgba(255, 255, 255, 0.08);
	font-size: 0.82rem;
}

.site-footer__bottom.has-bg {
	background: var(--jt-bottombar-bg);
	border-top: 0;
}

.site-footer__bottom.has-color,
.site-footer__bottom.has-color a {
	color: var(--jt-bottombar-text);
}

.site-footer__bottom-text p,
.site-footer__bottom .jt-social {
	margin: 0;
}

.site-footer__bottom--center .site-footer__bottom-inner {
	flex-direction: column;
	justify-content: center;
	gap: 0.6rem;
	text-align: center;
}

@media (max-width: 760px) {
	.site-footer__bottom-inner {
		flex-direction: column;
		justify-content: center;
		gap: 0.6rem;
		text-align: center;
	}
}

.site-footer__bottom-inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1rem 2rem;
	padding-block: 1.5rem;
}

.site-footer__copyright {
	margin: 0;
}

.jt-legal-menu {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1.5rem;
	list-style: none;
	margin: 0;
	padding: 0;
}

.jt-social {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
	list-style: none;
	margin: 1.5rem 0 0;
	padding: 0;
}

.jt-social a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border: 1px solid rgba(255, 255, 255, 0.2);
	border-radius: 50%;
	color: inherit;
	transition: background-color 0.25s ease, border-color 0.25s ease, color 0.25s ease, transform 0.25s var(--jt-ease);
}

.jt-social a:hover {
	background: var(--jt-primary);
	border-color: var(--jt-primary);
	color: var(--jt-on-primary);
	transform: translateY(-3px);
}

.jt-social .jt-icon {
	width: 18px;
	height: 18px;
}

.jt-social--small {
	margin: 0;
	gap: 0.25rem;
}

.jt-social--small a {
	width: 28px;
	height: 28px;
	border: 0;
}

.jt-social--small .jt-icon {
	width: 14px;
	height: 14px;
}

.jt-back-to-top {
	position: fixed;
	right: 1.5rem;
	bottom: 1.5rem;
	z-index: 90;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	border-radius: var(--jt-radius);
	background: var(--jt-primary);
	color: var(--jt-on-primary);
	box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
	opacity: 0;
	visibility: hidden;
	transform: translateY(12px);
	transition: opacity 0.3s ease, transform 0.3s var(--jt-ease), visibility 0.3s, background-color 0.25s ease;
}

.jt-back-to-top.is-visible {
	opacity: 1;
	visibility: visible;
	transform: none;
}

.jt-back-to-top:hover {
	background: var(--jt-dark);
	color: #fff;
}

/* 10. Animation & effects ---------------------------------------------------
 *
 * Add one of these classes to any element (block editor: Advanced >
 * Additional CSS class; Elementor: Advanced > CSS Classes), or pick an
 * "Animate" style from a block's Styles panel:
 *
 *   jt-anim-fade-up  jt-anim-fade-in  jt-anim-fade-left
 *   jt-anim-fade-right  jt-anim-zoom-in
 *
 * Optional: jt-delay-1 ... jt-delay-6 (100ms steps), or jt-stagger on a
 * parent to animate its children one after another.
 * Hover helpers: jt-hover-lift, jt-hover-zoom, jt-hover-shadow.
 * Counters: give a heading or paragraph the class jt-counter and write the
 * final number ("1,250+", "40 years"); it counts up when scrolled into view.
 */

.jt-anim-on [class*="jt-anim-"],
.jt-anim-on .jt-auto-animate:not(.jt-builder-page) .jt-page-content .entry-content > * {
	transition:
		opacity var(--jt-anim-duration) var(--jt-ease) var(--jt-delay, 0ms),
		transform var(--jt-anim-duration) var(--jt-ease) var(--jt-delay, 0ms);
}

.jt-anim-on [class*="jt-anim-"]:not(.is-visible),
.jt-anim-on .jt-auto-animate:not(.jt-builder-page) .jt-page-content .entry-content > :not(.is-visible) {
	opacity: 0;
}

.jt-anim-on [class*="jt-anim-fade-up"]:not(.is-visible),
.jt-anim-on .jt-auto-animate:not(.jt-builder-page) .jt-page-content .entry-content > :not(.is-visible):not([class*="jt-anim-"]) {
	transform: translate3d(0, var(--jt-anim-distance), 0);
}

.jt-anim-on [class*="jt-anim-fade-left"]:not(.is-visible) {
	transform: translate3d(calc(var(--jt-anim-distance) * -1.5), 0, 0);
}

.jt-anim-on [class*="jt-anim-fade-right"]:not(.is-visible) {
	transform: translate3d(calc(var(--jt-anim-distance) * 1.5), 0, 0);
}

.jt-anim-on [class*="jt-anim-zoom-in"]:not(.is-visible) {
	transform: scale(0.92);
}

.jt-delay-1 { --jt-delay: 100ms; }
.jt-delay-2 { --jt-delay: 200ms; }
.jt-delay-3 { --jt-delay: 300ms; }
.jt-delay-4 { --jt-delay: 400ms; }
.jt-delay-5 { --jt-delay: 500ms; }
.jt-delay-6 { --jt-delay: 600ms; }

.jt-hover-lift {
	transition: transform 0.35s var(--jt-ease), box-shadow 0.35s var(--jt-ease);
}

.jt-hover-lift:hover {
	transform: translateY(-6px);
	box-shadow: 0 24px 50px rgba(0, 0, 0, 0.14);
}

.jt-hover-shadow {
	transition: box-shadow 0.35s var(--jt-ease);
}

.jt-hover-shadow:hover {
	box-shadow: 0 24px 50px rgba(0, 0, 0, 0.14);
}

.jt-hover-zoom {
	overflow: hidden;
}

.jt-hover-zoom img {
	transition: transform 0.8s var(--jt-ease);
}

.jt-hover-zoom:hover img {
	transform: scale(1.06);
}

.jt-counter {
	font-variant-numeric: tabular-nums;
}

/* 11. Section helpers ------------------------------------------------------- */

/* Small label above a heading: "WHAT WE DO" */
.jt-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.8em;
	margin-bottom: var(--jt-label-space, 1rem) !important;
	font-family: var(--jt-label-font, var(--jt-font-heading));
	font-size: var(--jt-label-size, 0.78rem);
	font-weight: var(--jt-label-weight, 700);
	line-height: 1.4;
	letter-spacing: var(--jt-label-spacing, 0.2em);
	text-transform: var(--jt-label-case, uppercase);
	color: var(--jt-label-color, var(--jt-primary));
}

.jt-eyebrow::before {
	display: var(--jt-label-line, block);
	content: "";
	width: 36px;
	height: 2px;
	background: currentColor;
}

.jt-eyebrow.has-text-align-center {
	justify-content: center;
}

.jt-eyebrow.has-text-align-right {
	justify-content: flex-end;
}

.jt-hero {
	min-height: min(92vh, 900px) !important;
}

.jt-header-transparent .jt-hero:first-child .wp-block-cover__inner-container {
	padding-top: calc(var(--jt-header-h) + var(--jt-topbar-h, 0px));
}

.jt-hero h1 {
	max-width: 16ch;
	color: #fff;
}

.jt-hero p {
	max-width: 52ch;
	font-size: 1.15rem;
	color: rgba(255, 255, 255, 0.85);
}

.jt-service-card {
	position: relative;
	height: 100%;
	overflow: hidden;
	border-radius: var(--jt-card-radius);
	background: var(--jt-bg);
	border: 1px solid var(--jt-border);
	transition: transform 0.35s var(--jt-ease), box-shadow 0.35s var(--jt-ease);
}

.jt-service-card:hover {
	transform: translateY(-6px);
	box-shadow: 0 24px 50px rgba(0, 0, 0, 0.12);
}

.jt-service-card .wp-block-image {
	margin: 0;
	overflow: hidden;
}

.jt-service-card .wp-block-image img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: 0;
	transition: transform 0.8s var(--jt-ease);
}

.jt-service-card:hover .wp-block-image img {
	transform: scale(1.06);
}

.jt-service-card > :not(.wp-block-image) {
	padding-inline: 1.75rem;
}

.jt-service-card > :last-child {
	padding-bottom: 1.75rem;
}

.jt-stat {
	padding-top: 1.25rem;
	border-top: 3px solid var(--jt-primary);
}

.jt-stat .jt-counter {
	margin-bottom: 0.25rem;
	font-size: clamp(2.5rem, 5vw, 3.75rem);
	line-height: 1;
}

.jt-logo-row img {
	max-height: 90px;
	width: auto;
	object-fit: contain;
	filter: grayscale(1);
	opacity: 0.8;
	transition: filter 0.3s ease, opacity 0.3s ease;
}

.jt-logo-row img:hover {
	filter: none;
	opacity: 1;
}

.jt-check-list {
	list-style: none;
	padding-left: 0;
}

.jt-check-list li {
	position: relative;
	padding-left: 2rem;
	margin-bottom: 0.6rem;
}

.jt-check-list li::before {
	content: "";
	position: absolute;
	left: 0.2rem;
	top: 0.45em;
	width: 0.9rem;
	height: 0.5rem;
	border-left: 2px solid var(--jt-primary);
	border-bottom: 2px solid var(--jt-primary);
	transform: rotate(-45deg);
}

.jt-team-card img {
	aspect-ratio: 4 / 5;
	object-fit: cover;
}

/* 11b. JT-Media sections (Elementor widgets, shortcodes, project pages) ------- */

.jt-section {
	--jt-section-bg: var(--jt-bg);
	position: relative;
	background: var(--jt-section-bg);
}

.jt-section--alt { --jt-section-bg: var(--jt-light); }
.jt-section--dark { --jt-section-bg: var(--jt-dark); }
.jt-section--dark-alt { --jt-section-bg: var(--jt-dark-alt); }
.jt-section--accent { --jt-section-bg: var(--jt-primary); color: var(--jt-on-primary); }
.jt-section--none { --jt-section-bg: transparent; }
.jt-section--clear { --jt-section-bg: transparent; }

.jt-section--dark,
.jt-section--dark-alt {
	color: rgba(255, 255, 255, 0.8);
}

.jt-section--dark :is(h1, h2, h3, h4, h5, h6),
.jt-section--dark-alt :is(h1, h2, h3, h4, h5, h6) {
	color: #fff;
}

.jt-section--accent :is(h1, h2, h3, h4, h5, h6),
.jt-section--accent .jt-eyebrow {
	color: var(--jt-on-primary);
}

.jt-section--accent .jt-button {
	background: var(--jt-dark);
	border-color: var(--jt-dark);
	color: #fff;
}

.jt-pad-none { padding-block: 0; }
.jt-pad-small { padding-block: clamp(2rem, 4vw, 3.5rem); }
.jt-pad-normal { padding-block: var(--jt-section-pad); }
.jt-pad-large { padding-block: calc(var(--jt-section-pad) * 1.5); }
.jt-section--none { padding-block: 0; }
.jt-section--none > .jt-container { padding-inline: 0; }

/* Break a section out of its Elementor container to the screen edges. */
.elementor-widget .jt-bleed {
	width: 100vw;
	max-width: 100vw;
	margin-inline: calc(50% - 50vw);
}

.jt-section__head {
	max-width: 760px;
	margin-bottom: clamp(2rem, 4vw, 3.5rem);
}

.jt-section__head--center {
	margin-inline: auto;
	text-align: center;
}

.jt-section__head:only-child {
	margin-bottom: 0;
}

.jt-section__title {
	margin-bottom: 0.4em;
}

.jt-section__intro {
	font-size: var(--jt-intro-size, inherit);
	font-weight: var(--jt-intro-weight, inherit);
}

.jt-section__intro p:last-child {
	margin-bottom: 0;
}

.jt-section__more {
	margin: clamp(2rem, 4vw, 3rem) 0 0;
	text-align: center;
}

.jt-grid {
	display: grid;
	grid-template-columns: repeat(var(--jt-cols, 3), minmax(0, 1fr));
	gap: clamp(1.25rem, 2.5vw, 2rem);
}

@media (max-width: 1024px) {
	.jt-grid {
		grid-template-columns: repeat(min(var(--jt-cols, 3), 2), minmax(0, 1fr));
	}
}

@media (max-width: 600px) {
	.jt-grid {
		grid-template-columns: minmax(0, 1fr);
	}
}

.jt-empty {
	padding: 1.5rem;
	border: 1px dashed var(--jt-border);
	text-align: center;
}

/* Services */

.jt-service {
	display: flex;
	flex-direction: column;
	height: 100%;
	background: var(--jt-bg);
	border: 1px solid var(--jt-border);
	border-radius: var(--jt-card-radius);
	overflow: hidden;
	transition: transform 0.35s var(--jt-ease), box-shadow 0.35s var(--jt-ease);
}

.jt-service:hover {
	transform: translateY(-6px);
	box-shadow: 0 24px 50px rgba(0, 0, 0, 0.14);
}

.jt-service__image {
	display: block;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: var(--jt-dark);
}

.jt-service__image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.8s var(--jt-ease);
}

.jt-service:hover .jt-service__image img {
	transform: scale(1.06);
}

.jt-service__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: 1.75rem;
	color: var(--jt-text);
}

.jt-service__title {
	font-size: 1.35rem;
}

.jt-service__title a {
	text-decoration: none;
	color: var(--jt-heading);
}

.jt-service .jt-link-arrow {
	margin-top: auto;
}

.jt-service:hover .jt-link-arrow .jt-icon {
	transform: translateX(4px);
}

/* Image & text */

.jt-image-text {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: clamp(2rem, 6vw, 6rem);
	align-items: center;
}

.jt-image-text--image-right .jt-image-text__media {
	order: 2;
}

.jt-image-text__media img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: var(--jt-card-radius);
}

.jt-image-text__content > :last-child {
	margin-bottom: 0;
}

@media (max-width: 860px) {
	.jt-image-text {
		grid-template-columns: 1fr;
	}

	.jt-image-text--image-right .jt-image-text__media {
		order: 0;
	}
}

/* Stats */

.jt-stats .jt-counter {
	margin: 0 0 0.35rem;
	font-family: var(--jt-font-heading);
	font-size: clamp(2.25rem, 4.2vw, 3.75rem);
	font-weight: 800;
	line-height: 1;
	color: var(--jt-heading);
	overflow-wrap: anywhere;
}

/* Narrow sections: smaller numbers so they never collide. */
.jt-d-narrow .jt-stats .jt-counter {
	font-size: clamp(2rem, 3.2vw, 2.75rem);
}

.jt-section--dark .jt-stats .jt-counter,
.jt-section--dark-alt .jt-stats .jt-counter {
	color: #fff;
}

.jt-stat__label {
	margin: 0;
}

/* Logos */

.jt-logos {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: clamp(1.5rem, 5vw, 4rem);
}

.jt-logos__item img {
	max-height: 100px;
	max-width: 220px;
	width: auto;
	object-fit: contain;
	transition: filter 0.3s ease, opacity 0.3s ease;
}

.jt-logos--grey img {
	filter: grayscale(1);
	opacity: 0.75;
}

.jt-logos--grey img:hover {
	filter: none;
	opacity: 1;
}

/* Call to action */

.jt-cta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 2rem;
}

.jt-cta__text {
	max-width: 720px;
}

.jt-cta__text h2 {
	margin-bottom: 0.4em;
}

.jt-cta__text p:last-child {
	margin-bottom: 0;
}

.jt-cta__buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
}

/* Rich text */

.jt-richtext--narrow {
	max-width: 840px;
}

.jt-section__head--center + .jt-richtext--narrow {
	margin-inline: auto;
}

.jt-richtext > :last-child {
	margin-bottom: 0;
}

/* Team */

.jt-team-member {
	display: flex;
	flex-direction: column;
}

.jt-team-member__photo {
	position: relative;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	border-radius: var(--jt-card-radius);
	background: var(--jt-dark-alt);
}

.jt-team-member__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.8s var(--jt-ease), filter 0.5s ease;
}

.jt-team-member:hover .jt-team-member__photo img {
	transform: scale(1.05);
}

.jt-team-member__placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	font-family: var(--jt-font-heading);
	font-size: 5rem;
	font-weight: 800;
	color: rgba(255, 255, 255, 0.15);
}

.jt-team-member__body {
	padding-top: 1.25rem;
}

.jt-team-member__name {
	margin: 0 0 0.25rem;
	font-size: 1.3rem;
}

.jt-team-member__role {
	margin: 0 0 0.75rem;
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--jt-primary);
}

.jt-team-member__bio {
	font-size: 0.95rem;
}

.jt-team-member__contact {
	display: flex;
	gap: 0.5rem;
	list-style: none;
	margin: 0;
	padding: 0;
}

.jt-team-member__contact a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	border: 1px solid var(--jt-border);
	border-radius: 50%;
	color: var(--jt-heading);
	transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.jt-section--dark .jt-team-member__contact a,
.jt-section--dark-alt .jt-team-member__contact a {
	border-color: rgba(255, 255, 255, 0.2);
	color: #fff;
}

.jt-team-member__contact a:hover {
	background: var(--jt-primary);
	border-color: var(--jt-primary);
	color: var(--jt-on-primary);
}

.jt-team-member__contact .jt-icon {
	width: 16px;
	height: 16px;
}

/* Projects */

.jt-filter {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-bottom: 2rem;
}

.jt-filter__button {
	padding: 0.65em 1.3em;
	border: 1px solid var(--jt-border);
	border-radius: var(--jt-radius);
	background: transparent;
	color: inherit;
	font-family: var(--jt-font-heading);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.jt-filter__button:hover,
.jt-filter__button.is-active {
	background: var(--jt-dark);
	border-color: var(--jt-dark);
	color: #fff;
}

.jt-section--dark .jt-filter__button.is-active,
.jt-section--dark-alt .jt-filter__button.is-active {
	background: var(--jt-primary);
	border-color: var(--jt-primary);
	color: var(--jt-on-primary);
}

.jt-project[hidden] {
	display: none;
}

.jt-project__link {
	position: relative;
	display: block;
	overflow: hidden;
	border-radius: var(--jt-card-radius);
	color: #fff;
	text-decoration: none;
	background: var(--jt-dark);
}

.jt-project__image {
	aspect-ratio: 4 / 3;
}

.jt-project__image img,
.jt-project__image .jt-card__placeholder {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.9s var(--jt-ease);
}

.jt-project__link:hover .jt-project__image img {
	transform: scale(1.07);
}

.jt-project__body {
	position: absolute;
	inset: auto 0 0 0;
	padding: 1.75rem;
	background: linear-gradient(to top, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0.5) 60%, rgba(0, 0, 0, 0) 100%);
	padding-top: 4rem;
}

.jt-project__sector {
	margin: 0 0 0.4rem;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--jt-primary);
}

.jt-project__title {
	margin: 0;
	font-size: 1.25rem;
	color: #fff;
}

.jt-project__location,
.jt-project__excerpt {
	margin: 0.35rem 0 0;
	font-size: 0.9rem;
	color: rgba(255, 255, 255, 0.75);
}

.jt-project__more {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	margin-top: 0;
	max-height: 0;
	overflow: hidden;
	opacity: 0;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	transition: max-height 0.4s var(--jt-ease), opacity 0.4s ease, margin-top 0.4s var(--jt-ease);
}

.jt-project__link:hover .jt-project__more,
.jt-project__link:focus-visible .jt-project__more {
	max-height: 2rem;
	margin-top: 0.9rem;
	opacity: 1;
}

@media (hover: none) {
	.jt-project__more {
		max-height: 2rem;
		margin-top: 0.9rem;
		opacity: 1;
	}
}

.jt-project-single {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 340px;
	gap: clamp(2rem, 5vw, 5rem);
	align-items: start;
}

.jt-project-single__aside {
	position: sticky;
	top: calc(var(--jt-header-h) + var(--jt-admin-bar) + 1.5rem);
	padding: 2rem;
	background: var(--jt-light);
	border-top: 3px solid var(--jt-primary);
}

@media (max-width: 960px) {
	.jt-project-single {
		grid-template-columns: minmax(0, 1fr);
	}

	.jt-project-single__aside {
		position: static;
	}
}

.jt-project-facts {
	margin: 0 0 1.5rem;
}

.jt-project-facts > div {
	padding: 0.75rem 0;
	border-bottom: 1px solid var(--jt-border);
}

.jt-project-facts dt {
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--jt-primary);
}

.jt-project-facts dd {
	margin: 0.15rem 0 0;
	font-weight: 600;
	color: var(--jt-heading);
}

.jt-project-facts dd a {
	text-decoration: none;
}

/* Hero slider */

.jt-slider {
	position: relative;
	height: var(--jt-slider-h, 92vh);
	min-height: 460px;
	overflow: hidden;
	background: var(--jt-dark);
	color: #fff;
	touch-action: pan-y;
}

.jt-slider__track,
.jt-slide {
	position: absolute;
	inset: 0;
}

.jt-slide {
	display: flex;
	align-items: center;
	opacity: 0;
	visibility: hidden;
	transition: opacity 1s ease, visibility 1s;
}

.jt-slide.is-active {
	opacity: 1;
	visibility: visible;
}

.jt-slide__bg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transform: scale(1.08);
	transition: transform 7s linear;
}

.jt-slide.is-active .jt-slide__bg {
	transform: scale(1);
}

.jt-slide__overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.6) 100%);
	opacity: var(--jt-slider-overlay, 0.55);
}

.jt-slide__content {
	position: relative;
	z-index: 1;
}

.jt-header-transparent .jt-slider:first-child .jt-slide__content,
.jt-header-transparent .elementor > :first-child .jt-slider .jt-slide__content {
	padding-top: calc(var(--jt-header-h) + var(--jt-topbar-h, 0px));
}

.jt-slider--center .jt-slide__content {
	text-align: center;
}

.jt-slider--center .jt-eyebrow {
	justify-content: center;
}

.jt-slider--center .jt-slide__heading,
.jt-slider--center .jt-slide__text {
	margin-inline: auto;
}

.jt-slider--center .jt-slide__buttons {
	justify-content: center;
}

.jt-slide__heading {
	max-width: 18ch;
	margin-bottom: 0.4em;
	color: #fff;
	font-size: var(--jt-hero, clamp(2.4rem, 5.6vw, 4.75rem));
}

.jt-slide__text {
	max-width: 54ch;
	font-size: 1.15rem;
	color: rgba(255, 255, 255, 0.85);
}

.jt-slide__buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	margin-top: 2rem;
}

.jt-slide__buttons .jt-button--outline {
	color: #fff;
}

/* Slide content rises in each time a slide becomes active. */
.jt-slide__content > * {
	opacity: 0;
	transform: translate3d(0, 30px, 0);
	transition: opacity 0.8s var(--jt-ease), transform 0.8s var(--jt-ease);
}

.jt-slide.is-active .jt-slide__content > * {
	opacity: 1;
	transform: none;
}

.jt-slide.is-active .jt-slide__content > :nth-child(1) { transition-delay: 0.3s; }
.jt-slide.is-active .jt-slide__content > :nth-child(2) { transition-delay: 0.45s; }
.jt-slide.is-active .jt-slide__content > :nth-child(3) { transition-delay: 0.6s; }
.jt-slide.is-active .jt-slide__content > :nth-child(4) { transition-delay: 0.75s; }

/* Slider options: image movement, overlay style and colour, per-slide text. */
.jt-slider--fade .jt-slide__bg,
.jt-slider--fade .jt-slide.is-active .jt-slide__bg {
	transform: none;
	transition: none;
}

.jt-slider--pan .jt-slide__bg {
	transform: scale(1.12) translate3d(3%, 0, 0);
	transition: transform 9s linear;
}

.jt-slider--pan .jt-slide.is-active .jt-slide__bg {
	transform: scale(1.12) translate3d(-3%, 0, 0);
}

.jt-slider--ov-gradient .jt-slide__overlay {
	background: linear-gradient(90deg, var(--jt-ov, #000) 0%, color-mix(in srgb, var(--jt-ov, #000) 60%, transparent) 100%);
}

.jt-slider--ov-flat .jt-slide__overlay {
	background: var(--jt-ov, #000);
}

.jt-slider--ov-bottom .jt-slide__overlay {
	background: linear-gradient(0deg, var(--jt-ov, #000) 0%, color-mix(in srgb, var(--jt-ov, #000) 35%, transparent) 70%, transparent 100%);
}

.jt-slider--ov-bottom .jt-slide {
	align-items: flex-end;
	padding-bottom: clamp(3rem, 8vh, 6rem);
}

.jt-slider--right .jt-slide__content,
.jt-slide--right .jt-slide__content {
	text-align: right;
}

.jt-slider--right :is(.jt-slide__heading, .jt-slide__text),
.jt-slide--right :is(.jt-slide__heading, .jt-slide__text) {
	margin-left: auto;
	margin-right: 0;
}

.jt-slider--right :is(.jt-eyebrow, .jt-slide__buttons),
.jt-slide--right :is(.jt-eyebrow, .jt-slide__buttons) {
	justify-content: flex-end;
}

.jt-slide--center .jt-slide__content {
	text-align: center;
}

.jt-slide--center :is(.jt-slide__heading, .jt-slide__text) {
	margin-inline: auto;
}

.jt-slide--center :is(.jt-eyebrow, .jt-slide__buttons) {
	justify-content: center;
}

.jt-slide--left .jt-slide__content {
	text-align: left;
}

.jt-slide--left :is(.jt-slide__heading, .jt-slide__text) {
	margin-inline: 0;
}

.jt-slide--left :is(.jt-eyebrow, .jt-slide__buttons) {
	justify-content: flex-start;
}

.jt-slide--text :is(.jt-slide__heading, .jt-slide__text, .jt-eyebrow) {
	color: var(--jt-slide-text);
}

.jt-slider__arrow {
	position: absolute;
	top: 50%;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 54px;
	height: 54px;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.3);
	border-radius: var(--jt-radius);
	background: rgba(0, 0, 0, 0.2);
	color: #fff;
	transform: translateY(-50%);
	cursor: pointer;
}

.jt-slider__arrow:hover {
	background: var(--jt-primary);
	border-color: var(--jt-primary);
	color: var(--jt-on-primary);
}

.jt-slider__arrow--prev { left: 1.5rem; }
.jt-slider__arrow--next { right: 1.5rem; }
.jt-slider__arrow--prev .jt-icon { transform: rotate(180deg); }

.jt-slider__dots {
	position: absolute;
	left: 50%;
	bottom: calc(2rem - 12px);
	z-index: 2;
	display: flex;
	gap: 0.6rem;
	transform: translateX(-50%);
}

/* The bar is 4px, but the button is 28px tall so it is easy to tap. */
.jt-slider__dot {
	width: 34px;
	height: 28px;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: linear-gradient(rgba(255, 255, 255, 0.35), rgba(255, 255, 255, 0.35)) center / 100% 4px no-repeat;
	cursor: pointer;
	transition: background-size 0.3s ease, width 0.3s var(--jt-ease);
}

.jt-slider__dot:hover {
	background-image: linear-gradient(rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.7));
}

.jt-slider__dot.is-active {
	width: 56px;
	background-image: linear-gradient(var(--jt-primary), var(--jt-primary));
}

.jt-slider__pause {
	position: absolute;
	right: 1.5rem;
	bottom: 1.5rem;
	z-index: 2;
	width: 36px;
	height: 36px;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.3);
	border-radius: 50%;
	background: transparent;
	color: #fff;
	cursor: pointer;
}

.jt-slider__pause span {
	display: block;
	width: 10px;
	height: 12px;
	margin: auto;
	border-left: 3px solid currentColor;
	border-right: 3px solid currentColor;
}

.jt-slider.is-paused .jt-slider__pause span {
	width: 0;
	height: 0;
	border-style: solid;
	border-width: 7px 0 7px 11px;
	border-color: transparent transparent transparent currentColor;
	margin-left: 13px;
}

.jt-slider__pause:hover {
	border-color: var(--jt-primary);
	color: var(--jt-primary);
}

@media (max-width: 760px) {
	.jt-slider__arrow {
		display: none;
	}
}

/* Page banner widget sits flush (no extra top spacing). */
.jt-page-hero--widget .jt-eyebrow {
	margin-bottom: 0.75rem !important;
}

/* Elementor: JT-Media section widgets sit flush, without container gaps. */
.elementor-widget[class*="elementor-widget-jtm-"] {
	margin-bottom: 0 !important;
}

.e-con:has(> [class*="elementor-widget-jtm-"]),
.e-con:has(> .e-con-inner > [class*="elementor-widget-jtm-"]) {
	--padding-top: 0px;
	--padding-bottom: 0px;
	--gap: 0px;
	--row-gap: 0px;
}

.elementor-section:has(.elementor-widget[class*="elementor-widget-jtm-"]) .elementor-widget-wrap {
	padding: 0 !important;
}

/* Page Sections (fill-in builder) */

.jt-sections {
	display: flow-root;
}

/* Two light sections in a row share one gap instead of two. */
.jt-sections > .jt-section--light + .jt-section--light.jt-pad-normal,
.jt-sections > .jt-section--light + .jt-section--light.jt-pad-large {
	padding-top: 0;
}

/* Gallery */

.jt-gallery__item {
	display: block;
	overflow: hidden;
	aspect-ratio: 4 / 3;
	border-radius: var(--jt-card-radius);
	background: var(--jt-light);
}

.jt-gallery__item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

@media (max-width: 600px) {
	.jt-gallery {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 0.75rem;
	}
}

/* Contact */

.jt-contact {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	gap: clamp(2rem, 5vw, 4.5rem);
	align-items: start;
}

.jt-contact__details {
	display: grid;
	gap: 1.75rem;
}

/* No form: the contact details spread across the row. */
.jt-contact--no-form {
	grid-template-columns: minmax(0, 1fr);
}

.jt-contact--no-form .jt-contact__details {
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

.jt-contact__item h3 {
	margin-bottom: 0.35rem;
	color: var(--jt-primary);
	font-size: 0.8rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.jt-contact__item p,
.jt-contact__item address {
	margin: 0;
	font-style: normal;
}

.jt-contact__item a {
	color: inherit;
	text-decoration: none;
}

.jt-contact__item a:hover {
	color: var(--jt-primary);
}

.jt-contact__form {
	padding: clamp(1.5rem, 4vw, 2.75rem);
	border-radius: var(--jt-card-radius);
	background: var(--jt-light);
	color: var(--jt-text);
}

.jt-section--alt .jt-contact__form {
	background: var(--jt-bg);
}

.jt-contact__form :is(input:not([type="checkbox"], [type="radio"], [type="submit"]), select, textarea) {
	width: 100%;
	max-width: 100%;
}

.jt-contact__map {
	margin-top: clamp(2rem, 4vw, 3rem);
	overflow: hidden;
	aspect-ratio: 21 / 8;
	border-radius: var(--jt-card-radius);
	background: var(--jt-light);
}

.jt-contact__map iframe {
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
	filter: grayscale(1);
}

@media (max-width: 900px) {
	.jt-contact {
		grid-template-columns: minmax(0, 1fr);
	}

	.jt-contact__map {
		aspect-ratio: 4 / 3;
	}
}

/* Lightbox (gallery images) */

.jt-lightbox {
	position: fixed;
	inset: 0;
	z-index: 10000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: clamp(1rem, 5vw, 4rem);
	background: rgba(0, 0, 0, 0.92);
	opacity: 0;
	transition: opacity 0.25s ease;
}

.jt-lightbox.is-open {
	opacity: 1;
}

.jt-lightbox img {
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
}

.jt-lightbox button {
	position: absolute;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	padding: 0;
	border: 0;
	background: rgba(255, 255, 255, 0.08);
	color: #fff;
	font-size: 1.75rem;
	line-height: 1;
	cursor: pointer;
}

.jt-lightbox button:hover,
.jt-lightbox button:focus-visible {
	background: var(--jt-primary);
	color: var(--jt-on-primary);
}

.jt-lightbox__close { top: 1rem; right: 1rem; }
.jt-lightbox__prev { left: 1rem; top: 50%; transform: translateY(-50%); }
.jt-lightbox__next { right: 1rem; top: 50%; transform: translateY(-50%); }

html.jt-lightbox-open {
	overflow: hidden;
}

/* Section Design settings (Page Sections > Design) ------------------------ */

.jt-d-pt { padding-top: var(--jt-d-pt) !important; }
.jt-d-pb { padding-bottom: var(--jt-d-pb) !important; }
.jt-d-mt { margin-top: var(--jt-d-mt) !important; }
.jt-d-mb { margin-bottom: var(--jt-d-mb) !important; }

/* Left and right: inside space on the content, outside margin on the section. */
.jt-d-px :is(.jt-container, .jt-slide__content) {
	padding-inline: var(--jt-d-px) !important;
}

.jt-d-mx,
.elementor-widget .jt-d-mx.jt-bleed {
	width: auto !important;
	max-width: none !important;
	margin-inline: var(--jt-d-mx) !important;
}

@media (max-width: 760px) {
	.jt-d-px :is(.jt-container, .jt-slide__content) {
		padding-inline: min(var(--jt-d-px), 6vw) !important;
	}

	.jt-d-mx,
	.elementor-widget .jt-d-mx.jt-bleed {
		margin-inline: min(var(--jt-d-mx), 4vw) !important;
	}
}

/* Spacing between labels, headings, text and buttons. */
.jt-d-egap .jt-eyebrow { margin-bottom: var(--jt-d-egap) !important; }
.jt-d-hgap :is(h1, h2, h3, h4, h5, h6) { margin-bottom: var(--jt-d-hgap) !important; }
.jt-d-igap .jt-section__head { margin-bottom: var(--jt-d-igap) !important; }
.jt-d-pgap :is(p, ul, ol, blockquote):not(.jt-eyebrow) { margin-bottom: var(--jt-d-pgap) !important; }
.jt-d-twidth :is(p, ul, ol, blockquote, .jt-section__intro):not(.jt-eyebrow) { max-width: var(--jt-d-twidth); }
:is(.jt-d-twidth.jt-d-align-center, .jt-d-twidth .jt-section__head--center) :is(p, ul, ol, blockquote, .jt-section__intro):not(.jt-eyebrow) { margin-inline: auto; }

/* Small label. */
.jt-d-ecolor .jt-eyebrow { color: var(--jt-d-ecolor) !important; }
.jt-d-eweight .jt-eyebrow { font-weight: var(--jt-d-eweight) !important; }
.jt-d-els .jt-eyebrow { letter-spacing: var(--jt-d-els) !important; }
.jt-d-ecase-none .jt-eyebrow { text-transform: none !important; }
.jt-d-ecase-upper .jt-eyebrow { text-transform: uppercase !important; }
.jt-d-eline-hide .jt-eyebrow::before { display: none; }

/* Image & text: where the text sits beside the image. */
.jt-d-valign-top .jt-image-text { align-items: start; }
.jt-d-valign-bottom .jt-image-text { align-items: end; }

/* Blank lines left by editors. */
:is(.jt-image-text__text, .jt-richtext, .jt-section__intro, .archive-description) p:empty { display: none; }
.jt-d-bgap :is(.jt-cta__buttons, .jt-slide__buttons, .wp-block-buttons),
.jt-d-bgap :is(p, ul, ol, div) + .jt-button { margin-top: var(--jt-d-bgap) !important; }

@media (max-width: 768px) {
	.jt-d-ptm { padding-top: var(--jt-d-ptm) !important; }
	.jt-d-pbm { padding-bottom: var(--jt-d-pbm) !important; }
}

.jt-d-minh {
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-height: var(--jt-d-minh);
}

.jt-d-minh > .jt-container {
	width: 100%;
}

.jt-d-full > .jt-container {
	max-width: none;
}

/* Boxed: the section's colour sits behind the content only. */
.jt-section.jt-d-boxed {
	background: transparent !important;
}

.jt-d-boxed > .jt-container {
	position: relative;
	z-index: 1;
	padding: clamp(2rem, 4vw, 3.5rem) clamp(1.5rem, 4vw, 3.5rem);
	background: var(--jt-d-boxbg, var(--jt-section-bg));
	border-radius: var(--jt-d-radius, 0);
}

@media (max-width: 768px) {
	.jt-d-boxed > .jt-container {
		width: calc(100% - 2 * var(--jt-gutter, 1.25rem));
	}
}

.jt-d-align-left { text-align: left; }
.jt-d-align-center { text-align: center; }
.jt-d-align-right { text-align: right; }

.jt-d-align-center .jt-section__head,
.jt-d-align-center .jt-richtext,
.jt-d-align-center .jt-cta__content {
	margin-inline: auto;
}

.jt-d-align-right .jt-section__head {
	margin-left: auto;
}

.jt-d-align-center .jt-cta {
	flex-direction: column;
	justify-content: center;
	text-align: center;
}

.jt-d-align-center :is(.jt-cta__text, .jt-cta__buttons) {
	margin-inline: auto;
}

.jt-d-align-center.jt-page-hero :is(.page-title, .archive-description) {
	margin-inline: auto;
}

.jt-d-align-center.jt-page-hero :is(.jt-breadcrumbs, .jt-eyebrow) {
	justify-content: center;
}

.jt-d-align-center :is(.jt-cta, .jt-image-text__content, .jt-section__head) .jt-eyebrow,
.jt-d-align-center .jt-cta__buttons {
	justify-content: center;
}

/* Backgrounds */

.jt-design.jt-d-bgimg {
	background-size: cover;
	background-repeat: no-repeat;
}

.jt-design.jt-d-fixed {
	background-attachment: fixed;
}

@media (hover: none) {
	.jt-design.jt-d-fixed {
		background-attachment: scroll;
	}
}

/* Colour tint over the background (sections, banner, slider). */
.jt-section.jt-d-tint::before {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--jt-d-tint);
	pointer-events: none;
}

.jt-section.jt-d-tint > .jt-container {
	position: relative;
	z-index: 1;
}

.jt-page-hero.jt-d-tint::after {
	background: var(--jt-d-tint);
}

.jt-slider.jt-d-tint .jt-slide__overlay {
	background: var(--jt-d-tint);
	opacity: 1;
}

/* Colours */

.jt-d-heading :is(h1, h2, h3, h4, h5, h6),
.jt-d-heading :is(h1, h2, h3, h4, h5, h6) a,
.jt-d-heading .page-title {
	color: var(--jt-d-heading) !important;
}

.jt-d-text,
.jt-d-text :is(p, li, address, dd, dt, .jt-section__intro, .jt-service__body, .archive-description, .jt-slide__text, .jt-stat__label, .jt-team-member__role):not(.jt-eyebrow) {
	color: var(--jt-d-text) !important;
}

/* Images */

.jt-d-ratio :is(.jt-service__image, .jt-team-member__photo, .jt-project__image, .jt-gallery__item),
.jt-d-ratio .jt-image-text__media img {
	aspect-ratio: var(--jt-d-ratio);
}

.jt-d-ratio[style*="--jt-d-ratio:auto"] :is(.jt-service__image, .jt-team-member__photo, .jt-project__image, .jt-gallery__item) img,
.jt-d-ratio[style*="--jt-d-ratio:auto"] .jt-image-text__media img {
	height: auto;
	object-fit: contain;
}

.jt-d-imgh :is(.jt-service__image, .jt-team-member__photo, .jt-project__image, .jt-gallery__item),
.jt-d-imgh .jt-image-text__media img {
	height: var(--jt-d-imgh);
	aspect-ratio: auto;
}

@media (min-width: 861px) {
	.jt-d-imgw .jt-image-text {
		grid-template-columns: var(--jt-d-imgw) minmax(0, 1fr);
	}

	.jt-d-imgw .jt-image-text--image-right {
		grid-template-columns: minmax(0, 1fr) var(--jt-d-imgw);
	}
}

/* Cards */

.jt-d-cards-none :is(.jt-service, .jt-project, .jt-team-member) {
	border-color: transparent;
	background: transparent;
	box-shadow: none;
}

.jt-d-cards-none .jt-service__body {
	padding-inline: 0;
}

.jt-d-cards-outline :is(.jt-service, .jt-project, .jt-team-member) {
	border: 1px solid currentColor;
	background: transparent;
	box-shadow: none;
}

.jt-d-cards-shadow :is(.jt-service, .jt-project, .jt-team-member) {
	border-color: transparent;
	background: #fff;
	box-shadow: 0 18px 40px rgba(0, 0, 0, 0.1);
}

.jt-d-cards-shadow .jt-team-member__body,
.jt-d-cards-outline .jt-team-member__body {
	padding: 1.1rem 1.25rem 1.25rem;
}

/* Text sizes */

.jt-d-hsize :is(h1, h2, .jt-image-text__content > h3, .page-title) {
	font-size: var(--jt-d-hsize) !important;
}

@media (max-width: 768px) {
	.jt-d-hsizem :is(h1, h2, .jt-image-text__content > h3, .page-title) {
		font-size: var(--jt-d-hsizem) !important;
	}
}

.jt-d-tsize :is(p, li, .jt-section__intro, .jt-slide__text):not(.jt-eyebrow, .jt-counter) {
	font-size: var(--jt-d-tsize) !important;
}

/* Per-section type: main heading, card/item titles, small label, text. */
.jt-d-hweight :is(h1, h2, .jt-image-text__content > h3, .page-title) { font-weight: var(--jt-d-hweight) !important; }
.jt-d-hlh :is(h1, h2, .jt-image-text__content > h3, .page-title) { line-height: var(--jt-d-hlh) !important; }
.jt-d-hls :is(h1, h2, .jt-image-text__content > h3, .page-title) { letter-spacing: var(--jt-d-hls) !important; }
.jt-d-isize :is(h3, h4, h5, h6):not(.jt-image-text__content > h3) { font-size: var(--jt-d-isize) !important; }
.jt-d-iweight :is(h3, h4, h5, h6):not(.jt-image-text__content > h3) { font-weight: var(--jt-d-iweight) !important; }
.jt-d-esize .jt-eyebrow { font-size: var(--jt-d-esize) !important; }
.jt-d-tweight :is(p, li, .jt-section__intro, .jt-slide__text):not(.jt-eyebrow, .jt-counter) { font-weight: var(--jt-d-tweight) !important; }
.jt-d-tlh :is(p, li, .jt-section__intro, .jt-slide__text):not(.jt-eyebrow, .jt-counter) { line-height: var(--jt-d-tlh) !important; }

@media (max-width: 768px) {
	.jt-d-isizem :is(h3, h4, h5, h6):not(.jt-image-text__content > h3) { font-size: var(--jt-d-isizem) !important; }
}

/* Sizes and weights set on single words or lines in a text box. */
.jt-text-size,
.jt-text-weight {
	line-height: 1.25;
}

.jt-d-case-upper :is(h1, h2, h3, h4) {
	text-transform: uppercase;
}

.jt-d-case-none :is(h1, h2, h3, h4) {
	text-transform: none;
}

/* Buttons */

.jt-d-btn .jt-button:not(.jt-button--outline) {
	border-color: var(--jt-d-btn);
	background-color: var(--jt-d-btn);
}

.jt-d-btn .jt-button--outline {
	border-color: var(--jt-d-btn);
	color: var(--jt-d-btn);
}

.jt-d-btntext .jt-button:not(.jt-button--outline) {
	color: var(--jt-d-btntext);
}

.jt-d-btn-solid .jt-button,
.jt-d-btn-solid .jt-slide__buttons .jt-button--outline {
	border-color: var(--jt-d-btn, var(--jt-primary));
	background-color: var(--jt-d-btn, var(--jt-primary));
	color: var(--jt-d-btntext, var(--jt-on-primary));
}

.jt-d-btn-outline .jt-button,
.jt-d-btn-outline .jt-slide__buttons .jt-button--outline {
	border-color: var(--jt-d-btn, currentColor);
	background-color: transparent;
	color: var(--jt-d-btntext, var(--jt-d-btn, inherit));
}

.jt-d-btn-dark .jt-button,
.jt-d-btn-dark .jt-slide__buttons .jt-button--outline {
	border-color: var(--jt-dark);
	background-color: var(--jt-dark);
	color: #fff;
}

.jt-d-btn-light .jt-button,
.jt-d-btn-light .jt-slide__buttons .jt-button--outline {
	border-color: #fff;
	background-color: #fff;
	color: var(--jt-dark);
}

.jt-d-btn-text .jt-button,
.jt-d-btn-text .jt-slide__buttons .jt-button--outline {
	padding: 0.25em 0;
	border-width: 0 0 2px;
	border-color: var(--jt-d-btn, var(--jt-primary));
	border-radius: 0;
	background: none;
	color: var(--jt-d-btntext, inherit);
}

:is(.jt-d-btn-solid, .jt-d-btn-outline, .jt-d-btn-dark, .jt-d-btn-light) .jt-button:hover {
	border-color: var(--jt-d-btn, var(--jt-primary));
	background-color: var(--jt-d-btn, var(--jt-primary));
	color: var(--jt-d-btntext, var(--jt-on-primary));
	filter: brightness(1.08);
}

.jt-d-btn-text .jt-button:hover {
	background: none;
	color: var(--jt-d-btn, var(--jt-primary));
}

/* Rounded corners */

.jt-d-radius :is(.jt-button, .jt-service, .jt-project, .jt-team-member__photo, .jt-image-text__media, .jt-image-text__media img, .jt-gallery__item, .jt-logos__item, .jt-stat) {
	overflow: hidden;
	border-radius: var(--jt-d-radius) !important;
}

/* Card colours and spacing */

/* Cards without a background on a dark section need light text. */
:is(.jt-section--dark, .jt-section--dark-alt):is(.jt-d-cards-none, .jt-d-cards-outline) .jt-service__body {
	color: rgba(255, 255, 255, 0.78);
}

:is(.jt-section--dark, .jt-section--dark-alt):is(.jt-d-cards-none, .jt-d-cards-outline) :is(.jt-service__title a, .jt-service .jt-link-arrow, .jt-team-member__name, .jt-project__title) {
	color: #fff;
}

:is(.jt-section--dark, .jt-section--dark-alt).jt-d-cards-outline :is(.jt-service, .jt-project, .jt-team-member) {
	border-color: rgba(255, 255, 255, 0.25);
}

.jt-d-cardbg :is(.jt-service, .jt-project, .jt-team-member, .jt-stats .jt-stat) {
	border-color: transparent;
	background: var(--jt-d-cardbg) !important;
}

.jt-d-cardbg .jt-team-member__body,
.jt-d-cardbg .jt-stats .jt-stat {
	padding: 1.25rem 1.5rem 1.5rem;
}

.jt-d-cardtext :is(.jt-service, .jt-project, .jt-team-member, .jt-stats .jt-stat),
.jt-d-cardtext :is(.jt-service, .jt-project, .jt-team-member, .jt-stats .jt-stat) :is(h3, h3 a, p, span, a, .jt-counter) {
	color: var(--jt-d-cardtext) !important;
}

.jt-d-cardpad :is(.jt-service__body, .jt-project__body, .jt-team-member__body, .jt-stats .jt-stat) {
	padding: var(--jt-d-cardpad) !important;
}

.jt-service.has-bg {
	border-color: transparent;
	background: var(--jt-card-bg);
}

.jt-service.has-color,
.jt-service.has-color :is(h3, h3 a, p, .jt-link-arrow) {
	color: var(--jt-card-color);
}

/* Gaps and columns */

.jt-d-gap :is(.jt-grid, .jt-logos, .jt-image-text) {
	gap: var(--jt-d-gap) !important;
}

@media (min-width: 601px) and (max-width: 1024px) {
	.jt-d-colst .jt-grid {
		grid-template-columns: repeat(var(--jt-d-colst), minmax(0, 1fr)) !important;
	}
}

@media (max-width: 600px) {
	.jt-d-colsm .jt-grid {
		grid-template-columns: repeat(var(--jt-d-colsm), minmax(0, 1fr)) !important;
	}
}

/* Image effects */

.jt-d-img-none img,
.jt-d-img-none :hover img {
	transform: none !important;
}

.jt-d-img-none :is(.jt-service, .jt-project):hover {
	transform: none;
}

.jt-d-img-grey :is(.jt-service__image, .jt-team-member__photo, .jt-project__image, .jt-gallery__item, .jt-image-text__media, .jt-logos__item) img {
	filter: grayscale(1);
	transition: filter 0.5s ease, transform 0.8s var(--jt-ease);
}

.jt-d-img-grey :is(.jt-service, .jt-team-member, .jt-project, .jt-gallery__item, .jt-image-text__media, .jt-logos__item):hover img {
	filter: none;
}

/* Layers and visibility */

.jt-d-z {
	position: relative;
	z-index: var(--jt-d-z);
}

@media (max-width: 768px) {
	.jt-hide-mobile { display: none !important; }
}

@media (min-width: 769px) {
	.jt-hide-desktop { display: none !important; }
}

/* 12. Page builders & plugins ----------------------------------------------- */

/* Elementor content runs edge to edge; Elementor handles its own widths. */
.jt-builder-content {
	width: 100%;
}

.elementor-page .site-main > .jt-builder-content > .elementor {
	width: 100%;
}

/* Header & Footer Elementor / Theme Builder headers keep sticky behaviour from their own settings. */
.ehf-header #masthead {
	z-index: 100;
}

/* WooCommerce */
.jt-woocommerce .woocommerce-breadcrumb {
	margin-bottom: 2rem;
	font-size: 0.85rem;
}

.woocommerce ul.products li.product .woocommerce-loop-product__title {
	font-family: var(--jt-font-heading);
	font-size: 1.05rem;
	color: var(--jt-heading);
}

.woocommerce ul.products li.product .price,
.woocommerce div.product p.price,
.woocommerce div.product span.price {
	color: var(--jt-primary);
	font-weight: 700;
}

.woocommerce span.onsale {
	background: var(--jt-primary);
	color: var(--jt-on-primary);
	border-radius: var(--jt-radius);
	min-height: 0;
	line-height: 1;
	padding: 0.6em 0.9em;
}

.woocommerce-message,
.woocommerce-info {
	border-top-color: var(--jt-primary);
}

.woocommerce-message::before,
.woocommerce-info::before {
	color: var(--jt-primary);
}

/* 13. Accessibility, reduced motion, print ---------------------------------- */

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
}

@media print {
	.jt-header-wrap,
	.jt-offcanvas,
	.jt-offcanvas-overlay,
	.site-footer,
	.jt-back-to-top,
	.jt-sidebar,
	.comments-area {
		display: none !important;
	}

	.jt-page-hero {
		min-height: 0;
		background: none;
		color: #000;
	}

	.jt-page-hero .page-title {
		color: #000;
	}
}

/* Background videos ------------------------------------------------------- */

.jt-has-video {
	position: relative;
	isolation: isolate;
}

.jt-bgvideo {
	position: absolute;
	inset: 0;
	z-index: -1;
	overflow: hidden;
	pointer-events: none;
	container-type: size;
}

/* Inside a slide it sits between the image and the overlay. */
.jt-slide .jt-bgvideo {
	z-index: auto;
}

.jt-bgvideo__media {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 100%;
	height: 100%;
	border: 0;
	object-fit: cover;
	transform: translate(-50%, -50%);
}

/* YouTube and Vimeo: scale the 16:9 player so it always covers the section. */
.jt-bgvideo__frame {
	width: max(100cqw, 177.78cqh);
	height: max(100cqh, 56.25cqw);
	opacity: 0;
	transition: opacity 0.8s ease;
}

.jt-bgvideo.is-playing .jt-bgvideo__frame {
	opacity: 1;
}

/* Sections whose own background is a colour band keep content above the video. */
.jt-has-video > .jt-container {
	position: relative;
	z-index: 1;
}

@media (max-width: 760px) {
	.jt-video-desktop-only .jt-bgvideo {
		display: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.jt-bgvideo {
		display: none;
	}
}

/* Image focus point and zoom (set per image in the Media Library). */
img.jt-focus {
	object-position: var(--jt-fx, 50%) var(--jt-fy, 50%) !important;
}

img.jt-zoomed {
	scale: var(--jt-zoom, 1);
	transform-origin: var(--jt-fx, 50%) var(--jt-fy, 50%);
}

:has(> img.jt-zoomed) {
	overflow: hidden;
}

/* Carousel (gallery and image & text) ------------------------------------- */

.jt-carousel {
	--jt-carousel-gap: clamp(0.75rem, 2vw, 1.5rem);
	position: relative;
}

.jt-carousel__track {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: calc((100% - (var(--jt-per-view) - 1) * var(--jt-carousel-gap)) / var(--jt-per-view));
	gap: var(--jt-carousel-gap);
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}

.jt-carousel__track::-webkit-scrollbar {
	display: none;
}

.jt-carousel__track:focus-visible {
	outline: 2px solid var(--jt-primary);
	outline-offset: 4px;
}

.jt-carousel__slide {
	min-width: 0;
	scroll-snap-align: start;
}

.jt-carousel__media {
	display: block;
	overflow: hidden;
	aspect-ratio: var(--jt-d-ratio, 4 / 3);
	border-radius: var(--jt-card-radius);
	background: var(--jt-light);
}

.jt-carousel__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.jt-carousel__arrow {
	position: absolute;
	top: 50%;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	padding: 0;
	border: 0;
	border-radius: var(--jt-radius);
	background: rgba(0, 0, 0, 0.55);
	color: #fff;
	transform: translateY(-50%);
	cursor: pointer;
	transition: background-color 0.25s ease, opacity 0.25s ease;
}

.jt-carousel__arrow:hover {
	background: var(--jt-primary);
	color: var(--jt-on-primary);
}

.jt-carousel__arrow--prev {
	left: 0.75rem;
}

.jt-carousel__arrow--prev .jt-icon {
	transform: rotate(180deg);
}

.jt-carousel__arrow--next {
	right: 0.75rem;
}

.jt-carousel__arrow[disabled] {
	opacity: 0;
	pointer-events: none;
}

.jt-carousel__dots {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0.25rem;
	margin-top: 0.75rem;
}

.jt-carousel__dot {
	width: 28px;
	height: 28px;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
}

.jt-carousel__dot::before {
	content: "";
	display: block;
	width: 100%;
	height: 4px;
	background: currentColor;
	opacity: 0.25;
	transition: opacity 0.25s ease, background-color 0.25s ease;
}

.jt-carousel__dot.is-active::before {
	background: var(--jt-primary);
	opacity: 1;
}

@media (max-width: 1024px) {
	.jt-carousel {
		--jt-per-view: min(var(--jt-per-view-max, 6), 2) !important;
	}

	.jt-carousel[style*="--jt-per-view:1"] {
		--jt-per-view: 1 !important;
	}
}

@media (max-width: 600px) {
	.jt-carousel {
		--jt-per-view: 1 !important;
	}

	/* A peek of the next image tells people they can swipe. */
	.jt-carousel__track {
		grid-auto-columns: 86%;
	}

	.jt-carousel[style*="--jt-per-view:1"] .jt-carousel__track {
		grid-auto-columns: 100%;
	}

	.jt-carousel__arrow {
		width: 40px;
		height: 40px;
	}
}

/* Masonry: columns that keep each image's own shape. */
.jt-masonry {
	columns: var(--jt-cols, 3);
	column-gap: var(--jt-d-gap, clamp(0.75rem, 2vw, 1.5rem));
}

.jt-masonry__item {
	display: block;
	margin-bottom: var(--jt-d-gap, clamp(0.75rem, 2vw, 1.5rem));
	break-inside: avoid;
	aspect-ratio: auto !important;
}

.jt-masonry__item img {
	height: auto !important;
}

@media (max-width: 1024px) {
	.jt-masonry {
		columns: min(var(--jt-cols, 3), 3);
	}
}

@media (max-width: 600px) {
	.jt-masonry {
		columns: 2;
	}
}

/* Image & text with several images. */
.jt-imgset {
	display: grid;
	gap: clamp(0.5rem, 1.5vw, 1rem);
}

.jt-imgset__item {
	overflow: hidden;
	border-radius: var(--jt-card-radius);
}

.jt-imgset__item img,
.jt-image-text .jt-imgset__item img {
	display: block;
	width: 100%;
	height: 100%;
	aspect-ratio: auto;
	object-fit: cover;
}

.jt-imgset--grid {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.jt-imgset--grid .jt-imgset__item {
	aspect-ratio: var(--jt-d-ratio, 1 / 1);
}

.jt-imgset--masonry {
	display: block;
	columns: 2;
	column-gap: clamp(0.5rem, 1.5vw, 1rem);
}

.jt-imgset--masonry .jt-imgset__item {
	margin-bottom: clamp(0.5rem, 1.5vw, 1rem);
	break-inside: avoid;
}

.jt-imgset--masonry .jt-imgset__item img {
	height: auto;
}

.jt-imgset--masonry .jt-imgset__item:nth-child(4n + 1) img { aspect-ratio: 4 / 5; }
.jt-imgset--masonry .jt-imgset__item:nth-child(4n + 2) img { aspect-ratio: 1 / 1; }
.jt-imgset--masonry .jt-imgset__item:nth-child(4n + 3) img { aspect-ratio: 4 / 3; }
.jt-imgset--masonry .jt-imgset__item:nth-child(4n + 4) img { aspect-ratio: 3 / 4; }

.jt-imgset--collage {
	position: relative;
	display: block;
	padding: 0 18% 18% 0;
}

.jt-imgset--collage .jt-imgset__item:first-child {
	aspect-ratio: var(--jt-d-ratio, 4 / 3);
}

.jt-imgset--collage .jt-imgset__item:nth-child(2) {
	position: absolute;
	right: 0;
	bottom: 0;
	width: 52%;
	aspect-ratio: 1 / 1;
	border: clamp(4px, 0.8vw, 10px) solid var(--jt-section-bg, var(--jt-bg));
	box-shadow: 0 20px 40px rgba(0, 0, 0, 0.18);
}

.jt-image-text__media--carousel {
	min-width: 0;
}

/* Mask shapes (Design > Images & cards > Mask shape) ----------------------- */

[class*="jt-d-mask-"] :is(.jt-service__image, .jt-team-member__photo, .jt-project__image, .jt-gallery__item, .jt-carousel__media, .jt-imgset__item),
[class*="jt-d-mask-"] .jt-image-text__media > img {
	overflow: hidden;
	border-radius: var(--jt-mask-radius, var(--jt-card-radius)) !important;
	clip-path: var(--jt-mask-clip, none);
}

.jt-d-mask-rounded { --jt-mask-radius: clamp(14px, 2.5vw, 28px); }
.jt-d-mask-circle { --jt-mask-radius: 50%; }
.jt-d-mask-pill { --jt-mask-radius: 999px; }
.jt-d-mask-arch { --jt-mask-radius: 50% 50% 0 0 / 34% 34% 0 0; }
.jt-d-mask-leaf { --jt-mask-radius: 0 40% 0 40% / 0 40% 0 40%; }
.jt-d-mask-blob { --jt-mask-radius: 62% 38% 54% 46% / 52% 44% 56% 48%; }
.jt-d-mask-hexagon { --jt-mask-radius: 0; --jt-mask-clip: polygon(25% 0, 75% 0, 100% 50%, 75% 100%, 25% 100%, 0 50%); }
.jt-d-mask-diamond { --jt-mask-radius: 0; --jt-mask-clip: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); }
.jt-d-mask-slant { --jt-mask-radius: 0; --jt-mask-clip: polygon(14% 0, 100% 0, 86% 100%, 0 100%); }
.jt-d-mask-cut { --jt-mask-radius: 0; --jt-mask-clip: polygon(12% 0, 88% 0, 100% 12%, 100% 88%, 88% 100%, 12% 100%, 0 88%, 0 12%); }
.jt-d-mask-notch { --jt-mask-radius: 0; --jt-mask-clip: polygon(0 0, 78% 0, 100% 22%, 100% 100%, 22% 100%, 0 78%); }

/* Circle and diamond only look right square. */
:is(.jt-d-mask-circle, .jt-d-mask-diamond, .jt-d-mask-hexagon) :is(.jt-service__image, .jt-team-member__photo, .jt-project__image, .jt-gallery__item, .jt-carousel__media, .jt-imgset__item),
:is(.jt-d-mask-circle, .jt-d-mask-diamond, .jt-d-mask-hexagon) .jt-image-text__media > img {
	aspect-ratio: 1 / 1 !important;
}

/* The collage's border would be cut by a shape, so it uses a shadow only. */
[class*="jt-d-mask-"] .jt-imgset--collage .jt-imgset__item:nth-child(2) {
	border: 0;
}

/* Team card styles -------------------------------------------------------- */

.jt-team-grid--centred .jt-team-member {
	align-items: center;
	text-align: center;
}

.jt-team-grid--centred .jt-team-member__photo {
	width: min(240px, 78%);
	aspect-ratio: 1 / 1;
	border-radius: var(--jt-mask-radius, 50%);
}

.jt-team-grid--centred .jt-team-member__contact {
	justify-content: center;
}

.jt-team-grid--overlay .jt-team-member {
	position: relative;
	overflow: hidden;
	border-radius: var(--jt-card-radius);
}

.jt-team-grid--overlay .jt-team-member__body {
	position: absolute;
	inset: auto 0 0;
	padding: 4rem 1.25rem 1.25rem;
	background: linear-gradient(to top, rgba(0, 0, 0, 0.85), rgba(0, 0, 0, 0));
	color: #fff;
}

.jt-team-grid--overlay .jt-team-member__name {
	color: #fff;
}

.jt-team-grid--overlay .jt-team-member__bio {
	color: rgba(255, 255, 255, 0.85);
}

.jt-team-grid--overlay .jt-team-member__contact a {
	border-color: rgba(255, 255, 255, 0.4);
	color: #fff;
}

.jt-team-grid--side .jt-team-member {
	flex-direction: row;
	align-items: center;
	gap: clamp(1rem, 2.5vw, 1.75rem);
}

.jt-team-grid--side .jt-team-member__photo {
	flex: 0 0 42%;
}

.jt-team-grid--side .jt-team-member__body {
	flex: 1;
	min-width: 0;
	padding-top: 0;
}

.jt-team-grid--boxed .jt-team-member {
	padding: clamp(0.75rem, 1.5vw, 1rem);
	border-radius: var(--jt-card-radius);
	background: #fff;
	box-shadow: 0 14px 40px rgba(0, 0, 0, 0.08);
	color: var(--jt-text);
}

.jt-team-grid--boxed .jt-team-member__body {
	padding: 1.25rem 0.5rem 0.5rem;
}

.jt-team-grid--boxed .jt-team-member__name {
	color: var(--jt-heading);
}

/* Before and after images ---------------------------------------------------- */

.jt-compare {
	--jt-pos: 50%;
	position: relative;
	overflow: hidden;
	isolation: isolate;
	aspect-ratio: var(--jt-d-ratio, 4 / 3);
	border-radius: var(--jt-card-radius);
	background: var(--jt-light);
	cursor: ew-resize;
	touch-action: pan-y;
	user-select: none;
	-webkit-user-select: none;
}

.jt-compare--vertical {
	cursor: ns-resize;
	touch-action: pan-x;
}

.jt-compare__layer {
	position: absolute;
	inset: 0;
	overflow: hidden;
}

.jt-compare__layer img {
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	aspect-ratio: auto;
	object-fit: cover;
	border-radius: 0;
	pointer-events: none;
	-webkit-user-drag: none;
}

.jt-compare__after {
	clip-path: inset(0 0 0 var(--jt-pos));
}

.jt-compare--vertical .jt-compare__after {
	clip-path: inset(var(--jt-pos) 0 0 0);
}

.jt-compare__handle {
	position: absolute;
	top: 0;
	bottom: 0;
	left: var(--jt-pos);
	z-index: 2;
	width: 2px;
	margin-left: -1px;
	background: #fff;
	box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.12);
	pointer-events: none;
}

.jt-compare--vertical .jt-compare__handle {
	top: var(--jt-pos);
	right: 0;
	bottom: auto;
	left: 0;
	width: auto;
	height: 2px;
	margin: -1px 0 0;
}

.jt-compare__knob {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 46px;
	height: 46px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 6px 20px rgba(0, 0, 0, 0.28);
	transform: translate(-50%, -50%);
	transition: transform 0.2s ease;
}

.jt-compare--vertical .jt-compare__knob {
	transform: translate(-50%, -50%) rotate(90deg);
}

/* Two small arrows on the knob. */
.jt-compare__knob::before,
.jt-compare__knob::after {
	content: "";
	position: absolute;
	top: 50%;
	width: 0;
	height: 0;
	margin-top: -6px;
	border-block: 6px solid transparent;
}

.jt-compare__knob::before {
	left: 10px;
	border-right: 7px solid var(--jt-dark);
}

.jt-compare__knob::after {
	right: 10px;
	border-left: 7px solid var(--jt-dark);
}

.jt-compare.is-dragging .jt-compare__knob {
	transform: translate(-50%, -50%) scale(1.1);
}

.jt-compare--vertical.is-dragging .jt-compare__knob {
	transform: translate(-50%, -50%) rotate(90deg) scale(1.1);
}

.jt-compare:has(.jt-compare__range:focus-visible) .jt-compare__knob {
	outline: 3px solid var(--jt-primary);
	outline-offset: 3px;
}

.jt-compare__label {
	position: absolute;
	top: 1rem;
	z-index: 2;
	padding: 0.4em 0.85em;
	border-radius: var(--jt-radius);
	background: rgba(0, 0, 0, 0.55);
	color: #fff;
	font-family: var(--jt-font-heading);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	line-height: 1.2;
	text-transform: uppercase;
	pointer-events: none;
	transition: opacity 0.2s ease;
}

.jt-compare__label--before { left: 1rem; }
.jt-compare__label--after { right: 1rem; }

.jt-compare--vertical .jt-compare__label--after {
	top: auto;
	right: auto;
	bottom: 1rem;
	left: 1rem;
}

/* The slider input is for keyboards and screen readers; dragging is handled in main.js. */
.jt-compare__range {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: 0;
	opacity: 0;
	pointer-events: none;
}

/* Fills a banner or slide. */
.jt-compare--cover {
	position: absolute;
	inset: 0;
	z-index: -2;
	aspect-ratio: auto;
	border-radius: 0;
	background: transparent;
}

/* The cover version joins the banner or slide's own layers, so the dark overlay sits over the pictures but under the handle and labels. */
.jt-compare--cover,
.jt-slide .jt-compare--cover {
	z-index: auto;
	isolation: auto;
}

.jt-compare--cover .jt-compare__layer {
	z-index: -2;
}

.jt-compare--cover :is(.jt-compare__handle, .jt-compare__label) {
	z-index: 0;
}

.jt-slide.has-compare {
	isolation: isolate;
}

.jt-slide.has-compare .jt-slide__overlay {
	z-index: -1;
}

.jt-compare .jt-page-hero__image {
	position: static;
	z-index: auto;
}

.jt-compare--cover .jt-compare__label {
	top: auto;
	bottom: 1.5rem;
}

.jt-compare--cover.jt-compare--vertical .jt-compare__label--before {
	top: 1.5rem;
	bottom: auto;
	right: 1.5rem;
	left: auto;
}

/* Clear of the slide dots and arrows. */
.jt-slide .jt-compare--cover:not(.jt-compare--vertical) .jt-compare__label {
	bottom: 5.5rem;
}

.jt-compare--cover .jt-compare__label--before { left: 1.5rem; }
.jt-compare--cover .jt-compare__label--after { right: 1.5rem; }

/* Banner and slide text stay clickable, the rest of the picture can be dragged. */
.jt-page-hero.has-compare::after,
.jt-slide.has-compare .jt-slide__overlay {
	pointer-events: none;
}

:is(.jt-page-hero.has-compare .jt-page-hero__inner, .jt-slide.has-compare .jt-slide__content) {
	pointer-events: none;
}

.jt-page-hero.has-compare .jt-page-hero__inner {
	position: relative;
}

:is(.jt-page-hero.has-compare .jt-page-hero__inner, .jt-slide.has-compare .jt-slide__content) :is(a, button, input, select, textarea, label) {
	pointer-events: auto;
}

.jt-image-text__media--compare .jt-compare {
	aspect-ratio: var(--jt-d-ratio, 4 / 3);
}

.jt-d-imgh .jt-compare:not(.jt-compare--cover) {
	height: var(--jt-d-imgh);
	aspect-ratio: auto;
}

.jt-compare-grid__item {
	margin: 0;
}

.jt-compare-grid__caption {
	margin-top: 0.75rem;
	font-size: 0.9rem;
	text-align: center;
	color: var(--jt-text);
}

/* Image movement: Ken Burns, pan and float on any image (Design > Image effect). */

@keyframes jt-kb {
	from { scale: 1; translate: 0 0; }
	to { scale: 1.16; translate: -2% -1.5%; }
}

@keyframes jt-pan {
	from { translate: -5% 0; }
	to { translate: 5% 0; }
}

@keyframes jt-float {
	from { translate: 0 0; }
	to { translate: 0 -10px; }
}

:is(.jt-d-img-kenburns, .jt-d-img-pan) :is(.jt-service__image, .jt-team-member__photo, .jt-project__image, .jt-gallery__item, .jt-image-text__media, .jt-imgset__item, .jt-carousel__media, .jt-compare__layer, .jt-logos__item) {
	overflow: hidden;
}

.jt-d-img-kenburns :is(.jt-service__image, .jt-team-member__photo, .jt-project__image, .jt-gallery__item, .jt-image-text__media, .jt-imgset__item, .jt-carousel__media, .jt-compare__layer, .jt-logos__item) img {
	animation: jt-kb 16s ease-in-out infinite alternate;
}

.jt-d-img-pan :is(.jt-service__image, .jt-team-member__photo, .jt-project__image, .jt-gallery__item, .jt-image-text__media, .jt-imgset__item, .jt-carousel__media, .jt-compare__layer, .jt-logos__item) img {
	scale: 1.14;
	animation: jt-pan 14s ease-in-out infinite alternate;
}

.jt-d-img-float :is(.jt-service__image, .jt-team-member__photo, .jt-project__image, .jt-gallery__item, .jt-image-text__media > img, .jt-imgset__item, .jt-carousel__media, .jt-compare, .jt-logos__item) {
	animation: jt-float 5s ease-in-out infinite alternate;
}

.jt-d-img-float :is(.jt-gallery__item, .jt-imgset__item, .jt-logos__item):nth-child(2n) {
	animation-delay: -2.5s;
}

/* Page banner image movement. */
:is(.jt-page-hero--motion-none, .jt-page-hero--motion-kenburns, .jt-page-hero--motion-pan) .jt-page-hero__image {
	transform: none;
	animation: none;
}

.jt-page-hero--motion-kenburns .jt-page-hero__image {
	animation: jt-kb 18s ease-in-out infinite alternate;
}

.jt-page-hero--motion-pan .jt-page-hero__image {
	scale: 1.14;
	animation: jt-pan 16s ease-in-out infinite alternate;
}

/* Section background image movement (Design > Background image movement). */
.jt-section:is(.jt-d-bgmotion-kenburns, .jt-d-bgmotion-pan, .jt-d-bgmotion-zoomout),
:is(.jt-d-bgmotion-kenburns, .jt-d-bgmotion-pan, .jt-d-bgmotion-zoomout) .jt-section {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	background-image: none !important;
}

.jt-section:is(.jt-d-bgmotion-kenburns, .jt-d-bgmotion-pan, .jt-d-bgmotion-zoomout)::after,
:is(.jt-d-bgmotion-kenburns, .jt-d-bgmotion-pan, .jt-d-bgmotion-zoomout) .jt-section::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: var(--jt-bg-img);
	background-position: inherit;
	background-size: cover;
	pointer-events: none;
}

.jt-section.jt-d-bgmotion-kenburns::after,
.jt-d-bgmotion-kenburns .jt-section::after {
	animation: jt-kb 18s ease-in-out infinite alternate;
}

.jt-section.jt-d-bgmotion-pan::after,
.jt-d-bgmotion-pan .jt-section::after {
	scale: 1.14;
	animation: jt-pan 16s ease-in-out infinite alternate;
}

.jt-section.jt-d-bgmotion-zoomout::after,
.jt-d-bgmotion-zoomout .jt-section::after {
	scale: 1.06;
	animation: jt-zoomout 12s var(--jt-ease) forwards;
}

@keyframes jt-zoomout {
	to { scale: 1; }
}

@media (prefers-reduced-motion: reduce) {
	[class*="jt-d-img-"] img,
	[class*="jt-d-img-"] :is(.jt-service__image, .jt-team-member__photo, .jt-project__image, .jt-gallery__item, .jt-imgset__item, .jt-carousel__media, .jt-compare, .jt-logos__item),
	.jt-page-hero__image,
	.jt-section::after {
		animation: none !important;
	}
}

/* Contact: form left, details right ------------------------------------------ */

.jt-contact--split {
	grid-template-columns: minmax(0, 7fr) minmax(0, 4fr);
	gap: 0;
}

.jt-contact--split .jt-contact__form {
	padding: 0 clamp(2rem, 5vw, 5.5rem) 0 0;
	border-radius: 0;
	background: none;
	color: inherit;
}

.jt-contact--split .jt-contact__details {
	align-content: start;
	gap: 1.5rem;
	padding-left: clamp(2rem, 5vw, 5.5rem);
	border-left: 1px solid color-mix(in srgb, currentColor 30%, transparent);
}

.jt-contact__title {
	margin: 0;
	font-size: clamp(1.25rem, 2vw, 1.6rem);
}

.jt-contact--split .jt-contact__title::after {
	content: "";
	display: block;
	width: 52px;
	height: 2px;
	margin-top: 1.1rem;
	background: currentColor;
}

.jt-contact--split .jt-contact__item address,
.jt-contact--split .jt-contact__item p {
	line-height: 1.75;
	opacity: 0.85;
}

.jt-contact--split .jt-contact__item--link + .jt-contact__item--link {
	margin-top: -1.1rem;
}

.jt-contact--split.jt-contact--no-form {
	grid-template-columns: minmax(0, 1fr);
}

.jt-contact--split.jt-contact--no-form .jt-contact__details {
	padding-left: 0;
	border-left: 0;
}

@media (max-width: 900px) {
	.jt-contact,
	.jt-contact--split {
		grid-template-columns: minmax(0, 1fr);
		gap: 2.5rem;
	}

	.jt-contact--split .jt-contact__form {
		padding: 0;
	}

	.jt-contact--split .jt-contact__details {
		padding: 2.5rem 0 0;
		border-left: 0;
		border-top: 1px solid color-mix(in srgb, currentColor 30%, transparent);
	}
}

/* Forms (Contact Form 7 and the JT-Media contact form) ----------------------- */

.jt-cf7 {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.25rem 1.5rem;
}

.jt-cf7 p,
.wpcf7-form > p:empty {
	margin: 0;
}

.jt-cf7 br {
	display: none;
}

.jt-cf7__field--full,
.jt-cf7__submit {
	grid-column: 1 / -1;
}

.jt-cf7__label {
	display: block;
	margin-bottom: 0.4rem;
	font-size: 0.875rem;
}

.wpcf7-form-control-wrap {
	display: block;
	position: relative;
}

.jt-cf7__submit {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 0.75rem;
}

.wpcf7 .wpcf7-submit {
	cursor: pointer;
}

.wpcf7-not-valid-tip {
	display: block;
	margin-top: 0.35rem;
	color: #e5484d;
	font-size: 0.85rem;
	font-weight: 500;
}

.wpcf7 form .wpcf7-response-output {
	margin: 1.5rem 0 0;
	padding: 0.85rem 1.1rem;
	border: 1px solid currentColor;
	border-radius: var(--jt-radius);
	font-size: 0.95rem;
}

.wpcf7 form:is(.init, .resetting, .submitting) .wpcf7-response-output {
	display: none;
}

.wpcf7 form.sent .wpcf7-response-output {
	border-color: #2e9e5b;
	background: color-mix(in srgb, #2e9e5b 12%, transparent);
}

.wpcf7 form:is(.invalid, .unaccepted, .payment-required, .failed, .aborted, .spam) .wpcf7-response-output {
	border-color: #e5484d;
	background: color-mix(in srgb, #e5484d 10%, transparent);
}

/* Boxed: the theme's normal fields, labels shown. */
.jt-form--boxed .wpcf7-submit {
	padding: 1em 2em;
	border: 0;
	border-radius: var(--jt-radius);
	background: var(--jt-primary);
	color: var(--jt-on-primary);
	font-family: var(--jt-font-heading);
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.jt-form--boxed .jt-cf7__submit {
	justify-content: flex-start;
}

/* Lines: one underlined field per row, the placeholder is the label. */
.jt-form--line .jt-cf7 {
	grid-template-columns: minmax(0, 1fr);
	gap: 0;
}

.jt-form--line .jt-cf7__label {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

.jt-form--line :is(input:not([type="checkbox"], [type="radio"], [type="submit"], [type="file"]), select, textarea) {
	padding: 1.1rem 0.35rem 0.6rem;
	border: 0;
	border-bottom: 1px solid color-mix(in srgb, currentColor 45%, transparent);
	border-radius: 0;
	background: transparent;
	color: inherit;
	font-size: 1.1rem;
	box-shadow: none;
}

.jt-form--line :is(input, select, textarea)::placeholder {
	color: inherit;
	opacity: 0.9;
	text-transform: uppercase;
	letter-spacing: 0.02em;
}

.jt-form--line :is(input, select, textarea):focus {
	border-bottom-color: var(--jt-primary);
	box-shadow: 0 1px 0 0 var(--jt-primary);
}

.jt-form--line textarea {
	min-height: 8.5rem;
	resize: vertical;
}

.jt-form--line .jt-cf7__submit {
	margin-top: 2.25rem;
}

.jt-form--line .wpcf7-submit {
	min-height: 2.25rem;
	padding: 0.2rem 3rem 0.2rem 0;
	border: 0;
	background:
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E") right 0.55rem center / 1.1rem no-repeat,
		linear-gradient(var(--jt-primary), var(--jt-primary)) right center / 2.25rem 2.25rem no-repeat;
	color: inherit;
	font-family: var(--jt-font-heading);
	font-size: 1.15rem;
	font-weight: 700;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	transition: opacity 0.2s ease;
}

.jt-form--line .wpcf7-submit:hover,
.jt-form--line .wpcf7-submit:focus-visible {
	opacity: 0.8;
}

.jt-form--line .wpcf7-not-valid-tip {
	padding-left: 0.35rem;
}

@media (max-width: 600px) {
	.jt-cf7 {
		grid-template-columns: minmax(0, 1fr);
	}
}

.wpcf7 .screen-reader-response {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	border: 0;
	word-wrap: normal !important;
}

.wpcf7 form .hidden-fields-container {
	margin: 0;
	padding: 0;
	border: 0;
}

/* WPForms: follow the theme. The doubled class outranks WPForms' own styles. */

.jt-contact__form div.wpforms-container,
.jt-contact__form div.wpforms-container-full {
	margin: 0;
	--wpforms-button-background-color: var(--jt-primary);
	--wpforms-button-text-color: var(--jt-on-primary);
	--wpforms-button-border-radius: var(--jt-radius);
	--wpforms-field-border-radius: var(--jt-radius);
	--wpforms-page-break-color: var(--jt-primary);
}

.jt-form--boxed.jt-form--boxed div.wpforms-container-full .wpforms-form button[type="submit"] {
	height: auto;
	padding: 1em 2em;
	font-family: var(--jt-font-heading);
	font-size: 0.85rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.jt-form--line.jt-form--line div.wpforms-container-full .wpforms-form .wpforms-field {
	padding: 0;
}

.jt-form--line.jt-form--line div.wpforms-container-full .wpforms-form .wpforms-field-label {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

.jt-form--line.jt-form--line div.wpforms-container-full .wpforms-form :is(input:not([type="checkbox"], [type="radio"], [type="submit"], [type="file"], [type="hidden"]), select, textarea) {
	width: 100%;
	max-width: 100%;
	height: auto;
	padding: 1.1rem 0.35rem 0.6rem;
	border: 0;
	border-bottom: 1px solid color-mix(in srgb, currentColor 45%, transparent);
	border-radius: 0;
	background: transparent;
	color: inherit;
	font-size: 1.1rem;
	box-shadow: none;
}

.jt-form--line.jt-form--line div.wpforms-container-full .wpforms-form :is(input, select, textarea)::placeholder {
	color: inherit;
	opacity: 0.9;
	text-transform: uppercase;
	letter-spacing: 0.02em;
}

.jt-form--line.jt-form--line div.wpforms-container-full .wpforms-form :is(input, select, textarea):focus {
	border-bottom-color: var(--jt-primary);
	box-shadow: 0 1px 0 0 var(--jt-primary);
	outline: none;
}

.jt-form--line.jt-form--line div.wpforms-container-full .wpforms-form textarea {
	min-height: 8.5rem;
	height: 8.5rem;
	resize: vertical;
}

.jt-form--line.jt-form--line div.wpforms-container-full .wpforms-form .wpforms-submit-container {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 0.75rem;
	margin-top: 2.25rem;
	padding: 0;
}

.jt-form--line.jt-form--line div.wpforms-container-full .wpforms-form button[type="submit"] {
	height: auto;
	min-height: 2.25rem;
	padding: 0.2rem 3rem 0.2rem 0;
	border: 0;
	border-radius: 0;
	background:
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E") right 0.55rem center / 1.1rem no-repeat,
		linear-gradient(var(--jt-primary), var(--jt-primary)) right center / 2.25rem 2.25rem no-repeat;
	color: inherit;
	font-family: var(--jt-font-heading);
	font-size: 1.15rem;
	font-weight: 700;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	box-shadow: none;
	transition: opacity 0.2s ease;
}

.jt-form--line.jt-form--line div.wpforms-container-full .wpforms-form button[type="submit"]:hover,
.jt-form--line.jt-form--line div.wpforms-container-full .wpforms-form button[type="submit"]:focus-visible {
	background:
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E") right 0.55rem center / 1.1rem no-repeat,
		linear-gradient(var(--jt-primary), var(--jt-primary)) right center / 2.25rem 2.25rem no-repeat;
	opacity: 0.8;
}

.jt-form--line.jt-form--line div.wpforms-container-full .wpforms-form :is(label.wpforms-error, em.wpforms-error) {
	padding-left: 0.35rem;
	color: #e5484d;
	font-size: 0.85rem;
}

.jt-form--line.jt-form--line div.wpforms-container-full .wpforms-form .wpforms-field :is(input, textarea).wpforms-error {
	border-bottom-color: #e5484d;
}

.jt-form--boxed.jt-form--boxed div.wpforms-container-full .wpforms-form .wpforms-field-container {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0 1.5rem;
}

.jt-form--boxed.jt-form--boxed div.wpforms-container-full .wpforms-form .wpforms-field-textarea {
	grid-column: 1 / -1;
}

.jt-form--boxed.jt-form--boxed div.wpforms-container-full .wpforms-form .wpforms-field-label {
	font-size: 0.875rem;
	font-weight: 600;
	color: var(--jt-heading);
}

.jt-form--boxed.jt-form--boxed div.wpforms-container-full .wpforms-form :is(input:not([type="checkbox"], [type="radio"], [type="submit"], [type="file"], [type="hidden"]), select, textarea) {
	width: 100%;
	max-width: 100%;
	height: auto;
	padding: 0.85em 1em;
	border: 1px solid rgba(0, 0, 0, 0.18);
	border-radius: var(--jt-radius);
	background: #fff;
	color: var(--jt-heading);
	font: inherit;
}

.jt-form--boxed.jt-form--boxed div.wpforms-container-full .wpforms-form textarea {
	height: 8.5rem;
}

.jt-form--boxed.jt-form--boxed div.wpforms-container-full .wpforms-form :is(input, select, textarea):focus {
	border-color: var(--jt-primary);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--jt-primary) 25%, transparent);
	outline: none;
}

.jt-form--boxed.jt-form--boxed div.wpforms-container-full .wpforms-form button[type="submit"],
.jt-form--boxed.jt-form--boxed div.wpforms-container-full .wpforms-form button[type="submit"]:hover {
	border: 0;
	border-radius: var(--jt-radius);
	background: var(--jt-primary);
	color: var(--jt-on-primary);
}

.jt-form--boxed.jt-form--boxed div.wpforms-container-full .wpforms-form button[type="submit"]:hover {
	opacity: 0.9;
}

@media (max-width: 600px) {
	.jt-form--boxed.jt-form--boxed div.wpforms-container-full .wpforms-form .wpforms-field-container {
		grid-template-columns: minmax(0, 1fr);
	}
}
