:root{--c-primary:#1668DC;--c-primary-hover:#1257BB;--c-primary-active:#0F4FA8;--c-primary-soft:#E8F1FE;--c-primary-50:#EFF6FF;--c-primary-200:#CFE3FA;--c-accent:#2FB98A;--c-accent-hover:#26A176;--c-accent-soft:#EAF8F3;--c-accent-deep:#1E8460;--c-emphasis:#F5A623;--c-emphasis-hover:#E08A0B;--c-emphasis-soft:#FFF7E8;--c-emphasis-deep:#B7791F;--c-error:#E5484D;--c-error-soft:#FDECEC;--c-error-deep:#C93A3F;--t-900:#1F2D3D;--t-700:#3D4E63;--t-500:#5A6C86;--t-400:#8C9BB0;--t-300:#B4C0D0;--b-200:#E3EAF3;--b-100:#EEF2F7;--bg-50:#F7FAFF;--bg-100:#F5F7FA;--grad-brand:linear-gradient(135deg,#1668DC,#2FB98A);--grad-low:linear-gradient(135deg,#2FB98A,#1668DC);--grad-middle:linear-gradient(135deg,#1668DC,#2FB98A);--grad-high:linear-gradient(135deg,#0F4FA8,#1668DC);--grad-line:linear-gradient(90deg,#2FB98A,#1668DC 60%,#0F4FA8);--r-card-admin:12px;--r-btn-admin:8px;--r-card-student:16px;--r-btn-student:14px;--sh-card:0 1px 2px rgba(16,42,80,.04),0 2px 8px rgba(16,42,80,.04);--sh-card-hover:0 4px 12px rgba(16,42,80,.06),0 12px 28px rgba(22,104,220,.10);--sh-modal:0 12px 40px rgba(16,42,80,.14);--sh-primary:0 2px 8px rgba(22,104,220,.24);--dur-fast:160ms;--dur:240ms;--dur-slow:300ms;--ease:cubic-bezier(.4,0,.2,1);--ease-out:cubic-bezier(0,0,.2,1)}html{scroll-behavior:smooth}*{box-sizing:border-box}body{margin:0;background:var(--bg-100)!important;color:var(--t-900);font-family:system-ui,-apple-system,PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes modalIn{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:none}}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}@keyframes spin{to{transform:rotate(1turn)}}.ant-layout-content>*,.stagger>*,main{animation:fadeUp var(--dur-slow) var(--ease-out) both}.stagger>:first-child{animation-delay:0s}.stagger>:nth-child(2){animation-delay:30ms}.stagger>:nth-child(3){animation-delay:60ms}.stagger>:nth-child(4){animation-delay:90ms}.stagger>:nth-child(5){animation-delay:.12s}.stagger>:nth-child(6){animation-delay:.15s}.stagger>:nth-child(7){animation-delay:.18s}.stagger>:nth-child(8){animation-delay:.21s}.stagger>:nth-child(9){animation-delay:.24s}.stagger>:nth-child(10){animation-delay:.27s}.stagger>:nth-child(n+11){animation-delay:.3s}.hv-card{transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease);will-change:transform}.hv-card:hover{transform:translateY(-3px);box-shadow:var(--sh-card-hover)}.ant-layout{background:var(--bg-100)!important}.ant-card{box-shadow:var(--sh-card);border-color:var(--b-200)!important}.ant-card-head{border-bottom-color:var(--b-100)!important}.ant-btn{transition:background-color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)!important}.ant-btn:not(:disabled):hover{transform:translateY(-1px)}.ant-btn:not(:disabled):active{transform:translateY(0);transition-duration:80ms!important}.ant-btn-primary:not(:disabled){box-shadow:var(--sh-primary)}.ant-input,.ant-input-affix-wrapper,.ant-input-number,.ant-picker,.ant-select-selector{transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)!important}.ant-table-thead>tr>th{font-weight:600!important}.ant-table-tbody>tr{transition:background-color var(--dur-fast) var(--ease)}.ant-modal-content{animation:modalIn var(--dur) var(--ease-out) both}.ant-menu-item{transition:background-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)!important}:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#D7DEE8;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#C2CCDA}::-webkit-scrollbar-track{background:transparent}@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media print{.no-print{display:none!important}body{background:#fff!important}.print-page{box-shadow:none!important;border:1px solid #e3eaf3!important}.print-avoid-break{page-break-inside:avoid;break-inside:avoid}}.site-wrap{min-height:100vh;background:#fff}.site-container{width:100%;max-width:1160px;margin:0 auto;padding:0 24px}.site-section{padding:76px 0}.site-section-alt{background:var(--bg-50)}.site-h1{font-size:44px;line-height:1.22;letter-spacing:-.6px;margin:0}.site-h1,.site-h2{font-weight:800;color:var(--t-900)}.site-h2{font-size:32px;margin:0 0 10px;letter-spacing:-.3px}.site-sub{font-size:17px;color:var(--t-500);margin:0;line-height:1.75}.site-eyebrow{display:inline-block;font-size:13px;font-weight:700;color:var(--c-primary);background:var(--c-primary-soft);padding:5px 12px;border-radius:999px;margin-bottom:16px}.site-grid{display:grid;gap:20px}.site-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.site-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.site-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.site-card{background:#fff;border:1px solid var(--b-100);border-radius:16px;padding:26px 24px;box-shadow:var(--sh-card);transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.site-card:hover{transform:translateY(-3px);box-shadow:var(--sh-card-hover)}.site-chip{display:inline-block;font-size:13px;color:var(--t-500);background:var(--bg-100);border:1px solid var(--b-100);border-radius:8px;padding:6px 10px;margin:6px 6px 0 0}.site-chip-on{color:var(--c-accent-deep);background:var(--c-accent-soft);border-color:#CFEDE1;font-weight:600}.site-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:46px;padding:0 26px;border-radius:999px;font-size:15px;font-weight:600;text-decoration:none;transition:all var(--dur) var(--ease)}.site-btn-primary{background:var(--c-primary);color:#fff;box-shadow:var(--sh-primary)}.site-btn-primary:hover{background:var(--c-primary-hover)}.site-btn-ghost{background:#fff;color:var(--c-primary);border:1px solid var(--c-primary-200)}.site-btn-ghost:hover{border-color:var(--c-primary);background:var(--c-primary-50)}.site-nav-link{text-decoration:none;font-size:15px;color:var(--t-700);padding:6px 2px;position:relative;white-space:nowrap}.site-nav-link-on,.site-nav-link:hover{color:var(--c-primary)}.site-nav-link-on{font-weight:600}.site-nav-link-on:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;background:var(--c-primary);border-radius:2px}.site-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.site-stats>div{padding:0 16px;border-left:1px solid var(--b-100)}.site-stats>div:first-child{border-left:none}.site-boards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.site-stat-v{font-size:34px;font-weight:800;color:var(--c-primary);line-height:1.1}.site-stat-u{font-size:15px;font-weight:700;color:var(--c-primary);margin-left:2px}.site-step{width:44px;height:44px;border-radius:12px;background:var(--grad-line);color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:15px}.site-hero-art{position:absolute;inset:0;pointer-events:none;overflow:hidden}@media (max-width:900px){.site-h1{font-size:32px}.site-h2{font-size:25px}.site-section{padding:52px 0}.site-grid-2,.site-grid-3,.site-grid-4{grid-template-columns:1fr}.site-boards,.site-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.site-stats{gap:30px 0}.site-stats>div:nth-child(odd){border-left:none}.site-container{padding:0 18px}.site-nav-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.site-header-inner{gap:12px;height:60px}.site-header-nav{min-width:0;flex:1 1;gap:18px}.site-logo img,.site-logo svg{width:88px!important;height:auto!important}.site-header-cta{height:34px!important;padding:0 12px!important;font-size:13px!important}}@media (max-width:640px){.site-h1{font-size:27px}.site-h2{font-size:22px}.site-sub{font-size:14px}.site-section{padding:42px 0}.site-container{padding:0 15px}.site-logo img,.site-logo svg{width:76px!important}.site-header-inner{gap:8px}.site-header-nav{gap:14px}.site-header-cta{padding:0 10px!important;font-size:12px!important}.site-kv{grid-template-columns:1fr;gap:4px 0}.site-kv dd{margin-bottom:8px}.site-outline td:first-child{width:48px}}.site-outline{width:100%;border-collapse:collapse;font-size:14px}.site-outline thead th{background:var(--bg-100);color:var(--t-700);font-size:13px;font-weight:600;text-align:left;padding:11px 14px;border-bottom:1px solid var(--b-200);white-space:nowrap}.site-outline td{padding:12px 14px;border-bottom:1px solid var(--b-100);color:var(--t-700);line-height:1.7;vertical-align:top}.site-outline tbody tr:hover td{background:var(--bg-50)}.site-outline td:first-child{color:var(--c-primary);font-weight:600;white-space:nowrap;width:64px}.site-outline-wrap{overflow-x:auto;border:1px solid var(--b-100);border-radius:14px;background:#fff}.site-kv{display:grid;grid-template-columns:110px 1fr;gap:10px 16px;font-size:14px}.site-kv dt{color:var(--t-500)}.site-kv dd{margin:0;color:var(--t-900);font-weight:600}.site-numlist{margin:0;padding:0;list-style:none}.site-numlist li{display:flex;gap:12px;padding:12px 0;border-bottom:1px dashed var(--b-200)}.site-numlist li:last-child{border-bottom:none}.site-numlist span{flex:0 0 auto;width:26px;height:26px;border-radius:8px;background:var(--c-primary-soft);color:var(--c-primary);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}.m-root{min-height:100vh;background:var(--bg-100);-webkit-tap-highlight-color:transparent}.m-root input,.m-root select,.m-root textarea{font-size:16px!important}.m-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m-bar{position:sticky;top:0;z-index:20;background:#fff;border-bottom:1px solid var(--b-100);padding:calc(10px + env(safe-area-inset-top)) 14px 10px;display:flex;align-items:center;justify-content:space-between;gap:10px}.m-body{padding:14px 14px calc(24px + env(safe-area-inset-bottom))}.m-login-bg{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:calc(24px + env(safe-area-inset-top)) 18px calc(24px + env(safe-area-inset-bottom));background:linear-gradient(160deg,#EFF6FF,#F5F7FA 60%,#EAF8F3)}.m-login-card{width:100%;max-width:400px;background:#fff;border:1px solid var(--b-100);border-radius:18px;padding:28px 20px 22px;box-shadow:var(--sh-modal)}.m-hero{border-radius:16px;background:linear-gradient(135deg,#1668DC,#2FB98A);color:#fff;padding:16px 18px;margin-bottom:18px;box-shadow:0 6px 18px rgba(22,104,220,.18)}.m-sec-title{font-size:13px;font-weight:700;color:var(--t-500);margin:18px 4px 8px}.m-card{display:block;background:#fff;border:1px solid var(--b-100);border-radius:14px;padding:14px;margin-bottom:10px;box-shadow:var(--sh-card);text-decoration:none;color:inherit}.m-card-tap:active{background:var(--bg-50);transform:scale(.995)}.m-tag{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap}.m-tag-gray{background:var(--bg-100);color:var(--t-500)}.m-tag-blue{background:var(--c-primary-soft);color:var(--c-primary)}.m-tag-green{background:var(--c-accent-soft);color:var(--c-accent-deep)}.m-back{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--c-primary);text-decoration:none;padding:4px 2px 10px}.m-att-head{display:flex;justify-content:space-between;font-size:12px;color:var(--t-500);padding:10px 0;border-bottom:1px solid var(--b-100)}.m-att-row{display:flex;align-items:center;gap:10px;min-height:48px;padding:6px 0;border-bottom:1px solid #fafafa}.m-marks{display:flex;gap:6px;flex:0 0 auto}.m-mark{min-width:52px;height:36px;border:1px solid var(--b-200);background:#fff;color:var(--t-500);border-radius:9px;font-size:14px;font-weight:600;cursor:pointer;transition:background-color .12s var(--ease),color .12s var(--ease)}.m-mark:active{transform:scale(.96)}.m-mark-on{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.m-mark-leave{background:var(--c-emphasis-soft);border-color:#F0C88A;color:var(--c-emphasis-deep)}.m-mark-absent{background:var(--c-error-soft);border-color:#F6C9CB;color:var(--c-error-deep)}.m-photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.m-photo{position:relative;aspect-ratio:1/1;border-radius:12px;overflow:hidden;background:var(--bg-100);border:1px solid var(--b-100);padding:0;cursor:pointer}.m-photo-add{display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px dashed var(--b-200);background:var(--bg-50);color:var(--c-primary)}.m-photo-add:active{background:var(--c-primary-50)}.m-photo-del{position:absolute;top:4px;right:4px;width:26px;height:26px;border-radius:50%;border:none;background:rgba(0,0,0,.5);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;padding:0;cursor:pointer}.m-textarea{width:100%;border:1px solid var(--b-200);border-radius:10px;padding:10px 12px;font-size:16px;line-height:1.7;color:var(--t-900);background:#fff;resize:vertical;font-family:inherit}.m-textarea:focus{outline:none;border-color:var(--c-primary)}.m-input{flex:1 1;min-width:0;height:38px;border:1px solid var(--b-200);border-radius:10px;padding:0 12px;font-size:16px;color:var(--t-900);background:#fff;font-family:inherit}.m-input:focus{outline:none;border-color:var(--c-primary)}.m-footbar{position:fixed;left:0;right:0;bottom:0;z-index:100;background:#fff;border-top:1px solid var(--b-100);padding:10px 14px calc(10px + env(safe-area-inset-bottom));box-shadow:0 -2px 12px rgba(16,42,80,.06)}.m-has-footbar{padding-bottom:calc(76px + env(safe-area-inset-bottom))}@media (max-width:900px){.site-outline-wrap{font-size:13px}.site-outline td,.site-outline thead th{padding:9px 10px}}@media print{.no-print,.no-print embed,.no-print iframe,.no-print object,.no-print video{display:none!important;visibility:hidden!important}body[data-protect=courseware] .ant-modal-body,body[data-protect=courseware] main{display:none!important}}.lib-shell{display:grid;gap:28px;grid-template-columns:1fr;max-width:1180px;margin:0 auto;box-sizing:border-box}.lib-aside{display:none}.lib-aside-sticky{position:sticky;top:24px}.lib-mobile-only{display:block}.lib-siblings{display:grid;gap:12px;grid-template-columns:1fr}@media (min-width:640px){.lib-siblings{grid-template-columns:1fr 1fr}}@media (min-width:1024px){.lib-shell{grid-template-columns:224px minmax(0,1fr)}.lib-aside{display:block}.lib-mobile-only{display:none}}.adm-content{padding:24px;box-sizing:border-box}.adm-hamburger{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;flex:0 0 auto;border:1px solid #f0f0f0;background:#fff;border-radius:8px;cursor:pointer;color:#333;-webkit-tap-highlight-color:transparent}@media (max-width:767px){.adm-sider-desktop{display:none!important}.adm-content{padding:12px}.adm-header{padding-inline:12px!important}.adm-scope .ant-row>[class*=ant-col-]{flex:0 0 100%!important;max-width:100%!important}.adm-scope .ant-table-wrapper{overflow-x:auto}.adm-scope .ant-table{min-width:640px}.adm-scope .ant-descriptions-view{overflow-x:auto}.adm-scope .ant-statistic-content{font-size:22px}.adm-scope .ant-space{flex-wrap:wrap}}@media (min-width:768px){.adm-hamburger{display:none}}.lesson-script-body h1,.lesson-script-body h2,.lesson-script-body h3,.lesson-script-body h4{margin:1.1em 0 .45em;font-weight:700;line-height:1.5}.lesson-script-body h1{font-size:1.7em}.lesson-script-body h2{font-size:1.4em;border-bottom:2px solid #f0f0f0;padding-bottom:.2em}.lesson-script-body h3{font-size:1.2em}.lesson-script-body p{margin:.5em 0}.lesson-script-body ol,.lesson-script-body ul{margin:.5em 0;padding-left:1.6em}.lesson-script-body li{margin:.25em 0}.lesson-script-body blockquote{margin:.7em 0;padding:.5em 1em;border-left:4px solid #1668dc;background:#F5F8FF;color:#333;border-radius:0 6px 6px 0}.lesson-script-body img{max-width:100%;border-radius:6px;margin:.4em 0}.lesson-script-body table{border-collapse:collapse;margin:.7em 0;width:100%}.lesson-script-body td,.lesson-script-body th{border:1px solid #e0e0e0;padding:6px 10px}.lesson-script-body th{background:#fafafa;font-weight:600}.lesson-script-body pre{background:#f6f8fa;padding:10px 14px;border-radius:6px;overflow:auto;font-size:.92em}.lesson-script-body hr{border:0;border-top:1px solid #eee;margin:1.2em 0}