:root{--nav: #171a2b;--nav-hover: #222640;--nav-active: rgba(255, 255, 255, .07);--nav-text: #9aa3b6;--nav-text-hover: #e2e6ef;--nav-text-strong: #ffffff;--nav-icon-active: #8b93ff;--nav-line: rgba(255, 255, 255, .07);--bg: #fafafc;--panel: #fff;--line: #eceef2;--line-2: #f4f5f8;--line-strong: #e2e6ec;--t1: #12141a;--t2: #464d5c;--t3: #7a8394;--t4: #b0b8c5;--brand: #4f46e5;--brand-hover: #4338ca;--brand-soft: #eef2ff;--brand-line: #c7d2fe;--ok: #16a34a;--ok-bg: #ecfdf3;--warn: #d97706;--warn-bg: #fffbeb;--danger: #dc2626;--danger-bg: #fef2f2;--r: 10px;--r-sm: 8px;--r-xs: 6px;--shadow-xs: 0 1px 2px rgba(16, 24, 40, .04);--shadow-sm: 0 1px 2px rgba(16, 24, 40, .04);--shadow-md: 0 4px 12px rgba(16, 24, 40, .06);--shadow-lg: 0 12px 28px rgba(16, 24, 40, .1), 0 2px 6px rgba(16, 24, 40, .04)}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--bg);color:var(--t2);font:13.5px/1.6 -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased;letter-spacing:.1px}button{font-family:inherit;cursor:pointer;border:none}input,select,textarea{font-family:inherit}a{color:inherit;text-decoration:none}.hide{display:none!important}.num,.mono{font-variant-numeric:tabular-nums}.muted{color:var(--t3)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 16px;border-radius:var(--r-sm);background:var(--brand);color:#fff;font-size:13.5px;font-weight:500;box-shadow:0 1px 2px #2d8cf03d;transition:background .16s,box-shadow .16s,transform .16s}.btn:hover{background:var(--brand-hover);box-shadow:0 4px 12px #2d8cf04d;transform:translateY(-1px)}.btn:active{transform:none;box-shadow:0 1px 2px #2d8cf03d}.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}.btn-quiet{background:#fff;color:var(--t2);border:1px solid var(--line-strong);box-shadow:var(--shadow-xs)}.btn-quiet:hover{background:#fff;color:var(--brand);border-color:var(--brand-line);box-shadow:0 2px 8px #1018280f;transform:none}.btn-quiet:active{background:var(--brand-soft)}.btn-sm{height:30px;padding:0 12px;font-size:12.5px}.btn-xs{height:26px;padding:0 10px;font-size:12px;border-radius:var(--r-xs)}.btn-block{width:100%;height:42px;font-size:14px}.fg{display:grid;grid-template-columns:104px 1fr;align-items:start;gap:0 12px}.fg>label{display:flex;flex-direction:row-reverse;justify-content:flex-end;align-items:baseline;gap:2px;text-align:right;padding-top:10px;font-size:13px;color:var(--t2);font-weight:400;line-height:1.4}.fg>label .req{color:var(--danger)}.fg input,.fg select,.fg textarea{width:100%;height:38px;padding:0 11px;border:1px solid var(--line-strong);border-radius:var(--r-sm);font-size:13.5px;background:#fff;color:var(--t1);transition:border-color .16s,box-shadow .16s}.fg input::placeholder{color:var(--t4)}.fg input:hover,.fg select:hover{border-color:#cfd6e0}.fg input:focus,.fg select:focus,.fg textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px #2d8cf01f}.fg input:disabled{background:#f8f9fb;color:var(--t3);cursor:not-allowed;border-color:var(--line)}.fg input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.fg input[type=number]::-webkit-outer-spin-button,.fg input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:17px!important;height:17px!important;flex:0 0 17px;border:1.5px solid var(--line-strong);border-radius:5px;background:#fff;cursor:pointer;position:relative;transition:background .15s,border-color .15s;margin:0;padding:0;vertical-align:middle}input[type=checkbox]:hover{border-color:var(--brand)}input[type=checkbox]:checked{background:var(--brand);border-color:var(--brand)}input[type=checkbox]:checked:after{content:"";position:absolute;left:4.5px;top:1.5px;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.fg .hint{grid-column:2;font-size:12px;color:var(--t3);margin-top:5px;line-height:1.6}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 32px}.form-grid .full{grid-column:1 / -1}.alert{padding:10px 14px;border-radius:var(--r-sm);font-size:13px;margin-bottom:18px;background:var(--danger-bg);color:var(--danger);border:1px solid #fecdca}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-sm);overflow:hidden;margin-bottom:18px}.card-head{display:flex;align-items:center;gap:10px;padding:17px 24px;border-bottom:1px solid var(--line-2)}.card-head h2{margin:0;font-size:14.5px;font-weight:600;color:var(--t1);letter-spacing:-.1px;position:relative;padding-left:11px}.card-head h2:before{content:"";position:absolute;left:0;top:4px;bottom:4px;width:3px;border-radius:2px;background:var(--brand)}.card-head .cnt{font-size:12px;color:var(--t3);background:#f4f6f9;padding:2px 9px;border-radius:20px;font-variant-numeric:tabular-nums}.card-head .spacer{flex:1}.card-body{padding:24px}table{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px}thead th{position:sticky;top:0;background:#fafbfc;text-align:left;font-weight:500;color:var(--t3);font-size:12px;letter-spacing:.3px;padding:11px 20px;border-bottom:1px solid var(--line);white-space:nowrap;z-index:2}tbody td{padding:15px 20px;border-bottom:1px solid var(--line-2);vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr{transition:background .15s}tbody tr:hover{background:#fafcff}.cell-2{line-height:1.5}.cell-2 b{font-weight:500;color:var(--t2)}.cell-2 small{display:block;color:var(--t3);font-size:12px;font-variant-numeric:tabular-nums;margin-top:1px}.pill{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:20px;font-size:12px;line-height:18px;white-space:nowrap;font-weight:500;border:1px solid transparent}.pill i{display:none}.pill.ok{background:var(--ok-bg);color:var(--ok);border-color:#d3f8e2}.pill.warn{background:var(--warn-bg);color:var(--warn);border-color:#fdead0}.pill.danger{background:var(--danger-bg);color:var(--danger);border-color:#fee4e2}.pill.mute{background:#f5f6f8;color:var(--t3);border-color:var(--line)}.empty{padding:64px 20px;text-align:center}.empty .ico{width:60px;height:60px;border-radius:18px;background:linear-gradient(180deg,#f7faff,#eef5ff);margin:0 auto 16px;display:flex;align-items:center;justify-content:center;color:#9dc4f5;border:1px solid #e6effc}.empty h3{margin:0 0 6px;font-size:14px;font-weight:500;color:var(--t2)}.empty p{margin:0;font-size:13px;color:var(--t3)}.loading{padding:56px;text-align:center;color:var(--t3);font-size:13px}.spinner{width:16px;height:16px;border:2px solid #e8ecf2;border-top-color:var(--brand);border-radius:50%;display:inline-block;vertical-align:-3px;margin-right:8px;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#10182873;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;justify-content:flex-end;z-index:60}.drawer{width:min(780px,100%);background:var(--panel);height:100%;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:slide .24s cubic-bezier(.22,.7,.3,1)}@keyframes slide{0%{transform:translate(24px);opacity:.7}to{transform:none;opacity:1}}.drawer-head{flex:0 0 auto;padding:20px 26px;border-bottom:1px solid var(--line-2);display:flex;align-items:flex-start;gap:13px;background:#fff}.dh-logo{width:40px;height:40px;flex:0 0 40px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-weight:600;box-shadow:var(--shadow-xs)}.dh-main{flex:1;min-width:0}.dh-main h3{margin:0 0 4px;font-size:16px;font-weight:600;color:var(--t1);letter-spacing:-.2px}.dh-main .meta{font-size:12.5px;color:var(--t3);display:flex;gap:14px;flex-wrap:wrap}.dh-close{width:30px;height:30px;border-radius:var(--r-xs);background:transparent;color:var(--t3);display:flex;align-items:center;justify-content:center;font-size:19px;line-height:1;transition:.14s}.dh-close:hover{background:#f4f6f9;color:var(--t1)}.drawer-body{flex:1;overflow:auto;padding:22px 26px 36px}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,textarea:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #fff inset!important;-webkit-text-fill-color:var(--t1)!important;caret-color:var(--t1);transition:background-color 99999s ease-in-out 0s}.page-head{display:flex;align-items:flex-start;gap:16px;margin-bottom:22px}.page-head h1{margin:0 0 7px;font-size:23px;font-weight:600;color:var(--t1);letter-spacing:-.5px;line-height:1.25}.page-head p{margin:0;color:var(--t3);font-size:13px}.page-head .spacer{flex:1}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:18px}.stat{display:flex;align-items:flex-start;gap:13px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:20px;box-shadow:var(--shadow-sm);transition:box-shadow .2s,transform .2s,border-color .2s}.stat:hover{box-shadow:var(--shadow-md);border-color:var(--line-strong);transform:translateY(-2px)}.s-ico{width:38px;height:38px;flex:0 0 38px;border-radius:10px;display:flex;align-items:center;justify-content:center}.s-ico.blue{background:linear-gradient(180deg,#eef6ff,#e2efff);color:var(--brand)}.s-ico.green{background:linear-gradient(180deg,#ecfdf3,#d9f9e6);color:var(--ok)}.s-ico.orange{background:linear-gradient(180deg,#fffaeb,#fff2d6);color:var(--warn)}.s-ico.purple{background:linear-gradient(180deg,#f5f3ff,#ebe6ff);color:#7c5cf0}.s-body{flex:1;min-width:0}.stat .k{font-size:12.5px;color:var(--t3);margin-bottom:8px}.stat .v{font-size:27px;font-weight:600;letter-spacing:-.8px;line-height:1.1;color:var(--t1)}.stat .v small{font-size:12px;font-weight:400;color:var(--t3);letter-spacing:0;margin-left:4px}.stat .sub{margin-top:8px;font-size:12px;color:var(--t3)}.meter{margin-top:10px;height:5px;border-radius:3px;background:#eef1f5;overflow:hidden}.meter i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#6366f1,#4f46e5);transition:width .6s}@media(max-width:1080px){.stats{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}}@media(max-width:720px){.stats{grid-template-columns:1fr}.fg{grid-template-columns:88px 1fr}}.toast{position:fixed;left:50%;top:24px;transform:translate(-50%) translateY(-10px);background:#fff;color:var(--t1);padding:11px 18px;border-radius:var(--r-sm);border:1px solid var(--line);font-size:13px;z-index:3000;box-shadow:var(--shadow-md);opacity:0;transition:.24s;max-width:80vw}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.toast.bad{color:var(--danger);border-color:#fee4e2}.search{height:34px;padding:0 11px 0 31px;border:1px solid var(--line-strong);border-radius:var(--r-sm);font-size:13px;background:#fff;transition:border-color .16s,box-shadow .16s}.search::placeholder{color:var(--t4)}.search:hover{border-color:#cfd6e0}.search:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px #2d8cf01f}.search-wrap{position:relative}.search-wrap svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--t4)}.filters{display:flex;gap:6px;flex-wrap:wrap;margin-right:10px}.fchip{height:28px;padding:0 12px;border-radius:20px;border:1px solid var(--line-strong);background:#fff;color:var(--t2);font-size:12.5px;transition:.15s}.fchip:hover{border-color:var(--brand-line);color:var(--brand)}.fchip.active{background:var(--brand-soft);border-color:var(--brand-line);color:var(--brand);font-weight:500}
