[data-hazix-toaster] {
	position: fixed;
	width: var(--width);
	font-family:
		ui-sans-serif,
		system-ui,
		-apple-system,
		BlinkMacSystemFont,
		Segoe UI,
		Roboto,
		Helvetica Neue,
		Arial,
		Noto Sans,
		sans-serif,
		Apple Color Emoji,
		Segoe UI Emoji,
		Segoe UI Symbol,
		Noto Color Emoji;
	--gray1: hsl(0, 0%, 99%);
	--gray2: hsl(0, 0%, 97.3%);
	--gray3: hsl(0, 0%, 95.1%);
	--gray4: hsl(0, 0%, 93%);
	--gray5: hsl(0, 0%, 90.9%);
	--gray6: hsl(0, 0%, 88.7%);
	--gray7: hsl(0, 0%, 85.8%);
	--gray8: hsl(0, 0%, 78%);
	--gray9: hsl(0, 0%, 56.1%);
	--gray10: hsl(0, 0%, 52.3%);
	--gray11: hsl(0, 0%, 43.5%);
	--gray12: hsl(0, 0%, 9%);
	--border-radius: 6px;
	box-sizing: border-box;
	padding: 0;
	margin: 0;
	list-style: none;
	outline: none;
	z-index: 999999999;
}

[data-hazix-toaster][data-x-position='right'] {
	right: max(var(--offset), env(safe-area-inset-right));
}

[data-hazix-toaster][data-x-position='left'] {
	left: max(var(--offset), env(safe-area-inset-left));
}

[data-hazix-toaster][data-x-position='center'] {
	left: 50%;
	transform: translateX(-50%);
}

[data-hazix-toaster][data-y-position='top'] {
	top: max(var(--offset), env(safe-area-inset-top));
}

[data-hazix-toaster][data-y-position='bottom'] {
	bottom: max(var(--offset), env(safe-area-inset-bottom));
}

[data-hazix-toast] {
	--y: translateY(100%);
	--lift-amount: calc(var(--lift) * var(--gap));
	z-index: var(--z-index);
	position: absolute;
	opacity: 0;
	transform: var(--y);
	/* https://stackoverflow.com/questions/48124372/pointermove-event-not-working-with-touch-why-not */
	touch-action: none;
	will-change: transform, opacity, height;
	transition:
		transform 400ms,
		opacity 400ms,
		height 400ms,
		box-shadow 200ms;
	box-sizing: border-box;
	outline: none;
}

[data-hazix-toast][data-styled='true'] {
	padding: 16px;
	background: var(--normal-bg);
	border: 1px solid var(--normal-border);
	color: var(--normal-text);
	border-radius: var(--border-radius);
	box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.1);
	width: var(--width);
	font-size: 13px;
	display: flex;
	align-items: center;
	gap: 6px;
}

[data-hazix-toast]:focus-visible {
	box-shadow:
		0px 4px 12px rgba(0, 0, 0, 0.1),
		0 0 0 2px rgba(0, 0, 0, 0.2);
}

[data-hazix-toast][data-y-position='top'] {
	top: 0;
	--y: translateY(-100%);
	--lift: 1;
	--lift-amount: calc(1 * var(--gap));
}

[data-hazix-toast][data-y-position='bottom'] {
	bottom: 0;
	--y: translateY(100%);
	--lift: -1;
	--lift-amount: calc(var(--lift) * var(--gap));
}

[data-hazix-toast] [data-description] {
	font-weight: 400;
	line-height: 1.4;
	color: inherit;
}

[data-hazix-toast] [data-title] {
	font-weight: 500;
	line-height: 1.5;
	color: inherit;
}

[data-hazix-toast] [data-icon] {
	display: flex;
	height: 16px;
	width: 16px;
	position: relative;
	justify-content: flex-start;
	align-items: center;
	flex-shrink: 0;
	margin-left: -3px;
	margin-right: 4px;
}

