/**
 * Matsuri Notifications
 *
 * Alert banners, toast notifications, and loading spinners.
 * Replaces inline style="color:red" with semantic components.
 *
 * Usage:
 *   <div class="wam-alert wam-alert-error" role="alert">Error message</div>
 *   <div class="wam-alert wam-alert-success" role="status">Success message</div>
 *   <div class="wam-toast" role="status" aria-live="polite">Toast message</div>
 *   <div class="wam-spinner" role="status"><span class="sr-only">Loading...</span></div>
 *
 * @since 1.1.0
 * @package WAM_Matsuri
 */

/* === Alert Banners === */
.wam-alert {
	padding: 12px 16px;
	border-radius: var(--wam-radius-md);
	border-left: 4px solid;
	margin-bottom: 16px;
	font-size: var(--wam-font-size-sm);
	line-height: 1.5;
	display: flex;
	align-items: flex-start;
	gap: 10px;
}

.wam-alert-icon {
	flex-shrink: 0;
	font-size: 18px;
	line-height: 1;
}

.wam-alert-content {
	flex: 1;
}

/* Error */
.wam-alert-error {
	background: var(--wam-error-light);
	border-color: var(--wam-error);
	color: #7f1d1d;
}

/* Success */
.wam-alert-success {
	background: var(--wam-success-light);
	border-color: var(--wam-success);
	color: #14532d;
}

/* Warning */
.wam-alert-warning {
	background: var(--wam-warning-light);
	border-color: var(--wam-warning);
	color: #78350f;
}

/* Info */
.wam-alert-info {
	background: var(--wam-secondary-bg);
	border-color: var(--wam-secondary-light);
	color: var(--wam-secondary-dark);
}

/* Dismissible alert */
.wam-alert-dismiss {
	background: none;
	border: none;
	cursor: pointer;
	font-size: 18px;
	color: inherit;
	opacity: 0.6;
	padding: 0;
	line-height: 1;
	flex-shrink: 0;
}

.wam-alert-dismiss:hover {
	opacity: 1;
}

/* === Toast Notifications === */
.wam-toast-container {
	position: fixed;
	top: 20px;
	right: 20px;
	z-index: 100000;
	display: flex;
	flex-direction: column;
	gap: 10px;
	pointer-events: none;
}

.wam-toast {
	background: var(--wam-bg-card);
	border: 1px solid var(--wam-border);
	border-radius: var(--wam-radius-md);
	box-shadow: var(--wam-shadow-lg);
	padding: 14px 18px;
	min-width: 280px;
	max-width: 420px;
	display: flex;
	align-items: center;
	gap: 10px;
	pointer-events: auto;
	transform: translateX(calc(100% + 20px));
	opacity: 0;
	transition: transform var(--wam-transition-slow), opacity var(--wam-transition-slow);
}

.wam-toast.is-visible {
	transform: translateX(0);
	opacity: 1;
}

.wam-toast.is-exiting {
	transform: translateX(calc(100% + 20px));
	opacity: 0;
}

.wam-toast-icon {
	flex-shrink: 0;
	font-size: 20px;
}

.wam-toast-message {
	flex: 1;
	font-size: var(--wam-font-size-sm);
	color: var(--wam-text-primary);
}

.wam-toast-close {
	background: none;
	border: none;
	cursor: pointer;
	font-size: 16px;
	color: var(--wam-text-muted);
	padding: 4px;
	line-height: 1;
	flex-shrink: 0;
}

.wam-toast-close:hover {
	color: var(--wam-text-primary);
}

/* Toast type borders */
.wam-toast-success {
	border-left: 4px solid var(--wam-success);
}

.wam-toast-error {
	border-left: 4px solid var(--wam-error);
}

.wam-toast-warning {
	border-left: 4px solid var(--wam-warning);
}

.wam-toast-info {
	border-left: 4px solid var(--wam-secondary-light);
}

/* === Loading Spinner === */
.wam-spinner {
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.wam-spinner::after {
	content: '';
	width: 24px;
	height: 24px;
	border: 3px solid var(--wam-border-light);
	border-top-color: var(--wam-primary);
	border-radius: 50%;
	animation: wam-spin 0.6s linear infinite;
}

.wam-spinner-sm::after {
	width: 16px;
	height: 16px;
	border-width: 2px;
}

.wam-spinner-lg::after {
	width: 40px;
	height: 40px;
	border-width: 4px;
}

@keyframes wam-spin {
	to { transform: rotate(360deg); }
}

/* Screen reader only text */
.sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
	.wam-toast {
		transition: none;
	}

	.wam-toast.is-visible {
		transform: none;
	}

	.wam-spinner::after {
		animation: none;
		border-top-color: var(--wam-primary);
		opacity: 0.7;
	}
}

/* Mobile responsive */
@media (max-width: 480px) {
	.wam-toast-container {
		top: auto;
		bottom: 20px;
		right: 10px;
		left: 10px;
	}

	.wam-toast {
		min-width: auto;
		max-width: none;
	}
}
