agenticworkflowsspace commited on
Commit
bfc48bd
Β·
verified Β·
1 Parent(s): 2002023

Upload frontend/src/index.css with huggingface_hub

Browse files
Files changed (1) hide show
  1. frontend/src/index.css +285 -0
frontend/src/index.css ADDED
@@ -0,0 +1,285 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700;900&family=Inter:wght@300;400;500;600&display=swap');
2
+
3
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
4
+
5
+ :root {
6
+ --blue: #00f2ff;
7
+ --blue-dim: rgba(0,242,255,0.15);
8
+ --blue-glow: 0 0 20px rgba(0,242,255,0.35);
9
+ --bg: #020b12;
10
+ --bg2: #041520;
11
+ --card: rgba(4,21,32,0.85);
12
+ --border: rgba(0,242,255,0.18);
13
+ --text: #e8f4f8;
14
+ --dim: rgba(232,244,248,0.45);
15
+ --purple: #7c3aed;
16
+ --green: #10b981;
17
+ }
18
+
19
+ html, body, #root {
20
+ height: 100%;
21
+ background: var(--bg);
22
+ color: var(--text);
23
+ font-family: 'Inter', sans-serif;
24
+ font-size: 14px;
25
+ overflow-x: hidden;
26
+ }
27
+
28
+ /* ── Animated grid background ── */
29
+ body {
30
+ background-image:
31
+ radial-gradient(ellipse 80% 60% at 50% -20%, rgba(0,242,255,0.08) 0%, transparent 70%),
32
+ linear-gradient(rgba(0,242,255,0.035) 1px, transparent 1px),
33
+ linear-gradient(90deg, rgba(0,242,255,0.035) 1px, transparent 1px);
34
+ background-size: 100% 100%, 48px 48px, 48px 48px;
35
+ }
36
+
37
+ /* ── Floating particles ── */
38
+ .particles { position: fixed; inset: 0; pointer-events: none; z-index: 0; }
39
+ .particle {
40
+ position: absolute;
41
+ border-radius: 50%;
42
+ background: var(--blue);
43
+ box-shadow: 0 0 6px var(--blue);
44
+ }
45
+
46
+ /* ── Layout ── */
47
+ .layout {
48
+ position: relative;
49
+ z-index: 1;
50
+ max-width: 900px;
51
+ margin: 0 auto;
52
+ padding: 2.5rem 1.5rem 4rem;
53
+ display: flex;
54
+ flex-direction: column;
55
+ gap: 1.2rem;
56
+ min-height: 100vh;
57
+ }
58
+
59
+ /* ── Hero ── */
60
+ .hero {
61
+ display: flex;
62
+ align-items: center;
63
+ gap: 1rem;
64
+ padding-bottom: 0.5rem;
65
+ }
66
+ .hero-icon {
67
+ width: 56px; height: 56px;
68
+ border: 1px solid var(--border);
69
+ border-radius: 12px;
70
+ display: flex; align-items: center; justify-content: center;
71
+ background: var(--blue-dim);
72
+ box-shadow: var(--blue-glow);
73
+ flex-shrink: 0;
74
+ }
75
+ h1 {
76
+ font-family: 'Orbitron', sans-serif;
77
+ font-size: clamp(1.4rem, 4vw, 2rem);
78
+ font-weight: 900;
79
+ letter-spacing: 3px;
80
+ color: var(--blue);
81
+ text-shadow: 0 0 20px rgba(0,242,255,0.5);
82
+ line-height: 1;
83
+ }
84
+ h1 .dim { opacity: 0.25; }
85
+ .subtitle {
86
+ font-size: 0.65rem;
87
+ letter-spacing: 2px;
88
+ color: var(--dim);
89
+ margin-top: 4px;
90
+ font-weight: 500;
91
+ }
92
+
93
+ /* ── Status bar ── */
94
+ .status-bar {
95
+ display: flex; align-items: center; gap: 10px;
96
+ padding: 0.7rem 1rem;
97
+ background: var(--card);
98
+ border: 1px solid var(--border);
99
+ border-radius: 8px;
100
+ font-size: 0.75rem;
101
+ letter-spacing: 1px;
102
+ }
103
+ .status-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; animation: pulse 1.5s ease-in-out infinite; }
104
+ @keyframes pulse { 0%,100% { box-shadow: 0 0 4px currentColor; } 50% { box-shadow: 0 0 12px currentColor; } }
105
+ .status-msg { flex: 1; text-transform: uppercase; }
106
+ .status-pct { font-family: 'Orbitron', sans-serif; font-weight: 700; color: var(--blue); }
107
+ .progress-track { height: 3px; background: rgba(255,255,255,0.07); border-radius: 2px; overflow: hidden; }
108
+ .progress-fill { height: 100%; border-radius: 2px; transition: width 0.4s ease; box-shadow: 0 0 8px currentColor; }
109
+
110
+ /* ── Tabs ── */
111
+ .tabs { display: flex; gap: 0.5rem; }
112
+ .tab {
113
+ padding: 0.55rem 1.2rem;
114
+ border-radius: 8px;
115
+ border: 1px solid var(--border);
116
+ background: transparent;
117
+ color: var(--dim);
118
+ font-size: 0.75rem;
119
+ font-weight: 600;
120
+ letter-spacing: 1px;
121
+ cursor: pointer;
122
+ transition: all 0.2s;
123
+ display: flex; align-items: center; gap: 6px;
124
+ }
125
+ .tab:hover { background: var(--blue-dim); color: var(--text); }
126
+ .tab.active { background: var(--blue-dim); border-color: var(--blue); color: var(--blue); box-shadow: var(--blue-glow); }
127
+ .badge {
128
+ background: var(--blue); color: #000;
129
+ border-radius: 999px; padding: 0 6px;
130
+ font-size: 0.65rem; font-weight: 700;
131
+ }
132
+
133
+ /* ── Main Panel ── */
134
+ .panel {
135
+ background: var(--card);
136
+ backdrop-filter: blur(16px);
137
+ border: 1px solid var(--border);
138
+ border-radius: 16px;
139
+ padding: 2rem;
140
+ position: relative;
141
+ overflow: hidden;
142
+ }
143
+ /* Scan line effect */
144
+ .panel::before {
145
+ content: '';
146
+ position: absolute;
147
+ top: 0; left: -100%; width: 60%; height: 2px;
148
+ background: linear-gradient(90deg, transparent, var(--blue), transparent);
149
+ animation: scan 4s linear infinite;
150
+ }
151
+ @keyframes scan { 0% { left: -60%; } 100% { left: 160%; } }
152
+
153
+ /* ── Search form ── */
154
+ .search-form { display: flex; flex-direction: column; gap: 1.2rem; }
155
+ .field-group { display: flex; flex-direction: column; gap: 6px; }
156
+ .field-label { font-size: 0.65rem; letter-spacing: 2px; color: var(--blue); font-weight: 600; }
157
+ .input-wrap { position: relative; display: flex; align-items: center; }
158
+ .input-icon {
159
+ position: absolute; left: 12px;
160
+ font-size: 0.9rem; pointer-events: none;
161
+ opacity: 0.5;
162
+ }
163
+ .input {
164
+ width: 100%;
165
+ background: rgba(255,255,255,0.04);
166
+ border: 1px solid var(--border);
167
+ border-radius: 8px;
168
+ padding: 0.8rem 0.8rem 0.8rem 2.5rem;
169
+ color: var(--text);
170
+ font-size: 0.9rem;
171
+ font-family: inherit;
172
+ transition: all 0.25s;
173
+ }
174
+ .input:focus { outline: none; border-color: var(--blue); background: rgba(0,242,255,0.04); box-shadow: var(--blue-glow); }
175
+ .input::placeholder { color: var(--dim); }
176
+ .input:disabled { opacity: 0.5; cursor: not-allowed; }
177
+
178
+ .btn-execute {
179
+ margin-top: 0.5rem;
180
+ padding: 0.9rem 1.5rem;
181
+ background: var(--blue);
182
+ color: #000;
183
+ border: none;
184
+ border-radius: 10px;
185
+ font-family: 'Orbitron', sans-serif;
186
+ font-size: 0.8rem;
187
+ font-weight: 700;
188
+ letter-spacing: 2px;
189
+ cursor: pointer;
190
+ transition: all 0.25s;
191
+ display: flex; align-items: center; justify-content: center; gap: 8px;
192
+ }
193
+ .btn-execute:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 0 30px var(--blue); }
194
+ .btn-execute:disabled { opacity: 0.5; cursor: not-allowed; }
195
+ .spinner { display: inline-block; animation: spin 1s linear infinite; }
196
+ @keyframes spin { to { transform: rotate(360deg); } }
197
+
198
+ /* ── Info Cards ── */
199
+ .info-cards {
200
+ display: flex; gap: 1rem; margin-top: 2rem;
201
+ }
202
+ .info-card {
203
+ flex: 1; text-align: center;
204
+ padding: 1rem;
205
+ border: 1px solid var(--border);
206
+ border-radius: 10px;
207
+ background: rgba(0,242,255,0.03);
208
+ }
209
+ .info-num { font-family: 'Orbitron', sans-serif; font-size: 1.5rem; color: var(--blue); }
210
+ .info-label { font-size: 0.65rem; letter-spacing: 2px; color: var(--dim); margin-top: 4px; }
211
+
212
+ /* ── Results ── */
213
+ .results-panel { padding: 1.5rem; }
214
+ .results-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.2rem; }
215
+ .results-count { font-family: 'Orbitron', sans-serif; font-size: 0.75rem; color: var(--blue); letter-spacing: 1px; }
216
+ .btn-export {
217
+ padding: 0.45rem 1rem;
218
+ background: rgba(16,185,129,0.15);
219
+ border: 1px solid var(--green);
220
+ border-radius: 6px;
221
+ color: var(--green);
222
+ font-size: 0.7rem;
223
+ font-weight: 600;
224
+ letter-spacing: 1px;
225
+ cursor: pointer;
226
+ transition: all 0.2s;
227
+ }
228
+ .btn-export:hover { background: rgba(16,185,129,0.3); box-shadow: 0 0 12px var(--green); }
229
+
230
+ .table-wrap { overflow-x: auto; }
231
+ .results-table { width: 100%; border-collapse: collapse; }
232
+ .results-table th {
233
+ text-align: left; padding: 0.7rem 0.8rem;
234
+ font-size: 0.6rem; letter-spacing: 2px; color: var(--blue);
235
+ border-bottom: 1px solid var(--border);
236
+ font-weight: 600;
237
+ }
238
+ .results-table td {
239
+ padding: 0.9rem 0.8rem;
240
+ border-bottom: 1px solid rgba(255,255,255,0.04);
241
+ vertical-align: top;
242
+ }
243
+ .results-table tr:hover td { background: rgba(0,242,255,0.025); }
244
+
245
+ .biz-name { font-weight: 600; font-size: 0.85rem; margin-bottom: 3px; }
246
+ .biz-url { color: var(--blue); font-size: 0.7rem; text-decoration: none; opacity: 0.8; display: block; }
247
+ .biz-url:hover { opacity: 1; }
248
+ .biz-phone { font-size: 0.7rem; color: var(--dim); margin-top: 2px; }
249
+ .email-cell { font-size: 0.75rem; word-break: break-all; }
250
+ .dim-text { color: var(--dim); }
251
+
252
+ .rating-badge {
253
+ font-family: 'Orbitron', sans-serif;
254
+ font-size: 0.7rem; color: var(--blue);
255
+ background: var(--blue-dim);
256
+ padding: 2px 8px; border-radius: 4px;
257
+ }
258
+
259
+ .channels { display: flex; gap: 6px; flex-wrap: wrap; }
260
+ .ch-btn {
261
+ padding: 2px 8px; border-radius: 4px;
262
+ font-size: 0.65rem; font-weight: 700;
263
+ text-decoration: none; letter-spacing: 1px;
264
+ background: rgba(0,242,255,0.1); color: var(--blue);
265
+ border: 1px solid var(--border);
266
+ transition: all 0.15s;
267
+ text-transform: uppercase;
268
+ }
269
+ .ch-btn:hover { background: var(--blue-dim); }
270
+
271
+ .status-chip { font-size: 0.65rem; font-weight: 700; letter-spacing: 1px; padding: 2px 8px; border-radius: 999px; }
272
+ .chip-ok { background: rgba(16,185,129,0.15); color: var(--green); }
273
+ .chip-warn { background: rgba(239,68,68,0.15); color: #f87171; }
274
+
275
+ .empty-state { text-align: center; padding: 3rem; color: var(--dim); font-size: 0.9rem; }
276
+
277
+ /* ── Footer ── */
278
+ .footer {
279
+ margin-top: auto;
280
+ text-align: center;
281
+ font-size: 0.65rem;
282
+ letter-spacing: 2px;
283
+ color: rgba(255,255,255,0.15);
284
+ padding-top: 2rem;
285
+ }