/* Motion is a shared UI role. Keep it outside the protected institutional card. */
:root {
    --idigis-motion-fast: 110ms;
    --idigis-motion-normal: 180ms;
    --idigis-motion-slow: 260ms;
    --idigis-ease-out: cubic-bezier(.2,.8,.2,1);
    --idigis-ease-in: cubic-bezier(.4,0,1,1);
}
@media screen {
    .admin-route {min-width:0;animation:ui-route-enter var(--idigis-motion-slow) var(--idigis-ease-out);}
    .admin-route :is(.admin-page,.home-rows,.home-birthdays,.member-detail-content,.cg-detail-panel) {animation:none;}
    .admin-sidebar .menu-list a,
    .mobile-bottom-nav a {
        transition:background-color var(--idigis-motion-normal) ease,color var(--idigis-motion-normal) ease,
            box-shadow var(--idigis-motion-normal) ease;
    }
    .admin-sidebar .menu-list a .icon {transition:scale var(--idigis-motion-normal) var(--idigis-ease-out);}
    .admin-sidebar .menu-list a:active .icon {scale:.9;}
    .admin-sidebar .menu-list a.is-active .icon {animation:ui-nav-select var(--idigis-motion-slow) var(--idigis-ease-out);}

    :is(.admin-page,.auth-shell,.worship-public,.landing,.check-card,.public-empty) {
        animation: ui-page-enter var(--idigis-motion-normal) var(--idigis-ease-out);
    }
    :where(.admin-page,.ui-modal,.auth-shell,.landing,.worship-public,.admin-topbar,.admin-sidebar,.mobile-bottom-nav)
    :is(.button,button[role=tab],.tabs a,.home-link,.home-person,.home-event,.worship-list-row,.overview-insights__item,.chooser-card):not(.id-card *) {
        transition: background-color var(--idigis-motion-fast) ease, color var(--idigis-motion-fast) ease,
            border-color var(--idigis-motion-fast) ease, box-shadow var(--idigis-motion-normal) ease,
            transform var(--idigis-motion-fast) var(--idigis-ease-out);
        -webkit-tap-highlight-color: transparent;
    }
    :where(.admin-page,.ui-modal,.auth-shell,.landing,.worship-public)
    :is(.input,.textarea,.select select):not(.id-card *) {
        transition: border-color var(--idigis-motion-fast) ease, box-shadow var(--idigis-motion-fast) ease,
            background-color var(--idigis-motion-fast) ease;
    }
    :where(.admin-page,.ui-modal,.auth-shell,.landing,.worship-public)
    .button:not(:disabled):not(.is-loading):not(.id-card *):active { transform:translateY(1px); }
    :is(.home-rows,.home-birthdays,.overview-insights__items,.member-detail-content,.cg-detail-panel,.ai-turn) {
        animation:ui-content-enter var(--idigis-motion-normal) var(--idigis-ease-out);
    }
    :is(.ui-modal__body,.ui-modal__foot,.ui-modal__head) {scroll-behavior:auto;}
    .ui-modal .modal-card {animation:ui-dialog-enter var(--idigis-motion-normal) var(--idigis-ease-out);}
    .ui-modal .modal-background {animation:ui-content-enter var(--idigis-motion-normal) ease;}
    :is(.skeleton-line,.skeleton-pill,.skeleton-avatar,.skeleton-block) {animation:ui-loading-pulse 1.6s ease-in-out infinite;background:var(--idigis-surface-muted);}
    :is(.ui-table-skeleton,.ui-form-skeleton,.ui-card-grid-skeleton,.home-timeline-skeleton) {
        animation:ui-loading-pulse 1.6s ease-in-out infinite;
    }
    :is(.ui-table-skeleton,.ui-form-skeleton,.ui-card-grid-skeleton,.home-timeline-skeleton)
    :is(.skeleton-line,.skeleton-pill,.skeleton-avatar,.skeleton-block) {
        animation:none;
        background:var(--idigis-surface-muted);
    }
    :is(.ui-action-menu__items,.ui-field-panel):popover-open {
        transition:opacity var(--idigis-motion-fast) ease, translate var(--idigis-motion-fast) var(--idigis-ease-out),
            display var(--idigis-motion-fast) allow-discrete, overlay var(--idigis-motion-fast) allow-discrete;
        opacity:1;translate:0 0;
    }
    /* Browsers without discrete transitions keep their native immediate dismissal. */
    @supports (transition-behavior:allow-discrete) {
        :is(.ui-action-menu__items,.ui-field-panel):not(:popover-open) {opacity:0;translate:0 -3px;}
        @starting-style { :is(.ui-action-menu__items,.ui-field-panel):popover-open {opacity:0;translate:0 -3px;} }
    }
}
@media (hover:hover) and (pointer:fine) {
    :where(.admin-page,.ui-modal,.auth-shell,.landing,.worship-public)
    .button:not(:disabled):not(.is-loading):not(.id-card *):hover {transform:translateY(-1px);}
}
@keyframes ui-route-enter {from{opacity:0;}to{opacity:1;}}
@keyframes ui-nav-select {0%{scale:.88;}65%{scale:1.08;}100%{scale:1;}}
@keyframes ui-page-enter {from{opacity:0;}to{opacity:1;}}
@keyframes ui-content-enter {from{opacity:0;}to{opacity:1;}}
@keyframes ui-dialog-enter {from{opacity:0;translate:0 6px;}to{opacity:1;translate:0 0;}}
@keyframes ui-loading-pulse {0%,100%{opacity:.65;}50%{opacity:1;}}
@media(prefers-reduced-motion:reduce) {
    :is(.admin-route,.admin-page,.ui-modal,.auth-shell,.worship-public,.landing,.check-card,.public-empty,
        .ui-table-skeleton,.ui-form-skeleton,.ui-card-grid-skeleton,.home-timeline-skeleton),
    :is(.admin-page,.ui-modal,.auth-shell,.worship-public,.landing,.admin-topbar,.admin-sidebar,.mobile-bottom-nav) *:not(.id-card):not(.id-card *) {
        animation:none!important;transition:none!important;scroll-behavior:auto!important;
    }
}
@media print {
    :is(.admin-route,.admin-page,.ui-modal,.worship-public) {animation:none!important;translate:none!important;}
}

/* State changes restart only the presentation, without recreating form components or losing drafts. */
.ui-transition {min-width:0;animation:ui-panel-enter-a var(--idigis-motion-normal) var(--idigis-ease-out);}
.ui-transition--alternate {animation-name:ui-panel-enter-b;}
@keyframes ui-panel-enter-a {from{opacity:.25;}to{opacity:1;}}
@keyframes ui-panel-enter-b {from{opacity:.25;}to{opacity:1;}}
:is(.member-detail-tabs,.cg-detail-tabs,.member-categories,.cg-categories,.adm-tabs,.system-audit-tabs,.fin-fund-tabs,.fin-quick-tabs,.visits-source-switch,.visits-view-switch,.agenda-view-switch,.fm-view,.cg-sections,.worship-dialog-switch) button {
    transition:color var(--idigis-motion-normal) ease,background-color var(--idigis-motion-normal) ease,border-color var(--idigis-motion-normal) ease,box-shadow var(--idigis-motion-normal) ease;
}
@media(prefers-reduced-motion:reduce) {.ui-transition{animation:none!important;}}
@media print {.ui-transition{animation:none!important;}}
