.impm-component {
	--impm-header-bottom: 0px;
	--impm-device-height: 100dvh;
	--impm-drop-top: 0px;
	--impm-drop-right: 16px;
	display: none;
	position: relative;
	line-height: 1;
}

.impm-viewport {
	line-height: 1;
}

body.impm-open-lock {
	overflow: hidden !important;
}

.impm-toggle {
	position: relative;
	z-index: calc(var(--impm-z) + 2);
	display: grid;
	width: 48px;
	height: 48px;
	padding: 8px;
	border: 0;
	border-radius: 0;
	color: var(--impm-icon);
	cursor: pointer;
	background: transparent;
	box-shadow: none;
	place-items: center;
	-webkit-tap-highlight-color: transparent;
}

.impm-notice {
	display: inline-block;
	padding: 8px 10px;
	color: #8a2424;
	font-size: 12px;
	line-height: 1.35;
	background: #fff1f1;
}

.impm-toggle-icons {
	position: relative;
	display: grid;
	width: 32px;
	height: 32px;
	place-items: center;
}

.impm-toggle-icons i {
	position: absolute;
	font-size: 30px;
	line-height: 1;
	-webkit-text-stroke: calc((var(--impm-line) - 3px) * .22) currentColor;
	transition: color var(--impm-icon-hover-duration) ease, opacity var(--impm-icon-hover-duration) ease, transform var(--impm-icon-hover-duration) cubic-bezier(.22, 1, .36, 1);
}

.impm-hover-icon {
	color: var(--impm-icon-hover);
	opacity: 0;
	transform: translateX(-10px);
}

.impm-close-icon {
	color: var(--impm-close);
	opacity: 0;
	transform: rotate(-90deg) scale(.55);
}

.impm-icon-open .impm-open-icon,
.impm-icon-open .impm-hover-icon { opacity: 0 !important; transform: rotate(90deg) scale(.55) !important; }
.impm-icon-open .impm-close-icon { opacity: 1; transform: rotate(0) scale(1); }
.impm-icon-open .impm-toggle { color: var(--impm-close); }

.impm-icon-hover-color:not(.impm-icon-open) .impm-toggle:hover,
.impm-icon-hover-icon-color:not(.impm-icon-open) .impm-toggle:hover {
	color: var(--impm-icon-hover);
}

.impm-icon-hover-icon:not(.impm-icon-open) .impm-toggle:hover .impm-open-icon,
.impm-icon-hover-icon-color:not(.impm-icon-open) .impm-toggle:hover .impm-open-icon {
	opacity: 0;
	transform: translateX(10px);
}

.impm-icon-hover-icon:not(.impm-icon-open) .impm-toggle:hover .impm-hover-icon,
.impm-icon-hover-icon-color:not(.impm-icon-open) .impm-toggle:hover .impm-hover-icon {
	opacity: 1;
	transform: translateX(0);
}

.impm-icon-hover-icon .impm-hover-icon {
	color: var(--impm-icon);
}

.impm-overlay {
	position: fixed;
	z-index: calc(var(--impm-z) - 1);
	inset: 0;
	pointer-events: none;
	visibility: hidden;
	opacity: 0;
	background: var(--impm-overlay);
	transition: opacity var(--impm-open-duration) var(--impm-open-ease) var(--impm-open-delay), visibility 0s linear calc(var(--impm-open-duration) + var(--impm-open-delay));
}

.impm-is-open .impm-overlay {
	pointer-events: auto;
	visibility: visible;
	opacity: var(--impm-overlay-opacity);
	transition-delay: var(--impm-open-delay), 0s;
}

.impm-drawer {
	position: fixed;
	z-index: var(--impm-z);
	top: var(--impm-header-bottom);
	right: 0;
	bottom: auto;
	left: 0;
	height: max(0px, calc(var(--impm-device-height) - var(--impm-header-bottom)));
	overflow: hidden;
	color: var(--impm-item);
	pointer-events: none;
	visibility: hidden;
	background: var(--impm-bg);
	border-radius: var(--impm-radius);
	box-shadow: none;
	isolation: isolate;
	will-change: opacity, transform;
	transition: opacity var(--impm-open-duration) var(--impm-open-ease) var(--impm-open-delay), transform var(--impm-open-duration) var(--impm-open-ease) var(--impm-open-delay), visibility 0s linear calc(var(--impm-open-duration) + var(--impm-open-delay));
}

