:root {
	/* Light Theme Colors */
	--bg-primary: #ffffff;
	--bg-secondary: #f8f9fa;
	--bg-tertiary: #f1f3f5;
	--bg-hover: #e9ecef;
	--bg-active: #dee2e6;

	--text-primary: #212529;
	--text-secondary: #495057;
	--text-tertiary: #868e96;
	--text-disabled: #adb5bd;

	--border-light: #e9ecef;
	--border-medium: #dee2e6;
	--border-dark: #ced4da;

	--accent-primary: #4c6ef5;
	--accent-hover: #4263eb;
	--accent-light: #748ffc;

	--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.06);
	--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08);
	--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.12);

	--radius-sm: 4px;
	--radius-md: 6px;
	--radius-lg: 8px;

	--spacing-xs: 4px;
	--spacing-sm: 8px;
	--spacing-md: 12px;
	--spacing-lg: 16px;
	--spacing-xl: 24px;
}

/* Dark Theme */
:root.dark-theme,
body.dark-theme {
	--bg-primary: #1a1b1e;
	--bg-secondary: #25262b;
	--bg-tertiary: #2c2e33;
	--bg-hover: #373a40;
	--bg-active: #424549;

	--text-primary: #e9ecef;
	--text-secondary: #c1c2c5;
	--text-tertiary: #909296;
	--text-disabled: #5c5f66;

	--border-light: #2c2e33;
	--border-medium: #373a40;
	--border-dark: #424549;

	--accent-primary: #5c7cfa;
	--accent-hover: #748ffc;
	--accent-light: #4c6ef5;

	--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
	--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);
	--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);
}

body,
html {
	overflow: hidden;
	height: 100%;
}

body {
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Inter", "Helvetica Neue", Arial, sans-serif;
	background-color: var(--bg-secondary);
	color: var(--text-primary);
	transition: background-color 0.2s ease, color 0.2s ease;
}

#paperCanvas {
	position: absolute;
	width: 100%;
	height: 100%;
	top: 0;
	left: 0;
	background-color: var(--bg-secondary);
}

body,
input,
button,
textarea,
label {
	font-size: 13px;
	line-height: 1.5;
	font-weight: 400;
}

input,
select {
	border: 1px solid var(--border-medium);
	outline: none;
	padding: 0 var(--spacing-sm);
	height: 28px;
	box-shadow: none;
	background-color: var(--bg-primary);
	color: var(--text-primary);
	border-radius: var(--radius-sm);
	transition: all 0.15s ease;
}

input:hover,
select:hover {
	border-color: var(--border-dark);
}

input:focus,
select:focus {
	border-color: var(--accent-primary);
	box-shadow: 0 0 0 3px rgba(76, 110, 245, 0.1);
}

.hidden {
	display: none;
}

.loadingScreen {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-color: var(--bg-primary);
	opacity: 1;
	z-index: 200;
	transition: opacity 0.4s ease;
}

.loadingScreen.disabled {
	opacity: 0;
}

.loadingScreen .panel {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	background-color: transparent;
	color: var(--text-secondary);
	display: flex;
	align-items: center;
	font-weight: 500;
	letter-spacing: 0.01em;
	gap: 8px;
}

.loading-text {
	font-size: 16px;
}

.loading-dots {
	display: inline-flex;
	gap: 4px;
	align-items: center;
}

.loading-dots .dot {
	width: 6px;
	height: 6px;
	background-color: var(--text-secondary);
	border-radius: 50%;
	animation: dotPulse 1.4s infinite ease-in-out;
}

.loading-dots .dot:nth-child(1) {
	animation-delay: 0s;
}

.loading-dots .dot:nth-child(2) {
	animation-delay: 0.2s;
}

.loading-dots .dot:nth-child(3) {
	animation-delay: 0.4s;
}

@keyframes dotPulse {

	0%,
	60%,
	100% {
		opacity: 0.3;
		transform: scale(0.8);
	}

	30% {
		opacity: 1;
		transform: scale(1.2);
	}
}

.zoom-in {
	cursor: -webkit-zoom-in;
	cursor: zoom-in;
}

.zoom-out {
	cursor: -webkit-zoom-out;
	cursor: zoom-out;
}

.grab {
	cursor: -moz-grab;
	cursor: -webkit-grab;
	cursor: grab;
}

.grabbing {
	cursor: -moz-grabbing;
	cursor: -webkit-grabbing;
	cursor: grabbing;
}

.cursor-select {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><path fill="%23fff" d="M27.69,22.27l-6.14-6.13,5-3.33c.33-.22.5-.61.44-1-.06-.38-.33-.7-.7-.81L6.29,5c-.23-.08-.48-.08-.71.01-.51.21-.76.79-.56,1.3l6,20c.11.37.43.64.81.7.39.06.78-.11,1-.44l3.33-5,6.13,6.14c.19.19.44.29.71.29.26-.01.51-.12.69-.31l4-4,.01-.01c.38-.39.38-1.02-.01-1.41ZM23,25.59l-7.15-7.16-3.5,5.25L7.49,7.49l16.19,4.86-5.25,3.5,7.16,7.15-2.59,2.59Z"/><polygon points="25.59,23 23,25.59 15.85,18.43 12.35,23.68 7.49,7.49 23.68,12.35 18.43,15.85 25.59,23"/></svg>') 0 0, crosshair;
}

