opc-agent 4.0.31 → 4.0.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,19 +7,20 @@
7
7
  <style>
8
8
  * { margin: 0; padding: 0; box-sizing: border-box; }
9
9
  :root {
10
- --bg: #0a0a1a; --bg-card: rgba(255,255,255,0.03); --bg-hover: rgba(255,255,255,0.06); --bg-input: rgba(255,255,255,0.05);
11
- --border: rgba(255,255,255,0.08); --text: #f0f0f8; --text-muted: #8888aa; --text-dim: #555577;
12
- --accent: #7c5cff; --accent-hover: #6a4aee; --accent-light: rgba(124,92,255,0.12);
13
- --green: #34d399; --red: #f87171; --yellow: #fbbf24; --purple: #a78bfa;
14
- --gradient: linear-gradient(135deg, #7c5cff 0%, #00d4ff 100%);
15
- --glow: 0 0 20px rgba(124,92,255,0.25);
16
- --glow-sm: 0 0 10px rgba(124,92,255,0.15);
17
- --card-glow: 0 4px 30px rgba(0,0,0,0.3);
10
+ --bg: #05051a; --bg-card: rgba(15,15,40,0.6); --bg-hover: rgba(124,92,255,0.08); --bg-input: rgba(15,15,40,0.8);
11
+ --border: rgba(124,92,255,0.15); --text: #f0f0ff; --text-muted: #9090cc; --text-dim: #5555aa;
12
+ --accent: #8b5cf6; --accent-hover: #7c3aed; --accent-light: rgba(139,92,246,0.15);
13
+ --green: #10b981; --red: #f87171; --yellow: #fbbf24; --purple: #c084fc;
14
+ --gradient: linear-gradient(135deg, #8b5cf6 0%, #06b6d4 50%, #8b5cf6 100%);
15
+ --gradient-btn: linear-gradient(135deg, #8b5cf6 0%, #3b82f6 50%, #06b6d4 100%);
16
+ --glow: 0 0 30px rgba(139,92,246,0.4), 0 0 60px rgba(6,182,212,0.2);
17
+ --glow-sm: 0 0 15px rgba(139,92,246,0.25);
18
+ --card-glow: 0 4px 40px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.05);
18
19
  --font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
19
20
  --mono: 'JetBrains Mono', 'SF Mono', 'Fira Code', monospace;
20
- --radius: 12px; --radius-lg: 20px;
21
+ --radius: 14px; --radius-lg: 24px;
21
22
  }
22
- body { font-family: var(--font); background: var(--bg); color: var(--text); min-height: 100vh; font-size: 14px; line-height: 1.6; background-image: radial-gradient(ellipse at top, rgba(124,92,255,0.08) 0%, transparent 50%), radial-gradient(ellipse at bottom right, rgba(0,212,255,0.05) 0%, transparent 50%); }
23
+ body { font-family: var(--font); background: var(--bg); color: var(--text); min-height: 100vh; font-size: 15px; line-height: 1.6; background-image: radial-gradient(ellipse at 20% 0%, rgba(139,92,246,0.12) 0%, transparent 50%), radial-gradient(ellipse at 80% 100%, rgba(6,182,212,0.08) 0%, transparent 50%), url("data:image/svg+xml,%3Csvg width='60' height='60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 30h60M30 0v60' stroke='rgba(139,92,246,0.04)' stroke-width='0.5'/%3E%3C/svg%3E"); }
23
24
  a { color: var(--accent); text-decoration: none; }
24
25
  button { font-family: var(--font); cursor: pointer; border: none; }
25
26
  input, select, textarea { font-family: var(--font); }
@@ -27,19 +28,20 @@
27
28
  /* Layout */
28
29
  .app { display: flex; min-height: 100vh; }
29
30
  .sidebar {
30
- width: 260px; background: rgba(10,10,30,0.8); backdrop-filter: blur(20px); border-right: 1px solid var(--border);
31
- padding: 20px 14px; display: flex; flex-direction: column; position: fixed; height: 100vh; z-index: 100;
31
+ width: 270px; background: rgba(5,5,30,0.9); backdrop-filter: blur(30px); border-right: 1px solid var(--border);
32
+ padding: 24px 16px; display: flex; flex-direction: column; position: fixed; height: 100vh; z-index: 100;
33
+ background-image: linear-gradient(180deg, rgba(139,92,246,0.05) 0%, transparent 30%);
32
34
  }
33
- .sidebar-logo { font-size: 20px; font-weight: 700; padding: 12px 12px; margin-bottom: 24px; display: flex; align-items: center; gap: 10px; background: var(--gradient); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
35
+ .sidebar-logo { font-size: 22px; font-weight: 700; padding: 12px 12px; margin-bottom: 28px; display: flex; align-items: center; gap: 10px; background: var(--gradient); -webkit-background-clip: text; -webkit-text-fill-color: transparent; letter-spacing: -0.5px; }
34
36
  .sidebar-logo span { background: var(--gradient); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
35
37
  .nav-item {
36
- display: flex; align-items: center; gap: 12px; padding: 10px 14px; border-radius: 10px;
37
- cursor: pointer; color: var(--text-muted); transition: all 0.2s ease; font-size: 14px; margin-bottom: 3px;
38
+ display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-radius: 12px;
39
+ cursor: pointer; color: var(--text-muted); transition: all 0.2s ease; font-size: 15px; margin-bottom: 4px; position: relative;
38
40
  }
39
41
  .nav-item:hover { background: var(--bg-hover); color: var(--text); transform: translateX(4px); }
40
- .nav-item.active { background: var(--accent-light); color: var(--accent); font-weight: 500; box-shadow: var(--glow-sm); }
41
- .nav-item .icon { width: 22px; text-align: center; font-size: 18px; }
42
- .main { flex: 1; margin-left: 260px; min-height: 100vh; }
42
+ .nav-item.active { background: var(--accent-light); color: #fff; font-weight: 600; box-shadow: var(--glow-sm); border: 1px solid var(--border); }
43
+ .nav-item .icon { width: 24px; text-align: center; font-size: 18px; }
44
+ .main { flex: 1; margin-left: 270px; min-height: 100vh; }
43
45
 
44
46
  /* Mobile */
45
47
  .mobile-header { display: none; background: var(--bg-card); border-bottom: 1px solid var(--border); padding: 12px 16px; position: sticky; top: 0; z-index: 50; }
@@ -56,30 +58,33 @@
56
58
  /* Page container */
57
59
  .page { display: none; padding: 32px; max-width: 1200px; margin: 0 auto; }
58
60
  .page.active { display: block; }
59
- .page-title { font-size: 32px; font-weight: 700; margin-bottom: 8px; background: var(--gradient); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
60
- .page-subtitle { color: var(--text-muted); font-size: 14px; margin-bottom: 24px; }
61
+ .page-title { font-size: 28px; font-weight: 700; margin-bottom: 8px; background: var(--gradient); background-size: 200% auto; -webkit-background-clip: text; -webkit-text-fill-color: transparent; animation: shimmer 3s linear infinite; letter-spacing: -0.5px; }
62
+ @keyframes shimmer { 0% { background-position: 0% center; } 100% { background-position: 200% center; } }
63
+ .page-subtitle { color: var(--text-muted); font-size: 15px; margin-bottom: 24px; }
61
64
 
62
65
  /* Cards */
63
- .card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 20px; transition: all 0.25s ease; backdrop-filter: blur(10px); box-shadow: var(--card-glow); }
64
- .card:hover { border-color: rgba(124,92,255,0.3); transform: translateY(-2px); box-shadow: 0 8px 40px rgba(0,0,0,0.4), var(--glow-sm); }
66
+ .card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 20px; transition: all 0.3s ease; backdrop-filter: blur(10px); box-shadow: var(--card-glow); position: relative; overflow: hidden; }
67
+ .card::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 2px; background: var(--gradient); transition: left 0.4s ease; }
68
+ .card:hover { border-color: rgba(139,92,246,0.4); transform: translateY(-3px); box-shadow: 0 12px 50px rgba(0,0,0,0.5), var(--glow); }
69
+ .card:hover::before { left: 0; }
65
70
  .card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
66
71
 
67
72
  /* Buttons */
68
- .btn { padding: 8px 20px; border-radius: 10px; font-size: 14px; font-weight: 500; transition: all 0.2s ease; display: inline-flex; align-items: center; gap: 8px; height: 36px; line-height: 20px; }
69
- .btn-primary { background: var(--gradient); color: white; box-shadow: var(--glow-sm); }
70
- .btn-primary:hover { transform: translateY(-1px); box-shadow: var(--glow); }
71
- .btn-secondary { background: rgba(255,255,255,0.05); color: var(--text); border: 1px solid var(--border); backdrop-filter: blur(10px); }
72
- .btn-secondary:hover { border-color: var(--accent); box-shadow: var(--glow-sm); }
73
+ .btn { padding: 8px 20px; border-radius: 10px; font-size: 14px; font-weight: 500; transition: all 0.2s ease; display: inline-flex; align-items: center; gap: 8px; height: 38px; line-height: 20px; position: relative; overflow: hidden; }
74
+ .btn-primary { background: var(--gradient-btn); background-size: 200% auto; color: white; box-shadow: var(--glow-sm); }
75
+ .btn-primary:hover { background-position: right center; transform: translateY(-2px); box-shadow: var(--glow); }
76
+ .btn-secondary { background: var(--bg-card); color: var(--text); border: 1px solid var(--border); backdrop-filter: blur(10px); }
77
+ .btn-secondary:hover { border-color: var(--accent); box-shadow: var(--glow-sm); transform: translateY(-1px); }
73
78
  .btn-danger { background: rgba(239,68,68,0.1); color: var(--red); }
74
79
  .btn-danger:hover { background: rgba(239,68,68,0.2); }
75
- .btn-sm { padding: 6px 12px; font-size: 13px; }
76
- .btn-lg { padding: 14px 28px; font-size: 16px; }
80
+ .btn-sm { padding: 6px 12px; font-size: 13px; height: 32px; }
81
+ .btn-lg { padding: 14px 28px; font-size: 16px; height: 48px; }
77
82
 
78
83
  /* Form elements */
79
- .input { width: 100%; padding: 8px 14px; height: 38px; background: var(--bg-input); border: 1px solid var(--border); border-radius: 10px; color: var(--text); font-size: 14px; outline: none; transition: all 0.2s ease; backdrop-filter: blur(5px); }
84
+ .input { width: 100%; padding: 8px 14px; height: 40px; background: var(--bg-input); border: 1px solid var(--border); border-radius: 10px; color: var(--text); font-size: 15px; outline: none; transition: all 0.2s ease; backdrop-filter: blur(5px); }
80
85
  .input:focus { border-color: var(--accent); box-shadow: var(--glow-sm); }
81
86
  .input::placeholder { color: var(--text-dim); }
82
- .label { display: block; font-size: 13px; font-weight: 500; color: var(--text-muted); margin-bottom: 6px; }
87
+ .label { display: block; font-size: 13px; font-weight: 500; color: var(--text-muted); margin-bottom: 6px; text-transform: uppercase; letter-spacing: 0.5px; }
83
88
  .form-group { margin-bottom: 20px; }
84
89
  select.input { appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%23737373' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; padding-right: 32px; }
85
90
 
@@ -168,9 +173,9 @@
168
173
  .empty-state .empty-desc { font-size: 14px; margin-bottom: 24px; }
169
174
 
170
175
  /* Confirm dialog */
171
- .dialog-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.7); backdrop-filter: blur(8px); z-index: 200; align-items: center; justify-content: center; }
176
+ .dialog-overlay { display: none; position: fixed; inset: 0; background: rgba(5,5,26,0.85); backdrop-filter: blur(12px); z-index: 200; align-items: center; justify-content: center; }
172
177
  .dialog-overlay.show { display: flex; }
173
- .dialog { background: rgba(20,20,40,0.95); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 28px; max-width: 400px; width: 90%; backdrop-filter: blur(20px); box-shadow: 0 20px 60px rgba(0,0,0,0.5), var(--glow); }
178
+ .dialog { background: rgba(15,15,45,0.95); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 32px; max-width: 420px; width: 90%; backdrop-filter: blur(30px); box-shadow: 0 25px 80px rgba(0,0,0,0.6), var(--glow); }
174
179
  .dialog-title { font-size: 16px; font-weight: 600; margin-bottom: 8px; }
175
180
  .dialog-desc { font-size: 14px; color: var(--text-muted); margin-bottom: 20px; }
176
181
  .dialog-actions { display: flex; justify-content: flex-end; gap: 8px; }
@@ -200,11 +205,11 @@
200
205
  .tab-panel.active { display: block; }
201
206
 
202
207
  /* Status dot */
203
- .status-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; animation: pulse 2s ease-in-out infinite; }
204
- .status-dot.green { background: var(--green); box-shadow: 0 0 8px var(--green); }
205
- .status-dot.red { background: var(--red); box-shadow: 0 0 8px var(--red); }
206
- .status-dot.yellow { background: var(--yellow); box-shadow: 0 0 8px var(--yellow); }
207
- @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
208
+ .status-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; animation: pulse 2s ease-in-out infinite; }
209
+ .status-dot.green { background: var(--green); box-shadow: 0 0 12px var(--green), 0 0 4px var(--green); }
210
+ .status-dot.red { background: var(--red); box-shadow: 0 0 12px var(--red), 0 0 4px var(--red); }
211
+ .status-dot.yellow { background: var(--yellow); box-shadow: 0 0 12px var(--yellow), 0 0 4px var(--yellow); }
212
+ @keyframes pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.6; transform: scale(0.85); } }
208
213
 
