/* ============================================================
   WEDORIA SHELL — Refonte back office · Phase 1 (2026-08)
   Couche chargée APRÈS app.css. Ne touche QUE le shell :
   géométrie sidebar/topbar, nav, menus, tab bar mobile, motion.
   Les pages (listes, fiches, dashboard) restent sur app.css
   jusqu'aux phases 2-3.
   ============================================================ */

:root {
    /* Tokens refonte — hairlines, ombres douces, motion */
    --wd-hairline:   rgba(26, 26, 31, 0.07);
    --wd-hairline-2: rgba(26, 26, 31, 0.12);
    --wd-gold-wash:  #F4EDDF;
    --wd-shadow-soft: 0 1px 2px rgba(26, 26, 31, .03), 0 8px 32px -12px rgba(26, 26, 31, .10);
    --wd-shadow-lift: 0 2px 4px rgba(26, 26, 31, .04), 0 18px 50px -16px rgba(26, 26, 31, .16);
    --wd-ease: cubic-bezier(0.32, 0.72, 0, 1);
    --wd-side-w: 232px;
    --wd-side-w-rail: 76px;
    /* Échelle de rayons — source de vérité de la refonte */
    --wd-r-card: 16px;   /* grandes cartes et surfaces */
    --wd-r-panel: 14px;  /* menus flottants, modales, alertes */
    --wd-r-ctl: 10px;    /* boutons, champs */
    --wd-r-chip: 8px;    /* chips, petits éléments */
}

/* ============================================================
   0. ÉCHELLE DE RAYONS — remplace les chartes « angles vifs »
   (section 113, radius 0 !important) et « radius 4px »
   (section 115) d'app.css : mêmes groupes, valeurs du design
   system, déclaré plus tard dans la cascade.
   ============================================================ */

/* Surfaces : cartes */
.card,
.wd-kpi,
.wd-next-event,
.wd-auth-card,
.wd-empty-state,
.wd-empty-state--inline,
.wd-filter-card,
.wd-vendor-card,
.ep-event-hero,
.ep-event-kpi,
.ep-partner-card,
.ep-form-section,
.ep-admin-zone,
.ep-admin-zone-content,
.ep-list,
.ep-board-table,
.board,
.wd-chart-card,
.wd-feed-card,
.wd-tasks-card,
.wd-gcard {
    border-radius: var(--wd-r-card) !important;
}

/* Panneaux flottants : menus, modales, alertes */
.dropdown-menu,
.modal-content,
.wd-task-modal .modal-content,
.alert,
.toast,
.popover,
.offcanvas,
.wd-search-menu,
.toolbar-more-dropdown,
.wd-task-mention-menu,
.ep-modal-errors {
    border-radius: var(--wd-r-panel) !important;
}

/* Contrôles : boutons, champs.
   Les sélecteurs composés reprennent ceux du bloc « inputs 4px !important »
   d'app.css (l.~9750) — à spécificité égale, le dernier gagne. */
.btn,
.form-control,
.form-select,
.ep-topbar-search .form-control,
.wd-filter-card .form-control,
.wd-filter-card .form-select,
.input-group-text,
.pagination .page-link,
.nav-pills .nav-link,
.board-toolbar-search input,
.trix-content,
trix-editor,
.wd-task-edit-title-input,
.wd-task-edit-trix trix-editor,
.wd-task-sidebar--edit .wd-task-edit-select,
.wd-task-sidebar--edit .wd-task-edit-input,
.wd-task-composer-input {
    border-radius: var(--wd-r-ctl) !important;
}

/* Petits éléments : chips, badges, lignes */
.badge,
.wd-filter-badge,
.wd-role-badge,
.wd-section-count,
.wd-cat-section-count,
.wd-cat-chip,
.wd-task-pill,
.wd-task-section-count,
.wd-view-toggle,
.wd-view-toggle-btn,
.wd-task-check,
.wd-task-attachment,
.wd-task-attachment-icon,
.wd-task-composer,
.wd-task-comment-body,
.wd-task-mention-item,
.wd-task-mention,
.wd-task-side-action,
.wd-task-edit-attachment,
.wd-conv-msg-bubble,
.wd-conv-filter,
.ep-row,
.ep-file-dropzone,
.ep-file-list-item,
.ep-vendor-gallery-item,
.board-toolbar-item,
.board-toolbar-view,
.tooltip-inner {
    border-radius: var(--wd-r-chip) !important;
}