[data-hazix-toast][data-promise='true'] [data-icon] > svg {
	opacity: 0;
	transform: scale(0.8);
	transform-origin: center;
	animation: hazix-fade-in 300ms ease forwards;
}

[data-hazix-toast] [data-icon] > * {
	flex-shrink: 0;
}

[data-hazix-toast] [data-icon] svg {
	margin-left: -1px;
}

[data-hazix-toast] [data-content] {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

[data-hazix-toast] [data-button] {
	border-radius: 4px;
	padding-left: 8px;
	padding-right: 8px;
	height: 24px;
	font-size: 12px;
	color: var(--normal-bg);
	background: var(--normal-text);
	margin-left: auto;
	border: none;
	cursor: pointer;
	outline: none;
	transition:
		opacity 400ms,
		box-shadow 200ms;
}

[data-hazix-toast] [data-button]:focus-visible {
	box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.4);
}

[data-hazix-toast] [data-button]:first-of-type {
	margin-left: auto;
}

[data-hazix-toast] [data-cancel] {
	color: var(--color);
	background: var(--border-color);
}

[data-hazix-toast] [data-close-button] {
	position: absolute;
	left: 0;
	top: 0;
	height: 20px;
	width: 20px;
	display: flex;
	justify-content: center;
	align-items: center;
	padding: 0;
	background: var(--gray1);
	color: var(--gray12);
	border: 1px solid var(--gray4);
	transform: translate(-35%, -35%);
	border-radius: 50%;
	opacity: 0;
	cursor: pointer;
	z-index: 1;
	transition:
		opacity 100ms,
		background 200ms,
		border-color 200ms;
}
[data-hazix-toast] [data-close-button]:focus-visible {
	box-shadow:
		0px 4px 12px rgba(0, 0, 0, 0.1),
		0 0 0 2px rgba(0, 0, 0, 0.2);
}

[data-hazix-toast] [data-disabled='true'] {
	cursor: not-allowed;
}

[data-hazix-toast]:hover [data-close-button] {
	opacity: 1;
}
[data-hazix-toast]:focus [data-close-button] {
	opacity: 1;
}
[data-hazix-toast]:focus-within [data-close-button] {
	opacity: 1;
}

[data-hazix-toast]:hover [data-close-button]:hover {
	background: var(--gray2);
	border-color: var(--gray5);
}

/* Leave a ghost div to avoid setting hover to false when swiping out */
[data-hazix-toast][data-swiping='true']:before {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	height: 100%;
}

[data-hazix-toast][data-y-position='top'][data-swiping='true']:before {
	/* y 50% needed to distribute height additional height evenly */
	bottom: 50%;
	transform: scaleY(3) translateY(50%);
}

[data-hazix-toast][data-y-position='bottom'][data-swiping='true']:before {
	/* y -50% needed to distribute height additional height evenly */
	top: 50%;
	transform: scaleY(3) translateY(-50%);
}

/* Leave a ghost div to avoid setting hover to false when transitioning out */
[data-hazix-toast][data-swiping='false'][data-removed='true']:before {
	content: '';
	position: absolute;
	inset: 0;
	transform: scaleY(2);
}

/* Needed to avoid setting hover to false when inbetween toasts */
[data-hazix-toast]:after {
	content: '';
	position: absolute;
	left: 0;
	height: calc(var(--gap) + 1px);
	bottom: 100%;
	width: 100%;
}

[data-hazix-toast][data-mounted='true'] {
	--y: translateY(0);
	opacity: 1;
}

[data-hazix-toast][data-expanded='false'][data-front='false'] {
	--scale: var(--toasts-before) * 0.05 + 1;
	--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));
	height: var(--front-toast-height);
}

[data-hazix-toast] > * {
	transition: opacity 400ms;
}

[data-hazix-toast][data-expanded='false'][data-front='false'][data-styled='true'] > * {
	opacity: 0;
}

