:root{--primary: #24664d;--primary-light: #2f8061;--primary-dark: #1a4d3a;--bg: #f4f7f5;--surface: #ffffff;--border: #dce5df;--text: #20362f;--text-muted: #52665b;--danger: #c0392b;--warning: #d7902e;--success: #27ae60;--info: #2980b9;--radius: 8px;--shadow: 0 1px 3px rgba(0,0,0,.08)}*{box-sizing:border-box}body{margin:0;font-family:system-ui,Microsoft YaHei,sans-serif;color:var(--text);background:var(--bg);font-size:14px}a{color:var(--primary);text-decoration:none}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:14px}.btn{padding:7px 16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer;transition:all .15s}.btn:hover{border-color:var(--primary);color:var(--primary)}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:var(--primary-dark);color:#fff}.btn-danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn-danger:hover{opacity:.9;color:#fff}.btn-sm{padding:4px 10px;font-size:12px}.btn-link{border:none;background:none;color:var(--primary);padding:2px 6px}.btn-link:hover{text-decoration:underline}.form-group{margin-bottom:16px}.form-label{display:block;margin-bottom:6px;color:var(--text-muted);font-size:13px}.form-control{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius);outline:none;transition:border-color .15s}.form-control:focus{border-color:var(--primary)}.form-row{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.form-row-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card-header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.card-body{padding:20px}.card-title{margin:0;font-size:16px;font-weight:600}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border)}.table th{background:#f8faf9;color:var(--text-muted);font-weight:600;font-size:13px}.table tr:hover td{background:#f8faf9}.tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px}.tag-blue{background:#e8f4fd;color:var(--info)}.tag-green{background:#e8f8ee;color:var(--success)}.tag-orange{background:#fdf3e3;color:var(--warning)}.tag-red{background:#fdecea;color:var(--danger)}.tag-gray{background:#eee;color:#666}.modal-mask{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;border-radius:var(--radius);width:600px;max-width:92vw;max-height:88vh;overflow:auto}.modal-header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.modal-body{padding:20px}.modal-footer{padding:12px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}.flex{display:flex}.flex-between{display:flex;justify-content:space-between;align-items:center}.gap-8{gap:8px}.gap-16{gap:16px}.mt-16{margin-top:16px}.mb-16{margin-bottom:16px}.text-muted{color:var(--text-muted)}.text-center{text-align:center}.pointer{cursor:pointer}
