/**
 * Primary menu overlay — split nav + image panel (Taylor Williams palette).
 */

:root {
	--tw-menu-off-white: #f4f5f6;
	--tw-menu-dark: #16181c;
	--tw-menu-mid: #2a2a2a;
	--tw-menu-shell: #4d4d4d;
	--tw-menu-accent: rgba(255, 255, 255, 0.72);
	--tw-menu-muted: rgba(244, 245, 246, 0.24);
	--tw-menu-border: rgba(255, 255, 255, 0.14);
	--tw-menu-panel-width: 52%;
	--tw-menu-toggle-line-ease: cubic-bezier(0.34, 1.46, 0.64, 1);
	--tw-menu-toggle-morph-ease: cubic-bezier(0.65, 0, 0.35, 1);
	--tw-menu-toggle-line-duration: 0.34s;
	--tw-menu-toggle-morph-duration: 0.44s;
}

/* ── Open trigger (header hamburger) ── */
.tw-primary-menu-toggle {
	display: inline-flex;
	flex-direction: column;
	gap: 6px;
	align-items: stretch;
	justify-content: center;
	box-sizing: border-box;
	padding: 12px;
	border: 0;
	background: transparent;
	color: var(--tw-menu-off-white);
	cursor: pointer;
	line-height: 0;
	-webkit-appearance: none;
	appearance: none;
}

.tw-primary-menu-toggle:focus-visible {
	outline: 2px solid rgba(255, 255, 255, 0.55);
	outline-offset: 3px;
}

.tw-primary-menu-toggle__line {
	display: block;
	width: 28px;
	height: 1.5px;
	background: currentColor;
	transform-origin: center center;
	transition:
		transform var(--tw-menu-toggle-morph-duration) var(--tw-menu-toggle-morph-ease),
		opacity calc(var(--tw-menu-toggle-morph-duration) * 0.72) ease,
		width var(--tw-menu-toggle-morph-duration) var(--tw-menu-toggle-morph-ease);
}

/* Burger → X when menu is open (same control as hero header) */
.tw-primary-menu-toggle[aria-expanded="true"] .tw-primary-menu-toggle__line:nth-child(2) {
	width: 28px;
	transform: translateY(7.5px) rotate(45deg);
	transition-delay: 0s;
}

.tw-primary-menu-toggle[aria-expanded="true"] .tw-primary-menu-toggle__line:nth-child(3) {
	width: 28px;
	opacity: 0;
	transform: scaleX(0);
	transition-delay: 0.05s;
}

.tw-primary-menu-toggle[aria-expanded="true"] .tw-primary-menu-toggle__line:nth-child(4) {
	width: 28px;
	transform: translateY(-7.5px) rotate(-45deg);
	transition-delay: 0.08s;
}

/* Burger rest state — explicit targets so X ↔ burger transitions never stick */
.tw-primary-menu-toggle:not(.tw-primary-menu__close)[aria-expanded="false"]
	.tw-primary-menu-toggle__line:nth-child(2),
.tw-primary-menu-toggle:not(.tw-primary-menu__close)[aria-expanded="false"]
	.tw-primary-menu-toggle__line:nth-child(4) {
	width: 28px;
	opacity: 1;
	transform: none;
}

.tw-primary-menu-toggle:not(.tw-primary-menu__close)[aria-expanded="false"]
	.tw-primary-menu-toggle__line:nth-child(2) {
	transition-delay: 0.08s;
}

.tw-primary-menu-toggle:not(.tw-primary-menu__close)[aria-expanded="false"]
	.tw-primary-menu-toggle__line:nth-child(3) {
	width: 20px;
	opacity: 1;
	transform: none;
	transition-delay: 0.05s;
}

.tw-primary-menu-toggle:not(.tw-primary-menu__close)[aria-expanded="false"]
	.tw-primary-menu-toggle__line:nth-child(4) {
	transition-delay: 0s;
}

.tw-primary-menu-toggle__line:nth-child(3) {
	width: 20px;
}

/* Open trigger only — smooth burger line expand on hover */
.tw-primary-menu-toggle:not(.tw-primary-menu__close) {
	transition: color 0.28s ease;
}

.tw-primary-menu-toggle:not(.tw-primary-menu__close)[aria-expanded="false"]:hover {
	color: #fff;
}

