:root {
	--modal-view-controller-top-offset: 0;

	--popover-arrow-size: 14.14px;
	--popover-arrow-size-sqrt: 5.47722px;
	--popover-background-color: rgba(255, 255, 255, 1);
}

view-controller {
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;
	background-color: #FFFFFF;
	display: none;
}

view-controller.visible {
	display: block;
}

.modal-container {
	position: fixed;
	top: 0;
	left: 0;
	width: 100vw;
	height: 100vh;
	background-color: rgba(0, 0, 0, 0.4);
	z-index: 100000;
	display: none;
	text-align: center;
	--navigation-bar-size: 55px;
}

.modal-container.visible {
	display: block;
}

.vertical-centerer {
	display: inline-block;
	height: 100%;
	pointer-events: none;
	width: 0;
	vertical-align: middle;
}

.modal-container > view-controller.visible {
	display: inline-block;
	position: relative;
	width: 100vw;
	max-width: 1000px;
	max-height: calc(100vh - var(--modal-view-controller-top-offset));
	top: var(--modal-view-controller-top-offset);
	border-radius: 10px;
	box-shadow: 4px 8px 30px rgba(0, 0, 0, 0.4);
	background-color: #FFFFFF;
	vertical-align: middle;
	padding-bottom: 1em;
}

view-controller-title {
	display: block;
	padding: 12px;
	background-color: #FFFFFF;
	border-bottom: 1px solid #EEEEEE;
	text-align: left;
	position: relative;
}

.modal-container > view-controller view-controller-title {
	border-radius: 12px 12px 0 0;
}

.popover-container, .tooltip-container {
	position: fixed;
	top: 0;
	left: 0;
	width: 100vw;
	height: 100vh;
	display: none;
}

.popover-container {
	z-index: 10001;
}

.tooltip-container {
	z-index: 10011;
	pointer-events: none;
}

.popover-container.visible {
	display: block;
}

.popover-container.visible.click-through {
	pointer-events: none;
}

popover, tooltip, context-menu {
	display: block;
	position: absolute;--navigation-bar-size: 40px;
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
    background-color: var(--popover-background-color);
    border-radius: 8px;
	transition: opacity 0.6s;
	opacity: 1;
}

popover.dismissing, tooltip.dismissing, context-menu.dismissing {
	opacity: 0;
}

popover .popover-content {
	padding: 1em;
}

tooltip .popover-content {
	padding: 10px;
}

context-menu .popover-content {
	padding: 0.4em;
}

popover .popover-arrow-container, tooltip .popover-arrow-container, context-menu .popover-arrow-container {
	position: absolute;
	width: 0;
	height: 0;
}

popover.left .popover-arrow-container, tooltip.left .popover-arrow-container, context-menu.left .popover-arrow-container {
	right: 0;
	top: 50%;
}

popover.right .popover-arrow-container, tooltip.right .popover-arrow-container, context-menu.right .popover-arrow-container {
	left: 0;
	top: 50%;
}

popover.top .popover-arrow-container, tooltip.top .popover-arrow-container, context-menu.top .popover-arrow-container {
	left: 50%;
	bottom: 0;
}

popover.bottom .popover-arrow-container, tooltip.bottom .popover-arrow-container, context-menu.bottom .popover-arrow-container {
	left: 50%;
	top: 0;
}

popover .popover-arrow-box, tooltip .popover-arrow-box, context-menu .popover-arrow-box {
	position: absolute;
	overflow: hidden;
}

popover.left .popover-arrow-box, tooltip.left .popover-arrow-box, context-menu.left .popover-arrow-box {
	width: var(--popover-arrow-size);
	height: calc(var(--popover-arrow-size) * 2);
	top: calc(0px - var(--popover-arrow-size));
	left: 0;
}

popover.right .popover-arrow-box, tooltip.right .popover-arrow-box, context-menu.right .popover-arrow-box {
	width: var(--popover-arrow-size);
	height: calc(var(--popover-arrow-size) * 2);
	top: calc(0px - var(--popover-arrow-size));
	right: 0;
}

popover.top .popover-arrow-box, tooltip.top .popover-arrow-box, context-menu.top .popover-arrow-box {
	width: calc(var(--popover-arrow-size) * 2);
	height: var(--popover-arrow-size);
	top: 0;
	left: calc(0px - var(--popover-arrow-size));
}

popover.bottom .popover-arrow-box, tooltip.bottom .popover-arrow-box, context-menu.bottom .popover-arrow-box {
	width: calc(var(--popover-arrow-size) * 2);
	height: var(--popover-arrow-size);
	bottom: 0;
	left: calc(0px - var(--popover-arrow-size));
}

popover.right .popover-arrow-tip, tooltip.right .popover-arrow-tip, context-menu.right .popover-arrow-tip {
	position: absolute;
	top: 3px;
	left: 5px;
	width: 22px;
	height: 22px;
	transform: rotate(45deg);
	background-color: var(--popover-background-color);
}

popover.left .popover-arrow-tip, tooltip.left .popover-arrow-tip, context-menu.left .popover-arrow-tip {
	position: absolute;
	top: 3px;
	left: -13px;
	width: 22px;
	height: 22px;
	transform: rotate(45deg);
	background-color: var(--popover-background-color);
}

popover.bottom .popover-arrow-tip, tooltip.bottom .popover-arrow-tip, context-menu.bottom .popover-arrow-tip {
	position: absolute;
	top: 5px;
	left: 3px;
	width: 22px;
	height: 22px;
	transform: rotate(45deg);
	background-color: var(--popover-background-color);
}

popover.top .popover-arrow-tip, tooltip.top .popover-arrow-tip, context-menu.top .popover-arrow-tip {
	position: absolute;
	top: -13px;
	left: 3px;
	width: 22px;
	height: 22px;
	transform: rotate(45deg);
	background-color: var(--popover-background-color);
}

context-menu .popover-content * {
	display: block;
	padding: 0.75em;
	padding-top: 0.3em;
	padding-bottom: 0.3em;
}

context-menu menu-option[disabled] {
	opacity: 0.5;
	pointer-events: none;
}

context-menu menu-option:hover {
	background-color: rgba(0, 0, 0, 0.07);
}

context-menu menu-option:active {
	background-color: rgba(0, 0, 0, 0.14);
}

context-menu menu-option.destructive {
	color: var(--destructive-action-color);
}

context-menu menu-option {
	border-radius: 0.25em;
}