@charset "UTF-8";:root{--primary: #007AFF;--primary-hover: #0051D5;--primary-light: #E5F2FF;--success: #34C759;--success-light: #E8F7ED;--warning: #FF9500;--warning-light: #FFF4E5;--danger: #FF3B30;--danger-light: #FFE8E6;--info: #5AC8FA;--info-light: #E5F7FD;--bg-primary: linear-gradient(135deg, #f5f7fa 0%, #f0f2f5 100%);--bg-secondary: #E8E8ED;--bg-card: rgba(255, 255, 255, .95);--bg-hover: #F0F0F2;--bg-overlay: rgba(0, 0, 0, .3);--text-primary: #1D1D1F;--text-secondary: #86868B;--text-tertiary: #C7C7CC;--text-white: #FFFFFF;--text-link: #007AFF;--border-color: #D1D1D6;--border-light: #E5E5EA;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .06);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .1);--shadow-xl: 0 12px 40px rgba(0, 0, 0, .12);--radius-xs: 4px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-full: 9999px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--font-xs: 12px;--font-sm: 14px;--font-md: 16px;--font-lg: 18px;--font-xl: 20px;--font-2xl: 24px;--font-3xl: 32px;--font-4xl: 40px;--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .35s ease;--z-dropdown: 1000;--z-modal: 2000;--z-toast: 3000}html.dark{--primary: #0A84FF;--primary-hover: #409CFF;--primary-light: rgba(10, 132, 255, .1);--success: #30D158;--success-light: rgba(48, 209, 88, .1);--warning: #FF9F0A;--warning-light: rgba(255, 159, 10, .1);--danger: #FF453A;--danger-light: rgba(255, 69, 58, .1);--info: #64D2FF;--info-light: rgba(100, 210, 255, .1);--bg-primary: linear-gradient(135deg, #1a1a1a 0%, #0a0a0a 100%);--bg-secondary: #1C1C1E;--bg-card: rgba(28, 28, 30, .95);--bg-hover: #2C2C2E;--bg-overlay: rgba(0, 0, 0, .6);--text-primary: #FFFFFF;--text-secondary: #98989D;--text-tertiary: #48484A;--text-white: #FFFFFF;--text-link: #0A84FF;--border-color: #38383A;--border-light: #2C2C2E;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--shadow-xl: 0 12px 40px rgba(0, 0, 0, .6)}*{margin:0;padding:0;box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:var(--font-md);line-height:1.5;color:var(--text-primary);background:var(--bg-primary);min-height:100vh;transition:background .3s ease,color .3s ease}a{color:var(--text-link);text-decoration:none;transition:opacity var(--transition-fast)}a:hover{opacity:.8}button{font-family:inherit;cursor:pointer;border:none;outline:none;background:none}input,textarea,select{font-family:inherit;font-size:inherit;outline:none}img{max-width:100%;height:auto;display:block}ul,ol{list-style:none}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.2}.container{width:98%;max-width:none;margin:0 auto;padding:0 var(--spacing-md);height:100%;display:flex;flex-direction:column}.container-narrow{max-width:800px}.container-wide{max-width:1400px}.flex{display:flex}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-col{display:flex;flex-direction:column}.flex-wrap{flex-wrap:wrap}.grid{display:grid;gap:var(--spacing-md)}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 768px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.mt-xs{margin-top:var(--spacing-xs)}.mt-sm{margin-top:var(--spacing-sm)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mt-xl{margin-top:var(--spacing-xl)}.mb-xs{margin-bottom:var(--spacing-xs)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-md{margin-bottom:var(--spacing-md)}.mb-lg{margin-bottom:var(--spacing-lg)}.mb-xl{margin-bottom:var(--spacing-xl)}.pt-xs{padding-top:var(--spacing-xs)}.pt-sm{padding-top:var(--spacing-sm)}.pt-md{padding-top:var(--spacing-md)}.pt-lg{padding-top:var(--spacing-lg)}.pt-xl{padding-top:var(--spacing-xl)}.pb-xs{padding-bottom:var(--spacing-xs)}.pb-sm{padding-bottom:var(--spacing-sm)}.pb-md{padding-bottom:var(--spacing-md)}.pb-lg{padding-bottom:var(--spacing-lg)}.pb-xl{padding-bottom:var(--spacing-xl)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-primary{color:var(--text-primary)}.text-secondary{color:var(--text-secondary)}.text-white{color:var(--text-white)}.text-link{color:var(--text-link)}.text-xs{font-size:var(--font-xs)}.text-sm{font-size:var(--font-sm)}.text-md{font-size:var(--font-md)}.text-lg{font-size:var(--font-lg)}.text-xl{font-size:var(--font-xl)}.text-2xl{font-size:var(--font-2xl)}.text-3xl{font-size:var(--font-3xl)}.font-bold{font-weight:600}.font-normal{font-weight:400}.hidden{display:none!important}@media (max-width: 768px){.hidden-mobile{display:none!important}}@media (min-width: 769px){.hidden-desktop{display:none!important}}@keyframes slideIn{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes spin{to{transform:rotate(360deg)}}.fade-in{animation:fadeIn var(--transition-normal)}.slide-in{animation:slideIn var(--transition-normal)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:10px 20px;font-size:var(--font-md);font-weight:500;font-family:PingFang SC,-apple-system,BlinkMacSystemFont,SF Pro Text,Helvetica Neue,Microsoft YaHei,sans-serif;border-radius:var(--radius-lg);transition:all var(--transition-fast);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:not(:disabled):hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn:not(:disabled):active{transform:translateY(0)}.btn-primary{background:var(--primary);color:var(--text-white)}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-secondary{background:var(--bg-secondary);color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover)}.btn-outline{background:transparent;color:var(--primary);border:1px solid var(--primary)}.btn-outline:hover:not(:disabled){background:var(--primary-light)}.btn-text{background:transparent;color:var(--primary);padding:6px 12px}.btn-text:hover:not(:disabled){background:var(--primary-light)}.btn-sm{padding:6px 14px;font-size:var(--font-sm);border-radius:var(--radius-sm)}.btn-lg{padding:14px 28px;font-size:var(--font-lg);border-radius:var(--radius-xl)}.btn-block{width:100%}.card{background:var(--bg-card);border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-sm);transition:all var(--transition-normal)}.card:hover{box-shadow:var(--shadow-md)}.card-hover{cursor:pointer}.card-hover:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.card-title{font-size:var(--font-xl);font-weight:600;margin-bottom:var(--spacing-md);color:var(--text-primary)}.card-content{color:var(--text-secondary);line-height:1.6}.input{width:100%;padding:12px 16px;font-size:var(--font-md);font-family:PingFang SC,-apple-system,BlinkMacSystemFont,Helvetica Neue,Microsoft YaHei,sans-serif;color:var(--text-primary);background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-md);transition:all var(--transition-fast)}.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.input::placeholder{color:var(--text-tertiary)}.input:disabled{background:var(--bg-secondary);cursor:not-allowed}.input-error{border-color:var(--danger)}.input-error:focus{box-shadow:0 0 0 3px var(--danger-light)}.input-group{margin-bottom:var(--spacing-md)}.input-label{display:block;font-size:var(--font-sm);font-weight:500;color:var(--text-primary);margin-bottom:var(--spacing-sm)}.input-error-msg{margin-top:var(--spacing-xs);font-size:var(--font-sm);color:var(--danger)}.badge{display:inline-flex;align-items:center;padding:4px 10px;font-size:var(--font-xs);font-weight:500;border-radius:var(--radius-full);white-space:nowrap}.badge-primary{background:var(--primary-light);color:var(--primary)}.badge-success{background:var(--success-light);color:var(--success)}.badge-warning{background:var(--warning-light);color:var(--warning)}.badge-danger{background:var(--danger-light);color:var(--danger)}.loading{display:inline-block;width:20px;height:20px;border:2px solid var(--border-light);border-top-color:var(--primary);border-radius:50%;animation:spin .6s linear infinite}.loading-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--bg-overlay);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal)}.toast{position:fixed;top:20px;right:20px;min-width:300px;padding:16px 20px;background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);z-index:var(--z-toast);animation:slideIn .3s ease}.toast-success{border-left:4px solid var(--success)}.toast-error{border-left:4px solid var(--danger)}.toast-warning{border-left:4px solid var(--warning)}.toast-info{border-left:4px solid var(--info)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--bg-overlay);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);animation:fadeIn .2s ease}.modal{background:var(--bg-card);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);max-width:500px;width:90%;max-height:90vh;overflow:auto;animation:fadeIn .3s ease}.modal.modal-wide{max-width:900px}.modal-header{padding:var(--spacing-lg);border-bottom:1px solid var(--border-light)}.modal-title{font-size:var(--font-xl);font-weight:600;color:var(--text-primary)}.modal-body{padding:var(--spacing-lg)}.modal-footer{padding:var(--spacing-lg);border-top:1px solid var(--border-light);display:flex;justify-content:flex-end;gap:var(--spacing-sm)}.conflict-info-text{font-size:15px;color:var(--text-secondary);margin-bottom:var(--spacing-lg);padding:var(--spacing-md);background:#fff3e0;border-left:3px solid #ff9500;border-radius:var(--radius-sm)}.conflict-courses-list{display:grid;gap:var(--spacing-md)}.conflict-detail-card{padding:var(--spacing-md);border-radius:var(--radius-md);border:2px solid var(--border-light);transition:all var(--transition-fast);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.conflict-detail-card.normal{background:#e3f2fd;border-color:#2196f3}.conflict-detail-card.experiment{background:#fff3e0;border-color:#ff9500}.conflict-detail-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.conflict-detail-card .conflict-detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:1px solid rgba(0,0,0,.1)}.conflict-detail-card .conflict-detail-header .course-number{font-weight:600;font-size:16px;color:var(--text-primary)}.conflict-detail-card .detail-item{display:grid;grid-template-columns:100px 1fr;gap:var(--spacing-sm);padding:var(--spacing-xs) 0}.conflict-detail-card .detail-item label{font-size:13px;color:var(--text-secondary);font-weight:500}.conflict-detail-card .detail-item div{font-size:14px;color:var(--text-primary);font-weight:400}.table{width:100%;background:var(--bg-card);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.table-header{background:var(--bg-secondary);font-weight:600;font-size:var(--font-sm);color:var(--text-secondary)}.table-row{border-bottom:1px solid var(--border-light);transition:background var(--transition-fast)}.table-row:last-child{border-bottom:none}.table-row:hover{background:var(--bg-hover)}.table-cell{padding:var(--spacing-md);text-align:left}.pagination{display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);margin-top:var(--spacing-lg)}.pagination-item{min-width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);font-size:var(--font-sm);font-weight:500;color:var(--text-primary);background:var(--bg-card);cursor:pointer;transition:all var(--transition-fast)}.pagination-item:hover:not(.active):not(:disabled){background:var(--bg-hover)}.pagination-item.active{background:var(--primary);color:var(--text-white)}.pagination-item:disabled{opacity:.5;cursor:not-allowed}.app-header{background:var(--bg-card);border-bottom:1px solid var(--border-light);box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:100;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);transition:all .3s ease}.app-header .header-content{display:flex;align-items:center;justify-content:space-between;height:64px}.app-header .logo{display:flex;align-items:center;gap:var(--spacing-sm);font-size:var(--font-xl);font-weight:600;color:var(--text-primary);text-decoration:none;transition:opacity var(--transition-fast)}.app-header .logo:hover{opacity:.8}.app-header .logo .logo-icon{font-size:28px}.app-header .nav{display:flex;align-items:center;gap:var(--spacing-lg)}.app-header .nav-link{color:var(--text-primary);font-size:var(--font-md);font-weight:500;text-decoration:none;transition:color var(--transition-fast);padding:8px 12px;border-radius:var(--radius-sm)}.app-header .nav-link:hover{color:var(--primary);background:var(--primary-light)}.app-header .nav-link.router-link-active{color:var(--primary)}.app-header .nav-user{position:relative}.app-header .nav-user .user-info{display:flex;align-items:center;gap:var(--spacing-sm);padding:8px 12px;border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast)}.app-header .nav-user .user-info:hover{background:var(--bg-hover)}.app-header .nav-user .user-info .user-name{font-size:var(--font-md);font-weight:500;color:var(--text-primary)}.app-header .nav-user .user-info .user-icon{font-size:20px}.app-header .nav-user .dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:160px;background:var(--bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--spacing-sm) 0;animation:fadeIn .2s ease}.app-header .nav-user .dropdown-item{display:block;padding:10px 16px;color:var(--text-primary);font-size:var(--font-md);text-decoration:none;cursor:pointer;transition:background var(--transition-fast)}.app-header .nav-user .dropdown-item:hover{background:var(--bg-hover)}.app-header .nav-user .dropdown-divider{height:1px;background:var(--border-light);margin:var(--spacing-xs) 0}.app-header .nav-auth{display:flex;align-items:center;gap:var(--spacing-md)}.app-header .theme-toggle{display:flex;align-items:center;justify-content:center;width:40px;height:40px;font-size:20px;color:var(--text-primary);border-radius:var(--radius-full);background:transparent;border:none;cursor:pointer;transition:all var(--transition-fast)}.app-header .theme-toggle svg{color:currentColor}.app-header .theme-toggle:hover{background:var(--bg-hover);transform:scale(1.1)}.app-header .theme-toggle:active{transform:scale(.95)}html.dark .app-header .theme-toggle{color:#fff!important}html.dark .app-header .theme-toggle svg{color:#fff!important}html.dark .app-header .theme-toggle:hover{background:#ffffff1a}@media (max-width: 768px){.app-header .header-content{height:56px}.app-header .logo .logo-text{display:none}.app-header .nav{gap:var(--spacing-sm)}}.app-footer{background:var(--bg-card);border-top:1px solid var(--border-light);padding:var(--spacing-xl) 0;margin-top:auto}.app-footer .footer-content{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-lg)}.app-footer .footer-left .copyright{font-size:var(--font-sm);color:var(--text-secondary);margin-bottom:var(--spacing-xs)}.app-footer .footer-left .description{font-size:var(--font-xs);color:var(--text-tertiary)}.app-footer .footer-right{display:flex;align-items:center;gap:var(--spacing-md)}.app-footer .footer-right .footer-link{font-size:var(--font-sm);color:var(--text-secondary);text-decoration:none;transition:color var(--transition-fast)}.app-footer .footer-right .footer-link:hover{color:var(--primary)}.app-footer .footer-right .divider{color:var(--text-tertiary)}@media (max-width: 768px){.app-footer .footer-content{flex-direction:column;text-align:center}.app-footer .footer-right{flex-wrap:wrap;justify-content:center}}.toast-container{position:fixed;top:80px;right:20px;z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--spacing-sm);pointer-events:none}.toast{display:flex;align-items:center;gap:var(--spacing-md);min-width:320px;max-width:420px;padding:16px 20px;background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);pointer-events:all;border-left:4px solid}.toast .toast-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;border-radius:50%}.toast .toast-message{flex:1;font-size:var(--font-md);color:var(--text-primary);line-height:1.5}.toast .toast-close{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:20px;color:var(--text-tertiary);background:none;border:none;cursor:pointer;border-radius:50%;transition:all var(--transition-fast)}.toast .toast-close:hover{background:var(--bg-hover);color:var(--text-primary)}.toast-success{border-color:var(--success)}.toast-success .toast-icon{color:var(--success);background:var(--success-light)}.toast-error{border-color:var(--danger)}.toast-error .toast-icon{color:var(--danger);background:var(--danger-light)}.toast-warning{border-color:var(--warning)}.toast-warning .toast-icon{color:var(--warning);background:var(--warning-light)}.toast-info{border-color:var(--info)}.toast-info .toast-icon{color:var(--info);background:var(--info-light)}.toast-enter-active,.toast-leave-active{transition:all .3s ease}.toast-enter-from{opacity:0;transform:translate(100%)}.toast-leave-to{opacity:0;transform:translate(100%) scale(.8)}@media (max-width: 768px){.toast-container{left:20px;right:20px}.toast{min-width:auto;max-width:none}}.loading-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--bg-overlay);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-md);z-index:var(--z-modal);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.loading-overlay .loading-spinner{width:50px;height:50px;border:4px solid var(--border-light);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}.loading-overlay .loading-text{font-size:var(--font-lg);color:var(--text-white);font-weight:500}.fade-enter-active,.fade-leave-active{transition:opacity .2s ease}.fade-enter-from,.fade-leave-to{opacity:0}.home-view{width:100%;height:100%;overflow:hidden;position:fixed;top:0;left:0;background:linear-gradient(135deg,#667eea,#764ba2)}@media (prefers-color-scheme: dark){.home-view{background:linear-gradient(135deg,#1a1a2e,#16213e)}}.home-view .welcome-container{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:0 var(--spacing-lg)}.home-view .welcome-content{text-align:center;animation:fadeInUp 1s ease-out}.home-view .welcome-title{font-size:clamp(48px,8vw,80px);font-weight:700;color:#fff;margin:0;margin-bottom:clamp(40px,8vw,60px);letter-spacing:-.02em;line-height:1.1;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Helvetica Neue,Arial,sans-serif;text-shadow:0 4px 20px rgba(0,0,0,.3);transition:transform .3s ease}.home-view .welcome-title:hover{transform:scale(1.02)}.home-view .action-button{padding:16px 56px;font-size:20px;font-weight:600;color:#fff;background:#ffffff26;border:2px solid rgba(255,255,255,.3);border-radius:980px;cursor:pointer;transition:all .3s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Helvetica Neue,Arial,sans-serif;letter-spacing:.02em;box-shadow:0 8px 32px #0000001a}.home-view .action-button:hover{background:#ffffff40;border-color:#ffffff80;transform:translateY(-2px) scale(1.05);box-shadow:0 12px 48px #00000026}.home-view .action-button:active{transform:translateY(0) scale(1);box-shadow:0 4px 16px #0000001a}@keyframes fadeInUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.auth-view{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:var(--spacing-lg);transition:background .3s ease}html.dark .auth-view{background:linear-gradient(135deg,#1a1a2e,#16213e)}.auth-container{width:100%;max-width:480px;animation:fadeIn .5s ease}.auth-card{padding:var(--spacing-2xl);margin-bottom:var(--spacing-lg)}.auth-header{text-align:center;margin-bottom:var(--spacing-xl)}.auth-header .auth-title{font-size:var(--font-3xl);font-weight:700;color:var(--text-primary);margin-bottom:var(--spacing-sm)}.auth-header .auth-subtitle{font-size:var(--font-md);color:var(--text-secondary)}.auth-form .divider{height:1px;background:var(--border-light);margin:var(--spacing-lg) 0}.auth-form .input-hint{margin-top:var(--spacing-xs);font-size:var(--font-xs);color:var(--text-tertiary)}.auth-form .btn{margin-top:var(--spacing-md)}.auth-footer{margin-top:var(--spacing-lg);text-align:center}.auth-footer .auth-link{font-size:var(--font-sm);color:var(--text-secondary)}.auth-footer .auth-link a{color:var(--primary);font-weight:600;text-decoration:none}.auth-footer .auth-link a:hover{text-decoration:underline}.back-home{display:block;text-align:center;color:var(--text-white);font-size:var(--font-md);text-decoration:none;opacity:.9;transition:opacity var(--transition-fast)}.back-home:hover{opacity:1}@media (max-width: 768px){.auth-view{padding:var(--spacing-md)}.auth-card{padding:var(--spacing-xl)}.auth-header .auth-title{font-size:var(--font-2xl)}}.captcha-group{display:flex;gap:var(--spacing-sm);align-items:center}.captcha-group .input{flex:1}.captcha-group .captcha-image{height:40px;cursor:pointer;border-radius:8px;border:1px solid var(--border-color);transition:all .2s}.captcha-group .captcha-image:hover{opacity:.8;transform:scale(1.05)}.verification-input-group{display:flex;gap:var(--spacing-sm);align-items:center}.verification-input-group .input{flex:1}.verification-input-group .btn{white-space:nowrap;min-width:120px}.course-view{min-height:100vh;display:flex;flex-direction:column}.course-view .main-content{flex:1;padding:72px 0 var(--spacing-sm);display:flex;flex-direction:column;min-height:0}@media (min-width: 769px){.course-view .container{width:64vw!important;max-width:none!important;padding:0 2vw!important}.course-view .course-header{margin-bottom:1vh!important;padding-bottom:.5vh!important}.course-view .course-header .page-title{font-size:clamp(24px,1.8vw,36px)!important}.course-view .course-header .page-title .title-icon{width:clamp(24px,1.8vw,36px)!important;height:clamp(24px,1.8vw,36px)!important}.course-view .week-selector{margin-top:-6vh!important;margin-bottom:1vh!important}.course-view .week-selector .current-week-display{font-size:clamp(16px,1vw,24px)!important;min-width:clamp(80px,6vw,150px)!important}.course-view .week-selector .week-nav-btn{width:clamp(28px,2vw,40px)!important;height:clamp(28px,2vw,40px)!important}.course-view .course-table-wrapper{width:100%!important;height:63.75vh!important;max-height:63.75vh!important;margin-top:10vh!important}.course-view .course-table{width:100%!important}.course-view .course-table th{font-size:clamp(11px,.75vw,15px)!important;height:clamp(30px,2.25vh,45px)!important;padding:2px!important}.course-view .course-table .time-col{width:clamp(75px,4.5vw,120px)!important}.course-view .course-table .time-col .section-num{font-size:clamp(11px,.75vw,15px)!important}.course-view .course-table .time-col .section-time{font-size:clamp(9px,.6vw,12px)!important}.course-view .course-table .course-cell{height:12px!important;min-height:12px!important;max-height:12px!important}.course-view .course-table .course-item .course-name{font-size:clamp(10px,.7vw,14px)!important}.course-view .course-table .course-item .course-code{font-size:clamp(9px,.5vw,11px)!important}.course-view .course-table .course-item .course-info{font-size:clamp(9px,.6vw,12px)!important}}@media (max-width: 768px){.course-view{min-height:100vh;overflow-x:auto!important;overflow-y:auto!important;-webkit-overflow-scrolling:touch;min-width:1400px!important;width:100%}.course-view .main-content{overflow:visible!important;min-width:1400px!important}.course-view .container{min-width:1400px!important;width:100%!important;padding:0 8px!important}.course-view .course-table-wrapper{touch-action:pan-x pan-y;min-width:1300px!important}.course-view .course-table{min-width:1300px!important}.course-view .time-col{width:150px!important;min-width:150px!important}.course-view .course-cell{min-width:160px!important}}.course-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px;padding-bottom:24px;border-bottom:2px solid var(--border-light);flex-wrap:wrap;gap:var(--spacing-sm);position:relative}.course-header .page-title{font-size:32px;font-weight:700;color:var(--text-primary);margin:0;display:flex;align-items:center;gap:14px;letter-spacing:-.5px}.course-header .page-title .title-icon{color:#6366f1;flex-shrink:0;width:32px;height:32px;filter:drop-shadow(0 2px 4px rgba(99,102,241,.2))}.course-header .page-subtitle{font-size:14px;color:var(--text-secondary);margin-top:4px;font-weight:500}.course-header .course-actions{display:flex;gap:12px;flex-wrap:wrap;position:relative;z-index:20}.week-selector{display:flex;align-items:center;justify-content:center;gap:var(--spacing-md);margin-top:-240px;margin-bottom:248px;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;position:relative;z-index:10}.week-selector .current-week-display{font-size:20px;font-weight:600;color:var(--text-primary);min-width:120px;text-align:center;-webkit-user-select:none;user-select:none}.week-selector .week-nav-btn{width:38px;height:38px;border-radius:50%;border:2px solid var(--border-light);background:var(--bg-card);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;flex-shrink:0}.week-selector .week-nav-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background:var(--bg-secondary);transform:scale(1.05)}.week-selector .week-nav-btn:active:not(:disabled){transform:scale(.95)}.week-selector .week-nav-btn:disabled{opacity:.3;cursor:not-allowed}.week-selector .week-nav-btn svg{display:block}.course-table-wrapper{background:var(--bg-card);border-radius:20px;border:1px solid var(--border-light);box-shadow:0 4px 12px #00000008;width:100%;overflow:hidden;flex:1;display:flex;flex-direction:column;min-height:0;transition:all .3s;margin-top:140px}.course-table-wrapper:hover{box-shadow:0 8px 20px #0000000f}.course-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;height:100%;border-radius:20px;overflow:hidden}.course-table th,.course-table td{text-align:center;border:1px solid var(--border-light)}.course-table thead{background:var(--bg-secondary)}.course-table thead th{font-weight:700;font-size:16px;color:var(--text-secondary);font-family:inherit;text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid var(--border-light)}.course-table thead th:first-child{border-top-left-radius:20px}.course-table thead th:last-child{border-top-right-radius:20px}.course-table tbody tr{height:12px!important;min-height:12px!important;max-height:12px!important;transition:all .2s ease}.course-table tbody tr:hover,.course-table tbody tr:hover td{background:var(--bg-hover)}.course-table tbody tr:hover .time-col.time-morning{background:linear-gradient(135deg,#fffbea,#fff4d1)}.course-table tbody tr:hover .time-col.time-afternoon{background:linear-gradient(135deg,#eff6ff,#dbeafe)}.course-table tbody tr:hover .time-col.time-evening{background:linear-gradient(135deg,#faf5ff,#f3e8ff)}.course-table tbody tr:last-child td:first-child{border-bottom-left-radius:20px}.course-table tbody tr:last-child td:last-child{border-bottom-right-radius:20px}.course-table .time-col{width:132px;background:var(--bg-secondary);font-family:inherit;transition:background-color var(--transition-fast)}.course-table .time-col .section-num{font-weight:500;font-size:16px;color:var(--text-secondary);margin-bottom:4px}.course-table .time-col .section-time{font-size:14px;color:var(--text-primary);font-variant-numeric:tabular-nums;font-weight:500}.course-table .time-col.time-morning{background:linear-gradient(135deg,#fff8e1,#ffecb3)}.course-table .time-col.time-morning .section-num{color:#f57f17}.course-table .time-col.time-morning .section-time{color:#e65100}.course-table .time-col.time-afternoon{background:linear-gradient(135deg,#e3f2fd,#bbdefb)}.course-table .time-col.time-afternoon .section-num{color:#1565c0}.course-table .time-col.time-afternoon .section-time{color:#0d47a1}.course-table .time-col.time-evening{background:linear-gradient(135deg,#f3e5f5,#e1bee7)}.course-table .time-col.time-evening .section-num{color:#6a1b9a}.course-table .time-col.time-evening .section-time{color:#4a148c}.course-table .course-cell{vertical-align:top;padding:1px!important;height:12px!important;min-height:12px!important;max-height:12px!important;position:relative;box-sizing:border-box;overflow:hidden!important}@keyframes courseDissolve{0%{opacity:0;transform:scale(.85);filter:blur(8px)}60%{opacity:.7;filter:blur(3px)}to{opacity:1;transform:scale(1);filter:blur(0)}}.course-table .course-container{width:100%;height:100%;position:relative;display:flex;flex-direction:column}.course-table .course-wrapper{width:100%;height:100%;display:flex;flex-direction:column;gap:4px}.course-table .course-fade-enter-active{transition:opacity .5s cubic-bezier(.4,0,.2,1) .2s,transform .5s cubic-bezier(.4,0,.2,1) .2s,filter .5s cubic-bezier(.4,0,.2,1) .2s}.course-table .course-fade-leave-active{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;transition:opacity .4s cubic-bezier(.4,0,.6,1),transform .4s cubic-bezier(.4,0,.6,1),filter .4s cubic-bezier(.4,0,.6,1)}.course-table .course-fade-enter-from,.course-table .course-fade-leave-to{opacity:0;transform:scale(.92);filter:blur(12px)}.course-table .course-item{padding:4px;border-radius:6px;cursor:pointer;margin-bottom:2px;border-left:2px solid transparent;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;overflow:hidden;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;text-align:center;box-shadow:0 2px 4px #00000014}.course-table .course-item:last-child{margin-bottom:0}.course-table .course-item.normal{background:linear-gradient(135deg,#e3f2fd,#bbdefb);border-left-color:#2196f3}.course-table .course-item.normal .course-name{color:#1565c0;font-weight:600}.course-table .course-item.normal .course-code,.course-table .course-item.normal .course-info{color:#1976d2}.course-table .course-item.normal:hover{background:linear-gradient(135deg,#bbdefb,#90caf9);box-shadow:0 4px 8px #2196f333}.course-table .course-item.experiment{background:linear-gradient(135deg,#fff3e0,#ffe0b2);border-left-color:#ff9800}.course-table .course-item.experiment .course-name{color:#e65100;font-weight:600}.course-table .course-item.experiment .course-code,.course-table .course-item.experiment .course-info{color:#f57c00}.course-table .course-item.experiment:hover{background:linear-gradient(135deg,#ffe0b2,#ffcc80);box-shadow:0 4px 8px #ff980033}:global(.dark) .course-table .course-item.normal{background:#2196f326;border-left-color:#42a5f5}:global(.dark) .course-table .course-item.normal .course-name{color:#90caf9}:global(.dark) .course-table .course-item.normal .course-code,:global(.dark) .course-table .course-item.normal .course-info{color:#64b5f6}:global(.dark) .course-table .course-item.experiment{background:#ff980026;border-left-color:#ffa726}:global(.dark) .course-table .course-item.experiment .course-name{color:#ffb74d}:global(.dark) .course-table .course-item.experiment .course-code,:global(.dark) .course-table .course-item.experiment .course-info{color:#ffa726}.course-table .course-item:hover:not(.course-fade-enter-active):not(.course-fade-leave-active){transform:translateY(-2px);box-shadow:var(--shadow-md);transition:all var(--transition-fast)}.course-table .course-item .course-name{font-weight:600;font-size:16px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;width:100%}.course-table .course-item .course-code{font-size:13px;opacity:.9;font-family:SF Mono,Monaco,Consolas,Liberation Mono,Courier New,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500;width:100%}.course-table .course-item .course-info{font-size:14px;opacity:.95;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500;width:100%;direction:rtl;text-align:center}.course-table .course-conflict{background:#ffebee!important;border-left-color:#f44336!important;padding:6px 8px!important;justify-content:center!important;align-items:center!important;overflow-y:auto;gap:6px!important}.course-table .course-conflict .conflict-badge{position:absolute;top:6px;right:6px;background:#f44336;color:#fff;font-size:10px;padding:3px 6px;border-radius:4px;font-weight:600;z-index:1;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;letter-spacing:.02em}.course-table .course-conflict .conflict-course-item{padding:6px 0;border-bottom:1px solid rgba(244,67,54,.15);flex-shrink:0;width:100%;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}.course-table .course-conflict .conflict-course-item:last-child{padding-bottom:0;border-bottom:none}.course-table .course-conflict .conflict-course-item .course-name{font-size:13px;line-height:1.4;font-weight:600;color:#d32f2f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.01em;width:100%}.course-table .course-conflict .conflict-course-item .course-info{font-size:11px;opacity:.9;color:#b71c1c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500;width:100%;direction:rtl;text-align:center}.course-table .course-conflict::-webkit-scrollbar{width:4px}.course-table .course-conflict::-webkit-scrollbar-thumb{background:#f443364d;border-radius:2px}.empty-state{text-align:center;padding:var(--spacing-xl) 0;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}.empty-state .empty-icon{color:var(--text-tertiary);margin-bottom:var(--spacing-md)}.empty-state .empty-text{font-size:var(--font-lg);color:var(--text-secondary);margin-bottom:var(--spacing-lg)}.detail-item{padding:var(--spacing-md) 0;border-bottom:1px solid var(--border-light)}.detail-item:last-child{border-bottom:none}.detail-item label{display:block;font-size:var(--font-sm);color:var(--text-secondary);margin-bottom:var(--spacing-xs)}.detail-item>div{font-size:var(--font-md);color:var(--text-primary);font-weight:500}.bound-account-info{background:var(--bg-secondary);border-radius:var(--radius-md);padding:var(--spacing-md);margin-bottom:var(--spacing-md)}.bound-account-info .info-item{display:flex;align-items:center;padding:var(--spacing-sm) 0;font-size:var(--font-md)}.bound-account-info .info-item:not(:last-child){border-bottom:1px solid var(--border-light)}.bound-account-info .info-item .info-label{color:var(--text-secondary);font-weight:500;min-width:60px;flex-shrink:0;font-family:PingFang SC,Microsoft YaHei,sans-serif}.bound-account-info .info-item .info-value{color:var(--text-primary);font-weight:600;font-family:PingFang SC,SF Mono,Monaco,Consolas,Microsoft YaHei,monospace}.fetch-status-dynamic{background:var(--bg-secondary);border-radius:var(--radius-md);padding:var(--spacing-md);margin-top:var(--spacing-md)}.fetch-status-dynamic .status-item-dynamic{display:flex;align-items:center;gap:var(--spacing-sm);opacity:.5;transition:opacity .3s}.fetch-status-dynamic .status-item-dynamic.active,.fetch-status-dynamic .status-item-dynamic.completed{opacity:1}.fetch-status-dynamic .status-item-dynamic.completed .status-icon{background:var(--success);color:#fff}.fetch-status-dynamic .status-item-dynamic .status-icon{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--bg-tertiary);color:var(--text-secondary);flex-shrink:0;font-size:12px;font-weight:600}.fetch-status-dynamic .status-item-dynamic .status-text{font-size:var(--font-md);color:var(--text-primary);font-weight:500;font-family:PingFang SC,Microsoft YaHei,sans-serif}.captcha-box{margin-bottom:var(--spacing-sm);display:flex;align-items:center;justify-content:center;min-height:60px;background:var(--bg-secondary);border-radius:var(--radius-md);border:1px solid var(--border-light);padding:var(--spacing-sm)}.captcha-box .captcha-image{max-width:100%;height:auto;cursor:pointer;border-radius:var(--radius-sm);transition:transform .2s}.captcha-box .captcha-image:hover{transform:scale(1.05)}.captcha-box .captcha-loading{color:var(--text-secondary);font-size:var(--font-sm)}.modal-close{position:absolute;right:var(--spacing-md);top:var(--spacing-md);background:none;border:none;font-size:24px;color:var(--text-secondary);cursor:pointer;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all .2s}.modal-close:hover{background:var(--bg-secondary);color:var(--text-primary)}.profile-view{min-height:100vh;display:flex;flex-direction:column}.profile-view .main-content{flex:1;padding:var(--spacing-xl) 0}.profile-view .page-title{font-size:var(--font-3xl);font-weight:700;color:var(--text-primary);margin-bottom:var(--spacing-xl)}.profile-view .info-list .info-item{padding:var(--spacing-md) 0;display:flex;align-items:center;border-bottom:1px solid var(--border-light)}.profile-view .info-list .info-item:last-child{border-bottom:none}.profile-view .info-list .info-item label{width:120px;font-size:var(--font-sm);color:var(--text-secondary);flex-shrink:0}.profile-view .info-list .info-item>div{flex:1;font-size:var(--font-md);color:var(--text-primary);font-weight:500}.profile-view .form .btn{margin-top:var(--spacing-sm)}.profile-view .info-box{padding:var(--spacing-md);border-radius:var(--radius-md);background:var(--bg-secondary);border:1px solid var(--border-light)}.profile-view .info-box .info-item{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-xs) 0}.profile-view .info-box .info-item:not(:last-child){margin-bottom:var(--spacing-xs)}.profile-view .info-box .info-item .info-label{font-size:var(--font-sm);color:var(--text-secondary);font-weight:500}.profile-view .info-box .info-item .info-value{font-size:var(--font-md);color:var(--text-primary);font-weight:600}.profile-view .info-box .info-item .info-value.success{color:var(--color-success)}.profile-view .info-box.warning{background:#ffc1071a;border-color:var(--color-warning);color:var(--color-warning);font-weight:500}@media (max-width: 768px){.profile-view .page-title{font-size:var(--font-2xl)}.profile-view .info-list .info-item{flex-direction:column;align-items:flex-start;gap:var(--spacing-xs)}.profile-view .info-list .info-item label{width:auto}}.admin-view{min-height:100vh;display:flex;flex-direction:column;background:var(--bg-primary);font-family:PingFang SC,-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Helvetica Neue,Microsoft YaHei,微软雅黑,Arial,sans-serif}.admin-view *{font-family:inherit}.main-content{flex:1;padding:24px 0}.container{max-width:none;width:95%;margin:0 auto;padding:0 20px}.page-title{font-size:24px;font-weight:600;color:var(--text-primary);margin:0 0 20px;display:flex;align-items:center;gap:10px}.page-title svg{width:24px;height:24px;color:#6b7280}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.stat-card{background:var(--bg-card);border-radius:16px;padding:20px;border:1px solid var(--border-light);box-shadow:0 2px 8px #00000008;transition:all .3s ease}.stat-card:hover{transform:translateY(-3px);box-shadow:0 4px 12px #0000000f;border-color:#6b72804d}.stat-icon{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,#6b72801a,#4b55631a);display:flex;align-items:center;justify-content:center;margin-bottom:12px}.stat-icon svg{width:22px;height:22px;color:#6b7280}.stat-value{font-size:28px;font-weight:700;color:var(--text-primary);margin-bottom:4px;font-variant-numeric:tabular-nums;font-family:PingFang SC,-apple-system,BlinkMacSystemFont,SF Pro Display,Helvetica Neue,sans-serif}.stat-label{font-size:12px;color:var(--text-secondary);font-weight:500}.tabs-nav{display:flex;gap:8px;background:#00000008;padding:6px;border-radius:12px;margin-bottom:20px}:global(.dark) .tabs-nav{background:#ffffff0d}.tab-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border:none;background:transparent;color:#6b7280;font-size:13px;font-weight:600;border-radius:10px;cursor:pointer;transition:all .3s}.tab-btn svg{width:16px;height:16px}.tab-btn.active{background:var(--bg-card);color:var(--text-primary);box-shadow:0 2px 8px #00000014}.tab-btn:hover:not(.active){background:#ffffff80;color:#4b5563}:global(.dark) .tab-btn{color:#9ca3af}:global(.dark) .tab-btn.active{background:#ffffff1a;color:#f3f4f6}:global(.dark) .tab-btn:hover:not(.active){background:#ffffff0d;color:#d1d5db}.search-bar{position:relative;display:flex;align-items:center;gap:12px}.search-bar .search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--text-secondary);pointer-events:none;z-index:1}.search-bar .search-input{flex:1;padding:10px 14px 10px 40px;border:1.5px solid var(--border-color);border-radius:10px;font-size:14px;font-family:inherit;background:var(--bg-primary);color:var(--text-primary);transition:all .25s cubic-bezier(.4,0,.2,1);box-shadow:0 1px 2px #0000000d}.search-bar .search-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a,0 2px 4px #0000001a;transform:translateY(-1px)}.search-bar .search-input:hover:not(:focus){border-color:#64748b;box-shadow:0 2px 4px #00000014}.search-bar .search-input::placeholder{color:var(--text-secondary);opacity:.7}.search-bar .search-stats{flex-shrink:0;padding:4px 12px;background:var(--bg-light);border-radius:6px;font-size:12px;color:var(--text-secondary)}.content-card{background:var(--bg-card);border-radius:16px;padding:20px;border:1px solid var(--border-light);box-shadow:0 2px 8px #00000008;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border-light)}.section-title{font-size:16px;font-weight:600;color:var(--text-primary);display:flex;align-items:center;gap:8px;margin:0}.section-title svg{width:20px;height:20px;color:#6b7280}.section-actions{display:flex;gap:12px;align-items:center}.section-actions .filter-group{display:flex;align-items:center}.section-actions .filter-group .filter-select{padding:6px 12px;font-size:14px;border:1px solid var(--border-light);border-radius:6px;background:var(--bg-card);color:var(--text-primary);cursor:pointer;transition:all .2s;outline:none}.section-actions .filter-group .filter-select:hover{border-color:var(--primary-color)}.section-actions .filter-group .filter-select:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px #6366f11a}.filters-section{background:var(--bg-card);border:1px solid var(--border-light);border-radius:12px;padding:16px;margin-bottom:16px}.filters-section .search-box{position:relative;margin-bottom:12px}.filters-section .search-box svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--text-secondary);pointer-events:none}.filters-section .search-box .search-input{width:100%;padding:10px 14px 10px 40px;border:1.5px solid var(--border-color);border-radius:10px;font-size:14px;font-family:inherit;background:var(--bg-primary);color:var(--text-primary);transition:all .25s cubic-bezier(.4,0,.2,1);box-shadow:0 1px 2px #0000000d}.filters-section .search-box .search-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a,0 2px 4px #0000001a;transform:translateY(-1px)}.filters-section .search-box .search-input:hover:not(:focus){border-color:#64748b;box-shadow:0 2px 4px #00000014}.filters-section .search-box .search-input::placeholder{color:var(--text-secondary);opacity:.7}.filters-section .filters-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:12px;padding:12px;background:var(--bg-secondary);border-radius:8px;animation:slideDown .2s ease-out}@media (max-width: 1200px){.filters-section .filters-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 768px){.filters-section .filters-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 480px){.filters-section .filters-grid{grid-template-columns:1fr}}.filters-section .filter-item,.filters-section .filter-group{display:flex;flex-direction:column;gap:6px}.filters-section .filter-item label,.filters-section .filter-group label{font-size:12px;font-weight:600;color:var(--text-secondary);margin-bottom:2px}.filters-section .filter-item input[type=text],.filters-section .filter-item input[type=date],.filters-section .filter-item select,.filters-section .filter-group input[type=text],.filters-section .filter-group input[type=date],.filters-section .filter-group select{padding:8px 12px;border:1.5px solid var(--border-color);border-radius:6px;background:var(--bg-primary);color:var(--text-primary);font-size:13px;font-family:inherit;transition:all .2s}.filters-section .filter-item input[type=text]:focus,.filters-section .filter-item input[type=date]:focus,.filters-section .filter-item select:focus,.filters-section .filter-group input[type=text]:focus,.filters-section .filter-group input[type=date]:focus,.filters-section .filter-group select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.filters-section .filter-item input[type=text]:hover:not(:focus),.filters-section .filter-item input[type=date]:hover:not(:focus),.filters-section .filter-item select:hover:not(:focus),.filters-section .filter-group input[type=text]:hover:not(:focus),.filters-section .filter-group input[type=date]:hover:not(:focus),.filters-section .filter-group select:hover:not(:focus){border-color:#64748b}.filters-section .filter-item select,.filters-section .filter-group select{cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:12px;padding-right:32px}.filters-section .filter-item select:focus,.filters-section .filter-group select:focus{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%233b82f6' d='M6 9L1 4h10z'/%3E%3C/svg%3E")}.filters-section .filter-item select::-ms-expand,.filters-section .filter-group select::-ms-expand{display:none}@media (prefers-color-scheme: dark){.filters-section .filter-item select,.filters-section .filter-group select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23cbd5e1' d='M6 9L1 4h10z'/%3E%3C/svg%3E")}}.filters-section .filter-label{font-size:11px;font-weight:600;color:var(--text-secondary);margin-bottom:2px;text-transform:uppercase;letter-spacing:.5px}.filters-section .filter-actions{display:flex;justify-content:space-between;align-items:center;padding-top:10px;border-top:1px solid var(--border-light);flex-wrap:wrap;gap:10px}.filters-section .filter-actions .btn-reset{display:flex;align-items:center;gap:6px;padding:6px 12px;background:#6b728014;border:1px solid var(--border-light);border-radius:8px;color:var(--text-primary);font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.filters-section .filter-actions .btn-reset svg{width:14px;height:14px}.filters-section .filter-actions .btn-reset:hover{background:#6b72801f;border-color:var(--text-secondary)}.filters-section .filter-actions .filter-summary{display:flex;align-items:center;gap:8px}.filters-section .filter-actions .filter-summary .active-filters-badge{display:inline-flex;align-items:center;padding:6px 12px;background:#6366f11a;color:var(--primary-color);border-radius:6px;font-size:13px;font-weight:500;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.table-info{padding:12px 0;font-size:14px;color:var(--text-secondary)}.column-settings-panel{background:var(--bg-card);border:1px solid var(--border-light);border-radius:8px;padding:16px;margin-bottom:16px;animation:slideDown .3s cubic-bezier(.4,0,.2,1)}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px);max-height:0}to{opacity:1;transform:translateY(0);max-height:500px}}@keyframes fadeInRow{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}.column-settings-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--border-light)}.column-settings-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}.column-checkbox-label{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:6px;cursor:pointer;transition:all .2s;-webkit-user-select:none;user-select:none}.column-checkbox-label:hover:not(.disabled){background:var(--bg-hover)}.column-checkbox-label.disabled{opacity:.5;cursor:not-allowed}.column-checkbox-label input[type=checkbox]{cursor:pointer;width:16px;height:16px}.column-checkbox-label span{font-size:14px;color:var(--text-primary)}.pagination{display:flex;justify-content:space-between;align-items:center;padding:24px 0;gap:16px;flex-wrap:wrap}.pagination .pagination-info{display:flex;align-items:center;gap:10px}.pagination .pagination-info .page-size-select{padding:5px 10px;border:1px solid var(--border-light);border-radius:6px;background:var(--bg-card);color:var(--text-primary);font-size:12px;cursor:pointer;transition:all .2s}.pagination .pagination-info .page-size-select:hover{border-color:var(--primary-color)}.pagination .pagination-info .page-size-select:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #6366f11a}.pagination .pagination-controls{display:flex;gap:6px;align-items:center}.pagination .pagination-controls .pagination-btn{padding:6px;border:1px solid var(--border-light);border-radius:6px;background:var(--bg-card);color:var(--text-primary);cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.pagination .pagination-controls .pagination-btn svg{width:14px;height:14px}.pagination .pagination-controls .pagination-btn:hover:not(:disabled){border-color:var(--primary-color);color:var(--primary-color)}.pagination .pagination-controls .pagination-btn:disabled{opacity:.4;cursor:not-allowed}.pagination .pagination-controls .pagination-pages{display:flex;gap:4px;align-items:center}.pagination .pagination-controls .pagination-pages .pagination-page{min-width:32px;height:32px;padding:6px 10px;border:1px solid var(--border-light);border-radius:6px;background:var(--bg-card);color:var(--text-primary);cursor:pointer;transition:all .2s;font-size:12px;font-weight:600}.pagination .pagination-controls .pagination-pages .pagination-page:hover:not(.active){border-color:var(--primary-color);color:var(--primary-color);transform:translateY(-1px)}.pagination .pagination-controls .pagination-pages .pagination-page.active{background:var(--primary-color)!important;border-color:var(--primary-color)!important;color:var(--text-primary)!important;box-shadow:0 2px 8px #6366f14d}.pagination .pagination-controls .pagination-pages .pagination-page:disabled{pointer-events:none;-webkit-user-select:none;user-select:none}.pagination .pagination-controls .pagination-pages .pagination-ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;color:var(--text-secondary);font-size:14px;-webkit-user-select:none;user-select:none}.pagination .pagination-jump{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text-secondary)}.pagination .pagination-jump .page-jump-input{width:60px;padding:6px 8px;border:1px solid var(--border-light);border-radius:6px;background:var(--bg-card);color:var(--text-primary);text-align:center;font-size:14px}.pagination .pagination-jump .page-jump-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #6366f11a}.pagination .pagination-jump .page-jump-input::-webkit-inner-spin-button,.pagination .pagination-jump .page-jump-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.pagination .pagination-jump .page-jump-input{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.text-truncate{max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;vertical-align:middle}.table-wrapper{overflow-x:auto;overflow-y:visible;border-radius:12px;border:1px solid var(--border-light);box-shadow:var(--shadow-sm);background:var(--bg-card);padding:20px}.table-wrapper h3{color:var(--text-primary);display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:16px;font-weight:600;position:relative;z-index:1}.table-wrapper h3:before{content:"";width:4px;height:20px;background:linear-gradient(135deg,#6366f1,#8b5cf6);border-radius:2px;flex-shrink:0}.table-wrapper .data-table{border:none}.action-btns{display:flex;gap:8px;align-items:center}.btn-action{padding:6px 12px;font-size:13px;font-weight:500;border:none;border-radius:6px;cursor:pointer;transition:all .2s;white-space:nowrap}.btn-action.btn-action-edit{background:#6366f11a;color:#6366f1}.btn-action.btn-action-edit:hover{background:#6366f133;transform:translateY(-1px)}.btn-action.btn-action-delete{background:#ef44441a;color:#ef4444}.btn-action.btn-action-delete:hover{background:#ef444433;transform:translateY(-1px)}.btn-action.btn-action-primary{background:#10b9811a;color:#10b981}.btn-action.btn-action-primary:hover{background:#10b98133;transform:translateY(-1px)}.data-table{width:100%;border-collapse:collapse;background:transparent;border-radius:8px;overflow:hidden;table-layout:auto}.data-table thead{background:var(--bg-secondary)}.data-table th{padding:8px 6px;text-align:left;font-size:11px;font-weight:600;color:var(--text-secondary);border-bottom:1px solid var(--border-light);white-space:nowrap;text-transform:uppercase;letter-spacing:.5px}.data-table th:first-child{padding-left:12px}.data-table th:last-child{padding-right:12px}.data-table tbody tr{animation:fadeInRow .3s ease-out;animation-fill-mode:both;transition:background-color .2s,transform .2s}.data-table tbody tr:hover{background:var(--bg-hover);transform:translate(2px)}.data-table tbody tr:nth-child(1){animation-delay:.03s}.data-table tbody tr:nth-child(2){animation-delay:.06s}.data-table tbody tr:nth-child(3){animation-delay:.09s}.data-table tbody tr:nth-child(4){animation-delay:.12s}.data-table tbody tr:nth-child(5){animation-delay:.15s}.data-table tbody tr:nth-child(6){animation-delay:.18s}.data-table tbody tr:nth-child(7){animation-delay:.21s}.data-table tbody tr:nth-child(8){animation-delay:.24s}.data-table tbody tr:nth-child(9){animation-delay:.27s}.data-table tbody tr:nth-child(10){animation-delay:.3s}.data-table tbody tr:nth-child(11){animation-delay:.33s}.data-table tbody tr:nth-child(12){animation-delay:.36s}.data-table tbody tr:nth-child(13){animation-delay:.39s}.data-table tbody tr:nth-child(14){animation-delay:.42s}.data-table tbody tr:nth-child(15){animation-delay:.45s}.data-table tbody tr:nth-child(16){animation-delay:.48s}.data-table tbody tr:nth-child(17){animation-delay:.51s}.data-table tbody tr:nth-child(18){animation-delay:.54s}.data-table tbody tr:nth-child(19){animation-delay:.57s}.data-table tbody tr:nth-child(20){animation-delay:.6s}.data-table td{padding:8px 6px;font-size:12px;color:var(--text-primary);border-bottom:1px solid var(--border-light);vertical-align:middle;white-space:nowrap}.data-table td:first-child{padding-left:12px}.data-table td:last-child{padding-right:12px}.data-table td code{font-family:SF Mono,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:11px;padding:2px 6px;background:#6366f114;border-radius:6px;color:#6366f1;font-weight:500;letter-spacing:.02em}.data-table tbody tr{transition:background .2s}.data-table tbody tr:hover{background:var(--bg-hover)}.data-table tbody tr:last-child td{border-bottom:none}.user-info{display:flex;align-items:center;gap:8px}.status-toggle{display:flex;align-items:center;gap:6px;padding:6px 12px;border:none;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s}.status-toggle svg{width:16px;height:16px}.status-toggle.status-active{background:#10b9811a;color:#10b981}.status-toggle.status-active:hover:not(:disabled){background:#10b98133}.status-toggle.status-banned{background:#ef44441a;color:#ef4444}.status-toggle.status-banned:hover:not(:disabled){background:#ef444433}.status-toggle:disabled{opacity:.5;cursor:not-allowed}.action-buttons{display:flex;gap:8px}.btn-icon{padding:6px;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;border-radius:6px;transition:all .2s cubic-bezier(.4,0,.2,1);display:inline-flex;align-items:center;justify-content:center;position:relative}.btn-icon svg{width:16px;height:16px}.btn-icon:hover{background:#6b72801a;color:var(--text-primary)}.btn-icon.btn-danger{color:#ef4444}.btn-icon.btn-danger:hover{background:#ef44441a;color:#dc2626}.btn-icon-mini{padding:3px;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;border-radius:4px;transition:all .2s;display:inline-flex;align-items:center;justify-content:center}.btn-icon-mini svg{width:12px;height:12px}.btn-icon-mini:hover{background:#6b72801a;color:var(--text-primary)}.sso-apps-table{table-layout:fixed}.sso-apps-table th:nth-child(1),.sso-apps-table td:nth-child(1){width:28%}.sso-apps-table th:nth-child(2),.sso-apps-table td:nth-child(2){width:18%}.sso-apps-table th:nth-child(3),.sso-apps-table td:nth-child(3){width:22%}.sso-apps-table th:nth-child(4),.sso-apps-table td:nth-child(4){width:8%}.sso-apps-table th:nth-child(5),.sso-apps-table td:nth-child(5){width:12%}.sso-apps-table th:nth-child(6),.sso-apps-table td:nth-child(6){width:12%}.secret-cell{display:flex;align-items:center;gap:6px;width:100%}.secret-cell code{flex:1;min-width:0;font-size:11px;padding:4px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:middle}.secret-cell code:not(.secret-masked){white-space:normal;word-break:break-all;line-height:1.5;max-height:60px;overflow-y:auto}.secret-cell code:not(.secret-masked)::-webkit-scrollbar{width:4px}.secret-cell code:not(.secret-masked)::-webkit-scrollbar-track{background:#0000000d;border-radius:2px}.secret-cell code:not(.secret-masked)::-webkit-scrollbar-thumb{background:#0003;border-radius:2px}.secret-cell code:not(.secret-masked)::-webkit-scrollbar-thumb:hover{background:#0000004d}html.dark .secret-cell code:not(.secret-masked)::-webkit-scrollbar-track{background:#ffffff0d}html.dark .secret-cell code:not(.secret-masked)::-webkit-scrollbar-thumb{background:#fff3}html.dark .secret-cell code:not(.secret-masked)::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.secret-cell .btn-icon-mini{flex-shrink:0}.secret-masked{font-family:monospace;letter-spacing:1.5px;color:var(--text-secondary);white-space:nowrap!important;font-size:14px!important}.group-name-cell{display:flex;align-items:center;gap:10px}.group-color-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.color-display{display:inline-flex;align-items:center;justify-content:center;padding:4px 12px;border-radius:8px;font-size:12px;font-family:PingFang SC,-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;font-weight:500;letter-spacing:.02em;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.3)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px;margin-bottom:24px}.form-group{display:flex;flex-direction:column;gap:8px}.form-label{font-size:14px;font-weight:500;color:var(--text-secondary)}.form-input,.form-select,.form-textarea{width:100%;padding:12px 16px;font-size:15px;font-family:PingFang SC,-apple-system,BlinkMacSystemFont,Helvetica Neue,Microsoft YaHei,sans-serif;border:2px solid var(--border-color);border-radius:12px;background:var(--bg-primary);color:var(--text-primary);outline:none;transition:all .3s;box-sizing:border-box}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:#6b7280;box-shadow:0 0 0 4px #6b72801a}.form-input:disabled,.form-select:disabled,.form-textarea:disabled{opacity:.5;cursor:not-allowed}.form-textarea{resize:vertical;min-height:100px}.form-hint{font-size:12px;color:var(--text-tertiary);margin-top:4px}.form-switch{display:flex;align-items:center;gap:12px}.switch{position:relative;width:48px;height:28px;background:#0000001a;border-radius:14px;cursor:pointer;transition:background .3s}.switch:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;background:#fff;border-radius:50%;transition:transform .3s}.switch.active{background:#6b7280}.switch.active:after{transform:translate(20px)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}:global(.light) .modal-overlay{background:#ffffffd9}.modal-dialog{background:var(--bg-card);border-radius:20px;padding:32px;max-width:500px;width:90%;max-height:85vh;overflow-y:auto;box-shadow:0 20px 60px #0000004d;animation:slideUp .3s ease}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:24px 32px 16px;border-bottom:1px solid var(--border-light)}.modal-header h3,.modal-title{font-size:20px;font-weight:600;color:var(--text-primary);margin:0}.modal-close{width:32px;height:32px;border:none;background:#0000000a;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#6b7280;font-size:20px;transition:all .2s}.modal-close:hover{background:#00000014;color:#4b5563}:global(.dark) .modal-close{background:#ffffff0d;color:#9ca3af}:global(.dark) .modal-close:hover{background:#ffffff1a;color:#d1d5db}.modal-body{display:flex;flex-direction:column;gap:20px}.modal-footer{display:flex;gap:12px;margin-top:24px;justify-content:flex-end}.empty-state{text-align:center;padding:48px 24px}.empty-state svg{width:64px;height:64px;color:#9ca3af;margin-bottom:16px}.empty-state p{font-size:16px;color:#6b7280;margin:0}@media (max-width: 768px){.main-content{padding:24px 0}.container{padding:0 16px}.page-title{font-size:24px}.stats-grid{grid-template-columns:repeat(2,1fr)}.tabs-nav{flex-direction:column}.content-card{padding:24px}.table-wrapper{font-size:13px}.form-grid{grid-template-columns:1fr}.modal-dialog{padding:24px}.section-header{flex-direction:column;align-items:flex-start;gap:12px}.section-actions{width:100%}.section-actions button{flex:1}}.permissions-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px;margin-top:20px}@media (max-width: 768px){.permissions-grid{grid-template-columns:1fr}}.permission-card{background:#ffffff08;border:1px solid rgba(255,255,255,.1);border-radius:12px;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1)}.permission-card:hover{background:#ffffff0d;border-color:#3b82f64d;box-shadow:0 8px 32px #0000004d}.permission-card-header{padding:16px 20px;background:#ffffff05;border-bottom:1px solid rgba(255,255,255,.1)}.permission-card-header .permission-group-name{font-size:16px;font-weight:600}.permission-card-header .permission-card-desc{margin-top:4px;font-size:13px;color:#ffffff80}.permission-card-body{padding:20px}.permission-card-body .permission-note{font-size:13px;color:#ffffff80;margin-bottom:16px;padding:12px;background:#3b82f61a;border-radius:8px;border-left:3px solid rgba(59,130,246,.5)}.app-checkboxes{display:flex;flex-direction:column;gap:8px}.app-checkbox{display:flex;align-items:center;padding:12px;background:#ffffff05;border:1px solid rgba(255,255,255,.1);border-radius:8px;cursor:pointer;transition:all .2s ease}.app-checkbox:hover:not(.disabled){background:#ffffff0d;border-color:#3b82f64d}.app-checkbox.disabled{opacity:.5;cursor:not-allowed}.app-checkbox input[type=checkbox]{margin-right:12px;width:18px;height:18px;cursor:pointer;accent-color:#3b82f6}.app-checkbox input[type=checkbox]:disabled{cursor:not-allowed}.app-checkbox .app-checkbox-content{display:flex;align-items:center;gap:10px;flex:1;font-size:14px}.app-checkbox .app-checkbox-icon{width:20px;height:20px;flex-shrink:0}.perm-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}:global(.light) .perm-modal-overlay{background:#ffffffd9}.perm-modal{max-width:600px;width:90%;background:#1a1a1a;border-radius:16px;overflow:hidden;box-shadow:0 20px 60px #000c;animation:slideUp .3s cubic-bezier(.4,0,.2,1)}:global(.light) .perm-modal{background:#fff;box-shadow:0 20px 60px #0003}.perm-modal-header{padding:24px 28px;background:#1a1a1a;border-bottom:1px solid #2a2a2a;display:flex;align-items:center;justify-content:space-between}:global(.light) .perm-modal-header{background:#fff;border-bottom-color:#e5e5e5}.perm-modal-title{font-size:20px;font-weight:600;color:#fff;margin:0}:global(.light) .perm-modal-title{color:#000}.perm-modal-close{width:32px;height:32px;border-radius:8px;border:none;background:#2a2a2a;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.perm-modal-close svg{width:18px;height:18px}.perm-modal-close:hover{background:#333}:global(.light) .perm-modal-close{background:#f0f0f0;color:#000}:global(.light) .perm-modal-close:hover{background:#e0e0e0}.perm-modal-content{padding:20px 24px;background:#1a1a1a;max-height:500px;overflow-y:auto}:global(.light) .perm-modal-content{background:#fff}.perm-group-card{padding:16px;background:#252525;border-radius:12px;margin-bottom:16px;border:1px solid #333}:global(.light) .perm-group-card{background:#f5f5f5;border-color:#ddd}.perm-group-name{font-weight:600;font-size:14px;color:#fff}:global(.light) .perm-group-name{color:#1a1a1a}.perm-group-desc{margin-top:6px;font-size:12px;color:#999;margin-bottom:0}:global(.light) .perm-group-desc{color:#666}.perm-apps-list{display:flex;flex-direction:column;gap:6px}.perm-app-card{display:flex;align-items:center;gap:12px;padding:12px 14px;background:#252525;border:1px solid #333;border-radius:10px;cursor:pointer;transition:all .2s ease}.perm-app-card:hover:not(.perm-app-disabled){background:#2a2a2a;border-color:#3b82f6;transform:translate(2px)}.perm-app-card.perm-app-disabled{opacity:.5;cursor:not-allowed}:global(.light) .perm-app-card{background:#f5f5f5;border-color:#ddd}:global(.light) .perm-app-card:hover:not(.perm-app-disabled){background:#e8e8e8;border-color:#3b82f6}.perm-checkbox{width:18px;height:18px;cursor:pointer;accent-color:#3b82f6;flex-shrink:0}.perm-checkbox:disabled{cursor:not-allowed}.perm-app-icon{width:22px;height:22px;flex-shrink:0}.perm-app-details{flex:1;min-width:0}.perm-app-name{font-size:13px;font-weight:600;color:#fff;margin-bottom:3px}:global(.light) .perm-app-name{color:#1a1a1a}.perm-app-desc{font-size:11px;color:#888;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:global(.light) .perm-app-desc{color:#666}.perm-modal-footer{padding:16px 24px;background:#1a1a1a;border-top:1px solid #2a2a2a;display:flex;gap:12px;justify-content:flex-end}:global(.light) .perm-modal-footer{background:#fff;border-top-color:#e5e5e5}.perm-btn-cancel{padding:10px 24px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;border:none;background:#2a2a2a;color:#fff}.perm-btn-cancel:hover{background:#333}:global(.light) .perm-btn-cancel{background:#f0f0f0;color:#000}:global(.light) .perm-btn-cancel:hover{background:#e0e0e0}.perm-btn-save{padding:10px 24px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;border:none;background:#3b82f6;color:#fff}.perm-btn-save:hover{background:#2563eb}.permission-summary{display:flex;gap:8px;align-items:center}.text-muted{color:#fff6;font-size:14px}:global(.light) .text-muted{color:#0006}.dropdown-wrapper{position:relative}.dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;background:var(--bg-card);border:1px solid var(--border-light);border-radius:8px;box-shadow:var(--shadow-md);min-width:150px;z-index:1000;overflow:hidden}.dropdown-item{display:flex;align-items:center;gap:8px;width:100%;padding:10px 16px;border:none;background:transparent;color:var(--text-primary);font-size:14px;cursor:pointer;transition:background .2s;text-align:left}.dropdown-item svg{width:16px;height:16px;color:var(--text-secondary)}.dropdown-item:hover{background:#6b72801a}.app-info{display:flex;align-items:center;gap:12px}.app-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center}.app-icon svg{width:24px;height:24px;color:var(--text-secondary)}.app-icon-placeholder{width:32px;height:32px;background:#6b72801a;border-radius:8px;display:flex;align-items:center;justify-content:center}.app-icon-placeholder svg{width:20px;height:20px;color:var(--text-secondary)}.app-name{font-size:14px;font-weight:500;color:var(--text-primary)}.app-desc{font-size:12px;color:var(--text-secondary)}.code-snippet{padding:4px 8px;background:#6b72801a;border-radius:4px;font-family:SF Mono,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px;color:var(--text-primary);letter-spacing:.02em}.redirect-uris{display:flex;flex-direction:column;gap:4px}.uri-item{font-size:12px;color:var(--text-secondary);padding:2px 6px;background:#6b72800d;border-radius:4px;word-break:break-all}.input-group{display:flex;gap:8px}.input-group input{flex:1}.info-card{display:flex;gap:12px;padding:16px;background:#3b82f61a;border:1px solid rgba(59,130,246,.2);border-radius:12px}.info-card svg{width:20px;height:20px;color:#3b82f6;flex-shrink:0}.info-card strong{color:var(--text-primary);font-size:14px}.info-card p{margin:4px 0 0;font-size:13px;color:var(--text-secondary)}.info-card ul{margin:8px 0 0}.info-card li{font-size:13px;color:var(--text-secondary);margin:4px 0}.info-card code{background:#6b72801a;padding:2px 6px;border-radius:4px;font-size:12px}.warning-card{display:flex;gap:12px;padding:16px;background:#f59e0b1a;border:1px solid rgba(245,158,11,.2);border-radius:12px}.warning-card svg{width:20px;height:20px;color:#f59e0b;flex-shrink:0}.warning-card strong{color:var(--text-primary);font-size:14px}.warning-card p{margin:4px 0 0;font-size:13px;color:var(--text-secondary)}.modal-content{background:var(--bg-card);border-radius:20px;padding:0;max-width:500px;width:90%;max-height:85vh;overflow:hidden;box-shadow:0 20px 60px #0000004d;animation:slideUp .3s ease;display:flex;flex-direction:column}html.dark .modal-content{background:var(--bg-card);box-shadow:0 20px 60px #0009}.modal-content.large{width:90%;max-width:700px}.modal-body{flex:1;overflow-y:auto;padding:24px 32px}.modal-footer{padding:16px 32px;border-top:1px solid var(--border-light);display:flex;justify-content:flex-end;gap:12px}.modal-xlarge{max-width:1400px;width:95vw;max-height:90vh}.modal-header-info{flex:1}.modal-header-info .user-info-modal h3{margin:0 0 6px;font-size:18px;font-weight:700;color:var(--text-primary)}.modal-header-info .user-info-modal .user-meta{display:flex;gap:12px;font-size:12px;color:var(--text-secondary)}.modal-header-info .user-info-modal .user-meta .meta-item{padding:2px 8px;background:var(--bg-secondary);border-radius:4px}.modal-header-info .modal-subtitle{margin:6px 0 0;font-size:13px;color:var(--text-secondary)}.courses-modal-body{padding:20px 24px;max-height:calc(90vh - 120px);overflow-y:auto}.modal-courses-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:16px}.course-detail-card{background:var(--bg-card);border:1px solid var(--border-light);border-radius:12px;padding:16px;transition:all .3s}.course-detail-card:hover{box-shadow:0 4px 12px #00000014;border-color:#6366f14d}.course-detail-card .course-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.course-detail-card .course-card-header .course-card-title{flex:1}.course-detail-card .course-card-header .course-card-title h4{margin:0 0 6px;font-size:15px;font-weight:700;color:var(--text-primary);line-height:1.4;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.course-detail-card .course-card-info{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:12px}.course-detail-card .course-card-info .info-item{font-size:11px;display:flex;align-items:center}.course-detail-card .course-card-info .info-item .info-label{color:var(--text-secondary);font-weight:600}.course-detail-card .course-card-info .info-item .info-value{color:var(--text-primary);margin-left:4px;font-weight:500}.course-detail-card .course-card-progress{margin-bottom:12px}.course-detail-card .course-card-progress .progress-label{font-size:11px;color:var(--text-secondary);font-weight:600;margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}.course-detail-card .course-card-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:12px}.course-detail-card .course-card-stats .stat-box{display:flex;align-items:center;gap:8px;padding:10px;background:var(--bg-secondary);border-radius:8px}.course-detail-card .course-card-stats .stat-box .stat-icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center}.course-detail-card .course-card-stats .stat-box .stat-icon svg{width:16px;height:16px;color:#6366f1}.course-detail-card .course-card-stats .stat-box .stat-info{flex:1}.course-detail-card .course-card-stats .stat-box .stat-info .stat-value{font-size:13px;font-weight:700;color:var(--text-primary);margin-bottom:2px}.course-detail-card .course-card-stats .stat-box .stat-info .stat-label{font-size:10px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.course-detail-card .course-card-exams{margin-bottom:12px}.course-detail-card .course-card-exams .exams-header{display:flex;justify-content:space-between;align-items:center;padding:10px;background:var(--bg-secondary);border-radius:8px;cursor:pointer;transition:all .2s}.course-detail-card .course-card-exams .exams-header:hover{background:var(--bg-hover)}.course-detail-card .course-card-exams .exams-header .exams-header-left{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--text-primary)}.course-detail-card .course-card-exams .exams-header .exams-header-left svg{width:16px;height:16px}.course-detail-card .course-card-exams .exams-header .expand-icon{width:16px;height:16px;color:var(--text-secondary);transition:transform .2s}.course-detail-card .course-card-exams .exams-header .expand-icon.expanded{transform:rotate(180deg)}.course-detail-card .course-card-exams .exams-list{margin-top:8px}.course-detail-card .course-card-exams .exams-list .exam-item{padding:8px 10px;background:var(--bg-secondary);border-radius:6px;margin-bottom:6px}.course-detail-card .course-card-exams .exams-list .exam-item:last-child{margin-bottom:0}.course-detail-card .course-card-exams .exams-list .exam-item .exam-name{font-size:12px;font-weight:600;color:var(--text-primary);margin-bottom:4px}.course-detail-card .course-card-exams .exams-list .exam-item .exam-details{display:flex;gap:8px;font-size:11px}.course-detail-card .course-card-exams .exams-list .exam-item .exam-details .exam-score{font-weight:600}.course-detail-card .course-card-exams .exams-list .exam-item .exam-details .exam-score.score-good{color:#10b981}.course-detail-card .course-card-exams .exams-list .exam-item .exam-details .exam-score.score-bad{color:#ef4444}.course-detail-card .course-card-exams .exams-list .exam-item .exam-details .exam-status{color:var(--text-secondary)}.course-detail-card .course-card-exams .exams-list .exam-item .exam-details .exam-overdue{color:#f59e0b}.course-detail-card .course-card-exams .no-exams{padding:10px;text-align:center;font-size:12px;color:var(--text-secondary);background:var(--bg-secondary);border-radius:8px}.course-detail-card .course-card-footer{padding-top:12px;border-top:1px solid var(--border-light)}.course-detail-card .course-card-footer .update-time{font-size:11px;color:var(--text-secondary)}.expand-enter-active,.expand-leave-active{transition:all .3s ease;max-height:500px;overflow:hidden}.expand-enter-from,.expand-leave-to{max-height:0;opacity:0}@media (max-width: 1024px){.modal-courses-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}}@media (max-width: 768px){.modal-courses-grid{grid-template-columns:1fr}.user-cell{display:flex;flex-direction:column;gap:4px}.user-cell strong{font-weight:600;color:var(--text-primary)}.user-cell small{font-size:12px;color:var(--text-secondary)}.course-cell{display:flex;flex-direction:column;gap:4px}.course-cell div{font-weight:500}.course-cell small{font-size:12px;color:var(--text-secondary)}.model-cell{display:flex;flex-direction:column;gap:2px}.model-cell small{font-size:11px;color:var(--text-secondary);text-transform:uppercase}.model-cell div{font-size:13px;color:var(--text-primary)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-bottom:24px}.stat-card{display:flex;align-items:center;gap:16px;padding:20px;background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;transition:transform .2s,box-shadow .2s}.stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.stat-icon{width:56px;height:56px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-icon svg{width:28px;height:28px;stroke:#fff;stroke-width:2}.stat-content{flex:1;min-width:0}.stat-label{font-size:13px;color:var(--text-secondary);margin-bottom:4px}.stat-value{font-size:28px;font-weight:700;color:var(--text-primary);line-height:1.2}.stat-sub{font-size:12px;color:var(--text-secondary);margin-top:2px}}.filter-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:16px;font-size:13px;font-weight:500;animation:fadeIn .2s ease-out}.filter-badge button{background:none;border:none;color:#fff;font-size:18px;font-weight:700;cursor:pointer;padding:0;width:16px;height:16px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s}.filter-badge button:hover{background:#fff3}@keyframes fadeIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.batch-edit-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease;padding:20px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.batch-edit-modal-content{background:var(--bg-card);border-radius:20px;width:100%;max-width:600px;max-height:90vh;box-shadow:0 20px 60px #0000004d;animation:slideUp .3s ease;display:flex;flex-direction:column;overflow:hidden}.batch-edit-modal-header{display:flex;justify-content:space-between;align-items:center;padding:28px 32px;border-bottom:1px solid var(--border-color);flex-shrink:0}.batch-edit-modal-header .header-title{display:flex;align-items:center;gap:16px}.batch-edit-modal-header .header-title .header-icon{width:40px;height:40px;padding:8px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:12px;flex-shrink:0}.batch-edit-modal-header .header-title h3{font-size:20px;font-weight:600;color:var(--text-primary);margin:0 0 4px}.batch-edit-modal-header .header-title .selected-count{font-size:13px;color:var(--text-tertiary);font-weight:400}.batch-edit-close-btn{width:32px;height:32px;border:none;background:#0000000a;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#6b7280;transition:all .2s;flex-shrink:0}.batch-edit-close-btn svg{width:18px;height:18px}.batch-edit-close-btn:hover{background:#00000014;color:#4b5563;transform:rotate(90deg)}:global(.dark) .batch-edit-close-btn{background:#ffffff0d;color:#9ca3af}:global(.dark) .batch-edit-close-btn:hover{background:#ffffff1a;color:#d1d5db}.batch-edit-modal-body{display:flex;flex-direction:column;gap:20px;padding:28px 32px;overflow-y:auto;flex:1}.batch-edit-modal-body::-webkit-scrollbar{width:6px}.batch-edit-modal-body::-webkit-scrollbar-track{background:transparent}.batch-edit-modal-body::-webkit-scrollbar-thumb{background:#0003;border-radius:3px}.batch-edit-modal-body::-webkit-scrollbar-thumb:hover{background:#0000004d}:global(.dark) .batch-edit-modal-body::-webkit-scrollbar-thumb{background:#fff3}:global(.dark) .batch-edit-modal-body::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.batch-edit-field{display:flex;flex-direction:column;gap:12px}.batch-edit-checkbox{display:flex;align-items:center;gap:12px;cursor:pointer;-webkit-user-select:none;user-select:none}.batch-edit-checkbox input[type=checkbox]{position:absolute;opacity:0;pointer-events:none}.batch-edit-checkbox input[type=checkbox]:checked+.checkbox-custom{background:linear-gradient(135deg,#667eea,#764ba2);border-color:transparent}.batch-edit-checkbox input[type=checkbox]:checked+.checkbox-custom:after{opacity:1;transform:scale(1)}.batch-edit-checkbox input[type=checkbox]:checked~.checkbox-label .field-icon{color:#667eea}.batch-edit-checkbox input[type=checkbox]:checked~.checkbox-label .field-name{color:var(--text-primary);font-weight:600}.batch-edit-checkbox .checkbox-custom{width:20px;height:20px;border:2px solid #d1d5db;border-radius:6px;background:var(--bg-primary);transition:all .3s;position:relative;flex-shrink:0}.batch-edit-checkbox .checkbox-custom:after{content:"";position:absolute;left:5px;top:2px;width:5px;height:10px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg) scale(0);opacity:0;transition:all .2s}.batch-edit-checkbox .checkbox-label{display:flex;align-items:center;gap:12px;flex:1}.batch-edit-checkbox .checkbox-label .field-icon{width:20px;height:20px;color:#9ca3af;transition:all .3s;flex-shrink:0}.batch-edit-checkbox .checkbox-label .field-name{font-size:15px;font-weight:500;color:var(--text-secondary);transition:all .3s}.batch-edit-checkbox:hover .checkbox-custom{border-color:#667eea}.batch-edit-input-wrapper{padding-left:44px;animation:slideDown .3s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.batch-edit-select,.batch-edit-input{width:100%;padding:12px 16px;font-size:15px;border:2px solid var(--border-color);border-radius:12px;background:var(--bg-primary);color:var(--text-primary);outline:none;transition:all .3s;box-sizing:border-box;font-family:inherit}.batch-edit-select:focus,.batch-edit-input:focus{border-color:#667eea;box-shadow:0 0 0 4px #667eea1a}.batch-edit-select::placeholder,.batch-edit-input::placeholder{color:#9ca3af}.batch-edit-select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b7280' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center;padding-right:40px}.input-with-unit{position:relative;display:flex;align-items:center}.input-with-unit .input-prefix{position:absolute;left:16px;font-size:15px;font-weight:600;color:var(--text-secondary);pointer-events:none}.input-with-unit .batch-edit-input.with-prefix{padding-left:36px}.input-with-unit .input-suffix{position:absolute;right:16px;font-size:14px;color:var(--text-tertiary);pointer-events:none}.batch-edit-warning{display:flex;align-items:center;gap:12px;padding:16px;background:linear-gradient(135deg,#fef3c7,#fde68a);border-radius:12px;color:#92400e;font-size:14px;animation:shake .5s ease}.batch-edit-warning svg{width:20px;height:20px;flex-shrink:0}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}:global(.dark) .batch-edit-warning{background:linear-gradient(135deg,#78350f,#92400e);color:#fef3c7}.batch-edit-modal-actions{display:flex;gap:12px;padding-top:8px}.batch-edit-cancel-btn,.batch-edit-confirm-btn{flex:1;padding:14px 24px;font-size:15px;font-weight:600;border:none;border-radius:12px;cursor:pointer;transition:all .3s;display:flex;align-items:center;justify-content:center;gap:8px}.batch-edit-cancel-btn{background:#0000000a;color:var(--text-secondary)}.batch-edit-cancel-btn:hover{background:#00000014}:global(.dark) .batch-edit-cancel-btn{background:#ffffff0d;color:#9ca3af}:global(.dark) .batch-edit-cancel-btn:hover{background:#ffffff1a}.batch-edit-confirm-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.batch-edit-confirm-btn svg{width:18px;height:18px}.batch-edit-confirm-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 12px 32px #667eea66}.batch-edit-confirm-btn:active:not(:disabled){transform:translateY(0)}.batch-edit-confirm-btn:disabled{opacity:.5;cursor:not-allowed}@media (max-width: 768px){.batch-edit-modal-content{max-width:100%;border-radius:16px}.batch-edit-modal-header,.batch-edit-modal-body{padding:20px}.batch-edit-modal-header .header-title{gap:12px}.batch-edit-modal-header .header-title .header-icon{width:36px;height:36px}.batch-edit-modal-header .header-title h3{font-size:18px}.batch-edit-input-wrapper{padding-left:0}.batch-edit-select,.batch-edit-input{font-size:16px}}.avatar-upload-area{display:flex;align-items:center;gap:16px}.avatar-preview{width:80px;height:80px;border-radius:50%;border:2px dashed #ddd;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;transition:all .2s}.avatar-preview:hover{border-color:#667eea}.avatar-preview img{width:100%;height:100%;object-fit:cover}.avatar-placeholder{display:flex;flex-direction:column;align-items:center;color:#999;font-size:12px}.avatar-placeholder svg{width:24px;height:24px;margin-bottom:4px}.cropper-container{position:relative;width:300px;height:300px;margin:0 auto 20px;overflow:hidden;background:#f5f5f5;border-radius:8px}.cropper-image{width:100%;height:100%;object-fit:contain}.crop-circle{position:absolute;border:3px solid #667eea;border-radius:50%;box-shadow:0 0 0 9999px #00000080;pointer-events:none}.crop-info{display:flex;align-items:center;justify-content:center;margin-bottom:12px}.crop-info .crop-size-display{font-size:14px;color:#667eea;font-weight:500;padding:6px 12px;background:#f0f0ff;border-radius:6px}.crop-hint{font-size:12px;color:#666;margin-top:8px;display:flex;align-items:center;justify-content:center;gap:4px}.crop-circle{cursor:move;transition:border-color .2s}.cropper-container{cursor:crosshair}.cropper-container:hover .crop-circle{border-color:#8b5cf6}html.dark .app-header .theme-toggle,html.dark .app-header .theme-toggle svg{color:#fff!important;stroke:#fff!important}html.dark .app-header .theme-toggle:hover{background:#ffffff1a!important}
