/* 与已确认UI图一致：深蓝侧栏、浅灰工作区、蓝色主操作、细线表格。 */
:root{--nav:#14263e;--nav-deep:#0c2034;--blue:#1763f5;--blue-hover:#0d50d2;--text:#14243c;--muted:#75849a;--line:#e3eaf3;--bg:#f3f7fc;--red:#f04452;--radius:9px;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:var(--text);font-size:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg);line-height:1.6}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #8db8ff;outline-offset:3px}input:focus,select:focus{outline:0;border-color:var(--blue);box-shadow:0 0 0 3px #1763f512}h1,h2,h3,p{margin:0}h1{font-size:25px;line-height:1.3;font-weight:700;letter-spacing:-.5px}h2{font-size:19px;line-height:1.5}h3{font-size:16px}.icon{width:20px;height:20px;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;vertical-align:middle}.app-shell{display:flex;min-height:100vh}.sidebar{width:204px;min-height:100vh;background:linear-gradient(180deg,var(--nav),var(--nav-deep));color:#d3dfef;padding:23px 12px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:20}.brand{display:flex;align-items:center;gap:10px;padding:0 14px 26px;color:white;font-size:19px;font-weight:700;white-space:nowrap}.brand .icon{width:28px;height:28px;color:#51a1ff;stroke-width:2}.sidebar nav{display:grid;gap:9px}.nav-item{padding:12px 14px;border-radius:7px;display:flex;gap:12px;align-items:center;font-size:14px;transition:background .15s}.nav-item:hover{background:#ffffff0e}.nav-item.active{color:white;background:var(--blue);box-shadow:0 5px 15px #0057ee26}.sidebar-bottom{margin-top:auto;padding-top:32px}.sidebar-foot{font-size:12px;color:#7d91ab;text-align:center;margin-top:12px}.workspace{margin-left:204px;min-width:0;width:calc(100% - 204px)}.topbar{height:65px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px}.breadcrumb{display:flex;align-items:center;gap:15px;font-size:14px;color:var(--muted)}.breadcrumb a{color:#567399}.user-menu{display:flex;align-items:center;gap:10px;font-size:14px}.user-menu form{display:flex}.avatar{display:grid;place-items:center;background:#eaf3ff;color:#2473dc;width:30px;height:30px;border-radius:50%}.avatar .icon{width:17px;height:17px}.icon-button{background:transparent;border:0;color:var(--muted);padding:6px;display:inline-flex;align-items:center;justify-content:center;border-radius:5px}.icon-button:hover{background:#f0f5fc;color:var(--blue)}.mobile-menu{display:none}.main-content{padding:27px 30px 40px;max-width:1800px;margin:auto}.page-heading{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:24px}.heading-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:8px 17px;border:1px solid #d6e1ef;background:white;border-radius:6px;color:#344762;font-size:14px;font-weight:500;white-space:nowrap;transition:background .15s,box-shadow .15s}.btn:hover{background:#f1f6fd}.btn .icon{width:17px;height:17px}.btn-primary{background:var(--blue);border-color:var(--blue);color:white;box-shadow:0 3px 6px #1763f517}.btn-primary:hover{background:var(--blue-hover);border-color:var(--blue-hover)}.btn-outline{color:var(--blue);border-color:#b9d0ff;background:#f8fbff}.btn-small{min-height:30px;padding:4px 10px;font-size:14px}.btn-danger-soft{color:#f34857;border-color:#ffd3d8;background:#fff2f4}.btn-danger{background:var(--red);border-color:var(--red);color:white}.btn-danger:hover{background:#df2d40}.full{width:100%}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:24px}.stat-card{background:white;border:1px solid var(--line);border-radius:var(--radius);display:flex;align-items:center;gap:20px;padding:20px 24px}.stat-icon{display:grid;place-items:center;width:50px;height:50px;border-radius:50%;background:#eef5ff;color:var(--blue)}.stat-icon .icon{width:27px;height:27px}.stat-card>div{display:grid;gap:3px;font-size:14px}.stat-card strong{font-size:29px;line-height:1.15}.panel{background:white;border:1px solid var(--line);border-radius:var(--radius);margin-bottom:20px;overflow:hidden}.toolbar{display:flex;align-items:center;gap:12px;padding:20px;flex-wrap:wrap}.input-icon{position:relative}.input-icon>.icon{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:#8294af;width:18px;height:18px;pointer-events:none}.input-icon input{padding-left:40px;width:100%}.search{width:300px;max-width:100%}.search input{font-size:14px}input:not([type=radio]):not([type=file]),select{width:100%;height:42px;border:1px solid #d5dfec;border-radius:5px;background:white;color:var(--text);padding:8px 12px;min-width:0;font-size:14px}input::placeholder{color:#8e9cb0}.input-icon input:not([type=file]){padding-left:40px}input[type=radio]{accent-color:var(--blue);width:16px;height:16px;margin:0}.table-wrap{width:100%;overflow:auto;padding:0 20px}table{width:100%;border-collapse:collapse;text-align:left;font-size:14px}thead{background:#f0f5fb;color:#354863}th{font-weight:500;padding:13px 14px;white-space:nowrap;border:1px solid var(--line)}td{padding:15px 14px;border-bottom:1px solid var(--line);vertical-align:middle}td small{display:block;color:var(--muted);font-size:12px;margin-top:3px}.group-row td{background:#f9fbfe;padding:12px 14px}.group-row .icon{color:var(--blue);margin-right:9px;width:18px;height:18px}.group-row strong{font-weight:500}.file-name{max-width:220px}.file-name>span{display:inline-block;vertical-align:middle;max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-name .icon{width:16px;height:16px;color:#8ba4c8;margin-right:7px}.row-actions{display:flex;gap:9px;align-items:center;white-space:nowrap}.row-actions form{margin:0}.badge{display:inline-flex;align-items:center;justify-content:center;font-size:13px;border-radius:5px;padding:3px 9px;white-space:nowrap;font-weight:500}.badge.green{color:#118741;background:#e9f9ef}.badge.red{color:#ef4655;background:#ffedf0}.badge.blue{color:#2365db;background:#edf4ff}.badge.amber{color:#dc8109;background:#fff5e4}.badge.gray{color:#7b879b;background:#f0f3f8}.secondary,.muted{color:var(--muted)}.nowrap{white-space:nowrap}.text-link{background:none;border:0;padding:0;color:var(--blue);font-size:14px}.danger-text{color:var(--red)}.pagination{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:18px 20px;color:var(--muted);font-size:13px}.pagination>div{display:flex;gap:8px}.disabled{opacity:.45;cursor:default}.empty-state{text-align:center;padding:60px 20px;color:var(--muted)}.empty-state>.icon{width:40px;height:40px;color:#b5c8e1;margin-bottom:14px}.empty-state h3{color:#526780;margin-bottom:7px}.empty-state p{font-size:14px;margin-bottom:20px}.notice{padding:12px 14px;border-radius:6px;display:flex;align-items:flex-start;gap:9px;font-size:14px;line-height:1.65;margin-bottom:18px}.notice .icon{margin-top:2px;width:17px;height:17px}.notice.blue{background:#edf4ff;color:#587396}.notice.blue>.icon{color:#3678ed}.notice.red{background:#fff0f2;color:#e84958}.notice.green{background:#eaf9ef;color:#268c4c}.notice.amber{background:#fff3e6;color:#d68625}.modal{border:1px solid #e1e8f1;border-radius:10px;box-shadow:0 24px 80px #132b4640;padding:0;width:570px;max-width:calc(100% - 32px);max-height:90vh;color:var(--text);background:white;overflow:auto}.modal::backdrop{background:rgba(18,35,54,.48)}.modal-small{width:490px}.modal-heading{display:flex;align-items:center;justify-content:space-between;padding:21px 25px 12px;gap:16px}.modal-heading h2{font-size:18px}.modal-heading h2 .icon{margin-right:8px}.modal-body{padding:20px 25px}.form-row{display:grid;grid-template-columns:108px 1fr;gap:14px;align-items:start;margin-bottom:23px;font-size:14px}.form-row>span{padding-top:9px;color:#455872}.form-row input,.form-row select{height:42px}.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:9px 25px 23px}.field-help{color:var(--muted);font-size:13px;display:block;margin-top:8px;line-height:1.6}.upload-zone{border:1px dashed #b9d1ff;background:#fafcff;border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:150px;gap:8px;padding:20px;cursor:pointer;text-align:center;position:relative}.upload-zone>.icon{color:var(--blue);height:35px;width:35px;margin-bottom:5px}.upload-zone strong{font-size:14px;color:#28558e}.upload-zone>span{font-size:13px;color:var(--muted)}.upload-zone input[type=file]{position:absolute;opacity:0;width:100%;height:100%;inset:0;cursor:pointer}.upload-zone.dragover{border-color:var(--blue);background:#edf4ff}.upload-file{margin-top:15px;border:1px solid var(--line);border-radius:5px;display:flex;align-items:center;gap:9px;padding:12px;font-size:13px}.upload-file .icon{color:var(--blue)}#upload-name{overflow-wrap:anywhere;flex:1}.upload-progress{display:flex;gap:8px;align-items:center;margin-top:12px;font-size:13px;color:var(--muted)}progress{width:100%;height:7px;border:0;border-radius:10px;overflow:hidden;background:#e1e9f4}progress::-webkit-progress-bar{background:#e1e9f4;border-radius:10px}progress::-webkit-progress-value{background:var(--blue);border-radius:10px}progress::-moz-progress-bar{background:var(--blue)}.form-error{font-size:14px;color:var(--red);margin-top:10px}.filter-chips{display:flex;gap:8px;flex-wrap:wrap}.chip{padding:7px 13px;border:1px solid var(--line);border-radius:6px;background:#f1f5fb;font-size:14px}.chip.selected{background:var(--blue);color:white;border-color:var(--blue)}.codes-toolbar{gap:10px}.codes-table{min-width:1080px}.code-copy{display:flex;align-items:center;gap:7px;border:0;background:transparent;padding:0;color:var(--text);font:13px ui-monospace,SFMono-Regular,Consolas,monospace;white-space:nowrap}.code-copy .icon{width:14px;height:14px;color:#8ba3c4;opacity:0}.code-copy:hover .icon{opacity:1}.code-text{font:13px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:nowrap}.batch-meta a{color:var(--blue)}.remark-cell{min-width:110px;max-width:190px;overflow-wrap:anywhere}.expiry-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-height:42px}.expiry-controls label{display:flex;align-items:center;gap:6px}.expiry-controls input[type=number]{width:75px}.expiry-controls label:last-child{margin-left:auto}.batch-summary{display:flex;align-items:center;gap:18px;padding:24px}.success-circle{background:#39b659;color:white;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;flex-shrink:0}.success-circle .icon{width:26px;height:26px}.summary-text{flex:1;min-width:0}.summary-text p{font-size:14px;color:#667a94;margin-top:6px}.summary-text small{color:var(--muted);font-size:13px}.share-preview{background:#e9f2ff;border:1px solid #dbe9ff;border-radius:8px;padding:22px 25px;margin-top:20px}.share-preview h3{margin-bottom:14px}.share-preview p{margin:5px 0;font-size:14px}.link-text{color:var(--blue);overflow-wrap:anywhere}.mini-stat{display:flex;gap:10px;align-items:center;background:white;border:1px solid var(--line);border-radius:7px;padding:9px 15px;font-size:14px}.mini-stat>.icon{color:#28a94c}.mini-stat strong{margin-left:8px}.tabs{display:flex;gap:20px;border-bottom:1px solid var(--line);margin-bottom:20px}.tabs a{padding:9px 4px;color:var(--muted);font-size:14px}.tabs a.selected{color:var(--blue);border-bottom:2px solid var(--blue)}.records-toolbar{align-items:flex-end}.records-toolbar label{display:grid;gap:7px;font-size:13px;min-width:130px;flex:1}.records-toolbar label>span{color:#455872}.records-toolbar input,.records-toolbar select{height:39px}.disclosure .icon{width:16px;height:16px;transition:transform .15s}.disclosure[aria-expanded=true] .icon{transform:rotate(90deg)}.detail-row{background:#f6f9fe}.task-details{display:grid;grid-template-columns:1fr 1.4fr;gap:24px;padding:13px 7px}.task-details p{font-size:14px;margin-top:7px;color:#61738c}.attempt-list{padding:0 0 0 20px;color:#536c8a;font-size:14px}.attempt-list li{padding:5px 0}.attempt-list span,.attempt-list small{display:block}.panel-description{padding:20px;color:var(--muted);font-size:13px}.admin-name{display:flex;align-items:center;gap:9px}.admin-name .icon{color:#849dbd;width:17px;height:17px}.confirm-message{font-size:15px;line-height:1.8;overflow-wrap:anywhere}.public-workspace{margin-left:204px;width:calc(100% - 204px);min-height:100vh;background:radial-gradient(ellipse at 45% 25%,#f5f9fe 0%,#e8f0f8 65%,#e4edf6 100%)}.public-main{min-height:100vh;display:flex;justify-content:center;align-items:center;padding:45px 24px}.public-wrap{width:470px;max-width:100%}.download-card{background:white;box-shadow:0 12px 40px #1d426c08;border:1px solid #e8eef6;border-radius:10px;padding:32px 35px}.entry-card{text-align:center;padding:37px 35px 30px}.feature-icon{height:68px;width:68px;display:grid;place-items:center;margin:0 auto 20px;background:#edf4ff;color:var(--blue);border-radius:50%}.feature-icon .icon{width:38px;height:38px;stroke-width:2}.feature-icon.danger{color:var(--red);background:#fff0f2}.download-card h1{font-size:24px}.entry-card h1{margin-bottom:26px}.stack-form{display:grid;gap:17px}.stack-form input:not([type=radio]){height:46px;font-size:15px}.stack-form .btn{height:46px;font-size:16px}.entry-helper{color:#7a8ba3;font-size:14px;margin-top:23px}.detail-card h1{font-size:21px;margin-bottom:22px}.software-hero{display:flex;gap:20px;align-items:center;margin-bottom:24px}.software-icon{width:83px;height:83px;border:8px solid #eef4ff;border-radius:19px;background:linear-gradient(145deg,#4894ff,#1359f3);color:white;display:grid;place-items:center;flex-shrink:0}.software-icon .icon{width:43px;height:43px;stroke-width:2}.software-hero h2{font-size:20px;margin-bottom:4px;overflow-wrap:anywhere}.software-hero p{font-size:14px;color:var(--muted);margin:2px 0}.download-meta{margin:0 0 14px}.download-meta>div{display:flex;align-items:center;gap:14px;justify-content:space-between;border-top:1px solid var(--line);padding:13px 0;font-size:14px}.download-meta dt{display:flex;align-items:center;gap:10px;color:#465975;white-space:nowrap}.download-meta dd{margin:0;text-align:right;font-size:14px}.download-meta dd strong{font-size:24px;margin-right:4px}.usage-line{font-size:13px;color:var(--muted);margin-bottom:18px}.download-button{min-height:46px;font-size:16px}.download-secondary{margin-top:12px;display:grid;grid-template-columns:1fr 1.2fr;gap:8px}.download-secondary .btn{font-size:13px;padding:8px}.download-help{margin:18px 0 0;font-size:13px;padding:10px 12px}.login-card{padding:35px}.login-brand{display:flex;gap:10px;align-items:center;justify-content:center;margin-bottom:27px;font-size:19px}.login-brand>.icon{color:#348bff;width:30px;height:30px}.login-card h1{text-align:center;margin-bottom:27px}.password-eye{position:absolute;right:8px;top:9px}.input-icon input[type=password]{padding-right:43px}.public-mobile-header{display:none}.toast{position:fixed;left:50%;bottom:30px;transform:translate(-50%,15px);padding:12px 22px;border-radius:7px;background:#14263e;color:white;font-size:14px;box-shadow:0 8px 26px #14263e30;z-index:100;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;max-width:90%;text-align:center}.toast.visible{opacity:1;transform:translate(-50%,0)}.error-page{text-align:center;background:white;border:1px solid var(--line);padding:40px;border-radius:10px}.error-page h1{font-size:21px}.error-page p{color:var(--muted);margin:17px 0 25px}.hidden{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#download-feedback{font-size:13px;margin-top:12px}.notice strong{font-weight:600}
@media(min-width:1600px){.main-content{padding:35px 42px}.sidebar{width:220px}.workspace,.public-workspace{margin-left:220px;width:calc(100% - 220px)}.stat-card{padding:25px 28px}}
@media(max-width:1100px){.sidebar{width:180px}.brand{font-size:17px;padding-left:8px}.nav-item{padding:11px 10px;gap:9px}.workspace,.public-workspace{margin-left:180px;width:calc(100% - 180px)}.main-content{padding:23px 20px}.topbar{padding:0 20px}.stat-card{padding:17px 18px;gap:12px}.batch-summary{flex-wrap:wrap}.batch-summary .heading-actions{margin-left:62px}.table-wrap{padding:0 14px}.toolbar{padding:16px}.stats-grid{gap:12px}.form-row{grid-template-columns:100px 1fr}}
@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:transform .2s;width:204px;box-shadow:10px 0 50px #16263822}.sidebar.open{transform:translateX(0)}.workspace,.public-workspace{margin-left:0;width:100%}.mobile-menu{display:inline-flex}.topbar{height:58px;padding:0 15px}.breadcrumb{gap:10px;font-size:13px}.main-content{padding:22px 15px}.page-heading{margin-bottom:20px;gap:12px;align-items:flex-start}h1{font-size:22px}.heading-actions{gap:7px}.heading-actions .btn{padding:8px 11px}.stats-grid{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:18px}.stat-card{display:block;padding:13px 10px}.stat-icon{width:30px;height:30px;margin-bottom:9px}.stat-icon .icon{width:19px;height:19px}.stat-card>div{font-size:12px}.stat-card strong{font-size:24px}.toolbar{padding:15px;gap:9px}.search{flex:1;min-width:150px}.filter-chips{width:100%;gap:6px}.chip{padding:6px 10px;font-size:13px}.table-wrap{padding:0 12px}table{min-width:650px}td,th{padding:12px 10px}.pagination{padding:14px 12px;font-size:12px}.pagination .btn{font-size:12px}.public-mobile-header{display:flex;align-items:center;justify-content:space-between;background:white;padding:14px 18px;border-bottom:1px solid var(--line)}.public-mobile-header .brand{padding:0;color:var(--text);font-size:18px}.public-main{min-height:calc(100vh - 60px);padding:30px 16px;align-items:flex-start}.public-wrap{width:440px}.download-card{padding:27px 23px}.entry-card{margin-top:50px;padding-top:32px}.login-card{margin-top:45px}.download-meta dt,.download-meta dd{font-size:13px}.software-hero{gap:15px}.software-hero h2{font-size:19px}.software-icon{width:75px;height:75px}.modal-heading{padding:19px 20px 10px}.modal-body{padding:17px 20px}.modal-footer{padding:8px 20px 20px}.form-row{grid-template-columns:1fr;gap:7px;margin-bottom:18px}.form-row>span{padding-top:0}.expiry-controls label:last-child{margin-left:15px}.batch-summary{padding:20px;gap:13px}.batch-summary .heading-actions{margin-left:0;width:100%}.summary-text{flex-basis:calc(100% - 58px)}.task-details{grid-template-columns:1fr}.records-toolbar label{flex-basis:45%;min-width:120px}.mini-stat{font-size:12px;padding:7px 10px}.share-preview{padding:18px}.user-menu{gap:7px}.notice{font-size:13px}.download-meta>div{gap:9px}.software-hero p{font-size:13px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}


/* 独立后台登录与本人密码修改页 */
.auth-body{background:radial-gradient(ellipse at 35% 20%,#edf4ff,#f3f7fc 65%)}
.auth-main{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:35px 20px}
.auth-wrap{width:440px;max-width:100%}
.auth-body .login-card{margin-top:0;border-radius:14px;box-shadow:0 15px 50px #1c446410}
.password-entry{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid #e1e9f5;border-radius:6px;color:#617799;font-size:13px;margin-left:3px}
.password-entry:hover{border-color:#b9d0ff;color:var(--blue);background:#f5f9ff}
.password-entry .icon{width:15px;height:15px}
.page-description{font-size:14px;color:var(--muted);margin-top:9px}
.password-panel{max-width:740px}
.password-panel-header{display:flex;align-items:center;gap:15px;padding:25px 30px;border-bottom:1px solid var(--line);background:#fbfdff}
.password-panel-header .stat-icon{height:45px;width:45px;border-radius:12px}
.password-panel-header .icon{width:23px;height:23px}
.password-panel-header h2{font-size:18px}
.password-panel-header p{font-size:13px;color:var(--muted);margin-top:3px}
.own-password-form{padding:30px;max-width:650px}
.own-password-form .form-row{grid-template-columns:110px 1fr;margin-bottom:23px}
.password-form-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}
@media(max-width:760px){.password-panel-header{padding:20px}.own-password-form{padding:22px 20px}.own-password-form .form-row{grid-template-columns:1fr;gap:8px}.password-entry{padding:5px 7px;margin:0;font-size:12px}.user-menu .admin-username{display:none}.topbar .breadcrumb{gap:7px}.topbar{padding-inline:12px}.auth-body .login-card{padding:30px 25px}}
