/* Con Admin Motion System — source of truth for public/admin action motion.
   Keep this file small, reusable, and dependency-loaded instead of appending per-shortcode overrides. */
:root{
  --con-admin-motion-duration-fast:140ms;
  --con-admin-motion-duration:200ms;
  --con-admin-motion-duration-slow:260ms;
  --con-admin-motion-ease:cubic-bezier(.2,.7,.2,1);
  --con-admin-motion-y:2px;
  --con-admin-motion-ring:rgba(48,86,143,.08);
}
@keyframes conAdminSubtleUpdate{0%{opacity:.9;transform:translateY(1px);box-shadow:0 0 0 0 rgba(48,86,143,0);}55%{opacity:1;transform:translateY(0);box-shadow:0 0 0 2px var(--con-admin-motion-ring);}100%{opacity:1;transform:translateY(0);box-shadow:0 0 0 0 rgba(48,86,143,0);}}
@keyframes conAdminSubtleEnter{0%{opacity:0;transform:translateY(var(--con-admin-motion-y));}100%{opacity:1;transform:translateY(0);}}
@keyframes conAdminSubtleBusy{0%,100%{opacity:.82;filter:saturate(.96);}50%{opacity:1;filter:saturate(1.01);}}
@keyframes conAdminSubtleComplete{0%{box-shadow:0 0 0 0 rgba(22,163,74,0);opacity:.92;}55%{box-shadow:0 0 0 2px rgba(22,163,74,.09);opacity:1;}100%{box-shadow:0 0 0 0 rgba(22,163,74,0);opacity:1;}}
.con-admin-ui-refreshed,.con-admin-ui-flash,.is-motion-updated,.is-stat-updated,.con-admin-ui-state-pop,.con-admin-ui-action-pulse{animation:conAdminSubtleUpdate var(--con-admin-motion-duration) var(--con-admin-motion-ease) both;}
.con-admin-ui-enter,.con-admin-feed-motion-enter,.con-admin-motion-enter,.con-admin-listing-row--enter{animation:conAdminSubtleEnter var(--con-admin-motion-duration) var(--con-admin-motion-ease) both;animation-delay:var(--con-admin-ui-enter-delay,0ms);}
.con-admin-complete-pulse,.is-completing,.con-admin-task-complete-pulse{animation:conAdminSubtleComplete var(--con-admin-motion-duration-slow) var(--con-admin-motion-ease) both;}
.con-admin-ui-refreshing{opacity:.96;filter:saturate(.98);transform:none;transition:opacity var(--con-admin-motion-duration-fast) var(--con-admin-motion-ease),filter var(--con-admin-motion-duration-fast) var(--con-admin-motion-ease);}
.con-admin-motion-removing,.con-admin-feed-motion-removing,.con-admin-2d-fam-row.is-removing,.con-admin-2d-fam-detail-row.is-removing,.con-admin-2d-fam-request-modal__request.is-removing,[data-role="fam-pending-row"].is-removing,.con-admin-row.is-removing,.con-admin-listing-row.is-removing,.con-admin-fam-mail__item.is-removing,.con-admin-staff-task-item.is-removing{pointer-events:none;overflow:hidden;will-change:opacity,transform;transition:opacity var(--con-admin-motion-duration) var(--con-admin-motion-ease),transform var(--con-admin-motion-duration) var(--con-admin-motion-ease);}
.con-admin-motion-removing.is-removing,.con-admin-feed-motion-removing.is-removing,.con-admin-2d-fam-row.is-removing,.con-admin-2d-fam-detail-row.is-removing,.con-admin-2d-fam-request-modal__request.is-removing,[data-role="fam-pending-row"].is-removing,.con-admin-row.is-removing,.con-admin-listing-row.is-removing,.con-admin-fam-mail__item.is-removing,.con-admin-staff-task-item.is-removing{opacity:0;transform:translateY(-2px);}
.con-admin-disclosure-motion,.con-admin-feed-motion-collapse,.con-admin-event-detail.is-animating,.con-admin-schedule-card__details.is-animating,.con-admin-event-ticket__details.is-animating,[data-role="fam-plan-item-details"].is-animating,.con-admin-submissions-body.is-animating{overflow:hidden;box-sizing:border-box;transform-origin:top center;backface-visibility:hidden;will-change:height;}
.con-admin-feed-motion-collapse.is-collapsed,.con-admin-event-detail.is-closing,.con-admin-schedule-card__details.is-closing,.con-admin-event-ticket__details.is-closing,[data-role="fam-plan-item-details"].is-closing,.con-admin-disclosure-motion.is-closing{pointer-events:none;}
.con-admin-event-row__toggle-icon,.con-admin-schedule-card__toggle-icon,.con-admin-2d-fam-plan__title-toggle-icon,.con-admin-event-ticket__toggle-icon,[data-con-event-ticket-toggle] .con-admin-event-row__toggle-icon{transition:transform 160ms var(--con-admin-motion-ease),color 160ms ease,opacity 160ms ease;transform-origin:center;}
.con-admin-event-row.is-expanded .con-admin-event-row__toggle-icon,.con-admin-schedule-card.is-expanded .con-admin-event-row__toggle-icon,.con-admin-2d-fam-plan__item.is-expanded .con-admin-2d-fam-plan__title-toggle-icon,.con-admin-event-ticket.is-expanded .con-admin-event-row__toggle-icon{transform:rotate(90deg);}
.con-admin-favorite-toggle,.con-admin-icon-button,.con-admin-plugin-button,.con-admin-game-action-button,.con-admin-tcg-toggle,.con-admin-2d-fam__fav-fam-link,.con-admin-2d-fam__top-party-link{transition:background-color var(--con-admin-motion-duration-fast) var(--con-admin-motion-ease),border-color var(--con-admin-motion-duration-fast) var(--con-admin-motion-ease),color var(--con-admin-motion-duration-fast) var(--con-admin-motion-ease),box-shadow var(--con-admin-motion-duration-fast) var(--con-admin-motion-ease),opacity var(--con-admin-motion-duration-fast) var(--con-admin-motion-ease),filter var(--con-admin-motion-duration-fast) var(--con-admin-motion-ease);}
.con-admin-favorite-toggle,.con-admin-favorite-toggle *,.con-admin-icon-button,.con-admin-icon-button *,.con-admin-plugin-button,.con-admin-plugin-button *,.con-admin-game-action-button,.con-admin-game-action-button *,.con-admin-tcg-toggle,.con-admin-tcg-toggle *,.con-admin-2d-fam__fav-fam-link,.con-admin-2d-fam__fav-fam-link *,.con-admin-2d-fam__top-party-link,.con-admin-2d-fam__top-party-link *{transform:none;}
.con-admin-favorite-toggle.is-feedback,.con-admin-icon-button.is-feedback,.con-admin-plugin-button.is-feedback,.con-admin-tcg-toggle.is-feedback{box-shadow:0 0 0 2px var(--con-admin-motion-ring);animation:conAdminSubtleUpdate var(--con-admin-motion-duration-fast) var(--con-admin-motion-ease) both;}
.con-admin-plugin-button.is-loading,.con-admin-game-action-button.is-loading,.con-admin-icon-button.is-loading,.button.is-loading,.button[data-con-admin-busy="1"]{animation:conAdminSubtleBusy 900ms ease-in-out infinite;}
[data-con-admin-fam-plan] .con-admin-ui-refreshing,[data-con-admin-fam-plan] .con-admin-ui-refreshed,[data-con-admin-fam-plan] .con-admin-ui-flash,[data-con-admin-fam-plan] .is-motion-updated,[data-con-admin-fam-plan] .con-admin-ui-enter,[data-con-admin-fam-plan] .con-admin-feed-motion-enter,[data-con-admin-fam-plan] .con-admin-motion-enter,[data-con-admin-fam-plan].con-admin-ui-refreshing,[data-con-admin-fam-plan].con-admin-ui-refreshed,[data-con-admin-fam-plan].con-admin-ui-flash,[data-con-admin-fam-plan].is-motion-updated,[data-con-admin-fam-plan].con-admin-ui-enter,[data-con-admin-fam-plan].con-admin-feed-motion-enter,[data-con-admin-fam-plan].con-admin-motion-enter{animation:none;transform:none;}

