/* ==========================================================
   alerts.css — Composant alertes
   ========================================================== */

.app-alert {
    display: flex;
    align-items: flex-start;
    gap: var(--app-spacer-sm);
    padding: var(--app-spacer-sm) var(--app-spacer);
    border-radius: var(--app-radius);
    font-size: var(--app-font-size-sm);
    line-height: 1.5;
}

.app-alert i {
    font-size: 1.1rem;
    flex-shrink: 0;
    margin-top: 0.1rem;
}

.app-alert--warning {
    background: var(--app-warning-light);
    color: var(--app-warning-text);
}

.app-alert--danger {
    background: var(--app-danger-light);
    color: var(--app-danger-text);
}

.app-alert--info {
    background: var(--app-gray-100);
    color: var(--app-gray-700);
}

.app-alert--white {
    background: var(--app-white);
    color: var(--app-gray-700);
    border: 1px solid var(--app-gray-200);
}

.app-alert--success {
    background: var(--app-success-light);
    color: var(--app-success-text);
}

/* Variant purple — zone Récompense. */
.app-alert--purple {
    background: var(--app-purple-light);
    color: var(--app-purple);
}

/* Variant neutral — zones sans identité métier (clubs, users, sports, etc.). */
.app-alert--neutral {
    background: var(--app-gray-100);
    color: var(--app-gray-700);
}

/* Variante : titre + description multi-lignes (pour les notices "Comment ça marche ?") */
.app-alert > div {
    flex: 1;
}

.app-alert > div strong {
    display: block;
    font-weight: 600;
}

.app-alert > div p {
    margin: 0;
    opacity: 0.9;
}

/* Liens et boutons à l'intérieur d'une alert : héritent de la teinte */
/* Liens texte dans une alerte : soulignés — mais PAS les boutons. */
.app-alert a:not(.app-btn) {
    color: inherit;
    text-decoration: underline;
    font-weight: 500;
}

.app-alert .app-btn {
    margin-top: 0.5rem;
    background: rgba(255, 255, 255, 0.7);
    border: 1px solid currentColor;
    color: inherit;
    text-decoration: none;
}

.app-alert .app-btn:hover {
    background: var(--app-white);
    color: inherit;
}

.app-alert .app-btn i { color: inherit; }

/* Boutons sémantiques pleins dans une alerte : on garde leur couleur propre
   (pas le fond semi-blanc + bordure currentColor générique). */
.app-alert .app-btn--warning {
    background: var(--app-warning);
    border-color: var(--app-warning);
    color: var(--app-white);
}
.app-alert .app-btn--warning:hover {
    background: var(--app-warning);
    border-color: var(--app-warning);
    color: var(--app-white);
    filter: brightness(0.95);
}

/* Bouton blanc dans une alerte : aplat blanc plein, SANS bordure
   (override de la règle générique .app-alert .app-btn border currentColor). */
.app-alert .app-btn--white {
    background: var(--app-white);
    border-color: var(--app-white);
    color: var(--app-gray-700);
}
.app-alert .app-btn--white:hover {
    background: var(--app-gray-100);
    border-color: var(--app-gray-100);
    color: var(--app-dark);
}

/* Une boîte teintée posée sur le fond gris de la page porte le filet de sa teinte
   (règle du 25/06, audit du 15/10 : l'encart « Événement certifié » flottait sans bord). */
.app-app-content > .app-alert--warning,
.app-app-content > form > .app-alert--warning,
.app-app-content > .app-alert--info,
.app-app-content > .app-alert--success,
.app-app-content > .app-alert--danger { border: 1px solid; }
.app-app-content > .app-alert--warning,
.app-app-content > form > .app-alert--warning { border-color: var(--app-warning-border); }
.app-app-content > .app-alert--info { border-color: var(--app-info-border); }
.app-app-content > .app-alert--success { border-color: var(--app-success-border); }
.app-app-content > .app-alert--danger { border-color: var(--app-danger-border); }
