/*
 * Notifications "toast" — remplace notyfy/Gritter.
 * Générées en JS par AG.toast() (assets/js/ag-core.js), déclenchées côté PHP
 * par message_information()/message_erreur() (includes/functions.php).
 */

#ag-toast-region {
	position: fixed;
	top: calc(var(--ag-topbar-height) + var(--ag-space-3));
	right: var(--ag-space-4);
	z-index: var(--ag-z-toast);
	display: flex;
	flex-direction: column;
	gap: var(--ag-space-2);
	max-width: 340px;
}

.ag-toast {
	display: flex;
	align-items: flex-start;
	gap: var(--ag-space-2);
	padding: var(--ag-space-3) var(--ag-space-4);
	border-radius: var(--ag-radius-md);
	box-shadow: var(--ag-shadow-lg);
	font-size: var(--ag-font-size-sm);
	background: var(--ag-color-surface);
	border-left: 3px solid var(--ag-color-primary);
	animation: ag-toast-in var(--ag-transition-base);
}

.ag-toast--success { border-left-color: var(--ag-color-success); }
.ag-toast--error { border-left-color: var(--ag-color-danger); }

/*
 * Contenu texte du toast (ag-core.js, AG.toast()) : seul enfant/item flex
 * de .ag-toast, pour que le texte principal et le lien optionnel
 * (.ag-toast__link, ci-dessous) s'empilent en flux de bloc normal plutôt
 * que de se retrouver côte à côte comme deux items flex distincts.
 */
.ag-toast__content {
	min-width: 0;
}

/*
 * Ligne de lien optionnelle dans un toast (AG.toast(text, type, link),
 * ag-core.js) — ex. "Cliquer ici pour ouvrir le profil" après un
 * changement d'identité. reset.css neutralise color/text-decoration sur
 * tout <a> par défaut : restaurés ici pour que le lien reste visuellement
 * distinct du texte du toast, avec la couleur des boutons (cohérent avec
 * le rôle d'action du lien, pas avec la couleur de marque — voir "Notes
 * techniques" du projet).
 */
.ag-toast__link {
	margin-top: var(--ag-space-1);
}

.ag-toast__link a {
	color: var(--ag-color-btn-primary);
	text-decoration: underline;
	font-weight: var(--ag-font-weight-medium);
}

.ag-toast.is-leaving {
	animation: ag-toast-out var(--ag-transition-base) forwards;
}

@keyframes ag-toast-in {
	from { opacity: 0; transform: translateY(-8px); }
	to { opacity: 1; transform: translateY(0); }
}

@keyframes ag-toast-out {
	from { opacity: 1; transform: translateY(0); }
	to { opacity: 0; transform: translateY(-8px); }
}

/* Popin de confirmation — remplace confirmation()/notyfy en mode confirm */
.ag-confirm-backdrop {
	position: fixed;
	inset: 0;
	background: rgba(16, 24, 40, 0.45);
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: var(--ag-z-overlay);
}

.ag-confirm {
	background: var(--ag-color-surface);
	border-radius: var(--ag-radius-lg);
	box-shadow: var(--ag-shadow-lg);
	padding: var(--ag-space-5);
	max-width: 360px;
	width: 90%;
	text-align: center;
}

.ag-confirm__actions {
	display: flex;
	gap: var(--ag-space-3);
	margin-top: var(--ag-space-4);
}

.ag-confirm__actions .ag-btn {
	flex: 1;
}