.cursor-bezier {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><path fill="%23fff" d="M30.42,27.42l-3,3c-.39.39-.91.58-1.42.58s-1.03-.19-1.42-.58l-5.41-5.42h-2.08c-5.08,0-9.63-3.23-11.32-8.04L1.12,3.66c-.16-.42-.16-.9.01-1.35.16-.48.53-.89,1.01-1.12.49-.23,1.03-.25,1.53-.07l13.29,4.65c4.81,1.69,8.04,6.24,8.04,11.32v2.08l5.42,5.41c.78.78.78,2.06,0,2.84Z"/><path d="M29.71,25.29l-5.71-5.7v-2.5c0-4.67-2.96-8.83-7.37-10.38L3.33,2.06c-.52-.19-1.09.09-1.27.61-.08.21-.08.45,0,.66l4.65,13.3c1.55,4.41,5.71,7.37,10.38,7.37h2.5l5.7,5.71c.39.39,1.03.39,1.42,0l3-3c.39-.39.39-1.03,0-1.42ZM26,27.59l-5.29-5.3c-.19-.18-.44-.29-.71-.29h-2.91c-3.82,0-7.22-2.42-8.49-6.03l-3.21-9.16,9.2,9.19,1.41-1.41L6.81,5.39l9.16,3.21c3.61,1.27,6.03,4.67,6.03,8.49v2.91c0,.27.11.52.29.71l5.3,5.29-1.59,1.59Z"/><path fill="%23fff" d="M27.59,26l-1.59,1.59-5.29-5.3c-.19-.18-.44-.29-.71-.29h-2.91c-3.82,0-7.22-2.42-8.49-6.03l-3.21-9.16,9.2,9.19,1.41-1.41L6.81,5.39l9.16,3.21c3.61,1.27,6.03,4.67,6.03,8.49v2.91c0,.27.11.52.29.71l5.3,5.29Z"/></svg>') 0 0, crosshair;
}

.cursor-bezier-add {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><rect fill="%23fff" x="25" width="4" height="10" rx="1" ry="1" transform="translate(22 32) rotate(-90)"/><rect fill="%23fff" x="25" width="4" height="10" rx="1" ry="1"/><path fill="%23fff" d="M30.42,27.42l-3,3c-.39.39-.91.58-1.42.58s-1.03-.19-1.42-.58l-5.41-5.42h-2.08c-5.08,0-9.63-3.23-11.32-8.04L1.12,3.66c-.16-.42-.16-.9.01-1.35.16-.48.53-.89,1.01-1.12.49-.23,1.03-.25,1.53-.07l13.29,4.65c4.81,1.69,8.04,6.24,8.04,11.32v2.08l5.42,5.41c.78.78.78,2.06,0,2.84Z"/><path d="M29.71,25.29l-5.71-5.7v-2.5c0-4.67-2.96-8.83-7.37-10.38L3.33,2.06c-.52-.19-1.09.09-1.27.61-.08.21-.08.45,0,.66l4.65,13.3c1.55,4.41,5.71,7.37,10.38,7.37h2.5l5.7,5.71c.39.39,1.03.39,1.42,0l3-3c.39-.39.39-1.03,0-1.42ZM26,27.59l-5.29-5.3c-.19-.18-.44-.29-.71-.29h-2.91c-3.82,0-7.22-2.42-8.49-6.03l-3.21-9.16,9.2,9.19,1.41-1.41L6.81,5.39l9.16,3.21c3.61,1.27,6.03,4.67,6.03,8.49v2.91c0,.27.11.52.29.71l5.3,5.29-1.59,1.59Z"/><path fill="%23fff" d="M27.59,26l-1.59,1.59-5.29-5.3c-.19-.18-.44-.29-.71-.29h-2.91c-3.82,0-7.22-2.42-8.49-6.03l-3.21-9.16,9.2,9.19,1.41-1.41L6.81,5.39l9.16,3.21c3.61,1.27,6.03,4.67,6.03,8.49v2.91c0,.27.11.52.29.71l5.3,5.29Z"/><line fill="none" stroke="%23000" stroke-width="2" stroke-miterlimit="10" x1="31" y1="5" x2="23" y2="5"/><line fill="none" stroke="%23000" stroke-width="2" stroke-miterlimit="10" x1="27" y1="1" x2="27" y2="9"/></svg>') 0 0, crosshair;
}

.cursor-bezier-close {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><path fill="%23fff" d="M30.42,27.42l-3,3c-.39.39-.91.58-1.42.58s-1.03-.19-1.42-.58l-5.41-5.42h-2.08c-5.08,0-9.63-3.23-11.32-8.04L1.12,3.66c-.16-.42-.16-.9.01-1.35.16-.48.53-.89,1.01-1.12.49-.23,1.03-.25,1.53-.07l13.29,4.65c4.81,1.69,8.04,6.24,8.04,11.32v2.08l5.42,5.41c.78.78.78,2.06,0,2.84Z"/><path d="M29.71,25.29l-5.71-5.7v-2.5c0-4.67-2.96-8.83-7.37-10.38L3.33,2.06c-.52-.19-1.09.09-1.27.61-.08.21-.08.45,0,.66l4.65,13.3c1.55,4.41,5.71,7.37,10.38,7.37h2.5l5.7,5.71c.39.39,1.03.39,1.42,0l3-3c.39-.39.39-1.03,0-1.42ZM26,27.59l-5.29-5.3c-.19-.18-.44-.29-.71-.29h-2.91c-3.82,0-7.22-2.42-8.49-6.03l-3.21-9.16,9.2,9.19,1.41-1.41L6.81,5.39l9.16,3.21c3.61,1.27,6.03,4.67,6.03,8.49v2.91c0,.27.11.52.29.71l5.3,5.29-1.59,1.59Z"/><path fill="%23fff" d="M27.59,26l-1.59,1.59-5.29-5.3c-.19-.18-.44-.29-.71-.29h-2.91c-3.82,0-7.22-2.42-8.49-6.03l-3.21-9.16,9.2,9.19,1.41-1.41L6.81,5.39l9.16,3.21c3.61,1.27,6.03,4.67,6.03,8.49v2.91c0,.27.11.52.29.71l5.3,5.29Z"/><circle fill="none" stroke="%23fff" stroke-width="4" stroke-miterlimit="10" cx="27" cy="5" r="3"/><circle fill="none" stroke="%23000" stroke-width="2" stroke-miterlimit="10" cx="27" cy="5" r="3"/></svg>') 0 0, crosshair;
}

