cnhkmcp 1.3.6__py3-none-any.whl → 1.3.7__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.
Files changed (57) hide show
  1. cnhkmcp/__init__.py +1 -1
  2. cnhkmcp/untracked/APP/.gitignore +32 -0
  3. cnhkmcp/untracked/APP/MODULAR_STRUCTURE.md +123 -0
  4. cnhkmcp/untracked/APP/README.md +309 -0
  5. cnhkmcp/untracked/APP/__pycache__/app.cpython-313.pyc +0 -0
  6. cnhkmcp/untracked/APP/blueprints/__init__.py +5 -0
  7. cnhkmcp/untracked/APP/blueprints/__pycache__/__init__.cpython-313.pyc +0 -0
  8. cnhkmcp/untracked/APP/blueprints/__pycache__/feature_engineering.cpython-313.pyc +0 -0
  9. cnhkmcp/untracked/APP/blueprints/__pycache__/idea_house.cpython-313.pyc +0 -0
  10. cnhkmcp/untracked/APP/blueprints/__pycache__/inspiration_house.cpython-313.pyc +0 -0
  11. cnhkmcp/untracked/APP/blueprints/__pycache__/paper_analysis.cpython-313.pyc +0 -0
  12. cnhkmcp/untracked/APP/blueprints/__pycache__/simulator.cpython-313.pyc +0 -0
  13. cnhkmcp/untracked/APP/blueprints/__pycache__/unified_tools.cpython-313.pyc +0 -0
  14. cnhkmcp/untracked/APP/blueprints/__pycache__/wqb_simulator.cpython-313.pyc +0 -0
  15. cnhkmcp/untracked/APP/blueprints/feature_engineering.py +347 -0
  16. cnhkmcp/untracked/APP/blueprints/idea_house.py +221 -0
  17. cnhkmcp/untracked/APP/blueprints/inspiration_house.py +432 -0
  18. cnhkmcp/untracked/APP/blueprints/paper_analysis.py +570 -0
  19. cnhkmcp/untracked/APP/custom_templates/templates.json +4582 -0
  20. cnhkmcp/untracked/APP/hkSimulator/ace_lib.py +1476 -0
  21. cnhkmcp/untracked/APP/hkSimulator/autosimulator.py +346 -0
  22. cnhkmcp/untracked/APP/hkSimulator/helpful_functions.py +180 -0
  23. cnhkmcp/untracked/APP/mirror_config.txt +20 -0
  24. cnhkmcp/untracked/APP/operaters.csv +129 -0
  25. cnhkmcp/untracked/APP/requirements.txt +44 -0
  26. cnhkmcp/untracked/APP/run_app.bat +28 -0
  27. cnhkmcp/untracked/APP/run_app.sh +34 -0
  28. cnhkmcp/untracked/APP/setup_tsinghua.bat +39 -0
  29. cnhkmcp/untracked/APP/setup_tsinghua.sh +43 -0
  30. cnhkmcp/untracked/APP/simulator/__pycache__/simulator_wqb.cpython-313.pyc +0 -0
  31. cnhkmcp/untracked/APP/simulator/alpha_submitter.py +366 -0
  32. cnhkmcp/untracked/APP/simulator/simulator_wqb.py +602 -0
  33. cnhkmcp/untracked/APP/ssrn-3332513.pdf +109188 -19
  34. cnhkmcp/untracked/APP/static/brain.js +478 -0
  35. cnhkmcp/untracked/APP/static/decoder.js +1275 -0
  36. cnhkmcp/untracked/APP/static/feature_engineering.js +1729 -0
  37. cnhkmcp/untracked/APP/static/idea_house.js +937 -0
  38. cnhkmcp/untracked/APP/static/inspiration_house.js +868 -0
  39. cnhkmcp/untracked/APP/static/paper_analysis.js +390 -0
  40. cnhkmcp/untracked/APP/static/script.js +2577 -0
  41. cnhkmcp/untracked/APP/static/simulator.js +597 -0
  42. cnhkmcp/untracked/APP/static/styles.css +3099 -0
  43. cnhkmcp/untracked/APP/templates/feature_engineering.html +959 -0
  44. cnhkmcp/untracked/APP/templates/idea_house.html +563 -0
  45. cnhkmcp/untracked/APP/templates/index.html +769 -0
  46. cnhkmcp/untracked/APP/templates/inspiration_house.html +860 -0
  47. cnhkmcp/untracked/APP/templates/paper_analysis.html +90 -0
  48. cnhkmcp/untracked/APP/templates/simulator.html +342 -0
  49. cnhkmcp/untracked/APP//321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/231/320/243/321/205/342/225/235/320/220/321/206/320/230/320/241.py +1489 -0
  50. {cnhkmcp-1.3.6.dist-info → cnhkmcp-1.3.7.dist-info}/METADATA +1 -1
  51. cnhkmcp-1.3.7.dist-info/RECORD +67 -0
  52. cnhkmcp/untracked/APP.zip +0 -0
  53. cnhkmcp-1.3.6.dist-info/RECORD +0 -20
  54. {cnhkmcp-1.3.6.dist-info → cnhkmcp-1.3.7.dist-info}/WHEEL +0 -0
  55. {cnhkmcp-1.3.6.dist-info → cnhkmcp-1.3.7.dist-info}/entry_points.txt +0 -0
  56. {cnhkmcp-1.3.6.dist-info → cnhkmcp-1.3.7.dist-info}/licenses/LICENSE +0 -0
  57. {cnhkmcp-1.3.6.dist-info → cnhkmcp-1.3.7.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,3099 @@
1
+ /* Reset and Base Styles */
2
+ * {
3
+ margin: 0;
4
+ padding: 0;
5
+ box-sizing: border-box;
6
+ }
7
+
8
+ body {
9
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
10
+ background-color: #f5f7fa;
11
+ color: #333;
12
+ line-height: 1.6;
13
+ }
14
+
15
+ /* Container and Layout */
16
+ .container {
17
+ max-width: 1400px;
18
+ margin: 0 auto;
19
+ padding: 20px;
20
+
21
+ }
22
+
23
+ header {
24
+ text-align: center;
25
+ margin-bottom: 30px;
26
+ padding: 20px ;
27
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
28
+ color: white;
29
+ border-radius: 10px;
30
+ box-shadow: 0 5px 15px rgba(0,0,0,0.1);
31
+ position: relative;
32
+ min-height: 160px;
33
+ width: 100%;
34
+
35
+ }
36
+
37
+ .header-top {
38
+ display: flex;
39
+ justify-content: space-between;
40
+ align-items: flex-start;
41
+ margin-bottom: 20px;
42
+ position: relative;
43
+ }
44
+
45
+ .header-left {
46
+ flex-shrink: 0;
47
+ width: 150px;
48
+ }
49
+
50
+ .header-center {
51
+ flex: 1;
52
+ text-align: center;
53
+ margin: 0 20px;
54
+ z-index: 1;
55
+ min-width: 0;
56
+ padding-right: 300px;
57
+ }
58
+
59
+ header h1 {
60
+ font-size: 2.5em;
61
+ margin-bottom: 20px;
62
+ margin-top: 0;
63
+ line-height: 1.2;
64
+ }
65
+
66
+ .subtitle {
67
+ font-size: 1.1em;
68
+ opacity: 0.9;
69
+ }
70
+
71
+ .header-buttons {
72
+ position: absolute;
73
+ top: 15px;
74
+ right: 15px;
75
+ display: flex;
76
+ flex-direction: column;
77
+ gap: 10px;
78
+ align-items: flex-end;
79
+ max-width: 280px;
80
+ z-index: 2;
81
+ pointer-events: auto;
82
+ }
83
+
84
+ .header-buttons-row {
85
+ display: flex;
86
+ gap: 10px;
87
+ flex-wrap: wrap;
88
+ justify-content: flex-end;
89
+ }
90
+
91
+ .header-buttons .btn {
92
+ padding: 8px 16px;
93
+ font-size: 14px;
94
+ white-space: nowrap;
95
+ }
96
+
97
+ .btn-brain {
98
+ background: rgba(255, 255, 255, 0.2);
99
+ color: white;
100
+ border: 2px solid rgba(255, 255, 255, 0.3);
101
+ padding: 8px 16px;
102
+ border-radius: 6px;
103
+ font-size: 14px;
104
+ font-weight: 500;
105
+ cursor: pointer;
106
+ transition: all 0.3s ease;
107
+ backdrop-filter: blur(10px);
108
+ }
109
+
110
+ .btn-brain:hover {
111
+ background: rgba(255, 255, 255, 0.3);
112
+ border-color: rgba(255, 255, 255, 0.5);
113
+ transform: translateY(-1px);
114
+ box-shadow: 0 2px 8px rgba(0,0,0,0.2);
115
+ }
116
+
117
+ .btn-brain.connected {
118
+ background: #4caf50;
119
+ border-color: #4caf50;
120
+ color: white;
121
+ }
122
+
123
+ .btn-brain.connected:hover {
124
+ background: #45a049;
125
+ border-color: #45a049;
126
+ }
127
+
128
+ .btn-submitter {
129
+ background: rgba(255, 255, 255, 0.2);
130
+ color: white;
131
+ border: 2px solid rgba(255, 255, 255, 0.3);
132
+ padding: 10px 20px;
133
+ border-radius: 6px;
134
+ font-size: 14px;
135
+ font-weight: 500;
136
+ cursor: pointer;
137
+ transition: all 0.3s ease;
138
+ backdrop-filter: blur(10px);
139
+ white-space: nowrap;
140
+ }
141
+
142
+ .btn-submitter:hover {
143
+ background: rgba(255, 255, 255, 0.3);
144
+ border-color: rgba(255, 255, 255, 0.5);
145
+ transform: translateY(-1px);
146
+ box-shadow: 0 2px 8px rgba(0,0,0,0.2);
147
+ }
148
+
149
+ /* Main Content Layout */
150
+ .main-content {
151
+ display: grid;
152
+ grid-template-columns: 1fr 350px;
153
+ gap: 20px;
154
+ margin-top: 20px;
155
+ height: calc(100vh - 400px);
156
+ min-height: 600px;
157
+ }
158
+
159
+ /* Editor Section */
160
+ .editor-section {
161
+ background: white;
162
+ border-radius: 10px;
163
+ padding: 20px;
164
+ box-shadow: 0 2px 10px rgba(0,0,0,0.1);
165
+ display: flex;
166
+ flex-direction: column;
167
+ height: 100%;
168
+ }
169
+
170
+ .editor-header {
171
+ display: flex;
172
+ justify-content: space-between;
173
+ align-items: center;
174
+ margin-bottom: 20px;
175
+ flex-wrap: wrap;
176
+ gap: 10px;
177
+ }
178
+
179
+ .editor-header h2 {
180
+ color: #333;
181
+ font-size: 1.5em;
182
+ margin-right: auto;
183
+ }
184
+
185
+ .auto-check-indicator {
186
+ color: #48bb78;
187
+ font-size: 14px;
188
+ display: flex;
189
+ align-items: center;
190
+ gap: 5px;
191
+ font-weight: 500;
192
+ }
193
+
194
+ .editor-actions {
195
+ display: flex;
196
+ gap: 10px;
197
+ }
198
+
199
+ /* Editor Wrapper */
200
+ .editor-wrapper {
201
+ display: flex;
202
+ border: 2px solid #e0e6ed;
203
+ border-radius: 8px;
204
+ overflow: hidden;
205
+ background: #fafbfc;
206
+ position: relative;
207
+ height: 500px;
208
+ min-height: 400px;
209
+ }
210
+
211
+ .line-numbers {
212
+ background: #f0f3f6;
213
+ color: #6b7280;
214
+ padding: 12px 10px;
215
+ text-align: right;
216
+ font-family: 'Consolas', 'Monaco', monospace;
217
+ font-size: 16px;
218
+ line-height: 1.6;
219
+ user-select: none;
220
+ border-right: 1px solid #e0e6ed;
221
+ white-space: pre;
222
+ overflow-y: auto;
223
+ overflow-x: hidden;
224
+ min-width: 40px;
225
+ flex-shrink: 0;
226
+ min-height: 100%;
227
+ }
228
+
229
+ /* Hide scrollbars but keep functionality */
230
+ .line-numbers::-webkit-scrollbar,
231
+ .highlighted-text::-webkit-scrollbar,
232
+ .expression-editor::-webkit-scrollbar {
233
+ width: 0;
234
+ height: 0;
235
+ }
236
+
237
+ .editor-container {
238
+ position: relative;
239
+ flex: 1;
240
+ overflow-y: auto;
241
+ overflow-x: hidden;
242
+ min-height: 400px;
243
+ }
244
+
245
+ .highlighted-text {
246
+ position: absolute;
247
+ top: 0;
248
+ left: 0;
249
+ right: 0;
250
+ bottom: 0;
251
+ padding: 12px 15px;
252
+ font-family: 'Consolas', 'Monaco', monospace;
253
+ font-size: 16px;
254
+ line-height: 1.6;
255
+ white-space: pre-wrap;
256
+ word-wrap: break-word;
257
+ color: #333;
258
+ pointer-events: none;
259
+ overflow-y: auto;
260
+ overflow-x: hidden;
261
+ min-height: 100%;
262
+ }
263
+
264
+ .highlighted-text .template-tag {
265
+ color: #2563eb;
266
+ font-weight: 600;
267
+ }
268
+
269
+ .highlighted-text .template-brackets {
270
+ color: #7c3aed;
271
+ font-weight: 600;
272
+ }
273
+
274
+ .expression-editor {
275
+ position: relative;
276
+ width: 100%;
277
+ min-height: 100%;
278
+ height: 100%;
279
+ padding: 12px 15px;
280
+ font-family: 'Consolas', 'Monaco', monospace;
281
+ font-size: 16px;
282
+ line-height: 1.6;
283
+ border: none;
284
+ outline: none;
285
+ resize: none;
286
+ background: transparent;
287
+ white-space: pre-wrap;
288
+ word-wrap: break-word;
289
+ color: transparent;
290
+ caret-color: #333;
291
+ z-index: 2;
292
+ overflow-y: auto;
293
+ overflow-x: hidden;
294
+ display: block;
295
+ }
296
+
297
+ /* Template Preview */
298
+ .template-preview {
299
+ background: #f3f4f6;
300
+ border: 1px solid #e5e7eb;
301
+ border-radius: 6px;
302
+ padding: 8px 12px;
303
+ margin-bottom: 10px;
304
+ font-family: 'Consolas', 'Monaco', monospace;
305
+ font-size: 14px;
306
+ }
307
+
308
+ .template-preview .preview-label {
309
+ color: #6b7280;
310
+ font-size: 12px;
311
+ margin-bottom: 4px;
312
+ }
313
+
314
+ /* Grammar Errors */
315
+ .grammar-errors {
316
+ margin-top: 15px;
317
+ }
318
+
319
+ .error-item {
320
+ background: #fee;
321
+ border-left: 4px solid #f44336;
322
+ padding: 10px 15px;
323
+ margin-bottom: 10px;
324
+ border-radius: 4px;
325
+ font-size: 14px;
326
+ }
327
+
328
+ .error-item strong {
329
+ color: #d32f2f;
330
+ }
331
+
332
+ .success-message {
333
+ background: #e8f5e9;
334
+ border-left: 4px solid #4caf50;
335
+ padding: 10px 15px;
336
+ border-radius: 4px;
337
+ color: #2e7d32;
338
+ }
339
+
340
+ .info-message {
341
+ background: #e3f2fd;
342
+ border-left: 4px solid #2196f3;
343
+ padding: 10px 15px;
344
+ border-radius: 4px;
345
+ color: #1565c0;
346
+ font-size: 14px;
347
+ line-height: 1.5;
348
+ }
349
+
350
+ .error-message {
351
+ background: #ffebee;
352
+ border-left: 4px solid #f44336;
353
+ padding: 10px 15px;
354
+ border-radius: 4px;
355
+ color: #c62828;
356
+ font-size: 14px;
357
+ line-height: 1.5;
358
+ }
359
+
360
+ /* Info Panel */
361
+ .info-panel {
362
+ background: white;
363
+ border-radius: 10px;
364
+ padding: 20px;
365
+ box-shadow: 0 2px 10px rgba(0,0,0,0.1);
366
+ }
367
+
368
+ .info-panel h3 {
369
+ color: #333;
370
+ margin-bottom: 15px;
371
+ font-size: 1.2em;
372
+ }
373
+
374
+ .grammar-rules {
375
+ list-style: none;
376
+ margin-bottom: 30px;
377
+ }
378
+
379
+ .grammar-rules li {
380
+ padding: 8px 0;
381
+ border-bottom: 1px solid #eee;
382
+ }
383
+
384
+ .grammar-rules code {
385
+ background: #f5f7fa;
386
+ padding: 2px 6px;
387
+ border-radius: 3px;
388
+ font-family: 'Consolas', 'Monaco', monospace;
389
+ color: #667eea;
390
+ }
391
+
392
+ /* Template List */
393
+ .template-list {
394
+ display: flex;
395
+ flex-direction: column;
396
+ gap: 10px;
397
+ }
398
+
399
+ .template-item {
400
+ background: #f5f7fa;
401
+ padding: 12px;
402
+ border-radius: 6px;
403
+ display: flex;
404
+ flex-direction: column;
405
+ align-items: stretch;
406
+ transition: all 0.3s ease;
407
+ position: relative;
408
+ padding-left: 35px;
409
+ gap: 8px;
410
+ }
411
+
412
+ .template-item:hover {
413
+ background: #e9ecef;
414
+ transform: translateX(5px);
415
+ }
416
+
417
+ .template-item.configured::before {
418
+ content: "✓";
419
+ position: absolute;
420
+ left: 12px;
421
+ top: 16px;
422
+ color: #48bb78;
423
+ font-weight: bold;
424
+ }
425
+
426
+ .template-item.not-configured::before {
427
+ content: "•";
428
+ position: absolute;
429
+ left: 12px;
430
+ top: 16px;
431
+ color: #9ca3af;
432
+ }
433
+
434
+ .template-name {
435
+ font-family: 'Consolas', 'Monaco', monospace;
436
+ font-size: 14px;
437
+ display: flex;
438
+ align-items: center;
439
+ cursor: pointer;
440
+ padding: 4px 8px;
441
+ border-radius: 4px;
442
+ transition: background-color 0.2s ease;
443
+ margin-bottom: 4px;
444
+ }
445
+
446
+ .template-name:hover {
447
+ background-color: rgba(102, 126, 234, 0.1);
448
+ }
449
+
450
+ .template-name .template-tag {
451
+ color: #2563eb;
452
+ font-weight: 600;
453
+ }
454
+
455
+ .template-name .template-brackets {
456
+ color: #7c3aed;
457
+ font-weight: 600;
458
+ }
459
+
460
+ .template-count {
461
+ color: #48bb78;
462
+ font-weight: 600;
463
+ font-size: 13px;
464
+ margin-left: 4px;
465
+ }
466
+
467
+ .template-buttons {
468
+ display: flex;
469
+ gap: 5px;
470
+ flex-wrap: wrap;
471
+ justify-content: flex-start;
472
+ padding-left: 8px;
473
+ }
474
+
475
+ .template-buttons .btn-small {
476
+ padding: 4px 8px;
477
+ font-size: 11px;
478
+ min-width: 45px;
479
+ }
480
+
481
+ /* Buttons */
482
+ .btn {
483
+ padding: 8px 16px;
484
+ border: none;
485
+ border-radius: 6px;
486
+ font-size: 14px;
487
+ font-weight: 500;
488
+ cursor: pointer;
489
+ transition: all 0.3s ease;
490
+ text-decoration: none;
491
+ display: inline-block;
492
+ }
493
+
494
+ .btn-primary {
495
+ background: #667eea;
496
+ color: white;
497
+ }
498
+
499
+ .btn-primary:hover {
500
+ background: #5a67d8;
501
+ transform: translateY(-1px);
502
+ box-shadow: 0 2px 5px rgba(102, 126, 234, 0.3);
503
+ }
504
+
505
+ .btn-secondary {
506
+ background: #48bb78;
507
+ color: white;
508
+ }
509
+
510
+ .btn-secondary:hover {
511
+ background: #38a169;
512
+ transform: translateY(-1px);
513
+ box-shadow: 0 2px 5px rgba(72, 187, 120, 0.3);
514
+ }
515
+
516
+ .btn-outline {
517
+ background: transparent;
518
+ color: #6b7280;
519
+ border: 1px solid #e0e6ed;
520
+ }
521
+
522
+ .btn-outline:hover {
523
+ background: #f5f7fa;
524
+ color: #333;
525
+ }
526
+
527
+ /* Header button overrides for visibility on purple background */
528
+ header .btn-outline {
529
+ background: rgba(255, 255, 255, 0.15);
530
+ color: white;
531
+ border: 2px solid rgba(255, 255, 255, 0.4);
532
+ backdrop-filter: blur(10px);
533
+ }
534
+
535
+ header .btn-outline:hover {
536
+ background: rgba(255, 255, 255, 0.25);
537
+ border-color: rgba(255, 255, 255, 0.6);
538
+ color: white;
539
+ transform: translateY(-1px);
540
+ box-shadow: 0 2px 8px rgba(0,0,0,0.2);
541
+ }
542
+
543
+ .btn-small {
544
+ padding: 5px 10px;
545
+ font-size: 12px;
546
+ }
547
+
548
+ /* Button progress indicator styles */
549
+ .btn {
550
+ position: relative;
551
+ min-width: 120px;
552
+ }
553
+
554
+ .btn-progress {
555
+ position: absolute;
556
+ top: 0;
557
+ left: 0;
558
+ width: 100%;
559
+ height: 100%;
560
+ display: flex;
561
+ flex-direction: column;
562
+ align-items: center;
563
+ justify-content: center;
564
+ background: inherit;
565
+ border-radius: inherit;
566
+ }
567
+
568
+ .btn-progress .progress-bar {
569
+ width: 80%;
570
+ height: 4px;
571
+ background: rgba(255, 255, 255, 0.3);
572
+ border-radius: 2px;
573
+ margin-bottom: 5px;
574
+ overflow: hidden;
575
+ }
576
+
577
+ .btn-progress .progress-bar-fill {
578
+ height: 100%;
579
+ background: #fff;
580
+ border-radius: 2px;
581
+ transition: width 0.3s ease;
582
+ }
583
+
584
+ .btn-progress .progress-text {
585
+ font-size: 11px;
586
+ color: #fff;
587
+ font-weight: 400;
588
+ }
589
+
590
+ .btn:disabled {
591
+ opacity: 0.6;
592
+ cursor: not-allowed;
593
+ }
594
+
595
+ /* Modal */
596
+ .modal {
597
+ display: none;
598
+ position: fixed;
599
+ z-index: 1000;
600
+ left: 0;
601
+ top: 0;
602
+ width: 100%;
603
+ height: 100%;
604
+ background-color: rgba(0,0,0,0.5);
605
+ animation: fadeIn 0.3s ease;
606
+ }
607
+
608
+ .modal-content {
609
+ background-color: white;
610
+ margin: 10% auto;
611
+ padding: 0;
612
+ border-radius: 10px;
613
+ width: 90%;
614
+ max-width: 500px;
615
+ box-shadow: 0 5px 20px rgba(0,0,0,0.3);
616
+ animation: slideIn 0.3s ease;
617
+ position: relative;
618
+ max-height: 80vh;
619
+ overflow: hidden;
620
+ display: flex;
621
+ flex-direction: column;
622
+ }
623
+
624
+ .modal-header {
625
+ padding: 20px;
626
+ background: #f5f7fa;
627
+ border-radius: 10px 10px 0 0;
628
+ display: flex;
629
+ justify-content: space-between;
630
+ align-items: center;
631
+ border-bottom: 1px solid #e0e6ed;
632
+ flex-shrink: 0;
633
+ }
634
+
635
+ #brainDataFieldsModal .modal-header {
636
+ padding: 15px 20px;
637
+ }
638
+
639
+ .modal-header h3 {
640
+ color: #333;
641
+ margin: 0;
642
+ }
643
+
644
+ .close {
645
+ color: #999;
646
+ font-size: 28px;
647
+ font-weight: bold;
648
+ cursor: pointer;
649
+ transition: color 0.3s ease;
650
+ line-height: 1;
651
+ }
652
+
653
+ .close:hover {
654
+ color: #333;
655
+ }
656
+
657
+ .modal-body {
658
+ padding: 20px;
659
+ flex: 1;
660
+ overflow-y: auto;
661
+ min-height: 0;
662
+ }
663
+
664
+ .modal-body p {
665
+ margin-bottom: 15px;
666
+ color: #666;
667
+ }
668
+
669
+ .variable-input {
670
+ width: 100%;
671
+ min-height: 100px;
672
+ padding: 10px;
673
+ border: 2px solid #e0e6ed;
674
+ border-radius: 6px;
675
+ font-family: 'Consolas', 'Monaco', monospace;
676
+ font-size: 14px;
677
+ resize: vertical;
678
+ }
679
+
680
+ .variable-input:focus {
681
+ outline: none;
682
+ border-color: #667eea;
683
+ }
684
+
685
+ .modal-footer {
686
+ padding: 20px;
687
+ background: #f5f7fa;
688
+ border-radius: 0 0 10px 10px;
689
+ display: flex;
690
+ justify-content: flex-end;
691
+ gap: 10px;
692
+ border-top: 1px solid #e0e6ed;
693
+ flex-shrink: 0;
694
+ }
695
+
696
+ #brainDataFieldsModal .modal-footer {
697
+ padding: 15px 20px;
698
+ }
699
+
700
+ #brainDataFieldsModal .modal-body {
701
+ flex: 1;
702
+ overflow-y: auto;
703
+ overflow-x: hidden;
704
+ display: flex;
705
+ flex-direction: column;
706
+ padding: 15px;
707
+ min-height: 0;
708
+ }
709
+
710
+ /* Configuration Info Modal Specific Styles */
711
+ .config-info-content {
712
+ font-family: 'Consolas', 'Monaco', monospace;
713
+ font-size: 14px;
714
+ line-height: 1.6;
715
+ }
716
+
717
+ .config-info-item {
718
+ margin-bottom: 15px;
719
+ padding: 10px;
720
+ background: #f8f9fa;
721
+ border-radius: 6px;
722
+ border-left: 4px solid #667eea;
723
+ }
724
+
725
+ .config-info-item strong {
726
+ color: #333;
727
+ display: inline-block;
728
+ min-width: 80px;
729
+ }
730
+
731
+ .config-info-values {
732
+ background: #e3f2fd;
733
+ padding: 8px 12px;
734
+ border-radius: 4px;
735
+ margin-top: 8px;
736
+ color: #1565c0;
737
+ word-break: break-all;
738
+ }
739
+
740
+ .config-status-unconfigured {
741
+ color: #f44336;
742
+ font-style: italic;
743
+ }
744
+
745
+ .config-status-configured {
746
+ color: #4caf50;
747
+ font-weight: 600;
748
+ }
749
+
750
+ /* Form Styles for BRAIN Login */
751
+ .form-group {
752
+ margin-bottom: 20px;
753
+ }
754
+
755
+ .form-group label {
756
+ display: block;
757
+ margin-bottom: 5px;
758
+ color: #333;
759
+ font-weight: 500;
760
+ }
761
+
762
+ .form-input {
763
+ width: 100%;
764
+ padding: 10px 12px;
765
+ border: 2px solid #e0e6ed;
766
+ border-radius: 6px;
767
+ font-size: 14px;
768
+ transition: border-color 0.3s ease;
769
+ box-sizing: border-box;
770
+ }
771
+
772
+ .form-input:focus {
773
+ outline: none;
774
+ border-color: #667eea;
775
+ box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
776
+ }
777
+
778
+ .form-input:disabled {
779
+ background-color: #f5f5f5;
780
+ cursor: not-allowed;
781
+ opacity: 0.7;
782
+ }
783
+
784
+ .login-status {
785
+ margin-top: 10px;
786
+ padding: 8px 12px;
787
+ border-radius: 4px;
788
+ font-size: 14px;
789
+ text-align: center;
790
+ min-height: 20px;
791
+ }
792
+
793
+ .login-status.loading {
794
+ background: #e3f2fd;
795
+ color: #1565c0;
796
+ border: 1px solid #90caf9;
797
+ }
798
+
799
+ .login-status.success {
800
+ background: #e8f5e9;
801
+ color: #2e7d32;
802
+ border: 1px solid #81c784;
803
+ }
804
+
805
+ .login-status.error {
806
+ background: #ffebee;
807
+ color: #c62828;
808
+ border: 1px solid #ef5350;
809
+ }
810
+
811
+ .login-status.info {
812
+ background: #fff3e0;
813
+ color: #f57c00;
814
+ border: 1px solid #ffb74d;
815
+ }
816
+
817
+ .login-spinner {
818
+ display: flex;
819
+ justify-content: center;
820
+ align-items: center;
821
+ padding: 20px;
822
+ }
823
+
824
+ .spinner {
825
+ width: 40px;
826
+ height: 40px;
827
+ border: 4px solid #f3f3f3;
828
+ border-top: 4px solid #667eea;
829
+ border-radius: 50%;
830
+ animation: spin 1s linear infinite;
831
+ }
832
+
833
+ @keyframes spin {
834
+ 0% { transform: rotate(0deg); }
835
+ 100% { transform: rotate(360deg); }
836
+ }
837
+
838
+ .modal-overlay {
839
+ position: fixed;
840
+ top: 0;
841
+ left: 0;
842
+ width: 100%;
843
+ height: 100%;
844
+ background: rgba(0, 0, 0, 0.3);
845
+ z-index: 9999;
846
+ display: none;
847
+ cursor: not-allowed;
848
+ }
849
+
850
+ /* Animations */
851
+ @keyframes fadeIn {
852
+ from { opacity: 0; }
853
+ to { opacity: 1; }
854
+ }
855
+
856
+ @keyframes slideIn {
857
+ from { transform: translateY(100px); opacity: 0; }
858
+ to { transform: translateY(0); opacity: 1; }
859
+ }
860
+
861
+ @keyframes fadeOut {
862
+ from { opacity: 1; }
863
+ to { opacity: 0; }
864
+ }
865
+
866
+ /* Shadow Suggestion */
867
+ .shadow-suggestion {
868
+ font-family: 'Consolas', 'Monaco', monospace;
869
+ font-size: 16px;
870
+ line-height: 1.6;
871
+ color: #9ca3af;
872
+ opacity: 0.5;
873
+ position: relative;
874
+ user-select: none;
875
+ -webkit-user-select: none;
876
+ -moz-user-select: none;
877
+ }
878
+
879
+ .shadow-hint {
880
+ position: absolute;
881
+ top: 100%;
882
+ left: 0;
883
+ margin-top: 4px;
884
+ background: #f3f4f6;
885
+ color: #6b7280;
886
+ padding: 2px 6px;
887
+ border-radius: 4px;
888
+ font-size: 11px;
889
+ white-space: nowrap;
890
+ box-shadow: 0 1px 3px rgba(0,0,0,0.1);
891
+ animation: fadeIn 0.2s ease;
892
+ }
893
+
894
+ /* Decoded Results */
895
+ .decoded-results {
896
+ margin-top: 30px;
897
+ background: white;
898
+ border: 1px solid #e5e7eb;
899
+ border-radius: 8px;
900
+ padding: 20px;
901
+ max-width: 1000px;
902
+ margin-left: auto;
903
+ margin-right: auto;
904
+ }
905
+
906
+ .decoded-results h3 {
907
+ margin-top: 0;
908
+ margin-bottom: 15px;
909
+ color: #333;
910
+ font-size: 1.2em;
911
+ }
912
+
913
+ .results-list {
914
+ max-height: 400px;
915
+ overflow-y: auto;
916
+ background: white;
917
+ border: 1px solid #e0e6ed;
918
+ border-radius: 6px;
919
+ padding: 10px;
920
+ margin-bottom: 15px;
921
+ }
922
+
923
+ .result-item {
924
+ padding: 8px 12px;
925
+ margin-bottom: 8px;
926
+ background: #f5f7fa;
927
+ border-radius: 4px;
928
+ font-family: 'Consolas', 'Monaco', monospace;
929
+ font-size: 14px;
930
+ line-height: 1.5;
931
+ position: relative;
932
+ }
933
+
934
+ .result-item:hover {
935
+ background: #e9ecef;
936
+ }
937
+
938
+ .result-number {
939
+ display: inline-block;
940
+ width: 30px;
941
+ color: #6b7280;
942
+ font-weight: 600;
943
+ }
944
+
945
+ .result-expression {
946
+ color: #333;
947
+ }
948
+
949
+ .copy-single {
950
+ position: absolute;
951
+ right: 10px;
952
+ top: 50%;
953
+ transform: translateY(-50%);
954
+ padding: 4px 8px;
955
+ font-size: 11px;
956
+ background: #667eea;
957
+ color: white;
958
+ border: none;
959
+ border-radius: 4px;
960
+ cursor: pointer;
961
+ opacity: 0;
962
+ transition: opacity 0.2s ease;
963
+ }
964
+
965
+ .result-item:hover .copy-single {
966
+ opacity: 1;
967
+ }
968
+
969
+ .copy-single:hover {
970
+ background: #5a67d8;
971
+ }
972
+
973
+ .results-actions {
974
+ display: flex;
975
+ gap: 10px;
976
+ justify-content: flex-end;
977
+ }
978
+
979
+ .results-info {
980
+ background: #e0f2fe;
981
+ border: 1px solid #7dd3fc;
982
+ padding: 10px 15px;
983
+ border-radius: 6px;
984
+ margin-bottom: 15px;
985
+ color: #075985;
986
+ font-size: 14px;
987
+ }
988
+
989
+ /* Results Search Container */
990
+ .results-search-container {
991
+ display: flex;
992
+ gap: 10px;
993
+ margin-bottom: 15px;
994
+ padding: 10px;
995
+ background: #f8fafc;
996
+ border-radius: 6px;
997
+ align-items: center;
998
+ }
999
+
1000
+ .results-search-input {
1001
+ flex: 1;
1002
+ padding: 8px 12px;
1003
+ border: 2px solid #e0e6ed;
1004
+ border-radius: 6px;
1005
+ font-size: 14px;
1006
+ font-family: 'Consolas', 'Monaco', monospace;
1007
+ transition: border-color 0.3s ease;
1008
+ }
1009
+
1010
+ .results-search-input:focus {
1011
+ outline: none;
1012
+ border-color: #667eea;
1013
+ box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
1014
+ }
1015
+
1016
+ .results-search-input::placeholder {
1017
+ color: #9ca3af;
1018
+ }
1019
+
1020
+ /* Warning message style */
1021
+ .warning-message {
1022
+ background: #fef3c7;
1023
+ border: 1px solid #fbbf24;
1024
+ padding: 10px 15px;
1025
+ border-radius: 6px;
1026
+ color: #92400e;
1027
+ font-size: 14px;
1028
+ margin-bottom: 15px;
1029
+ }
1030
+
1031
+ /* Settings Grid */
1032
+ .settings-grid {
1033
+ display: grid;
1034
+ grid-template-columns: repeat(2, 1fr);
1035
+ gap: 15px;
1036
+ margin-top: 20px;
1037
+ }
1038
+
1039
+ .setting-item {
1040
+ display: flex;
1041
+ flex-direction: column;
1042
+ gap: 5px;
1043
+ }
1044
+
1045
+ .setting-item label {
1046
+ font-size: 14px;
1047
+ font-weight: 500;
1048
+ color: #333;
1049
+ }
1050
+
1051
+ .setting-item .form-input {
1052
+ padding: 8px 10px;
1053
+ font-size: 13px;
1054
+ }
1055
+
1056
+ @media (max-width: 600px) {
1057
+ .settings-grid {
1058
+ grid-template-columns: 1fr;
1059
+ }
1060
+ }
1061
+
1062
+ /* Settings Modal Styles */
1063
+ .settings-modal .modal-content {
1064
+ max-width: 900px;
1065
+ width: 90%;
1066
+ max-height: 90vh;
1067
+ }
1068
+
1069
+ .settings-modal-content {
1070
+ width: 90%;
1071
+ max-width: 900px;
1072
+ max-height: 90vh;
1073
+ margin: 5vh auto;
1074
+ }
1075
+
1076
+ .settings-modal-body {
1077
+ display: flex;
1078
+ flex-direction: column;
1079
+ gap: 20px;
1080
+ max-height: calc(90vh - 140px); /* Account for header and footer */
1081
+ overflow: hidden;
1082
+ }
1083
+
1084
+ .settings-info {
1085
+ background: #f0f4f8;
1086
+ padding: 15px;
1087
+ border-radius: 6px;
1088
+ border-left: 4px solid #667eea;
1089
+ flex-shrink: 0;
1090
+ }
1091
+
1092
+ .settings-note {
1093
+ color: #6b7280;
1094
+ font-size: 14px;
1095
+ margin-top: 5px;
1096
+ }
1097
+
1098
+ .settings-container {
1099
+ flex: 1;
1100
+ overflow-y: auto;
1101
+ min-height: 0;
1102
+ border: 1px solid #e0e6ed;
1103
+ border-radius: 6px;
1104
+ }
1105
+
1106
+ .settings-table {
1107
+ width: 100%;
1108
+ border-collapse: collapse;
1109
+ background: white;
1110
+ }
1111
+
1112
+ .settings-table thead {
1113
+ position: sticky;
1114
+ top: 0;
1115
+ background: #f5f7fa;
1116
+ z-index: 10;
1117
+ }
1118
+
1119
+ .settings-table th {
1120
+ padding: 12px;
1121
+ text-align: left;
1122
+ font-weight: 600;
1123
+ color: #333;
1124
+ border-bottom: 2px solid #e0e6ed;
1125
+ font-size: 14px;
1126
+ }
1127
+
1128
+ .settings-table td {
1129
+ padding: 10px 12px;
1130
+ border-bottom: 1px solid #e5e7eb;
1131
+ }
1132
+
1133
+ .settings-table tr:hover {
1134
+ background: #f9fafb;
1135
+ }
1136
+
1137
+ .setting-value-input {
1138
+ width: 100%;
1139
+ padding: 8px 12px;
1140
+ border: 2px solid #e0e6ed;
1141
+ border-radius: 6px;
1142
+ font-size: 14px;
1143
+ font-family: 'Consolas', 'Monaco', monospace;
1144
+ transition: border-color 0.3s ease;
1145
+ }
1146
+
1147
+ .setting-value-input:focus {
1148
+ outline: none;
1149
+ border-color: #667eea;
1150
+ box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
1151
+ }
1152
+
1153
+ .setting-value-input[readonly] {
1154
+ background: #f5f5f5;
1155
+ cursor: not-allowed;
1156
+ }
1157
+
1158
+ .setting-value-input::placeholder {
1159
+ color: #9ca3af;
1160
+ font-size: 13px;
1161
+ }
1162
+
1163
+ .setting-type-select {
1164
+ padding: 6px 10px;
1165
+ border: 2px solid #e0e6ed;
1166
+ border-radius: 6px;
1167
+ font-size: 13px;
1168
+ background: white;
1169
+ cursor: pointer;
1170
+ transition: border-color 0.3s ease;
1171
+ }
1172
+
1173
+ .setting-type-select:focus {
1174
+ outline: none;
1175
+ border-color: #667eea;
1176
+ }
1177
+
1178
+ .setting-type-select[disabled] {
1179
+ background: #f5f5f5;
1180
+ cursor: not-allowed;
1181
+ opacity: 0.7;
1182
+ }
1183
+
1184
+ .remove-setting-btn {
1185
+ padding: 4px 8px;
1186
+ background: #ef4444;
1187
+ color: white;
1188
+ border: none;
1189
+ border-radius: 4px;
1190
+ cursor: pointer;
1191
+ font-size: 12px;
1192
+ }
1193
+
1194
+ .remove-setting-btn:hover {
1195
+ background: #dc2626;
1196
+ }
1197
+
1198
+ .add-setting-container {
1199
+ padding: 15px;
1200
+ text-align: center;
1201
+ background: #f9fafb;
1202
+ }
1203
+
1204
+ .settings-preview {
1205
+ background: #e0f2fe;
1206
+ padding: 15px;
1207
+ border-radius: 6px;
1208
+ border: 1px solid #7dd3fc;
1209
+ flex-shrink: 0;
1210
+ }
1211
+
1212
+ .preview-header {
1213
+ font-size: 14px;
1214
+ color: #075985;
1215
+ }
1216
+
1217
+ #totalCombinations {
1218
+ font-weight: 600;
1219
+ color: #0c4a6e;
1220
+ }
1221
+
1222
+ /* Custom setting row styles */
1223
+ .custom-setting-row td:first-child {
1224
+ position: relative;
1225
+ }
1226
+
1227
+ .custom-setting-row input[type="text"]:first-child {
1228
+ width: 100%;
1229
+ }
1230
+
1231
+ .setting-name-input {
1232
+ width: 100%;
1233
+ padding: 8px 12px;
1234
+ border: 2px solid #e0e6ed;
1235
+ border-radius: 6px;
1236
+ font-size: 14px;
1237
+ font-family: 'Consolas', 'Monaco', monospace;
1238
+ transition: border-color 0.3s ease;
1239
+ }
1240
+
1241
+ .setting-name-input:focus {
1242
+ outline: none;
1243
+ border-color: #667eea;
1244
+ box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
1245
+ }
1246
+
1247
+ /* Decode Section */
1248
+ .decode-section {
1249
+ display: none;
1250
+ }
1251
+
1252
+ /* Navigation Tabs */
1253
+ .page-navigation {
1254
+ display: flex;
1255
+ gap: 10px;
1256
+ margin: 20px 0;
1257
+ background: white;
1258
+ padding: 10px;
1259
+ border-radius: 10px;
1260
+ box-shadow: 0 2px 10px rgba(0,0,0,0.1);
1261
+ }
1262
+
1263
+ .nav-tab {
1264
+ flex: 1;
1265
+ display: flex;
1266
+ align-items: center;
1267
+ justify-content: center;
1268
+ gap: 8px;
1269
+ padding: 12px 20px;
1270
+ background: #f5f7fa;
1271
+ border: 2px solid transparent;
1272
+ border-radius: 8px;
1273
+ cursor: pointer;
1274
+ transition: all 0.3s ease;
1275
+ font-size: 15px;
1276
+ font-weight: 500;
1277
+ color: #666;
1278
+ position: relative;
1279
+ }
1280
+
1281
+ .nav-tab:hover {
1282
+ background: #e9ecef;
1283
+ color: #333;
1284
+ }
1285
+
1286
+ .nav-tab.active {
1287
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
1288
+ color: white;
1289
+ border-color: transparent;
1290
+ }
1291
+
1292
+ .nav-icon {
1293
+ font-size: 20px;
1294
+ }
1295
+
1296
+ .nav-text {
1297
+ font-size: 14px;
1298
+ }
1299
+
1300
+ .nav-badge {
1301
+ position: absolute;
1302
+ top: 5px;
1303
+ right: 5px;
1304
+ background: #f44336;
1305
+ color: white;
1306
+ font-size: 11px;
1307
+ padding: 2px 6px;
1308
+ border-radius: 10px;
1309
+ min-width: 20px;
1310
+ text-align: center;
1311
+ font-weight: 600;
1312
+ }
1313
+
1314
+ /* Page Container */
1315
+ .page-container {
1316
+ position: relative;
1317
+ min-height: 600px;
1318
+ }
1319
+
1320
+ .page-content {
1321
+ display: none;
1322
+ }
1323
+
1324
+ .page-content.active {
1325
+ display: block;
1326
+ height: 100%;
1327
+ }
1328
+
1329
+ /* Next Step Hint */
1330
+ .next-step-hint {
1331
+ margin-top: 30px;
1332
+ padding-top: 20px;
1333
+ border-top: 1px solid #e0e6ed;
1334
+ text-align: center;
1335
+ }
1336
+
1337
+ .next-step-hint .btn {
1338
+ font-size: 16px;
1339
+ padding: 10px 20px;
1340
+ }
1341
+
1342
+ /* Decode Content */
1343
+ .decode-content {
1344
+ background: white;
1345
+ border-radius: 10px;
1346
+ padding: 30px;
1347
+ box-shadow: 0 2px 10px rgba(0,0,0,0.1);
1348
+ max-width: 800px;
1349
+ margin: 0 auto;
1350
+ }
1351
+
1352
+ .decode-content h2 {
1353
+ margin-bottom: 20px;
1354
+ color: #333;
1355
+ display: flex;
1356
+ align-items: center;
1357
+ flex-wrap: wrap;
1358
+ gap: 10px;
1359
+ }
1360
+
1361
+ .search-space {
1362
+ font-size: 0.65em;
1363
+ color: #667eea;
1364
+ font-weight: normal;
1365
+ background: #f0f3ff;
1366
+ padding: 4px 12px;
1367
+ border-radius: 20px;
1368
+ border: 1px solid #d4d9ff;
1369
+ }
1370
+
1371
+ .template-status {
1372
+ background: #f5f7fa;
1373
+ border-radius: 8px;
1374
+ padding: 20px;
1375
+ margin-bottom: 30px;
1376
+ }
1377
+
1378
+ .decode-buttons {
1379
+ display: flex;
1380
+ justify-content: center;
1381
+ gap: 20px;
1382
+ flex-wrap: wrap;
1383
+ margin: 20px 0;
1384
+ }
1385
+
1386
+ .btn-large {
1387
+ padding: 15px 40px;
1388
+ font-size: 18px;
1389
+ font-weight: 600;
1390
+ box-shadow: 0 4px 6px rgba(102, 126, 234, 0.2);
1391
+ text-transform: uppercase;
1392
+ letter-spacing: 0.5px;
1393
+ }
1394
+
1395
+ .btn-large:hover {
1396
+ transform: translateY(-2px);
1397
+ box-shadow: 0 6px 12px rgba(102, 126, 234, 0.3);
1398
+ }
1399
+
1400
+ .random-iteration-container {
1401
+ display: flex;
1402
+ align-items: center;
1403
+ gap: 10px;
1404
+ }
1405
+
1406
+ .random-count-input {
1407
+ width: 100px;
1408
+ padding: 12px 16px;
1409
+ font-size: 16px;
1410
+ font-weight: 500;
1411
+ border: 2px solid #e0e6ed;
1412
+ border-radius: 8px;
1413
+ text-align: center;
1414
+ transition: all 0.3s ease;
1415
+ }
1416
+
1417
+ .random-count-input:focus {
1418
+ outline: none;
1419
+ border-color: #667eea;
1420
+ box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
1421
+ }
1422
+
1423
+ .random-count-input::placeholder {
1424
+ color: #9ca3af;
1425
+ }
1426
+
1427
+ .decode-info {
1428
+ margin-top: 30px;
1429
+ padding: 20px;
1430
+ background: #e3f2fd;
1431
+ border-radius: 8px;
1432
+ }
1433
+
1434
+ .decode-info p {
1435
+ margin: 10px 0;
1436
+ color: #1565c0;
1437
+ }
1438
+
1439
+ /* Results Content */
1440
+ .results-content {
1441
+ background: white;
1442
+ border-radius: 10px;
1443
+ padding: 30px;
1444
+ box-shadow: 0 2px 10px rgba(0,0,0,0.1);
1445
+ }
1446
+
1447
+ .results-content h2 {
1448
+ margin-bottom: 20px;
1449
+ color: #333;
1450
+ }
1451
+
1452
+ /* Navigation Buttons */
1453
+ .navigation-buttons {
1454
+ margin-top: 30px;
1455
+ padding-top: 20px;
1456
+ border-top: 1px solid #e0e6ed;
1457
+ display: flex;
1458
+ gap: 10px;
1459
+ justify-content: center;
1460
+ }
1461
+
1462
+ /* Responsive Design */
1463
+ @media (max-width: 768px) {
1464
+ .main-content {
1465
+ grid-template-columns: 1fr;
1466
+ }
1467
+
1468
+ .info-panel {
1469
+ margin-top: 20px;
1470
+ }
1471
+
1472
+ header h1 {
1473
+ font-size: 1.8em;
1474
+ }
1475
+
1476
+ .header-top {
1477
+ flex-direction: column;
1478
+ align-items: center;
1479
+ gap: 15px;
1480
+ }
1481
+
1482
+ .header-left {
1483
+ order: 2;
1484
+ width: auto;
1485
+ }
1486
+
1487
+ .header-center {
1488
+ order: 1;
1489
+ margin: 0;
1490
+ padding-right: 0;
1491
+ }
1492
+
1493
+ .header-buttons {
1494
+ position: static;
1495
+ margin-top: 15px;
1496
+ justify-content: center;
1497
+ align-items: center;
1498
+ }
1499
+
1500
+ .header-buttons-row {
1501
+ justify-content: center;
1502
+ }
1503
+
1504
+ .header-buttons .btn {
1505
+ font-size: 13px;
1506
+ padding: 6px 12px;
1507
+ }
1508
+
1509
+ .editor-header {
1510
+ flex-direction: column;
1511
+ align-items: flex-start;
1512
+ }
1513
+
1514
+ .editor-header h2 {
1515
+ margin-bottom: 10px;
1516
+ }
1517
+
1518
+ .auto-check-indicator {
1519
+ font-size: 12px;
1520
+ margin-bottom: 10px;
1521
+ }
1522
+
1523
+ .editor-actions {
1524
+ width: 100%;
1525
+ justify-content: space-between;
1526
+ }
1527
+
1528
+ /* Navigation responsive */
1529
+ .page-navigation {
1530
+ flex-wrap: wrap;
1531
+ padding: 5px;
1532
+ }
1533
+
1534
+ .nav-tab {
1535
+ min-width: calc(33.33% - 10px);
1536
+ padding: 10px 5px;
1537
+ font-size: 13px;
1538
+ }
1539
+
1540
+ .nav-icon {
1541
+ font-size: 18px;
1542
+ }
1543
+
1544
+ .nav-text {
1545
+ font-size: 12px;
1546
+ display: none;
1547
+ }
1548
+
1549
+ /* Show only icons on very small screens */
1550
+ @media (max-width: 480px) {
1551
+ .nav-tab {
1552
+ min-width: auto;
1553
+ flex: 1;
1554
+ padding: 12px 8px;
1555
+ }
1556
+ }
1557
+
1558
+ .decode-buttons {
1559
+ flex-direction: column;
1560
+ align-items: stretch;
1561
+ }
1562
+
1563
+ .random-iteration-container {
1564
+ width: 100%;
1565
+ justify-content: space-between;
1566
+ }
1567
+
1568
+ .btn-large {
1569
+ width: 100%;
1570
+ margin-bottom: 10px;
1571
+ }
1572
+
1573
+ .decode-content h2 {
1574
+ font-size: 1.3em;
1575
+ justify-content: center;
1576
+ text-align: center;
1577
+ }
1578
+
1579
+ .search-space {
1580
+ font-size: 0.55em;
1581
+ padding: 3px 10px;
1582
+ }
1583
+ }
1584
+
1585
+ /* Responsive adjustments for template items */
1586
+ @media (max-width: 350px) {
1587
+ .template-item {
1588
+ padding-left: 12px;
1589
+ }
1590
+
1591
+ .template-item.configured::before,
1592
+ .template-item.not-configured::before {
1593
+ position: static;
1594
+ display: inline-block;
1595
+ margin-right: 8px;
1596
+ }
1597
+
1598
+ .template-name {
1599
+ justify-content: flex-start;
1600
+ }
1601
+
1602
+ .template-buttons {
1603
+ justify-content: flex-start;
1604
+ padding-left: 0;
1605
+ }
1606
+ }
1607
+
1608
+ /* BRAIN Operators Modal Styles */
1609
+ .brain-choose-section {
1610
+ margin-top: 15px;
1611
+ padding-top: 15px;
1612
+ border-top: 1px solid #e0e6ed;
1613
+ text-align: center;
1614
+ }
1615
+
1616
+ .search-section {
1617
+ margin-bottom: 15px;
1618
+ }
1619
+
1620
+ .category-filter {
1621
+ margin-bottom: 15px;
1622
+ }
1623
+
1624
+ .category-filter label {
1625
+ display: block;
1626
+ margin-bottom: 5px;
1627
+ color: #333;
1628
+ font-weight: 500;
1629
+ }
1630
+
1631
+ .operator-actions {
1632
+ margin-bottom: 15px;
1633
+ display: flex;
1634
+ gap: 10px;
1635
+ justify-content: flex-end;
1636
+ }
1637
+
1638
+ .operators-list {
1639
+ max-height: 300px;
1640
+ overflow-y: auto;
1641
+ border: 1px solid #e0e6ed;
1642
+ border-radius: 6px;
1643
+ padding: 10px;
1644
+ margin-bottom: 15px;
1645
+ background: #fafbfc;
1646
+ position: relative;
1647
+ z-index: 2;
1648
+ contain: layout;
1649
+ }
1650
+
1651
+ .operator-item {
1652
+ display: flex;
1653
+ align-items: center;
1654
+ padding: 8px 10px;
1655
+ margin-bottom: 5px;
1656
+ background: white;
1657
+ border-radius: 4px;
1658
+ cursor: pointer;
1659
+ transition: background-color 0.2s ease;
1660
+ border: 1px solid #e0e6ed;
1661
+ }
1662
+
1663
+ .operator-item:hover {
1664
+ background: #f0f3f6;
1665
+ }
1666
+
1667
+ .operator-item.selected {
1668
+ background: #e3f2fd;
1669
+ border-color: #2196f3;
1670
+ }
1671
+
1672
+ .operator-checkbox {
1673
+ margin-right: 10px;
1674
+ }
1675
+
1676
+ .operator-info {
1677
+ flex: 1;
1678
+ }
1679
+
1680
+ .operator-name {
1681
+ font-family: 'Consolas', 'Monaco', monospace;
1682
+ font-weight: 600;
1683
+ color: #2563eb;
1684
+ }
1685
+
1686
+ .operator-category {
1687
+ font-size: 12px;
1688
+ color: #6b7280;
1689
+ margin-left: 10px;
1690
+ background: #f3f4f6;
1691
+ padding: 2px 6px;
1692
+ border-radius: 3px;
1693
+ }
1694
+
1695
+ .selected-operators {
1696
+ background: #f8f9fa;
1697
+ border: 1px solid #e0e6ed;
1698
+ border-radius: 6px;
1699
+ padding: 10px;
1700
+ margin-top: 15px;
1701
+ position: relative;
1702
+ z-index: 1;
1703
+ }
1704
+
1705
+ .selected-items {
1706
+ display: flex;
1707
+ flex-wrap: wrap;
1708
+ gap: 5px;
1709
+ margin-top: 8px;
1710
+ }
1711
+
1712
+ .selected-item {
1713
+ background: #667eea;
1714
+ color: white;
1715
+ padding: 4px 8px;
1716
+ border-radius: 4px;
1717
+ font-size: 12px;
1718
+ font-family: 'Consolas', 'Monaco', monospace;
1719
+ display: flex;
1720
+ align-items: center;
1721
+ gap: 5px;
1722
+ }
1723
+
1724
+ .selected-item .remove-btn {
1725
+ background: rgba(255, 255, 255, 0.3);
1726
+ border: none;
1727
+ color: white;
1728
+ border-radius: 50%;
1729
+ width: 16px;
1730
+ height: 16px;
1731
+ cursor: pointer;
1732
+ font-size: 10px;
1733
+ display: flex;
1734
+ align-items: center;
1735
+ justify-content: center;
1736
+ }
1737
+
1738
+ .selected-item .remove-btn:hover {
1739
+ background: rgba(255, 255, 255, 0.5);
1740
+ }
1741
+
1742
+ /* Data Fields Modal Styles */
1743
+ #brainDataFieldsModal.modal {
1744
+ padding: 0;
1745
+ }
1746
+
1747
+ #brainDataFieldsModal .modal-content {
1748
+ width: calc(100vw - 40px);
1749
+ max-width: calc(100vw - 40px);
1750
+ height: calc(100vh - 40px);
1751
+ max-height: calc(100vh - 40px);
1752
+ margin: 20px auto;
1753
+ overflow: hidden;
1754
+ display: flex;
1755
+ flex-direction: column;
1756
+ position: fixed;
1757
+ top: 50%;
1758
+ left: 50%;
1759
+ transform: translate(-50%, -50%);
1760
+ }
1761
+
1762
+ .data-fields-params {
1763
+ background: #f8f9fa;
1764
+ border-radius: 8px;
1765
+ padding: 12px;
1766
+ margin-bottom: 10px;
1767
+ flex-shrink: 0;
1768
+ }
1769
+
1770
+ .params-row {
1771
+ display: flex;
1772
+ gap: 15px;
1773
+ flex-wrap: wrap;
1774
+ align-items: end;
1775
+ }
1776
+
1777
+ .param-group {
1778
+ min-width: 120px;
1779
+ flex: 1;
1780
+ }
1781
+
1782
+ .param-group label {
1783
+ display: block;
1784
+ margin-bottom: 5px;
1785
+ font-weight: 500;
1786
+ color: #333;
1787
+ }
1788
+
1789
+ .loading-message {
1790
+ text-align: center;
1791
+ padding: 40px;
1792
+ color: #666;
1793
+ font-size: 16px;
1794
+ }
1795
+
1796
+ .data-fields-content {
1797
+ display: flex;
1798
+ flex-direction: column;
1799
+ gap: 10px;
1800
+ flex: 1;
1801
+ min-height: 0;
1802
+ }
1803
+
1804
+ .data-fields-controls {
1805
+ display: flex;
1806
+ gap: 10px;
1807
+ align-items: center;
1808
+ flex-wrap: wrap;
1809
+ background: #f8f9fa;
1810
+ padding: 10px;
1811
+ border-radius: 8px;
1812
+ flex-shrink: 0;
1813
+ }
1814
+
1815
+ .filter-label {
1816
+ font-weight: 600;
1817
+ color: #333;
1818
+ font-size: 14px;
1819
+ display: flex;
1820
+ align-items: center;
1821
+ }
1822
+
1823
+ .filter-label span {
1824
+ white-space: nowrap;
1825
+ }
1826
+
1827
+ .filter-options {
1828
+ display: flex;
1829
+ gap: 20px;
1830
+ flex: 1;
1831
+ }
1832
+
1833
+ .filter-options label {
1834
+ display: flex;
1835
+ align-items: center;
1836
+ gap: 5px;
1837
+ cursor: pointer;
1838
+ font-size: 14px;
1839
+ color: #555;
1840
+ }
1841
+
1842
+ .filter-options input[type="checkbox"] {
1843
+ cursor: pointer;
1844
+ }
1845
+
1846
+ .filter-actions {
1847
+ display: flex;
1848
+ gap: 10px;
1849
+ }
1850
+
1851
+ .data-fields-stats {
1852
+ font-size: 13px;
1853
+ color: #666;
1854
+ padding: 8px;
1855
+ background: #f8f9fa;
1856
+ border-radius: 5px;
1857
+ text-align: center;
1858
+ font-weight: 500;
1859
+ flex-shrink: 0;
1860
+ }
1861
+
1862
+ .data-fields-stats span {
1863
+ margin: 0 10px;
1864
+ }
1865
+
1866
+ .data-fields-table-container {
1867
+ flex: 1;
1868
+ overflow-y: auto;
1869
+ overflow-x: auto;
1870
+ border: 1px solid #e0e6ed;
1871
+ border-radius: 8px;
1872
+ background: white;
1873
+ position: relative;
1874
+ min-height: 0;
1875
+ max-height: calc(100vh - 400px);
1876
+ }
1877
+
1878
+ .data-fields-table {
1879
+ width: 100%;
1880
+ min-width: 900px;
1881
+ border-collapse: collapse;
1882
+ font-size: 14px;
1883
+ table-layout: fixed;
1884
+ }
1885
+
1886
+ .data-fields-table thead {
1887
+ position: sticky;
1888
+ top: 0;
1889
+ background: #f8f9fa;
1890
+ z-index: 100;
1891
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
1892
+ }
1893
+
1894
+ .data-fields-table thead tr {
1895
+ background: #f8f9fa;
1896
+ }
1897
+
1898
+ .data-fields-table th {
1899
+ padding: 10px 8px;
1900
+ text-align: left;
1901
+ font-weight: 600;
1902
+ color: #333;
1903
+ border-bottom: 2px solid #e0e6ed;
1904
+ background: #f8f9fa;
1905
+ font-size: 13px;
1906
+ }
1907
+
1908
+ .data-fields-table th:first-child {
1909
+ text-align: center;
1910
+ }
1911
+
1912
+ .data-fields-table .header-row th {
1913
+ position: relative;
1914
+ padding-right: 30px;
1915
+ }
1916
+
1917
+ .sort-btn {
1918
+ position: absolute;
1919
+ right: 5px;
1920
+ top: 50%;
1921
+ transform: translateY(-50%);
1922
+ background: none;
1923
+ border: none;
1924
+ cursor: pointer;
1925
+ font-size: 14px;
1926
+ color: #666;
1927
+ padding: 2px 5px;
1928
+ border-radius: 3px;
1929
+ transition: all 0.2s ease;
1930
+ }
1931
+
1932
+ .sort-btn:hover {
1933
+ background: #e0e6ed;
1934
+ color: #333;
1935
+ }
1936
+
1937
+ .sort-btn.asc::after {
1938
+ content: '↑';
1939
+ }
1940
+
1941
+ .sort-btn.desc::after {
1942
+ content: '↓';
1943
+ }
1944
+
1945
+ .filter-row th {
1946
+ padding: 6px 5px;
1947
+ background: #f0f3f6;
1948
+ border-bottom: 1px solid #e0e6ed;
1949
+ }
1950
+
1951
+ .column-filter {
1952
+ width: 100%;
1953
+ padding: 4px 6px;
1954
+ border: 1px solid #ddd;
1955
+ border-radius: 4px;
1956
+ font-size: 12px;
1957
+ background: white;
1958
+ }
1959
+
1960
+ .column-filter:focus {
1961
+ outline: none;
1962
+ border-color: #667eea;
1963
+ box-shadow: 0 0 0 2px rgba(102, 126, 234, 0.1);
1964
+ }
1965
+
1966
+ .column-filter.active {
1967
+ background: #e3f2fd;
1968
+ border-color: #2196f3;
1969
+ }
1970
+
1971
+ .range-filter {
1972
+ display: flex;
1973
+ align-items: center;
1974
+ gap: 5px;
1975
+ }
1976
+
1977
+ .column-filter-min,
1978
+ .column-filter-max {
1979
+ width: 48%;
1980
+ padding: 4px 4px;
1981
+ border: 1px solid #ddd;
1982
+ border-radius: 4px;
1983
+ font-size: 11px;
1984
+ background: white;
1985
+ }
1986
+
1987
+ .column-filter-min:focus,
1988
+ .column-filter-max:focus {
1989
+ outline: none;
1990
+ border-color: #667eea;
1991
+ box-shadow: 0 0 0 2px rgba(102, 126, 234, 0.1);
1992
+ }
1993
+
1994
+ .data-fields-table tbody tr {
1995
+ transition: background-color 0.2s ease;
1996
+ cursor: pointer;
1997
+ }
1998
+
1999
+ .data-fields-table tbody tr:hover {
2000
+ background: #f8f9fa;
2001
+ }
2002
+
2003
+ .data-fields-table tbody tr.selected {
2004
+ background: #e3f2fd;
2005
+ }
2006
+
2007
+ .data-fields-table td {
2008
+ padding: 8px;
2009
+ border-bottom: 1px solid #f0f3f6;
2010
+ vertical-align: top;
2011
+ }
2012
+
2013
+ .data-fields-table td:first-child {
2014
+ text-align: center;
2015
+ }
2016
+
2017
+ .data-field-checkbox {
2018
+ cursor: pointer;
2019
+ transform: scale(1.1);
2020
+ }
2021
+
2022
+ .data-field-id {
2023
+ font-weight: 600;
2024
+ color: #1976d2;
2025
+ font-family: 'Consolas', 'Monaco', monospace;
2026
+ font-size: 13px;
2027
+ }
2028
+
2029
+ .data-field-description {
2030
+ color: #333;
2031
+ font-size: 13px;
2032
+ line-height: 1.4;
2033
+ }
2034
+
2035
+ .data-field-type {
2036
+ font-family: 'Consolas', 'Monaco', monospace;
2037
+ font-size: 12px;
2038
+ color: #666;
2039
+ background: #f0f3f6;
2040
+ padding: 2px 6px;
2041
+ border-radius: 3px;
2042
+ }
2043
+
2044
+ .data-field-coverage {
2045
+ font-weight: 500;
2046
+ color: #059862;
2047
+ }
2048
+
2049
+ .data-field-count {
2050
+ color: #666;
2051
+ font-size: 13px;
2052
+ }
2053
+
2054
+ .selected-data-fields {
2055
+ margin-top: 10px;
2056
+ padding-top: 10px;
2057
+ border-top: 1px solid #e0e6ed;
2058
+ flex-shrink: 0;
2059
+ max-height: 100px;
2060
+ overflow-y: auto;
2061
+ }
2062
+
2063
+ .selected-data-fields strong {
2064
+ display: block;
2065
+ margin-bottom: 10px;
2066
+ color: #333;
2067
+ }
2068
+
2069
+ /* Responsive adjustments for data fields modal */
2070
+ @media (max-width: 768px) {
2071
+ #brainDataFieldsModal .modal-content {
2072
+ width: calc(100vw - 20px);
2073
+ height: calc(100vh - 20px);
2074
+ margin: 10px auto;
2075
+ }
2076
+
2077
+ .params-row {
2078
+ flex-direction: column;
2079
+ gap: 10px;
2080
+ }
2081
+
2082
+ .param-group {
2083
+ min-width: auto;
2084
+ width: 100%;
2085
+ }
2086
+
2087
+ .data-fields-controls {
2088
+ flex-direction: column;
2089
+ gap: 10px;
2090
+ }
2091
+
2092
+ .filter-options {
2093
+ flex-direction: column;
2094
+ gap: 10px;
2095
+ width: 100%;
2096
+ }
2097
+
2098
+ .filter-actions {
2099
+ width: 100%;
2100
+ justify-content: center;
2101
+ }
2102
+
2103
+ .data-fields-table-container {
2104
+ max-height: calc(100vh - 350px);
2105
+ overflow-y: auto;
2106
+ overflow-x: auto;
2107
+ }
2108
+
2109
+ .data-fields-table {
2110
+ font-size: 12px;
2111
+ min-width: 600px;
2112
+ }
2113
+
2114
+ .data-fields-table th,
2115
+ .data-fields-table td {
2116
+ padding: 8px 5px;
2117
+ }
2118
+
2119
+ .data-field-id {
2120
+ font-size: 12px;
2121
+ }
2122
+
2123
+ .data-field-description {
2124
+ font-size: 12px;
2125
+ }
2126
+
2127
+ .data-field-type,
2128
+ .data-field-coverage,
2129
+ .data-field-count {
2130
+ font-size: 11px;
2131
+ }
2132
+ }
2133
+
2134
+ /* Progress Bar Styles */
2135
+ .test-progress {
2136
+ margin: 20px 0;
2137
+ }
2138
+
2139
+ .progress-bar {
2140
+ width: 100%;
2141
+ height: 20px;
2142
+ background-color: #f0f0f0;
2143
+ border-radius: 10px;
2144
+ overflow: hidden;
2145
+ margin-bottom: 10px;
2146
+ }
2147
+
2148
+ .progress-bar-fill {
2149
+ height: 100%;
2150
+ background-color: #28a745;
2151
+ transition: width 0.3s ease;
2152
+ }
2153
+
2154
+ .test-results {
2155
+ padding: 20px 0;
2156
+ }
2157
+
2158
+ .test-result-item {
2159
+ margin-bottom: 15px;
2160
+ padding: 15px;
2161
+ border: 1px solid #e0e0e0;
2162
+ border-radius: 5px;
2163
+ background-color: #f9f9f9;
2164
+ }
2165
+
2166
+ .test-result-item.success {
2167
+ border-color: #28a745;
2168
+ background-color: #f0fff4;
2169
+ }
2170
+
2171
+ .test-result-item.error {
2172
+ border-color: #dc3545;
2173
+ background-color: #fff5f5;
2174
+ }
2175
+
2176
+ .test-result-item.running {
2177
+ border-color: #ffc107;
2178
+ background-color: #fffbf0;
2179
+ }
2180
+
2181
+ .test-result-expression {
2182
+ font-family: 'Courier New', monospace;
2183
+ font-size: 14px;
2184
+ margin-bottom: 10px;
2185
+ word-break: break-all;
2186
+ }
2187
+
2188
+ .test-result-status {
2189
+ font-weight: bold;
2190
+ margin-bottom: 5px;
2191
+ }
2192
+
2193
+ .test-result-message {
2194
+ color: #666;
2195
+ font-size: 13px;
2196
+ }
2197
+
2198
+ .test-summary {
2199
+ margin-bottom: 20px;
2200
+ padding: 15px;
2201
+ background-color: #f0f0f0;
2202
+ border-radius: 5px;
2203
+ }
2204
+
2205
+ .test-summary-stats {
2206
+ display: flex;
2207
+ gap: 20px;
2208
+ margin-top: 10px;
2209
+ }
2210
+
2211
+ .test-summary-stat {
2212
+ flex: 1;
2213
+ text-align: center;
2214
+ }
2215
+
2216
+ .test-summary-stat-value {
2217
+ font-size: 24px;
2218
+ font-weight: bold;
2219
+ }
2220
+
2221
+ .test-summary-stat-label {
2222
+ font-size: 14px;
2223
+ color: #666;
2224
+ }
2225
+
2226
+ /* Tooltip styles */
2227
+ .tooltip {
2228
+ position: relative;
2229
+ display: inline-block;
2230
+ }
2231
+
2232
+ /* Paper Analysis Styles */
2233
+ .paper-analysis-container {
2234
+ max-width: 1200px;
2235
+ margin: 0 auto;
2236
+ padding: 20px;
2237
+ }
2238
+
2239
+ .api-key-section,
2240
+ .upload-section,
2241
+ .analysis-options,
2242
+ .results-section {
2243
+ background: #fff;
2244
+ border-radius: 8px;
2245
+ padding: 20px;
2246
+ margin-bottom: 20px;
2247
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
2248
+ }
2249
+
2250
+ /* File Upload Styles */
2251
+ .file-upload-container {
2252
+ border: 2px dashed #ccc;
2253
+ border-radius: 8px;
2254
+ padding: 20px;
2255
+ text-align: center;
2256
+ cursor: pointer;
2257
+ transition: border-color 0.3s ease;
2258
+ }
2259
+
2260
+ .file-upload-container:hover,
2261
+ .file-upload-container.drag-over {
2262
+ border-color: #007bff;
2263
+ }
2264
+
2265
+ .file-input {
2266
+ display: none;
2267
+ }
2268
+
2269
+ .file-label {
2270
+ display: block;
2271
+ cursor: pointer;
2272
+ }
2273
+
2274
+ .upload-icon {
2275
+ font-size: 48px;
2276
+ margin-bottom: 10px;
2277
+ }
2278
+
2279
+ .upload-text {
2280
+ font-size: 16px;
2281
+ font-weight: 500;
2282
+ }
2283
+
2284
+ .file-types {
2285
+ display: block;
2286
+ font-size: 12px;
2287
+ color: #6c757d;
2288
+ margin-top: 5px;
2289
+ }
2290
+
2291
+ .file-info {
2292
+ margin-top: 15px;
2293
+ padding: 10px;
2294
+ background: #f8f9fa;
2295
+ border-radius: 4px;
2296
+ }
2297
+
2298
+ /* Analysis Options */
2299
+ .options-grid {
2300
+ display: grid;
2301
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
2302
+ gap: 15px;
2303
+ margin-bottom: 20px;
2304
+ }
2305
+
2306
+ .option-checkbox {
2307
+ display: flex;
2308
+ align-items: center;
2309
+ gap: 8px;
2310
+ padding: 10px;
2311
+ background: #f8f9fa;
2312
+ border-radius: 4px;
2313
+ cursor: pointer;
2314
+ }
2315
+
2316
+ /* Results Section */
2317
+ .results-tabs {
2318
+ display: flex;
2319
+ gap: 10px;
2320
+ margin-bottom: 20px;
2321
+ border-bottom: 1px solid #dee2e6;
2322
+ padding-bottom: 10px;
2323
+ }
2324
+
2325
+ .tab-btn {
2326
+ padding: 8px 16px;
2327
+ border: none;
2328
+ background: none;
2329
+ cursor: pointer;
2330
+ border-radius: 4px 4px 0 0;
2331
+ transition: all 0.3s ease;
2332
+ }
2333
+
2334
+ .tab-btn.active {
2335
+ background: #007bff;
2336
+ color: white;
2337
+ }
2338
+
2339
+ .tab-pane {
2340
+ display: none;
2341
+ }
2342
+
2343
+ .tab-pane.active {
2344
+ display: block;
2345
+ }
2346
+
2347
+ /* Keywords Display */
2348
+ .keyword-item {
2349
+ display: flex;
2350
+ justify-content: space-between;
2351
+ align-items: center;
2352
+ padding: 10px;
2353
+ background: #f8f9fa;
2354
+ border-radius: 4px;
2355
+ margin-bottom: 8px;
2356
+ }
2357
+
2358
+ .keyword-score {
2359
+ background: #007bff;
2360
+ color: white;
2361
+ padding: 4px 8px;
2362
+ border-radius: 4px;
2363
+ font-size: 0.9em;
2364
+ }
2365
+
2366
+ /* Summary Display */
2367
+ .summary-text {
2368
+ line-height: 1.6;
2369
+ padding: 15px;
2370
+ background: #f8f9fa;
2371
+ border-radius: 4px;
2372
+ white-space: pre-wrap;
2373
+ }
2374
+
2375
+ /* Related Works Display */
2376
+ .related-work-item {
2377
+ padding: 15px;
2378
+ background: #f8f9fa;
2379
+ border-radius: 4px;
2380
+ margin-bottom: 15px;
2381
+ }
2382
+
2383
+ .related-work-item h3 {
2384
+ margin-bottom: 5px;
2385
+ }
2386
+
2387
+ .formula-item {
2388
+ background: #f8f9fa;
2389
+ border: 1px solid #e9ecef;
2390
+ border-radius: 8px;
2391
+ padding: 20px;
2392
+ margin-bottom: 15px;
2393
+ transition: all 0.3s ease;
2394
+ }
2395
+
2396
+ .formula-item:hover {
2397
+ box-shadow: 0 4px 12px rgba(0,0,0,0.1);
2398
+ transform: translateY(-2px);
2399
+ }
2400
+
2401
+ .formula-header {
2402
+ display: flex;
2403
+ justify-content: space-between;
2404
+ align-items: center;
2405
+ margin-bottom: 15px;
2406
+ flex-wrap: wrap;
2407
+ gap: 10px;
2408
+ }
2409
+
2410
+ .formula-number {
2411
+ font-weight: bold;
2412
+ color: #6c757d;
2413
+ font-size: 14px;
2414
+ }
2415
+
2416
+ .formula-type {
2417
+ padding: 4px 12px;
2418
+ border-radius: 20px;
2419
+ font-size: 12px;
2420
+ font-weight: 600;
2421
+ text-transform: uppercase;
2422
+ letter-spacing: 0.5px;
2423
+ }
2424
+
2425
+ .formula-type.definition {
2426
+ background: #e3f2fd;
2427
+ color: #1976d2;
2428
+ }
2429
+
2430
+ .formula-type.theorem {
2431
+ background: #f3e5f5;
2432
+ color: #7b1fa2;
2433
+ }
2434
+
2435
+ .formula-type.lemma {
2436
+ background: #e8f5e9;
2437
+ color: #388e3c;
2438
+ }
2439
+
2440
+ .formula-type.equation {
2441
+ background: #fff3e0;
2442
+ color: #f57c00;
2443
+ }
2444
+
2445
+ .formula-type.inequality {
2446
+ background: #fce4ec;
2447
+ color: #c2185b;
2448
+ }
2449
+
2450
+ .formula-type.identity {
2451
+ background: #e0f2f1;
2452
+ color: #00796b;
2453
+ }
2454
+
2455
+ .formula-type.other {
2456
+ background: #f5f5f5;
2457
+ color: #616161;
2458
+ }
2459
+
2460
+ .formula-chinese {
2461
+ font-size: 14px;
2462
+ color: #495057;
2463
+ background: #fff3cd;
2464
+ padding: 10px;
2465
+ border-radius: 5px;
2466
+ border-left: 3px solid #ffc107;
2467
+ line-height: 1.4;
2468
+ }
2469
+
2470
+ .formula-chinese strong {
2471
+ color: #856404;
2472
+ }
2473
+
2474
+ .formula-expression {
2475
+ background: white;
2476
+ padding: 20px;
2477
+ border-radius: 6px;
2478
+ margin-bottom: 15px;
2479
+ text-align: center;
2480
+ font-size: 18px;
2481
+ overflow-x: auto;
2482
+ box-shadow: inset 0 1px 3px rgba(0,0,0,0.05);
2483
+ }
2484
+
2485
+ .formula-description {
2486
+ font-size: 15px;
2487
+ color: #495057;
2488
+ margin-bottom: 10px;
2489
+ font-weight: 500;
2490
+ }
2491
+
2492
+ .formula-variables {
2493
+ font-size: 14px;
2494
+ color: #6c757d;
2495
+ margin-bottom: 10px;
2496
+ padding: 10px;
2497
+ background: #f8f9fa;
2498
+ border-radius: 5px;
2499
+ border-left: 3px solid #007bff;
2500
+ }
2501
+
2502
+ .variables-list {
2503
+ margin-top: 8px;
2504
+ }
2505
+
2506
+ .variables-tabs {
2507
+ display: flex;
2508
+ gap: 5px;
2509
+ margin-bottom: 10px;
2510
+ }
2511
+
2512
+ .var-tab-btn {
2513
+ padding: 5px 12px;
2514
+ border: 1px solid #007bff;
2515
+ background: white;
2516
+ color: #007bff;
2517
+ border-radius: 4px;
2518
+ cursor: pointer;
2519
+ font-size: 12px;
2520
+ transition: all 0.3s ease;
2521
+ }
2522
+
2523
+ .var-tab-btn:hover {
2524
+ background: #e3f2fd;
2525
+ }
2526
+
2527
+ .var-tab-btn.active {
2528
+ background: #007bff;
2529
+ color: white;
2530
+ }
2531
+
2532
+ .variables-content {
2533
+ position: relative;
2534
+ }
2535
+
2536
+ .variables-list {
2537
+ margin-top: 0;
2538
+ }
2539
+
2540
+ .variables-list.chinese-vars,
2541
+ .variables-list.english-vars {
2542
+ display: none;
2543
+ }
2544
+
2545
+ .variables-list.chinese-vars.active,
2546
+ .variables-list.english-vars.active {
2547
+ display: block;
2548
+ }
2549
+
2550
+ .variable-item {
2551
+ margin-bottom: 5px;
2552
+ padding: 5px 0;
2553
+ border-bottom: 1px solid #e9ecef;
2554
+ display: flex;
2555
+ align-items: center;
2556
+ gap: 15px;
2557
+ }
2558
+
2559
+ .variable-item:last-child {
2560
+ border-bottom: none;
2561
+ margin-bottom: 0;
2562
+ }
2563
+
2564
+ .variable-symbol {
2565
+ min-width: 80px;
2566
+ font-size: 16px;
2567
+ display: inline-block;
2568
+ }
2569
+
2570
+ .variable-separator {
2571
+ color: #6c757d;
2572
+ margin: 0 5px;
2573
+ font-weight: 500;
2574
+ }
2575
+
2576
+ .variable-desc {
2577
+ flex: 1;
2578
+ color: #495057;
2579
+ font-size: 14px;
2580
+ }
2581
+
2582
+ .variable-item code {
2583
+ background: #e3f2fd;
2584
+ padding: 2px 6px;
2585
+ border-radius: 3px;
2586
+ font-family: 'Consolas', 'Monaco', monospace;
2587
+ font-weight: bold;
2588
+ color: #1976d2;
2589
+ margin-right: 8px;
2590
+ }
2591
+
2592
+ .formula-context {
2593
+ font-size: 14px;
2594
+ color: #6c757d;
2595
+ margin-bottom: 10px;
2596
+ }
2597
+
2598
+ .similarity {
2599
+ color: #6c757d;
2600
+ font-size: 0.9em;
2601
+ margin-top: 5px;
2602
+ }
2603
+
2604
+ /* Loading Overlay */
2605
+ .loading-overlay {
2606
+ position: fixed;
2607
+ top: 0;
2608
+ left: 0;
2609
+ right: 0;
2610
+ bottom: 0;
2611
+ background: rgba(255, 255, 255, 0.9);
2612
+ display: flex;
2613
+ flex-direction: column;
2614
+ justify-content: center;
2615
+ align-items: center;
2616
+ z-index: 1000;
2617
+ }
2618
+
2619
+ .loading-spinner {
2620
+ width: 50px;
2621
+ height: 50px;
2622
+ border: 4px solid #f3f3f3;
2623
+ border-top: 4px solid #007bff;
2624
+ border-radius: 50%;
2625
+ animation: spin 1s linear infinite;
2626
+ }
2627
+
2628
+ .loading-message {
2629
+ margin-top: 15px;
2630
+ font-size: 1.1em;
2631
+ color: #333;
2632
+ }
2633
+
2634
+ @keyframes spin {
2635
+ 0% { transform: rotate(0deg); }
2636
+ 100% { transform: rotate(360deg); }
2637
+ }
2638
+
2639
+ /* Notifications */
2640
+ .notification {
2641
+ position: fixed;
2642
+ top: 20px;
2643
+ right: 20px;
2644
+ padding: 15px 25px;
2645
+ border-radius: 4px;
2646
+ color: white;
2647
+ z-index: 1000;
2648
+ animation: slideIn 0.3s ease-out;
2649
+ }
2650
+
2651
+ .notification.success {
2652
+ background-color: #28a745;
2653
+ }
2654
+
2655
+ .notification.error {
2656
+ background-color: #dc3545;
2657
+ }
2658
+
2659
+ .notification.warning {
2660
+ background-color: #ffc107;
2661
+ color: #212529;
2662
+ }
2663
+
2664
+ @keyframes slideIn {
2665
+ from { transform: translateY(100px); opacity: 0; }
2666
+ to { transform: translateY(0); opacity: 1; }
2667
+ }
2668
+
2669
+ @keyframes fadeOut {
2670
+ from { opacity: 1; }
2671
+ to { opacity: 0; }
2672
+ }
2673
+
2674
+ /* Export Section */
2675
+ .export-section {
2676
+ margin-top: 20px;
2677
+ padding-top: 20px;
2678
+ border-top: 1px solid #dee2e6;
2679
+ text-align: right;
2680
+ }
2681
+
2682
+ /* Unified Templates Section */
2683
+ .templates-section {
2684
+ background: white;
2685
+ border-radius: 10px;
2686
+ padding: 20px;
2687
+ margin-bottom: 20px;
2688
+ box-shadow: 0 2px 10px rgba(0,0,0,0.1);
2689
+ }
2690
+
2691
+ .templates-header {
2692
+ display: flex;
2693
+ justify-content: space-between;
2694
+ align-items: center;
2695
+ margin-bottom: 15px;
2696
+ flex-wrap: wrap;
2697
+ gap: 10px;
2698
+ }
2699
+
2700
+ .templates-header h3 {
2701
+ color: #333;
2702
+ font-size: 1.2em;
2703
+ margin: 0;
2704
+ }
2705
+
2706
+ .template-actions {
2707
+ display: flex;
2708
+ gap: 10px;
2709
+ align-items: center;
2710
+ }
2711
+
2712
+ #toggleTemplateView {
2713
+ background-color: #4a5568;
2714
+ border-color: #4a5568;
2715
+ }
2716
+
2717
+ #toggleTemplateView:hover {
2718
+ background-color: #2d3748;
2719
+ border-color: #2d3748;
2720
+ }
2721
+
2722
+ /* Template buttons container */
2723
+ .all-template-buttons {
2724
+ display: flex;
2725
+ flex-wrap: wrap;
2726
+ gap: 10px;
2727
+ margin-top: 15px;
2728
+ }
2729
+
2730
+ #exampleTemplateButtons,
2731
+ #customTemplateButtons {
2732
+ display: flex;
2733
+ flex-wrap: wrap;
2734
+ gap: 10px;
2735
+ width: 100%;
2736
+ }
2737
+
2738
+ /* Base template button styles */
2739
+ .btn-template {
2740
+ padding: 8px 16px;
2741
+ border-radius: 6px;
2742
+ font-size: 14px;
2743
+ font-weight: 500;
2744
+ cursor: pointer;
2745
+ transition: all 0.3s ease;
2746
+ text-decoration: none;
2747
+ display: inline-block;
2748
+ border: 1px solid;
2749
+ position: relative;
2750
+ }
2751
+
2752
+ /* Example template styles - purple theme */
2753
+ .btn-template-example {
2754
+ background: #f3f0ff;
2755
+ color: #6b46c1;
2756
+ border-color: #d8b4fe;
2757
+ }
2758
+
2759
+ .btn-template-example:hover {
2760
+ background: #7c3aed;
2761
+ color: white;
2762
+ border-color: #7c3aed;
2763
+ transform: translateY(-1px);
2764
+ box-shadow: 0 2px 5px rgba(124, 58, 237, 0.3);
2765
+ }
2766
+
2767
+ /* Custom template styles - blue theme */
2768
+ .btn-template-custom {
2769
+ background: #eff6ff;
2770
+ color: #1e40af;
2771
+ border-color: #bfdbfe;
2772
+ padding-right: 35px;
2773
+ }
2774
+
2775
+ .btn-template-custom:hover {
2776
+ background: #2563eb;
2777
+ color: white;
2778
+ border-color: #2563eb;
2779
+ transform: translateY(-1px);
2780
+ box-shadow: 0 2px 5px rgba(37, 99, 235, 0.3);
2781
+ }
2782
+
2783
+ /* Delete button for custom templates */
2784
+ .btn-template-custom .delete-btn {
2785
+ position: absolute;
2786
+ right: 8px;
2787
+ top: 50%;
2788
+ transform: translateY(-50%);
2789
+ background: none;
2790
+ border: none;
2791
+ color: #dc3545;
2792
+ cursor: pointer;
2793
+ font-size: 16px;
2794
+ padding: 2px 6px;
2795
+ opacity: 0;
2796
+ transition: opacity 0.2s ease;
2797
+ }
2798
+
2799
+ .btn-template-custom:hover .delete-btn {
2800
+ opacity: 1;
2801
+ }
2802
+
2803
+ .btn-template-custom .delete-btn:hover {
2804
+ color: #c82333;
2805
+ background: rgba(220, 53, 69, 0.1);
2806
+ border-radius: 3px;
2807
+ }
2808
+
2809
+ .custom-template-info {
2810
+ text-align: center;
2811
+ color: #6c757d;
2812
+ font-style: italic;
2813
+ margin-top: 10px;
2814
+ }
2815
+
2816
+ /* Operator Description Enhancements */
2817
+ .description-indicator {
2818
+ font-size: 12px;
2819
+ color: #2196F3;
2820
+ margin-left: 5px;
2821
+ opacity: 0.7;
2822
+ transition: opacity 0.2s ease;
2823
+ }
2824
+
2825
+ .operator-item:hover .description-indicator {
2826
+ opacity: 1;
2827
+ }
2828
+
2829
+ .operator-item[title] {
2830
+ position: relative;
2831
+ }
2832
+
2833
+ /* Custom tooltip implementation - will be positioned dynamically */
2834
+ .custom-tooltip {
2835
+ position: fixed;
2836
+ padding: 8px 12px;
2837
+ background: #2c3e50;
2838
+ color: white;
2839
+ border-radius: 6px;
2840
+ font-size: 13px;
2841
+ line-height: 1.4;
2842
+ white-space: pre-wrap;
2843
+ max-width: 300px;
2844
+ z-index: 10000;
2845
+ box-shadow: 0 2px 8px rgba(0,0,0,0.3);
2846
+ pointer-events: none;
2847
+ opacity: 0;
2848
+ transition: opacity 0.2s ease;
2849
+ word-wrap: break-word;
2850
+ }
2851
+
2852
+ @keyframes tooltipFadeIn {
2853
+ from {
2854
+ opacity: 0;
2855
+ transform: translateX(-5px);
2856
+ }
2857
+ to {
2858
+ opacity: 1;
2859
+ transform: translateX(0);
2860
+ }
2861
+ }
2862
+
2863
+ /* Ensure tooltips don't get cut off in modal while maintaining scroll */
2864
+ .operators-list {
2865
+ overflow-y: auto;
2866
+ overflow-x: visible;
2867
+ }
2868
+
2869
+ .operator-item {
2870
+ overflow: visible;
2871
+ }
2872
+
2873
+ /* Brain Operators Modal specific layout fixes */
2874
+ #brainOperatorsModal .modal-body {
2875
+ display: flex;
2876
+ flex-direction: column;
2877
+ gap: 15px;
2878
+ position: relative;
2879
+ min-height: 400px;
2880
+ }
2881
+
2882
+ #brainOperatorsModal .search-section,
2883
+ #brainOperatorsModal .category-filter,
2884
+ #brainOperatorsModal .operator-actions {
2885
+ flex-shrink: 0;
2886
+ order: 1;
2887
+ }
2888
+
2889
+ #brainOperatorsModal .operators-list {
2890
+ flex: 1;
2891
+ order: 2;
2892
+ min-height: 250px;
2893
+ }
2894
+
2895
+ #brainOperatorsModal .selected-operators {
2896
+ flex-shrink: 0;
2897
+ order: 3;
2898
+ margin-top: auto;
2899
+ position: relative;
2900
+ z-index: 1;
2901
+ }
2902
+
2903
+ /* Simulator Options Modal */
2904
+ .simulator-options {
2905
+ display: grid;
2906
+ grid-template-columns: 1fr 1fr;
2907
+ gap: 20px;
2908
+ margin: 20px 0;
2909
+ }
2910
+
2911
+ .simulator-option {
2912
+ background: #f8f9fa;
2913
+ border: 2px solid #e9ecef;
2914
+ border-radius: 8px;
2915
+ padding: 20px;
2916
+ cursor: pointer;
2917
+ transition: all 0.3s ease;
2918
+ position: relative;
2919
+ overflow: hidden;
2920
+ }
2921
+
2922
+ .simulator-option:hover {
2923
+ border-color: #007bff;
2924
+ background: #f0f8ff;
2925
+ transform: translateY(-2px);
2926
+ box-shadow: 0 4px 12px rgba(0, 123, 255, 0.15);
2927
+ }
2928
+
2929
+ .simulator-option::before {
2930
+ content: '';
2931
+ position: absolute;
2932
+ top: 0;
2933
+ left: 0;
2934
+ width: 100%;
2935
+ height: 4px;
2936
+ background: linear-gradient(90deg, #007bff, #6610f2);
2937
+ opacity: 0;
2938
+ transition: opacity 0.3s ease;
2939
+ }
2940
+
2941
+ .simulator-option:hover::before {
2942
+ opacity: 1;
2943
+ }
2944
+
2945
+ .option-icon {
2946
+ font-size: 2.5em;
2947
+ text-align: center;
2948
+ margin-bottom: 15px;
2949
+ }
2950
+
2951
+ .option-content h4 {
2952
+ color: #333;
2953
+ margin-bottom: 10px;
2954
+ font-size: 1.2em;
2955
+ font-weight: 600;
2956
+ }
2957
+
2958
+ .option-content p {
2959
+ color: #666;
2960
+ margin-bottom: 15px;
2961
+ line-height: 1.5;
2962
+ }
2963
+
2964
+ .option-content ul {
2965
+ list-style: none;
2966
+ padding: 0;
2967
+ }
2968
+
2969
+ .option-content li {
2970
+ color: #555;
2971
+ margin-bottom: 5px;
2972
+ position: relative;
2973
+ padding-left: 20px;
2974
+ font-size: 0.9em;
2975
+ }
2976
+
2977
+ .option-content li::before {
2978
+ content: '✓';
2979
+ position: absolute;
2980
+ left: 0;
2981
+ color: #28a745;
2982
+ font-weight: bold;
2983
+ }
2984
+
2985
+ /* Responsive design for simulator options */
2986
+ @media (max-width: 768px) {
2987
+ .simulator-options {
2988
+ grid-template-columns: 1fr;
2989
+ gap: 15px;
2990
+ }
2991
+
2992
+ .simulator-option {
2993
+ padding: 15px;
2994
+ }
2995
+
2996
+ .option-icon {
2997
+ font-size: 2em;
2998
+ margin-bottom: 10px;
2999
+ }
3000
+
3001
+ .option-content h4 {
3002
+ font-size: 1.1em;
3003
+ }
3004
+ }
3005
+
3006
+ /* Markdown formatting styles for Inspiration House */
3007
+ .reason-text {
3008
+ line-height: 1.6;
3009
+ color: #333;
3010
+ }
3011
+
3012
+ .reason-text strong {
3013
+ font-weight: 600;
3014
+ color: #2c3e50;
3015
+ }
3016
+
3017
+ .reason-text em {
3018
+ font-style: italic;
3019
+ color: #7f8c8d;
3020
+ }
3021
+
3022
+ .reason-text code {
3023
+ background-color: #f8f9fa;
3024
+ padding: 2px 6px;
3025
+ border-radius: 3px;
3026
+ font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
3027
+ font-size: 0.9em;
3028
+ color: #e74c3c;
3029
+ border: 1px solid #e9ecef;
3030
+ }
3031
+
3032
+ .reason-text h2 {
3033
+ font-size: 1.3em;
3034
+ font-weight: 600;
3035
+ color: #2c3e50;
3036
+ margin: 15px 0 8px 0;
3037
+ border-bottom: 2px solid #3498db;
3038
+ padding-bottom: 5px;
3039
+ }
3040
+
3041
+ .reason-text h3 {
3042
+ font-size: 1.2em;
3043
+ font-weight: 600;
3044
+ color: #34495e;
3045
+ margin: 12px 0 6px 0;
3046
+ }
3047
+
3048
+ .reason-text h4 {
3049
+ font-size: 1.1em;
3050
+ font-weight: 600;
3051
+ color: #34495e;
3052
+ margin: 10px 0 5px 0;
3053
+ }
3054
+
3055
+ .reason-text br {
3056
+ margin-bottom: 8px;
3057
+ }
3058
+
3059
+ .reason-text ul {
3060
+ margin: 8px 0;
3061
+ padding-left: 20px;
3062
+ }
3063
+
3064
+ .reason-text ol {
3065
+ margin: 8px 0;
3066
+ padding-left: 20px;
3067
+ }
3068
+
3069
+ .reason-text li {
3070
+ margin: 4px 0;
3071
+ line-height: 1.5;
3072
+ }
3073
+
3074
+ /* Bullet points for lists */
3075
+ .reason-text li:before {
3076
+ content: "•";
3077
+ color: #3498db;
3078
+ font-weight: bold;
3079
+ display: inline-block;
3080
+ width: 1em;
3081
+ margin-left: -1em;
3082
+ }
3083
+
3084
+ .reason-text ol li:before {
3085
+ content: counter(list-item) ".";
3086
+ color: #3498db;
3087
+ font-weight: bold;
3088
+ }
3089
+
3090
+ /* Blockquote styling */
3091
+ .reason-text blockquote {
3092
+ border-left: 4px solid #3498db;
3093
+ margin: 10px 0;
3094
+ padding: 10px 15px;
3095
+ background-color: #f8f9fa;
3096
+ border-radius: 0 4px 4px 0;
3097
+ font-style: italic;
3098
+ color: #555;
3099
+ }