.impm-mode-dropdown .impm-drawer {
	top: var(--impm-drop-top);
	right: var(--impm-drop-right);
	bottom: auto;
	left: auto;
	width: min(var(--impm-dropdown-width), calc(100vw - 24px));
	height: min(var(--impm-dropdown-height), calc(100vh - var(--impm-drop-top) - 12px));
	box-shadow: 0 18px 50px rgba(0, 0, 0, .16);
}

.impm-mode-fullscreen .impm-drawer {
	width: 100vw;
	max-width: none;
	height: max(0px, calc(var(--impm-device-height) - var(--impm-header-bottom)));
}

.impm-animation-slide .impm-drawer { transform: translateX(100%); }
.impm-animation-slide-left .impm-drawer { transform: translateX(-100%); }
.impm-animation-slide-up .impm-drawer { transform: translateY(100%); }
.impm-animation-slide-down .impm-drawer { transform: translateY(-100%); }
.impm-animation-fade .impm-drawer { opacity: 0; }
.impm-animation-scale .impm-drawer { opacity: 0; transform: scale(.94); transform-origin: top right; }
.impm-animation-flip .impm-drawer { opacity: 0; transform: perspective(1000px) rotateY(18deg); transform-origin: right center; }
.impm-animation-none .impm-drawer { transition: none; }

.impm-is-open .impm-drawer {
	opacity: 1;
	pointer-events: auto;
	visibility: visible;
	transform: none;
	transition-delay: var(--impm-open-delay), var(--impm-open-delay), 0s;
}

.impm-panels,
.impm-main-layout,
.impm-menu,
.impm-menu .sub-menu,
.impm-content-panel {
	box-sizing: border-box;
	width: 100%;
	height: 100%;
}

.impm-panels {
	position: relative;
	height: 100%;
	min-height: 100%;
	overflow: hidden;
}

.impm-panel-stage {
	position: absolute;
	z-index: calc(var(--impm-z) + 1);
	inset: 0;
	width: 100%;
	height: 100%;
	overflow: hidden;
	pointer-events: none;
}

.impm-has-open-panel .impm-panel-stage {
	pointer-events: auto;
}

.impm-main-layout {
	position: relative;
	height: 100%;
	min-height: 100%;
	overflow-x: hidden;
	overflow-y: auto;
	overscroll-behavior-y: contain;
	background: var(--impm-bg);
	-webkit-overflow-scrolling: touch;
}

.impm-has-open-panel .impm-main-layout,
.impm-has-open-panel .impm-root-panel {
	pointer-events: none;
	visibility: hidden;
}

.impm-has-open-panel .impm-panel-active {
	pointer-events: auto;
	visibility: visible;
}

.impm-menu {
	margin: 0;
	padding: var(--impm-padding);
	overflow-x: hidden;
	overflow-y: auto;
	background: var(--impm-bg);
	-webkit-overflow-scrolling: touch;
}

.impm-menu .sub-menu,
.impm-content-panel {
	box-sizing: border-box;
	width: 100% !important;
	max-width: none !important;
	height: 100% !important;
	margin: 0;
	overflow-x: hidden;
	overflow-y: auto;
	background: var(--impm-bg);
	-webkit-overflow-scrolling: touch;
	--impm-panel-content-height: 100%;
}

.impm-menu .sub-menu {
	padding: var(--impm-sub-pad-top) var(--impm-sub-pad-right) var(--impm-sub-pad-bottom) var(--impm-sub-pad-left);
}

.impm-content-panel {
	padding: 0;
}

.impm-menu {
	display: flex;
	gap: var(--impm-gap);
	flex-direction: column;
	list-style: none;
}