.cursor-bezier-remove {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><rect fill="%23fff" x="25" width="4" height="10" rx="1" ry="1" transform="translate(22 32) rotate(-90)"/><path fill="%23fff" d="M30.42,27.42l-3,3c-.39.39-.91.58-1.42.58s-1.03-.19-1.42-.58l-5.41-5.42h-2.08c-5.08,0-9.63-3.23-11.32-8.04L1.12,3.66c-.16-.42-.16-.9.01-1.35.16-.48.53-.89,1.01-1.12.49-.23,1.03-.25,1.53-.07l13.29,4.65c4.81,1.69,8.04,6.24,8.04,11.32v2.08l5.42,5.41c.78.78.78,2.06,0,2.84Z"/><path d="M29.71,25.29l-5.71-5.7v-2.5c0-4.67-2.96-8.83-7.37-10.38L3.33,2.06c-.52-.19-1.09.09-1.27.61-.08.21-.08.45,0,.66l4.65,13.3c1.55,4.41,5.71,7.37,10.38,7.37h2.5l5.7,5.71c.39.39,1.03.39,1.42,0l3-3c.39-.39.39-1.03,0-1.42ZM26,27.59l-5.29-5.3c-.19-.18-.44-.29-.71-.29h-2.91c-3.82,0-7.22-2.42-8.49-6.03l-3.21-9.16,9.2,9.19,1.41-1.41L6.81,5.39l9.16,3.21c3.61,1.27,6.03,4.67,6.03,8.49v2.91c0,.27.11.52.29.71l5.3,5.29-1.59,1.59Z"/><path fill="%23fff" d="M27.59,26l-1.59,1.59-5.29-5.3c-.19-.18-.44-.29-.71-.29h-2.91c-3.82,0-7.22-2.42-8.49-6.03l-3.21-9.16,9.2,9.19,1.41-1.41L6.81,5.39l9.16,3.21c3.61,1.27,6.03,4.67,6.03,8.49v2.91c0,.27.11.52.29.71l5.3,5.29Z"/><line fill="none" stroke="%23000" stroke-width="2" stroke-miterlimit="10" x1="31" y1="5" x2="23" y2="5"/></svg>') 0 0, crosshair;
}

.cursor-detailselect {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><path fill="%23fff" d="M27.95,12.64c-.1-.27-.31-.48-.58-.58h-.03L5.34,4.06c-.52-.19-1.09.08-1.28.6-.08.22-.08.46,0,.68l8,22c.14.4.52.66.94.66.41,0,.78-.25.93-.63l3.84-9.6,9.6-3.84c.52-.2.78-.77.58-1.29ZM16.63,16.06l-.4.16-.16.4-3.07,7.58L6.67,6.67l17.53,6.33-7.57,3.06Z"/><polygon points="24.2,13 16.63,16.06 16.23,16.22 16.07,16.62 13,24.2 6.67,6.67 24.2,13"/></svg>') 0 0, crosshair;
}

.cursor-eyedropper {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><path fill="%23fff" d="M30.4199829,9.4199829l-2.5899658,2.5800171.5799561.5800171c.1900024.1900024.3000488.4400024.3000488.7099609,0,.2600098-.1000366.5200195-.2900391.710022l-1.4199829,1.4199829c-.1900024.1799927-.4400024.2900391-.710022.2900391-.2699585,0-.5199585-.1100464-.7099609-.3000488l-.5800171-.5799561-12.5800171,12.5899658c-.3800049.3699951-.8800049.5800171-1.4199829.5800171h-1.1799927l-2.4100342,2.4099731c-.3899536.3900146-.8999634.5800171-1.4099731.5800171-.5200195,0-1.0300293-.1900024-1.4199829-.5800171l-3-3c-.3699951-.3799438-.5800171-.8799438-.5800171-1.4099731,0-.539978.210022-1.039978.5800171-1.4199829l2.4199829-2.4100342v-1.1699829c0-.539978.210022-1.039978.5800171-1.4199829l12.5899658-12.5800171-.5799561-.5800171c-.1900024-.1900024-.3000488-.4400024-.3000488-.7099609,0-.2600098.1100464-.5200195.2900391-.710022l1.4199829-1.4199829c.1900024-.1799927.460022-.3200073.710022-.2900391.2699585,0,.5199585.1100464.7099609.3000488l.5800171.5799561,2.5900269-2.5899658c.7599487-.75,2.0699463-.75,2.8299561,0l5,5c.0400391.039978.0700073.0799561.1000366.1199951.6699829.789978.6399536,1.9699707-.1000366,2.7199707Z"/><path d="M29.710022,8.710022l-3.3000488,3.289978,1.3000488,1.289978-1.4200439,1.4200439-1.289978-1.3000488-13.289978,13.3000488c-.1887207.1871338-.4442139.2915039-.710022.289978h-1.5900269l-2.7099609,2.7000122c-.3900757.3876953-1.0199585.3876953-1.4100342,0l-3-3c-.3876953-.3900757-.3876953-1.0199585,0-1.4100342l2.710022-2.6999512v-1.5900269c-.0015259-.2658081.1028442-.5213013.289978-.710022l13.3000488-13.289978-1.3000488-1.289978,1.4200439-1.4200439,1.289978,1.3000488,3.2999878-3.3000488c.3900757-.3876953,1.0199585-.3876953,1.4100342,0l5,5v.0100098c.3876953.3900757.3876953,1.0199585,0,1.4100342ZM23.5900269,12l-3.5900269-3.5900269-13,13v2l-2.5900269,2.5900269,1.5900269,1.5900269,2.5900269-2.5900269h2l13-13ZM27.5900269,8l-3.5900269-3.5900269-2.5900269,2.5900269,3.5900269,3.5900269,2.5900269-2.5900269Z"/></svg>') 0 0, crosshair;
}

