*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg:#0f1117;--color-surface:#1a1d27;--color-surface-hover:#242836;--color-border:#2a2d3a;--color-primary:#6366f1;--color-primary-hover:#818cf8;--color-text:#e2e4e9;--color-text-muted:#8b8fa3;--color-danger:#ef4444;--color-success:#22c55e;--color-warning:#f59e0b;--radius:8px;--radius-lg:12px;--shadow:0 2px 8px #0000004d;--sidebar-width:240px;--header-height:56px}body{background:var(--color-bg);color:var(--color-text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;line-height:1.6}#root{min-height:100vh}.app-layout{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);background:var(--color-surface);border-right:1px solid var(--color-border);z-index:100;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto}.sidebar-brand{border-bottom:1px solid var(--color-border);align-items:center;gap:10px;padding:20px;display:flex}.brand-icon{font-size:24px}.brand-text{color:var(--color-text);font-size:16px;font-weight:700}.sidebar-nav{flex:1;padding:12px}.nav-section{margin-bottom:20px}.nav-section-title{text-transform:uppercase;color:var(--color-text-muted);letter-spacing:.5px;margin-bottom:6px;padding:0 12px;font-size:11px;font-weight:600;display:block}.nav-item{border-radius:var(--radius);width:100%;color:var(--color-text-muted);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:10px 12px;font-size:14px;transition:all .15s;display:flex}.nav-item:hover{background:var(--color-surface-hover);color:var(--color-text)}.nav-item.active{background:var(--color-primary);color:#fff}.nav-icon{text-align:center;width:20px;font-size:16px}.main-area{margin-left:var(--sidebar-width);flex-direction:column;flex:1;min-height:100vh;display:flex}.app-header{height:var(--header-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:50;justify-content:space-between;align-items:center;padding:0 24px;display:flex;position:sticky;top:0}.header-user{align-items:center;gap:10px;display:flex}.user-avatar{background:var(--color-primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:14px;font-weight:600;display:flex}.user-name{font-size:14px;font-weight:500}.user-role{background:var(--color-surface-hover);color:var(--color-text-muted);border-radius:10px;padding:2px 8px;font-size:12px}.btn-logout{border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text-muted);cursor:pointer;background:0 0;padding:6px 14px;font-size:13px;transition:all .15s}.btn-logout:hover{border-color:var(--color-danger);color:var(--color-danger)}.app-content{flex:1;padding:24px}.login-page{background:var(--color-bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:400px;box-shadow:var(--shadow);padding:40px}.login-header{text-align:center;margin-bottom:32px}.login-icon{margin-bottom:12px;font-size:40px;display:block}.login-header h1{margin-bottom:4px;font-size:22px}.login-header p{color:var(--color-text-muted);font-size:14px}.login-error{border:1px solid var(--color-danger);color:var(--color-danger);border-radius:var(--radius);background:#ef44441a;margin-bottom:16px;padding:10px 14px;font-size:13px}.login-form .form-group{margin-bottom:16px}.login-form label{color:var(--color-text-muted);margin-bottom:6px;font-size:13px;font-weight:500;display:block}.login-form input{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);width:100%;color:var(--color-text);outline:none;padding:10px 14px;font-size:14px;transition:border-color .15s}.login-form input:focus{border-color:var(--color-primary)}.btn-login{border-radius:var(--radius);background:var(--color-primary);color:#fff;cursor:pointer;border:none;width:100%;margin-top:8px;padding:12px;font-size:15px;font-weight:600;transition:background .15s}.btn-login:hover{background:var(--color-primary-hover)}.btn-login:disabled{opacity:.6;cursor:not-allowed}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:24px;display:flex}.page-header h2{font-size:22px;font-weight:700}.page-subtitle{color:var(--color-text-muted);width:100%;margin-top:4px;font-size:14px}.tool-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.tool-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;padding:24px;transition:all .2s;position:relative}.tool-card:hover{border-color:var(--color-primary);transform:translateY(-2px);box-shadow:0 4px 16px #6366f126}.tool-card-icon{margin-bottom:12px;font-size:36px}.tool-card-title{margin-bottom:6px;font-size:16px;font-weight:600}.tool-card-desc{color:var(--color-text-muted);font-size:13px;line-height:1.5}.tool-card-badge{color:var(--color-warning);background:#f59e0b26;border-radius:10px;padding:2px 8px;font-size:11px;position:absolute;top:12px;right:12px}.btn-primary{border-radius:var(--radius);background:var(--color-primary);color:#fff;cursor:pointer;border:none;padding:8px 18px;font-size:14px;font-weight:500;transition:background .15s}.btn-primary:hover{background:var(--color-primary-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);cursor:pointer;background:0 0;padding:8px 18px;font-size:14px;transition:all .15s}.btn-secondary:hover{background:var(--color-surface-hover)}.btn-sm{border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;background:0 0;border-radius:6px;padding:4px 12px;font-size:12px;transition:all .15s}.btn-sm:hover{background:var(--color-surface-hover)}.btn-danger{color:var(--color-danger);border-color:#0000}.btn-danger:hover{background:#ef44441a}.data-table{border-collapse:collapse;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;overflow:hidden}.data-table th,.data-table td{text-align:left;padding:12px 16px;font-size:14px}.data-table th{background:var(--color-surface-hover);color:var(--color-text-muted);border-bottom:1px solid var(--color-border);font-size:13px;font-weight:600}.data-table td{border-bottom:1px solid var(--color-border)}.data-table tr:last-child td{border-bottom:none}.data-table .actions{gap:6px;display:flex}.role-tag{border-radius:10px;padding:2px 8px;font-size:12px}.role-tag.admin{color:var(--color-primary);background:#6366f126}.role-tag.user{color:var(--color-text-muted);background:#8b8fa326}.status-tag{border-radius:10px;padding:2px 8px;font-size:12px}.status-tag.active{color:var(--color-success);background:#22c55e26}.status-tag.inactive{color:var(--color-text-muted);background:#8b8fa326}.modal-overlay{z-index:200;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:440px;max-width:90vw;padding:28px;box-shadow:0 8px 32px #0006}.modal h3{margin-bottom:20px;font-size:18px}.modal .form-group{margin-bottom:14px}.modal label{color:var(--color-text-muted);margin-bottom:6px;font-size:13px;font-weight:500;display:block}.modal input,.modal select{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);width:100%;color:var(--color-text);outline:none;padding:8px 12px;font-size:14px}.modal input:focus,.modal select:focus{border-color:var(--color-primary)}.form-error{border:1px solid var(--color-danger);color:var(--color-danger);border-radius:var(--radius);background:#ef44441a;margin-bottom:12px;padding:8px 12px;font-size:13px}.modal-actions{justify-content:flex-end;gap:10px;margin-top:20px;display:flex}.error-banner{border:1px solid var(--color-danger);color:var(--color-danger);border-radius:var(--radius);background:#ef44441a;margin-bottom:16px;padding:10px 14px;font-size:13px}.loading-screen{min-height:60vh;color:var(--color-text-muted);flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex}.spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-spinner{text-align:center;color:var(--color-text-muted);padding:40px}.empty-state{text-align:center;color:var(--color-text-muted);padding:60px 20px}.empty-icon{margin-bottom:12px;font-size:48px;display:block}.research-search{margin-bottom:32px}.search-box{gap:12px;max-width:600px;display:flex}.search-input{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);outline:none;flex:1;padding:12px 16px;font-size:15px;transition:border-color .15s}.search-input:focus{border-color:var(--color-primary)}.search-btn{padding:12px 24px;font-size:15px}.feature-preview{margin-bottom:32px}.feature-preview h3,.api-status h3{color:var(--color-text-muted);margin-bottom:16px;font-size:16px}.feature-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;display:grid}.feature-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:20px;transition:border-color .15s}.feature-card:hover{border-color:var(--color-primary)}.feature-icon{margin-bottom:10px;font-size:28px;display:block}.feature-card h4{margin-bottom:6px;font-size:15px}.feature-card p{color:var(--color-text-muted);font-size:13px;line-height:1.5}.api-status{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:20px}.status-list{flex-direction:column;gap:10px;display:flex}.status-item{align-items:center;gap:10px;font-size:14px;display:flex}.status-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.status-dot.pending{background:var(--color-warning)}.status-dot.connected{background:var(--color-success)}.status-label{color:var(--color-text-muted);background:var(--color-surface-hover);border-radius:10px;margin-left:auto;padding:2px 8px;font-size:12px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}
