*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;line-height:1.6;color:var(--lms-text);background:#fff;overflow-x:hidden;min-height:100vh}a{color:inherit;text-decoration:none}button{font:inherit;border:none;cursor:pointer;background:none}ol,ul{list-style:none}img{max-width:100%;display:block}input,select,textarea{font:inherit}:root{--lms-primary:oklch(0.65 0.2 230);--lms-secondary:oklch(0.72 0.15 195);--lms-accent:oklch(0.78 0.14 160);--lms-bg:oklch(0.98 0.005 230);--lms-bg-grad1:oklch(0.96 0.02 230);--lms-bg-grad2:oklch(0.93 0.03 200);--lms-surface:oklch(1 0 0);--lms-surface-dim:oklch(0.95 0.01 230);--lms-surface-bright:oklch(1 0 0);--lms-text:oklch(0.25 0.02 230);--lms-text-muted:oklch(0.55 0.02 230);--lms-border:oklch(0.88 0.02 230);--lms-success:oklch(0.7 0.18 155);--lms-warning:oklch(0.78 0.16 80);--lms-error:oklch(0.65 0.22 25);--lms-info:oklch(0.7 0.15 240);--lms-glow:oklch(0.65 0.2 230/0.3);--lms-shadow:oklch(0.3 0.02 230/0.1);--lms-motion:cubic-bezier(0.4,0,0.2,1);--lms-sidebar-w:260px;--lms-sidebar-w-collapsed:72px;--lms-header-h:64px;--lms-mobile-nav-h:64px;--lms-radius-sm:8px;--lms-radius-md:12px;--lms-radius-lg:16px;--lms-radius-xl:24px;--lms-radius-full:9999px;--lms-space-xs:4px;--lms-space-sm:8px;--lms-space-md:16px;--lms-space-lg:24px;--lms-space-xl:32px;--lms-space-2xl:48px}body:before{content:"";position:fixed;inset:0;background:#fff;z-index:-2}h1{font-size:2rem;font-weight:800;letter-spacing:-.02em;line-height:1.2}h2{font-size:1.5rem;font-weight:700;letter-spacing:-.01em;line-height:1.3}h3{font-size:1.25rem;line-height:1.4}h3,h4{font-weight:600}h4{font-size:1rem;line-height:1.5}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--lms-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--lms-text-muted)}.app-shell{display:grid;grid-template-columns:var(--lms-sidebar-w) 1fr;grid-template-rows:var(--lms-header-h) 1fr;grid-template-areas:"sidebar header" "sidebar content";min-height:100vh;transition:grid-template-columns .3s var(--lms-motion)}.app-shell.sidebar-collapsed{grid-template-columns:var(--lms-sidebar-w-collapsed) 1fr}.app-content{grid-area:content;padding:var(--lms-space-lg);overflow-y:auto;max-height:calc(100vh - var(--lms-header-h))}.app-main{max-width:1320px;margin:0 auto;width:100%}.app-loading{display:flex;align-items:center;justify-content:center;height:100vh;flex-direction:column;gap:var(--lms-space-md)}.app-loading-spinner{width:48px;height:48px;border:4px solid var(--lms-border);border-top-color:var(--lms-primary);border-radius:50%;animation:spin .8s linear infinite}.sidebar{grid-area:sidebar;background:var(--lms-surface);border-right:1px solid var(--lms-border);display:flex;flex-direction:column;overflow:hidden;transition:width .3s var(--lms-motion);position:relative;z-index:30}.sidebar-header{height:var(--lms-header-h);padding:0 var(--lms-space-md);gap:var(--lms-space-sm);border-bottom:1px solid var(--lms-border)}.sidebar-header,.sidebar-logo{display:flex;align-items:center;flex-shrink:0}.sidebar-logo{width:36px;height:36px;border-radius:var(--lms-radius-md);background:linear-gradient(135deg,var(--lms-primary),var(--lms-secondary));justify-content:center;color:white;font-weight:800;font-size:1.1rem}.sidebar-brand{font-weight:700;font-size:1.05rem;color:var(--lms-text);overflow:hidden;white-space:nowrap;transition:opacity .2s}.sidebar-collapsed .sidebar-brand{opacity:0;width:0}.sidebar-collapsed .sidebar-link-label{opacity:0;width:0;overflow:hidden}.sidebar-collapsed .sidebar-link-indicator,.sidebar-collapsed .sidebar-mascot{display:none}.sidebar-collapsed .sidebar-footer{justify-content:center}.sidebar-collapsed .sidebar-theme-name{display:none}.sidebar-nav{flex:1 1;padding:var(--lms-space-sm);display:flex;flex-direction:column;gap:2px;overflow-y:auto}.sidebar-link{display:flex;align-items:center;gap:var(--lms-space-md);padding:10px 12px;border-radius:var(--lms-radius-md);color:var(--lms-text-muted);font-weight:500;font-size:.9rem;transition:all .2s var(--lms-motion);position:relative;text-decoration:none}.sidebar-link:hover{background:var(--lms-surface-dim);color:var(--lms-text)}.sidebar-link-active{background:oklch(from var(--lms-primary) l c h/.1);color:var(--lms-primary);font-weight:600}.sidebar-link-active .sidebar-link-indicator{position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:20px;background:var(--lms-primary);border-radius:0 3px 3px 0}.sidebar-link-icon{width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-size:1.1rem;flex-shrink:0}.sidebar-link-label{white-space:nowrap;transition:opacity .2s,width .3s}.sidebar-mascot{display:flex;align-items:center;justify-content:center;padding:var(--lms-space-md);transition:opacity .3s}.sidebar-footer{padding:var(--lms-space-sm) var(--lms-space-md);border-top:1px solid var(--lms-border);display:flex;align-items:center;gap:var(--lms-space-sm)}.sidebar-toggle{width:36px;height:36px;border-radius:var(--lms-radius-sm);display:flex;align-items:center;justify-content:center;color:var(--lms-text-muted);transition:all .2s;flex-shrink:0}.sidebar-toggle:hover{background:var(--lms-surface-dim);color:var(--lms-text)}.sidebar-theme-name{font-size:.8rem;color:var(--lms-text-muted);white-space:nowrap;overflow:hidden}.app-header{grid-area:header;height:var(--lms-header-h);background:var(--lms-surface);border-bottom:1px solid var(--lms-border);padding:0 var(--lms-space-lg);gap:var(--lms-space-md);position:-webkit-sticky;position:sticky;top:0;z-index:20}.app-header,.header-left{display:flex;align-items:center}.header-left{gap:var(--lms-space-sm)}.header-sidebar-btn{display:none}.header-center{flex:1 1;display:flex;justify-content:center}.header-search{position:relative;width:100%;max-width:420px}.header-search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--lms-text-muted);font-size:.9rem;pointer-events:none}.header-search-input{width:100%;padding:8px 12px 8px 36px;border:1px solid var(--lms-border);border-radius:var(--lms-radius-full);background:var(--lms-surface-dim);color:var(--lms-text);font-size:.87rem;outline:none;transition:all .2s var(--lms-motion)}.header-search-input:focus{border-color:var(--lms-primary);box-shadow:0 0 0 3px oklch(from var(--lms-primary) l c h/.15);background:var(--lms-surface)}.header-search-input::placeholder{color:var(--lms-text-muted)}.header-right{gap:var(--lms-space-sm)}.header-icon-btn,.header-right{display:flex;align-items:center}.header-icon-btn{position:relative;width:40px;height:40px;border-radius:var(--lms-radius-md);justify-content:center;color:var(--lms-text-muted);transition:all .2s;font-size:1.15rem}.header-icon-btn:hover{background:var(--lms-surface-dim);color:var(--lms-text)}.header-icon-btn .badge-dot{position:absolute;top:8px;right:8px;width:8px;height:8px;border-radius:50%;background:var(--lms-error);border:2px solid var(--lms-surface)}.header-menu-btn{display:none}.header-dropdown{position:relative}.header-dropdown-panel{position:absolute;top:calc(100% + 8px);right:0;background:var(--lms-surface);border:1px solid var(--lms-border);border-radius:var(--lms-radius-lg);box-shadow:0 12px 40px var(--lms-shadow),0 4px 12px var(--lms-shadow);padding:var(--lms-space-sm);min-width:280px;z-index:50;animation:dropdownIn .2s var(--lms-motion)}.header-profile-btn{display:flex;align-items:center;gap:var(--lms-space-sm);padding:4px 8px 4px 4px;border-radius:var(--lms-radius-full);transition:all .2s}.header-profile-btn:hover{background:var(--lms-surface-dim)}.header-profile-name{font-size:.85rem;font-weight:600;color:var(--lms-text)}.notif-panel{max-height:360px;overflow-y:auto}.notif-panel-title{font-weight:600;font-size:.9rem;padding:var(--lms-space-sm) var(--lms-space-sm) var(--lms-space-xs);color:var(--lms-text)}.notif-item{display:flex;gap:var(--lms-space-sm);padding:var(--lms-space-sm);border-radius:var(--lms-radius-md);transition:background .15s;cursor:pointer}.notif-item:hover{background:var(--lms-surface-dim)}.notif-unread{background:oklch(from var(--lms-primary) l c h/.06)}.notif-unread:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--lms-primary);flex-shrink:0;margin-top:6px}.notif-body{flex:1 1;min-width:0}.notif-title{font-size:.85rem;font-weight:500;color:var(--lms-text);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notif-time{font-size:.75rem;margin-top:2px}.notif-empty,.notif-time{color:var(--lms-text-muted)}.notif-empty{padding:var(--lms-space-xl) var(--lms-space-md);text-align:center;font-size:.85rem}.profile-panel{min-width:220px}.profile-panel-header{display:flex;align-items:center;gap:var(--lms-space-sm);padding:var(--lms-space-sm);border-bottom:1px solid var(--lms-border);margin-bottom:var(--lms-space-xs)}.profile-name{font-weight:600;font-size:.9rem;color:var(--lms-text)}.profile-email{font-size:.78rem;color:var(--lms-text-muted)}.profile-menu-item{display:flex;align-items:center;gap:var(--lms-space-sm);padding:8px var(--lms-space-sm);border-radius:var(--lms-radius-sm);color:var(--lms-text);font-size:.87rem;width:100%;transition:background .15s}.profile-menu-item:hover{background:var(--lms-surface-dim)}.profile-logout{color:var(--lms-error);border-top:1px solid var(--lms-border);margin-top:var(--lms-space-xs);padding-top:var(--lms-space-sm)}.theme-panel{min-width:320px;padding:var(--lms-space-sm)}.theme-panel-title{font-weight:600;font-size:.9rem;padding:var(--lms-space-xs) var(--lms-space-xs) var(--lms-space-sm);color:var(--lms-text)}.theme-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--lms-space-sm);gap:var(--lms-space-sm)}.theme-option{display:flex;align-items:center;gap:var(--lms-space-sm);padding:var(--lms-space-sm);border-radius:var(--lms-radius-md);border:2px solid transparent;transition:all .2s var(--lms-motion);width:100%}.theme-option:hover{background:var(--lms-surface-dim)}.theme-option-active{border-color:var(--lms-primary);background:oklch(from var(--lms-primary) l c h/.06)}.theme-option-preview{width:32px;height:32px;border-radius:var(--lms-radius-sm);flex-shrink:0}.theme-option-emoji{font-size:1.2rem}.theme-option-name{font-size:.82rem;font-weight:500;color:var(--lms-text)}.theme-emoji{font-size:1.4rem;line-height:1}.mobile-nav{display:none;position:fixed;bottom:0;left:0;right:0;height:var(--lms-mobile-nav-h);background:var(--lms-surface);border-top:1px solid var(--lms-border);z-index:40;align-items:center;justify-content:space-around;padding:0 var(--lms-space-sm)}.mobile-nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 12px;border-radius:var(--lms-radius-md);color:var(--lms-text-muted);font-size:.7rem;font-weight:500;transition:all .2s;text-decoration:none}.mobile-nav-active{color:var(--lms-primary)}.mobile-nav-active .mobile-nav-icon{background:oklch(from var(--lms-primary) l c h/.12);border-radius:var(--lms-radius-full)}.mobile-nav-icon{font-size:1.2rem;width:40px;height:28px;display:flex;align-items:center;justify-content:center;transition:all .2s}.mobile-nav-label{line-height:1}.mobile-overlay{position:fixed;inset:0;background:oklch(.1 0 0/.4);z-index:35;display:none}.login-gate{min-height:100vh;justify-content:center;position:relative;overflow:hidden;background:linear-gradient(135deg,var(--lms-bg-grad1),var(--lms-bg-grad2))}.login-container,.login-gate{display:flex;align-items:center}.login-container{flex-direction:column;gap:var(--lms-space-xl);z-index:2;padding:var(--lms-space-xl)}.login-mascot{animation:float 3s ease-in-out infinite;filter:drop-shadow(0 8px 24px var(--lms-shadow))}.login-card{background:var(--lms-surface);border:1px solid var(--lms-border);border-radius:var(--lms-radius-xl);padding:var(--lms-space-2xl) var(--lms-space-xl);text-align:center;max-width:420px;width:100%;box-shadow:0 20px 60px var(--lms-shadow),0 0 60px oklch(from var(--lms-primary) l c h/.08)}.login-title{font-size:1.75rem;font-weight:800;background:linear-gradient(135deg,var(--lms-primary),var(--lms-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:var(--lms-space-xs)}.login-subtitle{font-size:.95rem;color:var(--lms-text-muted)}.login-features,.login-subtitle{margin-bottom:var(--lms-space-lg)}.login-features{display:flex;flex-wrap:wrap;gap:var(--lms-space-sm);justify-content:center}.login-feature{display:flex;align-items:center;gap:6px;padding:6px 12px;background:var(--lms-surface-dim);border-radius:var(--lms-radius-full);font-size:.8rem;color:var(--lms-text-muted)}.login-btn,.login-feature-icon{font-size:1rem}.login-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--lms-space-sm);width:100%;padding:14px 24px;background:linear-gradient(135deg,var(--lms-primary),var(--lms-secondary));color:white;font-weight:600;border-radius:var(--lms-radius-lg);transition:all .3s var(--lms-motion);box-shadow:0 4px 16px oklch(from var(--lms-primary) l c h/.3);position:relative;overflow:hidden}.login-btn:after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,transparent 40%,oklch(1 0 0/.15) 50%,transparent 60%);transform:translateX(-100%);transition:transform .5s}.login-btn:hover:after{transform:translateX(100%)}.login-btn:hover{transform:translateY(-2px);box-shadow:0 8px 24px oklch(from var(--lms-primary) l c h/.4)}.login-btn:active{transform:translateY(0)}.login-hint{margin-top:var(--lms-space-md);font-size:.78rem;color:var(--lms-text-muted)}.particle-field{position:fixed;inset:0;z-index:1;pointer-events:none}.mascot{display:inline-flex;align-items:center;justify-content:center;transition:transform .3s var(--lms-motion)}.mascot-idle{animation:mascotBreathe 3s ease-in-out infinite}.mascot-happy{animation:mascotBounce .6s ease-in-out infinite}.mascot-thinking{animation:mascotTilt 2s ease-in-out infinite}.mascot-celebrate{animation:mascotCelebrate .5s ease-in-out infinite}.qmf-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--lms-space-sm);font-weight:600;border-radius:var(--lms-radius-md);transition:all .2s var(--lms-motion);white-space:nowrap;position:relative;overflow:hidden}.qmf-btn:after{content:"";position:absolute;inset:0;background:oklch(1 0 0/0);transition:background .2s}.qmf-btn:active:after{background:oklch(0 0 0/.08)}.qmf-btn-sm{padding:6px 14px;font-size:.8rem;border-radius:var(--lms-radius-sm)}.qmf-btn-md{padding:10px 20px;font-size:.87rem}.qmf-btn-lg{padding:14px 28px;font-size:1rem;border-radius:var(--lms-radius-lg)}.qmf-btn-primary{background:linear-gradient(135deg,var(--lms-primary),var(--lms-secondary));color:white;box-shadow:0 2px 8px oklch(from var(--lms-primary) l c h/.25)}.qmf-btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 16px oklch(from var(--lms-primary) l c h/.35)}.qmf-btn-secondary{background:var(--lms-surface);color:var(--lms-text);border:1px solid var(--lms-border)}.qmf-btn-secondary:hover{background:var(--lms-surface-dim);border-color:var(--lms-text-muted)}.qmf-btn-ghost{background:transparent;color:var(--lms-text)}.qmf-btn-ghost:hover{background:var(--lms-surface-dim)}.qmf-btn-danger{background:var(--lms-error);color:white;box-shadow:0 2px 8px oklch(from var(--lms-error) l c h/.25)}.qmf-btn-danger:hover{transform:translateY(-1px);box-shadow:0 4px 16px oklch(from var(--lms-error) l c h/.35)}.qmf-btn-loading{opacity:.7;pointer-events:none}.qmf-btn-icon{display:inline-flex;font-size:1.1em}.qmf-spinner{width:16px;height:16px;border:2px solid;border-top:2px solid transparent;border-radius:50%;animation:spin .6s linear infinite}.qmf-card{background:var(--lms-surface);border:1px solid var(--lms-border);border-radius:var(--lms-radius-lg);padding:var(--lms-space-lg);transition:all .25s var(--lms-motion)}.qmf-card-elevated{box-shadow:0 4px 16px var(--lms-shadow);border-color:transparent}.qmf-card-outlined{background:transparent}.qmf-card-filled{background:var(--lms-surface-dim);border-color:transparent}.qmf-card-hover:hover{transform:translateY(-2px);box-shadow:0 8px 30px var(--lms-shadow)}.qmf-card-glow{box-shadow:0 0 20px var(--lms-glow),0 4px 16px var(--lms-shadow)}.qmf-card-glow:hover{box-shadow:0 0 30px var(--lms-glow),0 8px 30px var(--lms-shadow)}.qmf-card-clickable{cursor:pointer}.qmf-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--lms-radius-full);font-size:.75rem;font-weight:600;white-space:nowrap}.qmf-badge-default{background:var(--lms-surface-dim);color:var(--lms-text-muted)}.qmf-badge-primary{background:oklch(from var(--lms-primary) l c h/.12);color:var(--lms-primary)}.qmf-badge-success{background:oklch(from var(--lms-success) l c h/.12);color:var(--lms-success)}.qmf-badge-warning{background:oklch(from var(--lms-warning) l c h/.12);color:var(--lms-warning)}.qmf-badge-error{background:oklch(from var(--lms-error) l c h/.12);color:var(--lms-error)}.qmf-badge-info{background:oklch(from var(--lms-info) l c h/.12);color:var(--lms-info)}.qmf-badge-pulse{animation:badgePulse 2s ease-in-out infinite}.qmf-progress{width:100%}.qmf-progress-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:.82rem}.qmf-progress-label span{color:var(--lms-text-muted)}.qmf-progress-pct{font-weight:600;color:var(--lms-text)}.qmf-progress-track{width:100%;height:8px;background:var(--lms-surface-dim);border-radius:var(--lms-radius-full);overflow:hidden}.qmf-progress-fill{height:100%;border-radius:var(--lms-radius-full);transition:width .8s var(--lms-motion);position:relative}.qmf-progress-primary{background:linear-gradient(90deg,var(--lms-primary),var(--lms-secondary))}.qmf-progress-success{background:var(--lms-success)}.qmf-progress-warning{background:var(--lms-warning)}.qmf-progress-error{background:var(--lms-error)}.qmf-progress-animated:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,oklch(1 0 0/.3),transparent);animation:progressShimmer 1.5s infinite}.qmf-avatar{position:relative;border-radius:50%;overflow:visible;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.qmf-avatar-sm{width:32px;height:32px;font-size:.75rem}.qmf-avatar-md{width:40px;height:40px;font-size:.87rem}.qmf-avatar-lg{width:56px;height:56px;font-size:1.1rem}.qmf-avatar-img{object-fit:cover}.qmf-avatar-img,.qmf-avatar-initials{width:100%;height:100%;border-radius:50%}.qmf-avatar-initials{background:linear-gradient(135deg,var(--lms-primary),var(--lms-secondary));color:white;display:flex;align-items:center;justify-content:center;font-weight:600}.qmf-avatar-status{position:absolute;bottom:-1px;right:-1px;width:12px;height:12px;border-radius:50%;border:2px solid var(--lms-surface)}.qmf-avatar-status.online{background:var(--lms-success)}.qmf-avatar-status.offline{background:var(--lms-text-muted)}.qmf-modal-overlay{position:fixed;inset:0;background:oklch(.15 .02 230/.6);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;padding:var(--lms-space-lg);animation:fadeIn .2s ease-out}.qmf-modal{background:var(--lms-surface);border-radius:var(--lms-radius-xl);box-shadow:0 24px 80px oklch(.1 0 0/.3);width:100%;max-height:85vh;display:flex;flex-direction:column;animation:modalIn .3s var(--lms-motion)}.qmf-modal-sm{max-width:400px}.qmf-modal-md{max-width:560px}.qmf-modal-lg{max-width:720px}.qmf-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--lms-space-lg);border-bottom:1px solid var(--lms-border);flex-shrink:0}.qmf-modal-header h3{margin:0}.qmf-modal-close{width:32px;height:32px;border-radius:var(--lms-radius-sm);display:flex;align-items:center;justify-content:center;color:var(--lms-text-muted);transition:all .15s;font-size:1.2rem}.qmf-modal-close:hover{background:var(--lms-surface-dim);color:var(--lms-text)}.qmf-modal-body{padding:var(--lms-space-lg);overflow-y:auto;flex:1 1}.qmf-toast-container{position:fixed;top:var(--lms-space-lg);right:var(--lms-space-lg);z-index:200;flex-direction:column;pointer-events:none}.qmf-toast,.qmf-toast-container{display:flex;gap:var(--lms-space-sm)}.qmf-toast{align-items:center;padding:12px 16px;border-radius:var(--lms-radius-md);background:var(--lms-surface);border:1px solid var(--lms-border);box-shadow:0 8px 24px var(--lms-shadow);font-size:.87rem;pointer-events:auto;animation:toastIn .3s var(--lms-motion);min-width:280px}.qmf-toast-success{border-left:3px solid var(--lms-success)}.qmf-toast-error{border-left:3px solid var(--lms-error)}.qmf-toast-warning{border-left:3px solid var(--lms-warning)}.qmf-toast-info{border-left:3px solid var(--lms-info)}.qmf-toast-icon{font-size:1.1rem;flex-shrink:0}.qmf-toast-success .qmf-toast-icon{color:var(--lms-success)}.qmf-toast-error .qmf-toast-icon{color:var(--lms-error)}.qmf-toast-warning .qmf-toast-icon{color:var(--lms-warning)}.qmf-toast-info .qmf-toast-icon{color:var(--lms-info)}.qmf-tooltip-wrap{position:relative;display:inline-flex}.qmf-tooltip{position:absolute;padding:6px 10px;background:var(--lms-text);color:var(--lms-bg);font-size:.75rem;border-radius:var(--lms-radius-sm);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s;z-index:60}.qmf-tooltip-wrap:hover .qmf-tooltip{opacity:1}.qmf-tooltip-top{bottom:calc(100% + 6px);left:50%;transform:translateX(-50%)}.qmf-tooltip-bottom{top:calc(100% + 6px);left:50%;transform:translateX(-50%)}.qmf-tooltip-left{right:calc(100% + 6px);top:50%;transform:translateY(-50%)}.qmf-tooltip-right{left:calc(100% + 6px);top:50%;transform:translateY(-50%)}.qmf-skeleton{background:linear-gradient(90deg,var(--lms-surface-dim) 25%,var(--lms-border) 50%,var(--lms-surface-dim) 75%);background-size:200% 100%;animation:skeleton 1.5s ease-in-out infinite;border-radius:var(--lms-radius-sm)}.qmf-skeleton-rounded{border-radius:50%}.qmf-tabs{display:flex;gap:2px;background:var(--lms-surface-dim);border-radius:var(--lms-radius-md);padding:3px;overflow-x:auto}.qmf-tab{display:flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--lms-radius-sm);font-size:.85rem;font-weight:500;color:var(--lms-text-muted);white-space:nowrap;transition:all .2s var(--lms-motion)}.qmf-tab:hover{color:var(--lms-text)}.qmf-tab-active{background:var(--lms-surface);color:var(--lms-primary);font-weight:600;box-shadow:0 1px 3px var(--lms-shadow)}.qmf-tab-icon{font-size:1rem}.qmf-tab-count{background:oklch(from var(--lms-primary) l c h/.12);color:var(--lms-primary);padding:1px 6px;border-radius:var(--lms-radius-full);font-size:.72rem;font-weight:700}.qmf-tab-active .qmf-tab-count{background:var(--lms-primary);color:white}.qmf-status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.qmf-countdown-label{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.qmf-empty{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--lms-space-2xl) var(--lms-space-lg);gap:var(--lms-space-md)}.qmf-empty-icon{font-size:3rem;opacity:.5}.qmf-empty-title{font-weight:600;color:var(--lms-text)}.qmf-empty-desc{font-size:.87rem;color:var(--lms-text-muted);max-width:360px}.theme-switcher{padding:var(--lms-space-md)}.theme-switcher-title{font-weight:600;font-size:.9rem;margin-bottom:var(--lms-space-md);color:var(--lms-text)}.theme-switcher-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--lms-space-sm);gap:var(--lms-space-sm)}.theme-switcher-compact{display:flex;gap:6px}.theme-dot{width:20px;height:20px;border-radius:50%;border:2px solid transparent;transition:all .2s}.theme-dot-active,.theme-dot:hover{transform:scale(1.2)}.theme-dot-active{border-color:var(--lms-text)}.theme-card{display:flex;flex-direction:column;align-items:center;gap:var(--lms-space-sm);padding:var(--lms-space-md);border-radius:var(--lms-radius-md);border:2px solid transparent;transition:all .2s var(--lms-motion);width:100%}.theme-card:hover{background:var(--lms-surface-dim)}.theme-card-active{border-color:var(--lms-primary);background:oklch(from var(--lms-primary) l c h/.06)}.theme-card-preview{width:100%;height:40px;border-radius:var(--lms-radius-sm);display:flex;align-items:center;justify-content:center;gap:4px;overflow:hidden;position:relative}.theme-card-bg{position:absolute;inset:0;border-radius:inherit}.theme-card-dot{width:14px;height:14px}.theme-card-dot,.theme-card-dot-sm{border-radius:50%;position:relative;z-index:1}.theme-card-dot-sm{width:10px;height:10px}.theme-card-info{display:flex;align-items:center;gap:4px}.theme-card-emoji{font-size:1rem}.theme-card-name{font-size:.78rem;font-weight:500;color:var(--lms-text-muted)}.dashboard-greeting{margin-bottom:var(--lms-space-lg)}.dashboard-greeting h1{font-size:1.75rem}.dashboard-greeting p{color:var(--lms-text-muted);margin-top:var(--lms-space-xs)}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:var(--lms-space-lg);gap:var(--lms-space-lg)}.dashboard-grid-wide{display:grid;grid-template-columns:2fr 1fr;grid-gap:var(--lms-space-lg);gap:var(--lms-space-lg)}.stat-card{gap:var(--lms-space-md)}.stat-card,.stat-icon{display:flex;align-items:center}.stat-icon{width:48px;height:48px;border-radius:var(--lms-radius-md);justify-content:center;font-size:1.4rem;flex-shrink:0}.stat-icon-primary{background:oklch(from var(--lms-primary) l c h/.12);color:var(--lms-primary)}.stat-icon-success{background:oklch(from var(--lms-success) l c h/.12);color:var(--lms-success)}.stat-icon-warning{background:oklch(from var(--lms-warning) l c h/.12);color:var(--lms-warning)}.stat-icon-error{background:oklch(from var(--lms-error) l c h/.12);color:var(--lms-error)}.stat-info h4{font-size:.8rem;color:var(--lms-text-muted);font-weight:500}.stat-info .stat-value{font-size:1.5rem;font-weight:800;color:var(--lms-text)}.stat-info .stat-sub{font-size:.75rem;color:var(--lms-text-muted);margin-top:2px}.widget-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--lms-space-md)}.widget-header h3{font-size:1rem}.widget-header a,.widget-header button{font-size:.82rem;color:var(--lms-primary);font-weight:500}.widget-header a:hover,.widget-header button:hover{text-decoration:underline}.widget-list{display:flex;flex-direction:column;gap:var(--lms-space-sm)}.widget-list-item{display:flex;align-items:center;gap:var(--lms-space-md);padding:var(--lms-space-sm);border-radius:var(--lms-radius-md);transition:background .15s}.widget-list-icon,.widget-list-item:hover{background:var(--lms-surface-dim)}.widget-list-icon{width:40px;height:40px;border-radius:var(--lms-radius-md);display:flex;align-items:center;justify-content:center;font-size:1.1rem;flex-shrink:0}.widget-list-body{flex:1 1;min-width:0}.widget-list-title{font-size:.87rem;font-weight:500;color:var(--lms-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.widget-list-sub{font-size:.78rem;color:var(--lms-text-muted);margin-top:1px}.widget-list-right{flex-shrink:0;text-align:right}.xp-level{gap:var(--lms-space-lg);padding:var(--lms-space-md) 0}.xp-circle,.xp-level{display:flex;align-items:center}.xp-circle{width:80px;height:80px;border-radius:50%;background:conic-gradient(var(--lms-primary) var(--xp-pct,0),var(--lms-surface-dim) 0);justify-content:center;flex-shrink:0;position:relative}.xp-circle:before{content:"";width:64px;height:64px;border-radius:50%;background:var(--lms-surface);position:absolute}.xp-circle-inner{position:relative;z-index:1;text-align:center}.xp-circle-level{font-size:1.5rem;font-weight:800;color:var(--lms-primary);line-height:1}.xp-circle-label{font-size:.65rem;color:var(--lms-text-muted);text-transform:uppercase;letter-spacing:.05em}.xp-details{flex:1 1}.xp-details h4{font-size:.85rem;margin-bottom:6px}.schedule-header{justify-content:space-between;margin-bottom:var(--lms-space-lg)}.schedule-header,.schedule-nav{display:flex;align-items:center}.schedule-nav{gap:var(--lms-space-sm)}.schedule-nav-btn{width:36px;height:36px;border-radius:var(--lms-radius-sm);display:flex;align-items:center;justify-content:center;color:var(--lms-text-muted);border:1px solid var(--lms-border);transition:all .15s}.schedule-nav-btn:hover{background:var(--lms-surface-dim);color:var(--lms-text)}.schedule-week{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:var(--lms-space-sm);gap:var(--lms-space-sm)}.schedule-day{background:var(--lms-surface);border:1px solid var(--lms-border);border-radius:var(--lms-radius-md);padding:var(--lms-space-sm);min-height:120px}.schedule-day-header{font-size:.78rem;font-weight:600;color:var(--lms-text-muted);text-align:center;padding-bottom:var(--lms-space-xs);border-bottom:1px solid var(--lms-border);margin-bottom:var(--lms-space-xs)}.schedule-day-today .schedule-day-header{color:var(--lms-primary)}.schedule-day-date{display:block;font-size:1.1rem;font-weight:700;color:var(--lms-text)}.schedule-day-today .schedule-day-date{width:28px;height:28px;border-radius:50%;background:var(--lms-primary);color:white;display:inline-flex;align-items:center;justify-content:center;margin:0 auto}.schedule-event{padding:4px 6px;border-radius:var(--lms-radius-sm);font-size:.72rem;margin-bottom:3px;cursor:pointer;transition:transform .15s;border-left:3px solid}.schedule-event:hover{transform:scale(1.02)}.schedule-event-class{background:oklch(from var(--lms-primary) l c h/.1);border-color:var(--lms-primary);color:var(--lms-primary)}.schedule-event-homework{background:oklch(from var(--lms-warning) l c h/.1);border-color:var(--lms-warning);color:var(--lms-warning)}.schedule-event-quiz{background:oklch(from var(--lms-accent) l c h/.1);border-color:var(--lms-accent);color:var(--lms-accent)}.schedule-event-exam{background:oklch(from var(--lms-error) l c h/.1);border-color:var(--lms-error);color:var(--lms-error)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--lms-space-lg);flex-wrap:wrap;gap:var(--lms-space-md)}.page-header h1{margin:0}.page-filters{display:flex;gap:var(--lms-space-sm);flex-wrap:wrap}.filter-btn{padding:6px 14px;border-radius:var(--lms-radius-full);font-size:.82rem;font-weight:500;color:var(--lms-text-muted);background:var(--lms-surface);border:1px solid var(--lms-border);transition:all .2s}.filter-btn:hover{border-color:var(--lms-primary);color:var(--lms-primary)}.filter-btn-active{background:var(--lms-primary);color:white;border-color:var(--lms-primary)}.courses-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:var(--lms-space-lg);gap:var(--lms-space-lg)}.course-card-cover{height:140px;border-radius:var(--lms-radius-md) var(--lms-radius-md) 0 0;background:linear-gradient(135deg,var(--lms-primary),var(--lms-secondary));display:flex;align-items:center;justify-content:center;font-size:2.5rem;margin:calc(var(--lms-space-lg) * -1);margin-bottom:var(--lms-space-md);overflow:hidden;position:relative}.course-card-cover img{width:100%;height:100%;object-fit:cover}.course-card-badge{position:absolute;top:var(--lms-space-sm);right:var(--lms-space-sm)}.course-card-title{font-weight:600;font-size:1rem;margin-bottom:var(--lms-space-xs);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.course-card-meta{display:flex;align-items:center;gap:var(--lms-space-sm);font-size:.8rem;color:var(--lms-text-muted);margin-bottom:var(--lms-space-md)}.course-card-meta span{display:flex;align-items:center;gap:4px}.course-card-footer{display:flex;align-items:center;justify-content:space-between;padding-top:var(--lms-space-md);border-top:1px solid var(--lms-border)}.homework-card{display:flex;align-items:flex-start;gap:var(--lms-space-md)}.homework-status-icon{width:40px;height:40px;border-radius:var(--lms-radius-md);display:flex;align-items:center;justify-content:center;font-size:1.2rem;flex-shrink:0}.homework-status-overdue{background:oklch(from var(--lms-error) l c h/.12);color:var(--lms-error)}.homework-status-inprogress{background:oklch(from var(--lms-warning) l c h/.12);color:var(--lms-warning)}.homework-status-completed{background:oklch(from var(--lms-success) l c h/.12);color:var(--lms-success)}.homework-status-pending{background:oklch(from var(--lms-info) l c h/.12);color:var(--lms-info)}.homework-body{flex:1 1;min-width:0}.homework-title{font-weight:600;font-size:.95rem;margin-bottom:4px}.homework-course{font-size:.8rem;color:var(--lms-text-muted)}.homework-deadline{font-size:.78rem;display:flex;align-items:center;gap:4px;margin-top:4px}.homework-deadline-overdue{color:var(--lms-error);font-weight:600}.homework-deadline-soon{color:var(--lms-warning)}.homework-actions{display:flex;gap:var(--lms-space-sm);margin-top:var(--lms-space-sm)}.homework-score{font-size:1.25rem;font-weight:800;color:var(--lms-success);flex-shrink:0}.class-card{gap:var(--lms-space-md)}.class-avatar,.class-card{display:flex;align-items:center}.class-avatar{width:52px;height:52px;border-radius:var(--lms-radius-md);background:linear-gradient(135deg,var(--lms-primary),var(--lms-accent));justify-content:center;font-size:1.5rem;flex-shrink:0;color:white}.class-info{flex:1 1;min-width:0}.class-name{font-weight:600;font-size:.95rem;margin-bottom:2px}.class-teacher{font-size:.82rem;color:var(--lms-text-muted)}.class-stats{display:flex;gap:var(--lms-space-md);margin-top:var(--lms-space-sm);font-size:.78rem;color:var(--lms-text-muted)}.class-stats span{display:flex;align-items:center;gap:4px}.invitation-card{display:flex;align-items:flex-start;gap:var(--lms-space-md)}.invitation-icon{width:48px;height:48px;border-radius:var(--lms-radius-md);display:flex;align-items:center;justify-content:center;font-size:1.3rem;flex-shrink:0}.invitation-icon-course{background:oklch(from var(--lms-primary) l c h/.12);color:var(--lms-primary)}.invitation-icon-quiz{background:oklch(from var(--lms-accent) l c h/.12);color:var(--lms-accent)}.invitation-icon-class{background:oklch(from var(--lms-secondary) l c h/.12);color:var(--lms-secondary)}.invitation-body{flex:1 1;min-width:0}.invitation-title{font-weight:600;font-size:.95rem;margin-bottom:4px}.invitation-from{font-size:.82rem;color:var(--lms-text-muted)}.invitation-time{font-size:.75rem;color:var(--lms-text-muted);margin-top:2px}.invitation-actions{display:flex;gap:var(--lms-space-sm);margin-top:var(--lms-space-sm)}.messages-layout{display:grid;grid-template-columns:280px 1fr;grid-gap:var(--lms-space-lg);gap:var(--lms-space-lg);min-height:500px}.message-list{display:flex;flex-direction:column;gap:2px}.message-item{display:flex;align-items:center;gap:var(--lms-space-sm);padding:var(--lms-space-sm) var(--lms-space-md);border-radius:var(--lms-radius-md);cursor:pointer;transition:background .15s}.message-item:hover{background:var(--lms-surface-dim)}.message-item-active{background:oklch(from var(--lms-primary) l c h/.08)}.message-item-unread .message-sender{font-weight:700;color:var(--lms-text)}.message-sender{font-size:.87rem;font-weight:500}.message-preview{font-size:.78rem;color:var(--lms-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.message-time{font-size:.72rem;color:var(--lms-text-muted);flex-shrink:0}.message-content{padding:var(--lms-space-lg)}.message-content-header{display:flex;align-items:center;gap:var(--lms-space-md);padding-bottom:var(--lms-space-md);border-bottom:1px solid var(--lms-border);margin-bottom:var(--lms-space-lg)}.message-content-body{font-size:.92rem;line-height:1.7;color:var(--lms-text)}.message-content-body p+p{margin-top:var(--lms-space-md)}.saved-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:var(--lms-space-lg);gap:var(--lms-space-lg)}.saved-item-cover{height:120px;border-radius:var(--lms-radius-md);background:var(--lms-surface-dim);display:flex;align-items:center;justify-content:center;font-size:2rem;margin:calc(var(--lms-space-lg) * -1);margin-bottom:var(--lms-space-md);overflow:hidden}.saved-item-cover img{width:100%;height:100%;object-fit:cover}.saved-item-type{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--lms-primary)}.saved-item-title,.saved-item-type{font-weight:600;margin-bottom:var(--lms-space-xs)}.saved-item-title{font-size:.92rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.saved-item-meta{font-size:.78rem;color:var(--lms-text-muted)}.saved-item-actions{justify-content:space-between;padding-top:var(--lms-space-sm);margin-top:var(--lms-space-sm);border-top:1px solid var(--lms-border)}.save-btn,.saved-item-actions{display:flex;align-items:center}.save-btn{width:32px;height:32px;border-radius:var(--lms-radius-sm);justify-content:center;color:var(--lms-text-muted);transition:all .2s}.save-btn:hover{background:oklch(from var(--lms-error) l c h/.1)}.save-btn-active,.save-btn:hover{color:var(--lms-error)}.desktop-only{display:block}.mobile-only{display:none}.flex{display:flex}.flex-col{flex-direction:column}.flex-center{align-items:center;justify-content:center}.flex-between{align-items:center;justify-content:space-between}.gap-xs{gap:var(--lms-space-xs)}.gap-sm{gap:var(--lms-space-sm)}.gap-md{gap:var(--lms-space-md)}.gap-lg{gap:var(--lms-space-lg)}.text-muted{color:var(--lms-text-muted)}.text-primary{color:var(--lms-primary)}.text-success{color:var(--lms-success)}.text-warning{color:var(--lms-warning)}.text-error{color:var(--lms-error)}.fw-600{font-weight:600}.fw-700{font-weight:700}.text-sm{font-size:.82rem}.text-xs{font-size:.75rem}.mt-sm{margin-top:var(--lms-space-sm)}.mt-md{margin-top:var(--lms-space-md)}.mt-lg{margin-top:var(--lms-space-lg)}.mb-sm{margin-bottom:var(--lms-space-sm)}.mb-md{margin-bottom:var(--lms-space-md)}.mb-lg{margin-bottom:var(--lms-space-lg)}@keyframes spin{to{transform:rotate(1turn)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes dropdownIn{0%{opacity:0;transform:translateY(-8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes modalIn{0%{opacity:0;transform:scale(.92) translateY(16px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes toastIn{0%{opacity:0;transform:translateX(24px)}to{opacity:1;transform:translateX(0)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes mascotBreathe{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}@keyframes mascotBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes mascotTilt{0%,to{transform:rotate(0deg)}25%{transform:rotate(-5deg)}75%{transform:rotate(5deg)}}@keyframes mascotCelebrate{0%,to{transform:scale(1) rotate(0deg)}25%{transform:scale(1.1) rotate(-5deg)}75%{transform:scale(1.1) rotate(5deg)}}@keyframes skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes progressShimmer{0%{transform:translateX(-100%)}to{transform:translateX(200%)}}@keyframes badgePulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes slideInLeft{0%{opacity:0;transform:translateX(-16px)}to{opacity:1;transform:translateX(0)}}@keyframes slideInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media (max-width:1024px){.app-shell{grid-template-columns:1fr;grid-template-areas:"header" "content"}.sidebar{position:fixed;left:0;top:0;bottom:0;width:var(--lms-sidebar-w);transform:translateX(-100%);transition:transform .3s var(--lms-motion);z-index:45;grid-area:unset}.sidebar.sidebar-mobile-open{transform:translateX(0)}.app-shell.sidebar-collapsed .sidebar{transform:translateX(-100%)}.mobile-overlay-visible{display:block}.header-sidebar-btn,.mobile-nav{display:flex}.app-content{max-height:calc(100vh - var(--lms-header-h) - var(--lms-mobile-nav-h));padding-bottom:calc(var(--lms-mobile-nav-h) + var(--lms-space-lg))}.desktop-only{display:none}.mobile-only{display:block}.dashboard-grid-wide{grid-template-columns:1fr}.schedule-week{grid-template-columns:repeat(3,1fr)}.messages-layout{grid-template-columns:1fr}}@media (max-width:768px){:root{--lms-space-lg:16px;--lms-space-xl:24px}h1{font-size:1.5rem}h2{font-size:1.25rem}.app-content{padding:var(--lms-space-md)}.courses-grid{grid-template-columns:1fr}.saved-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.schedule-week{grid-template-columns:1fr 1fr}.dashboard-grid{grid-template-columns:1fr}.header-profile-name,.header-search{display:none}.qmf-toast-container{left:var(--lms-space-md);right:var(--lms-space-md)}.qmf-toast{min-width:auto}}@media (max-width:480px){.schedule-week{grid-template-columns:1fr}.login-card{padding:var(--lms-space-lg);margin:var(--lms-space-md)}.page-header{flex-direction:column;align-items:flex-start}}