.cursor-eyedropper-filled {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><path fill="%23fff" d="M30.4199829,9.4199829l-2.5899658,2.5800171.5799561.5800171c.1900024.1900024.3000488.4400024.3000488.7099609,0,.2600098-.1000366.5200195-.2900391.710022l-1.4199829,1.4199829c-.1900024.1799927-.4400024.2900391-.710022.2900391-.2699585,0-.5199585-.1100464-.7099609-.3000488l-.5800171-.5799561-12.5800171,12.5899658c-.3800049.3699951-.8800049.5800171-1.4199829.5800171h-1.1799927l-2.4100342,2.4099731c-.3899536.3900146-.8999634.5800171-1.4099731.5800171-.5200195,0-1.0300293-.1900024-1.4199829-.5800171l-3-3c-.3699951-.3799438-.5800171-.8799438-.5800171-1.4099731,0-.539978.210022-1.039978.5800171-1.4199829l2.4199829-2.4100342v-1.1699829c0-.539978.210022-1.039978.5800171-1.4199829l12.5899658-12.5800171-.5799561-.5800171c-.1900024-.1900024-.3000488-.4400024-.3000488-.7099609,0-.2600098.1100464-.5200195.2900391-.710022l1.4199829-1.4199829c.1900024-.1799927.460022-.3200073.710022-.2900391.2699585,0,.5199585.1100464.7099609.3000488l.5800171.5799561,2.5900269-2.5899658c.7599487-.75,2.0699463-.75,2.8299561,0l5,5c.0400391.039978.0700073.0799561.1000366.1199951.6699829.789978.6399536,1.9699707-.1000366,2.7199707Z"/><path d="M29.710022,7.2999878v-.0100098l-5-5c-.3900146-.3899536-1.0200195-.3899536-1.4100342,0l-3.2999878,3.3000488-1.289978-1.3000488-1.4200439,1.4200439,1.3000488,1.289978-10.0100098,10-3.2900391,3.289978c-.1900024.1900024-.289978.4400024-.289978.710022v1.5900269l-2.710022,2.6999512c-.3899536.3900146-.3899536,1.0200195,0,1.4100342l3,3c.3900146.3900146,1.0200195.3900146,1.4100342,0l2.7099609-2.7000122h1.5900269c.2700195,0,.5200195-.0999756.710022-.289978l9.6999512-9.710022,3.5900269-3.5900269,1.289978,1.3000488,1.4200439-1.4200439-1.3000488-1.289978,3.3000488-3.289978c.3899536-.3900146.3899536-1.0200195,0-1.4100342ZM10.5900269,25h-2l-2.5900269,2.5900269-1.5900269-1.5900269,2.5900269-2.5900269v-2l13-13,3.5900269,3.5900269-13,13ZM25,10.5900269l-3.5900269-3.5900269,2.5900269-2.5900269,3.5900269,3.5900269-2.5900269,2.5900269Z"/><polygon points="18.5900269,17 10.5900269,25 8.5900269,25 6,27.5900269 4.4099731,26 7,23.4099731 7,21.4099731 11.4099731,17 18.5900269,17"/></svg>') 0 0, crosshair;
}

.cursor-draw {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><path fill="%23fff" d="M30.710022,29.2999878l-1.4100342,1.4100342c-.2000122.1900024-.4500122.289978-.7099609.289978-.2600098,0-.5100098-.0999756-.710022-.289978l-1.9899902-1.9900513-.3500366.3500366c-.039978.0499878-.0899658.1099854-.1599731.1599731-.539978.5-1.2399902.7700195-1.9799805.7700195-.8099976,0-1.5599976-.3200073-2.1100464-.8900146L3.289978,11.1099854c-.1799927-.1900024-.289978-.4400024-.289978-.7099609v-6.4000244c0-.5499878.4500122-1,1-1h6.4000244c.2699585,0,.5199585.1099854.7099609.289978l6.9100342,6.9100342c.039978-.1799927.1300049-.3599854.2699585-.5l1.4100342-1.4100342c.2000122-.1900024.4500122-.289978.7099609-.289978.2600098,0,.5100098.0999756.710022.289978l7.5900269,7.5900269c.3899536.3900146.3899536,1.0299683,0,1.4199829l-1.4100342,1.4100342c-.1400146.1399536-.3200073.2299805-.5.2699585l2.2800293,2.2800293c.039978.039978.0999756.0899658.1499634.1599731,1.0700073,1.1700439,1.0100098,3-.1199951,4.0900269l-.3900146.3800049,1.9900513,1.9899902c.3899536.3900146.3899536,1.0299683,0,1.4199829Z"/><path d="M25.8931007,27.3069l2.6928005,2.6931,1.4141006-1.4141006-2.6928997-2.6927986,1.0928993-1.0931015c.7731991-.7359524.8033924-1.959362.06744-2.7325592-.0219212-.0230312-.0444088-.0455189-.06744-.06744L10.3999996,4h-6.3999996v6.3999996l18,18c.7360325.7731991,1.959507.8033276,2.7327042.0672951.0229816-.0218754.0454197-.0443153.0672951-.0672951,0,0,1.0930996-1.0930996,1.0931015-1.0930996ZM6,9.6000004v-3.6000004h3.6000004l17.3999996,17.3999996-3.6000004,3.6000004L6,9.6000004Z"/><rect x="18.135905" y="12.5000781" width="10.7280992" height="1.9997997" transform="translate(16.4289033 -12.6629253) rotate(45)"/></svg>') 0 0, crosshair;
}

