dsleo commited on
Commit
e46268a
·
verified ·
1 Parent(s): 5a48bf2

Update style.css

Browse files
Files changed (1) hide show
  1. style.css +865 -18
style.css CHANGED
@@ -1,28 +1,875 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
 
 
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
 
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
 
 
 
 
 
 
28
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ :root {
2
+ --background: #121212;
3
+ --foreground: #e0e0e0;
4
+ --surface1: #1a1a1a;
5
+ --surface2: #242424;
6
+ --primary-text: #e0e0e0;
7
+ --secondary-text: #aaaaaa;
8
+ --accent: #ffdd57;
9
+ --accent-hover: #ffc800;
10
+ --border-color: #333333;
11
+
12
+
13
+ --graph-node-theorem: #3b82f6;
14
+ /* blue */
15
+ --graph-node-lemma: #3b82f6;
16
+ /* treat lemmas like theorems */
17
+ --graph-node-definition: #22c55e;
18
+ /* green */
19
+ --graph-node-remark: #ef4444;
20
+ /* red (remarks) */
21
+ --graph-node-example: #a855f7;
22
+ /* purple (facts/examples) */
23
+ --graph-node-corollary: #f97316;
24
+ /* orange (corollaries) */
25
+ --graph-node-external: #b45309;
26
+ /* brown (external references) */
27
+ --graph-node-generic: #e5e7eb;
28
+ }
29
+
30
+ * {
31
+ box-sizing: border-box;
32
+ }
33
+
34
+ html,
35
  body {
36
+ margin: 0;
37
+ padding: 0;
38
+ height: 100%;
39
+ }
40
+
41
+ body {
42
+ background: var(--background);
43
+ color: var(--primary-text);
44
+ font-family: 'Source Serif 4', Georgia, serif;
45
+ }
46
+
47
+ .hidden {
48
+ display: none !important;
49
+ }
50
+
51
+ h1,
52
+ h2,
53
+ h3 {
54
+ font-family: 'Inter', system-ui, sans-serif;
55
+ }
56
+
57
+ code {
58
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
59
+ 'Liberation Mono', 'Courier New', monospace;
60
+ background-color: var(--surface2);
61
+ padding: 0.2em 0.4em;
62
+ border-radius: 4px;
63
+ font-size: 0.9em;
64
+ color: var(--accent);
65
+ }
66
+
67
+ .page-root {
68
+ min-height: 100vh;
69
+ display: flex;
70
+ justify-content: center;
71
+ padding: 1rem 1rem 2.5rem;
72
+ }
73
+
74
+ .page-inner {
75
+ width: 100%;
76
+ max-width: 72rem;
77
+ /* ~max-w-6xl */
78
+ }
79
+
80
+ /* Hero (landing) --------------------------------------------------------- */
81
+
82
+ .hero {
83
+ display: flex;
84
+ flex-direction: column;
85
+ align-items: center;
86
+ }
87
+
88
+ .hero-header {
89
+ width: 100%;
90
+ max-width: 48rem;
91
+ /* ~max-w-4xl */
92
+ text-align: center;
93
+ }
94
+
95
+ .hero-title {
96
+ margin: 0;
97
+ font-size: 2.6rem;
98
+ font-weight: 900;
99
+ letter-spacing: -0.04em;
100
+ color: var(--accent);
101
+ }
102
+
103
+ /* Make the title behave like a "home" button. */
104
+ #home-title {
105
+ cursor: pointer;
106
+ }
107
+
108
+ #home-title:hover {
109
+ text-decoration: underline;
110
+ }
111
+
112
+ .hero-subtitle {
113
+ margin-top: 0.5rem;
114
+ font-size: 1.1rem;
115
+ color: var(--secondary-text);
116
+ }
117
+
118
+ .hero-form {
119
+ width: 100%;
120
+ max-width: 40rem;
121
+ /* ~max-w-xl */
122
+ margin-top: 2rem;
123
+ display: flex;
124
+ flex-direction: column;
125
+ gap: 0.75rem;
126
+ background: var(--surface1);
127
+ border: 1px solid var(--border-color);
128
+ border-radius: 12px;
129
+ padding: 16px;
130
+ }
131
+
132
+ .hero-form-row {
133
+ display: flex;
134
+ align-items: center;
135
+ gap: 0.5rem;
136
+ }
137
+
138
+ .hero-input {
139
+ flex-grow: 1;
140
+ padding: 0.75rem 0.9rem;
141
+ border-radius: 10px;
142
+ border: 1px solid var(--border-color);
143
+ background: var(--surface2);
144
+ color: var(--primary-text);
145
+ font-family: 'Inter', system-ui, sans-serif;
146
+ font-size: 0.9rem;
147
+ }
148
+
149
+ .hero-input::placeholder {
150
+ color: #6b6b6b;
151
+ }
152
+
153
+ .hero-input:focus {
154
+ outline: none;
155
+ border-color: var(--accent);
156
+ }
157
+
158
+ .hero-button {
159
+ padding: 0.75rem 1.5rem;
160
+ border-radius: 10px;
161
+ border: 2px solid var(--accent);
162
+ background: var(--accent);
163
+ color: var(--background);
164
+ font-family: 'Inter', system-ui, sans-serif;
165
+ font-size: 0.9rem;
166
+ font-weight: 600;
167
+ cursor: pointer;
168
+ white-space: nowrap;
169
+ }
170
+
171
+ .hero-button:disabled {
172
+ opacity: 0.6;
173
+ cursor: default;
174
+ }
175
+
176
+ .hero-footnote-row {
177
+ display: flex;
178
+ justify-content: space-between;
179
+ align-items: flex-start;
180
+ gap: 0.5rem;
181
+ }
182
+
183
+ .hero-error {
184
+ margin: 0;
185
+ font-family: 'Inter', system-ui, sans-serif;
186
+ font-size: 0.85rem;
187
+ color: #ff6b6b;
188
+ }
189
+
190
+ .dataset-base-display {
191
+ font-family: 'Inter', system-ui, sans-serif;
192
+ font-size: 0.75rem;
193
+ color: var(--secondary-text);
194
+ text-align: right;
195
+ word-break: break-all;
196
+ }
197
+
198
+ .hero-carousel {
199
+ width: 100%;
200
+ max-width: 40rem;
201
+ /* Extra breathing room so the cards never feel like they touch
202
+ the search box above, even on small screens. */
203
+ margin-top: 2.25rem;
204
+ }
205
+
206
+ .hero-carousel-header {
207
+ display: flex;
208
+ align-items: center;
209
+ justify-content: center;
210
+ gap: 0.75rem;
211
+ }
212
+
213
+ .hero-list-intro {
214
+ font-family: 'Inter', system-ui, sans-serif;
215
+ font-size: 0.9rem;
216
+ color: var(--secondary-text);
217
+ text-align: center;
218
+ }
219
+
220
+ .hero-carousel-dots {
221
+ margin-top: 0.5rem;
222
+ display: flex;
223
+ justify-content: center;
224
+ gap: 0.4rem;
225
+ }
226
+
227
+ .hero-carousel-dot {
228
+ width: 8px;
229
+ height: 8px;
230
+ border-radius: 999px;
231
+ border: 1px solid var(--border-color);
232
+ background: var(--surface2);
233
+ padding: 0;
234
+ cursor: pointer;
235
+ }
236
+
237
+ .hero-carousel-dot:hover {
238
+ border-color: var(--accent);
239
+ background: var(--accent);
240
+ }
241
+
242
+ .hero-carousel-nav {
243
+ display: flex;
244
+ align-items: center;
245
+ gap: 0.35rem;
246
+ }
247
+
248
+ .hero-carousel-btn {
249
+ width: 28px;
250
+ height: 28px;
251
+ border-radius: 999px;
252
+ border: 1px solid var(--border-color);
253
+ background: var(--surface2);
254
+ color: var(--secondary-text);
255
+ font-size: 0.9rem;
256
+ cursor: pointer;
257
+ display: inline-flex;
258
+ align-items: center;
259
+ justify-content: center;
260
+ padding: 0;
261
+ }
262
+
263
+ .hero-carousel-btn:hover {
264
+ border-color: var(--accent);
265
+ color: var(--accent);
266
+ }
267
+
268
+ .sample-papers {
269
+ width: 100%;
270
+ max-width: 40rem;
271
+ margin-top: 0.75rem;
272
+ display: flex;
273
+ flex-direction: row;
274
+ gap: 0.75rem;
275
+ }
276
+
277
+ .sample-paper-card {
278
+ flex: 1 1 0;
279
+ border-radius: 10px;
280
+ border: 1px solid var(--border-color);
281
+ background: var(--surface1);
282
+ padding: 10px 12px;
283
+ cursor: pointer;
284
+ text-align: left;
285
+ transition: border-color 0.12s ease, background-color 0.12s ease, transform 0.12s ease;
286
+ }
287
+
288
+ .sample-paper-card:hover {
289
+ border-color: var(--accent);
290
+ background: var(--surface2);
291
+ transform: translateY(-1px);
292
+ }
293
+
294
+ .sample-paper-title {
295
+ margin: 0;
296
+ font-family: 'Inter', system-ui, sans-serif;
297
+ font-size: 0.85rem;
298
+ font-weight: 600;
299
+ color: #ffffff;
300
+ /* Allow up to 2 lines with a clamp so titles are readable
301
+ without making the cards excessively tall. */
302
+ display: -webkit-box;
303
+ -webkit-line-clamp: 2;
304
+ -webkit-box-orient: vertical;
305
+ overflow: hidden;
306
+ }
307
+
308
+ .sample-paper-authors {
309
+ margin-top: 0.25rem;
310
+ font-family: 'Inter', system-ui, sans-serif;
311
+ font-size: 0.75rem;
312
+ color: var(--secondary-text);
313
+ white-space: nowrap;
314
+ overflow: hidden;
315
+ text-overflow: ellipsis;
316
+ }
317
+
318
+ .hero-carousel-track {
319
+ margin-top: 0.5rem;
320
+ display: grid;
321
+ grid-template-columns: auto 1fr auto;
322
+ align-items: center;
323
+ gap: 0.5rem;
324
+ }
325
+
326
+ /* Ensure the middle grid item can shrink; otherwise the flex row can
327
+ overflow and push the right nav button off-screen. */
328
+ .sample-papers {
329
+ min-width: 0;
330
+ max-width: 100%;
331
+ }
332
+
333
+ /* Cards should also be allowed to shrink within the flex row. */
334
+ .sample-paper-card {
335
+ min-width: 0;
336
+ }
337
+
338
+ /* The HTML uses `hero-carousel-dot hero-carousel-dot--side` for the
339
+ prev/next controls. Style them like arrow buttons (not tiny dots). */
340
+ .hero-carousel-dot--side {
341
+ width: 32px;
342
+ height: 32px;
343
+ border-radius: 999px;
344
+ border: 1px solid var(--border-color);
345
+ background: var(--surface2);
346
+ color: var(--secondary-text);
347
+ font-size: 1.1rem;
348
+ cursor: pointer;
349
+ display: inline-flex;
350
+ align-items: center;
351
+ justify-content: center;
352
+ padding: 0;
353
+ }
354
+
355
+ .hero-carousel-dot--side:hover {
356
+ border-color: var(--accent);
357
+ color: var(--accent);
358
+ }
359
+
360
+ /* Inject the arrow glyphs so we don't need to change HTML. */
361
+ #carousel-prev::before {
362
+ content: "‹";
363
+ }
364
+
365
+ #carousel-next::before {
366
+ content: "›";
367
+ }
368
+
369
+ /* Paper + graph area ----------------------------------------------------- */
370
+
371
+ .paper-area {
372
+ margin-top: 2.5rem;
373
+ }
374
+
375
+ .empty-state-card {
376
+ background: var(--surface1);
377
+ border: 1px solid var(--border-color);
378
+ border-radius: 12px;
379
+ padding: 16px;
380
+ }
381
+
382
+ .empty-state-title {
383
+ margin: 0 0 0.4rem;
384
+ font-family: 'Inter', system-ui, sans-serif;
385
+ font-size: 1rem;
386
+ font-weight: 600;
387
+ }
388
+
389
+ .empty-state-body {
390
+ margin: 0;
391
+ font-family: 'Inter', system-ui, sans-serif;
392
+ font-size: 0.9rem;
393
+ color: var(--secondary-text);
394
+ }
395
+
396
+ .paper-card {
397
+ background: var(--surface1);
398
+ border: 1px solid var(--border-color);
399
+ border-radius: 12px;
400
+ padding: 16px;
401
+ }
402
+
403
+ .paper-header-top {
404
+ display: flex;
405
+ flex-wrap: wrap;
406
+ justify-content: space-between;
407
+ align-items: flex-start;
408
+ gap: 1rem;
409
+ }
410
+
411
+ .paper-header-main {
412
+ flex: 1 1 260px;
413
+ }
414
+
415
+ .paper-title-row {
416
+ display: flex;
417
+ flex-wrap: wrap;
418
+ align-items: center;
419
+ gap: 0.75rem;
420
+ }
421
+
422
+ .paper-title {
423
+ margin: 0;
424
+ font-size: 1.6rem;
425
+ font-weight: 900;
426
+ letter-spacing: -0.03em;
427
+ color: var(--accent);
428
+ }
429
+
430
+ .paper-authors {
431
+ margin-top: 0.4rem;
432
+ font-size: 0.9rem;
433
+ font-family: 'Inter', system-ui, sans-serif;
434
+ color: var(--secondary-text);
435
+ }
436
+
437
+ .paper-link-btn {
438
+ display: inline-flex;
439
+ align-items: center;
440
+ justify-content: center;
441
+ width: 36px;
442
+ height: 36px;
443
+ border-radius: 10px;
444
+ border: 1px solid var(--border-color);
445
+ background: var(--surface2);
446
+ transition: transform 0.12s ease, border-color 0.12s ease;
447
+ }
448
+
449
+ .paper-link-btn:hover {
450
+ border-color: var(--accent);
451
+ transform: translateY(-1px);
452
+ }
453
+
454
+ .paper-link-icon {
455
+ font-size: 0.9rem;
456
+ filter: invert(0.92);
457
+ opacity: 0.9;
458
+ }
459
+
460
+ .paper-abstract {
461
+ margin-top: 0.75rem;
462
+ font-size: 0.9rem;
463
+ line-height: 1.5;
464
+ background: var(--surface2);
465
+ border-radius: 10px;
466
+ border: 1px solid var(--border-color);
467
+ padding: 12px;
468
+ color: var(--primary-text);
469
+ }
470
+
471
+ .paper-status-line {
472
+ margin-top: 0.75rem;
473
+ font-family: 'Inter', system-ui, sans-serif;
474
+ font-size: 0.85rem;
475
+ display: flex;
476
+ flex-wrap: wrap;
477
+ gap: 0.5rem;
478
+ color: var(--secondary-text);
479
+ }
480
+
481
+ .paper-error-text {
482
+ color: #ff6b6b;
483
+ }
484
+
485
+ /* Constellations-inspired graph shell ----------------------------------- */
486
+
487
+ .graph-section {
488
+ margin-top: 1.5rem;
489
+ }
490
+
491
+ .graph-title {
492
+ margin: 0 0 0.4rem;
493
+ font-family: 'Inter', system-ui, sans-serif;
494
+ font-size: 1rem;
495
+ font-weight: 600;
496
+ }
497
+
498
+ .graph-shell {
499
+ position: relative;
500
+ width: 100%;
501
+ height: 70vh;
502
+ min-height: 320px;
503
+ overflow: hidden;
504
+ border-radius: 12px;
505
+ background: var(--background);
506
+ border: 1px solid var(--border-color);
507
+ }
508
+
509
+ .graph-container {
510
+ position: relative;
511
+ width: 100%;
512
+ height: 100%;
513
+ }
514
+
515
+ .graph-svg {
516
+ width: 100%;
517
+ height: 100%;
518
+ cursor: move;
519
+ }
520
+
521
+ #tooltip {
522
+ position: absolute;
523
+ /* Display is controlled via JS by toggling opacity; keep it block-level
524
+ here so `opacity: 0` fully hides it while still allowing positioning. */
525
+ max-width: 450px;
526
+ z-index: 50;
527
+ background: var(--surface2);
528
+ color: var(--primary-text);
529
+ padding: 12px;
530
+ border-radius: 8px;
531
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.35);
532
+ border: 1px solid var(--border-color);
533
+ pointer-events: none;
534
+ font-family: 'Inter', system-ui, sans-serif;
535
+ font-size: 0.78rem;
536
+ }
537
+
538
+ .math-content {
539
+ font-size: 12px;
540
+ line-height: 1.35;
541
+ }
542
+
543
+ .legend {
544
+ position: absolute;
545
+ left: 12px;
546
+ bottom: 12px;
547
+ z-index: 20;
548
+ background: var(--surface1);
549
+ border: 1px solid var(--border-color);
550
+ border-radius: 10px;
551
+ padding: 12px 12px;
552
+ max-width: 420px;
553
+ color: var(--primary-text);
554
+ }
555
+
556
+ .legend-header {
557
+ display: flex;
558
+ align-items: center;
559
+ justify-content: space-between;
560
+ gap: 10px;
561
+ margin-bottom: 8px;
562
+ }
563
+
564
+ .legend-section-header {
565
+ display: flex;
566
+ align-items: center;
567
+ justify-content: space-between;
568
+ gap: 10px;
569
+ margin-bottom: 6px;
570
+ }
571
+
572
+ .legend-title {
573
+ margin: 0;
574
+ font-weight: 900;
575
+ font-size: 12px;
576
+ font-family: 'Inter', system-ui, sans-serif;
577
+ color: var(--accent);
578
+ }
579
+
580
+ #legend-stats {
581
+ margin: 0;
582
+ font-weight: 800;
583
+ font-size: 12px;
584
+ font-family: 'Inter', system-ui, sans-serif;
585
+ }
586
+
587
+ .legend-reset-btn {
588
+ border: none;
589
+ background: none;
590
+ color: var(--secondary-text);
591
+ font-family: 'Inter', system-ui, sans-serif;
592
+ font-size: 11px;
593
+ cursor: pointer;
594
+ }
595
+
596
+ .legend-reset-btn:hover {
597
+ color: var(--accent);
598
+ }
599
+
600
+ .legend-toggle {
601
+ border: 1px solid var(--border-color);
602
+ background: var(--surface2);
603
+ color: var(--primary-text);
604
+ font-family: 'Inter', system-ui, sans-serif;
605
+ font-size: 12px;
606
+ width: 28px;
607
+ height: 24px;
608
+ border-radius: 6px;
609
+ cursor: pointer;
610
+ line-height: 1;
611
+ }
612
+
613
+ .legend-toggle:hover {
614
+ border-color: var(--accent);
615
+ color: var(--accent);
616
+ }
617
+
618
+ .legend--collapsed {
619
+ max-width: 180px;
620
+ }
621
+
622
+ .legend--collapsed .legend-body {
623
+ display: none;
624
+ }
625
+
626
+ .legend-grid {
627
+ display: flex;
628
+ flex-wrap: wrap;
629
+ gap: 8px 10px;
630
+ }
631
+
632
+ .legend-item {
633
+ display: inline-flex;
634
+ align-items: center;
635
+ gap: 6px;
636
+ cursor: pointer;
637
+ user-select: none;
638
+ font-size: 12px;
639
+ font-family: 'Inter', system-ui, sans-serif;
640
+ color: var(--primary-text);
641
+ }
642
+
643
+ .legend-item.inactive {
644
+ opacity: 0.35;
645
+ }
646
+
647
+ .legend-color {
648
+ width: 12px;
649
+ height: 12px;
650
+ border-radius: 3px;
651
+ }
652
+
653
+ .edge-legend-line {
654
+ width: 16px;
655
+ height: 3px;
656
+ border-radius: 3px;
657
+ }
658
+
659
+ #info-panel {
660
+ position: absolute;
661
+ top: 0;
662
+ right: 0;
663
+ width: 360px;
664
+ max-width: 92%;
665
+ height: 100%;
666
+ overflow: auto;
667
+ z-index: 30;
668
+ background: var(--surface2);
669
+ border-left: 1px solid var(--border-color);
670
+ display: flex;
671
+ flex-direction: column;
672
+ transform: translateX(105%);
673
+ transition: transform 0.25s ease-in-out;
674
+ }
675
+
676
+ #info-panel.visible {
677
+ transform: translateX(0);
678
+ }
679
+
680
+ #info-header {
681
+ display: flex;
682
+ align-items: center;
683
+ justify-content: space-between;
684
+ gap: 10px;
685
+ padding: 14px 14px;
686
+ border-bottom: 1px solid var(--border-color);
687
+ font-family: 'Inter', system-ui, sans-serif;
688
+ }
689
+
690
+ #info-title {
691
+ font-weight: 800;
692
+ color: var(--primary-text);
693
+ display: inline-flex;
694
+ align-items: center;
695
+ gap: 6px;
696
+ }
697
+
698
+ .info-title-flag-btn {
699
+ border: none;
700
+ background: none;
701
+ padding: 0;
702
+ margin-left: 4px;
703
+ cursor: pointer;
704
+ color: var(--secondary-text);
705
+ }
706
+
707
+ .info-title-flag-btn:hover {
708
+ color: var(--accent);
709
+ }
710
+
711
+ #close-info-panel {
712
+ border: none;
713
+ background: none;
714
+ color: var(--secondary-text);
715
+ font-size: 24px;
716
+ font-weight: bold;
717
+ cursor: pointer;
718
+ }
719
+
720
+ #close-info-panel:hover {
721
+ color: var(--accent);
722
+ }
723
+
724
+ #info-body {
725
+ padding: 14px;
726
+ font-size: 13px;
727
+ color: var(--primary-text);
728
+ }
729
+
730
+ #info-body h4 {
731
+ margin-top: 14px;
732
+ margin-bottom: 6px;
733
+ padding-bottom: 6px;
734
+ border-bottom: 1px solid var(--border-color);
735
+ color: var(--accent);
736
+ font-family: 'Inter', system-ui, sans-serif;
737
+ }
738
+
739
+ .node {
740
+ stroke: var(--surface1);
741
+ stroke-width: 3px;
742
+ cursor: pointer;
743
+ }
744
+
745
+ .node:hover {
746
+ stroke: var(--accent);
747
+ }
748
+
749
+ .node.selected {
750
+ stroke: var(--accent);
751
  }