.tw-primary-menu-toggle:not(.tw-primary-menu__close)[aria-expanded="false"]:not(:hover)
	.tw-primary-menu-toggle__line:nth-child(3) {
	transition-delay: 0.06s;
}

@keyframes tw-menu-burger-line-hover-bounce {
	0% {
		transform: scaleX(1);
		opacity: 1;
	}

	20% {
		transform: scaleX(0.85);
	}

	38% {
		transform: scaleX(1.16);
		opacity: 1;
	}

	58% {
		transform: scaleX(0.9);
	}

	76% {
		transform: scaleX(1.06);
	}

	100% {
		transform: scaleX(1);
		opacity: 1;
	}
}

/* Hover bounce — JS class; starts from visible lines (no scaleX(0) flicker) */
.tw-primary-menu-toggle.is-burger-hover-bounce:not(.tw-primary-menu__close)[aria-expanded="false"]
	.tw-primary-menu-toggle__line {
	transition: none !important;
	transform-origin: left center !important;
}

.tw-primary-menu-toggle.is-burger-hover-bounce:not(.tw-primary-menu__close)[aria-expanded="false"]
	.tw-primary-menu-toggle__line:nth-child(2) {
	width: 28px;
	animation: tw-menu-burger-line-hover-bounce 0.62s cubic-bezier(0.34, 1.46, 0.64, 1) 0.04s both !important;
}

.tw-primary-menu-toggle.is-burger-hover-bounce:not(.tw-primary-menu__close)[aria-expanded="false"]
	.tw-primary-menu-toggle__line:nth-child(3) {
	width: 20px;
	animation: tw-menu-burger-line-hover-bounce 0.62s cubic-bezier(0.34, 1.46, 0.64, 1) 0.08s both !important;
}

.tw-primary-menu-toggle.is-burger-hover-bounce:not(.tw-primary-menu__close)[aria-expanded="false"]
	.tw-primary-menu-toggle__line:nth-child(4) {
	width: 28px;
	animation: tw-menu-burger-line-hover-bounce 0.62s cubic-bezier(0.34, 1.46, 0.64, 1) 0.12s both !important;
}

@keyframes tw-menu-burger-line-grow {
	0% {
		transform: scaleX(0);
		opacity: 0.25;
	}

	38% {
		transform: scaleX(1.16);
		opacity: 1;
	}

	58% {
		transform: scaleX(0.9);
	}

	76% {
		transform: scaleX(1.06);
	}

	100% {
		transform: scaleX(1);
		opacity: 1;
	}
}

/* Menu open/close: keep header toggle visible; morph burger ↔ X via shared transitions */
body.tw-primary-menu-open .tw-primary-menu-toggle,
body.tw-primary-menu-closing .tw-primary-menu-toggle {
	opacity: 1 !important;
	visibility: visible !important;
	pointer-events: auto !important;
	animation: none !important;
}

body.tw-primary-menu-open
	.tw-primary-menu-toggle:not(.tw-primary-menu__close)
	.tw-primary-menu-toggle__line,
body.tw-primary-menu-closing
	.tw-primary-menu-toggle:not(.tw-primary-menu__close)
	.tw-primary-menu-toggle__line {
	animation: none !important;
	transform-origin: center center !important;
	transition:
		transform var(--tw-menu-toggle-morph-duration) var(--tw-menu-toggle-morph-ease),
		opacity calc(var(--tw-menu-toggle-morph-duration) * 0.72) ease,
		width var(--tw-menu-toggle-morph-duration) var(--tw-menu-toggle-morph-ease) !important;
}

body.tw-primary-menu-open
	.tw-primary-menu-toggle:not(.tw-primary-menu__close)[aria-expanded="true"]:hover,
body.tw-primary-menu-closing .tw-primary-menu-toggle:not(.tw-primary-menu__close):hover {
	color: var(--tw-menu-off-white);
}

/* ── Overlay shell (inner pages: full-viewport fixed overlay) ── */
.tw-primary-menu {
	--tw-menu-ease: cubic-bezier(0.16, 1, 0.3, 1);
	position: fixed;
	inset: 0;
	z-index: 100100;
	display: flex;
	pointer-events: none;
	opacity: 0;
	transition: opacity 0.45s var(--tw-menu-ease);
	font-family: var(--tw-font-sans, "Manrope", system-ui, sans-serif);
}

