*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-primary: #1e3a5f;--color-primary-light: #2a5a8f;--color-primary-hover: #163050;--color-accent: #2563eb;--color-accent-hover: #1d4ed8;--color-accent-light: #eff6ff;--color-text: #1f2937;--color-text-secondary: #6b7280;--color-text-muted: #9ca3af;--color-bg: #f8f9fb;--color-surface: #ffffff;--color-border: #e2e5ea;--color-border-light: #f0f1f3;--color-success: #059669;--color-success-bg: #ecfdf5;--color-warning: #d97706;--color-warning-bg: #fffbeb;--color-danger: #dc2626;--color-danger-bg: #fef2f2;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 2px 8px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .04);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .08), 0 2px 8px rgba(0, 0, 0, .04);--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", Consolas, "Liberation Mono", monospace}body{font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);line-height:1.6;font-size:14px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button{cursor:pointer;font-family:inherit}input,textarea,select{font-family:inherit;font-size:inherit}.app-header{background:var(--color-primary);padding:0 28px;height:52px;display:flex;align-items:center;gap:16px;box-shadow:0 1px 3px #0000001f;position:sticky;top:0;z-index:50}.app-header h1{font-size:17px;font-weight:700;color:#fff;letter-spacing:-.3px}.app-header a{text-decoration:none;color:inherit}.app-header select{background:#ffffff1f;border:1px solid rgba(255,255,255,.2);color:#fff;border-radius:var(--radius-md);padding:5px 10px;font-size:12px;outline:none;transition:background .15s}.app-header select:hover{background:#ffffff2e}.app-header select:focus{border-color:#fff6}.app-header select option{background:var(--color-primary);color:#fff}.page{max-width:1280px;margin:0 auto;padding:28px 32px}.page-title{font-size:22px;font-weight:600;color:var(--color-text);margin-bottom:20px;letter-spacing:-.3px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 16px;border-radius:var(--radius-md);font-size:13px;font-weight:500;border:1px solid transparent;transition:all .15s ease;white-space:nowrap;line-height:1.4}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-accent);color:#fff;box-shadow:0 1px 2px #2563eb33}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover);box-shadow:0 2px 4px #2563eb40}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border);box-shadow:var(--shadow-sm)}.btn-secondary:hover:not(:disabled){background:#f9fafb;border-color:#c9cdd3}.btn-danger{background:var(--color-danger);color:#fff;box-shadow:0 1px 2px #dc262633}.btn-danger:hover:not(:disabled){background:#b91c1c}.btn-sm{padding:4px 10px;font-size:12px}.btn-ghost{background:transparent;color:var(--color-text-secondary);border:none;padding:4px 8px}.btn-ghost:hover{background:var(--color-border-light);color:var(--color-text)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:18px;box-shadow:var(--shadow-sm);transition:box-shadow .2s ease,border-color .2s ease}.card:hover{box-shadow:var(--shadow-md);border-color:#d0d4da}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--color-surface);border-radius:var(--radius-xl);padding:28px;width:90%;max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);border:1px solid var(--color-border)}.modal h2{font-size:17px;font-weight:600;margin-bottom:18px;color:var(--color-text);letter-spacing:-.2px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px;padding-top:16px;border-top:1px solid var(--color-border-light)}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:12px;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.4px;margin-bottom:5px}.form-group input,.form-group textarea,.form-group select{width:100%;padding:8px 12px;border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:14px;color:var(--color-text);background:var(--color-surface);transition:border-color .15s,box-shadow .15s}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px #2563eb1a}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--color-text-muted)}.form-group textarea{resize:vertical;min-height:80px}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;line-height:1.6}.badge-gray{background:#f1f2f4;color:#6b7280}.badge-yellow{background:#fef3c7;color:#92400e}.badge-green{background:#d1fae5;color:#065f46}.badge-blue{background:#dbeafe;color:#1e40af}.badge-orange{background:#ffedd5;color:#9a3412}.badge-red{background:#fee2e2;color:#991b1b}.breadcrumb{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--color-text-muted);margin-bottom:18px}.breadcrumb a{color:var(--color-accent);text-decoration:none;font-weight:500}.breadcrumb a:hover{text-decoration:underline}.breadcrumb span{color:var(--color-text-muted)}.req-key{display:inline-flex;align-items:center;padding:1px 7px;background:var(--color-accent-light);color:var(--color-accent);border-radius:var(--radius-sm);font-size:11px;font-weight:600;font-family:var(--font-mono);letter-spacing:.2px}.empty-state{text-align:center;padding:56px 24px;color:var(--color-text-muted)}.empty-state p{font-size:15px;margin-bottom:16px}.req-node{border-radius:var(--radius-sm);transition:background .1s}.req-node:hover{background:#f5f7fa}a.btn{text-decoration:none}.error-message{background:var(--color-danger-bg);color:#991b1b;padding:12px 16px;border-radius:var(--radius-md);border:1px solid #fecaca;margin-bottom:16px;font-size:13px;font-weight:500}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#9ca3af}