/* Pills assumées */
.board-toolbar-add,
.progress {
    border-radius: 999px !important;
}

/* Groupes de boutons : angles internes droits conservés */
.btn-group > .btn:not(:first-child):not(:last-child) { border-radius: 0 !important; }
.btn-group > .btn:first-child { border-top-right-radius: 0 !important; border-bottom-right-radius: 0 !important; }
.btn-group > .btn:last-child { border-top-left-radius: 0 !important; border-bottom-left-radius: 0 !important; }

/* Harmonisation des variables Bootstrap (composants non listés) */
:root,
[data-bs-theme="light"] {
    --bs-border-radius: var(--wd-r-ctl);
    --bs-border-radius-sm: var(--wd-r-chip);
    --bs-border-radius-lg: var(--wd-r-panel);
    --bs-border-radius-xl: var(--wd-r-card);
    --bs-border-radius-xxl: 18px;
    --bs-border-radius-pill: 999px;
}

/* ============================================================
   1. GÉOMÉTRIE — sidebar colonne pleine hauteur, topbar décalée
   ============================================================ */

@media (min-width: 768px) {
    #sidebar {
        top: 0;
        bottom: 0;
        left: 0;
        width: var(--wd-side-w);
        border-radius: 0;
        box-shadow: none;
        /* Opaque et non transparent : un fixed transparent dépend de la
           couche derrière lui — les captures pleine page iOS le composent
           mal (sidebar sable sur contenu blanchi). Même ivoire que le body. */
        background: var(--wd-ivoire);
        border-right: 1px solid var(--wd-hairline);
        display: flex;
        flex-direction: column;
        overflow-y: auto;
        transition: width 450ms var(--wd-ease);
        z-index: 1041;
    }
    #sidebar.ep-sidebar-collapsed { width: var(--wd-side-w-rail); }

    /* Topbar pleine largeur, SANS bordure propre : comme la maquette,
       la hairline est une règle insérée dans la colonne de contenu
       (du bord gauche de la recherche au bord droit de l'avatar). */
    .ep-topbar.fixed-top {
        left: 0;
        right: 0;
        background: var(--wd-ivoire);
        box-shadow: none;
        border-bottom: none;
        transition: padding-left 450ms var(--wd-ease);
        padding: 0 1.6rem 0 calc(var(--wd-side-w) + 1.6rem);
    }
    .ep-topbar.fixed-top::after {
        content: '';
        position: absolute;
        left: calc(var(--wd-side-w) + 1.6rem);
        right: 1.6rem;
        bottom: 0;
        height: 1px;
        background: var(--wd-hairline);
        transition: left 450ms var(--wd-ease);
    }
    body.ep-sidebar-hidden .ep-topbar.fixed-top { padding-left: calc(var(--wd-side-w-rail) + 1.6rem); }
    body.ep-sidebar-hidden .ep-topbar.fixed-top::after { left: calc(var(--wd-side-w-rail) + 1.6rem); }

    .ep-main-content {
        margin-left: var(--wd-side-w);
        padding: 1.5rem 2.2rem 3rem;
        transition: margin-left 450ms var(--wd-ease);
    }
    /* Les variantes :has() héritées d'app.css (68px) portent un ID dans le
       :has → spécificité supérieure. On les redéclare ici pour gagner. */
    body.ep-sidebar-hidden .ep-topbar.fixed-top,
    body:has(#sidebar.ep-sidebar-collapsed) .ep-topbar.fixed-top {
        left: 0;
        padding-left: calc(var(--wd-side-w-rail) + 1.6rem);
    }
    body:has(#sidebar:not(.ep-sidebar-collapsed)) .ep-topbar.fixed-top { left: 0; }
    body.ep-sidebar-hidden .ep-main-content,
    body:has(#sidebar.ep-sidebar-collapsed) .ep-main-content { margin-left: var(--wd-side-w-rail); }
}

/* ============================================================
   2. SIDEBAR — tête (logo + réduction), nav, pied (abonnement)
   ============================================================ */

/* Tête de sidebar : même hauteur que la topbar (64px), sans bordure
   propre — la hairline pleine largeur de la topbar passe dessous. */
.wd-side-head {
    display: flex;
    align-items: center;
    height: 64px;
    min-height: 64px;
    padding: 0 1.15rem;
    flex: none;
}
#sidebar.ep-sidebar-collapsed .wd-side-head {
    justify-content: center;
    padding: 0 0.5rem;
}
.ep-sidebar-scroll { padding-top: 0.35rem; }
.ep-sidebar-brand { padding: 0 !important; margin: 0 !important; }
.ep-sidebar-brand a { line-height: 0; display: flex; align-items: center; }
/* Neutralise la 2e définition d'app.css (l.~6517) : height 64 +
   border-bottom filet — c'était LA barre fantôme sous le logo. */