.tw-primary-menu.is-open,
.tw-primary-menu.is-closing {
	pointer-events: auto;
}

.tw-primary-menu.is-open {
	opacity: 1;
}

.tw-primary-menu.is-closing {
	opacity: 0;
}

/* Inner pages: framed menu shell — matches homepage hero container */
body.tw-carpentry-inner .tw-primary-menu {
	inset: var(--tw-frame-inset);
	width: auto;
	height: auto;
	border-radius: var(--tw-hero-inner-radius, clamp(10px, 1.25vw, 14px));
	overflow: hidden;
	transform: scale(0.98);
	box-shadow: 0 0 0 var(--tw-frame-inset) var(--tw-color-bg, #f5f4f0);
	transition:
		opacity 0.45s var(--tw-menu-ease),
		transform 0.42s var(--tw-menu-ease);
}

body.tw-carpentry-inner .tw-primary-menu.is-open:not(.is-closing) {
	transform: scale(1);
}

body.tw-carpentry-inner .tw-primary-menu__visual {
	border-radius: var(--tw-hero-inner-radius, clamp(10px, 1.25vw, 14px)) 0 0
		var(--tw-hero-inner-radius, clamp(10px, 1.25vw, 14px));
}

body.tw-carpentry-inner .tw-primary-menu__panel,
body.tw-carpentry-inner .tw-primary-menu__visual {
	height: 100%;
	min-height: 0;
}

body.tw-carpentry-inner .tw-primary-menu__panel {
	border-radius: 0 var(--tw-hero-inner-radius, clamp(10px, 1.25vw, 14px))
		var(--tw-hero-inner-radius, clamp(10px, 1.25vw, 14px)) 0;
}

/* Inner pages: header toggle stays visible when open — hide duplicate menu chrome */
body.tw-carpentry-inner .tw-primary-menu__close,
body.tw-carpentry-inner .tw-primary-menu__header {
	display: none;
}

/* ── Right nav panel ── */
.tw-primary-menu__panel {
	position: relative;
	display: flex;
	flex-direction: column;
	width: var(--tw-menu-panel-width);
	min-height: 100vh;
	min-height: 100dvh;
	padding: clamp(2rem, 4vw, 2.5rem) clamp(1.75rem, 4vw, 3rem);
	background: var(--tw-menu-dark);
	color: var(--tw-menu-off-white);
	transform: translateX(30px);
	transition: transform 0.55s var(--tw-menu-ease) 0.05s;
	overflow: hidden;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__panel {
	transform: translateX(0);
}

.tw-primary-menu__panel::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");
	opacity: 0.45;
	pointer-events: none;
}

.tw-primary-menu__header {
	position: absolute;
	top: clamp(2rem, 4vw, 2.5rem);
	right: clamp(1.75rem, 4vw, 3rem);
	left: auto;
	z-index: 30;
	display: flex;
	justify-content: flex-end;
	margin: 0;
	pointer-events: none;
}

.tw-primary-menu:not(.is-open):not(.is-closing) .tw-primary-menu__header {
	visibility: hidden;
	pointer-events: none;
}

.tw-primary-menu__close {
	display: inline-flex;
	flex-shrink: 0;
	pointer-events: auto;
}

.tw-primary-menu__close.tw-primary-menu-toggle {
	border: 0;
	background: transparent;
	transform: rotate(0deg);
	transform-origin: center center;
	transition: transform var(--tw-menu-toggle-morph-duration) var(--tw-menu-toggle-morph-ease);
}

.tw-primary-menu.is-open:not(.is-closing)
	.tw-primary-menu__close.tw-primary-menu-toggle:hover {
	transform: rotate(90deg);
}

.tw-primary-menu__close.tw-primary-menu-toggle:focus-visible {
	outline: 2px solid rgba(255, 255, 255, 0.55);
	outline-offset: 3px;
}

.tw-primary-menu__close.tw-primary-menu-toggle .tw-primary-menu-toggle__line {
	opacity: 1;
	animation: none !important;
	transform-origin: center center !important;
	transition:
		transform var(--tw-menu-toggle-morph-duration) var(--tw-menu-toggle-morph-ease),
		opacity calc(var(--tw-menu-toggle-morph-duration) * 0.72) ease,
		width var(--tw-menu-toggle-morph-duration) var(--tw-menu-toggle-morph-ease);
}

.tw-primary-menu__close.tw-primary-menu-toggle .tw-primary-menu-toggle__line:nth-child(2) {
	width: 28px;
	transform: none;
	transition-delay: 0.08s;
}

.tw-primary-menu__close.tw-primary-menu-toggle .tw-primary-menu-toggle__line:nth-child(3) {
	width: 20px;
	opacity: 1;
	transform: none;
	transition-delay: 0.05s;
}

.tw-primary-menu__close.tw-primary-menu-toggle .tw-primary-menu-toggle__line:nth-child(4) {
	width: 28px;
	transform: none;
	transition-delay: 0s;
}

.tw-primary-menu.is-open:not(.is-closing)
	.tw-primary-menu__close.tw-primary-menu-toggle
	.tw-primary-menu-toggle__line:nth-child(2) {
	transform: translateY(7.5px) rotate(45deg);
	transition-delay: 0s;
}

.tw-primary-menu.is-open:not(.is-closing)
	.tw-primary-menu__close.tw-primary-menu-toggle
	.tw-primary-menu-toggle__line:nth-child(3) {
	width: 28px;
	opacity: 0;
	transform: scaleX(0);
	transition-delay: 0.05s;
}

.tw-primary-menu.is-open:not(.is-closing)
	.tw-primary-menu__close.tw-primary-menu-toggle
	.tw-primary-menu-toggle__line:nth-child(4) {
	transform: translateY(-7.5px) rotate(-45deg);
	transition-delay: 0.08s;
}

.tw-primary-menu.is-closing .tw-primary-menu__close.tw-primary-menu-toggle .tw-primary-menu-toggle__line,
.tw-primary-menu:not(.is-open) .tw-primary-menu__close.tw-primary-menu-toggle .tw-primary-menu-toggle__line {
	animation: none !important;
}

/* Mobile panel logo — desktop uses .tw-primary-menu__visual-logo instead */
.tw-primary-menu__panel-logo {
	display: none;
}

.tw-primary-menu__panel-logo-link {
	display: block;
	line-height: 0;
	text-decoration: none;
	color: inherit;
}

/* ── Nav items ── */
.tw-primary-menu__items {
	position: relative;
	z-index: 1;
	display: flex;
	flex: 1;
	flex-direction: column;
	justify-content: center;
	margin: 0;
	padding: 0;
	list-style: none;
}

.tw-primary-menu__item {
	position: relative;
	opacity: 0;
	transition: opacity 0.4s var(--tw-menu-ease);
	transition-delay: 0s;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__item:nth-child(1) {
	opacity: 1;
	transition-delay: 0.08s;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__item:nth-child(2) {
	opacity: 1;
	transition-delay: 0.18s;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__item:nth-child(3) {
	opacity: 1;
	transition-delay: 0.28s;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__item:nth-child(n + 4) {
	opacity: 1;
	transition-delay: 0.38s;
}

.tw-primary-menu.is-closing .tw-primary-menu__item {
	opacity: 0;
	transition-delay: 0s;
}

.tw-primary-menu__link {
	position: relative;
	display: flex;
	align-items: center;
	gap: 1.125rem;
	padding: 1.125rem 0;
	color: inherit;
	text-decoration: none;
}

.tw-primary-menu__link:focus-visible {
	outline: 2px solid rgba(255, 255, 255, 0.45);
	outline-offset: 2px;
}

.tw-primary-menu__link-num {
	display: inline-flex;
	flex-shrink: 0;
	min-width: 1.4rem;
	overflow: hidden;
}

.tw-primary-menu__link-num-text {
	display: block;
	font-size: 0.68rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	color: rgba(244, 245, 246, 0.22);
	transform: translateX(-110%);
	opacity: 0;
	transition:
		transform 0.55s var(--tw-menu-ease),
		opacity 0.45s var(--tw-menu-ease),
		color 0.15s var(--tw-menu-ease);
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__item:nth-child(1) .tw-primary-menu__link-num-text {
	transform: translateX(0);
	opacity: 1;
	transition-delay: 0.1s;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__item:nth-child(2) .tw-primary-menu__link-num-text {
	transform: translateX(0);
	opacity: 1;
	transition-delay: 0.2s;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__item:nth-child(3) .tw-primary-menu__link-num-text {
	transform: translateX(0);
	opacity: 1;
	transition-delay: 0.3s;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__item:nth-child(n + 4) .tw-primary-menu__link-num-text {
	transform: translateX(0);
	opacity: 1;
	transition-delay: 0.4s;
}

.tw-primary-menu.is-closing .tw-primary-menu__link-num-text {
	transform: translateX(-110%);
	opacity: 0;
	transition-delay: 0s;
}

.tw-primary-menu__link-name {
	flex: 1;
	min-width: 0;
	overflow: hidden;
	height: clamp(2.2rem, 5.4vw, 2.875rem);
}

.tw-primary-menu__link-name-track {
	display: block;
	transform: translateY(100%);
	transition: transform 0.55s var(--tw-menu-ease);
	will-change: transform;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__item:nth-child(1) .tw-primary-menu__link-name-track {
	transform: translateY(0);
	transition-delay: 0.1s;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__item:nth-child(2) .tw-primary-menu__link-name-track {
	transform: translateY(0);
	transition-delay: 0.2s;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__item:nth-child(3) .tw-primary-menu__link-name-track {
	transform: translateY(0);
	transition-delay: 0.3s;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__item:nth-child(n + 4) .tw-primary-menu__link-name-track {
	transform: translateY(0);
	transition-delay: 0.4s;
}

.tw-primary-menu.is-closing .tw-primary-menu__link-name-track {
	transform: translateY(100%);
	transition-delay: 0s;
}

.tw-primary-menu__link-name-text {
	display: block;
	font-size: clamp(2.2rem, 5.4vw, 2.875rem);
	font-weight: 800;
	line-height: 1;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: rgba(244, 245, 246, 0.55);
	transition: color 0.45s var(--tw-menu-ease);
}

.tw-primary-menu__link-arrow {
	flex-shrink: 0;
	margin-left: auto;
	font-size: 0.8rem;
	line-height: 1;
	color: rgba(244, 245, 246, 0.15);
	transform: rotate(0deg);
	transition:
		color 0.45s var(--tw-menu-ease),
		transform 0.5s var(--tw-menu-ease);
}

.tw-primary-menu__item:hover .tw-primary-menu__link-num-text,
.tw-primary-menu__item:focus-within .tw-primary-menu__link-num-text {
	color: var(--tw-menu-accent);
}

.tw-primary-menu__link.is-slid .tw-primary-menu__link-name-track,
.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__link.is-slid .tw-primary-menu__link-name-track {
	transform: translateY(-50%);
	transition-delay: 0s;
}

.tw-primary-menu__link.is-slid-replay .tw-primary-menu__link-name-track {
	transition: none;
	transform: translateY(0);
}

.tw-primary-menu__item:hover .tw-primary-menu__link-name-text,
.tw-primary-menu__item:focus-within .tw-primary-menu__link-name-text {
	color: var(--tw-menu-off-white);
}

.tw-primary-menu__link:hover .tw-primary-menu__link-arrow,
.tw-primary-menu__link:focus-visible .tw-primary-menu__link-arrow {
	color: var(--tw-menu-accent);
	transform: rotate(45deg);
}

.tw-primary-menu__item::before {
	content: "";
	position: absolute;
	left: calc(-1 * clamp(1.75rem, 4vw, 3rem));
	top: 50%;
	z-index: 1;
	width: 3px;
	height: 72%;
	background: var(--tw-menu-accent);
	transform: translate(-8px, -50%) scaleY(0);
	transform-origin: center center;
	opacity: 0;
	transition:
		transform 0.55s var(--tw-menu-ease),
		opacity 0.55s var(--tw-menu-ease);
	pointer-events: none;
}

.tw-primary-menu__item:hover::before,
.tw-primary-menu__item:focus-within::before {
	transform: translate(0, -50%) scaleY(1);
	opacity: 1;
}

/* ── Footer ── */
.tw-primary-menu__footer {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	margin-top: auto;
	padding-top: 1.5rem;
	opacity: 0;
	transition: opacity 0.4s ease;
	transition-delay: 0s;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__footer {
	opacity: 1;
	transition-delay: 0.38s;
}

.tw-primary-menu.is-closing .tw-primary-menu__footer {
	opacity: 0;
	transition-delay: 0s;
}

.tw-primary-menu__cta {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.68rem;
	font-weight: 600;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--tw-menu-accent);
	text-decoration: none;
	transition: gap 0.5s var(--tw-menu-ease);
}

.tw-primary-menu__cta:hover,
.tw-primary-menu__cta:focus-visible {
	gap: 0.875rem;
}

.tw-primary-menu__cta-line {
	display: block;
	width: 24px;
	height: 0.5px;
	background: var(--tw-menu-accent);
	transition: width 0.5s var(--tw-menu-ease);
}

.tw-primary-menu__cta:hover .tw-primary-menu__cta-line,
.tw-primary-menu__cta:focus-visible .tw-primary-menu__cta-line {
	width: 40px;
}

.tw-primary-menu__connected {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 0.65rem;
	text-align: right;
}

.tw-primary-menu__connected-label {
	margin: 0;
	color: var(--tw-menu-accent);
}

.tw-primary-menu__connected .tw-hero-social {
	justify-content: flex-end;
}

/* ── Left featured project panel ── */
.tw-primary-menu__visual {
	position: relative;
	flex: 1;
	overflow: hidden;
	background: var(--tw-menu-mid);
	transform: translateX(-30px);
	transition: transform 0.6s var(--tw-menu-ease);
}

.tw-primary-menu__visual-logo {
	position: absolute;
	top: clamp(2rem, 4vw, 2.5rem);
	left: clamp(1.75rem, 4vw, 3rem);
	z-index: 3;
	max-width: min(72%, 18rem);
	opacity: 0;
	transform: translate3d(0, -14px, 0);
	transition:
		opacity 0.45s var(--tw-menu-ease),
		transform 0.5s var(--tw-menu-ease);
	pointer-events: none;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__visual-logo {
	opacity: 1;
	transform: translate3d(0, 0, 0);
	transition-delay: 0.14s;
	pointer-events: auto;
}

.tw-primary-menu.is-closing .tw-primary-menu__visual-logo {
	opacity: 0;
	transform: translate3d(0, -10px, 0);
	transition-delay: 0s;
}

.tw-primary-menu__visual-logo-link {
	display: block;
	line-height: 0;
	text-decoration: none;
	color: inherit;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__visual {
	transform: translateX(0);
}

.tw-primary-menu__featured {
	position: absolute;
	inset: 0;
	display: block;
	color: inherit;
	text-decoration: none;
}

.tw-primary-menu__featured-bg {
	position: absolute;
	inset: 0;
	background-size: cover;
	background-position: center;
	transform: scale(1.04);
	transition: transform 0.7s var(--tw-menu-ease);
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__featured-bg {
	transform: scale(1);
}

.tw-primary-menu.is-closing .tw-primary-menu__featured-bg {
	transform: scale(1.04);
}

.tw-primary-menu__featured-scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(
		125deg,
		rgba(22, 24, 28, 0.55) 0%,
		rgba(77, 77, 77, 0.35) 48%,
		rgba(26, 26, 26, 0.5) 100%
	);
}

.tw-primary-menu__panel-overlay {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	padding: clamp(1.5rem, 3vw, 2.25rem) clamp(1.5rem, 3.5vw, 2.5rem);
	background: linear-gradient(to top, rgba(10, 10, 10, 0.85) 0%, rgba(10, 10, 10, 0.1) 50%, transparent 100%);
}

.tw-primary-menu__featured-meta {
	display: block;
	opacity: 0;
	transform: translateY(8px);
	transition:
		transform 0.4s var(--tw-menu-ease),
		opacity 0.4s ease;
	transition-delay: 0s;
}

.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__featured-meta {
	opacity: 1;
	transform: translateY(0);
	transition-delay: 0.1s;
}

.tw-primary-menu.is-closing .tw-primary-menu__featured-meta {
	opacity: 0;
	transform: translateY(8px);
	transition-delay: 0s;
}

.tw-primary-menu__panel-tag {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	margin: 0 0 0.375rem;
	font-size: 0.62rem;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--tw-menu-accent);
}

.tw-primary-menu__panel-tag::before {
	content: "";
	display: block;
	width: 20px;
	height: 0.5px;
	background: var(--tw-menu-accent);
}

.tw-primary-menu__panel-title {
	display: block;
	margin: 0 0 0.5rem;
	font-size: clamp(1.35rem, 2.6vw, 1.75rem);
	font-weight: 800;
	line-height: 1.1;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--tw-menu-off-white);
}

.tw-primary-menu__panel-desc {
	display: block;
	margin: 0;
	max-width: 18rem;
	font-size: 0.8125rem;
	font-weight: 400;
	line-height: 1.6;
	color: rgba(244, 245, 246, 0.45);
}

body.tw-primary-menu-open,
body.tw-primary-menu-closing {
	overflow: hidden;
}

@media (max-width: 900px) {
	:root {
		--tw-menu-panel-width: 100%;
	}

	.tw-primary-menu__visual {
		display: none;
	}

	.tw-primary-menu__header {
		left: var(--tw-hero-pad-x, 1.75rem);
		right: var(--tw-hero-pad-x-end, 1.75rem);
		align-items: center;
		justify-content: flex-end;
	}

	.tw-primary-menu__close {
		flex-shrink: 0;
		margin-inline-start: 1rem;
	}

	.tw-primary-menu__panel {
		width: 100%;
		min-height: 100%;
		padding: clamp(5.5rem, 16vh, 7.5rem) var(--tw-hero-pad-x-end, 1.75rem)
			clamp(2rem, 6vh, 3rem) var(--tw-hero-pad-x, 1.75rem);
		background: var(--tw-menu-dark);
		border-radius: var(--tw-hero-inner-radius, 0);
		transform: scale(0.96);
		transition:
			transform 0.38s var(--tw-menu-ease),
			opacity 0.38s ease;
	}

	.tw-primary-menu.is-open:not(.is-closing) .tw-primary-menu__panel {
		transform: scale(1);
	}

	body.tw-carpentry-inner .tw-primary-menu__panel {
		border-radius: var(--tw-hero-inner-radius, clamp(10px, 1.25vw, 14px));
	}

	.tw-primary-menu__items {
		justify-content: center;
	}

	.tw-primary-menu__link-name {
		height: 2.1rem;
	}

	.tw-primary-menu__link-name-text {
		font-size: 2.1rem;
	}

	.tw-primary-menu__footer {
		flex-direction: column;
		align-items: flex-start;
		gap: 1.5rem;
	}

	.tw-primary-menu__connected {
		align-items: flex-start;
		text-align: left;
	}

	.tw-primary-menu__connected .tw-hero-social {
		justify-content: flex-start;
	}
}

@media (prefers-reduced-motion: reduce) {
	.tw-primary-menu,
	.tw-primary-menu__panel,
	.tw-primary-menu__visual,
	.tw-primary-menu__item,
	.tw-primary-menu__footer,
	.tw-primary-menu__visual-logo,
	.tw-primary-menu__featured-bg,
	.tw-primary-menu__featured-meta,
	.tw-primary-menu__item::before,
	.tw-primary-menu__link-num-text,
	.tw-primary-menu__link-name-track,
	.tw-primary-menu__link-name-text,
	.tw-primary-menu__link-arrow,
	.tw-primary-menu__cta-line,
	.tw-primary-menu__panel-logo,
	.tw-primary-menu__close.tw-primary-menu-toggle,
	.tw-primary-menu-toggle__line,
	body.tw-primary-menu-closing
		.tw-primary-menu-toggle:not(.tw-primary-menu__close)
		.tw-primary-menu-toggle__line {
		transition-duration: 0.01ms !important;
		transition-delay: 0ms !important;
		animation-duration: 0.01ms !important;
		animation-delay: 0ms !important;
	}

	.tw-primary-menu.is-open .tw-primary-menu__item,
	.tw-primary-menu.is-open .tw-primary-menu__footer,
	.tw-primary-menu.is-open .tw-primary-menu__featured-meta,
	.tw-primary-menu.is-open .tw-primary-menu__link-num-text,
	.tw-primary-menu.is-open .tw-primary-menu__link-name-track {
		transform: translateY(0);
	}

	.tw-primary-menu.is-open .tw-primary-menu__item::before {
		opacity: 0;
		transform: translate(-8px, -50%) scaleY(0);
	}

	.tw-primary-menu.is-open .tw-primary-menu__featured-bg {
		transform: none;
	}
}