752
 
753
+ .link {
754
+ stroke-opacity: 0.6;
755
+ stroke-width: 1.5px;
756
+ transition: stroke-width 0.2s, stroke-opacity 0.2s;
757
+ cursor: pointer;
758
  }
759
 
760
+ .link:hover {
761
+ stroke-width: 4px;
762
+ stroke-opacity: 1;
 
 
763
  }
764
 
765
+ .node-label {
766
+ font-size: 12px;
767
+ fill: var(--primary-text);
768
+ text-anchor: middle;
769
+ pointer-events: none;
770
+ font-weight: 500;
771
+ font-family: 'Inter', system-ui, sans-serif;
772
  }
773
 
774
+ .floating-controls {
775
+ position: absolute;
776
+ top: 85px;
777
+ left: 15px;
778
+ display: none;
779
+ gap: 8px;
780
+ z-index: 100;
781
+ pointer-events: all;
782
  }
783
+
784
+ .floating-controls button {
785
+ padding: 6px 12px;
786
+ border: 1px solid var(--border-color);
787
+ background: var(--surface2);
788
+ border-radius: 4px;
789
+ cursor: pointer;
790
+ font-size: 14px;
791
+ transition: background-color 0.2s;
792
+ color: var(--primary-text);
793
+ font-family: 'Inter', system-ui, sans-serif;
794
+ }
795
+
796
+ .floating-controls button:hover {
797
+ background: var(--surface1);
798
+ }
799
+
800
+ .floating-controls button.primary {
801
+ background: var(--accent);
802
+ border-color: var(--accent);
803
+ color: var(--background);
804
+ font-weight: 700;
805
+ }
806
+
807
+ .floating-controls button.primary:hover {
808
+ background: var(--accent-hover);
809
+ border-color: var(--accent-hover);
810
+ }
811
+
812
+ /* Definition bank card */
813
+
814
+ .definition-bank-title {
815
+ font-family: 'Inter', system-ui, sans-serif;
816
+ font-size: 1rem;
817
+ font-weight: 600;
818
+ margin: 0;
819
+ }
820
+
821
+ .definition-bank-subtitle {
822
+ margin: 0.25rem 0 0;
823
+ font-family: 'Inter', system-ui, sans-serif;
824
+ font-size: 0.8rem;
825
+ color: var(--secondary-text);
826
+ }
827
+
828
+ .definition-bank-card {
829
+ width: 100%;
830
+ border-radius: 12px;
831
+ padding: 16px;
832
+ border: 1px solid var(--border-color);
833
+ background: var(--surface1);
834
+ color: var(--primary-text);
835
+ }
836
+
837
+ .definition-bank-header {
838
+ display: flex;
839
+ align-items: baseline;
840
+ justify-content: space-between;
841
+ gap: 0.75rem;
842
+ }
843
+
844
+ .definition-bank-count {
845
+ font-size: 0.75rem;
846
+ font-family: 'Inter', system-ui, sans-serif;
847
+ color: var(--secondary-text);
848
+ }
849
+
850
+ .definition-bank-list {
851
+ margin-top: 0.75rem;
852
+ max-height: 20rem;
853
+ overflow-y: auto;
854
+ }
855
+
856
+ .definition-item-card {
857
+ padding: 6px 8px;
858
+ border-radius: 6px;
859
+ }
860
+
861
+ .definition-item-card:hover {
862
+ background: var(--surface2);
863
+ }
864
+
865
+ .definition-item-term {
866
+ font-size: 0.9rem;
867
+ font-weight: 600;
868
+ font-family: 'Inter', system-ui, sans-serif;
869
+ }
870
+
871
+ .definition-item-text {
872
+ margin-top: 2px;
873
+ font-size: 0.8rem;
874
+ color: var(--secondary-text);
875
+ }