:root {
	--popup-accent: #2684ff;
	--popup-surface: #1c2a36;
	--popup-surface-deep: #14212b;
	--popup-edge: #3d5870;
	--popup-divider: #304657;
	--popup-ink: #e5eef6;
	--popup-muted: #b7c8d6;
	--popup-shadow: 0 0.75rem 1.75rem rgb(7 18 28 / 28%);
	--popup-radius: 0.5rem;
}

.operational-window,
.operational-window-host {
	--operational-window-accent: var(--popup-accent);
	--operational-window-edge: var(--popup-edge);
	--operational-window-ink: var(--popup-ink);
	--operational-window-surface: var(--popup-surface);
	position: fixed;
	display: flex;
	flex-direction: column;
	box-sizing: border-box;
	max-width: calc(100vw - 1.5rem);
	max-height: calc(100vh - 1.5rem);
	min-height: 0;
	overflow: hidden;
	background: var(--operational-window-surface);
	border: 1px solid var(--operational-window-edge);
	border-radius: var(--popup-radius);
	box-shadow: var(--popup-shadow);
	color: var(--operational-window-ink);
	transition: border-color 120ms ease-out, box-shadow 120ms ease-out;
}

.operational-window.is-active,
.operational-window-host.is-active {
	border-color: #5aa2ff;
	box-shadow: 0 0 0 1px rgb(38 132 255 / 30%), 0 1rem 2.25rem rgb(7 18 28 / 38%);
}

.operational-window.is-resizing,
.operational-window-host.is-resizing {
	opacity: 0.76;
}

.operational-window__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	min-height: 2.45rem;
	padding: 0.45rem 0.55rem 0.45rem 0.8rem;
	background: var(--popup-surface);
	border-bottom: 1px solid var(--popup-divider);
	color: #eaf4fc;
	cursor: grab;
	touch-action: none;
	user-select: none;
}

.operational-window.is-dragging .operational-window__header {
	cursor: grabbing;
}

.operational-window[data-draggable=false] .operational-window__header {
	cursor: default;
}

.operational-window__title {
	margin: 0;
	overflow: hidden;
	font-size: 0.875rem;
	font-weight: 650;
	letter-spacing: 0.02em;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.operational-window__close {
	display: grid;
	width: 1.7rem;
	height: 1.7rem;
	padding: 0;
	place-items: center;
	border: 1px solid transparent;
	border-radius: 0.25rem;
	background: transparent;
	color: #dbe7f2;
	font-size: 1.45rem;
	line-height: 1;
	transition: background-color 120ms ease-out, border-color 120ms ease-out, color 120ms ease-out;
}

.operational-window__close:hover {
	border-color: rgb(255 255 255 / 24%);
	background: rgb(255 255 255 / 12%);
	color: #fff;
}

.operational-window__close:focus-visible {
	outline: 2px solid #0d6efd;
	outline-offset: 1px;
}

.operational-window__body {
	min-height: 0;
	flex: 1 1 auto;
	padding: 0.85rem;
	background: var(--popup-surface);
	color: var(--operational-window-ink);
	overflow: auto;
	overscroll-behavior: contain;
}

.operational-window__body > :first-child {
	margin-top: 0;
}

.operational-window__body > :last-child {
	margin-bottom: 0;
}

.operational-window--image-display .operational-window__body {
	display: grid;
	place-items: center;
	padding: 0.65rem;
}

.operational-window--image-display .operational-window__body > img {
	display: block;
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
}

.operational-window__footer {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: 0.45rem;
	padding: 0.6rem 0.8rem;
	background: var(--popup-surface);
	border-top: 1px solid var(--popup-divider);
}

.operational-window .text-muted {
	color: var(--popup-muted) !important;
}

.operational-window__footer .btn-outline-secondary {
	--bs-btn-color: #dbe7f2;
	--bs-btn-border-color: #587086;
	--bs-btn-hover-color: #f2f8fc;
	--bs-btn-hover-bg: #344c60;
	--bs-btn-hover-border-color: #6f8aa1;
	--bs-btn-active-color: #f2f8fc;
	--bs-btn-active-bg: #2a4052;
	--bs-btn-active-border-color: #6f8aa1;
}

.operational-window__footer .btn.is-busy::after {
	display: inline-block;
	width: 0.8em;
	height: 0.8em;
	margin-left: 0.4rem;
	border: 0.12em solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	content: "";
	vertical-align: -0.08em;
	animation: operational-window-spin 700ms linear infinite;
}

.operational-window__resize-grip {
	position: absolute;
	right: 0;
	bottom: 0;
	z-index: 2;
	width: 1.75rem;
	height: 1.75rem;
	padding: 0;
	border: 0;
	border-radius: 0.2rem 0 0.4rem;
	background: transparent;
	color: inherit;
	cursor: nwse-resize;
	touch-action: none;
	transition: background-color 160ms ease-out;
}

.operational-window__resize-grip::after {
	position: absolute;
	right: 0.42rem;
	bottom: 0.42rem;
	width: 0.68rem;
	height: 0.68rem;
	border-right: 2px solid #607080;
	border-bottom: 2px solid #607080;
	content: "";
}

.operational-window__resize-grip:hover,
.operational-window__resize-grip:active {
	background: rgb(13 110 253 / 12%);
}

.operational-window__resize-grip:focus-visible {
	outline: 2px solid var(--operational-window-accent);
	outline-offset: -3px;
}

.operational-window__resize-preview {
	position: fixed;
	box-sizing: border-box;
	pointer-events: none;
	background: rgb(38 132 255 / 7%);
	border: 2px dashed #2684ff;
	border-radius: 0.5rem;
	box-shadow: 0 0 0 1px rgb(255 255 255 / 70%), 0 0 1rem rgb(38 132 255 / 24%);
}

@keyframes operational-window-spin {
	to {
		transform: rotate(1turn);
	}
}

@media (max-width: 520px) {
	.operational-window {
		max-width: calc(100vw - 1.5rem);
	}
}

@media (pointer: coarse) {
	.operational-window__resize-grip {
		width: 2.25rem;
		height: 2.25rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.operational-window,
	.operational-window-host,
	.operational-window__close,
	.operational-window__resize-grip {
		transition: none;
	}
}
