:root { --mv-ease: cubic-bezier(.2,.8,.2,1); }
  @keyframes mvViewIn {
    from { opacity: .15; transform: translate3d(0,8px,0) scale(.996); }
    to { opacity: 1; transform: translate3d(0,0,0) scale(1); }
  }
  .mv-view-enter {
    animation: mvViewIn 190ms var(--mv-ease) both;
    will-change: opacity, transform;
  }
  #teacher-nav button, #student-nav button { transition-duration: 120ms !important; }
  #teacher-nav button:active, #student-nav button:active, button:active { transform: translateY(1px) scale(.99); }
  button, a, input, select { -webkit-tap-highlight-color: transparent; }
  .mv-busy { cursor: progress !important; opacity: .82; }
  .mv-busy > * { pointer-events: none; }
  #mv-smart-loader {
    position: fixed; inset: 0 0 auto 0; z-index: 10000; pointer-events: none;
    opacity: 0; transform: translateY(-8px); transition: opacity 140ms ease, transform 140ms ease;
  }
  #mv-smart-loader.is-visible { opacity: 1; transform: translateY(0); }
  #mv-smart-loader .mv-loader-track { height: 3px; overflow: hidden; background: rgba(78,168,222,.14); }
  #mv-smart-loader .mv-loader-bar {
    width: 36%; height: 100%; border-radius: 999px;
    background: linear-gradient(90deg,#70D6FF,#4EA8DE,#06D6A0);
    animation: mvLoaderTravel 920ms ease-in-out infinite; transform: translateX(-120%);
  }
  #mv-smart-loader .mv-loader-pill {
    width: max-content; max-width: calc(100vw - 24px); margin: 8px auto 0; padding: 7px 11px;
    border: 1px solid rgba(186,230,253,.95); border-radius: 999px; background: rgba(255,255,255,.96);
    box-shadow: 0 8px 22px rgba(15,23,42,.10); color: #334155; font-size: 11px; font-weight: 900;
    backdrop-filter: blur(8px); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  #mv-smart-loader .mv-loader-dot {
    display:inline-block; width:7px; height:7px; margin-right:7px; border-radius:50%; background:#06D6A0;
    box-shadow:0 0 0 4px rgba(6,214,160,.12); animation: mvDotPulse 900ms ease-in-out infinite alternate;
  }
  @keyframes mvLoaderTravel { 0% { transform: translateX(-120%); } 60%,100% { transform: translateX(310%); } }
  @keyframes mvDotPulse { from { transform: scale(.82); opacity:.7; } to { transform:scale(1.08); opacity:1; } }
  @media (prefers-reduced-motion: reduce) {
    .mv-view-enter, #mv-smart-loader .mv-loader-bar, #mv-smart-loader .mv-loader-dot { animation: none !important; }
    #teacher-nav button, #student-nav button, #mv-smart-loader { transition: none !important; }
  }
