/* Please refer to GTK4 CSS specification */

/* https://docs.gtk.org/gtk4/css-properties.html */
@define-color bg     #161616;
@define-color fg     #FFFFFF;
@define-color accent #684EFF;

* {
	all: unset;
}

window {
	border: 1px @accent solid;
	border-radius: 10px;

	background-color: @bg;
}

.main {
	margin: 20px;
}

.client {
	color: @fg;
	font-family: 'Noto Sans';
	font-size: 1.1em;
}

.client .icon {
	color: @fg;

	-gtk-icon-style: symbolic;
}

/* Hide Application Name
.client > .name {
	font-size: 0;
} */

/* Hide Application Description
.client > .description {
	font-size: 0;
} */

/* Numeric Volume Level */
.client .volume {
	color: @fg;
}

/* Slider Bar */
.client scale > trough {
	background-color: lighter(@bg);
	border-radius: 10px;
}

/* Slider Knob */
.client scale > trough > slider {
	padding: 0;

	border: none;
	border-radius: 2px;

	background: @accent;
}

/* Slider Bar Filled */
.client scale > trough > highlight {
	background-color: @accent;

	border: none;
	border-radius: 10px;

	margin: 1px;

	transition: background-color 300ms;
}

/* Slider Peak */
.client scale > trough > fill {
	background: none;

	border-radius: 10px;

	margin: 0px;
}

/* Numeric Volume Level */
.client.muted .volume {
	text-decoration: line-through;
}

/* Slider Knob */
.client.muted scale > trough > slider {
	background: shade(@accent, 0.5);
}

/* Slider Bar Filled */
.client.muted scale > trough > highlight {
	background: shade(@accent, 0.5);
}

@keyframes client-add-horizontal {
	from {
		transform: translateX(-200px);
		opacity: 0;
	}
	to {
		opacity: 1;
	}
}

@keyframes client-remove-horizontal {
	from {
		opacity: 1;
	}
	to {
		transform: translateX(-200px);
		opacity: 0;
	}
}

.client.horizontal.new {
	animation: client-add-horizontal 300ms ease;
}

.client.horizontal.new.removed {
	animation: client-remove-horizontal 300ms ease;
}

.client.horizontal .icon {
	padding-right: 13px;

	-gtk-icon-size: 16px;
}

/* Numeric Volume Level */
.client.horizontal .volume {
	padding-left: 15px;
	padding-bottom: 2px;
}

/* Slider Bar */
.client.horizontal scale > trough {
	min-height: 4px;
}

/* Slider Knob */
.client.horizontal scale > trough > slider {
	min-height: 14px;
	min-width: 6px;

	margin-top: -7px;
	margin-bottom: -7px;
}

/* Slider Peak */
.client.horizontal scale > trough > fill {
	border-top: 1px solid alpha(@accent, 0.8);
	border-bottom: 1px solid alpha(@accent, 0.8);
}

/* Slider Peak */
.client.horizontal.muted scale > trough > fill {
	border-top: 1px solid shade(@accent, 0.5);
	border-bottom: 1px solid shade(@accent, 0.5);
}

.client.vertical.new {
	animation: client-add-vertical 300ms ease;
}

.client.vertical.removed {
	animation: client-remove-vertical 300ms ease;
}

.client.vertical .icon {
	padding-bottom: 5px;

	-gtk-icon-size: 20px;
}

/* Numeric Volume Level */
.client.vertical .volume {
	padding-top: 10px;
}

/* Slider Bar */
.client.vertical scale > trough {
	min-width: 4px;

	margin-top: 10px;
}

/* Slider Knob */
.client.vertical scale > trough > slider {
	margin-left: -7px;
	margin-right: -7px;

	min-height: 6px;
	min-width: 14px;
}

/* Slider Peak */
.client.vertical scale > trough > fill {
	border-left: 1px solid alpha(@accent, 0.8);
	border-right: 1px solid alpha(@accent, 0.8);
}

/* Slider Peak */
.client.vertical.muted scale > trough > fill {
	border-left: 1px solid shade(@accent, 0.5);
	border-right: 1px solid shade(@accent, 0.5);
}

@keyframes client-add-vertical {
	from {
		transform: translateY(200px);
		opacity: 0;
	}
	to {
		opacity: 1;
	}
}

@keyframes client-remove-vertical {
	from {
		opacity: 1;
	}
	to {
		transform: translateY(200px);
		opacity: 0;
	}
}
