@keyframes fade-up {
	from {
		opacity: 0;
		transform: translateY(20px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@keyframes scale-up {
	from {
		opacity: 0;
		transform: scale(0.95);
	}
	to {
		opacity: 1;
		transform: scale(1);
	}
}

@keyframes float-y {
	0%,
	100% {
		transform: translateY(0);
	}
	50% {
		transform: translateY(-6px);
	}
}

/* ── Button spinner ───────────────────────────────────────── */
@keyframes spin {
	to { transform: rotate(360deg); }
}
.btn-spinner {
	animation: spin 700ms linear infinite;
	flex-shrink: 0;
}

/* ── Toast ────────────────────────────────────────────────── */
#app-toast {
	position: fixed;
	bottom: 28px;
	left: 50%;
	transform: translateX(-50%) translateY(12px);
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 12px 18px;
	background: #1a1d2e;
	border: 1px solid rgba(239, 68, 68, 0.35);
	border-radius: 999px;
	color: rgba(255, 255, 255, 0.85);
	font-size: 0.8rem;
	font-weight: 600;
	white-space: nowrap;
	box-shadow: 0 8px 32px rgba(0,0,0,0.5);
	z-index: 99999;
	opacity: 0;
	transition: opacity 250ms ease, transform 250ms ease;
	pointer-events: none;
}
#app-toast svg { color: #ef4444; flex-shrink: 0; }
#app-toast.toast--visible {
	opacity: 1;
	transform: translateX(-50%) translateY(0);
	pointer-events: auto;
}
.toast-dismiss {
	background: none;
	border: none;
	color: rgba(255,255,255,0.4);
	font-size: 0.7rem;
	cursor: pointer;
	padding: 0 0 0 6px;
	line-height: 1;
	transition: color 150ms ease;
}
.toast-dismiss:hover { color: rgba(255,255,255,0.8); }