.cursor-brush {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><path fill="%23fff" d="M29.5532227,29.5205078c1.8857422-1.9726562,1.8862305-5.0673828-.0161133-7.0576172L10.4199219,3.3457031c-1.4902344-1.5019531-3.5546875-2.3569336-5.6601562-2.3457031h-2.7597656c-.5527344,0-1,.4477539-1,1v2.7954102c0,2.0947266.8535156,4.1425781,2.3427734,5.621582l19.1201172,19.1201172c1.9438477,1.9433594,5.1162109,1.9443359,7.090332-.0166016Z"/><path d="M28.8281,28.8281002c1.5117046-1.5823803,1.5117047-4.0738201,0-5.6562004L9.7080002,4.0500002c-1.3097572-1.3168697-3.0918941-2.0550466-4.9491997-2.0500002h-2.7588005v2.7558999c-.0054169,1.8576131.7327995,3.6401372,2.0499992,4.9500003l19.1214008,19.1222c1.5613585,1.5620537,4.0933852,1.5626183,5.6554401.0012608.0004201-.0004196.0008402-.0008411.0012598-.0012608ZM13.7399998,10.9099998l-2.8285999,2.8285999-2.1213989-2.1213999,2.8281994-2.8285999,2.1217995,2.1213999ZM5.4643993,8.2915001c-.9408169-.935606-1.4681435-2.2087693-1.4643993-3.5356002v-.7558999h.7588005c1.3266449-.0035434,2.599577.5237637,3.535099,1.4644003l1.9099998,1.9099998-2.8281002,2.8285999-1.9113998-1.9115ZM24.5858998,27.4141006l-12.2607007-12.261301,2.8285999-2.8285999,12.2600002,12.2616997c.7557878.791254.7557878,2.0369453,0,2.8281994-.7807207.7809868-2.0467339.7812004-2.8277202.0004807-.0001602-.0001602-.00032-.0003204-.0004802-.0004807l.0003009.0000019Z"/></svg>') 0 0, crosshair;
}

.cursor-cloud {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><path fill="%23fff" d="M4,2c1.1027999,0,2,.8971996,2,2s-.8972001,2-2,2-2-.8971996-2-2,.8972001-2,2-2M4,0C1.7908601,0,0,1.7908592,0,4s1.7908601,4,4,4,4-1.7908592,4-4S6.2091398,0,4,0h0Z"/><path fill="%23fff" d="M31.9699707,20.4799805c.0100098,4.1500244-3.3399658,7.5100098-7.4799805,7.5200195H7.4899902c-3.6199951-.0100098-6.7199707-2.5999756-7.3599854-6.1599731-.7399902-4.0800171,1.960022-7.9800415,6.039978-8.7200317.9000244-4.7199707,5.0300293-8.1199951,9.8300171-8.1199951.6300049,0,1.25.0599976,1.8699951.1799927,4.0200195.7700195,7.1699829,3.9199829,7.9400024,7.9400024,3.5599976.6500244,6.1599731,3.7399902,6.1599731,7.3599854Z"/><path d="M7.4199219,27.0009766c-3.5356445,0-6.4433594-2.8632812-6.4873047-6.4199219-.0395508-3.2138672,2.230957-5.9418945,5.3979492-6.4863281l.6572266-.1181641.1303711-.6757812c.8144531-4.2373047,4.5268555-7.3007812,8.8378906-7.3007812.5771484-.0136719,1.1748047.0541992,1.75.1694336,3.6289062.6948242,6.4335938,3.4946289,7.1357422,7.1308594l.1298828.675293.6728516.1201172c1.7060547.2929688,3.2001953,1.2358398,4.2021484,2.6542969,1.0009766,1.4179688,1.390625,3.140625,1.0966797,4.8525391-.5400391,3.1396484-3.2255859,5.3974609-6.4033203,5.3974609H7.5c-.0263672,0-.0537109.0009766-.0800781.0009766ZM15.9560547,8c-3.3535156,0-6.2407227,2.3823242-6.8740234,5.6787109l-.3901367,2.0244141-2.015625.3613281c-2.199707.3779297-3.7709961,2.2666016-3.7436523,4.4912109.0302734,2.4804688,2.1005859,4.4658203,4.5551758,4.4443359h16.9819336c2.2636719.0048828,4.1259766-1.5429688,4.5029297-3.7373047.203125-1.1845703-.0664062-2.3769531-.7597656-3.3583984-.6933594-.9824219-1.7275391-1.6352539-2.9121094-1.8388672l-2.0322266-.3613281-.390625-2.0249023c-.5458984-2.8276367-2.7275391-5.0053711-5.5566406-5.5473633-.4399414-.0878906-.8818359-.1318359-1.3212891-.1318359h-.0439453Z"/><path d="M4,1c1.6542101,0,3,1.3457909,3,3s-1.3457899,3-3,3-3-1.3457909-3-3,1.3457899-3,3-3M4,0C1.7908601,0,0,1.7908592,0,4s1.7908601,4,4,4,4-1.7908592,4-4S6.2091398,0,4,0h0Z"/></svg>') 0 0, crosshair;
}

