@zhangly1403/dxfviewer 1.0.0 → 1.2.0

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.
@@ -1,87 +1,126 @@
1
- /* Global Styles */
2
1
  :root {
3
- --bg-gray-50: #f9fafb;
4
- --bg-gray-100: #f3f4f6;
5
- --bg-gray-200: #e5e7eb;
6
- --bg-gray-300: #d1d5db;
7
- --bg-gray-900: #111827;
8
- --text-gray-500: #6b7280;
9
- --text-gray-900: #111827;
10
- --blue-600: #2563eb;
11
- --blue-700: #1d4ed8;
12
- --cad-bg: #212121;
2
+ /* Light Theme (Default) */
3
+ --bg-primary: #ffffff;
4
+ --bg-secondary: #f3f3f3;
5
+ --bg-tertiary: #eeeeee;
6
+ --bg-hover: #e5e5e5;
7
+ --bg-selected: #007acc;
8
+
9
+ --border-color: #cccccc;
10
+ --text-primary: #333333;
11
+ --text-secondary: #666666;
12
+ --text-bright: #000000;
13
+
14
+ --accent-blue: #007acc;
15
+ --accent-blue-hover: #0062a3;
16
+
17
+ --toolbar-height: 30px;
18
+ --sidebar-width: 260px;
19
+ --properties-width: 320px;
20
+ --status-bar-bg: #2d4a76;
21
+ }
22
+
23
+ .theme-dark {
24
+ --bg-primary: #1e1e1e;
25
+ --bg-secondary: #252526;
26
+ --bg-tertiary: #2d2d2d;
27
+ --bg-hover: #37373d;
28
+ --bg-selected: #37373d;
29
+
30
+ --border-color: #3c3c3c;
31
+ --text-primary: #cccccc;
32
+ --text-secondary: #969696;
33
+ --text-bright: #ffffff;
34
+ }
35
+
36
+ html, body {
37
+ margin: 0;
38
+ padding: 0;
39
+ height: 100%;
40
+ width: 100%;
41
+ overflow: hidden;
13
42
  }
14
43
 
15
44
  body {
16
- margin: 0;
17
- padding: 0;
18
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
45
+ font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
19
46
  -webkit-font-smoothing: antialiased;
20
47
  -moz-osx-font-smoothing: grayscale;
48
+ background-color: var(--bg-primary);
49
+ color: var(--text-primary);
50
+ font-size: 12px;
21
51
  }
22
52
 
23
53
  .app-container {
24
54
  display: flex;
25
55
  flex-direction: column;
26
- height: 100vh;
27
- width: 100vw;
28
- background-color: var(--bg-gray-100);
29
- color: var(--bg-gray-900);
56
+ height: 100%;
57
+ width: 100%;
58
+ background-color: var(--bg-primary);
30
59
  overflow: hidden;
31
60
  position: relative;
61
+ flex: 1;
62
+ min-height: 0;
32
63
  }
33
64
 
65
+ /* Loading Overlay */
34
66
  .loading-overlay {
35
67
  position: absolute;
36
68
  top: 0;
37
69
  left: 0;
38
70
  right: 0;
39
71
  bottom: 0;
40
- background-color: rgba(255, 255, 255, 0.8);
41
- backdrop-filter: blur(4px);
42
- z-index: 50;
72
+ background-color: rgba(255, 255, 255, 0.7);
73
+ backdrop-filter: blur(2px);
74
+ z-index: 1000;
43
75
  display: flex;
44
76
  flex-direction: column;
45
77
  align-items: center;
46
78
  justify-content: center;
47
79
  }
48
80
 
81
+ .theme-dark .loading-overlay {
82
+ background-color: rgba(30, 30, 30, 0.7);
83
+ }
84
+
49
85
  .loading-box {
50
- width: 16rem;
86
+ width: 200px;
51
87
  text-align: center;
52
88
  }
53
89
 
54
90
  .loading-text {
55
- font-size: 1.25rem;
91
+ font-size: 13px;
56
92
  font-weight: 600;
57
- color: var(--blue-600);
58
- margin-bottom: 1rem;
93
+ color: var(--text-primary);
94
+ margin-bottom: 12px;
59
95
  }
60
96
 