@keyframes conAdminMotionPanelIn{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:translateY(0);}}
@keyframes conAdminMotionBackdropIn{from{opacity:0;}to{opacity:1;}}
@keyframes conAdminMotionFilter{0%{opacity:.76;transform:translateY(1px);}100%{opacity:1;transform:translateY(0);}}
@keyframes conAdminMotionSheen{0%{background-position:200% 0;}100%{background-position:-200% 0;}}
.con-admin-motion-pop{animation:conAdminSubtleUpdate var(--con-admin-motion-duration) var(--con-admin-motion-ease) both;}
.con-admin-motion-complete,.con-admin-ui-action-pulse{animation:conAdminSubtleComplete var(--con-admin-motion-duration-slow) var(--con-admin-motion-ease) both;}
.con-admin-motion-exit,.con-admin-ui-exit{pointer-events:none;overflow:hidden;animation:conAdminSubtleExit var(--con-admin-motion-duration) var(--con-admin-motion-ease) both;}
@keyframes conAdminSubtleExit{0%{opacity:1;transform:translateY(0);}100%{opacity:0;transform:translateY(-2px);}}
.con-admin-schedule-guide-modal.is-open,.con-admin-schedule-guide-more-modal.is-open,.con-admin-responsive-popup,.con-admin-connection-confirmation-modal.is-open{animation:conAdminMotionBackdropIn var(--con-admin-motion-duration-fast) ease both;}
.con-admin-schedule-guide-modal.is-open .con-admin-schedule-guide-modal__panel,.con-admin-schedule-guide-more-modal.is-open .con-admin-schedule-guide-more-modal__panel,.con-admin-responsive-popup__dialog,.con-admin-fam-notifications.is-open .con-admin-fam-notifications__panel,.con-admin-fam-account-menu:not([hidden]),.con-admin-fam-notification-panel,.con-admin-schedule-multi-select.is-open [data-schedule-multi-panel],.con-admin-connection-confirmation-modal.is-open .con-admin-connection-confirmation-modal__panel{animation:conAdminMotionPanelIn var(--con-admin-motion-duration) var(--con-admin-motion-ease) both;transform-origin:center top;}
.con-admin-schedule-shell.is-filtering .con-admin-schedule-results,.con-admin-listing-shell.is-filtering .con-admin-listing-results,.con-admin-staff-portal.is-filtering .con-admin-staff-results,.con-admin-fam-mail__panel.is-filtering .con-admin-fam-mail__list,.con-admin-filtering-target.is-filtering{animation:conAdminMotionFilter var(--con-admin-motion-duration) var(--con-admin-motion-ease) both;}
.con-admin-soft-loading,.con-admin-soft-refreshing,.is-soft-refreshing{position:relative;}
.con-admin-soft-loading::after,.con-admin-soft-refreshing::after,.is-soft-refreshing::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.38),rgba(255,255,255,0));background-size:200% 100%;animation:conAdminMotionSheen 900ms linear infinite;opacity:.58;}
.con-admin-motion-ready .con-admin-listing-row--schedule,.con-admin-motion-ready .con-admin-schedule-timeline-card,.con-admin-motion-ready .con-admin-fam-mail__item,.con-admin-motion-ready .con-admin-daily-task-item,.con-admin-motion-ready .con-admin-staff-task-card,.con-admin-motion-ready .con-admin-inventory-item{backface-visibility:hidden;}


