ui/components/dockfab/dockfab.scss
@import "/ui/styles/_theme.scss";

@keyframes dock-fab-pulse {
	0%   { background-color: $primary;        box-shadow: 0 0 0 rgba(0, 0, 0, 0.0); }
	50%  { background-color: $primary-strong; box-shadow: 0 0 18px $primary-line; }
	100% { background-color: $primary;        box-shadow: 0 0 0 rgba(0, 0, 0, 0.0); }
}

.dock-fab {
	pointer-events: all;
	position: absolute;
	left: 24px;
	top: -72px;
	flex-direction: row;
	align-items: center;
	gap: 8px;
	padding: 10px 18px;
	background-color: $primary;
	border: 1px solid $primary-strong;
	color: $text;
	cursor: pointer;
	font-family: $font-mono;
	font-size: $fs-2;
	font-weight: 700;
	letter-spacing: 1.5px;
	text-transform: uppercase;
	white-space: nowrap;
	z-index: 40;
	animation-name: dock-fab-pulse;
	animation-duration: 5s;
	animation-iteration-count: infinite;
	animation-timing-function: ease-in-out;
	transition: color 0.1s ease, border-color 0.1s ease, padding 0.1s ease;

	.dock-fab-icon {
		font-size: $fs-4;
		font-weight: 800;
		font-family: $font-secondary;
		color: $text;
	}

	.dock-fab-label {
		font-family: $font-mono;
	}

	&:hover {
		border-color: $primary-ink;
		padding: 10px 24px;
		color: $text;
	}

	&.is-quiet {
		animation-name: none;
	}

	&.active {
		animation-name: none;
		background-color: $bg-elev;
		border-color: $primary-strong;
		color: $primary-ink;

		.dock-fab-icon { color: $primary-ink; }

		&:hover {
			border-color: $primary-ink;
			color: $text;

			.dock-fab-icon { color: $text; }
		}
	}

	&.is-loading {
		animation-name: none;
		background-color: $bg-elev;
		border-color: $primary-strong;
		color: $primary-ink;
		opacity: 0.7;

		.dock-fab-icon { color: $primary-ink; }
	}

	&.is-disabled {
		pointer-events: none;
		cursor: default;
	}
}