.app-toast-container[data-v-e2bc1e4e]{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:9999;display:flex;flex-direction:column;align-items:center;gap:12px;pointer-events:none;max-width:90vw}.app-toast[data-v-e2bc1e4e]{pointer-events:auto;display:flex;align-items:center;gap:8px;max-width:90vw;padding:14px 22px;border-radius:8px;background:#ff7a00;box-shadow:0 6px 24px #ff7a0059;font-size:16px;font-weight:500;line-height:1.5;color:var(--bg-card);border-left:4px solid rgba(255,255,255,.6)}.app-toast__icon[data-v-e2bc1e4e]{flex:0 0 auto;color:var(--bg-card)}.app-toast__msg[data-v-e2bc1e4e]{flex:1 1 auto;word-break:break-word;white-space:pre-wrap}.app-toast__close[data-v-e2bc1e4e]{flex:0 0 auto;margin-left:4px;font-size:18px;line-height:1;color:#fffc;cursor:pointer}.app-toast__close[data-v-e2bc1e4e]:hover,.app-toast--success .app-toast__icon[data-v-e2bc1e4e],.app-toast--error .app-toast__icon[data-v-e2bc1e4e],.app-toast--warning .app-toast__icon[data-v-e2bc1e4e],.app-toast--info .app-toast__icon[data-v-e2bc1e4e]{color:var(--bg-card)}.app-toast-enter-active[data-v-e2bc1e4e],.app-toast-leave-active[data-v-e2bc1e4e]{transition:all .25s ease}.app-toast-enter-from[data-v-e2bc1e4e],.app-toast-leave-to[data-v-e2bc1e4e]{opacity:0;transform:translateY(-8px) scale(.96)}.el-button{display:inline-flex;align-items:center;justify-content:center}.el-table,.el-table__body-wrapper{overflow:visible}.el-form-item__label{font-weight:500}.el-table__body-wrapper::-webkit-scrollbar{width:6px;height:6px}.el-table__body-wrapper::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:3px}.el-table__body-wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover)}.page-enter-active,.page-leave-active{transition:opacity .25s ease}.page-enter-from,.page-leave-to{opacity:0}.fade-enter-active,.fade-leave-active{transition:opacity .2s ease}.fade-enter-from,.fade-leave-to{opacity:0}.slide-left-enter-active,.slide-left-leave-active{transition:transform .3s ease}.slide-left-enter-from{transform:translate(-100%)}.slide-left-leave-to{transform:translate(100%)}#app{width:100%;height:100%;min-height:100vh}.sidebar[data-v-6dd01af3]{width:180px;height:100vh;background-color:var(--bg-sidebar);transition:width .3s ease;flex-shrink:0;box-shadow:var(--shadow-sidebar)}.sidebar.is-collapsed[data-v-6dd01af3]{width:64px}.sidebar.is-mobile[data-v-6dd01af3]{display:none}.sidebar.is-mobile.is-mobile-visible[data-v-6dd01af3]{display:block;position:fixed;top:0;left:0;z-index:var(--z-index-header)}.sidebar-content[data-v-6dd01af3]{display:flex;flex-direction:column;height:100%}.sidebar-logo[data-v-6dd01af3]{display:flex;align-items:center;padding:16px;height:60px;border-bottom:1px solid rgba(255,255,255,.1)}.logo-icon-large[data-v-6dd01af3]{color:var(--text-white);font-size:var(--font-size-massive);margin-right:12px}.logo-text[data-v-6dd01af3]{color:var(--text-white);font-size:var(--font-size-lg);font-weight:600;white-space:nowrap;overflow:hidden}.logo-icon[data-v-6dd01af3]{color:var(--text-white);font-size:var(--font-size-title)}.sidebar-scrollbar[data-v-6dd01af3]{flex:1;overflow-y:auto}[data-v-6dd01af3] .el-menu{border-right:none}[data-v-6dd01af3] .el-menu-item,[data-v-6dd01af3] .el-sub-menu__title{height:50px;line-height:50px}[data-v-6dd01af3] .el-menu-item:hover,[data-v-6dd01af3] .el-sub-menu__title:hover{background-color:#ffffff14}[data-v-6dd01af3] .el-menu-item.is-active{background-color:var(--primary-color)}.tabs-container[data-v-af826ce6]{flex:1;overflow:hidden}.tabs-wrapper[data-v-af826ce6]{display:flex;align-items:center;gap:4px;overflow-x:auto;padding:0 8px}.tabs-wrapper[data-v-af826ce6]::-webkit-scrollbar{height:4px}.tabs-wrapper[data-v-af826ce6]::-webkit-scrollbar-thumb{background-color:#0000001a;border-radius:2px}.tab-item[data-v-af826ce6]{display:flex;align-items:center;gap:6px;padding:6px 12px;background-color:var(--bg-hover);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;transition:all .2s;user-select:none}.tab-item[data-v-af826ce6]:hover{background-color:var(--bg-border)}.tab-item.is-active[data-v-af826ce6]{background-color:var(--primary-color);color:var(--text-white)}.tab-title[data-v-af826ce6]{font-size:var(--font-size-sm)}.tab-close[data-v-af826ce6]{display:flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;transition:background-color .2s}.tab-close[data-v-af826ce6]:hover{background-color:#0000001a}.tab-item.is-active .tab-close[data-v-af826ce6]:hover{background-color:#fff3}.user-info[data-v-8742e3b9]{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:var(--radius-sm);cursor:pointer;transition:background-color .2s}.user-info[data-v-8742e3b9]:hover{background-color:var(--bg-hover)}.user-avatar[data-v-8742e3b9]{width:32px;height:32px;border-radius:50%;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;background-color:var(--primary-color);color:var(--text-white);font-size:var(--font-size-base);flex-shrink:0}.user-name[data-v-8742e3b9]{font-size:var(--font-size-base);color:var(--text-primary)}.user-arrow[data-v-8742e3b9]{color:var(--text-secondary);font-size:var(--font-size-xs)}.role-label[data-v-8742e3b9]{color:var(--text-placeholder);font-size:var(--font-size-xs)}.main-header[data-v-05086e8b]{display:flex;justify-content:space-between;align-items:center;height:60px;padding:0 20px;background-color:var(--bg-header);box-shadow:var(--shadow-sm);z-index:var(--z-index-header)}.header-left[data-v-05086e8b]{display:flex;align-items:center;gap:16px}.collapse-btn[data-v-05086e8b]{display:flex;align-items:center;justify-content:center;width:32px;height:32px;cursor:pointer;border-radius:var(--radius-sm);transition:background-color .2s}.collapse-btn[data-v-05086e8b]:hover{background-color:var(--bg-hover)}.header-right[data-v-05086e8b]{display:flex;align-items:center;gap:12px}.tabs-action-btn[data-v-05086e8b]{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all .2s}.tabs-action-btn[data-v-05086e8b]:hover{background-color:var(--bg-hover);color:var(--text-primary)}.mobile-sub-tabs[data-v-5b12bd5e]{display:block;position:fixed;top:0;left:0;right:0;height:44px;background-color:var(--bg-card);border-bottom:1px solid var(--border-light);z-index:var(--z-index-header);box-shadow:0 1px 4px #0000000a}.mobile-sub-tabs-scroll[data-v-5b12bd5e]{display:flex;height:100%;overflow-x:auto;padding:0 4px}.mobile-sub-tab-item[data-v-5b12bd5e]{flex:0 0 auto;padding:12px 10px;position:relative;cursor:pointer;transition:var(--transition-color);text-align:center;white-space:nowrap}.mobile-sub-tab-label[data-v-5b12bd5e]{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:var(--font-weight-medium)}.mobile-sub-tab-item.is-active .mobile-sub-tab-label[data-v-5b12bd5e]{color:var(--primary-color);font-weight:var(--font-weight-semibold)}.mobile-sub-tab-item.is-active[data-v-5b12bd5e]:after{content:"";position:absolute;bottom:0;left:10px;right:10px;height:2px;background-color:var(--primary-color);border-radius:1px}.mobile-tab-bar[data-v-17b12f8a]{display:flex;position:fixed;bottom:0;left:0;right:0;height:56px;background-color:var(--bg-header);border-top:1px solid var(--border-light);box-shadow:0 -2px 12px #0000000f;z-index:var(--z-index-header);padding-bottom:env(safe-area-inset-bottom)}.mobile-tab-item[data-v-17b12f8a]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--text-placeholder);cursor:pointer;transition:var(--transition-all);padding:6px 0}.mobile-tab-item[data-v-17b12f8a]:active{transform:scale(.95)}.mobile-tab-item.is-active[data-v-17b12f8a]{color:var(--primary-color)}.mobile-tab-icon[data-v-17b12f8a]{font-size:var(--font-size-huge)}.mobile-tab-label[data-v-17b12f8a]{font-size:var(--font-size-mini);font-weight:var(--font-weight-medium);line-height:1}.main-layout[data-v-4962fe6d]{display:flex;width:100%;height:100vh;overflow:hidden}.main-container[data-v-4962fe6d]{flex:1;display:flex;flex-direction:column;overflow:hidden;transition:margin-left .3s ease}.main-layout.is-mobile .main-container[data-v-4962fe6d]{overflow-y:auto;-webkit-overflow-scrolling:touch}.main-content[data-v-4962fe6d]{flex:1;padding:20px;overflow-y:auto;background-color:var(--bg-page)}.main-layout.is-mobile .main-content[data-v-4962fe6d]{padding:4px 4px 70px}.main-layout.is-mobile .main-content.has-sub-tabs[data-v-4962fe6d]{padding-top:44px}.fade-enter-active[data-v-4962fe6d],.fade-leave-active[data-v-4962fe6d]{transition:opacity .2s ease}.fade-enter-from[data-v-4962fe6d],.fade-leave-to[data-v-4962fe6d]{opacity:0}:root{--primary-color: #3B82F6;--primary-light: #60A5FA;--primary-dark: #2563EB;--primary-alpha-5: rgba(59, 130, 246, .05);--primary-alpha-10: rgba(59, 130, 246, .1);--primary-alpha-20: rgba(59, 130, 246, .2);--success-color: #10B981;--success-light: #34D399;--success-dark: #059669;--success-alpha-5: rgba(16, 185, 129, .05);--success-alpha-10: rgba(16, 185, 129, .1);--success-alpha-20: rgba(16, 185, 129, .2);--warning-color: #F59E0B;--warning-light: #FBBF24;--warning-dark: #D97706;--warning-alpha-5: rgba(245, 158, 11, .05);--warning-alpha-10: rgba(245, 158, 11, .1);--warning-alpha-20: rgba(245, 158, 11, .2);--danger-color: #EF4444;--danger-light: #F87171;--danger-dark: #DC2626;--danger-alpha-5: rgba(239, 68, 68, .05);--danger-alpha-10: rgba(239, 68, 68, .1);--danger-alpha-20: rgba(239, 68, 68, .2);--info-color: #64748B;--info-light: #94A3B8;--info-dark: #475569;--info-alpha-5: rgba(100, 116, 139, .05);--info-alpha-10: rgba(100, 116, 139, .1);--info-alpha-20: rgba(100, 116, 139, .2);--danger-color-light: #fef0f0;--success-color-light: #f0f9eb;--warning-color-light: #fdf6ec;--bg-info: #f0f9ff;--color-success: #16a34a;--attendance-overtime-color: #fb8c00;--attendance-duty-color: #2f7fe0;--attendance-link-color: #185fa5;--bg-page: #F8FAFC;--bg-card: #FFFFFF;--bg-sidebar: #0F172A;--bg-header: #FFFFFF;--bg-hover: #F1F5F9;--bg-active: #EFF6FF;--bg-border: #E2E8F0;--bg-tag: #F8FAFC;--bg-input: #FFFFFF;--bg-disabled: #F1F5F9;--text-primary: #1E293B;--text-secondary: #475569;--text-placeholder: #94A3B8;--text-disabled: #CBD5E1;--text-link: #3B82F6;--text-white: #FFFFFF;--border-color: #E2E8F0;--border-light: #F1F5F9;--border-hover: #CBD5E1;--border-active: #3B82F6;--font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-family-mono: "SF Mono", Monaco, "Courier New", monospace;--font-size-tiny: 10px;--font-size-mini: 11px;--font-size-xs: 12px;--font-size-sm: 13px;--font-size-base: 14px;--font-size-md: 15px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-xxl: 20px;--font-size-title: 24px;--font-size-huge: 22px;--font-size-massive: 28px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-base: 1.6;--line-height-tight: 1.4;--line-height-loose: 1.8;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--spacing-xxl: 24px;--spacing-xxxl: 32px;--margin-xs: 4px;--margin-sm: 8px;--margin-md: 12px;--margin-lg: 16px;--margin-xl: 20px;--margin-xxl: 24px;--margin-xxxl: 32px;--radius-xs: 2px;--radius-sm: 4px;--radius-md: 6px;--radius-base: 8px;--radius-lg: 8px;--radius-xl: 12px;--radius-xxl: 16px;--radius-circle: 50%;--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .08), 0 1px 2px -1px rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .08), 0 2px 4px -2px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .08), 0 4px 6px -4px rgba(0, 0, 0, .06);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .06);--shadow-sidebar: 1px 0 3px rgba(0, 0, 0, .08);--shadow-popup: 0 6px 16px rgba(0, 0, 0, .1);--sidebar-width: 200px;--sidebar-collapsed-width: 64px;--header-height: 60px;--content-padding: 20px;--tags-height: 40px;--breadcrumb-height: 40px;--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .3s ease;--transition-all: all var(--transition-normal);--transition-color: color var(--transition-fast);--transition-bg: background-color var(--transition-fast);--transition-border: border-color var(--transition-fast);--transition-transform: transform var(--transition-fast);--z-index-base: 1;--z-index-dropdown: 100;--z-index-mask: 1000;--z-index-popup: 2000;--z-index-message: 3000;--z-index-dialog: 4000;--z-index-sidebar: 100;--z-index-header: 100;--animation-duration-fast: .15s;--animation-duration-normal: .25s;--animation-duration-slow: .35s;--pagination-height: 32px;--table-row-height: 48px;--input-height: 32px;--input-height-lg: 40px;--control-height-mobile: 32px;--button-height-sm: 28px;--button-height-base: 32px;--button-height-lg: 40px;--scrollbar-thumb: #E2E8F0;--scrollbar-thumb-hover: #CBD5E1;--scrollbar-track: #F8FAFC;--student-primary: #10B981;--student-primary-light: #34D399;--student-alpha-10: rgba(16, 185, 129, .1);--teacher-primary: #6366F1;--teacher-primary-light: #818CF8;--teacher-alpha-10: rgba(99, 102, 241, .1);--admin-primary: #F59E0B;--admin-primary-light: #FBBF24;--admin-alpha-10: rgba(245, 158, 11, .1)}*{margin:0;padding:0;box-sizing:border-box}html,body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:var(--font-size-base);line-height:var(--line-height-base);color:var(--text-primary);background-color:var(--bg-page);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}a{color:var(--text-link);text-decoration:none;transition:var(--transition-color)}a:hover{color:var(--primary-light)}a:active{color:var(--primary-dark)}a:focus{outline:none}ul,ol{list-style:none}table{border-collapse:collapse;border-spacing:0}input,textarea,select,button{font-family:inherit;font-size:inherit;line-height:inherit;color:inherit}input:focus,textarea:focus,select:focus{outline:none}button{cursor:pointer;border:none;background:none}button:disabled{cursor:not-allowed}textarea{resize:none}img{max-width:100%;height:auto;display:block}svg{display:inline-block}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:var(--border-color);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background-color:var(--info-color)}*{scrollbar-width:thin;scrollbar-color:var(--border-color) transparent}::selection{background-color:var(--primary-color);color:var(--text-white)}.clearfix:after{content:"";display:table;clear:both}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis-2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis}.text-ellipsis-3{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;text-overflow:ellipsis}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.w-full{width:100%}.h-full{height:100%}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.detail-page{display:flex;flex-direction:column;gap:var(--spacing-xl);padding:var(--spacing-xl);width:100%;height:100%;overflow:auto;background-color:var(--bg-page)}.detail-header{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-lg);flex-wrap:wrap}.detail-header-left{display:flex;align-items:center;gap:var(--spacing-md);flex:1;min-width:0}.detail-back-btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:0 12px;height:36px;border-radius:var(--radius-md);background-color:var(--bg-card);border:1px solid var(--border-light);cursor:pointer;transition:var(--transition-all);flex-shrink:0;color:var(--text-secondary);font-size:var(--font-size-lg)}.detail-back-btn .detail-back-text{font-size:var(--font-size-md);font-weight:var(--font-weight-medium)}.detail-back-btn:hover{background-color:var(--primary-alpha-5);border-color:var(--primary-alpha-20);color:var(--primary-color)}.detail-title{font-size:var(--font-size-xxl);font-weight:var(--font-weight-bold);color:var(--text-primary);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-header-actions{display:flex;align-items:center;gap:var(--spacing-sm);flex-shrink:0;flex-wrap:wrap}.profile-card{background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-light) 100%);border-radius:var(--radius-base);padding:var(--spacing-xxl);color:var(--text-white);position:relative;overflow:hidden;box-shadow:var(--shadow-md)}.profile-card:before,.profile-card:after{content:"";position:absolute;border-radius:var(--radius-circle);background:#ffffff1a}.profile-card:before{width:200px;height:200px;top:-100px;right:-50px}.profile-card:after{width:120px;height:120px;bottom:-60px;left:30%}.profile-card-content{position:relative;z-index:1;display:flex;align-items:center;gap:var(--spacing-xl);flex-wrap:wrap}.profile-avatar{width:56px;height:56px;border-radius:var(--radius-circle);background-color:#fff3;border:2px solid rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xxl);font-weight:var(--font-weight-bold);color:var(--text-white);flex-shrink:0;backdrop-filter:blur(10px);overflow:hidden}.profile-avatar .avatar-image,.profile-avatar .avatar-image .el-image__inner,.profile-avatar .avatar-image img{width:100%!important;height:100%!important;border-radius:var(--radius-circle);object-fit:cover}.profile-info{flex:1;min-width:200px;display:flex;flex-direction:column;gap:var(--spacing-xs)}.profile-name{font-size:var(--font-size-xxl);font-weight:var(--font-weight-bold);margin:0;display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap}.profile-badges{display:flex;gap:var(--spacing-xs);flex-wrap:wrap}.profile-badge{padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);background-color:#fff3;font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);backdrop-filter:blur(10px)}.profile-desc{font-size:var(--font-size-sm);opacity:.9;line-height:var(--line-height-base)}.profile-card.student{background:linear-gradient(135deg,var(--student-primary) 0%,var(--student-primary-light) 100%)}.profile-card.teacher{background:linear-gradient(135deg,var(--teacher-primary) 0%,var(--teacher-primary-light) 100%)}.profile-card.admin{background:linear-gradient(135deg,var(--admin-primary) 0%,var(--admin-primary-light) 100%)}.profile-card.graduation{background:linear-gradient(135deg,var(--success-color) 0%,var(--success-light) 100%)}.detail-tabs{background-color:var(--bg-card);border-radius:var(--radius-base);padding:0 var(--spacing-lg);box-shadow:var(--shadow-xs);border:1px solid var(--border-light)}.detail-tabs :deep(.el-tabs__header){margin-bottom:0}.detail-content,.info-cards{display:flex;flex-direction:column;gap:var(--spacing-xl)}.info-card{background-color:var(--bg-card);border-radius:var(--radius-base);box-shadow:var(--shadow-xs);border:1px solid var(--border-light);overflow:hidden}.info-card-header,.card-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-lg) var(--spacing-xl);border-bottom:1px solid var(--border-light);font-weight:var(--font-weight-semibold);font-size:var(--font-size-lg);color:var(--text-primary)}.info-card-title{display:flex;align-items:center;gap:var(--spacing-sm)}.info-card-title-icon{width:20px;height:20px;color:var(--primary-color)}.info-card-actions,.card-actions{margin-left:auto;display:flex;align-items:center;gap:var(--spacing-sm)}.info-card-body,.card-body{padding:var(--spacing-xl)}.info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-lg) var(--spacing-xxl)}.info-item{display:grid;grid-template-columns:1fr 4fr;gap:var(--spacing-lg);align-items:center}.info-item label,.info-item-label{font-size:var(--font-size-md);color:var(--text-placeholder);font-weight:var(--font-weight-medium);text-align:right}.info-item span,.info-item-value{font-size:var(--font-size-md);color:var(--text-primary);line-height:var(--line-height-base);word-break:break-all}.info-item-value.empty{color:var(--text-placeholder)}.card-subsection{margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px dashed var(--border-color)}.subsection-title{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin-bottom:var(--spacing-sm)}.change-list{width:100%}.change-row{display:grid;grid-template-columns:1fr 1fr 1fr 1fr 1fr;gap:var(--spacing-sm);padding:var(--spacing-sm);border-bottom:1px solid var(--border-color);font-size:var(--font-size-sm)}.change-row.header-row{font-weight:var(--font-weight-semibold);background-color:var(--bg-hover);border-bottom-width:2px}.change-row:not(.header-row):last-child{border-bottom:none}.change-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.change-list.small .change-row{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;padding:var(--spacing-xs) var(--spacing-xs);font-size:var(--font-size-sm)}.change-list.small .change-time{color:var(--text-secondary);flex:0 0 140px}.change-list.small .change-field{flex:0 0 90px;color:var(--text-primary);font-weight:var(--font-weight-medium)}.change-list.small .change-content{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.change-list.small .change-reason{flex:0 0 auto;max-width:200px;color:var(--text-secondary);font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-state{padding:var(--spacing-xl);text-align:center;color:var(--text-placeholder);font-size:var(--font-size-base)}.empty-state.small{padding:var(--spacing-sm);font-size:var(--font-size-sm)}.loading-container{padding:var(--spacing-xl)}.info-grid.col-1{grid-template-columns:1fr}.info-grid.col-3{grid-template-columns:repeat(3,1fr)}.info-grid.col-4{grid-template-columns:repeat(4,1fr)}.timeline{padding-left:var(--spacing-lg)}.timeline-item{position:relative;padding-left:var(--spacing-xl);padding-bottom:var(--spacing-xl);border-left:2px solid var(--border-light)}.timeline-item:last-child{border-left-color:transparent;padding-bottom:0}.timeline-item:before{content:"";position:absolute;left:-7px;top:0;width:12px;height:12px;border-radius:var(--radius-circle);background-color:var(--primary-color);border:2px solid var(--bg-card);box-shadow:0 0 0 2px var(--primary-color)}.timeline-item.success:before{background-color:var(--success-color);box-shadow:0 0 0 2px var(--success-color)}.timeline-item.warning:before{background-color:var(--warning-color);box-shadow:0 0 0 2px var(--warning-color)}.timeline-item.danger:before{background-color:var(--danger-color);box-shadow:0 0 0 2px var(--danger-color)}.timeline-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-sm);flex-wrap:wrap;gap:var(--spacing-sm)}.timeline-title{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--text-primary)}.timeline-time{font-size:var(--font-size-sm);color:var(--text-placeholder)}.timeline-content{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:var(--line-height-base)}.detail-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--spacing-lg)}.detail-stat-card{background-color:var(--bg-card);border-radius:var(--radius-base);padding:var(--spacing-xl);box-shadow:var(--shadow-xs);border:1px solid var(--border-light);text-align:center;transition:var(--transition-all)}.detail-stat-card:hover{box-shadow:var(--shadow-sm);transform:translateY(-2px)}.detail-stat-value{font-size:var(--font-size-massive);font-weight:var(--font-weight-bold);color:var(--text-primary);line-height:1.2;margin-bottom:var(--spacing-xs)}.detail-stat-label{font-size:var(--font-size-sm);color:var(--text-secondary)}.detail-stat-card.primary .detail-stat-value{color:var(--primary-color)}.detail-stat-card.success .detail-stat-value{color:var(--success-color)}.detail-stat-card.warning .detail-stat-value{color:var(--warning-color)}.detail-stat-card.danger .detail-stat-value{color:var(--danger-color)}.is-mobile .detail-page,.is-tablet .detail-page{padding:var(--spacing-lg);gap:var(--spacing-lg)}.is-mobile .info-grid,.is-tablet .info-grid{grid-template-columns:1fr}.is-mobile .info-grid.col-3,.is-tablet .info-grid.col-3,.is-mobile .info-grid.col-4,.is-tablet .info-grid.col-4{grid-template-columns:repeat(2,1fr)}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;padding:0;font-family:var(--font-family-base);font-size:var(--font-size-base);line-height:var(--line-height-base);color:var(--text-primary);background-color:var(--bg-page);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:normal;font-variant:normal;text-rendering:optimizeLegibility}#app{width:100%;height:100%}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--scrollbar-track);border-radius:var(--radius-circle)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:var(--radius-circle);transition:var(--transition-bg)}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-2-line{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.m-0{margin:0}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}.ml-8{margin-left:8px}.mr-8{margin-right:8px}.text-primary-color{color:var(--primary-color)}.text-success-color{color:var(--success-color)}.text-warning-color{color:var(--warning-color)}.text-danger-color{color:var(--danger-color)}.text-info-color{color:var(--info-color)}.text-secondary-color{color:var(--text-secondary)}.text-placeholder-color{color:var(--text-placeholder)}:root{--el-color-primary: var(--primary-color);--el-color-primary-light-3: #76A8F9;--el-color-primary-light-5: #9DC0FA;--el-color-primary-light-7: #C4DAFC;--el-color-primary-light-8: #D8E6FD;--el-color-primary-light-9: #EBF2FE;--el-color-primary-dark-2: #2F68C5;--el-color-success: var(--success-color);--el-color-success-light-3: #58CEA7;--el-color-success-light-5: #88DCC0;--el-color-success-light-7: #B7EAD9;--el-color-success-light-8: #CFF1E6;--el-color-success-light-9: #E7F8F2;--el-color-success-dark-2: #0D9467;--el-color-warning: var(--warning-color);--el-color-warning-light-3: #F8BB54;--el-color-warning-light-5: #FACE85;--el-color-warning-light-7: #FCE2B6;--el-color-warning-light-8: #FDECCE;--el-color-warning-light-9: #FEF5E7;--el-color-warning-dark-2: #C47E09;--el-color-danger: var(--danger-color);--el-color-danger-light-3: #F47C7C;--el-color-danger-light-5: #F7A2A2;--el-color-danger-light-7: #FAC7C7;--el-color-danger-light-8: #FCDADA;--el-color-danger-light-9: #FDECEC;--el-color-danger-dark-2: #BF3636;--el-color-error: var(--danger-color);--el-color-error-light-3: #F47C7C;--el-color-error-light-5: #F7A2A2;--el-color-error-light-7: #FAC7C7;--el-color-error-light-8: #FCDADA;--el-color-error-light-9: #FDECEC;--el-color-error-dark-2: #BF3636;--el-color-info: var(--info-color);--el-color-info-light-3: #929EAE;--el-color-info-light-5: #B2BAC5;--el-color-info-light-7: #D0D5DC;--el-color-info-light-8: #E0E3E8;--el-color-info-light-9: #F0F1F3;--el-color-info-dark-2: #505D6F;--el-text-color-primary: var(--text-primary);--el-text-color-regular: var(--text-secondary);--el-text-color-secondary: var(--text-placeholder);--el-text-color-placeholder: var(--text-placeholder);--el-text-color-disabled: var(--text-disabled);--el-border-color: var(--border-color);--el-border-color-light: var(--border-light);--el-border-color-lighter: var(--border-light);--el-border-color-extra-light: var(--border-light);--el-border-color-dark: var(--border-hover);--el-border-color-darker: var(--border-hover);--el-fill-color: var(--bg-hover);--el-fill-color-light: var(--bg-tag);--el-fill-color-lighter: var(--bg-tag);--el-fill-color-blank: var(--bg-card);--el-bg-color: var(--bg-card);--el-bg-color-page: var(--bg-page);--el-bg-color-overlay: var(--bg-card)}.el-card{border-radius:var(--radius-base);border:1px solid var(--border-light);box-shadow:var(--shadow-xs);transition:var(--transition-all)}.el-card:hover{box-shadow:var(--shadow-sm)}.el-card :deep(.el-card__header){padding:var(--spacing-lg) var(--spacing-xl);border-bottom:1px solid var(--border-light);font-weight:var(--font-weight-semibold);font-size:var(--font-size-lg);color:var(--text-primary)}.el-card :deep(.el-card__body){padding:var(--spacing-xl)}.el-button{border-radius:var(--radius-md);font-weight:var(--font-weight-medium);transition:var(--transition-all)}.el-button:active{transform:scale(.98)}.el-input :deep(.el-input__wrapper),.el-input-number :deep(.el-input__wrapper){border-radius:var(--radius-md);box-shadow:0 0 0 1px var(--border-color) inset;transition:var(--transition-all)}.el-input :deep(.el-input__wrapper:hover){box-shadow:0 0 0 1px var(--border-hover) inset}.el-input :deep(.is-focus .el-input__wrapper){box-shadow:0 0 0 1px var(--primary-color) inset}.el-select :deep(.el-select__wrapper){border-radius:var(--radius-md);box-shadow:0 0 0 1px var(--border-color) inset;transition:var(--transition-all)}.el-select :deep(.el-select__wrapper:hover){box-shadow:0 0 0 1px var(--border-hover) inset}.el-select :deep(.is-focus .el-select__wrapper){box-shadow:0 0 0 1px var(--primary-color) inset}.el-date-editor :deep(.el-input__wrapper){border-radius:var(--radius-md)}.el-tag{border-radius:var(--radius-sm);padding:0 var(--spacing-sm);height:22px;line-height:20px;font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);border:none}.el-table{--el-table-border-radius: var(--radius-base);border-radius:var(--radius-base)}.el-table :deep(.el-table__header th){background-color:var(--bg-tag);color:var(--text-secondary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm)}.el-table :deep(.el-table__row:hover > td){background-color:var(--primary-alpha-5)}.el-table :deep(.el-table__body tr.current-row > td){background-color:var(--primary-alpha-5)}.el-pagination{font-weight:var(--font-weight-medium)}.el-pagination :deep(.btn-prev),.el-pagination :deep(.btn-next),.el-pagination :deep(.el-pager li){border-radius:var(--radius-md);min-width:32px;height:32px;line-height:30px;transition:var(--transition-all)}.el-pagination :deep(.el-pager li:hover){color:var(--primary-color);background-color:var(--primary-alpha-5)}.el-pagination :deep(.el-pager li.is-active){background-color:var(--primary-color);color:var(--text-white)}.el-dialog{border-radius:var(--radius-xl);overflow:hidden}.el-dialog :deep(.el-dialog__header){padding:var(--spacing-xl) var(--spacing-xxl) var(--spacing-lg);margin:0;border-bottom:1px solid var(--border-light);font-weight:var(--font-weight-semibold);font-size:var(--font-size-xl)}.el-dialog :deep(.el-dialog__body){padding:var(--spacing-xl) var(--spacing-xxl);color:var(--text-primary)}.el-dialog :deep(.el-dialog__footer){padding:var(--spacing-lg) var(--spacing-xxl) var(--spacing-xl);border-top:1px solid var(--border-light)}.el-drawer{border-radius:var(--radius-xl) 0 0 var(--radius-xl)}.el-message{border-radius:var(--radius-md)}.el-tooltip__popper{border-radius:var(--radius-sm)}.el-dropdown-menu{border-radius:var(--radius-md);padding:var(--spacing-xs) 0;box-shadow:var(--shadow-popup)}.el-dropdown-menu__item{padding:var(--spacing-sm) var(--spacing-lg);font-size:var(--font-size-base);line-height:1.5;transition:var(--transition-bg)}.el-dropdown-menu__item:hover{background-color:var(--primary-alpha-5);color:var(--primary-color)}.el-tabs :deep(.el-tabs__header){margin-bottom:var(--spacing-lg)}.el-tabs :deep(.el-tabs__item){font-weight:var(--font-weight-medium);font-size:var(--font-size-base);height:40px;line-height:40px;transition:var(--transition-all)}.el-tabs :deep(.el-tabs__item:hover){color:var(--primary-color)}.el-tabs :deep(.el-tabs__item.is-active){color:var(--primary-color);font-weight:var(--font-weight-semibold)}.el-tabs :deep(.el-tabs__active-bar){height:2px;background-color:var(--primary-color);border-radius:2px}.el-form-item :deep(.el-form-item__label){font-weight:var(--font-weight-medium);color:var(--text-secondary)}.el-switch{--el-switch-on-color: var(--success-color)}.el-radio__label,.el-checkbox__label{font-size:var(--font-size-base);color:var(--text-primary)}.page-container{padding:var(--content-padding);width:100%;height:100%;overflow:auto;background-color:var(--bg-page)}.page-title{font-size:var(--font-size-xxl);font-weight:var(--font-weight-bold);color:var(--text-primary);margin-bottom:var(--margin-xl)}.page-subtitle{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin-bottom:var(--margin-lg)}.card-gap{display:flex;flex-direction:column;gap:var(--spacing-xl)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUpFade{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.animate-fade-in{animation:fadeIn var(--animation-duration-normal) ease}.animate-slide-up{animation:slideUpFade var(--animation-duration-normal) ease}.animate-scale-in{animation:scaleIn var(--animation-duration-normal) ease}.animate-pulse{animation:pulse 2s ease-in-out infinite}.stagger-list>*{opacity:0;animation:slideUpFade var(--animation-duration-normal) ease forwards}.stagger-list>*:nth-child(1){animation-delay:.05s}.stagger-list>*:nth-child(2){animation-delay:.1s}.stagger-list>*:nth-child(3){animation-delay:.15s}.stagger-list>*:nth-child(4){animation-delay:.2s}.stagger-list>*:nth-child(5){animation-delay:.25s}.stagger-list>*:nth-child(6){animation-delay:.3s}.stagger-list>*:nth-child(7){animation-delay:.35s}.stagger-list>*:nth-child(8){animation-delay:.4s}.gradient-primary{background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-light) 100%)}.gradient-success{background:linear-gradient(135deg,var(--success-color) 0%,var(--success-light) 100%)}.gradient-warning{background:linear-gradient(135deg,var(--warning-color) 0%,var(--warning-light) 100%)}.gradient-danger{background:linear-gradient(135deg,var(--danger-color) 0%,var(--danger-light) 100%)}.gradient-student{background:linear-gradient(135deg,var(--student-primary) 0%,var(--student-primary-light) 100%)}.gradient-teacher{background:linear-gradient(135deg,var(--teacher-primary) 0%,var(--teacher-primary-light) 100%)}.gradient-admin{background:linear-gradient(135deg,var(--admin-primary) 0%,var(--admin-primary-light) 100%)}.is-mobile{html,body,*{font-family:var(--font-family-base)!important;font-style:normal!important;font-variant:normal!important;font-feature-settings:normal!important;text-rendering:optimizeLegibility!important;letter-spacing:normal!important;word-spacing:normal!important;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important}.page-container{padding:var(--spacing-lg)}.page-title{font-size:var(--font-size-xl);margin-bottom:var(--margin-lg)}.el-table :deep(.el-table__cell){padding:0 var(--spacing-sm)}.list-page{padding:var(--spacing-md);gap:var(--spacing-md)}.list-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-md)}.list-header-title{font-size:var(--font-size-xl)}.list-header-actions{width:100%}.list-header-actions .el-button{flex:1}.list-filter{padding:var(--spacing-md)}.list-filter-form{gap:var(--spacing-md)}.list-filter-form .el-form-item{margin-bottom:0;flex:1 1 100%}.list-filter-actions{width:100%;margin-left:0;justify-content:flex-end}.list-toolbar{padding:var(--spacing-sm) var(--spacing-md)}.list-page:has(.list-card-list) .list-table{display:none}.list-card-list{display:flex}.list-card-list.student-card-grid{display:grid!important;grid-template-columns:repeat(2,1fr);gap:var(--spacing-sm);align-content:start}.list-pagination{justify-content:center;padding-top:var(--spacing-sm)}.list-stats{grid-template-columns:repeat(2,1fr);gap:var(--spacing-md)}.stat-card{padding:var(--spacing-lg)}.stat-card-value{font-size:var(--font-size-xxl)}.search-form{flex-direction:column;gap:var(--spacing-xs);margin-bottom:var(--spacing-sm)}.search-form .el-form-item{margin-bottom:var(--spacing-sm);margin-left:0}.search-form .class-filter-selector{display:inline-flex;align-items:center;gap:var(--spacing-sm);flex-wrap:nowrap}.search-form .class-filter-selector .el-button{margin-left:0}.search-form .el-button{padding:0}.action-bar{flex-direction:column;align-items:flex-start;gap:var(--spacing-md)}.page-actions{width:100%;flex-wrap:nowrap;gap:var(--spacing-xs)}.page-actions .el-button{flex:1 1 0;min-width:0;padding:0 8px}.pagination{width:100%;justify-content:center}.detail-page{padding:var(--spacing-md);gap:var(--spacing-md)}.detail-header{flex-direction:column;align-items:flex-start}.detail-header-left{width:100%}.detail-title{font-size:var(--font-size-xl)}.detail-header-actions{width:100%}.detail-header-actions .el-button{flex:1}.profile-card{padding:var(--spacing-lg)}.profile-card-content{flex-direction:row;align-items:center;gap:var(--spacing-md)}.profile-avatar{width:48px;height:48px;font-size:var(--font-size-xl)}.profile-info{gap:var(--spacing-xs)}.profile-name{font-size:var(--font-size-xl)}.profile-badges{justify-content:flex-start}.detail-tabs{flex-direction:column}.detail-tabs .el-tabs__header{margin-right:0;margin-bottom:var(--spacing-md)}.detail-tabs .el-tabs__nav-wrap:after{display:none}.detail-section{padding:var(--spacing-lg)}.detail-section-header{padding:var(--spacing-md) var(--spacing-lg)}.detail-grid{grid-template-columns:1fr;gap:var(--spacing-md)}.detail-item{flex-direction:column;align-items:flex-start;gap:var(--spacing-xs)}.detail-item-label{font-size:var(--font-size-sm)}.detail-item-value{font-size:var(--font-size-base)}.form-page .form-container{padding:var(--spacing-md);border-radius:var(--radius-md)}.form-page .page-title{font-size:var(--font-size-lg)}.form-page .form-row{flex-direction:column;gap:var(--spacing-md)}.form-page .form-col,.form-page .form-col-2,.form-page .form-col-3{flex:none;width:100%}.form-page .simple-form{--label-width: 80px}.form-page .simple-form .el-form-item__label{width:var(--label-width);font-size:var(--font-size-sm);padding-right:var(--spacing-sm)}.form-page .simple-form .el-form-item__content{margin-left:calc(var(--label-width) + var(--spacing-sm))}.el-dialog__wrapper{display:flex!important;align-items:center!important;justify-content:center!important;min-height:100vh!important;position:fixed!important;inset:0!important;z-index:9999!important}.el-dialog{width:90%!important;max-width:480px;margin:0!important}.el-message-box__wrapper{display:flex!important;align-items:center!important;justify-content:center!important;min-height:100vh!important;position:fixed!important;inset:0!important;z-index:9999!important}.el-message-box{width:85%!important;max-width:360px}.data-table{overflow-x:auto}}.is-mobile.is-small-screen{.page-container{padding:var(--spacing-md)}}.is-mobile .el-dialog{width:100%!important;max-width:none!important;height:100vh;height:100dvh;margin:0!important;border-radius:0;display:flex;flex-direction:column}.is-mobile .el-dialog .el-dialog__header{padding-top:calc(var(--spacing-md) + env(safe-area-inset-top));padding-bottom:var(--spacing-sm);margin-right:0;flex:0 0 auto}.is-mobile .el-dialog .el-dialog__body{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:calc(var(--spacing-lg) + env(safe-area-inset-bottom))}.is-mobile .el-dialog .el-dialog__footer{flex:0 0 auto;padding-bottom:calc(var(--spacing-md) + env(safe-area-inset-bottom))}.is-mobile .el-button,.is-mobile .el-input__wrapper,.is-mobile .el-select__wrapper,.is-mobile .el-select,.is-mobile .el-date-editor,.is-mobile .class-filter-selector__input-wrapper,.is-mobile .mobile-tab-item{min-height:var(--control-height-mobile)}.is-mobile .el-button{min-width:44px}.is-mobile .el-picker-panel{min-width:0;width:auto;max-width:calc(100vw - 24px);max-height:calc(100vh - 32px);overflow:auto}.is-mobile .el-picker-panel .el-picker-panel__body{min-width:0}.is-mobile .el-picker-panel .el-date-table th,.is-mobile .el-picker-panel .el-date-table td{padding:2px 0;font-size:12px}.is-mobile .el-picker-panel .el-date-table td div{height:30px;line-height:30px}.is-mobile .el-picker-panel .el-month-table td,.is-mobile .el-picker-panel .el-year-table td{padding:4px 0}.is-mobile .el-picker-panel .el-month-table .cell,.is-mobile .el-picker-panel .el-year-table .cell{height:40px;line-height:40px}.is-mobile .el-picker-panel .el-date-picker__header-label{font-size:13px}.is-mobile .data-table{overflow-x:auto;-webkit-overflow-scrolling:touch}.is-mobile .infinite-scroll-footer{text-align:center;padding:12px 0 calc(12px + env(safe-area-inset-bottom));color:var(--info-color);font-size:13px}.is-mobile .infinite-loading,.is-mobile .infinite-hint,.is-mobile .infinite-end{display:flex;align-items:center;justify-content:center;gap:6px}.is-mobile .infinite-sentinel{height:1px}.is-mobile .attendance-statistics-page{padding:var(--spacing-sm)!important;gap:var(--spacing-sm)!important}.is-mobile .attendance-statistics-page .page-header h2{display:none}.is-mobile .attendance-statistics-page .page-header{margin-bottom:12px}.is-mobile .attendance-statistics-page .header-actions{flex-direction:row;flex-wrap:wrap;width:100%;gap:6px 2px;align-items:center}.is-mobile .attendance-statistics-page .header-actions .el-button+.el-button{margin-left:0}.is-mobile .attendance-statistics-page .date-range-wrapper{flex:0 1 auto;min-width:0;justify-content:flex-start;gap:2px}.is-mobile .attendance-statistics-page .date-range-wrapper .el-date-editor{flex:0 0 105px;width:105px!important;min-width:0}.is-mobile .attendance-statistics-page .date-range-wrapper .el-date-editor .el-input__inner{font-size:13px;padding:0 4px}.is-mobile .attendance-statistics-page .date-range-wrapper .el-date-editor .el-input__wrapper{padding:0 4px}.is-mobile .attendance-statistics-page .date-range-wrapper .el-date-editor .el-input__prefix{display:none}.is-mobile .attendance-statistics-page .date-range-wrapper .el-date-editor .el-input__inner{padding-left:6px}.is-mobile .attendance-statistics-page .date-separator{font-size:13px;flex:0 0 auto}.is-mobile .attendance-statistics-page .export-actions{display:none}.is-mobile .attendance-statistics-page .header-actions .el-button{padding:6px 12px;flex:0 0 auto}.is-mobile .attendance-statistics-date-picker.el-picker-panel{width:280px;min-width:280px}.is-mobile .attendance-statistics-date-picker .el-picker-panel__body{min-width:280px}.is-mobile .attendance-statistics-date-picker .el-date-table th,.is-mobile .attendance-statistics-date-picker .el-date-table td{padding:4px 0;font-size:12px}.is-mobile .project-tag{padding:2px;margin-right:2px;margin-bottom:0}.is-mobile .attendance-statistics-date-picker .el-date-picker__header-label{font-size:13px}.is-mobile .attendance-statistics-page .statistics-container{max-height:calc(100vh - 180px);overflow:auto}.is-mobile .attendance-statistics-page .statistics-table th,.is-mobile .attendance-statistics-page .statistics-table td{padding:2px;font-size:13px;line-height:1.6}.is-mobile .attendance-statistics-page .statistics-table th:nth-child(1),.is-mobile .attendance-statistics-page .statistics-table td:nth-child(1){width:70px;min-width:70px;max-width:70px;left:0}.is-mobile .attendance-statistics-page .statistics-table th:nth-child(2),.is-mobile .attendance-statistics-page .statistics-table td:nth-child(2){width:70px;min-width:70px;max-width:70px;left:70px}.is-mobile .attendance-statistics-page .statistics-table .text-gray{display:inline-block;font-size:11px}.is-mobile .attendance-statistics-page .statistics-pagination{justify-content:center;margin-top:8px}.is-mobile .record-detail-dialog.el-dialog{width:100%!important;max-width:100%!important;margin:0!important;border-radius:0}.search-form{background-color:var(--bg-card);border-radius:var(--radius-base);padding:var(--spacing-lg);box-shadow:var(--shadow-xs);border:1px solid var(--border-light)}.search-form :deep(.el-form-item){margin-bottom:0}.page-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--spacing-md);margin-bottom:var(--spacing-xl)}.action-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--spacing-md)}.page-actions{display:flex;gap:4px;flex-wrap:wrap}.page-actions .el-button+.el-button{margin-left:0}.pagination{flex-shrink:0}.data-table{background-color:var(--bg-card);border-radius:var(--radius-base);box-shadow:var(--shadow-xs);border:1px solid var(--border-light);overflow:hidden}.data-table .el-table{border-radius:0;border:none}.page-title{font-size:var(--font-size-xxl);font-weight:var(--font-weight-bold);color:var(--text-primary);margin:0}.list-page{display:flex;flex-direction:column;gap:var(--spacing-xl);padding:var(--spacing-xl);width:100%;height:100%;overflow:auto;background-color:var(--bg-page)}.list-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--spacing-lg)}.list-header-title{font-size:var(--font-size-xxl);font-weight:var(--font-weight-bold);color:var(--text-primary);margin:0}.list-header-actions{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap}.list-filter{background-color:var(--bg-card);border-radius:var(--radius-base);padding:var(--spacing-xl);box-shadow:var(--shadow-xs);border:1px solid var(--border-light)}.list-filter-form{display:flex;flex-wrap:wrap;gap:var(--spacing-lg);align-items:flex-end}.list-filter-actions{display:flex;gap:var(--spacing-sm);margin-left:auto}.list-filter-toggle{margin-top:var(--spacing-lg);text-align:center}.list-filter-toggle-btn{color:var(--primary-color);cursor:pointer;font-size:var(--font-size-sm);user-select:none;transition:var(--transition-color)}.list-filter-toggle-btn:hover{color:var(--primary-dark)}.list-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);background-color:var(--bg-card);border-radius:var(--radius-base);box-shadow:var(--shadow-xs);border:1px solid var(--border-light)}.list-toolbar-left,.list-toolbar-right{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap}.list-table{background-color:var(--bg-card);border-radius:var(--radius-base);box-shadow:var(--shadow-xs);border:1px solid var(--border-light);overflow:hidden}.list-table .el-table{border-radius:0;border:none}.list-pagination{display:flex;justify-content:flex-end;padding-top:var(--spacing-md)}.list-empty{padding:var(--spacing-xxxl) 0;text-align:center;color:var(--text-placeholder)}.list-empty-icon{font-size:64px;margin-bottom:var(--spacing-lg);opacity:.5}.list-empty-text{font-size:var(--font-size-base);color:var(--text-secondary)}.list-loading{padding:var(--spacing-xxxl) 0;text-align:center}.list-card-list{display:none;flex-direction:column;gap:var(--spacing-md)}.list-card-item{background-color:var(--bg-card);border-radius:var(--radius-base);padding:var(--spacing-lg);box-shadow:var(--shadow-xs);border:1px solid var(--border-light);transition:var(--transition-all);cursor:pointer}.list-card-item:hover{box-shadow:var(--shadow-sm);border-color:var(--border-hover);transform:translateY(-1px)}.list-card-item:active{transform:translateY(0)}.list-card-header{display:flex;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.list-card-avatar{width:48px;height:48px;border-radius:var(--radius-circle);background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-light) 100%);display:flex;align-items:center;justify-content:center;color:var(--text-white);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);flex-shrink:0}.list-card-title{flex:1;min-width:0}.list-card-name{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin-bottom:var(--spacing-xs)}.list-card-subtitle{font-size:var(--font-size-sm);color:var(--text-secondary);display:flex;align-items:center;gap:var(--spacing-xs)}.list-card-content{display:flex;flex-direction:column;gap:var(--spacing-sm)}.list-card-row{display:flex;align-items:center;font-size:var(--font-size-sm);color:var(--text-secondary);gap:var(--spacing-sm)}.list-card-label{color:var(--text-placeholder);flex-shrink:0;min-width:60px}.list-card-value{color:var(--text-primary);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-card-footer{display:flex;align-items:center;justify-content:space-between;margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--border-light)}.list-card-tags{display:flex;gap:var(--spacing-xs);flex-wrap:wrap}.list-card-actions{display:flex;gap:var(--spacing-xs)}.list-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--spacing-lg);margin-bottom:var(--spacing-md)}.stat-card{background-color:var(--bg-card);border-radius:var(--radius-base);padding:var(--spacing-xl);box-shadow:var(--shadow-xs);border:1px solid var(--border-light);transition:var(--transition-all)}.stat-card:hover{box-shadow:var(--shadow-sm);transform:translateY(-2px)}.stat-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-md)}.stat-card-title{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:var(--font-weight-medium)}.stat-card-icon{width:36px;height:36px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-lg);color:var(--text-white)}.stat-card-icon.primary{background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-light) 100%)}.stat-card-icon.success{background:linear-gradient(135deg,var(--success-color) 0%,var(--success-light) 100%)}.stat-card-icon.warning{background:linear-gradient(135deg,var(--warning-color) 0%,var(--warning-light) 100%)}.stat-card-icon.danger{background:linear-gradient(135deg,var(--danger-color) 0%,var(--danger-light) 100%)}.stat-card-value{font-size:var(--font-size-massive);font-weight:var(--font-weight-bold);color:var(--text-primary);line-height:1.2}.stat-card-change{font-size:var(--font-size-xs);color:var(--text-secondary);margin-top:var(--spacing-xs)}.stat-card-change.up{color:var(--success-color)}.stat-card-change.down{color:var(--danger-color)}.search-form .el-form.el-form--inline{display:flex;flex-wrap:wrap;align-items:center;gap:var(--spacing-sm)}.search-form .search-row{display:inline-flex;align-items:center;gap:var(--spacing-sm)}.search-form .el-form-item{margin:0}.search-item-class{flex:1 1 auto;min-width:200px}.search-item-name .el-input{width:180px}.search-item-semester .el-select,.search-item-semester .el-input{width:130px}.search-item-grade .el-select,.search-item-grade .el-input{width:120px}.search-item-status .el-select,.search-item-type .el-select{width:100px}.search-item-exam{flex:1 1 auto;min-width:160px}.search-item-date{flex:0 0 auto}.is-mobile .search-form{padding:var(--spacing-sm)}.is-mobile .search-form .el-form.el-form--inline{flex-direction:column;gap:var(--spacing-xs);align-items:stretch}.is-mobile .search-form .search-row{display:flex;width:100%;gap:var(--spacing-xs);align-items:center}.is-mobile .search-form .el-form-item{margin:0;display:flex;align-items:center}.is-mobile .search-form .el-form-item__content,.is-mobile .search-form .el-form-item .el-select,.is-mobile .search-form .el-form-item .el-input,.is-mobile .search-form .class-filter-selector{width:100%}.is-mobile .search-form .search-item-semester{flex:0 0 110px}.is-mobile .search-form .search-item-grade{flex:0 0 70px}.is-mobile .search-form .search-item-class{flex:1 1 0;min-width:0!important}.is-mobile .search-form .search-item-exam,.is-mobile .search-form .search-item-name{flex:1 1 0;min-width:0}.is-mobile .search-form .search-item-status{flex:0 0 88px}.is-mobile .search-form .search-item-type{flex:0 0 80px}.is-mobile .search-form .search-item-date{flex:1 1 0;min-width:0}.is-mobile .search-form .search-item-date .el-date-editor{width:100%}.is-mobile .search-form .search-item-buttons{flex:0 0 auto}.is-mobile .search-form .el-input__inner,.is-mobile .search-form .el-select .el-input__inner{padding:0 4px;font-size:var(--font-size-xs)}.is-mobile .search-form .el-select__suffix{right:2px}.is-mobile .search-form .el-form-item .el-button{padding:6px 10px;font-size:var(--font-size-xs)}.is-mobile .search-form .class-filter-selector__input-wrapper{min-width:0!important;font-size:var(--font-size-xs)}.list-page{height:100%;overflow:auto}.is-mobile .list-page{padding:var(--spacing-sm);gap:var(--spacing-sm);height:100%;overflow:hidden}.is-mobile .list-page .page-header{flex-shrink:0;margin-bottom:0;display:none}.is-mobile .list-page .search-form{flex-shrink:0}.is-mobile .list-page .table-wrapper,.is-mobile .list-page .data-table,.is-mobile .list-page .list-table-wrap{flex:1 1 auto;min-height:200px;overflow:auto;min-width:0}.is-mobile .list-page .action-bar{flex-shrink:0;flex-direction:row!important;align-items:center!important;justify-content:space-between!important;flex-wrap:nowrap!important;gap:var(--spacing-xs)!important}.is-mobile .list-page .action-bar .page-actions{flex:1;display:flex;gap:4px;flex-wrap:nowrap;justify-content:flex-start}.is-mobile .list-page .action-bar .page-actions .el-button{flex:none!important;padding:4px 8px;font-size:12px;margin-left:0}.is-mobile .list-page .action-bar .pagination{flex:1 1 auto!important;min-width:0}.is-mobile .list-page .action-bar .pagination :deep(.el-pagination){font-size:12px;justify-content:flex-end;min-width:0}.is-mobile .list-page .action-bar .pagination :deep(.el-pagination .btn-prev),.is-mobile .list-page .action-bar .pagination :deep(.el-pagination .btn-next),.is-mobile .list-page .action-bar .pagination :deep(.el-pagination .el-pager li){min-width:24px;height:24px;line-height:24px;padding:0}.is-tablet .list-page{padding:var(--spacing-lg);gap:var(--spacing-lg)}.is-mobile .list-filter,.is-tablet .list-filter{padding:var(--spacing-lg)}.is-mobile .list-stats,.is-tablet .list-stats{grid-template-columns:repeat(2,1fr)}.form-page{min-height:100%;display:flex;flex-direction:column}.form-page .page-header{flex-shrink:0;padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--border-light);margin-bottom:var(--spacing-lg)}.form-page .page-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-medium);color:var(--text-primary);margin:0}.form-page .form-container{flex:1;background:var(--bg-card);border-radius:var(--radius-lg);padding:var(--spacing-xl);box-shadow:var(--shadow-sm)}.form-page .section-form{margin-bottom:var(--spacing-xl)}.form-page .section-form:last-child{margin-bottom:0}.form-page .form-group{margin-bottom:var(--spacing-lg)}.form-page .form-group-title{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--text-primary);margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--border-light)}.form-page .form-actions{display:flex;justify-content:flex-end;gap:var(--spacing-md);padding-top:var(--spacing-xl);margin-top:var(--spacing-xl);border-top:1px solid var(--border-light)}.form-page .form-row{display:flex;gap:var(--spacing-lg)}.form-page .form-col{flex:1}.form-page .form-col-2{flex:2}.form-page .form-col-3{flex:3}.form-page .simple-form{--label-width: 120px}.form-page .simple-form .el-form-item__label{width:var(--label-width);text-align:right;padding-right:var(--spacing-md)}.form-page .simple-form .el-form-item__content{margin-left:calc(var(--label-width) + var(--spacing-md))}.auth-img-placeholder[data-v-a0fb4fe1]{display:inline-flex;align-items:center;justify-content:center}