.cursor-broadbrush {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><path fill="%23fff" d="M26,31.0100098c-1.3400269,0-2.5900269-.5200195-3.539978-1.460022l-5.5300293-5.5499878h-3.9299927c-.539978,0-1.039978-.210022-1.4199829-.5800171L1.5599976,13.4000244c-.7600098-.7800293-.75-2.0500488.0200195-2.8200073L10.5999756,1.5599976c.3800049-.3599854.8699951-.5599976,1.4000244-.5599976.539978,0,1.039978.2000123,1.4199829.5800171l10,10c.3699951.3800049.5800171.8800049.5800171,1.4199829v3.9199829l5.539978,5.5400391.2900391.3099976v.0199585c1.6499634,1.9700317,1.5499878,4.9100342-.2900391,6.7600098-.9499512.9400024-2.1999512,1.460022-3.539978,1.460022Z"/><path d="M28.8299999,23.1700001l-5.8299999-5.8400002v-4.3299999c.0015373-.2658033-.1028137-.5212812-.2900009-.71L12.7099991,2.29c-.3889198-.392122-1.0220795-.3947182-1.4142017-.0057983-.0019398.0019248-.0038738.0038576-.0057983.0057983L2.289999,11.29c-.3921223.3889198-.3947182,1.0220795-.0057983,1.4142017.0019245.0019407.0038567.0038738.0057983.0057983l10,9.999999c.1887188.1871872.4441986.2915382.710001.2900009h4.3400002l5.8299999,5.8400002c1.5629654,1.5629654,4.0970345,1.5629654,5.6599998,0s1.5629654-4.0970345,0-5.6599998v-.0100002ZM6,10.4099998l2.2900009,2.3000002,1.4200001-1.4200001-2.3000011-2.29,1.5900002-1.5900002,4.2900009,4.3000002,1.4200001-1.4200001-4.3000011-4.29,1.5900002-1.5900002,6.5900002,6.5900002-7.5900002,7.5900002-6.5900002-6.5900002,1.5900002-1.5900002ZM27.4099998,27.4099998c-.7800751.7754478-2.0399246.7754478-2.8199997,0l-6.1300011-6.1199989c-.2130852-.1465492-.4552479-.2454605-.7099991-.2900009h-4.3400002l-1-1,7.5900002-7.5900002,1,1v4.3400002c.0011044.2623405.105257.5137405.2900009.7000008l6.1199989,6.1399994c.7754478.7800751.7754478,2.0399246,0,2.8199997Z"/></svg>') 0 0, crosshair;
}

.cursor-spraypaint {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><path fill="%23fff" d="M28,7h-1V3c0-.5523071-.4476929-1-1-1h-7c-.5523071,0-1,.4476929-1,1v4h-1c-.3669434,0-.7144165.0755615-1.0396729.1966553.0136108-.0657349.0396729-.1268921.0396729-.1966553v-3c0-.5523071-.4476929-1-1-1h-3c-.5523071,0-1,.4476929-1,1,0-.5523071-.4476929-1-1-1h-3c-.5523071,0-1,.4476929-1,1,0-.5523071-.4476929-1-1-1h-3c-.5523071,0-1,.4476929-1,1v3c0,.5523071.4476929,1,1,1-.5523071,0-1,.4476929-1,1v3c0,.5523071.4476929,1,1,1-.5523071,0-1,.4476929-1,1v3c0,.5523071.4476929,1,1,1h3c.5523071,0,1-.4476929,1-1v-3c0-.5523071-.4476929-1-1-1,.5523071,0,1-.4476929,1-1,0,.5523071.4476929,1,1,1h3c.5523071,0,1-.4476929,1-1v-3c0-.5523071-.4476929-1-1-1,.5523071,0,1-.4476929,1-1,0,.5523071.4476929,1,1,1h2.7803345c-.4797363.5319824-.7803345,1.2288818-.7803345,2v18c0,1.6542358,1.3457642,3,3,3h11c1.6542358,0,3-1.3457642,3-3V10c0-1.6542358-1.3457642-3-3-3ZM6,9c0-.5523071-.4476929-1-1-1,.5523071,0,1-.4476929,1-1,0,.5523071.4476929,1,1,1-.5523071,0-1,.4476929-1,1Z"/><path d="M22.5,23c-2.485281,0-4.5-2.014719-4.5-4.5s2.014719-4.5,4.5-4.5,4.5,2.014719,4.5,4.5c-.0027561,2.4841385-2.0158615,4.4972439-4.5,4.5ZM22.5,16c-1.3807125,0-2.5,1.1192875-2.5,2.5s1.1192875,2.5,2.5,2.5,2.5-1.1192875,2.5-2.5c-.0014324-1.3801174-1.1198826-2.4985676-2.5-2.5Z"/><path d="M28,8h-2V3h-7v5h-2c-1.1041126.0011024-1.9988976.8958874-2,2v18c.0012674,1.104044.895956,1.9987316,2,2h11c1.1039524-.0014877,1.9985123-.8960476,2-2V10c-.0012684-1.104044-.895956-1.9987326-2-2ZM21,5h3v3h-3v-3ZM17,28V10h11l.0020008,18h-11.0020008Z"/><rect x="2" y="14" width="3" height="3"/><rect x="7" y="9" width="3" height="3"/><rect x="2" y="9" width="3" height="3"/><rect x="12" y="4" width="3" height="3"/><rect x="7" y="4" width="3" height="3"/><rect x="2" y="4" width="3" height="3"/></svg>') 0 0, crosshair;
}