.impm-align-top .impm-menu { justify-content: flex-start; }
.impm-align-center .impm-menu { justify-content: center; }
.impm-align-bottom .impm-menu { justify-content: flex-end; }
.impm-submenu-align-top .impm-menu .sub-menu { justify-content: flex-start; }
.impm-submenu-align-center .impm-menu .sub-menu { justify-content: center; }
.impm-submenu-align-bottom .impm-menu .sub-menu { justify-content: flex-end; }

.impm-menu > li,
.impm-menu .sub-menu > li {
	position: static;
	flex: 0 0 auto;
	margin: 0;
	padding: 0;
	list-style: none;
}

.impm-distribute-between .impm-menu { justify-content: space-between; }
.impm-distribute-around .impm-menu { justify-content: space-around; }
.impm-distribute-evenly .impm-menu { justify-content: space-evenly; }
.impm-menu > li > a,
.impm-menu .sub-menu > li > a {
	display: flex;
	gap: var(--impm-chevron-gap);
	align-items: center;
	justify-content: flex-start;
	min-height: 42px;
	padding: 5px 2px;
	color: var(--impm-item);
	font: inherit;
	font-size: var(--impm-item-size);
	font-weight: 700;
	line-height: 1.25;
	text-decoration: none;
	box-shadow: none;
	transition: color var(--impm-item-hover-duration) ease, background-color var(--impm-item-hover-duration) ease;
}

.impm-link-label {
	background-image: linear-gradient(currentColor, currentColor);
	background-position: left bottom;
	background-repeat: no-repeat;
	background-size: 0 2px;
	transition: background-size var(--impm-item-hover-duration) ease;
}

.impm-no-link-underlines .impm-menu a,
.impm-no-link-underlines .impm-menu a:hover,
.impm-no-link-underlines .impm-menu a:focus,
.impm-no-link-underlines .impm-menu a:active {
	border-bottom: 0 !important;
	background-image: none !important;
	box-shadow: none !important;
	text-decoration: none !important;
}

.impm-no-link-underlines .impm-menu a::before,
.impm-no-link-underlines .impm-menu a::after,
.impm-no-link-underlines .impm-link-label {
	border-bottom: 0 !important;
	background-image: none !important;
	box-shadow: none !important;
	text-decoration: none !important;
}

.impm-horizontal-left .impm-menu { align-items: flex-start; }
.impm-horizontal-center .impm-menu { align-items: center; }
.impm-horizontal-right .impm-menu { align-items: flex-end; }
.impm-horizontal-left .impm-menu > li > a,
.impm-horizontal-left .impm-menu .sub-menu > li > a { text-align: left; }
.impm-horizontal-center .impm-menu > li > a,
.impm-horizontal-center .impm-menu .sub-menu > li > a { text-align: center; }
.impm-horizontal-right .impm-menu > li > a,
.impm-horizontal-right .impm-menu .sub-menu > li > a { text-align: right; }

.impm-panel-icon {
	flex: 0 0 auto;
	font-size: var(--impm-chevron-size);
	-webkit-text-stroke: calc((var(--impm-chevron-line) - 2px) * .18) currentColor;
	transform: translateX(0);
	transition: transform var(--impm-item-hover-duration) ease;
}

.impm-chevron-none .impm-panel-icon { display: none; }

.impm-menu > .current-menu-item > a,
.impm-menu > .current-menu-ancestor > a,
.impm-menu .sub-menu > .current-menu-item > a,
.impm-menu .sub-menu > .current-menu-ancestor > a {
	margin: 3px -12px;
	padding-right: 14px;
	padding-left: 14px;
	border-radius: 8px;
	color: var(--impm-active);
	background: var(--impm-active-bg);
}

.impm-item-hover-color .impm-menu > li > a:hover,
.impm-item-hover-color .impm-menu .sub-menu > li > a:hover,
.impm-item-hover-color-underline .impm-menu > li > a:hover,
.impm-item-hover-color-underline .impm-menu .sub-menu > li > a:hover {
	color: var(--impm-item-hover);
}

.impm-menu > li > a:hover,
.impm-menu .sub-menu > li > a:hover {
	background: var(--impm-item-hover-bg);
}