61
97
  .progress-bar-container {
62
- height: 0.25rem;
98
+ height: 4px;
63
99
  width: 100%;
64
- background-color: var(--bg-gray-200);
100
+ background-color: var(--bg-tertiary);
101
+ border-radius: 2px;
65
102
  overflow: hidden;
66
103
  }
67
104
 
68
105
  .progress-bar {
69
106
  height: 100%;
70
- background-color: var(--blue-600);
71
- transition: all 100ms ease-out;
107
+ background-color: var(--accent-blue);
108
+ transition: width 0.2s ease-out;
72
109
  }
73
110
 
74
111
  .progress-text {
75
- font-size: 0.75rem;
76
- color: var(--text-gray-500);
112
+ font-size: 10px;
113
+ color: var(--text-secondary);
77
114
  font-family: monospace;
78
- margin-top: 1rem;
115
+ margin-top: 6px;
79
116
  }
80
117
 
81
118
  .main-content {
82
119
  display: flex;
83
120
  flex: 1;
84
121
  overflow: hidden;
122
+ position: relative;
123
+ min-height: 0; /* Fix flex shrink issue */
85
124
  }
86
125
 
87
126
  .viewer-container {
@@ -89,410 +128,384 @@ body {
89
128
  display: flex;
90
129
  flex-direction: column;
91
130
  overflow: hidden;
92
- transition: background-color 0.3s ease;
131
+ position: relative;
132
+ min-height: 0; /* Fix flex shrink issue */
93
133
  }
94
134
 
95
- /* DxfViewer Styles */
96
- .viewer-wrapper {
135
+ /* Toolbar Styles */
136
+ .toolbar {
137
+ height: var(--toolbar-height);
138
+ background-color: var(--bg-secondary);
139
+ border-bottom: 1px solid var(--border-color);
97
140
  display: flex;
98
- flex-direction: column;
99
- flex: 1;
100
- height: 100%;
101
- position: relative;
102
- overflow: hidden;
103
- background-color: var(--bg-gray-200);
141
+ align-items: center;
142
+ padding: 0 4px;
143
+ gap: 2px;
144
+ z-index: 500;
145
+ user-select: none;
104
146
  }
105
147
 
106
- .canvas-container {
107
- flex: 1;
148
+ .menu-item {
108
149
  position: relative;
109
- cursor: default;
110
- user-select: none;
111
- overflow: hidden;
112
- background-color: #212121;
150
+ padding: 0 10px;
151
+ height: calc(var(--toolbar-height) - 4px);
152
+ display: flex;
153
+ align-items: center;
154
+ cursor: pointer;
155
+ color: var(--text-primary);
156
+ border-radius: 2px;
157
+ font-size: 12px;
158
+ transition: background-color 0.1s;
113
159
  }
114
160
 
115
- .grid-svg {
116
- position: absolute;
117
- top: 0;
118
- left: 0;
119
- width: 100%;
120
- height: 100%;
121
- pointer-events: none;
122
- opacity: 0.2;
123
- z-index: 0;
161
+ .menu-item:hover {
162
+ background-color: var(--bg-hover);
124
163
  }
125
164
 
126
- .main-canvas {
127
- display: block;
128
- width: 100%;
129
- height: 100%;
130
- z-index: 10;
165
+ .menu-item.active {
166
+ background-color: var(--bg-hover);
131
167
  }
132
168
 
133
- .selection-box {
169
+ .dropdown-menu {
134
170
  position: absolute;
135
- border: 1px solid #60a5fa;
136
- background-color: rgba(59, 130, 246, 0.2);
137
- z-index: 30;
138
- pointer-events: none;
171
+ top: 100%;
172
+ left: 0;
173
+ background-color: #ffffff;
174
+ border: 1px solid #cccccc;
175
+ box-shadow: 0 2px 8px rgba(0,0,0,0.15);
176
+ border-radius: 0;
177
+ padding: 2px 0;
178
+ min-width: 160px;
179
+ z-index: 600;
180
+ margin-top: 1px;
139
181
  }
140
182
 
141
- .status-bar {
142
- height: 32px;
143
- background-color: white;
144
- border-top: 1px solid var(--bg-gray-300);
183
+ .theme-dark .dropdown-menu {
184
+ background-color: var(--bg-secondary);
185
+ border-color: var(--border-color);
186
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
187
+ }
188
+
189
+ .dropdown-item {
190
+ padding: 6px 12px;
145
191
  display: flex;
146
192
  align-items: center;
147
- padding: 0 1rem;
148
- font-size: 13px;
149
- color: #4b5563;
150
- user-select: none;
151
- z-index: 40;
152
- flex-shrink: 0;
193
+ justify-content: space-between;
194
+ cursor: pointer;
195
+ color: #333333;
196
+ font-size: 12px;
153
197
  }
154
198
 
155
- .status-coords {
156
- display: flex;
157
- gap: 1.5rem;
199
+ .theme-dark .dropdown-item {
200
+ color: var(--text-primary);
158
201
  }
159
202
 
160
- .status-value {
161
- font-family: monospace;
162
- color: black;
203
+ .dropdown-item:hover {
204
+ background-color: var(--accent-blue);
205
+ color: #ffffff;
163
206
  }
164
207
 
165
- .status-spacer {
166
- flex: 1;
208
+ .dropdown-item.checked::after {
209
+ content: '✓';
210
+ margin-left: 8px;
211
+ font-weight: bold;
212
+ }
213
+
214
+ .divider {
215
+ height: 1px;
216
+ background-color: var(--border-color);
217
+ margin: 2px 0;
167
218
  }
168
219
 
169
220
  /* Sidebar Styles */
170
221
  .sidebar {
171
- width: 256px;
172
- background-color: white;
173
- border-right: 1px solid var(--bg-gray-300);
222
+ width: var(--sidebar-width);
223
+ background-color: var(--bg-secondary);
224
+ border-right: 1px solid var(--border-color);
174
225
  display: flex;
175
226
  flex-direction: column;
176
227
  height: 100%;
177
228
  flex-shrink: 0;
178
- z-index: 20;
179
- font-family: inherit;
180
- font-size: 14px;
229
+ z-index: 200;
181
230
  }
182
231
 
183
232
  .sidebar-header {
184
- height: 40px;
185
- background-color: var(--bg-gray-50);
186
- border-bottom: 1px solid var(--bg-gray-200);
233
+ height: 28px;
234
+ background-color: var(--bg-tertiary);
235
+ border-bottom: 1px solid var(--border-color);
187
236
  display: flex;
188
237
  align-items: center;
189
- padding: 0 0.75rem;
238
+ padding: 0 10px;
190
239
  font-size: 11px;
191
- font-weight: 700;
192
- color: var(--text-gray-500);
193
- text-transform: uppercase;
194
- letter-spacing: 0.1em;
195
- flex-shrink: 0;
240
+ font-weight: 600;
241
+ color: var(--text-secondary);
196
242
  }
197
243
 
198
244
  .sidebar-content {
199
245
  flex: 1;
200
246
  overflow-y: auto;
201
- overflow-x: hidden;
202
- background-color: white;
247
+ scrollbar-width: thin;
203
248
  }
204
249
 
205
250
  .layer-row {
206
251
  display: flex;
207
252
  align-items: center;
208
- padding: 0 0.5rem;
253
+ height: 26px;
254
+ padding: 0 6px;
209
255
  cursor: pointer;
210
- user-select: none;
211
- height: 36px;
212
- border-bottom: 1px solid var(--bg-gray-50);
213
- transition: background-color 0.2s;
256
+ font-size: 12px;
257
+ color: var(--text-primary);
214
258
  }
215
259
 
216
260
  .layer-row:hover {
217
- background-color: var(--bg-gray-100);
261
+ background-color: var(--bg-hover);
218
262
  }
219
263
 
220
- .layer-icon {
264
+ .chevron {
221
265
  width: 12px;
222
266
  height: 12px;
223
- border-radius: 2px;
224
- margin-right: 8px;
225
- border: 1px solid rgba(0, 0, 0, 0.1);
226
- flex-shrink: 0;
267
+ margin-right: 4px;
268
+ color: var(--text-secondary);
269
+ transition: transform 0.1s;
270
+ }
271
+
272
+ .chevron.expanded {
273
+ transform: rotate(90deg);
274
+ }
275
+
276
+ .layer-icon {
277
+ width: 10px;
278
+ height: 10px;
279
+ border-radius: 1px;
280
+ margin-right: 6px;
281
+ border: 1px solid rgba(0,0,0,0.1);
227
282
  }
228
283
 
229
284
  .layer-name {
230
- font-weight: 500;
231
- color: #374151;
285
+ flex: 1;
232
286
  overflow: hidden;
233
287
  text-overflow: ellipsis;
234
288
  white-space: nowrap;
235
289
  }
236
290
 
237
291
  .layer-count {
238
- margin-left: auto;
239
- font-size: 11px;
240
- color: var(--text-gray-400);
241
- opacity: 0;
242
- transition: opacity 0.2s;
243
- padding-right: 4px;
244
- }
245
-
246
- .layer-row:hover .layer-count {
247
- opacity: 1;
292
+ font-size: 10px;
293
+ color: var(--text-secondary);
294
+ margin-left: 6px;
295
+ opacity: 0.7;
248
296
  }
249
297
 
250
298
  .entity-row {
251
299
  display: flex;
252
300
  align-items: center;
253
- padding-left: 2rem;
254
- padding-right: 0.5rem;
301
+ height: 24px;
302
+ padding: 0 6px 0 24px;
255
303
  cursor: pointer;
256
- height: 36px;
257
- border-bottom: 1px solid var(--bg-gray-50);
258
- color: var(--text-gray-500);
259
- transition: all 0.2s;
304
+ font-size: 11px;
305
+ color: var(--text-secondary);
260
306
  }
261
307
 
262
308
  .entity-row:hover {
263
- background-color: var(--bg-gray-50);
309
+ background-color: var(--bg-hover);
310
+ color: var(--text-primary);
264
311
  }
265
312
 
266
313
  .entity-row.selected {
267
- background-color: #eff6ff;
268
- color: #1d4ed8;
314
+ background-color: #e8f2ff;
315
+ color: var(--accent-blue);
316
+ }
317
+
318
+ .theme-dark .entity-row.selected {
319
+ background-color: var(--bg-selected);
320
+ color: #ffffff;
269
321
  }
270
322
 
271
323
  .entity-icon {
272
- font-size: 11px;
273
- font-weight: 700;
274
- color: #9ca3af;
275
- width: 24px;
324
+ width: 14px;
276
325
  text-align: center;
277
- display: inline-block;
326
+ font-family: monospace;
327
+ font-size: 9px;
328
+ margin-right: 6px;
329
+ opacity: 0.6;
278
330
  }
279
331
 
280
332
  .entity-name {
333
+ flex: 1;
281
334
  overflow: hidden;
282
335
  text-overflow: ellipsis;
283
336
  white-space: nowrap;
284
- flex: 1;
285
- font-family: monospace;
286
- font-size: 12px;
287
337
  }
288
338
 
289
- .selection-dot {
290
- width: 6px;
291
- height: 6px;
292
- background-color: #3b82f6;
293
- border-radius: 50%;
339
+ /* Properties Panel */
340
+ .properties-panel {
341
+ width: var(--properties-width);
342
+ background-color: var(--bg-secondary);
343
+ border-left: 1px solid var(--border-color);
344
+ display: flex;
345
+ flex-direction: column;
346
+ height: 100%;
347
+ flex-shrink: 0;
348
+ z-index: 200;
294
349
  }
295
350
 
296
- .chevron {
297
- width: 14px;
298
- height: 14px;
299
- color: #9ca3af;
300
- transition: transform 0.2s;
301
- margin-right: 4px;
351
+ .properties-header {
352
+ height: 28px;
353
+ background-color: var(--bg-tertiary);
354
+ border-bottom: 1px solid var(--border-color);
355
+ display: flex;
356
+ align-items: center;
357
+ padding: 0 10px;
358
+ font-size: 11px;
359
+ font-weight: 600;
360
+ color: var(--text-secondary);
302
361
  }
303
362
 
304
- .chevron.expanded {
305
- transform: rotate(90deg);
363
+ .properties-content {
364
+ flex: 1;
365
+ overflow-y: auto;
366
+ padding: 4px 0;
306
367
  }
307
368
 
308
- .text-center { text-align: center; }
309
- .truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
310
- .ml-auto { margin-left: auto; }
311
- .pr-1 { padding-right: 0.25rem; }
312
- .font-bold { font-weight: 700; }
313
- .font-mono { font-family: monospace; }
314
- .rounded-full { border-radius: 9999px; }
315
- .shrink-0 { flex-shrink: 0; }
369
+ .properties-table {
370
+ width: 100%;
371
+ border-collapse: collapse;
372
+ }
316
373
 
317
- /* ToolBar Styles */
318
- .toolbar {
319
- height: 40px;
320
- background-color: white;
321
- border-bottom: 1px solid var(--bg-gray-300);
322
- display: flex;
323
- align-items: center;
324
- padding-left: 0.5rem;
325
- z-index: 50;
326
- flex-shrink: 0;
327
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
374
+ .property-row {
375
+ border-bottom: 1px solid var(--border-color);
328
376
  }
329
377
 
330
- .menu-item {
331
- padding: 0 1rem;
332
- height: 100%;
333
- display: flex;
334
- align-items: center;
335
- transition: background-color 0.2s;
336
- font-size: 14px;
337
- color: #1f2937;
338
- cursor: default;
339
- user-select: none;
340
- position: relative;
378
+ .property-row:hover {
379
+ background-color: var(--bg-hover);
341
380
  }
342
381
 
343
- .menu-item:hover {
344
- background-color: var(--bg-gray-200);
382
+ .property-label-cell {
383
+ padding: 4px 10px;
384
+ color: var(--text-secondary);
385
+ font-size: 11px;
386
+ width: 40%;
387
+ vertical-align: top;
345
388
  }
346
389
 
347
- .dropdown-menu {
348
- position: absolute;
349
- top: 100%;
350
- left: 0;
351
- background-color: white;
352
- border: 1px solid var(--bg-gray-300);
353
- padding: 4px 0;
354
- min-width: 140px;
355
- z-index: 60;
390
+ .property-value-cell {
391
+ padding: 4px 10px;
392
+ color: var(--text-primary);
393
+ font-size: 11px;
394
+ word-break: break-all;
356
395
  }
357
396
 
358
- .dropdown-item {
359
- padding: 8px 16px;
360
- font-size: 14px;
361
- color: #374151;
362
- cursor: pointer;
363
- white-space: nowrap;
364
- transition: all 0.2s;
397
+ .color-preview-container {
365
398
  display: flex;
366
399
  align-items: center;
367
- gap: 8px;
368
- }
369
-
370
- .dropdown-item:hover {
371
- background-color: #2b579a;
372
- color: white;
400
+ gap: 6px;
373
401
  }
374
402
 
375
- .divider {
376
- height: 1px;
377
- background-color: var(--bg-gray-200);
378
- margin: 4px 0;
403
+ .color-swatch {
404
+ width: 12px;
405
+ height: 12px;
406
+ border-radius: 1px;
407
+ border: 1px solid rgba(0,0,0,0.1);
379
408
  }
380
409
 
381
- /* Properties Panel */
382
- .properties-panel {
383
- width: 320px;
384
- background-color: white;
385
- border-left: 1px solid var(--bg-gray-300);
410
+ /* Viewer Wrapper */
411
+ .viewer-wrapper {
386
412
  display: flex;
387
413
  flex-direction: column;
414
+ flex: 1;
388
415
  height: 100%;
389
- flex-shrink: 0;
390
- z-index: 20;
416
+ position: relative;
391
417
  overflow: hidden;
392
418
  }
393
419
 
394
- .properties-header {
395
- height: 40px;
396
- background-color: var(--bg-gray-50);
397
- border-bottom: 1px solid var(--bg-gray-200);
420
+ .canvas-container {
421
+ flex: 1;
422
+ position: relative;
423
+ cursor: default !important; /* Disallow changing mouse shape */
424
+ user-select: none;
425
+ overflow: hidden;
426
+ background-color: var(--canvas-bg, #212121);
427
+ }
428
+
429
+ .canvas-container canvas {
430
+ display: block;
431
+ margin: 0;
432
+ padding: 0;
433
+ }
434
+
435
+ .selection-box {
436
+ position: absolute;
437
+ border: 1px solid #0078d4;
438
+ background-color: rgba(0, 120, 212, 0.2);
439
+ pointer-events: none;
440
+ z-index: 100;
441
+ }
442
+
443
+ /* Status Bar */
444
+ .status-bar {
445
+ height: 24px;
446
+ background-color: var(--status-bar-bg);
447
+ color: #ffffff;
398
448
  display: flex;
399
449
  align-items: center;
400
- padding: 0 1rem;
450
+ padding: 0 12px;
401
451
  font-size: 11px;
402
- font-weight: 700;
403
- color: var(--text-gray-500);
404
- text-transform: uppercase;
405
- letter-spacing: 0.1em;
452
+ z-index: 1000;
406
453
  flex-shrink: 0;
407
454
  }
408
455
 
409
- .properties-content {
410
- flex: 1;
411
- overflow-y: auto;
412
- background-color: white;
456
+ .status-coords {
457
+ display: flex;
458
+ gap: 12px;
413
459
  }
414
460
 
415
- .properties-table {
416
- width: 100%;
417
- border-collapse: collapse;
461
+ .status-left {
462
+ flex: 1;
463
+ display: flex;
464
+ justify-content: flex-start;
418
465
  }
419
466
 
420
- .property-label-cell {
421
- padding: 10px 12px;
422
- color: #6b7280;
423
- width: 120px;
424
- vertical-align: top;
467
+ .status-center {
468
+ flex: 2;
469
+ display: flex;
470
+ justify-content: center;
425
471
  font-weight: 500;
426
- font-size: 13px;
427
- background-color: rgba(249, 250, 251, 0.5);
428
- border-bottom: 1px solid #f3f4f6;
429
472
  }
430
473
 
431
- .property-value-cell {
432
- padding: 10px 12px;
474
+ .status-right {
475
+ flex: 1;
476
+ display: flex;
477
+ justify-content: flex-end;
478
+ }
479
+
480
+ .status-value {
433
481
  font-family: monospace;
434
- color: #1f2937;
435
- word-break: break-all;
436
- text-align: right;
437
- font-size: 13px;
438
- border-bottom: 1px solid #f3f4f6;
482
+ color: #ffffff;
483
+ margin-left: 2px;
439
484
  }
440
485
 
441
- .property-row:hover .property-label-cell,
442
- .property-row:hover .property-value-cell {
443
- background-color: #f9fafb;
486
+ /* Scrollbar Styles */
487
+ ::-webkit-scrollbar {
488
+ width: 8px;
489
+ height: 8px;
444
490
  }
445
491
 
446
- .color-preview-container {
447
- display: flex;
448
- align-items: center;
449
- justify-content: flex-end;
450
- gap: 8px;
492
+ ::-webkit-scrollbar-track {
493
+ background: transparent;
451
494
  }
452
495
 
453
- .color-hex {
454
- text-transform: uppercase;
455
- font-family: monospace;
496
+ ::-webkit-scrollbar-thumb {
497
+ background: #bbbbbb;
498
+ border-radius: 4px;
456
499
  }
457
500
 
458
- .color-swatch {
459
- width: 16px;
460
- height: 16px;
461
- border-radius: 2px;
462
- border: 1px solid #d1d5db;
463
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
501
+ .theme-dark ::-webkit-scrollbar-thumb {
502
+ background: #555555;
464
503
  }
465
504
 
466
- .empty-state {
467
- height: 100%;
468
- display: flex;
469
- align-items: center;
470
- justify-content: center;
471
- color: #9ca3af;
472
- font-style: italic;
473
- font-size: 14px;
474
- text-align: center;
475
- padding: 2rem;
476
- }
477
-
478
- /* Utility Classes */
479
- .flex { display: flex; }
480
- .flex-col { flex-direction: column; }
481
- .flex-1 { flex: 1; }
482
- .relative { position: relative; }
483
- .absolute { position: absolute; }
484
- .overflow-hidden { overflow: hidden; }
485
- .text-xs { font-size: 12px; }
486
- .text-sm { font-size: 14px; }
487
- .text-gray-400 { color: #9ca3af; }
488
- .text-gray-500 { color: #6b7280; }
489
- .text-blue-600 { color: #2563eb; }
490
- .font-bold { font-weight: 700; }
491
- .font-medium { font-weight: 500; }
492
- .cursor-pointer { cursor: pointer; }
493
- .select-none { user-select: none; }
494
- .hover-opacity:hover { opacity: 0.8; }
495
- .p-4 { padding: 1rem; }
496
- .m-2 { margin: 0.5rem; }
497
- .bg-white { background-color: white; }
498
- .hidden { display: none; }
505
+ ::-webkit-scrollbar-thumb:hover {
506
+ background: #999999;
507
+ }
508
+
509
+ .hidden {
510
+ display: none;
511
+ }