:root{--bg: #0f1115;--bg2: #171a21;--bg3: #1f2430;--border: #2a3040;--text: #e6e9f0;--muted: #8a93a6;--accent: #4f8cff;--accent2: #6c5ce7;--danger: #e5484d;--success: #30a46c;--warning: #f5a524}*{margin:0;padding:0;box-sizing:border-box}html,body,#app{height:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Segoe UI,sans-serif;font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font-family:inherit;font-size:14px}input,select,textarea{background:var(--bg2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:8px 12px;outline:none;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--accent)}button{background:var(--bg3);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:8px 16px;cursor:pointer;transition:all .15s}button:hover{background:#262c3a}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{background:#3d7de8}button.danger{background:transparent;border-color:var(--danger);color:var(--danger)}button.danger:hover{background:#e5484d1f}button:disabled{opacity:.5;cursor:not-allowed}table{width:100%;border-collapse:collapse}th,td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:500;font-size:13px}tr:hover td{background:#ffffff05}.tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;border:1px solid}.tag.green{color:var(--success);border-color:var(--success)}.tag.red{color:var(--danger);border-color:var(--danger)}.tag.gray{color:var(--muted);border-color:var(--border)}.tag.blue{color:var(--accent);border-color:var(--accent)}.code{background:#0a0c10;border:1px solid var(--border);border-radius:8px;padding:16px;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:13px;line-height:1.6;overflow:auto;white-space:pre-wrap;word-break:break-all}
