:root{--color-primary:#2563eb;--color-primary-hover:#3b82f6;--color-primary-active:#1d4ed8;--color-primary-bg:#eff6ff;--color-primary-bg-hover:#dbeafe;--color-success:#16a34a;--color-success-bg:#f0fdf4;--color-warning:#f59e0b;--color-warning-bg:#fffbeb;--color-error:#dc2626;--color-error-bg:#fef2f2;--color-student-primary:#059669;--color-student-primary-hover:#10b981;--color-student-bg:#ecfdf5;--color-student-border:#a7f3d0;--color-bg-base:#f8fafc;--color-bg-elevated:#fff;--color-bg-mask:#00000073;--color-border:#e2e8f0;--color-border-light:#f1f5f9;--color-text:#0f172a;--color-text-secondary:#64748b;--color-text-tertiary:#94a3b8;--color-text-placeholder:#cbd5e1;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #00000012, 0 2px 4px -2px #0000000d;--shadow-lg:0 10px 15px -3px #00000014, 0 4px 6px -4px #0000000a;--shadow-xl:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000000a;--shadow-card-hover:0 12px 28px -6px #0000001f, 0 4px 12px -4px #0000000f;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-size-xs:12px;--font-size-sm:13px;--font-size-base:14px;--font-size-lg:16px;--font-size-xl:18px;--font-size-2xl:24px;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-base:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.35s cubic-bezier(.4, 0, .2, 1);--transition-spring:.4s cubic-bezier(.34, 1.56, .64, 1);--sider-width:240px;--sider-collapsed-width:64px;--header-height:56px;--content-max-width:1400px}@media (prefers-reduced-motion:reduce){:root{--transition-fast:0s;--transition-base:0s;--transition-slow:0s;--transition-spring:0s}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:translate(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes scaleInBounce{0%{opacity:0;transform:scale(.85)}60%{transform:scale(1.04)}to{opacity:1;transform:scale(1)}}@keyframes slideUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}@keyframes cardLift{0%{box-shadow:var(--shadow-md);transform:translateY(0)}to{box-shadow:var(--shadow-card-hover);transform:translateY(-4px)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes pulse-subtle{0%,to{opacity:1}50%{opacity:.7}}@keyframes countIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes gradientShift{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes floatShape1{0%,to{transform:translate(0)rotate(0)}33%{transform:translate(30px,-30px)rotate(120deg)}66%{transform:translate(-20px,20px)rotate(240deg)}}@keyframes floatShape2{0%,to{transform:translate(0)rotate(0)}25%{transform:translate(-25px,-35px)rotate(90deg)}50%{transform:translate(20px,-10px)rotate(180deg)}75%{transform:translate(-15px,25px)rotate(270deg)}}@keyframes floatShape3{0%,to{transform:translate(0)scale(1)}50%{transform:translate(25px,25px)scale(1.1)}}@keyframes ripple{to{opacity:0;transform:scale(4)}}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}@keyframes spin-slow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.anim--fade-in-up{animation:fadeInUp var(--transition-base) ease-out both}.anim--fade-in-down{animation:fadeInDown var(--transition-base) ease-out both}.anim--fade-in-left{animation:fadeInLeft var(--transition-base) ease-out both}.anim--fade-in-right{animation:fadeInRight var(--transition-base) ease-out both}.anim--fade-in{animation:fadeIn var(--transition-base) ease-out both}.anim--scale-in{animation:scaleIn var(--transition-spring) ease-out both}.anim--scale-in-bounce{animation:scaleInBounce var(--transition-spring) ease-out both}.anim--slide-up{animation:slideUp var(--transition-slow) ease-out both}.anim--slide-down{animation:slideDown var(--transition-base) ease-out both}.anim--stagger>*{opacity:0;animation:fadeInUp var(--transition-base) ease-out forwards}.anim--stagger>:first-child{animation-delay:0s}.anim--stagger>:nth-child(2){animation-delay:60ms}.anim--stagger>:nth-child(3){animation-delay:.12s}.anim--stagger>:nth-child(4){animation-delay:.18s}.anim--stagger>:nth-child(5){animation-delay:.24s}.anim--stagger>:nth-child(6){animation-delay:.3s}.anim--stagger>:nth-child(7){animation-delay:.36s}.anim--stagger>:nth-child(8){animation-delay:.42s}.anim--stagger>:nth-child(9){animation-delay:.48s}.anim--stagger>:nth-child(10){animation-delay:.54s}.page-enter{animation:.3s ease-out both fadeInUp}.page-enter-fast{animation:.18s ease-out both fadeIn}@media (width<=575px){:root{--space-md:10px;--space-lg:12px;--space-xl:16px;--space-2xl:24px;--font-size-base:12px;--font-size-lg:14px;--font-size-xl:15px;--font-size-2xl:16px;--sider-width:220px;--header-height:48px}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;font-size:12px}body{word-break:break-word;overflow-x:hidden}.ant-card .ant-card-body{padding:10px!important}.ant-card .ant-card-head{min-height:36px;padding:0 10px!important}.ant-card .ant-card-head-title{padding:8px 0;font-size:13px}.ant-card .ant-card-extra{font-size:12px}.ant-table-wrapper{-webkit-overflow-scrolling:touch;overflow-x:auto}.ant-table-wrapper .ant-table-content{overflow-x:auto}.ant-table-wrapper table{min-width:480px;font-size:11px}.ant-table-wrapper .ant-table-thead>tr>th,.ant-table-wrapper .ant-table-tbody>tr>td{white-space:nowrap;font-size:11px;padding:6px 4px!important}.ant-table-wrapper .ant-table-thead>tr>th{font-size:11px}.ant-pagination{flex-wrap:wrap;justify-content:center;row-gap:4px;font-size:11px}.ant-pagination .ant-pagination-options{margin-left:0!important}.ant-pagination .ant-pagination-item,.ant-pagination .ant-pagination-prev,.ant-pagination .ant-pagination-next{min-width:24px;height:24px;font-size:11px;line-height:22px}.ant-pagination .ant-pagination-total-text{text-align:center;width:100%;font-size:11px;display:block}.ant-descriptions-view table{table-layout:fixed}.ant-descriptions-row>th,.ant-descriptions-row>td{box-sizing:border-box;display:block;width:100%!important;padding:4px 6px!important}.ant-descriptions-item-label{color:#64748b;font-size:11px}.ant-descriptions-item-content{font-size:12px}.ant-modal{margin:6px auto;top:8px;max-width:calc(100vw - 12px)!important}.ant-modal .ant-modal-content{border-radius:12px;padding:12px 10px}.ant-modal .ant-modal-header{margin-bottom:8px;padding-bottom:6px}.ant-modal .ant-modal-title{font-size:14px}.ant-modal .ant-modal-body{max-height:calc(100vh - 140px);font-size:12px;overflow-y:auto}.ant-modal .ant-modal-footer{margin-top:10px;padding-top:8px}.ant-modal .ant-modal-footer .ant-btn{height:32px;padding:0 12px;font-size:12px}.ant-modal .ant-modal-close{top:10px;right:10px}.ant-drawer-content-wrapper{max-width:90vw!important}.ant-drawer .ant-drawer-body{padding:12px}.ant-form-inline{display:block}.ant-form-inline .ant-form-item{margin-bottom:8px;margin-right:0;display:block}.ant-form-item-label>label{height:auto;font-size:12px}.ant-form-item-explain-error{font-size:11px}.ant-input,.ant-input-number,.ant-select-selector,.ant-btn{font-size:12px}.ant-input,.ant-input-number-input{padding:4px 8px}.ant-select-selector{padding:0 8px}.ant-btn{border-radius:6px;height:32px;padding:0 12px;font-size:12px}.ant-btn-lg{height:36px;font-size:13px}.ant-btn-sm{height:24px;padding:0 8px;font-size:11px}.ant-message{max-width:calc(100vw - 16px);font-size:12px}.ant-notification{max-width:calc(100vw - 16px)}pre,code{white-space:pre-wrap;word-break:break-all;font-size:11px}.ant-statistic-content-value{font-size:18px!important}.ant-statistic-title{font-size:11px}.ant-tag{border-radius:4px;padding:0 4px;font-size:10px;line-height:16px}.ant-breadcrumb{font-size:11px}.page-header{flex-direction:column;align-items:flex-start;gap:6px;margin-bottom:10px}.page-header__title{font-size:16px}.ant-segmented{font-size:11px}.ant-segmented-item{padding:2px 8px}.ant-avatar{width:28px!important;height:28px!important;font-size:12px!important;line-height:28px!important}.admin-footer,.student-footer{padding:6px 4px!important}.admin-footer a,.student-footer a{font-size:10px!important}.ant-row{flex-wrap:wrap}.ant-col{min-width:0}.ant-space{flex-wrap:wrap;gap:4px!important}.ant-badge{max-width:100%}.ant-badge-count{min-width:16px;height:16px;padding:0 4px;font-size:10px;line-height:16px}.ant-dropdown-menu-item{padding:4px 10px;font-size:12px}.ant-tooltip{max-width:calc(100vw - 24px);font-size:11px}.ant-comment-content-detail,.ant-comment-content-author-name{font-size:12px}.ant-list-item{padding:8px 6px}.ant-list-item-meta-title{font-size:13px}.ant-list-item-meta-description{font-size:11px}.ant-collapse-header{font-size:13px;padding:8px 10px!important}.ant-collapse-content-box{padding:8px 10px!important}.ant-tabs-tab{font-size:12px;padding:6px 8px!important}.ant-steps-item-title{font-size:12px!important}.ant-steps-item-description{font-size:11px!important}.ant-alert{padding:6px 10px;font-size:12px}img{max-width:100%;height:auto}.hide-xs{display:none!important}}@media (width>=576px) and (width<=767px){:root{--space-md:12px;--space-lg:14px;--space-xl:18px;--font-size-base:13px;--font-size-2xl:18px}html{font-size:13px}body{overflow-x:hidden}.ant-card .ant-card-body{padding:12px}.ant-card .ant-card-head{min-height:40px;padding:0 12px}.ant-card .ant-card-head-title{padding:10px 0;font-size:14px}.ant-table-wrapper{-webkit-overflow-scrolling:touch;overflow-x:auto}.ant-table-wrapper table{min-width:520px;font-size:12px}.ant-table-wrapper .ant-table-thead>tr>th,.ant-table-wrapper .ant-table-tbody>tr>td{white-space:nowrap;font-size:12px;padding:8px 6px!important}.ant-pagination{flex-wrap:wrap;justify-content:center;row-gap:6px}.ant-pagination .ant-pagination-item,.ant-pagination .ant-pagination-prev,.ant-pagination .ant-pagination-next{min-width:28px;height:28px;font-size:12px;line-height:26px}.ant-descriptions-row>th,.ant-descriptions-row>td{display:block;width:100%!important;padding:6px 8px!important}.ant-descriptions-item-label{font-size:12px}.ant-modal{margin:10px auto;top:12px;max-width:calc(100vw - 20px)!important}.ant-modal .ant-modal-content{padding:16px 14px}.ant-modal .ant-modal-title{font-size:15px}.ant-modal .ant-modal-body{max-height:calc(100vh - 160px);font-size:13px;overflow-y:auto}.ant-modal .ant-modal-footer .ant-btn{height:36px;font-size:13px}.ant-drawer-content-wrapper{max-width:85vw!important}.ant-form-inline{display:block}.ant-form-inline .ant-form-item{margin-bottom:10px;margin-right:0;display:block}.ant-form-item-label>label{height:auto;font-size:13px}.ant-statistic-content-value{font-size:22px!important}.ant-statistic-title{font-size:12px}.ant-tag{padding:0 6px;font-size:11px;line-height:18px}.ant-breadcrumb{font-size:12px}.page-header{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:12px}.page-header__title{font-size:18px}.ant-avatar{width:32px!important;height:32px!important;font-size:14px!important;line-height:32px!important}.admin-footer,.student-footer{padding:8px 6px!important}.admin-footer a,.student-footer a{font-size:11px!important}.ant-space{flex-wrap:wrap;gap:6px!important}.ant-list-item{padding:10px 8px}.ant-list-item-meta-title{font-size:14px}.ant-list-item-meta-description{font-size:12px}.ant-collapse-header{font-size:14px;padding:10px 12px!important}.ant-collapse-content-box{padding:10px 12px!important}.hide-sm{display:none!important}}@media (width>=768px) and (width<=1023px){:root{--space-lg:16px;--space-xl:20px;--font-size-base:13.5px;--font-size-2xl:20px;--sider-width:220px}html{font-size:13.5px}.ant-card .ant-card-body{padding:16px}.ant-table-wrapper{-webkit-overflow-scrolling:touch;overflow-x:auto}.ant-table-wrapper table{min-width:560px}.ant-modal{margin:20px auto;max-width:calc(100vw - 40px)!important}.ant-modal .ant-modal-content{padding:20px}.ant-drawer-content-wrapper{max-width:60vw!important}.ant-statistic-content-value{font-size:24px!important}.ant-pagination{flex-wrap:wrap;row-gap:6px}.hide-md-down{display:none!important}}@media (width>=1440px){:root{--space-lg:28px;--space-xl:36px;--space-2xl:56px;--font-size-base:15px;--font-size-lg:17px;--font-size-xl:20px;--font-size-2xl:26px;--content-max-width:1600px}html{font-size:15px}.ant-card .ant-card-body{padding:28px}.ant-card .ant-card-head-title{font-size:17px}.ant-modal{max-width:800px}.ant-modal .ant-modal-content{padding:28px}.ant-modal .ant-modal-title{font-size:20px}.ant-statistic-content-value{font-size:32px!important}.ant-table-wrapper .ant-table-thead>tr>th,.ant-table-wrapper .ant-table-tbody>tr>td{font-size:14px;padding:14px 18px!important}.ant-tag{padding:2px 10px;font-size:13px}.ant-breadcrumb{font-size:14px}.page-header__title{font-size:26px}.ant-btn{height:40px;padding:0 24px;font-size:15px}.ant-input,.ant-select-selector{font-size:15px}.ant-list-item{padding:14px 16px}.ant-list-item-meta-title{font-size:16px}.ant-list-item-meta-description{font-size:14px}.ant-collapse-header{font-size:16px;padding:14px 16px!important}.ant-collapse-content-box{padding:16px!important}.hide-lg-up{display:none!important}}@media (height<=500px) and (orientation:landscape){.ant-modal{max-height:calc(100vh - 8px);top:4px}.ant-modal .ant-modal-body{max-height:calc(100vh - 120px);overflow-y:auto}.ant-card .ant-card-body{padding:8px}.page-header{margin-bottom:8px}}@media print{.ant-layout-sider,.ant-layout-header,.admin-footer,.student-footer,.ant-btn,.hide-print{display:none!important}.ant-layout-content{margin:0!important;padding:0!important}.ant-card{box-shadow:none!important;border:1px solid #ddd!important}body{background:#fff!important}}.show-xs{display:none!important}@media (width<=767px){.show-xs{display:initial!important}.show-xs-block{display:block!important}.show-xs-flex{display:flex!important}}.text-wrap{word-break:break-word;overflow-wrap:break-word}.text-nowrap{white-space:nowrap}.text-ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.text-ellipsis-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.text-ellipsis-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.safe-area-bottom{padding-bottom:env(safe-area-inset-bottom)}.safe-area-top{padding-top:env(safe-area-inset-top)}@media (width<=1023px){.scrollbar-hidden::-webkit-scrollbar{display:none}.scrollbar-hidden{-ms-overflow-style:none;scrollbar-width:none}}*{box-sizing:border-box}.ant-row>.ant-col{min-width:0}img,svg{max-width:100%;height:auto}@media (width<=767px){body{-webkit-user-select:none;user-select:none}input,textarea{-webkit-user-select:text;user-select:text}}*,:before,:after{box-sizing:border-box}html{font-family:var(--font-family);font-size:var(--font-size-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--color-text);background:var(--color-bg-base)}body{margin:0;padding:0;line-height:1.6}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}:focus:not(:focus-visible){outline:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-text-placeholder);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-tertiary)}.ant-card{transition:box-shadow var(--transition-base), transform var(--transition-base)}.ant-card-hoverable:hover{transform:translateY(-2px);box-shadow:var(--shadow-card-hover)!important}.ant-table-tbody>tr.ant-table-row{transition:background var(--transition-fast)}.ant-table-tbody>tr.ant-table-row:hover>td{background:var(--color-primary-bg)!important}.ant-btn{transition:all var(--transition-fast);position:relative;overflow:hidden}.ant-btn:active{transform:scale(.97)}.ant-menu-item,.ant-menu-submenu-title{transition:all var(--transition-fast)!important;border-radius:var(--radius-md)!important;width:auto!important;margin:2px 8px!important}.ant-menu-item:hover,.ant-menu-submenu-title:hover{background:var(--color-primary-bg)!important}.ant-menu-item-selected{font-weight:600;background:var(--color-primary-bg-hover)!important}.ant-layout-sider-children{flex-direction:column;height:100%;display:flex;overflow:hidden}.ant-layout-sider{transition:all var(--transition-base)!important}.ant-modal-content{animation:scaleInBounce var(--transition-spring) both}.ant-tag{transition:all var(--transition-fast);border-radius:var(--radius-sm)}.ant-statistic-content-value{animation:countIn var(--transition-slow) ease-out both}.page-breadcrumb{margin-bottom:var(--space-md);padding:var(--space-sm) 0}.page-header{margin-bottom:var(--space-lg);animation:fadeInDown var(--transition-base) ease-out both;justify-content:space-between;align-items:center;display:flex}.page-header__title{font-size:var(--font-size-2xl);color:var(--color-text);margin:0;font-weight:700}.glass-header{-webkit-backdrop-filter:blur(12px);background:#ffffffb8!important;border-bottom:1px solid #0000000f!important}.content-wrapper{animation:.3s ease-out both fadeInUp}.skeleton-shimmer{background:linear-gradient(90deg, var(--color-border-light) 25%, var(--color-bg-base) 50%, var(--color-border-light) 75%);background-size:200% 100%;animation:1.5s infinite shimmer}.skip-link{top:-100%;left:var(--space-md);background:var(--color-primary);color:#fff;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);z-index:9999;font-size:var(--font-size-sm);transition:top var(--transition-fast);position:absolute}.skip-link:focus{top:var(--space-sm)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
