:root{--nav:#222d32;--nav-active:#f39c12;--page:#f1f5f8;--line:#e5e8eb;--blue:#168bd1;--red:#ed5b4f;--ink:#333;--modal:#30465c;--control:#4c526d;font:14px/1.5 "Microsoft YaHei","PingFang SC",Arial,sans-serif;color:var(--ink)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--page)}button,input,select{font:inherit}button{cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.app-shell{min-height:100vh;padding:48px 0 0 210px}.sidebar{position:fixed;inset:0 auto 0 0;width:210px;background:var(--nav);color:#c9d2d6;z-index:20}.administrator{height:48px;padding:9px 0;text-align:center;color:#fff;font-size:19px;border-bottom:1px solid #1b2529}.sidebar a{display:flex;gap:8px;align-items:center;height:54px;padding:0 20px;color:#d2dcdf;text-decoration:none}.sidebar a:hover,.sidebar a.active{background:var(--nav-active);color:#fff}.nav-icon{width:16px;text-align:center}.topbar{position:fixed;top:0;right:0;left:210px;height:48px;background:#fff;display:flex;align-items:center;padding:0 16px;font-size:18px;border-bottom:1px solid #edf0f2;z-index:15}.topbar-right{margin-left:auto;display:flex;gap:18px;align-items:center;font-size:13px}.topbar-right button{border:0;background:none;color:#607080}.nav-toggle{display:none;border:0;background:none;font-size:21px}.content{padding:14px 16px}.data-card{min-height:286px;padding:20px 13px;background:#fff;border:1px solid #e7eaec;border-radius:2px}.toolbar{display:flex;gap:5px;margin-bottom:9px}.btn{border:0;border-radius:2px;padding:6px 10px;color:#fff}.btn:disabled{opacity:.55;cursor:wait}.btn-dark,.btn-confirm{background:var(--control)}.btn-primary{background:var(--blue)}.btn-danger{background:var(--red)}.btn-light{background:#fff;color:#444;border:1px solid #d7d7d7}.table-scroll{overflow:auto}table{width:100%;min-width:820px;border-collapse:collapse;text-align:center}th,td{border:1px solid var(--line);padding:8px 10px;height:42px;white-space:nowrap}th{background:#fff;font-weight:600}tbody tr:nth-child(even){background:#fafafa}.row-actions{display:flex;justify-content:center;gap:5px}.row-actions button{width:25px;height:24px;padding:0;color:#fff;border:0;border-radius:2px}.empty,.loading{padding:44px 20px;color:#89949c}.file-link{border:0;background:none;color:#dc7d88;text-decoration:none}.list-footer{display:flex;justify-content:space-between;align-items:center;margin-top:12px}.pager{display:flex;gap:8px;align-items:center}.pager button,.pager select{border:1px solid #d4d9dd;background:#fff;padding:4px 8px;border-radius:2px}.notice{padding:9px 12px;margin:0 0 12px;border-radius:2px}.notice-error{color:#a94442;background:#f2dede;border:1px solid #ebccd1}
.modal-backdrop{position:fixed;z-index:100;inset:0;background:rgba(20,29,36,.3);display:flex;align-items:center;justify-content:center;padding:24px 16px}.modal-backdrop[hidden]{display:none}.modal{width:720px;max-width:100%;max-height:calc(100vh - 48px);background:#fff;box-shadow:0 14px 45px rgba(21,34,44,.25);display:flex;flex-direction:column}.modal-small{width:560px}.modal-header{height:42px;flex:0 0 42px;background:var(--modal);color:#fff;display:flex;align-items:center;padding:0 14px}.modal-header h2{font-size:14px;font-weight:400;margin:0}.modal-header button{margin-left:auto;color:#fff;background:none;border:0;font-size:22px}.modal form{display:flex;min-height:0;flex:1;flex-direction:column}.modal-body{padding:15px 52px;overflow:auto}.form-row{display:grid;grid-template-columns:72px 1fr;gap:12px;margin-bottom:14px;align-items:start}.form-row>label{text-align:right;padding-top:7px}.required::after{content:"*";color:#d94b43;margin-left:3px}.form-control{width:100%;height:31px;padding:4px 9px;border:1px solid #cfd4d7;background:#fff}.form-control:focus{outline:2px solid rgba(22,139,209,.18);border-color:#168bd1}.form-control[readonly]{background:#f1f2f3}.field-error{grid-column:2;color:#cf4c43;font-size:12px;margin-top:-8px}.modal-footer{flex:0 0 50px;padding:10px 130px;background:#edf1f2;display:flex;gap:5px}.file-control{display:flex;gap:5px;align-items:center}.file-summary{min-width:0;flex:1;height:31px;border:1px solid #cfd4d7;padding:5px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-control input[type=file]{display:none}.file-control .upload{background:#eb695c}.file-control .choose{background:#4c526d}.file-control .remove{color:#c8453c;background:none;border:0;padding:3px}.file-library{padding:14px}.file-library button{width:100%;display:flex;justify-content:space-between;padding:10px;background:#fff;border:0;border-bottom:1px solid var(--line)}.toast-region{position:fixed;z-index:200;right:20px;bottom:20px}.toast{margin-top:8px;padding:10px 15px;color:#fff;background:#34495e;box-shadow:0 3px 12px #0003}.toast.error{background:#c94c43}
.login-page{overflow:hidden;background:#102332}.login-stage{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;background:#233d51 url('/assets/login-bg.png') center/cover no-repeat}.silhouette{display:none}.login-card{position:relative;width:362px;padding:27px 24px 46px;background:#fff;border-radius:10px;box-shadow:0 1px 5px #0002}.login-card h1{text-align:center;font-size:18px;font-weight:400;margin:0 0 20px}.login-control{height:37px;border:1px solid #ccc;display:flex;margin-bottom:12px}.login-control span{width:34px;border-right:1px solid #ccc;display:flex;align-items:center;justify-content:center;color:#5e6467}.login-control input{border:0;padding:0 10px;min-width:0;flex:1;outline:none}.captcha-row{display:flex}.captcha-row .login-control{flex:1;min-width:0}.captcha-row button{flex:0 0 118px;width:118px;height:37px;padding:0;border:0;background:#f0f0f0}.captcha-row img{display:block;width:100%;height:100%;object-fit:contain}.remember{display:block;color:#999;margin:3px 0 18px}.login-submit{width:100%;height:39px;border:0;border-radius:3px;color:#fff;background:#6d8fe2;font-size:15px}
@media(max-width:720px){.app-shell{padding-left:0}.sidebar{transform:translateX(-100%);transition:transform .2s}.app-shell.nav-open .sidebar{transform:none}.topbar{left:0}.nav-toggle{display:block;margin-right:8px}.topbar-right span:first-child{display:none}.content{padding:10px}.data-card{padding:12px 9px}.modal-body{padding:15px}.modal-footer{padding:10px 16px}.list-footer{align-items:flex-start;gap:10px;flex-direction:column}.login-card{width:calc(100vw - 32px)}}