.ep-sidebar-brand {
    height: auto !important;
    border-bottom: none !important;
    box-shadow: none !important;
}
.ep-brand-logo-full { height: 22px; width: auto; display: block; }
.ep-brand-logo-mark { height: 24px; width: auto; display: none; }
#sidebar.ep-sidebar-collapsed .ep-brand-logo-full { display: none; }
#sidebar.ep-sidebar-collapsed .ep-brand-logo-mark { display: block; }

/* Bouton de réduction — dans la topbar, à gauche de la recherche */
.wd-side-toggle {
    width: 34px;
    height: 34px;
    border: none;
    border-radius: 8px;
    background: transparent;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--ep-text-muted);
    font-size: 1rem;
    padding: 0;
    flex: none;
    transition: background 200ms var(--wd-ease), color 200ms var(--wd-ease);
}
.wd-side-toggle:hover { background: rgba(26, 26, 31, 0.05); color: var(--wd-onyx); }
.wd-side-toggle i { transition: transform 450ms var(--wd-ease); display: block; }
body.ep-sidebar-hidden .wd-side-toggle i { transform: rotate(180deg); }

/* Zone scrollable de la nav */
.ep-sidebar-scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding-bottom: 0.5rem; }

/* Eyebrows de section */
.ep-sidebar-section { padding: 1rem 1.15rem 0.4rem; margin-top: 0; }
.ep-sidebar-label {
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    color: var(--ep-text-muted);
}

/* Entrées de nav */
#sidebar .nav-link {
    font-size: 0.86rem;
    font-weight: 500;
    color: var(--ep-text-secondary);
    padding: 0.5rem 0.75rem;
    margin: 1px 0.7rem;
    border-radius: 9px;
    gap: 0.15rem;
    transition: background 200ms var(--wd-ease), color 200ms var(--wd-ease);
}
#sidebar .nav-link i {
    font-size: 1rem;
    opacity: 0.8;
    transition: transform 300ms var(--wd-ease);
}
#sidebar .nav-link:hover {
    background: rgba(26, 26, 31, 0.045);
    color: var(--wd-onyx);
}
#sidebar .nav-link:hover i { transform: translateX(2px); }
#sidebar .nav-link.active {
    background: var(--wd-onyx);
    color: var(--wd-ivoire);
    font-weight: 600;
    box-shadow: var(--wd-shadow-soft);
}
#sidebar .nav-link.active i { color: var(--wd-or); opacity: 1; }
#sidebar.ep-sidebar-collapsed .nav-link { margin: 1px 0.6rem; }
#sidebar.ep-sidebar-collapsed .nav-link i { font-size: 1.05rem; }

/* Badge (messages non lus) */
.ep-sidebar-badge {
    background: var(--wd-gold-wash);
    color: var(--wd-or-profond);
    font-size: 0.66rem;
    font-weight: 700;
    border-radius: 999px;
    padding: 0.1rem 0.45rem;
    line-height: 1.4;
}
#sidebar .nav-link.active .ep-sidebar-badge {
    background: rgba(255, 255, 255, 0.14);
    color: var(--wd-or);
}

