@charset "UTF-8";
:root{--ink:#18354c;--muted:#6e8292;--blue:#246aa6;--blue-deep:#195181;--line:#dce7ef;--bg:#f4f8fb;--white:#fff;--green:#228875;--radius:18px;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button,a,input,textarea,select{outline-offset:4px}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.6}button{border:0}button svg,a svg{flex-shrink:0}svg{display:block}h1,h2,h3,p{margin:0}h1{font-size:32px;letter-spacing:-1px;line-height:1.35}h2{font-size:22px}h3{font-size:17px}p{line-height:1.75}.muted{color:var(--muted)}.small{font-size:13px}.eyebrow{font-size:11px;letter-spacing:2px;color:var(--blue);font-weight:700}.skip{position:fixed;top:-60px;left:16px;background:white;padding:12px;z-index:100}.skip:focus{top:8px}
.topbar{height:80px;background:rgba(255,255,255,.95);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10;display:flex;align-items:center;padding:0 40px;justify-content:space-between;gap:20px}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:42px;height:42px;background:var(--blue);border-radius:13px;color:white;display:grid;place-items:center;font-size:23px;font-weight:600}.brand strong{display:block;font-size:20px;letter-spacing:2px}.brand small{display:block;font-size:9px;color:var(--muted);letter-spacing:2px;margin-top:3px}.topnav{display:flex;align-items:center;gap:26px;font-size:14px}.topnav .active{color:var(--blue);font-weight:650}.topnav .user-name{max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-divider{width:1px;height:18px;background:var(--line)}.btn{display:inline-flex;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:10px 18px;background:var(--blue);color:white;border-radius:10px;font-weight:550;font-size:14px;border:1px solid transparent;transition:background .15s,transform .15s}.btn:hover{background:var(--blue-deep)}.btn.secondary{background:white;color:var(--ink);border-color:var(--line)}.btn.secondary:hover{background:#edf4fa}.btn.quiet{background:transparent;color:var(--muted);padding:7px 10px;min-height:34px}.btn.quiet:hover{background:#eaf2f8;color:var(--blue)}.btn.danger{background:#fff3f3;color:#b44a4a;border-color:#f0d4d4}.btn.sm{padding:7px 12px;min-height:34px;font-size:12px}.row{display:flex;align-items:center;gap:12px}.row.between{justify-content:space-between}.wrap{flex-wrap:wrap}.stack{display:grid;gap:18px}.pill{display:inline-flex;align-items:center;gap:6px;border-radius:99px;padding:5px 10px;background:#eef3f7;color:var(--muted);font-size:11px;white-space:nowrap}.pill.live{background:#e4f5ee;color:#218570}.pill.draft{background:#fff2dc;color:#987320}.pill.offline{background:#f7e8e8;color:#a55454}.dot{height:5px;width:5px;background:currentColor;border-radius:50%}
.layout{max-width:1510px;margin:0 auto;display:grid;grid-template-columns:222px minmax(0,1fr);gap:42px;padding:36px 40px 64px}.sidebar{padding-top:5px}.side-label{font-size:11px;letter-spacing:1.5px;color:#94a5b2;margin:13px 14px 15px}.side-item{width:100%;display:flex;align-items:center;gap:11px;padding:14px;margin-bottom:5px;border-radius:12px;font-size:14px;color:#657e92;background:transparent;text-align:left}.side-item.active{color:var(--blue);background:#e5f0f9;font-weight:650}.side-item:hover{background:#eaf2f8}.side-item .count{margin-left:auto;font-size:11px;min-width:22px;text-align:center}.side-note{margin-top:42px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(135deg,#eff6fb,#fff);padding:18px;font-size:12px;line-height:1.9;color:var(--muted)}.side-note svg{color:#5586ab;margin-bottom:12px}.content{min-width:0}.welcome{background:linear-gradient(115deg,#e5f1fc,#f1f8fc 65%,#e5f6f5);border:1px solid #dbe8f2;border-radius:var(--radius);padding:27px 30px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:20px}.welcome h1{margin-top:9px;font-size:27px}.welcome p{margin-top:9px;font-size:13px;color:#70899c}.welcome-art{color:#7ea8c9;flex-shrink:0}.stats{display:flex;gap:28px;margin-top:23px;font-size:12px;color:var(--muted)}.stats strong{font-size:20px;color:var(--ink);margin-right:5px;font-weight:600}.section-title{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:32px 0 20px}.section-title p{margin-top:7px;font-size:12px;color:var(--muted)}.search{position:relative;width:270px}.search svg{position:absolute;left:13px;top:13px;color:#8ba0b1}.search input{padding-left:40px;background:white}.filters{display:flex;align-items:center;gap:8px;margin-bottom:23px;flex-wrap:wrap}.chip{padding:8px 13px;background:white;border:1px solid var(--line);border-radius:8px;color:var(--muted);font-size:12px}.chip.active{background:var(--blue);border-color:var(--blue);color:white}.result-count{margin-left:auto;color:var(--muted);font-size:12px}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:21px}.card{background:white;border:1px solid var(--line);border-radius:15px;overflow:hidden;transition:transform .2s,box-shadow .2s;display:flex;flex-direction:column}.card:hover{transform:translateY(-3px);box-shadow:0 10px 25px #18354c09}.cover{aspect-ratio:1.72;position:relative;display:grid;place-items:center;background:#edf4fa;overflow:hidden}.cover.astronomy{background:linear-gradient(135deg,#eaf2fa,#deebf6);color:#6d9dbf}.cover.weather{background:linear-gradient(135deg,#e9f6f5,#daeeef);color:#639f9c}.cover.landform{background:linear-gradient(135deg,#f4f2e8,#e9e9db);color:#a3a081}.cover:before{content:"";position:absolute;width:190px;height:190px;border:1px solid #ffffff8a;border-radius:50%;right:-40px;bottom:-80px}.cover:after{content:"";position:absolute;width:130px;height:130px;border:1px solid #ffffff99;border-radius:50%;left:-30px;top:-65px}.cover>svg{opacity:.85}.cover img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}.cover .number{position:absolute;left:16px;top:13px;font-size:12px;letter-spacing:1px;opacity:.8}.cover .cover-type{position:absolute;right:13px;bottom:13px;font-size:9px;letter-spacing:1.5px;opacity:.7}.card-body{padding:18px 19px;flex:1;display:flex;flex-direction:column;gap:13px}.card-body h3{font-weight:600;font-size:15px;line-height:1.6;min-height:48px}.card-bottom{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--muted);border-top:1px solid #edf2f6;padding-top:12px;margin-top:auto}.card-arrow{color:#6992b2;font-size:18px}.empty{padding:65px 20px;text-align:center;background:white;border:1px dashed var(--line);border-radius:16px;color:var(--muted)}.footer{padding:26px 40px;text-align:center;color:#95a6b3;font-size:11px;border-top:1px solid var(--line);letter-spacing:1px}.page{max-width:1140px;margin:0 auto;padding:35px 32px 70px}.back{display:inline-flex;gap:7px;align-items:center;color:var(--muted);font-size:13px;margin-bottom:24px}.detail-head{display:grid;grid-template-columns:1fr 1.12fr;gap:38px;background:white;border:1px solid var(--line);padding:28px;border-radius:20px}.detail-head .cover{border-radius:14px;aspect-ratio:1.4}.detail-head .cover>svg{width:140px;height:140px}.detail-head h1{font-size:28px;margin:16px 0}.detail-head .actions{margin-top:24px}.panel{background:white;border:1px solid var(--line);border-radius:16px;padding:25px}.panel h2{font-size:18px;margin-bottom:17px}.detail-panels{display:grid;grid-template-columns:1.15fr 1fr;gap:22px;margin-top:22px}.prose{white-space:pre-wrap;font-size:14px;line-height:1.9}.file-row{display:flex;align-items:center;gap:13px;padding:15px 0;border-bottom:1px solid #edf2f6}.file-row:last-child{border-bottom:0}.file-icon{height:38px;width:38px;background:#eaf3fa;border-radius:10px;color:var(--blue);display:grid;place-items:center;flex-shrink:0}.file-info{min-width:0;flex:1}.file-info strong{display:block;font-size:13px;word-break:break-all}.file-info small{display:block;margin-top:5px;color:var(--muted);font-size:11px}.notice{background:#eef5fb;border:1px solid #dceaf5;border-radius:10px;padding:12px 15px;color:#597a95;font-size:12px;line-height:1.8}.warning{background:#fff5e7;border-color:#f0dfc5;color:#997326}.auth-shell{max-width:980px;min-height:560px;margin:55px auto 80px;display:grid;grid-template-columns:.95fr 1.05fr;border:1px solid var(--line);border-radius:24px;overflow:hidden;background:white}.auth-art{background:linear-gradient(145deg,#dceefb,#e6f7f4);padding:45px;display:flex;flex-direction:column;justify-content:space-between}.auth-art h2{font-size:27px;line-height:1.55;margin:16px 0;color:#2f658e}.auth-art p{color:#6b8ba4;font-size:13px}.auth-art>svg{align-self:center;color:#729dba;margin:30px 0}.auth-form{padding:42px}.auth-form h1{font-size:25px;margin-bottom:9px}.auth-form>p{font-size:13px;color:var(--muted);margin-bottom:27px}label{display:grid;gap:8px;font-size:12px;color:#506e85}input,textarea,select{border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);width:100%;padding:11px 12px;min-width:0;font-size:13px}input:focus,textarea:focus,select:focus{border-color:#83afd1;outline:2px solid #d5e8f6}textarea{resize:vertical;line-height:1.65;min-height:90px}input::placeholder,textarea::placeholder{color:#a0b0bc}.form{display:grid;gap:17px}.form .btn{margin-top:3px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-error{color:#ad4d4d;font-size:12px;line-height:1.6;min-height:0}.form-foot{margin-top:24px;text-align:center;font-size:12px;color:var(--muted)}.form-foot a{color:var(--blue);font-weight:600}.boot{height:75vh;display:grid;place-content:center;justify-items:center;gap:18px;color:var(--muted)}.auth-note{font-size:11px;color:var(--muted);line-height:1.8}.page-heading{margin-bottom:24px}.page-heading p{font-size:13px;color:var(--muted);margin-top:9px}.admin-tabs{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px;background:white}table{width:100%;border-collapse:collapse;font-size:12px;text-align:left;white-space:nowrap}th{background:#eef5fa;font-weight:500;color:#7790a2;padding:14px 16px}td{padding:15px 16px;border-top:1px solid #edf2f6}td.title-cell{white-space:normal;min-width:230px;max-width:380px;font-weight:550;line-height:1.6}.table-wrap .btn{white-space:nowrap}.admin-top{margin-bottom:20px}.admin-stat{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:27px}.admin-stat .panel{padding:20px}.admin-stat strong{display:block;font-size:28px;margin-top:10px}.admin-stat p{font-size:12px;color:var(--muted)}.audit-item{font-size:12px;padding:12px 0;border-bottom:1px solid var(--line);display:flex;gap:16px;justify-content:space-between}.audit-item time{color:var(--muted);white-space:nowrap}.admin-intro{margin-bottom:18px}.generated-codes{min-height:130px;font-family:ui-monospace,monospace;font-size:12px}.upload-controls{display:grid;gap:13px;padding:18px;background:#f5f9fc;border:1px dashed #c7dce9;border-radius:12px;margin-top:20px}.upload-progress{width:100%;height:9px;border:0;border-radius:9px;accent-color:var(--blue)}.upload-state{font-size:12px;color:var(--blue)}.asset-actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}.history{opacity:.58}.badge-version{font-size:10px;color:var(--muted)}
dialog{border:1px solid var(--line);border-radius:20px;box-shadow:0 24px 100px #0c2c4940;padding:0;max-width:720px;width:calc(100% - 32px);max-height:90vh;color:var(--ink)}dialog::backdrop{background:#18354c70;backdrop-filter:blur(4px)}.modal-head{position:sticky;top:0;background:white;z-index:1;padding:22px 26px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.modal-head h2{font-size:20px}.modal-body{padding:25px 26px}.modal-head .close{background:#edf3f7;color:var(--muted);width:31px;height:31px;border-radius:50%;font-size:19px}.modal-section{margin-top:27px;padding-top:23px;border-top:1px solid var(--line)}.modal-section h3{margin-bottom:15px}.modal-footer{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}.viewer{max-width:1350px;width:calc(100% - 28px);height:90vh}.viewer .modal-body{padding:0;height:calc(100% - 76px)}.viewer iframe{width:100%;height:100%;border:0;background:white}.viewer-tip{font-size:11px;color:var(--muted);margin-left:auto;margin-right:18px}#toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%);z-index:100;background:#173b56;color:white;padding:13px 22px;border-radius:11px;font-size:13px;box-shadow:0 8px 35px #193e5830;max-width:90vw;display:none}#toast.visible{display:block}.danger-text{color:#b65151}.account{max-width:600px;margin:45px auto}.logged-name{display:flex;gap:10px;align-items:center}.avatar{width:32px;height:32px;border-radius:50%;background:#e2edf7;color:var(--blue);display:grid;place-items:center;font-size:13px}
@media(min-width:1600px){.grid{grid-template-columns:repeat(4,minmax(0,1fr))}.layout{max-width:1700px}}
@media(max-width:1150px){.layout{grid-template-columns:185px 1fr;gap:25px;padding:30px 25px}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar{padding:0 25px}.welcome-art{width:95px}.welcome h1{font-size:25px}.auth-shell{margin:40px 25px}.detail-head{gap:25px}}
@media(max-width:760px){.topbar{height:68px;padding:0 18px;gap:10px}.brand strong{font-size:17px}.brand small{font-size:8px;letter-spacing:1px}.brand-mark{width:36px;height:36px;font-size:20px}.topnav{gap:9px;font-size:12px}.topnav .nav-library,.topnav .nav-divider,.topnav .user-name{display:none}.topnav .btn{min-height:35px;padding:8px 11px;font-size:12px}.layout{display:block;padding:23px 18px 45px}.sidebar{display:none}.welcome{padding:22px}.welcome h1{font-size:23px}.welcome-art{display:none}.welcome p{font-size:12px}.stats{gap:20px}.stats strong{font-size:18px}.section-title{margin:26px 0 17px;flex-wrap:wrap;gap:16px}.section-title h2{font-size:21px}.search{width:100%}.grid{gap:13px}.card-body{padding:13px}.card-body h3{font-size:13px;min-height:42px}.card-bottom{font-size:10px}.cover{aspect-ratio:1.4}.cover>svg{width:67px;height:67px}.cover .number{left:11px;top:9px;font-size:10px}.cover .cover-type{font-size:7px;right:9px;bottom:9px}.filters{gap:6px}.chip{font-size:11px;padding:7px 9px}.result-count{width:100%;margin-top:5px}.footer{padding:20px;font-size:10px}.page{padding:25px 18px 50px}.detail-head{display:block;padding:18px}.detail-head .cover{aspect-ratio:1.7;margin-bottom:23px}.detail-head h1{font-size:23px}.detail-panels{grid-template-columns:1fr;gap:15px}.panel{padding:20px}.auth-shell{display:block;margin:25px 18px 50px;min-height:0}.auth-art{padding:25px}.auth-art h2{font-size:22px;margin:10px 0}.auth-art>svg{display:none}.auth-art .auth-note{display:none}.auth-form{padding:28px 23px}.form-grid{grid-template-columns:1fr}.admin-stat{gap:9px}.admin-stat .panel{padding:14px}.admin-stat strong{font-size:24px}.admin-top{gap:12px;flex-wrap:wrap}.admin-top .search{width:100%}.modal-head{padding:18px}.modal-body{padding:20px 18px}.modal-head h2{font-size:18px}.viewer-tip{display:none}.viewer{height:88vh}.viewer .modal-body{height:calc(100% - 69px)}.file-row{flex-wrap:wrap}.audit-item{flex-direction:column;gap:5px}.account{margin:20px 0}.auth-form .form-grid{grid-template-columns:1fr}.asset-actions .btn{font-size:11px}h1{font-size:26px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

.status-select{width:auto;max-width:130px;padding:7px 10px;font-size:12px;background:white}.actions{margin-top:18px}.asset-actions select{max-width:100%;font-size:11px;padding:7px}.grid .empty{grid-column:1/-1}.upload-controls .form-grid{align-items:start}
.subject-entrances{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0 18px;padding-bottom:18px;border-bottom:1px solid var(--line)}.theme-label{font-size:12px;color:var(--muted);margin-bottom:12px}.cover .cover-type{background:#ffffffdb;padding:5px 9px;border-radius:6px;letter-spacing:0;font-size:11px}.cover .number{background:#ffffffd0;padding:4px 7px;border-radius:5px}.sidebar .side-item{font-size:12px}.card-body .row .small{font-size:11px;line-height:1.6;max-width:75%}
.collection-switch{display:flex;gap:22px;border-bottom:1px solid var(--line);margin-top:24px}.collection-switch a{padding:12px 0;font-size:14px;color:var(--muted);border-bottom:3px solid transparent}.collection-switch a.active{color:var(--blue);border-color:var(--blue);font-weight:600}.topnav .nav-interactive{white-space:nowrap}@media(max-width:760px){.topnav .nav-interactive{display:none}.collection-switch{gap:18px}.collection-switch a{font-size:12px}}
.subject-entrances.hidden{display:none}
.bundle-links{grid-column:1/-1;padding:23px;background:#eaf3f9;border:1px solid var(--line);border-radius:14px}.bundle-links h3{font-size:15px}.bundle-links p{font-size:12px;color:var(--muted);margin:8px 0 14px}.bundle-links a{display:inline-flex;align-items:center;gap:8px;margin-right:24px;font-size:13px;color:var(--blue)}

/* 登录与注册共用海盐白、雾蓝和海青色，背景纹理不影响表单阅读。 */
.auth-page-active{--blue:#285e7b;--blue-deep:#204f69;background:#f0f5f7}
.auth-page-active .topbar{background:#f9fcfce8;border-color:#dbe7ea}
.auth-page-active .footer{background:#f0f5f7;border-color:#dbe7ea;color:#6a818a}
.auth-page{position:relative;isolation:isolate;padding:52px 24px 60px;min-height:calc(100vh - 149px);display:grid;align-items:center;background:radial-gradient(ellipse at 10% 18%,#dbeaf0 0,transparent 52%),radial-gradient(ellipse at 92% 90%,#e0ece8 0,transparent 48%),#f0f5f7;overflow:hidden}
.auth-page::before,.auth-page::after{content:"";position:absolute;z-index:-1;border:1px solid #b7cdd645;border-radius:50%;pointer-events:none}
.auth-page::before{width:760px;height:760px;left:-490px;top:5%;box-shadow:0 0 0 64px #b7cdd617,0 0 0 130px #b7cdd60e}
.auth-page::after{width:490px;height:490px;right:-300px;bottom:-190px;box-shadow:0 0 0 52px #b7cdd61a}
.auth-page .auth-shell{width:100%;max-width:1000px;min-height:572px;margin:0 auto;grid-template-columns:.95fr 1.05fr;border:1px solid #d2e1e5;border-radius:26px;background:#fcfdfc;box-shadow:0 20px 64px #254e6310,0 3px 12px #254e6305}
.auth-page .auth-art{position:relative;overflow:hidden;padding:44px 42px 36px;background:linear-gradient(150deg,#dcebf2 0%,#e4f0f0 65%,#e1ede9 100%);gap:18px}
.auth-page .auth-art::after{content:"";position:absolute;width:370px;height:370px;border:1px solid #ffffff7a;border-radius:50%;right:-238px;top:-220px;box-shadow:0 0 0 36px #ffffff1a;pointer-events:none}
.auth-page .auth-art .eyebrow{font-size:10px;letter-spacing:2.5px;color:#497987}
.auth-page .auth-art h2{font-size:32px;font-weight:600;letter-spacing:1px;line-height:1.55;margin:22px 0 17px;color:#234f63}
.auth-page .auth-art p{color:#4d7583;font-size:13px;line-height:1.9}
.auth-globe{align-self:center;width:min(100%,310px);color:#6d9aa8;margin:2px 0}
.auth-globe svg{width:100%;height:auto}
.auth-page .auth-art .auth-note{font-size:11px;border-top:1px solid #b8ced765;padding-top:20px;color:#587b86}
.auth-page .auth-form{padding:44px 44px 34px;align-self:center}
.auth-page .auth-form h1{font-size:29px;letter-spacing:.5px;font-weight:650;color:#1c394d;margin-bottom:12px}
.auth-page .auth-form>p{font-size:13px;color:#667e87;line-height:1.8;margin-bottom:30px}
.auth-page .form{gap:20px}
.auth-page label{font-size:12px;font-weight:550;color:#426271;gap:9px}
.auth-page input{min-height:48px;padding:12px 14px;border:1px solid #d4e2e6;border-radius:10px;background:#f4f8f9;color:#203f51;font-size:14px;transition:border-color .15s,background .15s,box-shadow .15s}
.auth-page input::placeholder{color:#7a919b}
.auth-page input:focus{background:#fff;border-color:#6796ab;outline:2px solid #b9d7e35c;outline-offset:3px;box-shadow:0 2px 8px #426a7a08}
.auth-page input:autofill{box-shadow:0 0 0 100px #edf4f7 inset}
.auth-page .form .btn{min-height:48px;border-radius:10px;background:#285e7b;font-size:14px;letter-spacing:2px;box-shadow:0 5px 14px #285e7b16;margin-top:2px}
.auth-page .form .btn:hover{background:#204f69}
.auth-page .form-error:empty{display:none}
.auth-page .auth-form .auth-note{font-size:11px;font-weight:400;color:#6b838d;letter-spacing:0}
.auth-page .auth-form .form-foot{font-size:12px;margin:27px 0 0;color:#6a828d}
.auth-page .form-foot a{color:#285e7b;margin-left:7px}
.auth-back{display:flex;justify-content:center;align-items:center;gap:5px;color:#607d89;font-size:11px;margin-top:21px}
.auth-back:hover{color:#285e7b}
@media(max-width:760px){
  .auth-page-active .topnav>a[href$="/login"]{display:none}
  .auth-page-active .topnav .btn{white-space:nowrap}
  .auth-page{padding:24px 16px 36px;min-height:calc(100vh - 128px)}
  .auth-page .auth-shell{display:block;min-height:0;border-radius:20px;max-width:470px}
  .auth-page .auth-art{padding:25px 27px 23px;gap:0}
  .auth-page .auth-art .eyebrow{font-size:9px;letter-spacing:2px}
  .auth-page .auth-art h2{font-size:24px;line-height:1.5;margin:12px 0 8px}
  .auth-page .auth-art p{font-size:12px;max-width:80%}
  .auth-globe{position:absolute;width:152px;right:-21px;bottom:-19px;opacity:.22;pointer-events:none}
  .auth-page .auth-art .auth-note{display:none}
  .auth-page .auth-form{padding:28px 26px}
  .auth-page .auth-form h1{font-size:25px}
  .auth-page .auth-form>p{font-size:12px;margin-bottom:24px}
  .auth-page .form{gap:18px}
  .auth-page .auth-form .form-foot{margin-top:24px}
}

/* 预览采用弹性高度，窄屏与全屏都给课件保留完整可用区域。 */
dialog.viewer{display:none;overflow:hidden}dialog.viewer[open]{display:flex;flex-direction:column}.viewer .modal-head{flex:none;gap:10px}.viewer .modal-head h2{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer .modal-body{flex:1;min-height:0;height:auto}.viewer-actions{display:flex;gap:8px;flex:none}.viewer .close{flex:none}.viewer.viewer-expanded,.viewer:fullscreen{position:fixed;inset:0;margin:0;width:100vw;height:100dvh;max-width:none;max-height:none;border:0;border-radius:0}.viewer-actions .btn{white-space:nowrap}@media(max-width:760px){.viewer .modal-head{flex-wrap:wrap;padding:10px 12px}.viewer .modal-head h2{flex:1;font-size:15px}.viewer-actions{order:3;width:100%;justify-content:flex-end}.viewer .modal-body{height:auto}}
/* 公开联系栏：允许窄屏换行，邮箱保留原生邮件链接。 */
.footer p{margin:0 0 12px}.contact-details{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 24px;margin:0;font-style:normal;font-size:13px;line-height:1.8;letter-spacing:0;color:#526e82}.contact-name{font-weight:650;color:#284e68}.contact-details a{color:#246aa6;overflow-wrap:anywhere}.contact-details a:hover{text-decoration:underline;text-underline-offset:3px}.contact-details a:focus-visible{outline:2px solid #246aa6;outline-offset:4px;border-radius:3px}.contact-wechat{user-select:all}@media(max-width:540px){.contact-details{column-gap:16px;row-gap:6px}.contact-name{flex-basis:100%}}
