:root{--color-primary: #0091ff;--color-background: #f6f7fa;--color-text: rgb(0 0 0 / 85%);--color-muted: rgb(0 0 0 / 50%);--header-height: 64px;--sidebar-width: 220px;font-family:PingFang SC,Microsoft YaHei,sans-serif;color:var(--color-text);font-size:14px;font-synthesis:none;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{width:100%;min-height:100%}body{margin:0}a{color:inherit;text-decoration:none}button{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--color-primary);outline-offset:-3px}.admin-shell{height:100vh;height:100dvh;display:flex;flex-direction:column}.app-header{display:flex;flex:0 0 var(--header-height);align-items:center;justify-content:space-between;gap:20px;padding:0 26px 0 53px;background:#fff;border-bottom:1px solid #f0f0f0}.brand{display:inline-flex;align-items:center;gap:10px;white-space:nowrap}.brand-name{color:var(--color-primary);font-size:24px;line-height:33px}.brand-divider,.brand-title{color:var(--color-muted);font-size:20px}.user-info{display:inline-flex;align-items:center;gap:8px;color:var(--color-muted);white-space:nowrap}.user-login{min-height:40px;padding:0 8px;transition:color .3s}.user-login:hover{color:var(--color-primary)}.user-info .icon-user{width:24px;height:24px}.user-info .chevron{margin-left:10px}.app-body{display:flex;flex:1;min-height:0}.sidebar{width:var(--sidebar-width);flex:0 0 var(--sidebar-width);overflow-y:auto;background:#fff;border-right:1px solid #f0f0f0}.sidebar nav{padding:34px 0}.sidebar-menu.ant-menu>.nav-home{margin-bottom:14px}.sidebar-menu.ant-menu>.ant-menu-submenu+.ant-menu-submenu{margin-top:14px}.sidebar-menu.ant-menu>.nav-home,.sidebar-menu.ant-menu>.ant-menu-submenu>.ant-menu-submenu-title{padding-inline-end:42px;color:var(--color-text);background:transparent}.sidebar .sidebar-menu.ant-menu>.nav-home.ant-menu-item:hover,.sidebar .sidebar-menu.ant-menu>.nav-home.ant-menu-item:active,.sidebar-menu.ant-menu>.nav-home.ant-menu-item-selected,.sidebar-menu.ant-menu>.ant-menu-submenu>.ant-menu-submenu-title:hover,.sidebar-menu.ant-menu>.ant-menu-submenu-selected>.ant-menu-submenu-title{color:var(--color-primary);background:transparent}.sidebar-menu.ant-menu .ant-menu-submenu-arrow{inset-inline-end:42px}.sidebar-menu.ant-menu .ant-menu-item,.sidebar-menu.ant-menu .ant-menu-submenu-title{transition:color .3s,background-color .3s}.sidebar-menu.ant-menu .sketch-icon{vertical-align:middle}.chevron{display:inline-block;width:7px;height:7px;flex:0 0 7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg)}.sketch-icon{display:inline-block;flex-shrink:0;width:20px;height:20px;background:currentColor;-webkit-mask:var(--icon-url) center / contain no-repeat;mask:var(--icon-url) center / contain no-repeat}.icon-home{--icon-url: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABMElEQVRIie2ToU4DQRCGF0wTJElnKAFD+gS8AQ4cT4C5pJkfUo2kEouowDVYXgQMb0AuiAoECQ5Ryk/2bsXRO8pe7xydZJLN5Nv/n92dde7fxF7CbTHe+/TrVsV7FzwUMFWQPv3a11oRVzAR8EONcwVHWRrnWQ1MVhbuD9lR8DZ0/NY953HB9EjA13Ciu96AW7XEd8F9AR+DwJOAB5WM8WEZUxk7xhPfcUx3/SE7At4E9l3A0yXS3FDwUo1fYvwUcBB5YNcFz8Q4C9d57a64WYIEnIROPDh1NUPBadjrTSZlA+M4m3PwxY9hXQMB02xv/lfGf4GrGqTtgW0aiHGs4HMxF6+hmQGYaj4luYFxVsU0MpBCLYZZG6SNrujHg6L8qDHM7wYVI6kLYxnDrMPFxjcg4GwX7C9TSgAAAABJRU5ErkJggg==)}.icon-academic{--icon-url: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAACg0lEQVRIid2UT4jNURTHXxIlFigsZDc2UmNFSkMxU6Nkp9gog4WSpRmenw1+97yZ3zm3eb3fOXcMG6Xkb5JSYiORhZUFI3+iyJppJHTu7/7ee7z3Rt57Czn1693e/d3v95zPOb9bKPzXcXp8fClY6ddnbGxiSdeEoyiaa1BOGJSvQPJDn7Au6l7HBiqeCfOLGGVYH10Hs2LHWHy2KM+jcnlh1dScXWRQpoB4piNcMbqBkOnR3/cM8YjuxZRua9vAN1VFUIYb9lCOefNEtrZtoOUrBmWuWJohOlOpLG7bwGdKUgyTM6VYApqX2X98XN+JokvzgGS3sXyghLL+rwx0FDMTnsnHVNcqTiSrFGM2WWGESb4Aul5D6WAURXP+aOBxJDIEKHeA5JVBeQvIN2NyEZC8r5qifAbiyVoSasbnZzUpJbLdkHyqy+4jIH+oFwHkBwb5oqJRsRLKYUC5BcTPAtodzcUp3WeQv2tmnnu5vCLfO0UTy4HkUTZFfCgSWaDIAOWcJpX1jm9kCbjeBvFRW1kHyNOacZy4NQ3YSMo5Fn9H5WLVStNBX0lW4XRD4w3yVb9ppb9ZdZBh+RZb2Witna9rraiE6eYwBJOKyxC7UMXeGppSZZk/gPywZeOJ7+b8VQhQ3viKkR+H5o7E1m3IGu/HeVftsJW+0JyTrQxGR91qQ3LPv2elzyRuk0F+HSq5pj0B4gv5LaDfSc0gcXv8wUSGWhloAMmVUMURY2WLVqK4wgW506DczgzcQKE+lFcDtyYBKAf9lNWNq/YkxxLG+l1s3cpfDsZjshZQnurvbAYagG6/Qb6c46oTrhiU64bSnkI3wlDaA8j3DfITHeGuiP6T8RNJoByaM0Vl+wAAAABJRU5ErkJggg==)}.icon-research{--icon-url: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAB5ElEQVRIie1UPWsUURQdAiZiiJUWVram0Qg2WtgoaGGthT8gRexTTiEke+8sc+8LxtwzCQQDQdA0IYGkiZUKWUj+QYhooRZ+FIGEQIy8nZ1ldtfZ7OpilQOXGYbLOe+cN5wgOEUOZff8OksyEhQhBM6R2h2ObYzExqsTJ4+jZ3OXm3ejaGGQxW6GYdjnnBsgsSVWHPshxYsWchabJsFhttQ8pHhLmjyIxG6TYI0EB/57FCcPySWVdMc2WOydf5+cmrnWKKDYJbU9VpRI7BHHuFuS5F5J8cQTsuKoLib2i8QqrDNPSW27doCvzrmLLHiT7s1ebRHwUxRfeQpXWPCd1H5QbDeqsShWM/L8kxWvWyPKCfi4WLFTH7Hp/E4YvupnteXUDdb8yUnsS418K5yfP/tPAiT2snbiVefc+boTl1SI5ob+GMFJEeV2PtbuY6uBPBUbCIrQqQNS++YJ08tvcFJM3p0A9qsCDrdyTtqTNwu026H0V/aX+zlzciJ5NwKs9iHL3TuIY1zqsQB202rAIqlZR+TdCgR/g/8jIPapXZtyTsA3r29TAGe6cXDcrk1Z8dP3EautZ23KgtHOBHxdK97n25Sd3S9qU1ZsstpEuYwLQS9QktnhasGJrfg27QnpKXwCvwHrrBufHYD4OwAAAABJRU5ErkJggg==)}.icon-user{--icon-url: url(data:image/png;base64,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)}.main-content{display:flex;flex-direction:column;flex:1;min-width:0;gap:20px;padding:20px;overflow:auto;background:var(--color-background)}.welcome-card,.page-card{background:#fff;border-radius:4px;padding:18px 37px}.welcome-card{flex-shrink:0;min-height:97px}.welcome-title{margin:0;font-size:22px;font-weight:400;line-height:30px}.welcome-date{margin:10px 0 0;color:var(--color-muted);line-height:20px}.welcome-date span{margin-left:12px}.page-card{flex:1;min-height:300px}.page-card h1{margin:0;font-size:22px;font-weight:400;line-height:30px}.skip-link{position:fixed;top:8px;left:8px;z-index:10;padding:10px 16px;color:#fff;background:var(--color-primary);transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.user-logout{margin-left:10px;padding:0;border:none;background:none;color:var(--color-muted);cursor:pointer;transition:color .3s}.user-logout:hover{color:var(--color-primary)}.auth-page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--color-background)}.auth-back{color:var(--color-muted);transition:color .3s}.auth-back:hover{color:var(--color-primary)}.auth-body{flex:1;display:flex;align-items:flex-start;justify-content:center;padding:9vh 16px 48px}.auth-card{width:400px;max-width:100%;background:#fff;border-radius:4px;padding:32px 37px}.auth-card h1{margin:0;font-size:22px;font-weight:400;line-height:30px}.auth-subtitle{margin:4px 0 20px;color:var(--color-muted)}.auth-alert{margin-bottom:16px}.auth-alt{margin-top:16px;color:var(--color-muted)}.auth-alt a{color:var(--color-primary)}.auth-divider{display:flex;align-items:center;gap:12px;margin:24px 0 16px;color:var(--color-muted)}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:#f0f0f0}@media(max-width:640px){.app-header{padding:0 16px;gap:8px}.brand{gap:6px}.brand-name{font-size:21px}.brand-title{font-size:16px}.main-content{padding:12px;gap:12px}.welcome-card,.page-card{padding:18px 16px;overflow-wrap:anywhere}.welcome-title,.page-card h1{font-size:18px}.auth-card{padding:24px 20px}.welcome-date span{display:block;margin-left:0}}