/* Pied : widget abonnement en pill discrète */
.wd-side-foot {
    flex: none;
    padding: 0.7rem 0.9rem calc(0.9rem + env(safe-area-inset-bottom));
    border-top: 1px solid var(--wd-hairline);
}
.wd-side-foot .wd-sub-widget {
    display: block;
    border: 1px dashed var(--wd-hairline-2);
    border-radius: 11px;
    padding: 0.6rem 0.75rem;
    text-decoration: none;
    transition: border-color 200ms var(--wd-ease);
}
.wd-side-foot .wd-sub-widget:hover { border-color: var(--wd-or); }
#sidebar.ep-sidebar-collapsed .wd-side-foot { padding-left: 0.5rem; padding-right: 0.5rem; }
#sidebar.ep-sidebar-collapsed .wd-sub-widget { padding: 0.55rem 0.3rem; text-align: center; }
#sidebar.ep-sidebar-collapsed .wd-sub-widget-row > *:not(.wd-sub-widget-dot),
#sidebar.ep-sidebar-collapsed .wd-sub-widget-quota,
#sidebar.ep-sidebar-collapsed .wd-sub-widget-progress,
#sidebar.ep-sidebar-collapsed .wd-sub-widget-meta { display: none; }
#sidebar.ep-sidebar-collapsed .wd-sub-widget-row { justify-content: center; }

/* ============================================================
   3. TOPBAR — recherche ⌘K, bouton Créer, cloche, profil
   ============================================================ */

.ep-topbar .container-fluid { padding: 0; gap: 0.85rem; }

/* Recherche globale en pill */
.ep-topbar-search {
    position: relative;
    flex: 1 1 auto;
    max-width: 440px;
    margin-left: 0 !important;
}
.ep-topbar-search .form-control {
    background: var(--ep-bg-surface);
    border: 1px solid var(--wd-hairline);
    box-shadow: var(--wd-shadow-soft);
    height: 40px;
    padding: 0.5rem 3.4rem 0.5rem 2.3rem;
    font-size: 0.84rem;
    transition: border-color 250ms var(--wd-ease), box-shadow 250ms var(--wd-ease);
}
.ep-topbar-search .form-control:hover,
.ep-topbar-search .form-control:focus {
    border-color: rgba(184, 154, 94, 0.5);
    box-shadow: 0 0 0 3px rgba(184, 154, 94, 0.12);
    outline: none;
}
.ep-topbar-search .ep-search-icon {
    position: absolute;
    left: 0.85rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--ep-text-muted);
    font-size: 0.9rem;
    pointer-events: none;
    z-index: 2;
}
.wd-search-kbd {
    position: absolute;
    right: 0.7rem;
    top: 50%;
    transform: translateY(-50%);
    font-size: 0.66rem;
    font-weight: 600;
    color: var(--ep-text-muted);
    background: var(--wd-ivoire);
    border: 1px solid var(--wd-hairline-2);
    border-radius: 5px;
    padding: 0.1rem 0.4rem;
    pointer-events: none;
    z-index: 2;
}

/* Bouton Créer */
.wd-create-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    background: var(--wd-onyx);
    color: var(--wd-ivoire);
    border: none;
    border-radius: 999px;
    padding: 0.45rem 0.5rem 0.45rem 1.05rem;
    font-size: 0.84rem;
    font-weight: 600;
    cursor: pointer;
    box-shadow: var(--wd-shadow-soft);
    transition: transform 250ms var(--wd-ease), box-shadow 250ms var(--wd-ease);
}
.wd-create-btn:hover {
    transform: translateY(-1px);
    box-shadow: var(--wd-shadow-lift);
    color: var(--wd-ivoire);
}
.wd-create-btn:active { transform: scale(0.98); }
.wd-create-plus {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.14);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    color: var(--wd-or);
    transition: transform 250ms var(--wd-ease);
}
.wd-create-btn:hover .wd-create-plus { transform: rotate(90deg) scale(1.08); }

