.operation-loading-button { display: inline-flex !important; align-items: center; justify-content: center; gap: 9px; white-space: nowrap; cursor: wait !important; opacity: .85; }
.operation-spinner { display: inline-block; flex: 0 0 15px; box-sizing: border-box; width: 15px; height: 15px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: operation-spin .7s linear infinite; }
.operation-busy { cursor: progress; }
.operation-busy button:disabled { cursor: wait; }
.operation-status { margin: 12px 0 0; color: #65556f; font: 700 13px 'Nunito', sans-serif; line-height: 1.5; }
.operation-navigating::before { content: ''; position: fixed; inset: 0 auto auto 0; z-index: 1000; width: 45%; height: 3px; background: #7955d5; border-radius: 0 3px 3px 0; animation: operation-progress 1.3s ease-in-out infinite; pointer-events: none; }
#student-import[data-outcome="error"] #import-status { color: #a8282d; }
#student-import[data-outcome="success"] #import-status { color: #286540; }
@keyframes operation-spin { to { transform: rotate(360deg); } }
@keyframes operation-progress { from { transform: translateX(-110%); } to { transform: translateX(230%); } }
@media (prefers-reduced-motion: reduce) {
  .operation-spinner, .operation-navigating::before { animation: none; }
  .operation-navigating::before { width: 100%; }
}
