gaard-client 0.1.0__py3-none-any.whl

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.
@@ -0,0 +1,511 @@
1
+ :root {
2
+ color-scheme: light;
3
+ --bg: #f4f6f8;
4
+ --panel: #ffffff;
5
+ --text: #17212b;
6
+ --muted: #627081;
7
+ --line: #d7dee8;
8
+ --accent: #176b87;
9
+ --accent-strong: #10536a;
10
+ --danger: #a33b3b;
11
+ --shadow: 0 8px 24px rgba(23, 33, 43, 0.08);
12
+ font-family:
13
+ Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
14
+ sans-serif;
15
+ }
16
+
17
+ * {
18
+ box-sizing: border-box;
19
+ }
20
+
21
+ body {
22
+ margin: 0;
23
+ height: 100vh;
24
+ height: 100dvh;
25
+ min-width: 320px;
26
+ overflow: hidden;
27
+ background: var(--bg);
28
+ color: var(--text);
29
+ }
30
+
31
+ button,
32
+ textarea {
33
+ font: inherit;
34
+ }
35
+
36
+ .shell {
37
+ height: 100vh;
38
+ height: 100dvh;
39
+ display: grid;
40
+ grid-template-rows: auto minmax(0, 1fr) auto;
41
+ overflow: hidden;
42
+ }
43
+
44
+ .header {
45
+ min-height: 68px;
46
+ display: flex;
47
+ align-items: center;
48
+ padding: 16px 24px;
49
+ background: var(--panel);
50
+ border-bottom: 1px solid var(--line);
51
+ }
52
+
53
+ .header h1 {
54
+ margin: 0;
55
+ font-size: 20px;
56
+ line-height: 1.25;
57
+ font-weight: 750;
58
+ }
59
+
60
+ .history {
61
+ min-height: 0;
62
+ overflow: auto;
63
+ padding: 24px;
64
+ scroll-padding: 24px;
65
+ display: grid;
66
+ align-content: start;
67
+ gap: 16px;
68
+ overscroll-behavior: contain;
69
+ }
70
+
71
+ .empty-state {
72
+ color: var(--muted);
73
+ font-size: 14px;
74
+ }
75
+
76
+ .exchange {
77
+ width: min(920px, 100%);
78
+ justify-self: center;
79
+ display: grid;
80
+ gap: 12px;
81
+ padding: 18px;
82
+ border: 1px solid var(--line);
83
+ border-radius: 8px;
84
+ background: var(--panel);
85
+ box-shadow: var(--shadow);
86
+ }
87
+
88
+ .exchange.error {
89
+ border-color: rgba(163, 59, 59, 0.45);
90
+ }
91
+
92
+ .exchange-top {
93
+ display: grid;
94
+ grid-template-columns: minmax(0, 1fr) auto;
95
+ align-items: start;
96
+ gap: 10px;
97
+ }
98
+
99
+ .question span,
100
+ .answer span {
101
+ display: block;
102
+ margin-bottom: 4px;
103
+ color: var(--muted);
104
+ font-size: 12px;
105
+ font-weight: 700;
106
+ }
107
+
108
+ .question p,
109
+ .answer p {
110
+ margin: 0;
111
+ line-height: 1.55;
112
+ overflow-wrap: anywhere;
113
+ white-space: pre-wrap;
114
+ }
115
+
116
+ .answer p {
117
+ font-size: 16px;
118
+ }
119
+
120
+ .exchange.error .answer p {
121
+ color: var(--danger);
122
+ }
123
+
124
+ .message-actions {
125
+ display: flex;
126
+ align-items: center;
127
+ gap: 4px;
128
+ margin: -5px -5px 0 0;
129
+ }
130
+
131
+ .retry-button,
132
+ .save-widget-button {
133
+ width: 28px;
134
+ height: 28px;
135
+ display: inline-grid;
136
+ place-items: center;
137
+ border: 1px solid transparent;
138
+ border-radius: 6px;
139
+ background: transparent;
140
+ color: var(--muted);
141
+ cursor: pointer;
142
+ opacity: 0.28;
143
+ }
144
+
145
+ .retry-button:hover,
146
+ .retry-button:focus-visible,
147
+ .save-widget-button:hover,
148
+ .save-widget-button:focus-visible {
149
+ border-color: rgba(23, 107, 135, 0.18);
150
+ background: rgba(23, 107, 135, 0.06);
151
+ color: var(--accent);
152
+ opacity: 0.78;
153
+ }
154
+
155
+ .retry-button:focus-visible,
156
+ .save-widget-button:focus-visible {
157
+ outline: 2px solid rgba(23, 107, 135, 0.22);
158
+ outline-offset: 2px;
159
+ }
160
+
161
+ .retry-button:disabled,
162
+ .save-widget-button:disabled {
163
+ cursor: progress;
164
+ opacity: 0.16;
165
+ }
166
+
167
+ .retry-button svg,
168
+ .save-widget-button svg {
169
+ width: 15px;
170
+ height: 15px;
171
+ fill: none;
172
+ stroke: currentColor;
173
+ stroke-width: 2;
174
+ stroke-linecap: round;
175
+ stroke-linejoin: round;
176
+ }
177
+
178
+ .save-notice {
179
+ padding: 8px 10px;
180
+ border-radius: 8px;
181
+ font-size: 13px;
182
+ font-weight: 650;
183
+ line-height: 1.4;
184
+ }
185
+
186
+ .save-notice.success {
187
+ border: 1px solid rgba(36, 116, 90, 0.26);
188
+ background: #eef9f4;
189
+ color: #205f4d;
190
+ }
191
+
192
+ .save-notice.error {
193
+ border: 1px solid rgba(163, 59, 59, 0.24);
194
+ background: #fff1f1;
195
+ color: var(--danger);
196
+ }
197
+
198
+ .mock-warning {
199
+ padding: 10px 12px;
200
+ border: 1px solid rgba(150, 96, 16, 0.3);
201
+ border-radius: 8px;
202
+ background: #fff7e8;
203
+ color: #6f4608;
204
+ font-size: 13px;
205
+ font-weight: 650;
206
+ line-height: 1.4;
207
+ }
208
+
209
+ .investigation-progress {
210
+ display: grid;
211
+ gap: 7px;
212
+ margin: 0;
213
+ padding: 10px 12px;
214
+ border: 1px solid rgba(23, 107, 135, 0.18);
215
+ border-radius: 8px;
216
+ background: #f3fafb;
217
+ color: var(--muted);
218
+ font-size: 13px;
219
+ list-style: none;
220
+ }
221
+
222
+ .investigation-progress > li {
223
+ display: flex;
224
+ align-items: center;
225
+ gap: 8px;
226
+ min-height: 18px;
227
+ }
228
+
229
+ .investigation-progress > li::before {
230
+ content: "";
231
+ width: 8px;
232
+ height: 8px;
233
+ flex: 0 0 auto;
234
+ border-radius: 50%;
235
+ background: rgba(23, 107, 135, 0.28);
236
+ }
237
+
238
+ .investigation-progress > li.done::before {
239
+ background: var(--accent);
240
+ }
241
+
242
+ .investigation-progress > li.active {
243
+ color: var(--text);
244
+ font-weight: 700;
245
+ }
246
+
247
+ .investigation-progress > li.active::before {
248
+ background: var(--accent);
249
+ box-shadow: 0 0 0 4px rgba(23, 107, 135, 0.12);
250
+ }
251
+
252
+ .investigation-progress p {
253
+ margin: 0;
254
+ overflow-wrap: anywhere;
255
+ }
256
+
257
+ .investigation-progress ul {
258
+ display: grid;
259
+ gap: 3px;
260
+ margin: 4px 0 0;
261
+ padding-left: 16px;
262
+ color: var(--muted);
263
+ font-weight: 500;
264
+ }
265
+
266
+ .meta-row {
267
+ display: flex;
268
+ align-items: center;
269
+ justify-content: space-between;
270
+ gap: 12px;
271
+ padding-top: 4px;
272
+ }
273
+
274
+ .meta {
275
+ display: flex;
276
+ flex-wrap: wrap;
277
+ gap: 12px;
278
+ margin: 0;
279
+ color: var(--muted);
280
+ font-size: 12px;
281
+ }
282
+
283
+ .meta div {
284
+ display: flex;
285
+ gap: 4px;
286
+ }
287
+
288
+ .meta dt,
289
+ .meta dd {
290
+ margin: 0;
291
+ }
292
+
293
+ .meta dt {
294
+ font-weight: 700;
295
+ }
296
+
297
+ .data-toggle {
298
+ min-height: 26px;
299
+ padding: 2px 8px;
300
+ border: 1px solid transparent;
301
+ border-radius: 6px;
302
+ background: transparent;
303
+ color: var(--accent);
304
+ font-size: 12px;
305
+ font-weight: 700;
306
+ line-height: 1;
307
+ cursor: pointer;
308
+ white-space: nowrap;
309
+ }
310
+
311
+ .data-toggle:hover {
312
+ border-color: rgba(23, 107, 135, 0.28);
313
+ background: rgba(23, 107, 135, 0.08);
314
+ }
315
+
316
+ .data-toggle:focus-visible {
317
+ outline: 2px solid rgba(23, 107, 135, 0.25);
318
+ outline-offset: 2px;
319
+ }
320
+
321
+ .data-table-wrap {
322
+ max-width: 100%;
323
+ overflow: auto;
324
+ border: 1px solid var(--line);
325
+ border-radius: 8px;
326
+ }
327
+
328
+ .data-table {
329
+ width: 100%;
330
+ min-width: 420px;
331
+ border-collapse: collapse;
332
+ font-size: 13px;
333
+ }
334
+
335
+ .data-table th,
336
+ .data-table td {
337
+ max-width: 320px;
338
+ padding: 9px 10px;
339
+ border-bottom: 1px solid var(--line);
340
+ text-align: left;
341
+ vertical-align: top;
342
+ overflow-wrap: anywhere;
343
+ }
344
+
345
+ .data-table th {
346
+ background: #f7f9fb;
347
+ color: var(--muted);
348
+ font-size: 12px;
349
+ font-weight: 750;
350
+ }
351
+
352
+ .data-table tbody tr:last-child td {
353
+ border-bottom: 0;
354
+ }
355
+
356
+ .data-table-empty {
357
+ padding: 10px 12px;
358
+ border: 1px solid var(--line);
359
+ border-radius: 8px;
360
+ color: var(--muted);
361
+ font-size: 13px;
362
+ }
363
+
364
+ .query-bar {
365
+ min-height: 0;
366
+ display: grid;
367
+ grid-template-columns: auto minmax(0, 1fr) 44px;
368
+ align-items: end;
369
+ gap: 10px;
370
+ padding: 16px 24px 20px;
371
+ background: rgba(244, 246, 248, 0.94);
372
+ border-top: 1px solid var(--line);
373
+ backdrop-filter: blur(8px);
374
+ }
375
+
376
+ .mode-control {
377
+ min-width: 192px;
378
+ display: grid;
379
+ grid-template-columns: 1fr 1fr;
380
+ gap: 2px;
381
+ height: 44px;
382
+ margin: 0;
383
+ padding: 3px;
384
+ border: 1px solid var(--line);
385
+ border-radius: 8px;
386
+ background: white;
387
+ }
388
+
389
+ .mode-control legend {
390
+ position: absolute;
391
+ width: 1px;
392
+ height: 1px;
393
+ margin: -1px;
394
+ padding: 0;
395
+ overflow: hidden;
396
+ clip: rect(0 0 0 0);
397
+ border: 0;
398
+ }
399
+
400
+ .mode-control label {
401
+ display: inline-grid;
402
+ place-items: center;
403
+ min-width: 0;
404
+ border-radius: 6px;
405
+ color: var(--muted);
406
+ font-size: 12px;
407
+ font-weight: 750;
408
+ line-height: 1;
409
+ cursor: pointer;
410
+ }
411
+
412
+ .mode-control label.active {
413
+ background: rgba(23, 107, 135, 0.1);
414
+ color: var(--accent);
415
+ }
416
+
417
+ .mode-control input {
418
+ position: absolute;
419
+ opacity: 0;
420
+ pointer-events: none;
421
+ }
422
+
423
+ .mode-control:focus-within {
424
+ outline: 2px solid rgba(23, 107, 135, 0.18);
425
+ border-color: var(--accent);
426
+ }
427
+
428
+ .query-bar textarea {
429
+ width: 100%;
430
+ min-height: 44px;
431
+ max-height: 160px;
432
+ padding: 11px 12px;
433
+ border: 1px solid var(--line);
434
+ border-radius: 8px;
435
+ resize: vertical;
436
+ background: white;
437
+ color: var(--text);
438
+ line-height: 1.4;
439
+ }
440
+
441
+ .query-bar textarea:focus {
442
+ outline: 2px solid rgba(23, 107, 135, 0.18);
443
+ border-color: var(--accent);
444
+ }
445
+
446
+ .send-button {
447
+ width: 44px;
448
+ height: 44px;
449
+ display: inline-grid;
450
+ place-items: center;
451
+ border: 1px solid var(--accent);
452
+ border-radius: 8px;
453
+ background: var(--accent);
454
+ color: white;
455
+ cursor: pointer;
456
+ }
457
+
458
+ .send-button:hover {
459
+ background: var(--accent-strong);
460
+ }
461
+
462
+ .send-button:disabled,
463
+ .query-bar textarea:disabled,
464
+ .mode-control:disabled {
465
+ cursor: progress;
466
+ opacity: 0.7;
467
+ }
468
+
469
+ .send-button svg {
470
+ width: 18px;
471
+ height: 18px;
472
+ fill: none;
473
+ stroke: currentColor;
474
+ stroke-width: 2;
475
+ stroke-linecap: round;
476
+ stroke-linejoin: round;
477
+ }
478
+
479
+ @media (max-width: 720px) {
480
+ .header {
481
+ padding: 14px 16px;
482
+ }
483
+
484
+ .header h1 {
485
+ font-size: 17px;
486
+ }
487
+
488
+ .history {
489
+ padding: 16px;
490
+ scroll-padding: 16px;
491
+ }
492
+
493
+ .query-bar {
494
+ grid-template-columns: minmax(0, 1fr) 44px;
495
+ padding: 12px 16px 16px;
496
+ }
497
+
498
+ .mode-control {
499
+ grid-column: 1 / -1;
500
+ min-width: 0;
501
+ }
502
+
503
+ .meta-row {
504
+ align-items: flex-start;
505
+ flex-direction: column;
506
+ }
507
+
508
+ .data-table {
509
+ min-width: 360px;
510
+ }
511
+ }
@@ -0,0 +1,14 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>GAARD Client</title>
7
+ <link rel="stylesheet" href="/assets/styles.css" />
8
+ </head>
9
+ <body>
10
+ <div id="app"></div>
11
+ <script src="/config.js"></script>
12
+ <script type="module" src="/assets/main.js"></script>
13
+ </body>
14
+ </html>