209
214
  /* Channel card */
210
215
  .channel-card { display: flex; align-items: center; gap: 16px; cursor: pointer; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opc-agent",
3
- "version": "4.0.31",
3
+ "version": "4.0.33",
4
4
  "description": "Open Agent Framework — Build, test, and run AI Agents for business workstations",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -7,19 +7,20 @@
7
7
  <style>
8
8
  * { margin: 0; padding: 0; box-sizing: border-box; }
9
9
  :root {
10
- --bg: #0a0a1a; --bg-card: rgba(255,255,255,0.03); --bg-hover: rgba(255,255,255,0.06); --bg-input: rgba(255,255,255,0.05);
11
- --border: rgba(255,255,255,0.08); --text: #f0f0f8; --text-muted: #8888aa; --text-dim: #555577;
12
- --accent: #7c5cff; --accent-hover: #6a4aee; --accent-light: rgba(124,92,255,0.12);
13
- --green: #34d399; --red: #f87171; --yellow: #fbbf24; --purple: #a78bfa;
14
- --gradient: linear-gradient(135deg, #7c5cff 0%, #00d4ff 100%);
15
- --glow: 0 0 20px rgba(124,92,255,0.25);
16
- --glow-sm: 0 0 10px rgba(124,92,255,0.15);
17
- --card-glow: 0 4px 30px rgba(0,0,0,0.3);
10
+ --bg: #05051a; --bg-card: rgba(15,15,40,0.6); --bg-hover: rgba(124,92,255,0.08); --bg-input: rgba(15,15,40,0.8);
11
+ --border: rgba(124,92,255,0.15); --text: #f0f0ff; --text-muted: #9090cc; --text-dim: #5555aa;
12
+ --accent: #8b5cf6; --accent-hover: #7c3aed; --accent-light: rgba(139,92,246,0.15);
13
+ --green: #10b981; --red: #f87171; --yellow: #fbbf24; --purple: #c084fc;
14
+ --gradient: linear-gradient(135deg, #8b5cf6 0%, #06b6d4 50%, #8b5cf6 100%);
15
+ --gradient-btn: linear-gradient(135deg, #8b5cf6 0%, #3b82f6 50%, #06b6d4 100%);
16
+ --glow: 0 0 30px rgba(139,92,246,0.4), 0 0 60px rgba(6,182,212,0.2);
17
+ --glow-sm: 0 0 15px rgba(139,92,246,0.25);
18
+ --card-glow: 0 4px 40px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.05);
18
19
  --font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
19
20
  --mono: 'JetBrains Mono', 'SF Mono', 'Fira Code', monospace;
20
- --radius: 12px; --radius-lg: 20px;
21
+ --radius: 14px; --radius-lg: 24px;
21
22
  }
22
- body { font-family: var(--font); background: var(--bg); color: var(--text); min-height: 100vh; font-size: 14px; line-height: 1.6; background-image: radial-gradient(ellipse at top, rgba(124,92,255,0.08) 0%, transparent 50%), radial-gradient(ellipse at bottom right, rgba(0,212,255,0.05) 0%, transparent 50%); }
23
+ body { font-family: var(--font); background: var(--bg); color: var(--text); min-height: 100vh; font-size: 15px; line-height: 1.6; background-image: radial-gradient(ellipse at 20% 0%, rgba(139,92,246,0.12) 0%, transparent 50%), radial-gradient(ellipse at 80% 100%, rgba(6,182,212,0.08) 0%, transparent 50%), url("data:image/svg+xml,%3Csvg width='60' height='60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 30h60M30 0v60' stroke='rgba(139,92,246,0.04)' stroke-width='0.5'/%3E%3C/svg%3E"); }
23
24
  a { color: var(--accent); text-decoration: none; }
24
25
  button { font-family: var(--font); cursor: pointer; border: none; }
25
26
  input, select, textarea { font-family: var(--font); }
@@ -27,19 +28,20 @@
27
28
  /* Layout */
28
29
  .app { display: flex; min-height: 100vh; }
29
30
  .sidebar {
30
- width: 260px; background: rgba(10,10,30,0.8); backdrop-filter: blur(20px); border-right: 1px solid var(--border);
31
- padding: 20px 14px; display: flex; flex-direction: column; position: fixed; height: 100vh; z-index: 100;
31
+ width: 270px; background: rgba(5,5,30,0.9); backdrop-filter: blur(30px); border-right: 1px solid var(--border);
32
+ padding: 24px 16px; display: flex; flex-direction: column; position: fixed; height: 100vh; z-index: 100;
33
+ background-image: linear-gradient(180deg, rgba(139,92,246,0.05) 0%, transparent 30%);
32
34
  }
33
- .sidebar-logo { font-size: 20px; font-weight: 700; padding: 12px 12px; margin-bottom: 24px; display: flex; align-items: center; gap: 10px; background: var(--gradient); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
35
+ .sidebar-logo { font-size: 22px; font-weight: 700; padding: 12px 12px; margin-bottom: 28px; display: flex; align-items: center; gap: 10px; background: var(--gradient); -webkit-background-clip: text; -webkit-text-fill-color: transparent; letter-spacing: -0.5px; }
34
36
  .sidebar-logo span { background: var(--gradient); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
35
37
  .nav-item {
36
- display: flex; align-items: center; gap: 12px; padding: 10px 14px; border-radius: 10px;
37
- cursor: pointer; color: var(--text-muted); transition: all 0.2s ease; font-size: 14px; margin-bottom: 3px;
38
+ display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-radius: 12px;
39
+ cursor: pointer; color: var(--text-muted); transition: all 0.2s ease; font-size: 15px; margin-bottom: 4px; position: relative;
38
40
  }
39
41
  .nav-item:hover { background: var(--bg-hover); color: var(--text); transform: translateX(4px); }
40
- .nav-item.active { background: var(--accent-light); color: var(--accent); font-weight: 500; box-shadow: var(--glow-sm); }
41
- .nav-item .icon { width: 22px; text-align: center; font-size: 18px; }
42
- .main { flex: 1; margin-left: 260px; min-height: 100vh; }
42
+ .nav-item.active { background: var(--accent-light); color: #fff; font-weight: 600; box-shadow: var(--glow-sm); border: 1px solid var(--border); }
43
+ .nav-item .icon { width: 24px; text-align: center; font-size: 18px; }
44
+ .main { flex: 1; margin-left: 270px; min-height: 100vh; }
43
45
 
44
46
  /* Mobile */
45
47
  .mobile-header { display: none; background: var(--bg-card); border-bottom: 1px solid var(--border); padding: 12px 16px; position: sticky; top: 0; z-index: 50; }
@@ -56,30 +58,33 @@
56
58
  /* Page container */
57
59
  .page { display: none; padding: 32px; max-width: 1200px; margin: 0 auto; }
58
60
  .page.active { display: block; }
59
- .page-title { font-size: 32px; font-weight: 700; margin-bottom: 8px; background: var(--gradient); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
60
- .page-subtitle { color: var(--text-muted); font-size: 14px; margin-bottom: 24px; }
61
+ .page-title { font-size: 28px; font-weight: 700; margin-bottom: 8px; background: var(--gradient); background-size: 200% auto; -webkit-background-clip: text; -webkit-text-fill-color: transparent; animation: shimmer 3s linear infinite; letter-spacing: -0.5px; }
62
+ @keyframes shimmer { 0% { background-position: 0% center; } 100% { background-position: 200% center; } }
63
+ .page-subtitle { color: var(--text-muted); font-size: 15px; margin-bottom: 24px; }
61
64
 
62
65
  /* Cards */
63
- .card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 20px; transition: all 0.25s ease; backdrop-filter: blur(10px); box-shadow: var(--card-glow); }
64
- .card:hover { border-color: rgba(124,92,255,0.3); transform: translateY(-2px); box-shadow: 0 8px 40px rgba(0,0,0,0.4), var(--glow-sm); }
66
+ .card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 20px; transition: all 0.3s ease; backdrop-filter: blur(10px); box-shadow: var(--card-glow); position: relative; overflow: hidden; }
67
+ .card::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 2px; background: var(--gradient); transition: left 0.4s ease; }
68
+ .card:hover { border-color: rgba(139,92,246,0.4); transform: translateY(-3px); box-shadow: 0 12px 50px rgba(0,0,0,0.5), var(--glow); }
69
+ .card:hover::before { left: 0; }
65
70
  .card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
66
71
 
67
72
  /* Buttons */
68
- .btn { padding: 8px 20px; border-radius: 10px; font-size: 14px; font-weight: 500; transition: all 0.2s ease; display: inline-flex; align-items: center; gap: 8px; height: 36px; line-height: 20px; }
69
- .btn-primary { background: var(--gradient); color: white; box-shadow: var(--glow-sm); }
70
- .btn-primary:hover { transform: translateY(-1px); box-shadow: var(--glow); }
71
- .btn-secondary { background: rgba(255,255,255,0.05); color: var(--text); border: 1px solid var(--border); backdrop-filter: blur(10px); }
72
- .btn-secondary:hover { border-color: var(--accent); box-shadow: var(--glow-sm); }
73
+ .btn { padding: 8px 20px; border-radius: 10px; font-size: 14px; font-weight: 500; transition: all 0.2s ease; display: inline-flex; align-items: center; gap: 8px; height: 38px; line-height: 20px; position: relative; overflow: hidden; }
74
+ .btn-primary { background: var(--gradient-btn); background-size: 200% auto; color: white; box-shadow: var(--glow-sm); }
75
+ .btn-primary:hover { background-position: right center; transform: translateY(-2px); box-shadow: var(--glow); }
76
+ .btn-secondary { background: var(--bg-card); color: var(--text); border: 1px solid var(--border); backdrop-filter: blur(10px); }
77
+ .btn-secondary:hover { border-color: var(--accent); box-shadow: var(--glow-sm); transform: translateY(-1px); }
73
78
  .btn-danger { background: rgba(239,68,68,0.1); color: var(--red); }
74
79
  .btn-danger:hover { background: rgba(239,68,68,0.2); }
75
- .btn-sm { padding: 6px 12px; font-size: 13px; }
76
- .btn-lg { padding: 14px 28px; font-size: 16px; }
80
+ .btn-sm { padding: 6px 12px; font-size: 13px; height: 32px; }
81
+ .btn-lg { padding: 14px 28px; font-size: 16px; height: 48px; }
77
82
 
78
83
  /* Form elements */
79
- .input { width: 100%; padding: 8px 14px; height: 38px; background: var(--bg-input); border: 1px solid var(--border); border-radius: 10px; color: var(--text); font-size: 14px; outline: none; transition: all 0.2s ease; backdrop-filter: blur(5px); }
84
+ .input { width: 100%; padding: 8px 14px; height: 40px; background: var(--bg-input); border: 1px solid var(--border); border-radius: 10px; color: var(--text); font-size: 15px; outline: none; transition: all 0.2s ease; backdrop-filter: blur(5px); }
80
85
  .input:focus { border-color: var(--accent); box-shadow: var(--glow-sm); }
81
86
  .input::placeholder { color: var(--text-dim); }
82
- .label { display: block; font-size: 13px; font-weight: 500; color: var(--text-muted); margin-bottom: 6px; }
87
+ .label { display: block; font-size: 13px; font-weight: 500; color: var(--text-muted); margin-bottom: 6px; text-transform: uppercase; letter-spacing: 0.5px; }
83
88
  .form-group { margin-bottom: 20px; }
84
89
  select.input { appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%23737373' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; padding-right: 32px; }
85
90
 
@@ -168,9 +173,9 @@
168
173
  .empty-state .empty-desc { font-size: 14px; margin-bottom: 24px; }
169
174
 
170
175
  /* Confirm dialog */
171
- .dialog-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.7); backdrop-filter: blur(8px); z-index: 200; align-items: center; justify-content: center; }
176
+ .dialog-overlay { display: none; position: fixed; inset: 0; background: rgba(5,5,26,0.85); backdrop-filter: blur(12px); z-index: 200; align-items: center; justify-content: center; }
172
177
  .dialog-overlay.show { display: flex; }
173
- .dialog { background: rgba(20,20,40,0.95); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 28px; max-width: 400px; width: 90%; backdrop-filter: blur(20px); box-shadow: 0 20px 60px rgba(0,0,0,0.5), var(--glow); }
178
+ .dialog { background: rgba(15,15,45,0.95); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 32px; max-width: 420px; width: 90%; backdrop-filter: blur(30px); box-shadow: 0 25px 80px rgba(0,0,0,0.6), var(--glow); }
174
179
  .dialog-title { font-size: 16px; font-weight: 600; margin-bottom: 8px; }
175
180
  .dialog-desc { font-size: 14px; color: var(--text-muted); margin-bottom: 20px; }
176
181
  .dialog-actions { display: flex; justify-content: flex-end; gap: 8px; }
@@ -200,11 +205,11 @@
200
205
  .tab-panel.active { display: block; }
201
206
 
202
207
  /* Status dot */
203
- .status-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; animation: pulse 2s ease-in-out infinite; }
204
- .status-dot.green { background: var(--green); box-shadow: 0 0 8px var(--green); }
205
- .status-dot.red { background: var(--red); box-shadow: 0 0 8px var(--red); }
206
- .status-dot.yellow { background: var(--yellow); box-shadow: 0 0 8px var(--yellow); }
207
- @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
208
+ .status-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; animation: pulse 2s ease-in-out infinite; }
209
+ .status-dot.green { background: var(--green); box-shadow: 0 0 12px var(--green), 0 0 4px var(--green); }
210
+ .status-dot.red { background: var(--red); box-shadow: 0 0 12px var(--red), 0 0 4px var(--red); }
211
+ .status-dot.yellow { background: var(--yellow); box-shadow: 0 0 12px var(--yellow), 0 0 4px var(--yellow); }
212
+ @keyframes pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.6; transform: scale(0.85); } }
208
213
 
209
214
  /* Channel card */
210
215
  .channel-card { display: flex; align-items: center; gap: 16px; cursor: pointer; }