/* Cloche */
.ep-notification-bell {
    width: 36px;
    height: 36px;
    border: none;
    border-radius: 50%;
    background: transparent;
    color: var(--ep-text-secondary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.05rem;
    position: relative;
    transition: background 200ms var(--wd-ease);
}
.ep-notification-bell:hover { background: rgba(26, 26, 31, 0.05); }
.ep-notification-bell i { transform-origin: 50% 15%; display: block; }
.ep-notification-bell:hover i { animation: wd-ring 650ms var(--wd-ease); }
@keyframes wd-ring {
    0% { transform: rotate(0); }
    20% { transform: rotate(-13deg); }
    40% { transform: rotate(10deg); }
    60% { transform: rotate(-6deg); }
    80% { transform: rotate(3deg); }
    100% { transform: rotate(0); }
}

/* Avatar / chip profil */
.ep-avatar {
    background: linear-gradient(135deg, #2A2830, var(--wd-onyx));
    color: var(--wd-or);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
}
.ep-topbar-divider { display: none !important; }

/* ============================================================
   4. MENUS — dropdowns du shell (Créer, profil) + recherche
   ============================================================ */

.ep-topbar .dropdown-menu {
    border: 1px solid var(--wd-hairline);
    border-radius: 14px;
    box-shadow: var(--wd-shadow-lift);
    padding: 0.45rem;
    min-width: 236px;
    margin-top: 10px !important;
}
.ep-topbar .dropdown-menu.show { animation: wd-pop 250ms var(--wd-ease); }
@keyframes wd-pop {
    from { opacity: 0; transform: translateY(-6px) scale(0.98); }
}
.ep-topbar .dropdown-item {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.48rem 0.6rem;
    border-radius: 8px;
    font-size: 0.82rem;
    font-weight: 500;
    color: var(--ep-text-secondary);
    transition: background 180ms var(--wd-ease), color 180ms var(--wd-ease);
}
.ep-topbar .dropdown-item:hover {
    background: rgba(26, 26, 31, 0.045);
    color: var(--wd-onyx);
}
.ep-topbar .dropdown-item i { font-size: 0.9rem; opacity: 0.7; width: 18px; text-align: center; }
.ep-topbar .dropdown-item.wd-menu-danger { color: var(--ep-danger); }
.ep-topbar .dropdown-item.wd-menu-danger:hover { background: rgba(178, 90, 74, 0.07); color: var(--ep-danger); }
.ep-topbar .dropdown-divider { border-color: var(--wd-hairline); margin: 0.35rem 0.4rem; opacity: 1; }
.wd-menu-eyebrow {
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--ep-text-muted);
    padding: 0.45rem 0.6rem 0.25rem;
}

/* Résultats de recherche */
.wd-search-menu {
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    right: 0;
    background: var(--ep-bg-surface);
    border: 1px solid var(--wd-hairline);
    border-radius: 14px;
    box-shadow: var(--wd-shadow-lift);
    padding: 0.45rem;
    max-height: 420px;
    overflow-y: auto;
    z-index: 1050;
    animation: wd-pop 250ms var(--wd-ease);
}

/* ============================================================
   5. MOBILE — tab bar iOS + feuilles
   ============================================================ */

.wd-tabbar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1045;
    display: none;
    grid-template-columns: repeat(5, 1fr);
    align-items: end;
    background: rgba(250, 247, 242, 0.88);
    -webkit-backdrop-filter: blur(18px);
    backdrop-filter: blur(18px);
    border-top: 1px solid var(--wd-hairline);
    padding: 0.35rem 0.4rem calc(0.35rem + env(safe-area-inset-bottom));
}
.wd-tab {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    min-height: 48px;
    font-size: 0.6rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--ep-text-muted);
    text-decoration: none;
    background: none;
    border: none;
    cursor: pointer;
    transition: color 200ms var(--wd-ease), transform 200ms var(--wd-ease);
}
.wd-tab:active { transform: scale(0.94); }
.wd-tab i { font-size: 1.25rem; line-height: 1; }
.wd-tab.active { color: var(--wd-onyx); }
.wd-tab.active i { color: var(--wd-or-profond); }
.wd-tab-fab {
    width: 50px;
    height: 50px;
    border-radius: 50%;
    background: var(--wd-onyx);
    color: var(--wd-or);
    font-size: 1.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: -22px;
    box-shadow: var(--wd-shadow-lift);
    transition: transform 250ms var(--wd-ease);
}
.wd-tab:active .wd-tab-fab { transform: scale(0.92); }
.wd-tab-fab i { font-size: 1.5rem; color: var(--wd-or); }

