/* ================================================================
   NOTIFICATION PANEL
   Styles pour le panneau de notifications affiché depuis la topbar.
   
   Le panneau hérite des styles .activity-item pour les icônes
   et les messages, avec des extensions :
   - État lu/non-lu (indicateur visuel point + opacité)
   - Actions unitaires (toggle read, delete)
   - Panel positionné en overlay depuis la topbar
   - État vide avec icône + message
   
   Utilise les CSS variables du design system (variables.css)
   ================================================================ */

/* ----------------------------------------------------------------
   PANEL CONTAINER
   Positionné sous la cloche topbar, en overlay
   ---------------------------------------------------------------- */

.notification-panel {
    position: fixed;
    top: var(--topbar-height, 60px);
    right: var(--spacing-lg, 1.5rem);
    width: 420px;
    max-width: calc(100vw - 2rem);
    max-height: calc(100vh - var(--topbar-height, 60px) - 2rem);
    background-color: var(--color-surface, #fff);
    border: 1px solid var(--color-border, #e0e0e0);
    border-radius: var(--radius-lg, 12px);
    box-shadow: var(--shadow-lg, 0 8px 32px rgba(0, 0, 0, 0.12));
    z-index: 9999;
    display: flex;
    flex-direction: column;
    overflow: hidden;

    /* Animation d'ouverture */
    opacity: 0;
    transform: translateY(-10px);
    transition: opacity 0.25s ease, transform 0.25s ease;
    pointer-events: none;
}

.notification-panel.is-open {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

/* ----------------------------------------------------------------
   HEADER
   Titre + boutons d'action globaux (tout marquer lu, fermer)
   ---------------------------------------------------------------- */

.notification-panel__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--spacing-sm, 0.75rem) var(--spacing-md, 1rem);
    border-bottom: 1px solid var(--color-border, #e0e0e0);
    flex-shrink: 0;
}

.notification-panel__title {
    font-size: var(--font-size-lg, 1.1rem);
    font-weight: 600;
    color: var(--color-text-primary, #1a1a2e);
    margin: 0;
}

.notification-panel__header-actions {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs, 0.5rem);
}

.notification-panel__action,
.notification-panel__close {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: none;
    background: transparent;
    color: var(--color-text-secondary, #6c757d);
    border-radius: var(--radius-sm, 6px);
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease;
    font-size: 0.9rem;
}

.notification-panel__action:hover,
.notification-panel__close:hover {
    background-color: var(--color-primary-tint, rgba(0, 0, 0, 0.05));
    color: var(--color-text-primary, #1a1a2e);
}

/* ----------------------------------------------------------------
   FILTERS BAR
   Zone de filtres (intégrée via FilterFormModule)
   ---------------------------------------------------------------- */

.notification-panel__filters {
    padding: var(--spacing-xs, 0.5rem) var(--spacing-md, 1rem);
    border-bottom: 1px solid var(--color-border, #e0e0e0);
    flex-shrink: 0;
}

.notification-panel__filters:empty {
    display: none;
}

/* ----------------------------------------------------------------
   BODY / LIST
   Zone scrollable contenant les notifications
   ---------------------------------------------------------------- */

.notification-panel__body {
    flex: 1;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.notification-panel__list {
    display: flex;
    flex-direction: column;
    gap: 0;
}

/* ----------------------------------------------------------------
   NOTIFICATION ITEM
   Extension de .activity-item pour les notifications
   ---------------------------------------------------------------- */

.notification-item {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-sm, 0.75rem);
    padding: var(--spacing-sm, 0.75rem) var(--spacing-md, 1rem);
    border-bottom: 1px solid var(--color-border, #e0e0e0);
    transition: background-color 0.15s ease, opacity 0.3s ease;
    position: relative;
    cursor: default;
}

.notification-item:last-child {
    border-bottom: none;
}

.notification-item:hover {
    background-color: var(--color-primary-tint, rgba(0, 0, 0, 0.02));
}

/* ---- État non-lu ---- */
.notification-item--unread {
    background-color: rgba(var(--color-primary-rgb, 68, 71, 143), 0.04);
}

.notification-item--unread:hover {
    background-color: rgba(var(--color-primary-rgb, 68, 71, 143), 0.07);
}

/* ---- État lu ---- */
.notification-item--read {
    opacity: 0.7;
}

.notification-item--read:hover {
    opacity: 1;
}

/* ---- Indicateur point non-lu ---- */
.notification-item__unread-dot {
    position: absolute;
    top: 50%;
    left: 4px;
    transform: translateY(-50%);
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: var(--color-primary, #44478f);
    transition: opacity 0.2s ease;
}

.notification-item--read .notification-item__unread-dot {
    opacity: 0;
}

.notification-item--unread .notification-item__unread-dot {
    opacity: 1;
}

/* ---- Icon wrapper ---- */
.notification-item__icon-wrapper {
    flex-shrink: 0;
    padding-top: 2px;
}

/* ---- Content ---- */
.notification-item__content {
    flex: 1;
    min-width: 0;
}

.notification-item__header {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-sm, 0.75rem);
}

.notification-item__message {
    font-size: var(--font-size-sm, 0.875rem);
    color: var(--color-text-primary, #1a1a2e);
    line-height: 1.4;
    word-break: break-word;
}

.notification-item--read .notification-item__message {
    color: var(--color-text-secondary, #6c757d);
}

.notification-item__date {
    font-size: var(--font-size-xs, 0.75rem);
    color: var(--color-text-muted, #adb5bd);
}

/* ---- Actions (link, toggle read, delete) ---- */
.notification-item__actions {
    display: flex;
    align-items: center;
    gap: 2px;
    flex-shrink: 0;
    opacity: 0;
    transition: opacity 0.15s ease;
}

.notification-item:hover .notification-item__actions {
    opacity: 1;
}

.notification-item__action {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border: none;
    background: transparent;
    color: var(--color-text-secondary, #6c757d);
    border-radius: var(--radius-xs, 4px);
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease;
    font-size: 0.8rem;
    text-decoration: none;
}

.notification-item__action:hover {
    background-color: var(--color-primary-tint, rgba(0, 0, 0, 0.06));
    color: var(--color-text-primary, #1a1a2e);
}

.notification-item__action--delete:hover {
    background-color: rgba(var(--color-danger-rgb, 231, 76, 60), 0.1);
    color: var(--color-danger, #e74c3c);
}

.notification-item__action--link:hover {
    background-color: rgba(var(--color-primary-rgb, 68, 71, 143), 0.1);
    color: var(--color-primary, #44478f);
}

/* ----------------------------------------------------------------
   EMPTY STATE
   Affiché quand il n'y a pas de notifications
   ---------------------------------------------------------------- */

.notification-panel__empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-xl, 2rem) var(--spacing-md, 1rem);
    text-align: center;
}

.notification-panel__empty-icon {
    font-size: 2.5rem;
    color: var(--color-text-muted, #adb5bd);
    margin-bottom: var(--spacing-sm, 0.75rem);
}

.notification-panel__empty-title {
    font-size: var(--font-size-md, 1rem);
    font-weight: 600;
    color: var(--color-text-primary, #1a1a2e);
    margin: 0 0 var(--spacing-xs, 0.5rem);
}

.notification-panel__empty-text {
    font-size: var(--font-size-sm, 0.875rem);
    color: var(--color-text-secondary, #6c757d);
    margin: 0;
}

/* ----------------------------------------------------------------
   LOAD MORE BUTTON
   ---------------------------------------------------------------- */

.notification-panel .content-loader-actions {
    padding: var(--spacing-sm, 0.75rem) var(--spacing-md, 1rem);
}

.notification-panel .content-loader-actions .btn {
    font-size: var(--font-size-sm, 0.875rem);
}

/* ----------------------------------------------------------------
   RESPONSIVE
   ---------------------------------------------------------------- */

@media (max-width: 480px) {
    .notification-panel {
        width: 100vw;
        max-width: 100vw;
        right: 0;
        left: 0;
        top: var(--topbar-height, 60px);
        border-radius: 0;
        border-left: none;
        border-right: none;
        max-height: calc(100vh - var(--topbar-height, 60px));
    }
}

@media (max-width: 640px) {
    .notification-panel {
        width: calc(100vw - 1rem);
        right: 0.5rem;
    }

    .notification-item {
        padding: var(--spacing-xs, 0.5rem) var(--spacing-sm, 0.75rem);
    }

    .notification-item__actions {
        opacity: 1;
    }
}

/* ----------------------------------------------------------------
   ACCESSIBILITY
   Réduction de mouvement pour les utilisateurs sensibles
   ---------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
    .notification-panel {
        transition: none;
    }

    .notification-item {
        transition: none;
    }

    .notification-item__actions {
        opacity: 1;
        transition: none;
    }
}
