:root{--primary: #1664ff;--primary-dark: #0b4fe0;--primary-light: #eaf1ff;--navy: #0b1a33;--ink: #1f2329;--text: #4e5969;--muted: #86909c;--line: #e5e8ef;--bg: #f5f7fa;--card: #fff;--ok: #00b42a;--warn: #ff7d00;--err: #f53f3f;--price: #f53f3f;--radius: 8px;--shadow: 0 4px 16px rgba(31, 35, 41, .06);--shadow-hover: 0 12px 32px rgba(22, 100, 255, .12)}*{box-sizing:border-box}html,body{margin:0}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;color:var(--text);background:var(--bg);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}h1,h2,h3{margin:0;color:var(--ink);font-weight:600}.container{max-width:1200px;margin:0 auto;padding:0 24px}.brand{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:20px;color:var(--ink);letter-spacing:.5px}.brand .mark{width:28px;height:28px;border-radius:7px;background:linear-gradient(135deg,#3d7bff,#1664ff 60%,#0b4fe0);color:#fff;font-size:15px;display:flex;align-items:center;justify-content:center;font-weight:800}.brand .sub{font-size:12px;font-weight:400;color:var(--muted);padding-left:10px;margin-left:2px;border-left:1px solid var(--line);letter-spacing:0}.btn{display:inline-flex;align-items:center;justify-content:center;height:36px;padding:0 18px;border-radius:4px;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;font-size:14px;white-space:nowrap;transition:.15s;font-family:inherit}.btn:hover{border-color:var(--primary);color:var(--primary)}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary-dark);border-color:var(--primary-dark);color:#fff}.btn.danger{color:var(--err)}.btn.danger:hover{border-color:var(--err)}.btn.sm{height:28px;padding:0 12px;font-size:13px}.btn.lg{height:44px;padding:0 32px;font-size:16px}.btn:disabled{opacity:.5;cursor:not-allowed}.input,select.input,textarea.input{width:100%;height:36px;padding:0 12px;border:1px solid var(--line);border-radius:4px;font-size:14px;background:#fff;color:var(--ink);font-family:inherit}textarea.input{height:auto;padding:8px 12px;resize:vertical;font-family:ui-monospace,Menlo,monospace;white-space:pre;overflow-x:auto}.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-light)}.field{margin-bottom:16px}.field>label{display:block;margin-bottom:6px;color:var(--muted);font-size:13px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.card{background:var(--card);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}.card+.card{margin-top:16px}.card-title{font-size:16px;font-weight:600;color:var(--ink);margin-bottom:16px;display:flex;justify-content:space-between;align-items:center;gap:12px}.table{width:100%;border-collapse:collapse;font-size:13px}.table th,.table td{text-align:left;padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:middle}.table th{color:var(--muted);font-weight:500;background:#f7f8fa}.table tr:hover td{background:#fafbfc}.mono{font-family:ui-monospace,Menlo,monospace}.empty{text-align:center;color:var(--muted);padding:40px 0}.tag{display:inline-block;padding:0 8px;border-radius:2px;font-size:12px;line-height:20px;background:#f2f3f5;color:var(--text)}.tag.ok{background:#e8ffea;color:var(--ok)}.tag.warn{background:#fff7e8;color:var(--warn)}.tag.err{background:#ffece8;color:var(--err)}.tag.blue{background:var(--primary-light);color:var(--primary)}.muted{color:var(--muted)}.notice{padding:10px 16px;border-radius:4px;background:var(--primary-light);border:1px solid #bed3ff;color:#1d3f8f;margin-bottom:16px}.notice.warn{background:#fff7e8;border-color:#ffd8a8;color:#a35200}.notice.err{background:#ffece8;border-color:#fbb8b0;color:#b42318}.del{text-decoration:line-through;color:var(--muted)}.chips{display:flex;gap:10px;flex-wrap:wrap}.chip{min-width:72px;height:36px;padding:0 14px;border:1px solid var(--line);border-radius:4px;background:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink);-webkit-user-select:none;user-select:none;transition:.15s}.chip:hover{border-color:var(--primary);color:var(--primary)}.chip.on{border-color:var(--primary);background:var(--primary-light);color:var(--primary);font-weight:600}.toast{position:fixed;top:24px;left:50%;transform:translate(-50%);z-index:999;padding:10px 22px;border-radius:4px;background:#fff;color:var(--ink);box-shadow:0 6px 24px #00000024;border-left:4px solid var(--ok)}.toast.err{border-left-color:var(--err)}.cs .card{box-shadow:none;border:1px solid #e5e6eb;border-radius:4px;padding:20px 24px}.cs .card-title{font-size:15px}.cs .notice{border-radius:4px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:0;margin-bottom:16px;background:#fff;border:1px solid #e5e6eb;border-radius:4px}.stat{padding:18px 22px;border-right:1px solid #f2f3f5}.stat:last-child{border-right:0}.stat .k{color:var(--muted);font-size:13px}.stat .v{font-size:28px;font-weight:600;color:var(--ink);margin-top:6px;font-family:DIN Alternate,Helvetica Neue,Arial,sans-serif;font-variant-numeric:tabular-nums}.tbl{overflow-x:auto}.drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:50}.drawer{position:fixed;top:0;right:0;bottom:0;width:640px;max-width:100vw;background:#fff;z-index:51;display:flex;flex-direction:column;box-shadow:-8px 0 32px #0000001f}.drawer-head{height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;border-bottom:1px solid #e5e6eb;font-size:16px;font-weight:600;color:var(--ink)}.drawer-body{flex:1;overflow-y:auto;padding:20px}.desc-list{display:grid;grid-template-columns:96px 1fr;gap:10px 12px;margin:0 0 20px;font-size:13px}.desc-list dt{color:var(--muted)}.desc-list dd{margin:0;color:var(--ink);word-break:break-all}@media(max-width:900px){.grid2{grid-template-columns:1fr}.container{padding:0 16px}.card{overflow-x:auto}.card .table{min-width:640px}.cs .card{padding:16px}.card-title{flex-wrap:wrap}.card-title>.row,.card-title>.input,.card-title>select{width:100%}.btn.lg{height:42px;padding:0 22px}.toast{width:calc(100vw - 32px);text-align:center}.stats{grid-template-columns:1fr 1fr}.stat{border-bottom:1px solid #f2f3f5}.drawer{width:100vw}.desc-list{grid-template-columns:80px 1fr}}