.impm-item-hover-underline .impm-menu > li > a:hover .impm-link-label,
.impm-item-hover-color-underline .impm-menu > li > a:hover .impm-link-label {
	background-size: 100% 2px;
}

.impm-chevron-hover-left .impm-menu .impm-has-panel > a:hover .impm-panel-icon {
	transform: translateX(calc(var(--impm-chevron-hover-distance) * -1));
}

.impm-chevron-hover-right .impm-menu .impm-has-panel > a:hover .impm-panel-icon {
	transform: translateX(var(--impm-chevron-hover-distance));
}

.impm-menu .sub-menu,
.impm-content-panel {
	position: absolute;
	z-index: calc(var(--impm-z) + 1);
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	display: flex;
	flex-direction: column;
	height: 100% !important;
	max-height: none !important;
	visibility: hidden;
	transform: translateX(100%);
	opacity: 1;
	will-change: opacity, transform;
	transition: opacity var(--impm-sub-duration) var(--impm-sub-ease) var(--impm-sub-delay), transform var(--impm-sub-duration) var(--impm-sub-ease) var(--impm-sub-delay), visibility 0s linear calc(var(--impm-sub-duration) + var(--impm-sub-delay));
}

.impm-mode-dropdown .impm-menu .sub-menu,
.impm-mode-dropdown .impm-content-panel {
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	width: 100% !important;
	height: 100% !important;
	border-radius: var(--impm-radius);
}

.impm-submenu-animation-slide-left .impm-menu .sub-menu,
.impm-submenu-animation-slide-left .impm-content-panel { transform: translateX(-100%); }
.impm-submenu-animation-slide-up .impm-menu .sub-menu,
.impm-submenu-animation-slide-up .impm-content-panel { transform: translateY(100%); }
.impm-submenu-animation-slide-down .impm-menu .sub-menu,
.impm-submenu-animation-slide-down .impm-content-panel { transform: translateY(-100%); }
.impm-submenu-animation-fade .impm-menu .sub-menu,
.impm-submenu-animation-fade .impm-content-panel { opacity: 0; transform: none; }
.impm-submenu-animation-scale .impm-menu .sub-menu,
.impm-submenu-animation-scale .impm-content-panel { opacity: 0; transform: scale(.94); transform-origin: center; }
.impm-submenu-animation-flip .impm-menu .sub-menu,
.impm-submenu-animation-flip .impm-content-panel { opacity: 0; transform: perspective(1000px) rotateY(18deg); transform-origin: right center; }
.impm-submenu-animation-none .impm-menu .sub-menu,
.impm-submenu-animation-none .impm-content-panel { transform: none; transition: none; }

.impm-content-fit .impm-content-panel {
	overflow: hidden;
}

.impm-menu .sub-menu.impm-panel-active,
.impm-content-panel.impm-panel-active {
	visibility: visible;
	transform: none;
	opacity: 1;
	transition-delay: var(--impm-sub-delay), var(--impm-sub-delay), 0s;
}

.impm-block-content {
	width: 100%;
	max-width: none;
	min-height: 0;
	height: auto;
	flex: 0 0 auto;
	color: var(--impm-panel-text);
	transform-origin: top left;
	transition: transform 220ms ease;
}

.impm-content-panel .impm-block-content {
	width: auto;
	margin: var(--impm-sub-pad-top) var(--impm-sub-pad-right) var(--impm-sub-pad-bottom) var(--impm-sub-pad-left);
}

.impm-content-panel {
	overflow: hidden;
}

.impm-submenu-viewport {
	flex: 1 1 auto;
	width: 100%;
	max-width: none;
	min-height: 0;
	height: var(--impm-panel-content-height);
	overflow-x: hidden;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
}

.impm-submenu-page {
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	width: 100%;
	min-height: var(--impm-panel-content-height);
	padding: 0;
}

.impm-submenu-align-top .impm-content-panel .impm-submenu-page {
	justify-content: flex-start;
}

.impm-submenu-align-center .impm-content-panel .impm-submenu-page {
	justify-content: center;
}

