/* Total Teck Fluid Menu — v19
   Layout carried over from v18. Changes are noted inline.
   ------------------------------------------------------------------ */

:root {
	--ttfm-line: rgba(255, 255, 255, .12);
}

/* Divi's own header is hidden only when the body class is present, and that
   class is only added on real front-end views — never in the builder. */
/* display:none, never opacity or visibility. A fixed container that is merely
   invisible still receives clicks, which is how Divi's slide-in and fullscreen
   nav containers were intercepting "read more" links and routing them to a
   menu item. The markup itself is also removed in PHP; this is the backstop
   for header formats that print outside those filters. */
body.ttfm-v13-enabled #main-header,
body.ttfm-v13-enabled #top-header,
body.ttfm-v13-enabled #et-top-navigation,
body.ttfm-v13-enabled .et_slide_in_menu_container,
body.ttfm-v13-enabled .et_slide_in_menu_container_narrow,
body.ttfm-v13-enabled .et_slide_menu_top,
body.ttfm-v13-enabled .et_pb_fullscreen_nav_container,
body.ttfm-v13-enabled .et_pb_menu__wrap > .et_mobile_nav_menu,
body.ttfm-v13-enabled #et_mobile_nav_menu,
body.ttfm-v13-enabled .et_mobile_menu,
body.ttfm-v13-enabled .mobile_menu_bar,
body.ttfm-v13-enabled #et-boc > .et-l--header,
body.ttfm-v13-enabled .et-l--header,
body.ttfm-v13-enabled .et_header_style_fullscreen .et_slide_menu_top,
body.ttfm-v13-enabled .et_vertical_nav #main-header {
	display: none !important;
	pointer-events: none !important;
	visibility: hidden !important;
}

/* Vertical and fullscreen header formats also indent the page to make room
   for a nav that is no longer there. */
body.ttfm-v13-enabled.et_vertical_nav #page-container,
body.ttfm-v13-enabled.et_vertical_nav #main-content {
	padding-left: 0 !important;
	margin-left: 0 !important;
}

/* Divi adds these to <body> for slide-in and fullscreen formats and they can
   lock scrolling or shift the page even with the container gone. */
body.ttfm-v13-enabled.et_slide_in_menu_opened,
body.ttfm-v13-enabled.et_fullscreen_nav_opened {
	overflow: visible !important;
}

/* v18 pulled the first section up with inline styles written by JS, which the
   Divi Builder could read back and save into the layout. That is gone. The
   offset is now pure CSS on #page-container, so no page markup is touched. */
body.ttfm-v13-enabled #page-container {
	padding-top: var(--ttfm-header-h, 104px) !important;
	margin-top: 0 !important;
}

/* "push" mode: page-container gives up its top padding, so the whole document
   moves up by the bar height. This is what shifted the hero. */
body.ttfm-v13-enabled.ttfm-v13-hero-push #page-container {
	padding-top: 0 !important;
}

/* "spacer" (default) and "border" modes also give up the padding, but the
   first section reclaims it internally — a ::before block or a transparent
   top border, printed from PHP. Content lands exactly where it did before
   while the hero background reaches the top of the viewport. */
body.ttfm-v13-enabled.ttfm-v13-hero-spacer #page-container,
body.ttfm-v13-enabled.ttfm-v13-hero-border #page-container {
	padding-top: 0 !important;
}

/* Divi occasionally styles a section's ::before for decoration. Neutralise it
   on the hero so the spacer is the only thing that pseudo-element does. */
body.ttfm-v13-enabled.ttfm-v13-hero-spacer .et_pb_section:first-child > .et_pb_row:first-child {
	margin-top: 0 !important;
}

.ttfm13-header,
.ttfm13-header *,
.ttfm13-bar,
.ttfm13-bar *,
.ttfm13-overlay,
.ttfm13-overlay * {
	box-sizing: border-box;
}

.ttfm13-header,
.ttfm13-bar,
.ttfm13-overlay {
	font-family: "Oswald", sans-serif !important;
}

/* ====================================================================
   Header bar
   ================================================================= */

