@import url('/assets/fonts/font-face.css');
[hidden]{display:none!important}
.form-grid>.full{grid-column:1/-1}
:root{--bg:#f5f7f8;--paper:#fff;--primary:#1f6070;--accent:#39afa3;--ink:#20252a;--muted:#6c7880;--line:#e5eaed;--danger:#a63939;--sidebar:240px;font:14px/1.6 "Engao Sans SC","Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg)}
*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #39afa378;outline-offset:2px}a{color:var(--primary)}button{background:#fff;border:1px solid #cdd8dc;border-radius:5px;padding:7px 13px;color:var(--ink)}button:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}button.primary{background:var(--primary);border-color:var(--primary);color:#fff}button.danger{color:var(--danger);border-color:#e3c9c9}button.text{border:none;background:none;padding:4px 8px}h1,h2,h3,p{margin-top:0}h1{font-size:26px;line-height:1.4;font-weight:600;margin-bottom:8px}h2{font-size:19px;font-weight:600}h3{font-size:15px;font-weight:600}small,.muted{color:var(--muted)}.muted{margin-bottom:14px}.shell{min-height:100vh}.sidebar{width:var(--sidebar);position:fixed;inset:0 auto 0 0;background:#fff;border-right:1px solid var(--line);padding:25px 18px;overflow:auto;z-index:10}.brand{display:flex;gap:10px;align-items:center;border-bottom:1px solid var(--line);padding:0 7px 22px;margin-bottom:20px}.brand img{width:80px;height:45px;object-fit:contain}.brand strong{font-size:16px;display:block}.brand small{display:block;font-size:11px}.nav{display:grid;gap:5px}.nav button{text-align:left;border:none;padding:10px 14px;color:#63727b;background:none;display:flex;gap:12px;align-items:center}.nav button.active{background:#eaf4f3;color:var(--primary);font-weight:600}.nav-icon{width:19px;text-align:center;color:var(--primary)}.sidebar-foot{margin-top:28px;padding:16px 8px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}.main{margin-left:var(--sidebar);padding:30px 40px 60px;max-width:1800px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:36px;gap:16px;border-bottom:1px solid var(--line);padding-bottom:18px}.topbar span{color:var(--muted)}.mobile-menu{display:none}.heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px}.panel{background:#fff;border:1px solid var(--line);border-radius:7px;padding:24px;margin-bottom:22px}.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:18px}.toolbar input{max-width:270px}.toolbar .spacer{flex:1}.table-wrap{overflow-x:auto;width:100%}table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}th{color:#52606a;font-weight:500;background:#f8fafb;white-space:nowrap}td{min-width:80px}td.actions{white-space:nowrap;min-width:140px}td.title-cell{min-width:200px;max-width:380px;word-break:break-word}tr:last-child td{border-bottom:0}.empty{text-align:center;padding:46px 20px;color:var(--muted)}.error{background:#fff1f0;border:1px solid #e3b6b3;color:#9c2e2e;padding:12px 15px;border-radius:5px;white-space:pre-line}.notice{background:#edf6f5;color:var(--primary);border-left:3px solid var(--accent);padding:12px 15px;margin-bottom:20px}.badge{display:inline-block;font-size:12px;line-height:1.5;padding:3px 8px;border-radius:4px;background:#eef1f3;color:#52606a;white-space:nowrap}.badge.good{background:#e8f5ef;color:#247149}.badge.wait{background:#fff3dc;color:#98651a}.badge.bad{background:#fbeaea;color:#a54040}.stats{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:18px;margin-bottom:26px}.stat{background:#fff;border-bottom:3px solid var(--accent);padding:23px;border-radius:6px;box-shadow:0 1px 0 #dce5e7}.stat .value{font-size:32px;font-weight:500;font-variant-numeric:tabular-nums;color:var(--primary);display:block}.stat .label{color:var(--muted)}.dashboard-intro{border-left:4px solid var(--primary);padding:0 0 0 20px;margin-bottom:30px}.login{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}.login-intro{background:var(--primary);color:#fff;padding:70px max(40px,10vw);display:flex;flex-direction:column;justify-content:center}.login-intro img{width:155px;background:#fff;padding:18px;margin-bottom:54px}.login-intro h1{font-size:37px;font-weight:500;line-height:1.5}.login-intro p{opacity:.8}.login-form-wrap{padding:50px;display:flex;align-items:center;justify-content:center}.login-form{width:360px}.login-form h2{font-size:25px;margin-bottom:28px}.login-form .primary{width:100%;padding:11px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px 20px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:17px}.field label{font-weight:500}.field small{font-size:12px}.field input,.field select,.field textarea,.toolbar input,.toolbar select{width:100%;border:1px solid #cdd8dc;border-radius:4px;background:#fff;padding:9px 11px;color:var(--ink)}.field textarea{min-height:110px;resize:vertical}.field textarea.long{min-height:220px}.field.full{grid-column:1/-1}.field input[type=checkbox]{width:auto}.field-error{color:var(--danger);font-size:12px}.check-line{display:flex;align-items:center;gap:8px}.check-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.check-grid label{font-weight:400}.section-line{border:0;border-top:1px solid var(--line);margin:25px 0}.dialog{border:none;border-radius:8px;padding:0;width:min(860px,calc(100vw - 36px));max-height:91vh;box-shadow:0 15px 70px #152c3e38}.dialog::backdrop{background:#0f263b6b}.dialog-head{position:sticky;top:0;background:#fff;padding:21px 26px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;z-index:1}.dialog-head h2{margin:0}.dialog-body{padding:25px 26px}.dialog-foot{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:10px;background:#fff;padding:17px 26px;border-top:1px solid var(--line);z-index:1}.dialog .error{margin-bottom:17px}.records{margin:0;display:grid;grid-template-columns:125px 1fr;gap:8px 18px}.records dt{color:var(--muted)}.records dd{margin:0;overflow-wrap:anywhere;white-space:pre-line}.preview-img{height:60px;width:92px;object-fit:cover;border:1px solid var(--line)}.dynamic-table{margin-bottom:20px}.dynamic-table input,.dynamic-table select{width:100%;min-width:85px;border:1px solid #cdd8dc;border-radius:4px;padding:8px}.dynamic-table input[type=number]{min-width:100px}.dynamic-table .table-wrap{border:1px solid var(--line);border-radius:5px}.dynamic-table table{min-width:450px}.dynamic-table td{padding:8px}.dynamic-table .table-head{display:flex;align-items:center;justify-content:space-between;margin:14px 0 10px}.dynamic-table h3{margin:0}.notifications{position:fixed;right:24px;bottom:24px;display:grid;gap:10px;z-index:100}.toast{background:var(--primary);color:#fff;padding:12px 18px;border-radius:5px;max-width:min(440px,85vw);box-shadow:0 4px 16px #0002}.toast.bad{background:#8d3434}.busy{opacity:.6;pointer-events:none}.loading{padding:45px;text-align:center;color:var(--muted)}.file-link{word-break:break-all}.permission-list{line-height:2}.pagination{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-top:18px;font-size:12px;color:var(--muted)}.bulk-note{font-size:12px;color:var(--muted);margin-top:10px}.switch-label{display:flex;align-items:center;gap:7px}.upload-inline{display:flex;align-items:flex-start;gap:8px}.upload-inline input{flex:1}.upload-inline button{white-space:nowrap}.login .error{margin-bottom:18px}.line-break{white-space:pre-line}.check-required{color:var(--danger)}
@media(max-width:1100px){:root{--sidebar:210px}.main{padding:24px}.stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:740px){.sidebar{transform:translateX(-100%);transition:transform .15s;width:240px;box-shadow:0 0 0 100vmax #16344166}.sidebar:not(.open){box-shadow:none}.sidebar.open{transform:translateX(0)}.main{margin-left:0;padding:18px 15px 45px}.mobile-menu{display:inline-block}.topbar{margin-bottom:25px}.heading{flex-wrap:wrap}.panel{padding:17px}.form-grid{grid-template-columns:1fr}.field.full{grid-column:1}.check-grid{grid-template-columns:1fr 1fr}.login{display:block}.login-intro{padding:30px}.login-intro img{width:100px;margin-bottom:20px;padding:12px}.login-intro h1{font-size:25px}.login-intro p{display:none}.login-form-wrap{padding:35px 25px}.stats{gap:10px}.stat{padding:15px}.stat .value{font-size:26px}.dialog{width:calc(100vw - 18px);max-height:95vh}.dialog-body{padding:20px 17px}.dialog-head{padding:17px}.dialog-foot{padding:15px 17px}.records{grid-template-columns:95px 1fr}.toolbar input{max-width:100%}.toolbar .spacer{display:none}.notifications{right:15px;bottom:15px}.upload-inline{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.wechat-config-panel{max-width:960px}.wechat-config-form{max-width:680px}.wechat-config-form input[readonly]{background:var(--bg);color:var(--muted)}.wechat-config-error:empty{display:none}.wechat-config-error .error{margin-bottom:18px}