.impm-submenu-align-bottom .impm-content-panel .impm-submenu-page {
	justify-content: flex-end;
}

.impm-content-fit .impm-submenu-viewport {
	overflow: hidden;
}

.impm-back-item {
	width: auto !important;
	min-height: 0 !important;
	margin: 0 0 var(--impm-back-gap) !important;
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
}

.impm-back {
	display: inline-flex;
	flex: 0 0 auto;
	gap: 8px;
	align-items: center;
	align-self: flex-start;
	min-height: 0;
	height: auto;
	margin-top: 0;
	margin-bottom: var(--impm-back-gap);
	padding: var(--impm-back-pad-top) var(--impm-back-pad-right) var(--impm-back-pad-bottom) var(--impm-back-pad-left);
	border: 0 !important;
	border-radius: var(--impm-back-radius);
	color: var(--impm-back) !important;
	font: inherit;
	font-size: var(--impm-back-font);
	font-weight: var(--impm-back-weight);
	cursor: pointer;
	line-height: 1.2;
	background: var(--impm-back-bg) !important;
	box-shadow: none !important;
	appearance: none;
	-webkit-appearance: none;
	transform: translateY(var(--impm-back-offset));
	transition: color 180ms ease, background 180ms ease, opacity 180ms ease, transform 180ms ease;
}

.impm-menu .sub-menu {
	gap: 0;
}

.impm-menu .sub-menu > li:not(.impm-back-item) + li:not(.impm-back-item) {
	margin-top: var(--impm-gap);
}

.impm-menu .sub-menu > .impm-back-item .impm-back {
	margin: 0;
}

.impm-back-fa {
	flex: 0 0 auto;
	font-size: var(--impm-back-icon-size);
	-webkit-text-stroke: calc((var(--impm-back-icon-line) - 2px) * .18) currentColor;
}

.impm-back:hover {
	color: var(--impm-back-hover) !important;
	background: var(--impm-back-hover-bg) !important;
}

.impm-back-icon-none .impm-back-fa { display: none; }
.impm-back-position-center .impm-menu .sub-menu .impm-back { margin-top: auto; }
.impm-back-position-bottom .sub-menu > .impm-back-item { order: 99; margin-top: auto; margin-bottom: 0 !important; }
.impm-back-position-center .sub-menu > .impm-back-item { margin-top: auto; }
.impm-back-position-center .sub-menu > .impm-back-item ~ li:last-child { margin-bottom: auto; }
.impm-back-position-top .impm-content-panel,
.impm-back-position-top .impm-menu .sub-menu { justify-content: flex-start !important; }
.impm-back-position-top .impm-content-panel > .impm-back { margin-top: var(--impm-back-top-space); }
.impm-back-position-top .sub-menu > .impm-back-item { margin-top: var(--impm-back-top-space) !important; }
.impm-back-animation-slide .impm-back:hover { transform: translate(-5px, var(--impm-back-offset)); }
.impm-back-animation-pulse .impm-back:hover { transform: translateY(var(--impm-back-offset)) scale(1.04); }
.impm-back-animation-fade .impm-back:hover { opacity: .65; }

.impm-toggle:focus:not(:focus-visible),
.impm-menu > li > a:focus:not(:focus-visible),
.impm-menu .sub-menu > li > a:focus:not(:focus-visible),
.impm-back:focus:not(:focus-visible) {
	outline: 0 !important;
	box-shadow: none !important;
}

.impm-back:focus {
	outline: 0 !important;
	box-shadow: none !important;
}

.impm-toggle:focus-visible,
.impm-menu > li > a:focus-visible,
.impm-menu .sub-menu > li > a:focus-visible,
.impm-back:focus-visible {
	outline: 2px solid currentColor !important;
	outline-offset: 3px;
	box-shadow: none !important;
}

/* Beweging wordt expliciet door JavaScript uitgevoerd, zodat theme-transitions niet overrulen. */
.impm-drawer,
.impm-menu .sub-menu,
.impm-content-panel {
	transition: none !important;
}
