/* Notifications (srvNotif) : en haut à droite de l'ÉCRAN, toujours visibles même après
   défilement. Au-dessus des fenêtres Angular Material (z-index ~80-100). */
.gf-notifs {
    position: fixed;
    top: 76px;
    right: 20px;
    z-index: 10000;
    display: flex;
    flex-direction: column;
    gap: 12px;
    width: 380px;
    max-width: calc(100vw - 32px);
    pointer-events: none;
}

.gf-notif {
    --gf-n: #1D9E75;
    --gf-n-teinte: rgba(29, 158, 117, 0.12);
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 16px 40px 18px 16px;
    background: #fff;
    border-radius: 14px;
    border-left: 5px solid var(--gf-n);
    box-shadow: 0 14px 36px rgba(15, 23, 42, 0.18), 0 2px 6px rgba(15, 23, 42, 0.08);
    overflow: hidden;
    pointer-events: auto;
    font-family: inherit;
    animation: gf-notif-entree 0.38s cubic-bezier(0.21, 1.02, 0.73, 1) both;
}

.gf-notif--succes { --gf-n: #1D9E75; --gf-n-teinte: rgba(29, 158, 117, 0.13); }
.gf-notif--erreur { --gf-n: #D92D20; --gf-n-teinte: rgba(217, 45, 32, 0.12); }
.gf-notif--avertissement { --gf-n: #E58A00; --gf-n-teinte: rgba(229, 138, 0, 0.14); }
.gf-notif--info { --gf-n: #1F6FD1; --gf-n-teinte: rgba(31, 111, 209, 0.12); }

.gf-notif__icone {
    flex: 0 0 auto;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--gf-n-teinte);
    color: var(--gf-n);
    font-size: 17px;
    animation: gf-notif-pop 0.5s 0.15s cubic-bezier(0.34, 1.56, 0.64, 1) both;
}

/* Certaines pages animent toutes les icônes d'un type (ex. .fa-times qui clignote sur la
   page du document) : l'icône d'une notification n'en hérite pas. */
.gf-notif__icone i { animation: none !important; opacity: 1 !important; }

.gf-notif__corps { flex: 1 1 auto; min-width: 0; }

.gf-notif__titre {
    font-weight: 700;
    font-size: 15px;
    color: #101828;
    margin-bottom: 3px;
}

.gf-notif__texte {
    font-size: 14px;
    line-height: 1.45;
    color: #475467;
    overflow-wrap: anywhere;
}

.gf-notif__fermer {
    position: absolute;
    top: 8px;
    right: 10px;
    width: 28px;
    height: 28px;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: #98A2B3;
    font-size: 22px;
    line-height: 26px;
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}

.gf-notif__fermer:hover { background: #F2F4F7; color: #344054; }

.gf-notif__barre {
    position: absolute;
    left: 0;
    bottom: 0;
    height: 3px;
    width: 100%;
    background: var(--gf-n);
    opacity: 0.55;
    transform-origin: left;
    animation-name: gf-notif-temps;
    animation-timing-function: linear;
    animation-fill-mode: forwards;
}

.gf-notif--pause .gf-notif__barre { animation-play-state: paused; }

.gf-notif--sortie { animation: gf-notif-sortie 0.26s ease-in forwards; }

@keyframes gf-notif-entree {
    from { opacity: 0; transform: translateX(40px) scale(0.96); }
    to { opacity: 1; transform: none; }
}

@keyframes gf-notif-sortie {
    to { opacity: 0; transform: translateX(40px); }
}

@keyframes gf-notif-pop {
    from { transform: scale(0.4); opacity: 0; }
    to { transform: scale(1); opacity: 1; }
}

@keyframes gf-notif-temps {
    from { transform: scaleX(1); }
    to { transform: scaleX(0); }
}

@media (max-width: 600px) {
    .gf-notifs { top: 64px; right: 16px; left: 16px; width: auto; }
}

@media (prefers-reduced-motion: reduce) {
    .gf-notif, .gf-notif__icone, .gf-notif--sortie { animation: none; }
}