.cursor-eraser {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><rect fill="%23fff" x="6" y="26" width="25" height="4"/><path fill="%23fff" d="M6.710022,25l-4.8000488-4.8800049c-.5599976-.5599976-.8799438-1.3099976-.8799438-2.1199951,0-.7999878.3199463-1.5499878.8799438-2.1199951L15.9099731,1.8800049c1.1700439-1.1699829,3.0800171-1.1699829,4.25,0l7.9300537,7.9199829c.5599976.5700073.8699951,1.3200073.8699951,2.1199951,0,.8099976-.3099976,1.5599976-.8699951,2.1300049l-10.960022,10.9500122H6.710022Z"/><rect x="7" y="27" width="23" height="2"/><path d="M27.3799992,10.5100002l-7.9299984-7.9200003c-.7806149-.7814829-2.0469437-.7821872-2.8284264-.0015733-.0005245.0005243-.001049.0010486-.0015736.0015733L2.6200008,16.5900002c-.7814829.7806149-.7821872,2.0469437-.0015733,2.8284264.0005243.0005245.0010486.001049.0015733.0015736l4.5099993,4.5799999h9.5900011l10.6599979-10.6599998c.7814827-.7806139.7821865-2.0469437.0015736-2.8284264-.0005245-.0005255-.001049-.001049-.0015736-.0015736ZM15.8900003,22h-7.8900003l-4-4,6.3099995-6.3099995,7.9300003,7.9200001-2.3499994,2.3899994ZM19.6499996,18.2399998l-7.9200001-7.9300003,6.2700005-6.3099995,8,7.9300003-6.3500004,6.3099995Z"/></svg>') 0 0, crosshair;
}

.cursor-scalpel {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><defs><style>.st0{fill:none}.st1{fill:%23fff}</style></defs><path class="st1" d="M28.5999756,29.5200195l-.3499756.3099976c-.9299927.7799683-2.0700073,1.1699829-3.210022,1.1699829-1.2799683,0-2.5599976-.4899902-3.539978-1.460022L5.75,13.8200073c-1.1099854-1.1199951-1.75-2.6600342-1.75-4.2399902V1.4699707c0-.5999756.3599854-1.1299438.9099731-1.3599854.5500488-.2299805,1.1800537-.0999756,1.6100464.3200073l22.0599976,22.0300293c1.8899536,1.9899902,1.8899536,5.0799561.0199585,7.0599976Z"/><path d="M27.8666649,28.8268534c1.5111134-1.5840874,1.5111134-4.0759125,0-5.6599998L5.8053565,1.1391231c-.2971966-.2971966-.8053565-.0867099-.8053565.3335896v8.111054c.0002804,1.3235245.5253105,2.5929441,1.4599991,3.5299997l15.746666,15.7130869c1.5612278,1.5629654,4.0938878,1.5643749,5.6568532.0031471.0010495-.001049.0020986-.0020981.0031466-.0031471ZM14.1722522,12.3024397l2.0588275,2.0588275c.0086081.0086081.0086081.0225645,0,.0311726l-2.7988273,2.7988263c-.0086081.0086081-.0225645.0086081-.0311726,0l-2.0588275-2.0588275c-.0086081-.0086081-.0086081-.0225645,0-.0311726l2.7988273-2.7988263c.0086081-.0086081.0225645-.0086081.0311726,0ZM7.8832666,11.7070322c-.5655461-.5655467-.8832666-1.3325923-.8832666-2.1323957v-4.3576548c0-.0196377.0237428-.0294722.0376287-.0155863l5.6934491,5.6598719c.0086081.0086081.0086081.0225645,0,.0311726l-2.7988273,2.7988273c-.0086081.0086081-.0225646.0086081-.0311726,0l-2.0178113-1.984235ZM23.6266652,27.4068533l-8.7843952-8.7744146c-.0086164-.0086066-.0086204-.0225699-.0000089-.0311815l2.7988096-2.7988096c.0086115-.0086115.0225748-.0086076.0311815.0000089l8.7744137,8.7843971c.7754469.7800751.7754469,2.0399246,0,2.8199997-.7800751.7754478-2.0399246.7754478-2.8200006,0Z"/></svg>') 0 0, crosshair;
}