.con-admin-fam-feed-read-more.is-animating{overflow:hidden;will-change:height;}
.con-admin-fam-feed-read-more__excerpt,.con-admin-fam-feed-read-more__full{transition:opacity var(--con-admin-motion-duration-fast) var(--con-admin-motion-ease);}

@media (prefers-reduced-motion:reduce){.con-admin-ui-refreshing,.con-admin-ui-refreshed,.con-admin-ui-flash,.is-motion-updated,.is-stat-updated,.con-admin-ui-enter,.con-admin-feed-motion-enter,.con-admin-motion-enter,.con-admin-listing-row--enter,.con-admin-motion-removing,.con-admin-feed-motion-removing,.con-admin-disclosure-motion,.con-admin-feed-motion-collapse,.con-admin-event-detail.is-animating,.con-admin-schedule-card__details.is-animating,.con-admin-event-ticket__details.is-animating,[data-role="fam-plan-item-details"].is-animating,.con-admin-submissions-body.is-animating,.con-admin-plugin-button.is-loading,.con-admin-game-action-button.is-loading,.con-admin-icon-button.is-loading,.con-admin-favorite-toggle.is-feedback,.button.is-loading,.button[data-con-admin-busy="1"],.con-admin-schedule-guide-modal.is-open,.con-admin-schedule-guide-more-modal.is-open,.con-admin-responsive-popup,.con-admin-connection-confirmation-modal.is-open,.con-admin-schedule-guide-modal.is-open .con-admin-schedule-guide-modal__panel,.con-admin-schedule-guide-more-modal.is-open .con-admin-schedule-guide-more-modal__panel,.con-admin-responsive-popup__dialog,.con-admin-fam-notifications.is-open .con-admin-fam-notifications__panel,.con-admin-fam-account-menu:not([hidden]),.con-admin-fam-notification-panel,.con-admin-schedule-multi-select.is-open [data-schedule-multi-panel],.con-admin-connection-confirmation-modal.is-open .con-admin-connection-confirmation-modal__panel,.con-admin-schedule-shell.is-filtering .con-admin-schedule-results,.con-admin-listing-shell.is-filtering .con-admin-listing-results,.con-admin-staff-portal.is-filtering .con-admin-staff-results,.con-admin-fam-mail__panel.is-filtering .con-admin-fam-mail__list,.con-admin-filtering-target.is-filtering{animation:none;transition:none;transform:none;filter:none;}.con-admin-soft-loading::after,.con-admin-soft-refreshing::after,.is-soft-refreshing::after{display:none;}}

/* Shared FLIP layout motion for list rows. It moves existing rows with compositor transforms
   after a state change, avoiding per-frame height animation/reflow. */
.con-admin-layout-motion{
  backface-visibility:hidden;
  transform-origin:center top;
  will-change:transform;
}
@media (prefers-reduced-motion:reduce){
  .con-admin-layout-motion{transition:none !important;transform:none !important;}
}
