/*
 * VillaNytt legacy menu v2.
 * Isolated presentation for the production-derived navigation shell.
 */

.vn-menu {
	--vn-menu-root-width: 360px;
	--vn-menu-child-width: 380px;
	--vn-menu-primary: #1a4837;
	--vn-menu-state-bg: #eaf1ec;
	--vn-menu-state-accent: #1f5a44;
	--vn-menu-drawer-header-height: 88px;
	--vn-menu-motion-duration: 0ms;
	color: #000;
}

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

body.vn-menu-open {
	overflow: hidden;
}

.vn-menu .site-header {
	position: relative;
	z-index: 10;
	background: #fff;
	color: #000;
}

.vn-menu .grid-container {
	width: 100%;
}

.vn-menu .main-navigation {
	display: flex;
	align-items: center;
	min-height: 80px;
	color: #000;
}

.vn-menu .site-branding,
.vn-menu .main-navigation a {
	color: #000;
}

.vn-menu .vn-primary-nav {
	display: none;
}

.vn-menu .vn-menu-trigger {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	order: 3;
	flex: 0 0 auto;
	min-width: 44px;
	min-height: 44px;
	margin-left: 0;
	padding: 10px 12px;
	gap: 8px;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
	color: #000;
	cursor: pointer;
	font: inherit;
}

.vn-menu .vn-menu-trigger__label {
	display: inline-block;
	font-size: 1rem;
	font-weight: 600;
	line-height: 1;
}

.vn-menu .vn-menu-trigger svg {
	display: block;
	flex: 0 0 auto;
}

.vn-menu .vn-menu__overlay {
	position: fixed;
	inset: 0;
	z-index: 10000;
	background: rgba(0, 0, 0, 0.8);
	opacity: 0;
	pointer-events: none;
	transition: opacity var(--vn-menu-motion-duration) ease;
}

.vn-menu .vn-menu__overlay.is-open {
	opacity: 1;
	pointer-events: auto;
}

.vn-menu .vn-menu__drawer {
	position: fixed;
	top: 0;
	bottom: 0;
	left: 0;
	z-index: 10001;
	width: 100vw;
	height: 100vh;
	height: 100dvh;
	overflow: visible;
	background: #fff;
	color: #000;
	transform: translateX(-100%);
	transition: transform var(--vn-menu-motion-duration) ease;
	will-change: transform;
}

.vn-menu .vn-menu__drawer.is-open {
	transform: translateX(0);
}

.vn-menu .vn-menu__inner {
	height: 100%;
	min-height: 100%;
	overflow-x: hidden;
	overflow-y: auto;
	overscroll-behavior: contain;
	background: #fff;
}

.vn-menu .vn-menu__top {
	position: sticky;
	top: 0;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: var(--vn-menu-drawer-header-height);
	padding: 0 20px;
	border-bottom: 1px solid rgba(0, 0, 0, 0.18);
	background: #fff;
}

.vn-menu .vn-menu__top .site-branding {
	order: 0;
	flex: 0 0 auto;
	margin: 0;
	padding: 0;
	border-radius: 0;
	box-shadow: none;
	appearance: none;
	display: inline-flex;
	align-items: center;
	font-size: 1.125rem;
	font-weight: 700;
	letter-spacing: 0.3px;
	text-decoration: none;
}

.vn-menu .vn-menu__top .site-branding svg,
.vn-menu .vn-menu__top .site-branding img {
	display: block;
	width: auto;
	height: 28px !important;
	min-height: 0 !important;
	max-height: 28px !important;
	max-width: 148px;
	object-fit: contain;
	object-position: left center;
}

.vn-menu .vn-menu__drawer button {
	background-color: transparent !important;
	color: #000 !important;
}

.vn-menu .vn-menu__drawer button,
.vn-menu .vn-menu__drawer a {
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	appearance: none;
}

.vn-menu .vn-menu__close,
.vn-menu .vn-menu__back,
.vn-menu .vn-menu__submenu-trigger {
	min-height: 44px;
	border: 0;
	background: transparent;
	color: #000;
	cursor: pointer;
	font: inherit;
}

.vn-menu .vn-menu__close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 10px 12px;
}

.vn-menu .vn-menu__list,
.vn-menu .vn-menu__top-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.vn-menu .vn-menu__list > li,
.vn-menu .vn-menu__top-list > li {
	margin: 0;
	padding: 0;
}

.vn-menu .vn-menu__link,
.vn-menu .vn-menu__landing,
.vn-menu .vn-menu__back,
.vn-menu .vn-menu__submenu-trigger,
.vn-menu .vn-menu__top-list a,
.vn-menu .vn-menu__contact a {
	display: flex;
	align-items: center;
	width: 100%;
	min-height: 44px;
	padding: 12px 20px;
	border-bottom: 1px solid rgba(0, 0, 0, 0.18);
	color: #000;
	line-height: 1.25;
	text-align: left;
	text-decoration: none;
}

.vn-menu .vn-menu__submenu-trigger {
	justify-content: space-between;
}

.vn-menu .vn-menu__submenu-trigger::after {
	content: "\203A";
	margin-left: 16px;
	font-size: 1.5rem;
	line-height: 1;
}

