*{box-sizing:border-box}body{margin:0;color:#1f2329;background:#f0f2f5;font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}a{color:#1677ff}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.page-title{margin:0;font-size:18px;font-weight:600}.page-sub{margin-top:4px;color:#8a919f;font-size:12px}.panel{background:#fff;border-radius:8px;padding:16px;box-shadow:0 1px 4px #0000000d}.panel+.panel{margin-top:16px}.panel-title{margin:0 0 12px;font-size:15px;font-weight:600}.toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:14px}.field{display:flex;flex-direction:column;gap:4px;color:#666;font-size:12px}.field>span{padding-left:2px}input,select,textarea{padding:8px 10px;border:1px solid #d9d9d9;border-radius:4px;background:#fff;color:#1f2329;font-size:14px;font-family:inherit}input:focus,select:focus,textarea:focus{outline:none;border-color:#1677ff}textarea{min-height:72px;resize:vertical}.btn{padding:8px 16px;border:1px solid #d9d9d9;border-radius:4px;background:#fff;color:#1f2329;font-size:14px;font-family:inherit;cursor:pointer}.btn:hover{border-color:#1677ff;color:#1677ff}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{border-color:#1677ff;background:#1677ff;color:#fff}.btn.primary:hover{border-color:#3c8dff;background:#3c8dff;color:#fff}.btn.danger{border-color:#f3b4b6;color:#d93843}.btn.danger:hover{border-color:#d93843;background:#d93843;color:#fff}.btn.sm{padding:4px 10px;font-size:12px}.table-wrap{overflow-x:auto}table.table{width:100%;border-collapse:collapse;font-size:13px}.table th,.table td{padding:10px 12px;border-bottom:1px solid #f0f0f0;text-align:left;white-space:nowrap}.table th{background:#fafafa;color:#666;font-weight:500}.table tbody tr:hover{background:#fafcff}.table td.wrap{max-width:300px;white-space:normal}.badge{display:inline-block;padding:1px 8px;border-radius:10px;background:#f0f2f5;color:#666;font-size:12px;line-height:20px}.badge.green{background:#e8f8ee;color:#0f8a4a}.badge.orange{background:#fff4e5;color:#c76a00}.badge.red{background:#fdecec;color:#d93843}.badge.blue{background:#e8f1ff;color:#1663d6}.pager{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:14px;color:#666;font-size:13px}.pager .btn{padding:5px 12px;font-size:13px}.notice{margin-bottom:12px;padding:8px 12px;border-radius:4px;font-size:13px}.notice.error{background:#fdecec;color:#c0363f}.notice.success{background:#e8f8ee;color:#0f8a4a}.empty{padding:32px 0;color:#999;text-align:center;font-size:13px}.muted{color:#8a919f;font-size:12px}.actions{display:flex;flex-wrap:wrap;gap:8px}.info-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 20px}.info-item{font-size:13px}.info-item .k{margin-bottom:4px;color:#8a919f;font-size:12px}.info-item .v{color:#1f2329;word-break:break-all}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}.form-grid .full{grid-column:1 / -1}.checkbox{display:flex;align-items:center;gap:6px;color:#333;font-size:13px}.tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.tabs .tab{padding:7px 16px;border:1px solid #d9d9d9;border-radius:4px;background:#fff;color:#1f2329;font-size:13px;font-family:inherit;cursor:pointer}.tabs .tab.active{border-color:#1677ff;background:#e8f1ff;color:#1663d6}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;background:#00000073}.modal{display:flex;flex-direction:column;width:min(860px,100%);max-height:calc(100vh - 40px);background:#fff;border-radius:8px;box-shadow:0 12px 40px #0003}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid #f0f0f0}.modal-title{margin:0;font-size:15px;font-weight:600}.modal-body{padding:16px 18px;overflow:auto}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:12px 18px;border-top:1px solid #f0f0f0}@media (max-width: 900px){.info-grid,.form-grid{grid-template-columns:1fr}}
