/* One rhythm: immediate feedback, gentle deceleration, short travel, no scroll interception. */
:root{--motion-fast:160ms;--motion-medium:400ms;--motion-reveal:640ms;--motion-scene:800ms;--motion-ease:cubic-bezier(.22,1,.36,1)}
.btn,.nav-item,.section-link,.roster-student-bubble,.subject-analytics-focus-chips>button,.shelf-arrow,.modal-close{
 transition-property:background-color,border-color,color,opacity,transform;
 transition-duration:var(--motion-fast);
 transition-timing-function:ease-out;
}
.roster-student-bubble,.subject-analytics-focus-chips>button{transition-duration:240ms;transition-timing-function:var(--motion-ease)}
.btn:active:not(:disabled),.roster-student-bubble:active,.subject-analytics-focus-chips>button:active,.shelf-arrow:active:not(:disabled),.modal-close:active{transform:scale(.98);transition-duration:80ms}
.learning-group{transition-property:border-color,box-shadow;transition-duration:240ms;transition-timing-function:ease-out}
#toast{transition-property:opacity,transform;transition-duration:240ms;transition-timing-function:var(--motion-ease)}
.shelf-cover{transition-property:transform,opacity;transition-duration:400ms;transition-timing-function:var(--motion-ease)}
.shelf-arrow,.modal-close{transition-duration:100ms;transition-timing-function:linear}
.shelf-paper-button{transition:transform 300ms cubic-bezier(0,0,.5,1),border-color var(--motion-fast) ease-out,background-color var(--motion-fast) ease-out}
@media(hover:hover) and (pointer:fine){
 .shelf-paper-button:hover{transform:scale(1.016)}
 .roster-student-bubble:hover{transform:translateY(-1px)}
}
.subject-reading[data-reveal-ready="true"] [data-reveal-stage]{clip-path:none;transition:opacity var(--motion-reveal) ease-out,transform var(--motion-reveal) var(--motion-ease)}
.subject-reading[data-reveal-ready="true"] [data-reveal-stage]:not([data-revealed="true"]){clip-path:none;transform:translateY(18px)}
body,body::before,body::after{transition-duration:var(--motion-scene);transition-timing-function:var(--motion-ease)}
.journey-orbit{transition-duration:var(--motion-scene);transition-timing-function:var(--motion-ease)}
.welcome-page .login-aside::after{animation-duration:var(--motion-scene);animation-timing-function:var(--motion-ease)}
/* Crossfade two static colors instead of repainting a new page color on every scroll. */
:root[data-workspace-theme="teacher"] body{background:#fbeff6;transition:none}
:root[data-workspace-theme="teacher"] body::before{display:block;z-index:-2;inset:0;background:#e6f1fe;opacity:var(--teacher-scroll-progress,0);transition:none}
/* Keep the reading surface stable; only peripheral decoration has a smaller parallax range. */
.teacher-shell .teacher-orbit-orb{transform:translate3d(0,calc(var(--teacher-scroll-progress,0) * -100px),0) rotate(calc(var(--teacher-scroll-progress,0) * 14deg))}
.teacher-shell .teacher-ribbon{transform:translate3d(calc(var(--teacher-scroll-progress,0) * -18px),calc(var(--teacher-scroll-progress,0) * -140px),0) rotate(calc(-12deg + var(--teacher-scroll-progress,0) * 6deg))}
.teacher-shell .teacher-paper-float{transform:translate3d(calc(var(--teacher-scroll-progress,0) * 12px),calc(var(--teacher-scroll-progress,0) * -110px),0) rotate(calc(-18deg + var(--teacher-scroll-progress,0) * 7deg))}
.teacher-shell .teacher-atmosphere::before{transform:translate3d(0,calc(var(--teacher-scroll-progress,0) * -40px),0)}
.main>.page-heading{animation:portal-heading-arrive 480ms var(--motion-ease)}
#modal{opacity:0;transform:translateY(10px) scale(.985);transition:opacity 180ms ease,transform 180ms cubic-bezier(.4,0,1,1),display 180ms allow-discrete,overlay 180ms allow-discrete}
#modal[open]{opacity:1;transform:none;animation:portal-dialog-arrive var(--motion-medium) var(--motion-ease)}
#modal.teacher-plan-sheet[open]{animation:portal-sheet-arrive var(--motion-medium) var(--motion-ease)}
#modal:not([open]){animation:none;pointer-events:none}
#modal.teacher-plan-sheet:not([open]){transform:translateY(18px)}
#modal::backdrop{opacity:0;backdrop-filter:none;transition:opacity 180ms ease,display 180ms allow-discrete,overlay 180ms allow-discrete}
#modal[open]::backdrop{opacity:1;animation:portal-backdrop-arrive 240ms ease-out}
#modal:not([open])::backdrop{pointer-events:none}
#modal.teacher-plan-sheet>.modal-head{backdrop-filter:none}
@keyframes portal-heading-arrive{from{opacity:.82;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes portal-dialog-arrive{from{opacity:.7;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
@keyframes portal-sheet-arrive{from{opacity:.75;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes portal-backdrop-arrive{from{opacity:0}to{opacity:1}}
/* Accessibility applies immediately without introducing another user-selectable setting. */
:root[data-motion-reduced="true"] *,
:root[data-motion-reduced="true"] *::before,
:root[data-motion-reduced="true"] *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
:root[data-motion-reduced="true"] body::before,:root[data-motion-reduced="true"] body::after{display:none}
:root[data-motion-reduced="true"][data-workspace-theme="teacher"] body{background:#f3f3fb}
:root[data-motion-reduced="true"] .teacher-shell :is(.teacher-orbit-orb,.teacher-ribbon,.teacher-paper-float,.teacher-mini-orbit,.teacher-mini-paper),
:root[data-motion-reduced="true"] .teacher-atmosphere::before{transform:none}
:root[data-motion-reduced="true"] .subject-reading [data-reveal-stage]{opacity:1!important;transform:none!important;clip-path:none!important}
:root[data-motion-paused="true"] *,:root[data-motion-paused="true"] *::before,:root[data-motion-paused="true"] *::after{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){
 .teacher-shell :is(.teacher-orbit-orb,.teacher-ribbon,.teacher-paper-float),.teacher-atmosphere::before{transform:none}
 .btn:active:not(:disabled),.roster-student-bubble:hover,.roster-student-bubble:active,.subject-analytics-focus-chips>button:active,.shelf-arrow:active:not(:disabled),.modal-close:active,.shelf-paper-button:hover{transform:none}
}
@media(forced-colors:active){:root[data-workspace-theme="teacher"] body{background:Canvas}:root[data-workspace-theme="teacher"] body::before{display:none}}
@media print{:root[data-workspace-theme="teacher"] body{background:white}:root[data-workspace-theme="teacher"] body::before{display:none}}