.vn-menu .vn-menu__submenu-trigger[aria-expanded="true"],
.vn-menu .vn-menu__submenu-trigger:hover,
.vn-menu .vn-menu__link:hover,
.vn-menu .vn-menu__landing:hover,
.vn-menu .vn-menu__top-list a:hover,
.vn-menu .vn-menu__contact a:hover {
	background-color: var(--vn-menu-state-bg) !important;
	color: var(--vn-menu-state-accent) !important;
}

.vn-menu .vn-menu__submenu-trigger[aria-expanded="true"]::after {
	color: var(--vn-menu-state-accent);
}

.vn-menu .vn-menu__back {
	font-weight: 600;
}

.vn-menu .vn-menu__back::before {
	content: "\2039";
	margin-right: 10px;
	font-size: 1.5rem;
	line-height: 1;
}

.vn-menu .vn-menu__landing {
	font-weight: 700;
}

.vn-menu .vn-menu__list--root > li > .vn-menu__link,
.vn-menu .vn-menu__list--root > li > .vn-menu__submenu-trigger {
	height: 54px;
	min-height: 54px;
	padding: 0 32px;
	font-size: 20px;
	font-weight: 600;
}

.vn-menu .vn-menu__panel > .vn-menu__back,
.vn-menu .vn-menu__panel > .vn-menu__landing {
	height: 44px;
	min-height: 44px;
	padding: 0 24px;
	font-size: 16px;
	font-weight: 600;
}

.vn-menu .vn-menu__panel .vn-menu__list > li > .vn-menu__link,
.vn-menu .vn-menu__panel .vn-menu__list > li > .vn-menu__submenu-trigger {
	height: 50px;
	min-height: 50px;
	padding: 0 24px;
	font-size: 16px;
	font-weight: 500;
}

.vn-menu .vn-menu__contact {
	margin-top: 24px;
}

.vn-menu .vn-menu__panel {
	position: fixed;
	top: var(--vn-menu-drawer-header-height);
	bottom: 0;
	left: 0;
	z-index: 10002;
	width: 100vw;
	overflow-x: hidden;
	overflow-y: auto;
	overscroll-behavior: contain;
	background: #fff;
	color: #000;
	transform: translateX(100%);
	transition: transform var(--vn-menu-motion-duration) ease;
	will-change: transform;
}

.vn-menu .vn-menu__panel.is-active {
	transform: translateX(0);
}

.vn-menu .vn-menu-trigger:focus-visible,
.vn-menu .vn-menu__close:focus-visible,
.vn-menu .vn-menu__back:focus-visible,
.vn-menu .vn-menu__submenu-trigger:focus-visible,
.vn-menu .vn-menu__link:focus-visible,
.vn-menu .vn-menu__landing:focus-visible,
.vn-menu .vn-menu__top-list a:focus-visible,
.vn-menu .vn-menu__contact a:focus-visible {
	position: relative;
	z-index: 3;
	outline: 3px solid var(--vn-menu-primary);
	outline-offset: 3px;
	box-shadow: 0 0 0 2px #fff !important;
}

@media (min-width: 1024px) {
	.vn-menu .site-header,
	.vn-menu .main-navigation {
		height: 134px;
	}

	.vn-menu .vn-primary-nav {
		display: flex;
		align-self: stretch;
		order: 2;
		flex: 1 1 100%;
	}

	.vn-menu .vn-primary-nav .inner-menu-wrapper,
	.vn-menu .vn-primary-nav .nav-menu {
		display: flex;
		height: 100%;
		margin: 0;
		padding: 0;
		list-style: none;
	}

	.vn-menu .vn-primary-nav .inner-menu-wrapper {
		margin: 0 auto;
	}

	.vn-menu .vn-menu-trigger {
		order: 1;
		margin-right: 2rem;
	}

	.vn-menu .vn-menu__drawer {
		width: var(--vn-menu-root-width);
	}

	.vn-menu .vn-primary-nav .nav-menu > li {
		display: flex;
		align-items: center;
		height: 134px;
		padding: 0 1rem;
	}

	.vn-menu .vn-primary-nav .nav-menu > li > a {
		display: inline-flex;
		align-items: center;
		min-height: 44px;
		padding: 0.5rem 1rem;
		border-radius: 48px;
		color: #000;
		font-size: 1rem;
		letter-spacing: 0.3px;
		line-height: 1.25;
		text-decoration: none;
	}

	.vn-menu .vn-primary-nav .nav-menu > li.current-menu-item > a,
	.vn-menu .vn-primary-nav .nav-menu > li.current-menu-ancestor > a {
		background: #000;
		color: #fff;
	}

	.vn-menu .vn-menu__panel {
		top: 0;
		left: var(--vn-menu-root-width);
		width: var(--vn-menu-child-width);
		height: 100vh;
		height: 100dvh;
		border-left: 1px solid rgba(0, 0, 0, 0.08);
		box-shadow: -8px 0 24px rgba(0, 0, 0, 0.12);
		transform: translateX(-12px);
	}

	.vn-menu .vn-menu__panel.is-active {
		transform: translateX(0);
	}
}

@media (prefers-reduced-motion: reduce) {
	.vn-menu .vn-menu__drawer,
	.vn-menu .vn-menu__overlay,
	.vn-menu .vn-menu__panel {
		transition-duration: 0s;
	}
}