/* Feuilles bas d'écran (Créer / Menu) */
.wd-sheet-backdrop {
    position: fixed;
    inset: 0;
    z-index: 1046;
    background: rgba(26, 26, 31, 0.35);
    opacity: 0;
    pointer-events: none;
    transition: opacity 300ms var(--wd-ease);
}
.wd-sheet {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1047;
    background: var(--ep-bg-surface);
    border-radius: 18px 18px 0 0;
    box-shadow: var(--wd-shadow-lift);
    padding: 0.6rem 0.8rem calc(1rem + env(safe-area-inset-bottom));
    max-height: 78dvh;
    overflow-y: auto;
    transform: translateY(105%);
    transition: transform 380ms var(--wd-ease);
}
.wd-sheet-open .wd-sheet-backdrop { opacity: 1; pointer-events: auto; }
.wd-sheet-open .wd-sheet.is-open { transform: none; }
.wd-sheet-grip {
    width: 36px;
    height: 4px;
    border-radius: 4px;
    background: var(--wd-hairline-2);
    margin: 0.2rem auto 0.7rem;
}
.wd-sheet-title {
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--ep-text-muted);
    padding: 0.3rem 0.6rem 0.5rem;
}
.wd-sheet-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
    padding: 0.72rem 0.6rem;
    border: none;
    background: none;
    border-radius: 10px;
    font-size: 0.92rem;
    font-weight: 500;
    color: var(--ep-text-primary);
    text-decoration: none;
    text-align: left;
    transition: background 180ms var(--wd-ease);
}
.wd-sheet-item:active, .wd-sheet-item:hover { background: rgba(26, 26, 31, 0.045); color: var(--wd-onyx); }
.wd-sheet-item i { font-size: 1.05rem; opacity: 0.75; width: 22px; text-align: center; }
.wd-sheet-item.wd-menu-danger { color: var(--ep-danger); }
.wd-sheet-sep { height: 1px; background: var(--wd-hairline); margin: 0.4rem 0.6rem; }

@media (max-width: 767.98px) {
    #sidebar { display: none !important; }
    .wd-tabbar { display: grid; }
    /* Neutralise la géométrie desktop d'app.css (topbar left 240px,
       main margin 240px + variantes :has plus spécifiques). */
    .ep-topbar, .ep-topbar.fixed-top,
    body.ep-sidebar-hidden .ep-topbar,
    body:has(#sidebar.ep-sidebar-collapsed) .ep-topbar { left: 0; }
    .ep-main-content,
    body.ep-sidebar-hidden .ep-main-content,
    body:has(#sidebar.ep-sidebar-collapsed) .ep-main-content {
        margin-left: 0;
        border-top-left-radius: 0;
        padding-bottom: calc(92px + env(safe-area-inset-bottom));
    }
    .ep-topbar { padding: 0 0.4rem; }
}

/* ============================================================
   6. MOTION — entrée de page, accessibilité
   ============================================================ */

.ep-main-content { animation: wd-rise 500ms var(--wd-ease); }
@keyframes wd-rise {
    from { opacity: 0; transform: translateY(10px); }
}

@media (prefers-reduced-motion: reduce) {
    #sidebar, .ep-topbar.fixed-top, .ep-main-content,
    .wd-side-toggle i, .wd-sheet, .wd-sheet-backdrop,
    .wd-create-btn, .wd-create-plus, .wd-tab {
        transition: none !important;
        animation: none !important;
    }
    .ep-main-content { animation: none; }
    .ep-notification-bell:hover i { animation: none; }
}