.cursor-spiro {
	cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32"><path fill="%23fff" d="M30.42,27.42l-3,3c-.39.39-.91.58-1.42.58s-1.03-.19-1.42-.58l-5.41-5.42h-2.08c-5.08,0-9.63-3.23-11.32-8.04L1.12,3.66c-.16-.42-.16-.9.01-1.35.16-.48.53-.89,1.01-1.12.49-.23,1.03-.25,1.53-.07l13.29,4.65c4.81,1.69,8.04,6.24,8.04,11.32v2.08l5.42,5.41c.78.78.78,2.06,0,2.84Z"/><path d="M29.71,25.29l-5.71-5.7v-2.5c0-4.67-2.96-8.83-7.37-10.38L3.33,2.06c-.52-.19-1.09.09-1.27.61-.08.21-.08.45,0,.66l4.65,13.3c1.55,4.41,5.71,7.37,10.38,7.37h2.5l5.7,5.71c.39.39,1.03.39,1.42,0l3-3c.39-.39.39-1.03,0-1.42ZM26,27.59l-5.29-5.3c-.19-.18-.44-.29-.71-.29h-2.91c-3.82,0-7.22-2.42-8.49-6.03l-3.21-9.16,9.2,9.19,1.41-1.41L6.81,5.39l9.16,3.21c3.61,1.27,6.03,4.67,6.03,8.49v2.91c0,.27.11.52.29.71l5.3,5.29-1.59,1.59Z"/><path fill="%23fff" d="M27.59,26l-1.59,1.59-5.29-5.3c-.19-.18-.44-.29-.71-.29h-2.91c-3.82,0-7.22-2.42-8.49-6.03l-3.21-9.16,9.2,9.19,1.41-1.41L6.81,5.39l9.16,3.21c3.61,1.27,6.03,4.67,6.03,8.49v2.91c0,.27.11.52.29.71l5.3,5.29Z"/></svg>') 0 0, crosshair;
}

.cursor-circle,
.cursor-circle2points,
.cursor-circle3points,
.cursor-concentricCircles,
.cursor-concentricCirclesTool,
.cursor-rectangle,
.cursor-exportrect,
.cursor-line,
.cursor-arc,
.cursor-arc3points,
.cursor-dubins,
.cursor-star,
.cursor-polygon,
.cursor-graph,
.cursor-triangulator {
    cursor: crosshair;
}

.cursor-triangular {
    cursor: crosshair;
}

.colorInputBlocker,
.menuInputBlocker {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-color: transparent;
	z-index: 300;
}

.menuInputBlocker {
	z-index: 99;
}

input::-webkit-inner-spin-button,
input::-webkit-outer-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

input[type=number] {
	-moz-appearance: textfield;
}

select,
.comboSelect {
	height: 28px;
	margin: 0;
	outline: none;
	cursor: pointer;
}

.comboSelect {
	position: absolute;
	right: 0;
	width: 28px;
	padding: 0;
	top: 0;
	background-color: transparent;
	border: 0;
}

select,
.comboSelect,
select::-ms-expand {
	-webkit-appearance: none;
	-moz-appearance: none;
	background-image: url('../assets/selectButton.png');
	background-repeat: no-repeat;
	background-position: right center;
}

select::-ms-expand {
	display: none;
}

button {
	cursor: pointer;
	background-color: var(--bg-primary);
	color: var(--text-primary);
	border: 1px solid var(--border-medium);
	border-radius: var(--radius-sm);
	padding: var(--spacing-xs) var(--spacing-md);
	transition: all 0.15s ease;
	font-weight: 500;
}

button:hover {
	background-color: var(--bg-hover);
	border-color: var(--border-dark);
}

button:active {
	background-color: var(--bg-active);
	transform: translateY(1px);
}

/* Resize Cursors */
body.resize-n,
body.resize-n #paperCanvas,
body.resize-n * {
	cursor: n-resize !important;
}

body.resize-s,
body.resize-s #paperCanvas,
body.resize-s * {
	cursor: s-resize !important;
}

body.resize-e,
body.resize-e #paperCanvas,
body.resize-e * {
	cursor: e-resize !important;
}

body.resize-w,
body.resize-w #paperCanvas,
body.resize-w * {
	cursor: w-resize !important;
}

body.resize-ne,
body.resize-ne #paperCanvas,
body.resize-ne * {
	cursor: ne-resize !important;
}

body.resize-nw,
body.resize-nw #paperCanvas,
body.resize-nw * {
	cursor: nw-resize !important;
}

body.resize-ew,
body.resize-ew #paperCanvas,
body.resize-ew * {
	cursor: ew-resize !important;
}

body.resize-row,
body.resize-row #paperCanvas,
body.resize-row * {
	cursor: row-resize !important;
}

body.resize-col,
body.resize-col #paperCanvas,
body.resize-col * {
    cursor: col-resize !important;
}

#paperCanvas.resize-ne {
    cursor: ne-resize !important;
}
#paperCanvas.resize-ew {
    cursor: ew-resize !important;
}
#paperCanvas.resize-row {
    cursor: row-resize !important;
}
#paperCanvas.resize-col {
    cursor: col-resize !important;
}

body.resize-se,
body.resize-se #paperCanvas,
body.resize-se * {
	cursor: se-resize !important;
}

body.resize-sw,
body.resize-sw #paperCanvas,
body.resize-sw * {
	cursor: sw-resize !important;
}

/* Canvas Text Input - Inline editing */
.canvasTextInput {
	position: absolute;
	background: rgba(255, 255, 255, 0.95);
	border: 2px solid #4A90E2;
	outline: none;
	padding: 4px;
	resize: none;
	overflow: hidden;
	z-index: 10000;
	line-height: 1.2;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
	border-radius: 2px;
}

.dark-theme .canvasTextInput {
	background: rgba(37, 38, 43, 0.95);
	color: #e9ecef;
	border-color: #4c6ef5;
}

.canvasTextInput:focus {
	border-color: #2b7de9;
	box-shadow: 0 2px 12px rgba(74, 144, 226, 0.3);
}
