:root{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--bg-app:#0f172a;--bg-sidebar:#0b1120;--bg-card:#1e293b;--bg-card-hover:#334155;--border:#334155;--border-subtle:#1e293b;--text-main:#f8fafc;--text-muted:#94a3b8;--text-dim:#64748b;--primary:#6366f1;--primary-hover:#4f46e5;--primary-subtle:#6366f126;--success:#10b981;--success-subtle:#10b98126;--warning:#f59e0b;--warning-subtle:#f59e0b26;--danger:#ef4444;--danger-subtle:#ef444426}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--bg-app);color:var(--text-main);-webkit-font-smoothing:antialiased;min-height:100vh}a{color:inherit;text-decoration:none}button,input,select{font-family:inherit}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:20px}.field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field label{color:var(--text-muted);font-size:12px;font-weight:600}.input{background:var(--bg-app);border:1px solid var(--border);color:var(--text-main);border-radius:8px;width:100%;padding:9px 12px;font-size:14px}.input:focus{outline:2px solid var(--primary);outline-offset:1px}.btn{border:1px solid var(--primary);background:var(--primary);color:#fff;cursor:pointer;border-radius:8px;padding:9px 16px;font-size:13px;font-weight:600}.btn:hover{background:var(--primary-hover)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn.secondary{color:var(--text-main);border-color:var(--border);background:0 0}.btn.secondary:hover{background:var(--bg-card-hover)}.btn.danger{color:var(--danger);border-color:var(--danger);background:0 0}.btn.danger:hover{background:var(--danger-subtle)}.table{border-collapse:collapse;width:100%;font-size:13px}.table th{text-align:left;color:var(--text-muted);border-bottom:1px solid var(--border);padding:10px 12px;font-weight:600}.table td{border-bottom:1px solid var(--border-subtle);padding:12px}.badge{border-radius:999px;padding:2px 9px;font-size:11px;font-weight:600;display:inline-block}.badge.ok{background:var(--success-subtle);color:var(--success)}.badge.warn{background:var(--warning-subtle);color:var(--warning)}.msg-error{color:var(--danger);margin:8px 0;font-size:13px}.msg-ok{color:var(--success);margin:8px 0;font-size:13px}