[data-hazix-toast][data-visible='false'] {
	opacity: 0;
	pointer-events: none;
}

[data-hazix-toast][data-mounted='true'][data-expanded='true'] {
	--y: translateY(calc(var(--lift) * var(--offset)));
	height: var(--initial-height);
}

[data-hazix-toast][data-removed='true'][data-front='true'][data-swipe-out='false'] {
	--y: translateY(calc(var(--lift) * -100%));
	opacity: 0;
}

[data-hazix-toast][data-removed='true'][data-front='false'][data-swipe-out='false'][data-expanded='true'] {
	--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));
	opacity: 0;
}

[data-hazix-toast][data-removed='true'][data-front='false'][data-swipe-out='false'][data-expanded='false'] {
	--y: translateY(40%);
	opacity: 0;
	transition:
		transform 500ms,
		opacity 200ms;
}

/* Bump up the height to make sure hover state doesn't get set to false */
[data-hazix-toast][data-removed='true'][data-front='false']:before {
	height: calc(var(--initial-height) + 20%);
}

[data-hazix-toast][data-swiping='true'] {
	transform: var(--y) translateY(var(--swipe-amount, 0px));
	transition: none;
}

[data-hazix-toast][data-swipe-out='true'][data-y-position='bottom'],
[data-hazix-toast][data-swipe-out='true'][data-y-position='top'] {
	animation: swipe-out 200ms ease-out forwards;
}

@keyframes swipe-out {
	from {
		transform: translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount)));
		opacity: 1;
	}

	to {
		transform: translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount) + var(--lift) * -100%));
		opacity: 0;
	}
}

@media (max-width: 600px) {
	[data-hazix-toaster] {
		position: fixed;
		--mobile-offset: 16px;
		right: var(--mobile-offset);
		left: var(--mobile-offset);
		width: 100%;
	}

	[data-hazix-toaster] [data-hazix-toast] {
		left: 0;
		right: 0;
		width: calc(100% - 32px);
	}

	[data-hazix-toaster][data-x-position='left'] {
		left: var(--mobile-offset);
	}

	[data-hazix-toaster][data-y-position='bottom'] {
		bottom: 20px;
	}

	[data-hazix-toaster][data-y-position='top'] {
		top: 20px;
	}

	[data-hazix-toaster][data-x-position='center'] {
		left: var(--mobile-offset);
		right: var(--mobile-offset);
		transform: none;
	}
}

[data-hazix-toaster][data-theme='light'] {
	--normal-bg: #fff;
	--normal-border: var(--gray3);
	--normal-text: var(--gray12);

	--success-bg: hsl(143, 85%, 96%);
	--success-border: hsl(145, 92%, 91%);
	--success-text: hsl(140, 100%, 27%);

	--error-bg: hsl(359, 100%, 97%);
	--error-border: hsl(359, 100%, 94%);
	--error-text: hsl(360, 100%, 45%);
}

[data-hazix-toaster][data-theme='light'] [data-hazix-toast][data-invert='true'] {
	--normal-bg: #000;
	--normal-border: hsl(0, 0%, 20%);
	--normal-text: var(--gray1);
}

[data-hazix-toaster][data-theme='dark'] [data-hazix-toast][data-invert='true'] {
	--normal-bg: #fff;
	--normal-border: var(--gray3);
	--normal-text: var(--gray12);
}

[data-hazix-toaster][data-theme='dark'] {
	--normal-bg: #000;
	--normal-border: hsl(0, 0%, 20%);
	--normal-text: var(--gray1);

	--success-bg: hsl(150, 100%, 6%);
	--success-border: hsl(147, 100%, 12%);
	--success-text: hsl(150, 86%, 65%);

	--error-bg: hsl(358, 76%, 10%);
	--error-border: hsl(357, 89%, 16%);
	--error-text: hsl(358, 100%, 81%);
}

