.toast-container[data-v-1de2da7a]{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:2000;display:flex;flex-direction:column;align-items:center;gap:var(--space-2);pointer-events:none}.toast[data-v-1de2da7a]{display:inline-flex;align-items:center;gap:var(--space-2);background:var(--color-surface);border-radius:var(--radius-sm);box-shadow:var(--shadow-popover);border:1px solid var(--color-border);padding:var(--space-3) var(--space-4);font-size:14px;max-width:480px}.toast__icon[data-v-1de2da7a]{font-weight:700}.toast--success .toast__icon[data-v-1de2da7a]{color:var(--color-success)}.toast--error .toast__icon[data-v-1de2da7a]{color:var(--color-danger)}.toast--warning .toast__icon[data-v-1de2da7a]{color:var(--color-warning)}.toast--info .toast__icon[data-v-1de2da7a]{color:var(--color-primary)}.toast-enter-active[data-v-1de2da7a],.toast-leave-active[data-v-1de2da7a]{transition:all .3s ease}.toast-enter-from[data-v-1de2da7a],.toast-leave-to[data-v-1de2da7a]{opacity:0;transform:translateY(-10px)}.nav[data-v-fe3fc343]{position:fixed;top:0;left:0;right:0;height:var(--shell-topbar-h);background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:1000;display:flex;align-items:center;padding:0 var(--space-6);gap:var(--space-8)}.nav__brand[data-v-fe3fc343]{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.nav__logo[data-v-fe3fc343]{height:34px;width:34px;border-radius:var(--radius-sm);object-fit:cover}.nav__brand-name[data-v-fe3fc343]{font-size:18px;font-weight:700;color:var(--color-text)}.nav__crumbs[data-v-fe3fc343]{display:flex;align-items:center;gap:var(--space-2);flex:1}.nav__crumb[data-v-fe3fc343]{font-size:14px;color:var(--color-text)}.nav__crumb--link[data-v-fe3fc343]{color:var(--color-text);cursor:pointer}.nav__crumb--link[data-v-fe3fc343]:hover{color:var(--color-primary)}.nav__sep[data-v-fe3fc343]{color:var(--color-text-muted);font-size:14px}.nav__right[data-v-fe3fc343]{display:flex;align-items:center;gap:var(--space-3);flex-shrink:0}.nav__icon-btn[data-v-fe3fc343]{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;background:transparent;border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;transition:color .2s,background .2s}.nav__icon-btn[data-v-fe3fc343]:hover{color:var(--color-primary);background:#f5f7fa}.nav__divider[data-v-fe3fc343]{width:1px;height:20px;background:var(--color-border);margin:0 var(--space-1)}.nav__username[data-v-fe3fc343]{font-size:14px;color:var(--color-text)}.nav__username[data-v-fe3fc343]:hover{color:var(--color-primary)}.nav__avatar[data-v-fe3fc343]{width:34px;height:34px;border-radius:50%;background:var(--color-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600}.sidebar[data-v-ccb1767b]{grid-area:sidebar;position:sticky;top:var(--shell-topbar-h);align-self:start;height:calc(100vh - var(--shell-topbar-h));background:var(--color-surface);border-right:1px solid var(--color-border);padding:var(--space-4) var(--space-3);display:flex;flex-direction:column;gap:var(--space-3)}.sidebar__item[data-v-ccb1767b]{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-2);border-radius:var(--radius-md);color:var(--color-text-secondary);transition:all .2s ease}.sidebar__icon[data-v-ccb1767b]{display:inline-flex;color:#e07b39}.sidebar__label[data-v-ccb1767b]{font-size:13px;color:var(--color-text)}.sidebar__item[data-v-ccb1767b]:hover{background:#f7f9fc}.sidebar__item.is-active[data-v-ccb1767b]{background:#fdf2e7}.sidebar__item.is-active .sidebar__icon[data-v-ccb1767b],.sidebar__item.is-active .sidebar__label[data-v-ccb1767b]{color:var(--color-primary)}.sidebar__item.is-active .sidebar__label[data-v-ccb1767b]{font-weight:600}.dialog-mask[data-v-15a5ed2b]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:1500;display:flex;align-items:center;justify-content:center}.dialog[data-v-15a5ed2b]{background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-popover);width:420px;max-width:calc(100vw - 40px);padding:var(--space-6)}.dialog__head[data-v-15a5ed2b]{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.dialog__title[data-v-15a5ed2b]{font-size:17px;font-weight:600}.dialog__close[data-v-15a5ed2b]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;color:var(--color-text-muted);border-radius:var(--radius-sm);cursor:pointer}.dialog__close[data-v-15a5ed2b]:hover{color:var(--color-text);background:#0000000d}.dialog__body[data-v-15a5ed2b]{font-size:14px;color:var(--color-text-secondary);margin-bottom:var(--space-6)}.dialog__footer[data-v-15a5ed2b]{display:flex;justify-content:flex-end;gap:var(--space-3)}.dialog__btn[data-v-15a5ed2b]{height:36px;padding:0 var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);cursor:pointer;font-size:14px}.dialog__btn[data-v-15a5ed2b]:hover{border-color:var(--color-primary);color:var(--color-primary)}.dialog__btn.is-danger[data-v-15a5ed2b]{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.dialog__btn.is-danger[data-v-15a5ed2b]:hover{filter:brightness(.95)}.dialog-enter-active[data-v-15a5ed2b],.dialog-leave-active[data-v-15a5ed2b]{transition:opacity .2s ease}.dialog-enter-active .dialog[data-v-15a5ed2b],.dialog-leave-active .dialog[data-v-15a5ed2b]{transition:transform .2s ease}.dialog-enter-from[data-v-15a5ed2b],.dialog-leave-to[data-v-15a5ed2b]{opacity:0}.dialog-enter-from .dialog[data-v-15a5ed2b]{transform:scale(.95)}.schedule[data-v-f8f60bc1]{grid-area:schedule;position:sticky;top:var(--shell-topbar-h);align-self:start;height:calc(100vh - var(--shell-topbar-h));background:var(--color-surface);border-left:1px solid var(--color-border);padding:var(--space-5) var(--space-4);display:flex;flex-direction:column;overflow-y:auto}.schedule__header[data-v-f8f60bc1]{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--space-4);border-bottom:1px solid var(--color-border)}.schedule__title[data-v-f8f60bc1]{display:inline-flex;align-items:center;gap:var(--space-2);font-size:15px;font-weight:600;color:var(--color-text)}.schedule__title svg[data-v-f8f60bc1]{color:var(--color-primary)}.schedule__btn[data-v-f8f60bc1]{height:28px;padding:0 var(--space-3);border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:var(--radius-sm);font-size:12px;color:var(--color-text-secondary);cursor:pointer}.schedule__btn[data-v-f8f60bc1]:hover{color:var(--color-primary);border-color:var(--color-primary)}.schedule__body[data-v-f8f60bc1]{flex:1;display:flex;flex-direction:column;justify-content:center;gap:var(--space-3);padding-top:var(--space-4)}.schedule__item[data-v-f8f60bc1]{position:relative;display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3);padding-right:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color .15s;cursor:pointer}.schedule__item[data-v-f8f60bc1]:hover{border-color:var(--color-primary)}.schedule__item:hover .schedule__item-arrow[data-v-f8f60bc1]{color:var(--color-primary)}.schedule__item[data-v-f8f60bc1]:not(:last-child){border-bottom:1px solid var(--color-border)}.schedule__item-line[data-v-f8f60bc1]{width:3px;align-self:stretch;border-radius:2px;flex-shrink:0}.schedule__item-line.is-live[data-v-f8f60bc1]{background:var(--color-primary)}.schedule__item-line.is-lab[data-v-f8f60bc1]{background:#22c55e}.schedule__item-line.is-homework[data-v-f8f60bc1]{background:#f59e0b}.schedule__item-line.is-theory[data-v-f8f60bc1]{background:#8b5cf6}.schedule__item-main[data-v-f8f60bc1]{flex:1;min-width:0}.schedule__item-time[data-v-f8f60bc1]{display:flex;align-items:center;gap:var(--space-2);font-size:12px;color:var(--color-text-secondary)}.schedule__item-name[data-v-f8f60bc1]{font-size:14px;margin-top:var(--space-1);color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.schedule__item-arrow[data-v-f8f60bc1]{color:var(--color-text-muted);flex-shrink:0}.schedule__item-tag[data-v-f8f60bc1]{padding:1px 6px;border-radius:3px;font-size:11px;line-height:16px;flex-shrink:0}.schedule__item-tag.is-live[data-v-f8f60bc1]{color:var(--color-primary);background:#3b82f61a}.schedule__item-tag.is-lab[data-v-f8f60bc1]{color:#16a34a;background:#22c55e1f}.schedule__item-tag.is-homework[data-v-f8f60bc1]{color:#d97706;background:#f59e0b24}.schedule__item-tag.is-theory[data-v-f8f60bc1]{color:#7c3aed;background:#8b5cf61f}.schedule__empty[data-v-f8f60bc1]{display:flex;flex-direction:column;align-items:center;gap:var(--space-4);padding:var(--space-8) 0}.schedule__empty-text[data-v-f8f60bc1]{font-size:13px;color:var(--color-text-muted)}.schedule__skeleton[data-v-f8f60bc1]{height:64px;border-radius:var(--radius-sm);background:var(--color-border);animation:pulse-f8f60bc1 1.2s ease-in-out infinite}@keyframes pulse-f8f60bc1{50%{opacity:.4}}.timetable[data-v-f8f60bc1]{display:flex;flex-direction:column}.timetable__scroll[data-v-f8f60bc1]{display:flex;flex-direction:column;gap:var(--space-2);max-height:360px;overflow-y:auto}.timetable__row[data-v-f8f60bc1]{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color .15s}.timetable__row[data-v-f8f60bc1]:hover{border-color:var(--color-primary)}.timetable__date[data-v-f8f60bc1]{display:flex;flex-direction:column;align-items:center;justify-content:center;width:52px;height:52px;border-radius:var(--radius-sm);background:#3b82f614;flex-shrink:0}.timetable__day[data-v-f8f60bc1]{font-size:18px;font-weight:700;color:var(--color-primary);line-height:1}.timetable__mon[data-v-f8f60bc1]{font-size:11px;color:var(--color-text-secondary);margin-top:2px}.timetable__info[data-v-f8f60bc1]{flex:1;min-width:0}.timetable__name[data-v-f8f60bc1]{font-size:14px;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timetable__meta[data-v-f8f60bc1]{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-1)}.timetable__time[data-v-f8f60bc1]{font-size:12px;color:var(--color-text-secondary)}.timetable__more[data-v-f8f60bc1]{margin-top:var(--space-3);align-self:center;padding:var(--space-2) var(--space-4);border:none;background:transparent;color:var(--color-primary);font-size:13px;cursor:pointer;flex-shrink:0}.timetable__more[data-v-f8f60bc1]:hover{background:#3b82f614;border-radius:var(--radius-sm)}.timetable__empty[data-v-f8f60bc1]{padding:var(--space-8) 0;text-align:center;color:var(--color-text-muted);font-size:13px}.app-shell[data-v-f93f0571]{min-height:100vh;background:var(--color-bg)}.app-shell__body[data-v-f93f0571]{display:grid;grid-template-columns:var(--shell-sidebar-w) minmax(0,1fr) minmax(360px,26%);grid-template-areas:"sidebar main schedule";padding-top:var(--shell-topbar-h);min-height:100vh}.app-shell__main[data-v-f93f0571]{grid-area:main;min-width:0;overflow-x:hidden}.app-shell__content[data-v-f93f0571]{height:100%;min-height:calc(100vh - var(--shell-topbar-h));padding:var(--space-6)}.user-menu-wrap[data-v-f93f0571]{position:fixed;top:calc(var(--shell-topbar-h) - 16px);right:24px;z-index:1200}.user-menu[data-v-f93f0571]{width:220px;background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-popover);border:1px solid var(--color-border);overflow:hidden}.user-menu__header[data-v-f93f0571]{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);border-bottom:1px solid var(--color-border)}.user-menu__avatar[data-v-f93f0571]{width:36px;height:36px;border-radius:50%;background:var(--color-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:15px}.user-menu__name[data-v-f93f0571]{font-size:14px;font-weight:600}.user-menu__account[data-v-f93f0571]{font-size:12px;color:var(--color-text-muted)}.user-menu__list[data-v-f93f0571]{padding:var(--space-2) 0}.user-menu__item a[data-v-f93f0571],.user-menu__item[data-v-f93f0571]{display:block;padding:var(--space-2) var(--space-4);font-size:14px;color:var(--color-text);cursor:pointer}.user-menu__item a[data-v-f93f0571]:hover,.user-menu__item[data-v-f93f0571]:hover{background:#f5f7fa}.user-menu__item--logout[data-v-f93f0571]{color:var(--color-danger)}.user-menu__item--logout[data-v-f93f0571]:hover{background:#f56c6c14!important}.menu-enter-active[data-v-f93f0571],.menu-leave-active[data-v-f93f0571]{transition:all .2s ease}.menu-enter-from[data-v-f93f0571],.menu-leave-to[data-v-f93f0571]{opacity:0;transform:translateY(-8px)}:root{--color-primary: #2f80ed;--color-primary-hover: #256fd1;--color-primary-active: #1f5fb8;--color-bg: #f5f7fa;--color-surface: #ffffff;--color-border: #e8eaed;--color-border-strong: #dcdfe6;--color-text: #303133;--color-text-secondary: #606266;--color-text-muted: #909399;--color-success: #67c23a;--color-warning: #e6a23c;--color-danger: #f56c6c;--color-info: #909399;--font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;--radius-sm: 4px;--radius-md: 8px;--shadow-card: 0 2px 12px rgba(0, 0, 0, .06);--shadow-popover: 0 8px 24px rgba(0, 0, 0, .12);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--shell-topbar-h: 70px;--shell-sidebar-w: 122px;--shell-right-w: 26%;--shell-bg: #f5f7fa}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{font-family:var(--font-family);font-size:14px;line-height:1.6;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font-family:inherit}ul,ol{list-style:none}input{font-family:inherit}body{color:var(--color-text);background:var(--color-bg)}#app{min-height:100vh}.page{max-width:1200px;margin:0 auto;padding:var(--space-6)}.text-secondary{color:var(--color-text-secondary)}.text-muted{color:var(--color-text-muted)}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