.ttfm13-header {
	position: fixed;
	inset: 0 0 auto;
	/* v18 used 2147483000, which sat on top of the Divi Builder chrome.
	   99000 clears normal page content and stays well under Divi's UI. */
	z-index: 99000;
	height: var(--ttfm-header-h, 104px);
	background: var(--ttfm-bg, #000000);
	transition: background-color .35s ease, transform .5s cubic-bezier(.22, 1, .36, 1), opacity .3s linear;
}

body.ttfm-v13-transparent-header .ttfm13-header {
	background-color: transparent;
}

body.ttfm-v13-transparent-header.ttfm13-scrolled .ttfm13-header,
body.ttfm-v13-transparent-header.ttfm13-open .ttfm13-header {
	background-color: var(--ttfm-bg, #000000);
}

/* Steps aside when the scroll-down bar takes over. */
.ttfm13-header.is-yielded {
	transform: translateY(-100%);
	opacity: 0;
	pointer-events: none;
}

/* ...but never while the overlay is open. Opening from the scroll-down bar
   used to leave the header yielded, which hid the close button and left the
   overlay hanging below an empty strip. The two hamburgers now behave
   identically no matter which one was clicked. */
body.ttfm13-open .ttfm13-header.is-yielded {
	transform: translateY(0);
	opacity: 1;
	pointer-events: auto;
}

body.admin-bar .ttfm13-header {
	top: 32px;
}

.ttfm13-header-inner {
	width: var(--ttfm-header-w, 90%);
	max-width: 1600px;
	height: 100%;
	margin: 0 auto;
	display: flex;
	align-items: center;
	justify-content: space-between;
}

.ttfm13-logo {
	display: inline-flex;
	align-items: center;
	transform: translate(var(--ttfm-logo-x, 0px), var(--ttfm-logo-y, 0px));
}

.ttfm13-logo img {
	display: block;
	height: calc(var(--ttfm-header-h, 104px) * var(--ttfm-logo-scale, 70) / 100);
	width: auto;
	max-width: min(var(--ttfm-logo-w, 250px), 34vw);
	object-fit: contain;
	object-position: left center;
}

.ttfm13-logo-text {
	color: var(--ttfm-font, #ffffff);
	font-size: 22px;
	font-weight: var(--ttfm-header-weight, 300);
	letter-spacing: .12em;
	text-transform: uppercase;
}

.ttfm13-header-actions {
	display: flex;
	align-items: center;
	gap: var(--ttfm-header-gap, 52px);
}

/* v18 painted these in the accent colour. The bar is black with white
   lettering now, and the accent is kept for hover. */
.ttfm13-header-phone,
.ttfm13-header-cta {
	/* Deliberately its own colour, not --ttfm-font. The top bar sits over the
	   hero while the fullscreen menu sits on a flat background, so the two
	   rarely want the same treatment. Falls back to the shared Lettering
	   colour when the setting is blank. */
	color: var(--ttfm-header-color, #ffffff) !important;
	text-decoration: none !important;
	font-family: var(--ttfm-header-font, "Oswald", sans-serif) !important;
	font-weight: var(--ttfm-header-weight, 500);
	letter-spacing: var(--ttfm-header-tracking, .14em);
	text-transform: var(--ttfm-header-transform, uppercase);
	white-space: nowrap;
	transition: color .25s ease;
}

.ttfm13-header-phone {
	font-size: var(--ttfm-phone-size, 21px);
}

.ttfm13-header-cta {
	font-size: var(--ttfm-cta-size, 21px);
}

.ttfm13-header-phone:hover,
.ttfm13-header-cta:hover,
.ttfm13-header-phone:focus-visible,
.ttfm13-header-cta:focus-visible {
	color: var(--ttfm-header-hover, #d9b883) !important;
}

.ttfm13-header-phone {
	display: inline-flex;
	align-items: center;
	gap: 11px;
	font-size: var(--ttfm-phone-size, 21px);
}

.ttfm13-header-phone span {
	font-size: calc(var(--ttfm-phone-size, 21px) * 1.1);
}

/* Toggle ------------------------------------------------------------- */

.ttfm13-toggle {
	position: relative;
	width: 58px;
	height: 54px;
	padding: 0;
	border: 0;
	background: transparent;
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;
}

.ttfm13-toggle span {
	position: absolute;
	right: 8px;
	height: 2px;
	background: var(--ttfm-font, #ffffff);
	transition: width .28s ease, transform .3s ease, top .3s ease, background .25s ease;
}

.ttfm13-toggle span:first-child {
	top: 19px;
	width: 42px;
}

.ttfm13-toggle span:last-child {
	top: 33px;
	width: 28px;
}

.ttfm13-toggle:hover span {
	background: var(--ttfm-accent, #d9b883);
}

body.ttfm13-open .ttfm13-toggle span:first-child,
body.ttfm13-open .ttfm13-toggle span:last-child {
	top: 26px;
	width: 42px;
}

body.ttfm13-open .ttfm13-toggle span:first-child {
	transform: rotate(45deg);
}

body.ttfm13-open .ttfm13-toggle span:last-child {
	transform: rotate(-45deg);
}

.ttfm13-toggle--sm {
	width: 44px;
	height: 40px;
}

.ttfm13-toggle--sm span:first-child {
	top: 13px;
	width: 32px;
}

.ttfm13-toggle--sm span:last-child {
	top: 25px;
	width: 21px;
}

body.ttfm13-open .ttfm13-toggle--sm span:first-child,
body.ttfm13-open .ttfm13-toggle--sm span:last-child {
	top: 19px;
	width: 32px;
}

/* ====================================================================
   Scroll-down classic bar
   ================================================================= */

.ttfm13-bar {
	position: fixed;
	inset: 0 0 auto;
	z-index: 99010;
	background: var(--ttfm-bg, #000000);
	border-bottom: var(--ttfm-bar-border, 0px) solid var(--ttfm-line);
	transform: translateY(-101%);
	transition: transform .55s cubic-bezier(.22, 1, .36, 1);
	will-change: transform;
}

.ttfm13-bar.is-visible {
	transform: translateY(0);
}

body.admin-bar .ttfm13-bar {
	top: 32px;
}

body.ttfm13-open .ttfm13-bar {
	transform: translateY(-101%);
}

.ttfm13-bar-inner {
	width: var(--ttfm-header-w, 90%);
	max-width: 1600px;
	height: max(var(--ttfm-sticky-h, 66px), calc(var(--ttfm-bar-logo-h, 41px) + 18px));
	margin: 0 auto;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
}

.ttfm13-bar-logo img {
	display: block;
	height: var(--ttfm-bar-logo-h, 41px);
	width: auto;
	max-width: min(var(--ttfm-logo-w, 320px), 34vw);
	object-fit: contain;
	object-position: left center;
}

.ttfm13-bar-nav {
	flex: 1 1 auto;
	display: flex;
	justify-content: center;
	min-width: 0;
}

.ttfm13-bar-nav ul {
	display: flex;
	align-items: center;
	gap: clamp(14px, 2.1vw, 34px);
	list-style: none !important;
	margin: 0 !important;
	padding: 0 !important;
}

.ttfm13-bar-nav li {
	position: relative;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none !important;
}

.ttfm13-bar-nav a {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 20px 0;
	color: var(--ttfm-font, #ffffff) !important;
	text-decoration: none !important;
	font-size: var(--ttfm-bar-link, 15px);
	font-weight: var(--ttfm-header-weight, 300);
	letter-spacing: .12em;
	text-transform: uppercase;
	line-height: 1;
	white-space: nowrap;
	transition: color .25s ease;
}

.ttfm13-bar-nav > ul > li > a::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 14px;
	width: 0;
	height: 1px;
	background: var(--ttfm-accent, #d9b883);
	transition: width .35s cubic-bezier(.22, 1, .36, 1);
}

.ttfm13-bar-nav > ul > li:hover > a,
.ttfm13-bar-nav > ul > li.is-current > a {
	color: var(--ttfm-accent, #d9b883) !important;
}

.ttfm13-bar-nav > ul > li:hover > a::after,
.ttfm13-bar-nav > ul > li.is-current > a::after {
	width: 100%;
}

.ttfm13-caret {
	width: 6px;
	height: 6px;
	border-right: 1px solid currentColor;
	border-bottom: 1px solid currentColor;
	transform: translateY(-2px) rotate(45deg);
	opacity: .6;
}

.ttfm13-bar-sub {
	position: absolute;
	top: 100%;
	left: 50%;
	min-width: 240px;
	margin: 0 !important;
	padding: 8px 0 !important;
	list-style: none !important;
	background: var(--ttfm-bg, #000000);
	border: 1px solid var(--ttfm-line);
	opacity: 0;
	visibility: hidden;
	transform: translate(-50%, 8px);
	transition: opacity .28s ease, transform .28s ease, visibility .28s;
}

.ttfm13-bar-nav li.has-children:hover > .ttfm13-bar-sub,
.ttfm13-bar-nav li.has-children:focus-within > .ttfm13-bar-sub {
	opacity: 1;
	visibility: visible;
	transform: translate(-50%, 0);
}

.ttfm13-bar-sub a {
	display: block;
	padding: 10px 22px;
	font-size: var(--ttfm-bar-sub, 14px);
	letter-spacing: .1em;
}

.ttfm13-bar-sub a:hover {
	color: var(--ttfm-accent, #d9b883) !important;
	background: rgba(255, 255, 255, .05);
}

.ttfm13-bar-actions {
	display: flex;
	align-items: center;
	gap: 18px;
	flex: 0 0 auto;
}

.ttfm13-bar-cta {
	color: var(--ttfm-font, #ffffff) !important;
	text-decoration: none !important;
	font-size: var(--ttfm-bar-cta, 14px);
	letter-spacing: .14em;
	text-transform: uppercase;
	white-space: nowrap;
	padding: 10px 20px;
	border: 1px solid var(--ttfm-accent, #d9b883);
	transition: background .25s ease, color .25s ease;
}

.ttfm13-bar-cta:hover {
	color: var(--ttfm-bg, #000) !important;
	background: var(--ttfm-accent, #d9b883);
}

/* ====================================================================
   Overlay
   ================================================================= */

.ttfm13-overlay {
	position: fixed !important;
	top: var(--ttfm-header-h, 104px) !important;
	left: 0 !important;
	right: 0 !important;
	bottom: 0 !important;
	z-index: 98999 !important;
	width: 100% !important;
	height: calc(100dvh - var(--ttfm-header-h, 104px)) !important;
	overflow: hidden !important;
	/* These two are what actually stop clicks, so they carry !important like
	   everything else in this rule. Without it, any stylesheet loading after
	   the plugin could revive the hidden overlay as a hit target — which is
	   exactly what sent page clicks to whichever menu link sat underneath. */
	visibility: hidden !important;
	pointer-events: none !important;
	opacity: 0;
	background: var(--ttfm-bg, #000000) !important;
	color: var(--ttfm-font, #ffffff) !important;
	transform: translateY(-12px);
	transition: opacity .55s cubic-bezier(.77, 0, .175, 1), transform .55s cubic-bezier(.77, 0, .175, 1), visibility .55s;
}

body.admin-bar .ttfm13-overlay {
	top: calc(var(--ttfm-header-h, 104px) + 32px) !important;
	height: calc(100dvh - var(--ttfm-header-h, 104px) - 32px) !important;
}

/* v18 also locked <html>, which froze scrolling for anything that shared the
   document — the builder included. Only the body is locked now. */
body.ttfm13-open {
	overflow: hidden !important;
}

body.ttfm13-open .ttfm13-overlay {
	visibility: visible !important;
	opacity: 1;
	pointer-events: auto !important;
	transform: translateY(0);
}

/* Belt and braces: while closed, nothing inside the overlay can be a hit
   target, even if a descendant sets pointer-events itself. */
body:not(.ttfm13-open) .ttfm13-overlay,
body:not(.ttfm13-open) .ttfm13-overlay * {
	pointer-events: none !important;
}

/* Once the close animation has finished, the overlay leaves the layout
   entirely. JS adds this a beat after closing and removes it before opening,
   so the transition still plays both ways. */
.ttfm13-overlay.is-idle {
	display: none !important;
}

.ttfm13-watermark {
	position: absolute;
	right: var(--ttfm-watermark-right, -2vw);
	bottom: var(--ttfm-watermark-bottom, -16vh);
	width: min(var(--ttfm-watermark-size, 64vw), 1080px);
	aspect-ratio: 1;
	background-image: var(--ttfm-watermark-url);
	background-position: center;
	background-size: contain;
	background-repeat: no-repeat;
	opacity: var(--ttfm-watermark-opacity, .4);
	pointer-events: none;
}

.ttfm13-layout {
	position: relative;
	z-index: 2;
	width: var(--ttfm-overlay-w, 92%);
	max-width: 1660px;
	height: 100%;
	margin: 0 auto;
}

.ttfm13-rail {
	position: absolute;
	top: 8%;
	left: 0;
	bottom: 9%;
	width: 72px;
	display: flex;
	flex-direction: column;
	align-items: center;
	transition: opacity .35s ease, visibility .35s;
}

.ttfm13-rail span {
	color: var(--ttfm-font, #ffffff);
	font-size: var(--ttfm-rail-size, 17px);
	letter-spacing: .30em;
	text-transform: uppercase;
	writing-mode: vertical-rl;
	transform: rotate(180deg);
}

.ttfm13-rail i {
	width: 1px;
	flex: 1;
	margin-top: 28px;
	background: rgba(255, 255, 255, .20);
}

.ttfm13-content {
	position: relative;
	height: 100%;
	display: grid;
	grid-template-columns:
		minmax(0, var(--ttfm-col-nav, 1.15fr))
		var(--ttfm-col-mid, 0px)
		minmax(var(--ttfm-col-contact-min, 320px), var(--ttfm-col-contact, .85fr));
	gap: var(--ttfm-col-gap, 46px);
	align-items: start;
	padding: var(--ttfm-pad-top, 48px) 0 var(--ttfm-pad-bottom, 118px) var(--ttfm-pad-left, 105px);
	transition: padding .45s cubic-bezier(.77, 0, .175, 1);
}

.ttfm13-screen {
	grid-column: 1;
	grid-row: 1;
	align-self: start;
	visibility: hidden;
	opacity: 0;
	pointer-events: none;
	transform: translateX(42px);
	transition: opacity .45s ease, transform .55s cubic-bezier(.77, 0, .175, 1), visibility .55s;
}

.ttfm13-screen.is-active {
	visibility: visible;
	opacity: 1;
	pointer-events: auto;
	transform: translateX(0);
}

.ttfm13-layout.ttfm13-submenu-active .ttfm13-rail {
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
}

.ttfm13-layout.ttfm13-submenu-active .ttfm13-content {
	padding-top: calc(var(--ttfm-pad-top, 48px) * .7);
	padding-left: calc(var(--ttfm-pad-left, 105px) * .46);
}

.ttfm13-layout.ttfm13-submenu-active .ttfm13-submenu-screen h2 {
	margin-top: 28px !important;
	margin-bottom: 34px !important;
}

.ttfm13-main-screen ul,
.ttfm13-submenu-list {
	list-style: none !important;
	margin: 0 !important;
	padding: 0 !important;
}

.ttfm13-main-screen li,
.ttfm13-submenu-list li {
	margin: 0 !important;
	padding: 0 !important;
}

.ttfm13-main-nav a {
	display: inline-block;
	color: var(--ttfm-font, #ffffff) !important;
	background: transparent !important;
	text-decoration: none !important;
	font-size: clamp(var(--ttfm-nav-size-min, 36px), min(5vw, 8vh), var(--ttfm-nav-size, 96px));
	font-weight: var(--ttfm-nav-weight, 300);
	line-height: 1.08;
	letter-spacing: -.03em;
	padding: 2px 0;
	transition: color .25s ease, transform .25s ease;
}

.ttfm13-main-nav a:hover,
.ttfm13-main-nav a:focus-visible {
	color: var(--ttfm-accent, #d9b883) !important;
	transform: translateX(10px);
}

.ttfm13-back {
	display: inline-flex;
	align-items: center;
	gap: 18px;
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--ttfm-font, #ffffff);
	font-family: "Oswald", sans-serif;
	font-size: var(--ttfm-back-size, 22px);
	letter-spacing: .08em;
	text-transform: uppercase;
	cursor: pointer;
}

.ttfm13-back:hover {
	color: var(--ttfm-accent, #d9b883);
}

.ttfm13-back-arrow {
	position: relative;
	width: 92px;
	height: 18px;
}

.ttfm13-back-arrow::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 0;
	width: 92px;
	height: 1px;
	background: currentColor;
}

.ttfm13-back-arrow::after {
	content: "";
	position: absolute;
	left: 0;
	top: 50%;
	width: 13px;
	height: 13px;
	border-left: 1px solid currentColor;
	border-bottom: 1px solid currentColor;
	transform: translateY(-50%) rotate(45deg);
}

.ttfm13-submenu-screen h2 {
	margin: 34px 0 36px !important;
	padding: 0 !important;
	color: var(--ttfm-font, #ffffff) !important;
	font-family: "Oswald", sans-serif !important;
	font-size: clamp(32px, 4.8vw, var(--ttfm-subheading-size, 84px)) !important;
	font-weight: var(--ttfm-sub-weight, 300) !important;
	line-height: 1 !important;
}

.ttfm13-submenu-list li + li {
	margin-top: 18px !important;
}

.ttfm13-submenu-list a {
	display: grid;
	grid-template-columns: 92px minmax(0, 1fr);
	align-items: center;
	min-height: 50px;
	color: var(--ttfm-font, #ffffff) !important;
	text-decoration: none !important;
	font-size: clamp(24px, 3.2vw, var(--ttfm-subitem-size, 60px));
	font-weight: var(--ttfm-sub-weight, 300);
	line-height: 1.08;
}

.ttfm13-subline {
	width: 64px;
	height: 1px;
	background: rgba(255, 255, 255, .28);
	transition: width .25s ease, background .25s ease;
}

.ttfm13-submenu-list a:hover,
.ttfm13-submenu-list a:focus-visible {
	color: var(--ttfm-accent, #d9b883) !important;
}

.ttfm13-submenu-list a:hover .ttfm13-subline,
.ttfm13-submenu-list a:focus-visible .ttfm13-subline {
	width: 78px;
	background: var(--ttfm-accent, #d9b883);
}

.ttfm13-contact {
	grid-column: 3;
	grid-row: 1;
	align-self: end;
	padding-bottom: 18px;
	margin-top: auto;
	display: flex;
	flex-direction: column;
	align-items: var(--ttfm-contact-align, flex-end);
	text-align: var(--ttfm-contact-text, right);
	transform: translate(var(--ttfm-contact-x, 0px), var(--ttfm-contact-y, 0px));
}

.ttfm13-contact-phone {
	color: var(--ttfm-accent, #d9b883) !important;
	text-decoration: none !important;
	font-size: clamp(20px, 2.2vw, var(--ttfm-contact-phone, 38px));
	font-weight: var(--ttfm-header-weight, 300);
}

.ttfm13-contact-email {
	margin-top: 6px;
	color: var(--ttfm-font, #ffffff) !important;
	text-decoration: none !important;
	font-size: var(--ttfm-contact-email, 20px);
}

.ttfm13-location {
	margin-top: 22px;
	color: var(--ttfm-font, #ffffff);
	font-size: var(--ttfm-contact-loc, 18px);
}

.ttfm13-social {
	display: flex;
	flex-wrap: wrap;
	justify-content: var(--ttfm-contact-align, flex-end);
	gap: 10px 22px;
	margin-top: 30px;
	padding-top: 18px;
	border-top: 1px solid var(--ttfm-accent, #d9b883);
}

.ttfm13-social a {
	color: var(--ttfm-font, #ffffff) !important;
	text-decoration: none !important;
	font-size: var(--ttfm-social-size, 14px);
	letter-spacing: .08em;
	text-transform: uppercase;
	transition: color .25s ease;
}

.ttfm13-social a:hover {
	color: var(--ttfm-accent, #d9b883) !important;
}

.ttfm13-footer {
	position: absolute;
	left: 0;
	bottom: 18px;
	z-index: 20;
	color: rgba(255, 255, 255, .65);
	font-family: Arial, sans-serif;
	font-size: var(--ttfm-footer-size, 12px);
}

/* ====================================================================
   Focus
   ================================================================= */

.ttfm13-header a:focus-visible,
.ttfm13-header button:focus-visible,
.ttfm13-bar a:focus-visible,
.ttfm13-bar button:focus-visible,
.ttfm13-overlay a:focus-visible,
.ttfm13-overlay button:focus-visible {
	outline: 2px solid var(--ttfm-accent, #d9b883);
	outline-offset: 4px;
}

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

@media (max-height: 850px) and (min-width: 1051px) {
	.ttfm13-content {
		padding-top: 34px;
		padding-bottom: 102px;
	}

	.ttfm13-submenu-screen h2 {
		margin-top: 18px !important;
		margin-bottom: 24px !important;
		font-size: clamp(38px, 4vw, 62px) !important;
	}

	.ttfm13-submenu-list li + li {
		margin-top: 12px !important;
	}

	.ttfm13-submenu-list a {
		min-height: 44px;
		font-size: clamp(27px, 2.6vw, 44px);
	}
}

@media (max-width: 1150px) {
	.ttfm13-bar-nav {
		display: none;
	}
}

@media (max-width: 1050px) {
	.ttfm13-content {
		grid-template-columns: 1fr;
		gap: 26px;
		overflow-y: auto;
		padding-left: 84px;
	}

	.ttfm13-screen,
	.ttfm13-contact {
		grid-column: 1 / -1;
	}

	.ttfm13-screen {
		grid-row: 1;
	}

	.ttfm13-contact {
		grid-row: 2;
		align-self: auto;
		align-items: flex-start;
		text-align: left;
		padding-bottom: 30px;
		transform: none;
	}

	.ttfm13-social {
		justify-content: flex-start;
	}
}

@media (max-width: 782px) {
	body.admin-bar .ttfm13-header,
	body.admin-bar .ttfm13-bar {
		top: 46px;
	}

	body.admin-bar .ttfm13-overlay {
		top: calc(var(--ttfm-header-h, 104px) + 46px) !important;
		height: calc(100dvh - var(--ttfm-header-h, 104px) - 46px) !important;
	}
}

@media (max-width: 767px) {
	:root {
		--ttfm-header-h: 78px;
	}

	.ttfm13-logo img {
		max-width: 60vw;
	}

	.ttfm13-header-phone,
	.ttfm13-header-cta,
	.ttfm13-bar-cta {
		display: none;
	}

	.ttfm13-rail {
		left: -8px;
		width: 48px;
	}

	.ttfm13-content {
		padding: 26px 0 90px 48px;
	}

	.ttfm13-rail span {
		font-size: calc(var(--ttfm-rail-size, 17px) * .82);
	}

	.ttfm13-layout.ttfm13-submenu-active .ttfm13-content {
		padding-left: 18px;
	}

	.ttfm13-layout.ttfm13-submenu-active .ttfm13-submenu-screen h2 {
		margin-top: 20px !important;
		margin-bottom: 26px !important;
	}

	.ttfm13-main-nav a {
		font-size: clamp(26px, 9.2vw, calc(var(--ttfm-nav-size, 96px) * .55));
	}

	.ttfm13-submenu-screen h2 {
		margin-top: 28px !important;
		margin-bottom: 30px !important;
		font-size: clamp(36px, 10vw, 52px) !important;
	}

	.ttfm13-submenu-list a {
		grid-template-columns: 58px minmax(0, 1fr);
		font-size: clamp(25px, 7.8vw, 38px);
	}

	.ttfm13-subline {
		width: 42px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.ttfm13-header,
	.ttfm13-bar,
	.ttfm13-overlay,
	.ttfm13-overlay *,
	.ttfm13-toggle span {
		transition-duration: .01ms !important;
	}
}