[data-rich-colors='true'] [data-hazix-toast][data-type='success'] {
	background: var(--success-bg);
	border-color: var(--success-border);
	color: var(--success-text);
}

[data-rich-colors='true'] [data-hazix-toast][data-type='success'] [data-close-button] {
	background: var(--success-bg);
	border-color: var(--success-border);
	color: var(--success-text);
}

[data-rich-colors='true'] [data-hazix-toast][data-type='error'] {
	background: var(--error-bg);
	border-color: var(--error-border);
	color: var(--error-text);
}

[data-rich-colors='true'] [data-hazix-toast][data-type='error'] [data-close-button] {
	background: var(--error-bg);
	border-color: var(--error-border);
	color: var(--error-text);
}

.hazix-loading-wrapper {
	--size: 16px;
	height: var(--size);
	width: var(--size);
	position: absolute;
	inset: 0;
	z-index: 10;
}

.hazix-loading-wrapper[data-visible='false'] {
	transform-origin: center;
	animation: hazix-fade-out 0.2s ease forwards;
}

.hazix-spinner {
	position: relative;
	top: 50%;
	left: 50%;
	height: var(--size);
	width: var(--size);
}

.hazix-loading-bar {
	animation: hazix-spin 1.2s linear infinite;
	background: var(--gray11);
	border-radius: 6px;
	height: 8%;
	left: -10%;
	position: absolute;
	top: -3.9%;
	width: 24%;
}

.hazix-loading-bar:nth-child(1) {
	animation-delay: -1.2s;
	/* Rotate trick to avoid adding an additional pixel in some sizes */
	transform: rotate(0.0001deg) translate(146%);
}

.hazix-loading-bar:nth-child(2) {
	animation-delay: -1.1s;
	transform: rotate(30deg) translate(146%);
}

.hazix-loading-bar:nth-child(3) {
	animation-delay: -1s;
	transform: rotate(60deg) translate(146%);
}

.hazix-loading-bar:nth-child(4) {
	animation-delay: -0.9s;
	transform: rotate(90deg) translate(146%);
}

.hazix-loading-bar:nth-child(5) {
	animation-delay: -0.8s;
	transform: rotate(120deg) translate(146%);
}

.hazix-loading-bar:nth-child(6) {
	animation-delay: -0.7s;
	transform: rotate(150deg) translate(146%);
}

.hazix-loading-bar:nth-child(7) {
	animation-delay: -0.6s;
	transform: rotate(180deg) translate(146%);
}

.hazix-loading-bar:nth-child(8) {
	animation-delay: -0.5s;
	transform: rotate(210deg) translate(146%);
}

.hazix-loading-bar:nth-child(9) {
	animation-delay: -0.4s;
	transform: rotate(240deg) translate(146%);
}

.hazix-loading-bar:nth-child(10) {
	animation-delay: -0.3s;
	transform: rotate(270deg) translate(146%);
}

.hazix-loading-bar:nth-child(11) {
	animation-delay: -0.2s;
	transform: rotate(300deg) translate(146%);
}

.hazix-loading-bar:nth-child(12) {
	animation-delay: -0.1s;
	transform: rotate(330deg) translate(146%);
}

@keyframes hazix-fade-in {
	0% {
		opacity: 0;
		transform: scale(0.8);
	}
	100% {
		opacity: 1;
		transform: scale(1);
	}
}

@keyframes hazix-fade-out {
	0% {
		opacity: 1;
		transform: scale(1);
	}
	100% {
		opacity: 0;
		transform: scale(0.8);
	}
}

@keyframes hazix-spin {
	0% {
		opacity: 1;
	}
	100% {
		opacity: 0.15;
	}
}

@media (prefers-reduced-motion) {
	[data-hazix-toast],
	[data-hazix-toast] > *,
	.hazix-loading-bar {
		transition: none !important;
		animation: none !important;
	}
}
