@yumiai/chat-widget 0.1.2 → 0.2.1

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 (107) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/README.md +119 -22
  3. package/dist/ExcelCore-DJOIVQMI.js +11 -0
  4. package/dist/ExcelCore-DJOIVQMI.js.map +1 -0
  5. package/dist/ExcelViewer-3YLLYYIQ.js +65 -0
  6. package/dist/ExcelViewer-3YLLYYIQ.js.map +1 -0
  7. package/dist/GerberViewerA2UI-7CNT7HX4.css +693 -0
  8. package/dist/GerberViewerA2UI-7CNT7HX4.css.map +1 -0
  9. package/dist/GerberViewerA2UI-X5FWAD5M.js +57 -0
  10. package/dist/GerberViewerA2UI-X5FWAD5M.js.map +1 -0
  11. package/dist/GraphStatsLegend-D5bPeXB_.d.cts +607 -0
  12. package/dist/GraphStatsLegend-D5bPeXB_.d.ts +607 -0
  13. package/dist/JsonRenderStandalone-EIZM62JU.js +18 -0
  14. package/dist/JsonRenderStandalone-EIZM62JU.js.map +1 -0
  15. package/dist/JsonRenderStandalone-POB4Q3N3.css +2384 -0
  16. package/dist/JsonRenderStandalone-POB4Q3N3.css.map +1 -0
  17. package/dist/JsonRenderStandalone-UsTcST4G.d.cts +23 -0
  18. package/dist/JsonRenderStandalone-UsTcST4G.d.ts +23 -0
  19. package/dist/KicadViewer-GV6ZC4AQ.js +124 -0
  20. package/dist/KicadViewer-GV6ZC4AQ.js.map +1 -0
  21. package/dist/KicadViewerCore-U7BWZHKJ.js +11 -0
  22. package/dist/KicadViewerCore-U7BWZHKJ.js.map +1 -0
  23. package/dist/PdfViewer-CHPDRK46.js +51 -0
  24. package/dist/PdfViewer-CHPDRK46.js.map +1 -0
  25. package/dist/PdfViewer-LPYGQETK.css +1899 -0
  26. package/dist/PdfViewer-LPYGQETK.css.map +1 -0
  27. package/dist/PdfViewerCore-HJPEHSRA.js +364 -0
  28. package/dist/PdfViewerCore-HJPEHSRA.js.map +1 -0
  29. package/dist/PowerPointCore-FPDR2BL4.js +11 -0
  30. package/dist/PowerPointCore-FPDR2BL4.js.map +1 -0
  31. package/dist/PowerPointViewer-LQTO6UCU.js +61 -0
  32. package/dist/PowerPointViewer-LQTO6UCU.js.map +1 -0
  33. package/dist/StepViewerCore-7W3L3R4E.js +285 -0
  34. package/dist/StepViewerCore-7W3L3R4E.js.map +1 -0
  35. package/dist/ThreeViewerCore-N3QJD5QI.js +161 -0
  36. package/dist/ThreeViewerCore-N3QJD5QI.js.map +1 -0
  37. package/dist/WordCore-JKSXK2XD.js +11 -0
  38. package/dist/WordCore-JKSXK2XD.js.map +1 -0
  39. package/dist/WordViewer-ZHCQMHOH.js +61 -0
  40. package/dist/WordViewer-ZHCQMHOH.js.map +1 -0
  41. package/dist/chunk-2SKA3F5U.js +88 -0
  42. package/dist/chunk-2SKA3F5U.js.map +1 -0
  43. package/dist/chunk-2UC7YLVX.js +318 -0
  44. package/dist/chunk-2UC7YLVX.js.map +1 -0
  45. package/dist/chunk-3R6T3LBR.js +24 -0
  46. package/dist/chunk-3R6T3LBR.js.map +1 -0
  47. package/dist/chunk-56WRZM3R.js +398 -0
  48. package/dist/chunk-56WRZM3R.js.map +1 -0
  49. package/dist/chunk-7A4FY6FK.js +10226 -0
  50. package/dist/chunk-7A4FY6FK.js.map +1 -0
  51. package/dist/chunk-7D4SUZUM.js +38 -0
  52. package/dist/chunk-7D4SUZUM.js.map +1 -0
  53. package/dist/chunk-7S67DOHQ.js +436 -0
  54. package/dist/chunk-7S67DOHQ.js.map +1 -0
  55. package/dist/chunk-CFKGNAJM.js +14013 -0
  56. package/dist/chunk-CFKGNAJM.js.map +1 -0
  57. package/dist/chunk-GAMA3VA7.js +99 -0
  58. package/dist/chunk-GAMA3VA7.js.map +1 -0
  59. package/dist/chunk-GYXTSY22.js +639 -0
  60. package/dist/chunk-GYXTSY22.js.map +1 -0
  61. package/dist/chunk-K4KGNVL5.js +77 -0
  62. package/dist/chunk-K4KGNVL5.js.map +1 -0
  63. package/dist/chunk-KQV7IKET.js +1621 -0
  64. package/dist/chunk-KQV7IKET.js.map +1 -0
  65. package/dist/chunk-O3NXUM6C.js +1871 -0
  66. package/dist/chunk-O3NXUM6C.js.map +1 -0
  67. package/dist/chunk-PZXSASDY.js +83 -0
  68. package/dist/chunk-PZXSASDY.js.map +1 -0
  69. package/dist/chunk-QLVPIM6R.js +595 -0
  70. package/dist/chunk-QLVPIM6R.js.map +1 -0
  71. package/dist/chunk-VXJWGLZ7.js +21 -0
  72. package/dist/chunk-VXJWGLZ7.js.map +1 -0
  73. package/dist/chunk-XQ562W7I.js +116 -0
  74. package/dist/chunk-XQ562W7I.js.map +1 -0
  75. package/dist/components/JsonRender/standalone.cjs +39368 -0
  76. package/dist/components/JsonRender/standalone.cjs.map +1 -0
  77. package/dist/components/JsonRender/standalone.css +2384 -0
  78. package/dist/components/JsonRender/standalone.css.map +1 -0
  79. package/dist/components/JsonRender/standalone.d.cts +16 -0
  80. package/dist/components/JsonRender/standalone.d.ts +16 -0
  81. package/dist/components/JsonRender/standalone.js +38 -0
  82. package/dist/components/JsonRender/standalone.js.map +1 -0
  83. package/dist/gerber-2d-entry-OQ4SQRBY.js +3950 -0
  84. package/dist/gerber-2d-entry-OQ4SQRBY.js.map +1 -0
  85. package/dist/gerber-3d-entry-DEHDBOO2.js +3679 -0
  86. package/dist/gerber-3d-entry-DEHDBOO2.js.map +1 -0
  87. package/dist/gerber-simulation-entry-EBDX72XE.js +1801 -0
  88. package/dist/gerber-simulation-entry-EBDX72XE.js.map +1 -0
  89. package/dist/index.cjs +60113 -2970
  90. package/dist/index.cjs.map +1 -1
  91. package/dist/index.css +11342 -1708
  92. package/dist/index.css.map +1 -1
  93. package/dist/index.d.cts +3275 -77
  94. package/dist/index.d.ts +3275 -77
  95. package/dist/index.js +18078 -2540
  96. package/dist/index.js.map +1 -1
  97. package/dist/provenance/index.cjs +2248 -0
  98. package/dist/provenance/index.cjs.map +1 -0
  99. package/dist/provenance/index.css +52 -0
  100. package/dist/provenance/index.css.map +1 -0
  101. package/dist/provenance/index.d.cts +12 -0
  102. package/dist/provenance/index.d.ts +12 -0
  103. package/dist/provenance/index.js +27 -0
  104. package/dist/provenance/index.js.map +1 -0
  105. package/dist/resolveToArrayBuffer-AQIDZHSQ.js +23 -0
  106. package/dist/resolveToArrayBuffer-AQIDZHSQ.js.map +1 -0
  107. package/package.json +98 -17
@@ -0,0 +1,1899 @@
1
+ /* src/components/FileViewer/FileViewer.css */
2
+ .ycw-file-viewer {
3
+ height: 100%;
4
+ overflow: auto;
5
+ }
6
+ .ycw-file-viewer-gerber {
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: 8px;
10
+ height: 100%;
11
+ min-height: 320px;
12
+ }
13
+ .ycw-file-viewer-gerber-warning {
14
+ padding: 12px;
15
+ font-size: 13px;
16
+ line-height: 1.5;
17
+ color: var(--ycw-color-text-secondary);
18
+ background: var(--ycw-color-fill-quaternary);
19
+ border-radius: 8px;
20
+ border: 1px solid var(--ycw-color-border);
21
+ }
22
+ .ycw-file-viewer-gerber-frame {
23
+ flex: 1;
24
+ width: 100%;
25
+ min-height: 480px;
26
+ border: 0;
27
+ border-radius: 8px;
28
+ background: var(--ycw-color-fill-quaternary);
29
+ }
30
+ .ycw-file-viewer-gerber-embedded {
31
+ height: 100%;
32
+ min-height: 400px;
33
+ display: flex;
34
+ flex-direction: column;
35
+ }
36
+ .ycw-gerber-mode-bar {
37
+ flex-shrink: 0;
38
+ display: flex;
39
+ gap: 2px;
40
+ padding: 4px 8px;
41
+ border-bottom: 1px solid var(--ycw-color-border);
42
+ background: var(--ycw-color-bg-primary);
43
+ }
44
+ .ycw-gerber-mode-bar .viewer-action-btn {
45
+ position: relative;
46
+ font-size: 12px;
47
+ line-height: 18px;
48
+ padding: 5px 12px;
49
+ background: transparent;
50
+ border: none;
51
+ border-radius: 0;
52
+ cursor: pointer;
53
+ color: var(--ycw-color-text-secondary);
54
+ transition: color 0.2s, background 0.2s;
55
+ white-space: nowrap;
56
+ }
57
+ .ycw-gerber-mode-bar .viewer-action-btn::after {
58
+ content: "";
59
+ position: absolute;
60
+ left: 6px;
61
+ right: 6px;
62
+ bottom: 0;
63
+ height: 2px;
64
+ border-radius: 1px;
65
+ background: transparent;
66
+ transition: background 0.2s;
67
+ }
68
+ .ycw-gerber-mode-bar .viewer-action-btn:hover {
69
+ color: var(--ycw-color-text-primary);
70
+ background: var(--ycw-color-bg-hover);
71
+ }
72
+ .ycw-gerber-mode-bar .viewer-action-btn.active {
73
+ color: var(--ycw-color-text-primary);
74
+ font-weight: 500;
75
+ }
76
+ .ycw-gerber-mode-bar .viewer-action-btn.active::after {
77
+ background: var(--ycw-color-primary);
78
+ }
79
+ .ycw-gerber-viewer-body {
80
+ flex: 1;
81
+ min-height: 0;
82
+ position: relative;
83
+ background: var(--ycw-color-bg-secondary);
84
+ }
85
+ .ycw-file-viewer-loading {
86
+ display: flex;
87
+ flex-direction: column;
88
+ align-items: center;
89
+ justify-content: center;
90
+ gap: 12px;
91
+ padding: 48px 24px;
92
+ color: var(--ycw-color-text-secondary);
93
+ }
94
+ .ycw-fvm-header {
95
+ display: flex;
96
+ align-items: center;
97
+ gap: 8px;
98
+ }
99
+ .ycw-fvm-icon {
100
+ font-size: 18px;
101
+ }
102
+ .ycw-fvm-title {
103
+ font-weight: 500;
104
+ white-space: nowrap;
105
+ overflow: hidden;
106
+ text-overflow: ellipsis;
107
+ }
108
+ .ycw-fvm-actions {
109
+ display: flex;
110
+ gap: 4px;
111
+ }
112
+ .ycw-fvm-depth {
113
+ font-size: var(--ycw-font-size-2xs);
114
+ padding: 1px 6px;
115
+ border-radius: 8px;
116
+ background: var(--ycw-color-fill-quaternary);
117
+ color: var(--ycw-color-text-tertiary);
118
+ }
119
+ .ycw-fvm-meta {
120
+ display: flex;
121
+ align-items: center;
122
+ gap: 12px;
123
+ padding: 6px 12px;
124
+ font-size: var(--ycw-font-size-sm);
125
+ color: var(--ycw-color-text-tertiary);
126
+ border-bottom: 1px solid var(--ycw-color-border);
127
+ flex-shrink: 0;
128
+ }
129
+ .ycw-fvm-path {
130
+ font-family: var(--ycw-font-family-mono);
131
+ color: var(--ycw-color-text-quaternary);
132
+ flex: 1;
133
+ min-width: 0;
134
+ overflow: hidden;
135
+ text-overflow: ellipsis;
136
+ white-space: nowrap;
137
+ }
138
+ .ycw-fvm-meta-toggle {
139
+ margin-left: auto;
140
+ flex-shrink: 0;
141
+ }
142
+ .ycw-fvm-body {
143
+ flex: 1;
144
+ overflow: auto;
145
+ min-height: 0;
146
+ padding-top: 12px;
147
+ }
148
+ .ycw-fvm-error {
149
+ padding: 24px;
150
+ text-align: center;
151
+ color: var(--ycw-color-error);
152
+ }
153
+ .ycw-fvm-kicad-ref-hint {
154
+ padding: 6px 12px;
155
+ font-size: var(--ycw-font-size-xs);
156
+ color: var(--ycw-color-text-tertiary);
157
+ background: var(--ycw-color-fill-quaternary);
158
+ border-bottom: 1px solid var(--ycw-color-border);
159
+ flex-shrink: 0;
160
+ }
161
+ .ycw-fvm-kicad-ref-hint-sub {
162
+ display: block;
163
+ margin-top: 4px;
164
+ color: var(--ycw-color-text-quaternary);
165
+ }
166
+ .ycw-fvm-kicad-canvas-bar {
167
+ display: flex;
168
+ align-items: center;
169
+ flex-wrap: wrap;
170
+ gap: 8px;
171
+ padding: 8px 12px;
172
+ background: var(--ycw-color-primary-bg);
173
+ border-bottom: 1px solid var(--ycw-color-border);
174
+ flex-shrink: 0;
175
+ }
176
+ .ycw-fvm-kicad-canvas-bar-label {
177
+ font-size: var(--ycw-font-size-sm);
178
+ color: var(--ycw-color-text-secondary);
179
+ margin-right: auto;
180
+ }
181
+ .ycw-fvm-btn-ask {
182
+ background: var(--ycw-color-primary);
183
+ color: var(--ycw-color-bg-primary);
184
+ border: none;
185
+ }
186
+ .ycw-fvm-btn-ask:hover {
187
+ filter: brightness(1.05);
188
+ }
189
+ .ycw-fvm-panel {
190
+ display: flex;
191
+ flex-direction: column;
192
+ height: 100%;
193
+ overflow: hidden;
194
+ }
195
+ .ycw-fvm-panel-header {
196
+ display: flex;
197
+ align-items: center;
198
+ justify-content: space-between;
199
+ padding: 8px 12px;
200
+ border-bottom: 1px solid var(--ycw-color-border);
201
+ flex-shrink: 0;
202
+ gap: 8px;
203
+ }
204
+ .ycw-fvm-btn {
205
+ display: inline-flex;
206
+ align-items: center;
207
+ justify-content: center;
208
+ padding: 2px 8px;
209
+ border: none;
210
+ background: transparent;
211
+ cursor: pointer;
212
+ font-size: var(--ycw-font-size-md);
213
+ color: var(--ycw-color-text-secondary);
214
+ border-radius: 4px;
215
+ transition: background var(--ycw-duration-fast), color var(--ycw-duration-fast);
216
+ white-space: nowrap;
217
+ }
218
+ .ycw-fvm-btn:hover {
219
+ background: var(--ycw-color-bg-hover);
220
+ color: var(--ycw-color-text-primary);
221
+ }
222
+ .ycw-fvm-btn-back {
223
+ font-size: var(--ycw-font-size-sm);
224
+ margin-right: 4px;
225
+ }
226
+ .ycw-fvm-breadcrumb {
227
+ display: flex;
228
+ align-items: center;
229
+ gap: 2px;
230
+ padding: 4px 12px;
231
+ font-size: var(--ycw-font-size-sm);
232
+ color: var(--ycw-color-text-tertiary);
233
+ border-bottom: 1px solid var(--ycw-color-border);
234
+ flex-shrink: 0;
235
+ overflow-x: auto;
236
+ white-space: nowrap;
237
+ }
238
+ .ycw-fvm-breadcrumb-sep {
239
+ color: var(--ycw-color-text-quaternary);
240
+ margin: 0 2px;
241
+ user-select: none;
242
+ }
243
+ .ycw-fvm-breadcrumb-link {
244
+ display: inline-flex;
245
+ align-items: center;
246
+ gap: 3px;
247
+ border: none;
248
+ background: transparent;
249
+ cursor: pointer;
250
+ font-size: var(--ycw-font-size-sm);
251
+ color: var(--ycw-color-primary);
252
+ padding: 2px 4px;
253
+ border-radius: 3px;
254
+ transition: background var(--ycw-duration-fast);
255
+ max-width: 120px;
256
+ overflow: hidden;
257
+ text-overflow: ellipsis;
258
+ }
259
+ .ycw-fvm-breadcrumb-link:hover {
260
+ background: var(--ycw-color-primary-bg);
261
+ }
262
+ .ycw-fvm-breadcrumb-current {
263
+ display: inline-flex;
264
+ align-items: center;
265
+ gap: 3px;
266
+ font-weight: 500;
267
+ color: var(--ycw-color-text-primary);
268
+ max-width: 180px;
269
+ overflow: hidden;
270
+ text-overflow: ellipsis;
271
+ }
272
+ .ycw-fvm-breadcrumb-icon {
273
+ font-size: var(--ycw-font-size-md);
274
+ }
275
+ .ycw-file-viewer-modal .ant-drawer-content-wrapper {
276
+ transition: width var(--ycw-duration-slow) var(--ycw-ease-default);
277
+ }
278
+ .ycw-file-viewer-modal .ant-drawer-body {
279
+ display: flex;
280
+ flex-direction: column;
281
+ overflow: hidden;
282
+ }
283
+ .ycw-file-viewer-markdown {
284
+ padding: 8px 16px;
285
+ line-height: 1.8;
286
+ font-size: var(--ycw-font-size-base, 14px);
287
+ color: var(--ycw-color-text-primary, #1f2937);
288
+ word-break: break-word;
289
+ overflow-wrap: break-word;
290
+ }
291
+ .ycw-file-viewer-markdown h1,
292
+ .ycw-file-viewer-markdown h2,
293
+ .ycw-file-viewer-markdown h3,
294
+ .ycw-file-viewer-markdown h4,
295
+ .ycw-file-viewer-markdown h5,
296
+ .ycw-file-viewer-markdown h6 {
297
+ margin-top: 1.4em;
298
+ margin-bottom: 0.6em;
299
+ font-weight: 600;
300
+ line-height: 1.3;
301
+ }
302
+ .ycw-file-viewer-markdown h1:first-child,
303
+ .ycw-file-viewer-markdown h2:first-child,
304
+ .ycw-file-viewer-markdown h3:first-child {
305
+ margin-top: 0;
306
+ }
307
+ .ycw-file-viewer-markdown p {
308
+ margin-bottom: 0.75em;
309
+ }
310
+ .ycw-file-viewer-markdown p:last-child {
311
+ margin-bottom: 0;
312
+ }
313
+ .ycw-file-viewer-markdown ul,
314
+ .ycw-file-viewer-markdown ol {
315
+ margin-top: 0.4em;
316
+ margin-bottom: 0.75em;
317
+ padding-left: 1.5em;
318
+ }
319
+ .ycw-file-viewer-markdown li {
320
+ margin-bottom: 0.25em;
321
+ }
322
+ .ycw-file-viewer-markdown blockquote {
323
+ margin: 0.6em 0;
324
+ padding: 0.4em 1em;
325
+ border-left: 3px solid var(--ycw-color-border, #e5e7eb);
326
+ color: var(--ycw-color-text-secondary, #4b5563);
327
+ background: var(--ycw-color-bg-secondary, #f9fafb);
328
+ border-radius: 0 4px 4px 0;
329
+ }
330
+ .ycw-file-viewer-markdown table {
331
+ width: 100%;
332
+ border-collapse: collapse;
333
+ margin: 0.8em 0;
334
+ font-size: var(--ycw-font-size-md, 13px);
335
+ }
336
+ .ycw-file-viewer-markdown th,
337
+ .ycw-file-viewer-markdown td {
338
+ padding: 8px 12px;
339
+ border: 1px solid var(--ycw-color-border, #e5e7eb);
340
+ text-align: left;
341
+ }
342
+ .ycw-file-viewer-markdown th {
343
+ background: var(--ycw-color-bg-secondary, #f9fafb);
344
+ font-weight: 600;
345
+ }
346
+ .ycw-file-viewer-markdown tr:nth-child(even) {
347
+ background: var(--ycw-color-bg-secondary, #f9fafb);
348
+ }
349
+ .ycw-file-viewer-markdown hr {
350
+ border: none;
351
+ border-top: 1px solid var(--ycw-color-border, #e5e7eb);
352
+ margin: 1.5em 0;
353
+ }
354
+ .ycw-file-viewer-markdown img {
355
+ max-width: 100%;
356
+ height: auto;
357
+ border-radius: 4px;
358
+ }
359
+ .ycw-file-viewer-markdown .katex-display {
360
+ margin: 0.8em 0;
361
+ }
362
+ .ycw-xref-chip {
363
+ display: inline-flex;
364
+ align-items: center;
365
+ gap: 3px;
366
+ padding: 1px 8px;
367
+ border: 1px solid var(--ycw-color-border, #e5e7eb);
368
+ border-radius: 12px;
369
+ font-size: var(--ycw-font-size-md, 13px);
370
+ font-weight: 500;
371
+ color: var(--ycw-color-primary, #2563eb);
372
+ background: var(--ycw-color-bg-primary, #ffffff);
373
+ text-decoration: none;
374
+ cursor: pointer;
375
+ transition: border-color var(--ycw-duration-normal, 0.2s), background var(--ycw-duration-normal, 0.2s);
376
+ vertical-align: baseline;
377
+ user-select: none;
378
+ }
379
+ .ycw-xref-chip:hover {
380
+ border-color: var(--ycw-color-primary, #2563eb);
381
+ background: var(--ycw-color-primary-bg, #eff6ff);
382
+ }
383
+ .ycw-xref-chip:focus-visible {
384
+ outline: 2px solid var(--ycw-color-primary, #2563eb);
385
+ outline-offset: 1px;
386
+ }
387
+ .ycw-file-viewer-code {
388
+ font-size: var(--ycw-font-size-md, 13px);
389
+ line-height: 1.6;
390
+ }
391
+ .ycw-file-viewer-code pre {
392
+ margin: 0;
393
+ padding: 16px;
394
+ overflow-x: auto;
395
+ }
396
+ .ycw-file-viewer-text {
397
+ overflow: auto;
398
+ font-family: var(--ycw-font-family-mono, "JetBrains Mono", "SF Mono", "Consolas", monospace);
399
+ font-size: var(--ycw-font-size-md, 13px);
400
+ line-height: 1.6;
401
+ }
402
+ .ycw-text-viewer-table {
403
+ border-collapse: collapse;
404
+ width: 100%;
405
+ }
406
+ .ycw-text-viewer-line-num {
407
+ width: 50px;
408
+ text-align: right;
409
+ padding: 0 12px 0 8px;
410
+ color: var(--ycw-color-text-tertiary, #9ca3af);
411
+ user-select: none;
412
+ white-space: nowrap;
413
+ vertical-align: top;
414
+ }
415
+ .ycw-text-viewer-line-content pre {
416
+ margin: 0;
417
+ white-space: pre-wrap;
418
+ word-break: break-all;
419
+ }
420
+ .ycw-file-viewer-image {
421
+ display: flex;
422
+ flex-direction: column;
423
+ height: 100%;
424
+ }
425
+ .ycw-image-toolbar {
426
+ display: flex;
427
+ gap: 8px;
428
+ padding: 8px 12px;
429
+ border-bottom: 1px solid var(--ycw-color-border, #e5e7eb);
430
+ align-items: center;
431
+ }
432
+ .ycw-image-toolbar button {
433
+ padding: 4px 10px;
434
+ border: 1px solid var(--ycw-color-border, #e5e7eb);
435
+ border-radius: 4px;
436
+ background: var(--ycw-color-bg-primary, #ffffff);
437
+ cursor: pointer;
438
+ font-size: var(--ycw-font-size-base, 14px);
439
+ }
440
+ .ycw-image-toolbar button:hover {
441
+ border-color: var(--ycw-color-primary, #2563eb);
442
+ color: var(--ycw-color-primary, #2563eb);
443
+ }
444
+ .ycw-image-scale {
445
+ font-size: var(--ycw-font-size-sm, 12px);
446
+ color: var(--ycw-color-text-tertiary, #9ca3af);
447
+ margin-left: 4px;
448
+ }
449
+ .ycw-image-canvas {
450
+ flex: 1;
451
+ overflow: hidden;
452
+ display: flex;
453
+ align-items: center;
454
+ justify-content: center;
455
+ background: var(--ycw-color-bg-tertiary, #f3f4f6);
456
+ }
457
+ .ycw-image-canvas img {
458
+ max-width: 100%;
459
+ max-height: 100%;
460
+ object-fit: contain;
461
+ transition: transform var(--ycw-duration-fast, 0.15s) var(--ycw-ease-out, ease-out);
462
+ }
463
+ .ycw-file-viewer-fallback {
464
+ display: flex;
465
+ flex-direction: column;
466
+ align-items: center;
467
+ gap: 16px;
468
+ padding: 48px 24px;
469
+ text-align: center;
470
+ }
471
+ .ycw-fallback-icon {
472
+ font-size: 48px;
473
+ }
474
+ .ycw-fallback-info {
475
+ display: flex;
476
+ flex-direction: column;
477
+ gap: 4px;
478
+ }
479
+ .ycw-fallback-name {
480
+ font-size: var(--ycw-font-size-lg);
481
+ font-weight: 500;
482
+ color: var(--ycw-color-text-primary);
483
+ }
484
+ .ycw-fallback-meta {
485
+ display: flex;
486
+ gap: 12px;
487
+ justify-content: center;
488
+ font-size: var(--ycw-font-size-sm);
489
+ color: var(--ycw-color-text-tertiary);
490
+ }
491
+ .ycw-fallback-path {
492
+ font-size: var(--ycw-font-size-xs);
493
+ font-family: var(--ycw-font-family-mono);
494
+ color: var(--ycw-color-text-quaternary);
495
+ }
496
+ .ycw-fallback-download {
497
+ padding: 8px 24px;
498
+ border: 1px solid var(--ycw-color-primary);
499
+ border-radius: 6px;
500
+ background: var(--ycw-color-primary);
501
+ color: var(--ycw-color-bg-primary);
502
+ cursor: pointer;
503
+ font-size: var(--ycw-font-size-base);
504
+ }
505
+ .ycw-fallback-download:hover {
506
+ opacity: 0.85;
507
+ }
508
+ .ycw-file-viewer-video {
509
+ display: flex;
510
+ align-items: center;
511
+ justify-content: center;
512
+ height: 100%;
513
+ background: var(--ycw-color-bg-primary, #ffffff);
514
+ }
515
+ .ycw-video-element {
516
+ max-width: 100%;
517
+ max-height: 100%;
518
+ }
519
+ .ycw-file-viewer-audio {
520
+ display: flex;
521
+ align-items: center;
522
+ justify-content: center;
523
+ padding: 48px 24px;
524
+ }
525
+ .ycw-audio-element {
526
+ width: 100%;
527
+ max-width: 480px;
528
+ }
529
+ .ycw-file-viewer-html {
530
+ height: 100%;
531
+ }
532
+ .ycw-html-iframe {
533
+ width: 100%;
534
+ height: 100%;
535
+ border: none;
536
+ }
537
+ .ycw-file-viewer-json {
538
+ font-family: var(--ycw-font-family-mono, "JetBrains Mono", "SF Mono", "Consolas", monospace);
539
+ font-size: var(--ycw-font-size-md, 13px);
540
+ line-height: 1.6;
541
+ padding: 12px;
542
+ overflow: auto;
543
+ }
544
+ .ycw-json-key {
545
+ color: var(--ycw-color-primary, #2563eb);
546
+ }
547
+ .ycw-json-string {
548
+ color: var(--ycw-json-string-color, #16a34a);
549
+ }
550
+ .ycw-json-number {
551
+ color: var(--ycw-json-number-color, #d97706);
552
+ }
553
+ .ycw-json-bool {
554
+ color: var(--ycw-json-bool-color, #7c3aed);
555
+ }
556
+ .ycw-json-null {
557
+ color: var(--ycw-json-null-color, #9ca3af);
558
+ font-style: italic;
559
+ }
560
+ .ycw-json-toggle {
561
+ cursor: pointer;
562
+ user-select: none;
563
+ margin-right: 4px;
564
+ font-size: var(--ycw-font-size-2xs, 10px);
565
+ color: var(--ycw-color-text-tertiary, #9ca3af);
566
+ }
567
+ .ycw-json-bracket {
568
+ color: var(--ycw-color-text-secondary, #4b5563);
569
+ }
570
+ .ycw-json-collapsed {
571
+ color: var(--ycw-color-text-tertiary, #9ca3af);
572
+ font-style: italic;
573
+ }
574
+ .ycw-json-leaf {
575
+ white-space: nowrap;
576
+ }
577
+ .ycw-xref-section {
578
+ margin-top: 24px;
579
+ padding-top: 16px;
580
+ border-top: 1px solid var(--ycw-color-border);
581
+ }
582
+ .ycw-xref-section-title {
583
+ font-size: var(--ycw-font-size-sm);
584
+ font-weight: 600;
585
+ color: var(--ycw-color-text-tertiary);
586
+ text-transform: uppercase;
587
+ letter-spacing: 0.5px;
588
+ margin-bottom: 10px;
589
+ }
590
+ .ycw-xref-list {
591
+ display: flex;
592
+ flex-direction: column;
593
+ gap: 8px;
594
+ }
595
+ .ycw-file-viewer-kicad {
596
+ display: flex;
597
+ flex-direction: column;
598
+ height: 100%;
599
+ }
600
+ .ycw-kicad-header {
601
+ display: none;
602
+ }
603
+ .ycw-kicad-overlay-toolbar {
604
+ position: absolute;
605
+ top: 6px;
606
+ right: 6px;
607
+ z-index: 80;
608
+ display: flex;
609
+ align-items: center;
610
+ gap: 8px;
611
+ background: var(--ycw-kicad-toolbar-bg);
612
+ backdrop-filter: blur(4px);
613
+ border-radius: 6px;
614
+ padding: 3px 8px;
615
+ font-size: var(--ycw-font-size-xs);
616
+ pointer-events: auto;
617
+ box-shadow: var(--ycw-kicad-toolbar-shadow);
618
+ }
619
+ .ycw-kicad-controls-hint {
620
+ font-size: var(--ycw-font-size-xs);
621
+ color: var(--ycw-color-text-tertiary);
622
+ max-width: 280px;
623
+ white-space: nowrap;
624
+ overflow: hidden;
625
+ text-overflow: ellipsis;
626
+ }
627
+ .ycw-kicad-docs-link {
628
+ font-size: var(--ycw-font-size-xs);
629
+ color: var(--ycw-color-primary);
630
+ text-decoration: none;
631
+ }
632
+ .ycw-kicad-docs-link:hover {
633
+ text-decoration: underline;
634
+ }
635
+ .ycw-kicad-view-toggle {
636
+ display: flex;
637
+ gap: 2px;
638
+ background: var(--ycw-color-bg-tertiary);
639
+ border-radius: 6px;
640
+ padding: 2px;
641
+ }
642
+ .ycw-kicad-toggle-btn {
643
+ padding: 3px 10px;
644
+ font-size: var(--ycw-font-size-xs);
645
+ border: none;
646
+ border-radius: 4px;
647
+ background: transparent;
648
+ color: var(--ycw-color-text-secondary);
649
+ cursor: pointer;
650
+ transition: all var(--ycw-duration-fast);
651
+ }
652
+ .ycw-kicad-toggle-btn[data-state=active] {
653
+ background: var(--ycw-color-bg-primary);
654
+ color: var(--ycw-color-text-primary);
655
+ box-shadow: var(--ycw-kicad-toggle-active-shadow);
656
+ }
657
+ .ycw-kicad-canvas-container {
658
+ flex: 1;
659
+ min-height: 400px;
660
+ position: relative;
661
+ }
662
+ .ycw-kicad-loading {
663
+ position: absolute;
664
+ inset: 0;
665
+ display: flex;
666
+ align-items: center;
667
+ justify-content: center;
668
+ color: var(--ycw-color-text-tertiary);
669
+ font-size: var(--ycw-font-size-md);
670
+ }
671
+ .ycw-kicad-source-view {
672
+ flex: 1;
673
+ overflow: auto;
674
+ }
675
+ .ycw-kicad-fallback-hint {
676
+ padding: 8px 12px;
677
+ font-size: var(--ycw-font-size-xs);
678
+ color: var(--ycw-color-warning);
679
+ background: var(--ycw-color-warning-bg);
680
+ border-bottom: 1px solid var(--ycw-color-warning-border);
681
+ }
682
+ .ycw.ycw-dark .ycw-kicad-view-toggle {
683
+ background: var(--ycw-color-bg-tertiary);
684
+ }
685
+ .ycw.ycw-dark .ycw-kicad-toggle-btn[data-state=active] {
686
+ background: var(--ycw-color-bg-primary);
687
+ color: var(--ycw-color-text-primary);
688
+ }
689
+ .ycw.ycw-dark .ycw-kicad-fallback-hint {
690
+ background: var(--ycw-color-warning-bg);
691
+ border-color: var(--ycw-color-warning-border);
692
+ color: var(--ycw-color-warning);
693
+ }
694
+ .ycw.ycw-dark .ycw-kicad-loading,
695
+ .ycw.ycw-midnight .ycw-kicad-loading {
696
+ --ycw-kicad-loading-bg: var(--ycw-color-bg-secondary, #1a1b2e);
697
+ }
698
+ .ycw.ycw-neu .ycw-kicad-loading {
699
+ --ycw-kicad-loading-bg: #e0e5ec;
700
+ }
701
+ .ycw-kicad-source {
702
+ padding: 12px;
703
+ overflow: auto;
704
+ line-height: 1.6;
705
+ white-space: pre-wrap;
706
+ }
707
+ .ycw-file-viewer-3d,
708
+ .ycw-file-viewer-step {
709
+ display: flex;
710
+ flex-direction: column;
711
+ height: 100%;
712
+ min-height: 400px;
713
+ position: relative;
714
+ }
715
+ .ycw-3d-toolbar {
716
+ display: flex;
717
+ align-items: center;
718
+ justify-content: space-between;
719
+ padding: 6px 12px;
720
+ background: var(--ycw-color-bg-secondary, #fafafa);
721
+ border-bottom: 1px solid var(--ycw-color-border, #e0e0e0);
722
+ flex-shrink: 0;
723
+ gap: 8px;
724
+ }
725
+ .ycw-3d-filename {
726
+ font-size: var(--ycw-font-size-sm);
727
+ font-weight: 500;
728
+ overflow: hidden;
729
+ text-overflow: ellipsis;
730
+ white-space: nowrap;
731
+ min-width: 0;
732
+ }
733
+ .ycw-3d-toolbar-actions {
734
+ display: flex;
735
+ gap: 4px;
736
+ flex-shrink: 0;
737
+ }
738
+ .ycw-3d-btn {
739
+ display: inline-flex;
740
+ align-items: center;
741
+ justify-content: center;
742
+ width: 30px;
743
+ height: 30px;
744
+ border: 1px solid var(--ycw-color-border, #d0d0d0);
745
+ border-radius: 6px;
746
+ background: var(--ycw-color-bg, #fff);
747
+ color: var(--ycw-color-text-secondary, #666);
748
+ cursor: pointer;
749
+ transition:
750
+ background 0.15s,
751
+ color 0.15s,
752
+ border-color 0.15s;
753
+ }
754
+ .ycw-3d-btn:hover {
755
+ background: var(--ycw-color-primary-bg, #eef4ff);
756
+ color: var(--ycw-color-primary, #4080ff);
757
+ border-color: var(--ycw-color-primary, #4080ff);
758
+ }
759
+ .ycw-3d-btn.active {
760
+ background: var(--ycw-color-primary, #4080ff);
761
+ color: #fff;
762
+ border-color: var(--ycw-color-primary, #4080ff);
763
+ }
764
+ .ycw-3d-canvas {
765
+ flex: 1;
766
+ position: relative;
767
+ overflow: hidden;
768
+ min-height: 0;
769
+ }
770
+ .ycw-3d-canvas canvas {
771
+ display: block;
772
+ width: 100% !important;
773
+ height: 100% !important;
774
+ }
775
+ .ycw-3d-overlay {
776
+ position: absolute;
777
+ inset: 0;
778
+ display: flex;
779
+ flex-direction: column;
780
+ align-items: center;
781
+ justify-content: center;
782
+ gap: 12px;
783
+ background: rgba(240, 240, 240, 0.85);
784
+ z-index: 2;
785
+ font-size: var(--ycw-font-size-sm);
786
+ color: var(--ycw-color-text-secondary, #666);
787
+ }
788
+ .ycw-3d-overlay.ycw-3d-error {
789
+ color: #c44;
790
+ }
791
+ @keyframes ycw-3d-spin {
792
+ to {
793
+ transform: rotate(360deg);
794
+ }
795
+ }
796
+ .ycw-3d-spinner {
797
+ width: 32px;
798
+ height: 32px;
799
+ border: 3px solid var(--ycw-color-border, #ddd);
800
+ border-top-color: var(--ycw-color-primary, #4080ff);
801
+ border-radius: 50%;
802
+ animation: ycw-3d-spin 0.8s linear infinite;
803
+ }
804
+ .ycw-file-viewer-pdf {
805
+ width: 100%;
806
+ }
807
+ .ycw-pdf-toolbar {
808
+ display: flex;
809
+ align-items: center;
810
+ justify-content: space-between;
811
+ padding: 4px 8px;
812
+ font-size: var(--ycw-font-size-xs, 12px);
813
+ color: var(--ycw-color-text-tertiary, #9ca3af);
814
+ border-bottom: 1px solid var(--ycw-color-border, #e5e7eb);
815
+ user-select: none;
816
+ }
817
+ .ycw-pdf-zoom-controls {
818
+ display: flex;
819
+ align-items: center;
820
+ gap: 2px;
821
+ }
822
+ .ycw-pdf-zoom-btn,
823
+ .ycw-pdf-zoom-label {
824
+ background: none;
825
+ border: 1px solid var(--ycw-color-border, #e5e7eb);
826
+ border-radius: 4px;
827
+ padding: 2px 8px;
828
+ cursor: pointer;
829
+ font-size: var(--ycw-font-size-xs, 12px);
830
+ color: var(--ycw-color-text-secondary, #6b7280);
831
+ line-height: 1.4;
832
+ }
833
+ .ycw-pdf-zoom-btn:hover:not(:disabled),
834
+ .ycw-pdf-zoom-label:hover {
835
+ background: var(--ycw-color-bg-secondary, #f3f4f6);
836
+ }
837
+ .ycw-pdf-zoom-btn:disabled {
838
+ opacity: 0.35;
839
+ cursor: default;
840
+ }
841
+ .ycw-pdf-pages {
842
+ overflow: auto;
843
+ max-height: 80vh;
844
+ padding: 8px 0;
845
+ }
846
+ .ycw-pdf-page {
847
+ position: relative;
848
+ margin: 0 auto 8px;
849
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12);
850
+ background: #fff;
851
+ }
852
+ .ycw-pdf-page canvas {
853
+ display: block;
854
+ }
855
+ .ycw-pdf-text-layer {
856
+ -webkit-text-size-adjust: none;
857
+ -moz-text-size-adjust: none;
858
+ text-size-adjust: none;
859
+ }
860
+ .ycw-pdf-text-layer span::selection {
861
+ background: rgba(0, 100, 200, 0.3);
862
+ }
863
+ .ycw-pdf-text-layer span::-moz-selection {
864
+ background: rgba(0, 100, 200, 0.3);
865
+ }
866
+ .ycw-pdf-image-layer {
867
+ position: absolute;
868
+ inset: 0;
869
+ z-index: 3;
870
+ pointer-events: none;
871
+ }
872
+ .ycw-pdf-image-layer img {
873
+ pointer-events: auto;
874
+ opacity: 0;
875
+ cursor: pointer;
876
+ transition: opacity 0.15s, outline-color 0.15s;
877
+ }
878
+ .ycw-pdf-image-layer img:hover {
879
+ opacity: 0.06;
880
+ outline: 2px solid rgba(59, 130, 246, 0.6);
881
+ outline-offset: -1px;
882
+ border-radius: 2px;
883
+ }
884
+ .ycw-pdf-image-layer img[data-selected=true] {
885
+ opacity: 0.10;
886
+ outline: 2px solid rgba(59, 130, 246, 0.9);
887
+ outline-offset: -1px;
888
+ border-radius: 2px;
889
+ }
890
+ .ycw-fvm-hover-preview {
891
+ position: fixed;
892
+ z-index: 100;
893
+ min-width: 180px;
894
+ max-width: 320px;
895
+ padding: 10px 14px;
896
+ background: var(--ycw-color-bg-primary);
897
+ border: 1px solid var(--ycw-color-border);
898
+ border-radius: 10px;
899
+ box-shadow: var(--ycw-fvm-hover-shadow);
900
+ animation: ycw-fvm-hover-in 150ms ease-out;
901
+ pointer-events: none;
902
+ }
903
+ @keyframes ycw-fvm-hover-in {
904
+ from {
905
+ opacity: 0;
906
+ transform: translateX(-50%) translateY(-4px);
907
+ }
908
+ to {
909
+ opacity: 1;
910
+ transform: translateX(-50%) translateY(0);
911
+ }
912
+ }
913
+ .ycw-fvm-hover-preview-header {
914
+ display: flex;
915
+ align-items: center;
916
+ gap: 6px;
917
+ margin-bottom: 4px;
918
+ }
919
+ .ycw-fvm-hover-preview-icon {
920
+ font-size: var(--ycw-font-size-lg);
921
+ }
922
+ .ycw-fvm-hover-preview-name {
923
+ font-size: var(--ycw-font-size-md);
924
+ font-weight: 500;
925
+ color: var(--ycw-color-text-primary);
926
+ white-space: nowrap;
927
+ overflow: hidden;
928
+ text-overflow: ellipsis;
929
+ }
930
+ .ycw-fvm-hover-preview-type {
931
+ display: block;
932
+ font-size: var(--ycw-font-size-xs);
933
+ color: var(--ycw-color-text-tertiary);
934
+ margin-bottom: 4px;
935
+ }
936
+ .ycw-fvm-hover-preview-text {
937
+ font-size: var(--ycw-font-size-sm);
938
+ color: var(--ycw-color-text-secondary);
939
+ line-height: 1.4;
940
+ max-height: 60px;
941
+ overflow: hidden;
942
+ display: -webkit-box;
943
+ -webkit-line-clamp: 3;
944
+ -webkit-box-orient: vertical;
945
+ }
946
+ .ycw-fvm-hover-preview-hint {
947
+ font-size: var(--ycw-font-size-2xs);
948
+ color: var(--ycw-color-text-quaternary);
949
+ margin-top: 6px;
950
+ text-align: right;
951
+ }
952
+ .ycw.ycw-dark .ycw-fvm-hover-preview {
953
+ background: var(--ycw-color-bg-primary);
954
+ border-color: var(--ycw-color-border);
955
+ }
956
+ .ycw.ycw-midnight .ycw-fvm-panel-header {
957
+ background: rgba(12, 20, 36, 0.8);
958
+ backdrop-filter: blur(10px);
959
+ -webkit-backdrop-filter: blur(10px);
960
+ border-bottom-color: rgba(34, 211, 238, 0.08);
961
+ }
962
+ .ycw.ycw-midnight .ycw-fvm-breadcrumb {
963
+ background: rgba(8, 14, 28, 0.5);
964
+ border-bottom-color: rgba(34, 211, 238, 0.05);
965
+ }
966
+ .ycw.ycw-midnight .ycw-fvm-meta {
967
+ border-bottom-color: rgba(34, 211, 238, 0.06);
968
+ }
969
+ .ycw.ycw-midnight .ycw-fvm-btn-ref {
970
+ border-color: rgba(34, 211, 238, 0.12);
971
+ }
972
+ .ycw.ycw-midnight .ycw-fvm-btn-ref:hover {
973
+ border-color: #22d3ee;
974
+ box-shadow: 0 0 8px rgba(34, 211, 238, 0.15);
975
+ }
976
+ .ycw.ycw-midnight .ycw-file-viewer-markdown table {
977
+ border-radius: 6px;
978
+ overflow: hidden;
979
+ }
980
+ .ycw.ycw-midnight .ycw-file-viewer-markdown th {
981
+ background: rgba(34, 211, 238, 0.06);
982
+ border-color: rgba(34, 211, 238, 0.10);
983
+ color: var(--ycw-color-text-primary);
984
+ }
985
+ .ycw.ycw-midnight .ycw-file-viewer-markdown td {
986
+ border-color: rgba(34, 211, 238, 0.05);
987
+ color: var(--ycw-color-text-secondary);
988
+ }
989
+ .ycw.ycw-midnight .ycw-file-viewer-markdown tr:nth-child(even) {
990
+ background: rgba(34, 211, 238, 0.015);
991
+ }
992
+ .ycw.ycw-midnight .ycw-file-viewer-markdown tr:hover td {
993
+ background: rgba(34, 211, 238, 0.035);
994
+ }
995
+ .ycw.ycw-midnight .ycw-file-viewer-markdown blockquote {
996
+ border-left-color: rgba(34, 211, 238, 0.18);
997
+ background: rgba(34, 211, 238, 0.02);
998
+ }
999
+ .ycw.ycw-midnight .ycw-file-viewer-markdown hr {
1000
+ border-top: none;
1001
+ background:
1002
+ linear-gradient(
1003
+ 90deg,
1004
+ transparent,
1005
+ rgba(34, 211, 238, 0.12),
1006
+ transparent);
1007
+ height: 1px;
1008
+ border: none;
1009
+ }
1010
+ .ycw.ycw-midnight .ycw-xref-chip {
1011
+ border-color: rgba(34, 211, 238, 0.15);
1012
+ background: rgba(34, 211, 238, 0.04);
1013
+ }
1014
+ .ycw.ycw-midnight .ycw-xref-chip:hover {
1015
+ border-color: rgba(34, 211, 238, 0.35);
1016
+ background: rgba(34, 211, 238, 0.08);
1017
+ box-shadow: 0 0 8px rgba(34, 211, 238, 0.08);
1018
+ }
1019
+ .ycw.ycw-midnight .ycw-fvm-hover-preview {
1020
+ background: rgba(12, 20, 36, 0.95);
1021
+ backdrop-filter: blur(16px);
1022
+ -webkit-backdrop-filter: blur(16px);
1023
+ border-color: rgba(34, 211, 238, 0.10);
1024
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.35), 0 0 14px rgba(34, 211, 238, 0.02);
1025
+ }
1026
+ .ycw.ycw-midnight .ycw-image-toolbar {
1027
+ border-bottom-color: rgba(34, 211, 238, 0.06);
1028
+ }
1029
+ .ycw.ycw-midnight .ycw-image-toolbar button {
1030
+ border-color: rgba(34, 211, 238, 0.10);
1031
+ background: rgba(14, 24, 42, 0.5);
1032
+ color: var(--ycw-color-text-secondary);
1033
+ }
1034
+ .ycw.ycw-midnight .ycw-image-toolbar button:hover {
1035
+ border-color: rgba(34, 211, 238, 0.3);
1036
+ color: #22d3ee;
1037
+ }
1038
+ .ycw.ycw-midnight .ycw-kicad-view-toggle {
1039
+ background: rgba(8, 14, 28, 0.6);
1040
+ }
1041
+ .ycw.ycw-midnight .ycw-kicad-toggle-btn[data-state=active] {
1042
+ background: rgba(34, 211, 238, 0.08);
1043
+ color: #22d3ee;
1044
+ }
1045
+ .ycw.ycw-midnight .ycw-fallback-download {
1046
+ background: #22d3ee;
1047
+ color: #0b1221;
1048
+ border-color: #22d3ee;
1049
+ box-shadow: 0 0 12px rgba(34, 211, 238, 0.2);
1050
+ }
1051
+ .ycw.ycw-midnight .ycw-fallback-download:hover {
1052
+ box-shadow: 0 0 20px rgba(34, 211, 238, 0.35);
1053
+ opacity: 1;
1054
+ }
1055
+ .ycw-fvm-iframe-hint {
1056
+ position: absolute;
1057
+ bottom: 8px;
1058
+ left: 50%;
1059
+ transform: translateX(-50%);
1060
+ padding: 4px 12px;
1061
+ font-size: var(--ycw-font-size-xs);
1062
+ color: var(--ycw-color-text-tertiary);
1063
+ background: var(--ycw-color-bg-primary);
1064
+ border: 1px solid var(--ycw-color-border);
1065
+ border-radius: 12px;
1066
+ white-space: nowrap;
1067
+ pointer-events: none;
1068
+ backdrop-filter: blur(4px);
1069
+ }
1070
+ .ycw-fvm-btn-ref {
1071
+ font-size: var(--ycw-font-size-sm);
1072
+ gap: 4px;
1073
+ color: var(--ycw-color-primary);
1074
+ padding: 2px 10px;
1075
+ border: 1px solid var(--ycw-color-border);
1076
+ border-radius: 12px;
1077
+ }
1078
+ .ycw-fvm-btn-ref:hover {
1079
+ background: var(--ycw-color-primary-bg);
1080
+ border-color: var(--ycw-color-primary);
1081
+ color: var(--ycw-color-primary);
1082
+ }
1083
+ .ycw-viewer-loading {
1084
+ padding: 1rem;
1085
+ color: var(--ycw-color-text-tertiary);
1086
+ }
1087
+ .ycw-viewer-error {
1088
+ padding: 1rem;
1089
+ color: var(--ycw-color-error, #ef4444);
1090
+ }
1091
+ .ycw-word-viewer {
1092
+ width: 100%;
1093
+ min-height: 400px;
1094
+ overflow: auto;
1095
+ background: var(--ycw-color-bg-primary);
1096
+ }
1097
+ .ycw-excel-viewer {
1098
+ width: 100%;
1099
+ display: flex;
1100
+ flex-direction: column;
1101
+ }
1102
+ .ycw-excel-sheet-tabs {
1103
+ display: flex;
1104
+ gap: 4px;
1105
+ padding: 8px 0;
1106
+ border-bottom: 1px solid var(--ycw-color-border);
1107
+ margin-bottom: 8px;
1108
+ flex-wrap: wrap;
1109
+ }
1110
+ .ycw-excel-sheet-tab {
1111
+ padding: 4px 12px;
1112
+ border: 1px solid var(--ycw-color-border);
1113
+ border-radius: 4px;
1114
+ background: var(--ycw-color-bg-primary);
1115
+ color: var(--ycw-color-text-primary);
1116
+ cursor: pointer;
1117
+ font-size: 13px;
1118
+ }
1119
+ .ycw-excel-sheet-tab--active {
1120
+ background: var(--ycw-color-primary);
1121
+ color: var(--ycw-color-bg-primary);
1122
+ border-color: var(--ycw-color-primary);
1123
+ }
1124
+ .ycw-excel-scroll {
1125
+ overflow: auto;
1126
+ max-height: 600px;
1127
+ position: relative;
1128
+ }
1129
+ .ycw-excel-table {
1130
+ border-collapse: collapse;
1131
+ width: 100%;
1132
+ font-size: 13px;
1133
+ font-family: var(--ycw-font-family-mono, system-ui, sans-serif);
1134
+ }
1135
+ .ycw-excel-thead {
1136
+ position: sticky;
1137
+ top: 0;
1138
+ z-index: 2;
1139
+ }
1140
+ .ycw-excel-col-header {
1141
+ border: 1px solid var(--ycw-color-border);
1142
+ padding: 2px 6px;
1143
+ background: var(--ycw-color-bg-tertiary);
1144
+ font-weight: 500;
1145
+ font-size: 11px;
1146
+ color: var(--ycw-color-text-tertiary);
1147
+ text-align: center;
1148
+ }
1149
+ .ycw-excel-data-header {
1150
+ border: 1px solid var(--ycw-color-border);
1151
+ padding: 6px 10px;
1152
+ background: var(--ycw-color-bg-secondary);
1153
+ font-weight: 600;
1154
+ text-align: left;
1155
+ white-space: nowrap;
1156
+ }
1157
+ .ycw-excel-data-header--sortable {
1158
+ cursor: pointer;
1159
+ user-select: none;
1160
+ }
1161
+ .ycw-excel-sort-indicator {
1162
+ margin-left: 4px;
1163
+ font-size: 10px;
1164
+ }
1165
+ .ycw-excel-row-idx {
1166
+ border: 1px solid var(--ycw-color-border);
1167
+ padding: 4px 6px;
1168
+ background: var(--ycw-color-bg-secondary);
1169
+ font-weight: 500;
1170
+ font-size: 11px;
1171
+ color: var(--ycw-color-text-tertiary);
1172
+ text-align: center;
1173
+ min-width: 40px;
1174
+ }
1175
+ .ycw-excel-cell {
1176
+ border: 1px solid var(--ycw-color-border);
1177
+ padding: 4px 10px;
1178
+ white-space: nowrap;
1179
+ height: 28px;
1180
+ }
1181
+ .ycw-excel-footer {
1182
+ padding: 4px 0;
1183
+ font-size: 11px;
1184
+ color: var(--ycw-color-text-tertiary);
1185
+ }
1186
+ .ycw-ppt-viewer {
1187
+ width: 100%;
1188
+ outline: none;
1189
+ }
1190
+ .ycw-ppt-stage {
1191
+ min-height: 200px;
1192
+ overflow: hidden;
1193
+ border-radius: 6px;
1194
+ border: 1px solid var(--ycw-color-border);
1195
+ background: #f0f0f0;
1196
+ }
1197
+ .ycw-ppt-stage > div {
1198
+ transform-origin: top left;
1199
+ }
1200
+ .ycw-ppt-stage svg,
1201
+ .ycw-ppt-stage canvas,
1202
+ .ycw-ppt-stage img {
1203
+ max-width: 100%;
1204
+ height: auto;
1205
+ }
1206
+
1207
+ /* src/components/jetPaveGerberViewer/src/styles/page-2d.css */
1208
+ .layout-2d-mount {
1209
+ width: 100%;
1210
+ height: 100%;
1211
+ position: relative;
1212
+ }
1213
+ .layout-2d-error {
1214
+ color: var(--ycw-color-error, #dc3545);
1215
+ padding: 16px;
1216
+ text-align: center;
1217
+ font-size: 14px;
1218
+ }
1219
+ .layout-2d * {
1220
+ margin: 0;
1221
+ padding: 0;
1222
+ box-sizing: border-box;
1223
+ }
1224
+ .layout-2d {
1225
+ font-family:
1226
+ -apple-system,
1227
+ BlinkMacSystemFont,
1228
+ "Segoe UI",
1229
+ Roboto,
1230
+ "Helvetica Neue",
1231
+ Arial,
1232
+ sans-serif;
1233
+ width: 100%;
1234
+ height: 100%;
1235
+ }
1236
+ .layout-2d .container {
1237
+ margin: 0 auto;
1238
+ max-width: calc(100% - 4px);
1239
+ background: var(--ycw-color-bg-primary, #fff);
1240
+ border-radius: 8px;
1241
+ overflow: hidden;
1242
+ display: flex;
1243
+ flex-direction: column;
1244
+ height: 100%;
1245
+ min-height: 400px;
1246
+ }
1247
+ .layout-2d .controls {
1248
+ padding: 8px 30px;
1249
+ background: var(--ycw-color-bg-tertiary, #f8f9fa);
1250
+ border-bottom: 1px solid var(--ycw-color-border, #e9ecef);
1251
+ display: flex;
1252
+ gap: 20px;
1253
+ align-items: center;
1254
+ flex-wrap: wrap;
1255
+ flex-shrink: 0;
1256
+ }
1257
+ .layout-2d .controls[style*="display: none"] {
1258
+ display: none !important;
1259
+ }
1260
+ .layout-2d .file-input-wrapper {
1261
+ position: relative;
1262
+ display: inline-block;
1263
+ }
1264
+ .layout-2d .file-input-wrapper input[type=file] {
1265
+ position: absolute;
1266
+ opacity: 0;
1267
+ width: 100%;
1268
+ height: 100%;
1269
+ cursor: pointer;
1270
+ }
1271
+ .layout-2d .file-input-button {
1272
+ display: inline-block;
1273
+ padding: 6px 14px;
1274
+ background: var(--ycw-color-primary, #009688);
1275
+ color: var(--ycw-color-bg-primary, #fff);
1276
+ border-radius: 4px;
1277
+ cursor: pointer;
1278
+ font-size: 12px;
1279
+ transition: background 0.3s, opacity 0.2s;
1280
+ }
1281
+ .layout-2d .file-input-button:hover {
1282
+ opacity: 0.85;
1283
+ }
1284
+ .layout-2d .file-info {
1285
+ display: none;
1286
+ flex-direction: column;
1287
+ gap: 5px;
1288
+ }
1289
+ .layout-2d .file-info.active {
1290
+ display: flex;
1291
+ }
1292
+ .layout-2d .file-name {
1293
+ font-weight: bold;
1294
+ color: var(--ycw-color-primary, #009688);
1295
+ }
1296
+ .layout-2d .status {
1297
+ display: none;
1298
+ padding: 4px 10px;
1299
+ border-radius: 4px;
1300
+ font-size: 12px;
1301
+ }
1302
+ .layout-2d .status.success {
1303
+ color: #155724;
1304
+ background: #d4edda;
1305
+ display: block;
1306
+ }
1307
+ .layout-2d .status.error {
1308
+ color: #721c24;
1309
+ background: #f8d7da;
1310
+ display: block;
1311
+ }
1312
+ .layout-2d .status.loading {
1313
+ color: #0c5460;
1314
+ background: #d1ecf1;
1315
+ display: block;
1316
+ }
1317
+ .layout-2d .viewer {
1318
+ display: flex;
1319
+ flex-direction: column;
1320
+ flex: 1;
1321
+ min-height: 0;
1322
+ overflow: hidden;
1323
+ }
1324
+ .layout-2d .viewer-title {
1325
+ font-size: 1.5em;
1326
+ margin-bottom: 20px;
1327
+ color: var(--ycw-color-text-primary, #333);
1328
+ flex-shrink: 0;
1329
+ display: flex;
1330
+ align-items: center;
1331
+ }
1332
+ .layout-2d .viewer-title-left {
1333
+ display: flex;
1334
+ align-items: center;
1335
+ }
1336
+ .layout-2d .viewer-title-actions {
1337
+ display: flex;
1338
+ gap: 10px;
1339
+ margin-left: 10px;
1340
+ }
1341
+ .layout-2d .viewer-content {
1342
+ display: flex;
1343
+ gap: 10px;
1344
+ align-items: stretch;
1345
+ flex: 1;
1346
+ min-height: 0;
1347
+ }
1348
+ .layout-2d .table-detail {
1349
+ flex-shrink: 0;
1350
+ width: 320px;
1351
+ height: 100%;
1352
+ background: var(--ycw-color-bg-tertiary, #f8f9fa);
1353
+ border-radius: 8px;
1354
+ border: 1px solid var(--ycw-color-border, #e9ecef);
1355
+ overflow: hidden;
1356
+ padding: 15px;
1357
+ box-sizing: border-box;
1358
+ }
1359
+ .layout-2d .layer-list-container {
1360
+ width: 220px;
1361
+ height: 100%;
1362
+ background: var(--ycw-color-bg-tertiary, #f8f9fa);
1363
+ border: 1px solid var(--ycw-color-border, #e9ecef);
1364
+ overflow: hidden;
1365
+ flex-shrink: 0;
1366
+ display: flex;
1367
+ flex-direction: column;
1368
+ }
1369
+ .layout-2d .layer-list-title {
1370
+ padding: 8px 10px;
1371
+ background: var(--ycw-color-primary, #009688);
1372
+ color: var(--ycw-color-bg-primary, #fff);
1373
+ font-weight: 600;
1374
+ font-size: 12px;
1375
+ flex-shrink: 0;
1376
+ }
1377
+ .layout-2d .layer-list-header {
1378
+ padding: 12px 0;
1379
+ background: var(--ycw-color-bg-tertiary, #f8f9fa);
1380
+ border-bottom: 1px solid var(--ycw-color-border, #e9ecef);
1381
+ flex-shrink: 0;
1382
+ }
1383
+ .layout-2d .layer-toggle-all {
1384
+ display: flex;
1385
+ align-items: center;
1386
+ cursor: pointer;
1387
+ user-select: none;
1388
+ padding-left: 26px;
1389
+ }
1390
+ .layout-2d .layer-toggle-all:hover {
1391
+ opacity: 0.8;
1392
+ }
1393
+ .layout-2d .layer-toggle-all-label {
1394
+ margin-left: 8px;
1395
+ font-size: 12px;
1396
+ color: var(--ycw-color-text-primary, #333);
1397
+ font-weight: 500;
1398
+ }
1399
+ .layout-2d .layer-list {
1400
+ flex: 1;
1401
+ overflow-y: auto;
1402
+ overflow-x: hidden;
1403
+ min-height: 0;
1404
+ }
1405
+ .layout-2d .layer-item {
1406
+ display: flex;
1407
+ align-items: center;
1408
+ padding: 0 15px;
1409
+ line-height: 30px;
1410
+ border-bottom: 1px solid var(--ycw-color-border, #e9ecef);
1411
+ cursor: pointer;
1412
+ transition: background 0.2s;
1413
+ background: var(--ycw-color-bg-primary, #fff);
1414
+ }
1415
+ .layout-2d .layer-item .layer-index {
1416
+ width: 26px;
1417
+ }
1418
+ .layout-2d .layer-item:hover {
1419
+ background: var(--ycw-color-bg-hover, #f0f0f0);
1420
+ }
1421
+ .layout-2d .layer-item.disabled {
1422
+ background: var(--ycw-color-bg-tertiary, #f5f5f5);
1423
+ opacity: 0.6;
1424
+ }
1425
+ .layout-2d .layer-toggle {
1426
+ width: 18px;
1427
+ height: 18px;
1428
+ border: 2px solid var(--ycw-color-primary, #009688);
1429
+ border-radius: 4px;
1430
+ cursor: pointer;
1431
+ flex-shrink: 0;
1432
+ position: relative;
1433
+ background: var(--ycw-color-bg-primary, #fff);
1434
+ transition: all 0.2s;
1435
+ margin-right: 6px;
1436
+ }
1437
+ .layout-2d .layer-toggle.checked {
1438
+ background: var(--ycw-color-primary, #009688);
1439
+ }
1440
+ .layout-2d .layer-toggle.checked::after {
1441
+ content: "\2713";
1442
+ position: absolute;
1443
+ top: 50%;
1444
+ left: 50%;
1445
+ transform: translate(-50%, -50%);
1446
+ color: white;
1447
+ font-size: 12px;
1448
+ font-weight: bold;
1449
+ }
1450
+ .layout-2d .layer-color {
1451
+ width: 20px;
1452
+ height: 20px;
1453
+ border-radius: 4px;
1454
+ margin-right: 8px;
1455
+ border: 1px solid var(--ycw-color-border, #ddd);
1456
+ flex-shrink: 0;
1457
+ }
1458
+ .layout-2d .layer-name {
1459
+ flex: 1;
1460
+ font-size: 12px;
1461
+ color: var(--ycw-color-text-primary, #333);
1462
+ font-weight: 500;
1463
+ overflow: hidden;
1464
+ text-overflow: ellipsis;
1465
+ white-space: nowrap;
1466
+ min-width: 0;
1467
+ }
1468
+ .layout-2d .webgl-canvas-container {
1469
+ flex: 1;
1470
+ height: 100%;
1471
+ min-height: 0;
1472
+ border-radius: 8px;
1473
+ }
1474
+ .layout-2d #canvas {
1475
+ width: 100%;
1476
+ height: 100%;
1477
+ min-height: 0;
1478
+ background: #000;
1479
+ cursor: grab;
1480
+ }
1481
+ .layout-2d #canvas:active {
1482
+ cursor: grabbing;
1483
+ }
1484
+ .layout-2d .loading-spinner {
1485
+ display: inline-block;
1486
+ width: 16px;
1487
+ height: 16px;
1488
+ border: 2px solid rgba(12, 84, 96, 0.3);
1489
+ border-radius: 50%;
1490
+ border-top-color: #0c5460;
1491
+ animation: layout2d-spin 0.8s linear infinite;
1492
+ margin-right: 8px;
1493
+ vertical-align: middle;
1494
+ }
1495
+ @keyframes layout2d-spin {
1496
+ to {
1497
+ transform: rotate(360deg);
1498
+ }
1499
+ }
1500
+ .layout-2d #loadingOverlay {
1501
+ display: none;
1502
+ position: fixed;
1503
+ top: 0;
1504
+ left: 0;
1505
+ right: 0;
1506
+ bottom: 0;
1507
+ background: rgba(0, 0, 0, 0.5);
1508
+ color: white;
1509
+ z-index: 9999;
1510
+ justify-content: center;
1511
+ align-items: center;
1512
+ font-size: 24px;
1513
+ }
1514
+ .layout-2d #loadingOverlay.active {
1515
+ display: flex;
1516
+ }
1517
+ .layout-2d .viewer-action-btn {
1518
+ font-size: 12px;
1519
+ padding: 4px 10px;
1520
+ background: var(--ycw-color-bg-primary, #fff);
1521
+ border: 1px solid var(--ycw-color-border, #ddd);
1522
+ border-radius: 4px;
1523
+ cursor: pointer;
1524
+ color: var(--ycw-color-text-secondary, #666);
1525
+ transition: all 0.2s;
1526
+ }
1527
+ .layout-2d .viewer-action-btn:hover {
1528
+ background: var(--ycw-color-bg-hover, #f0f0f0);
1529
+ color: var(--ycw-color-text-primary, #333);
1530
+ border-color: var(--ycw-color-border, #ccc);
1531
+ }
1532
+
1533
+ /* src/components/jetPaveGerberViewer/src/styles/page-3d.css */
1534
+ .layout-3d-mount {
1535
+ width: 100%;
1536
+ height: 100%;
1537
+ position: relative;
1538
+ }
1539
+ .layout-3d {
1540
+ position: relative;
1541
+ width: 100%;
1542
+ height: 100%;
1543
+ margin: 0;
1544
+ overflow: hidden;
1545
+ font-family: sans-serif;
1546
+ background: #000000;
1547
+ }
1548
+ .layout-3d .viewer3d-canvas-host {
1549
+ position: absolute;
1550
+ inset: 0;
1551
+ z-index: 0;
1552
+ pointer-events: auto;
1553
+ }
1554
+ .layout-3d #info {
1555
+ position: absolute;
1556
+ top: 10px;
1557
+ left: 10px;
1558
+ color: white;
1559
+ background: rgba(0, 0, 0, 0.7);
1560
+ padding: 10px;
1561
+ border-radius: 5px;
1562
+ pointer-events: none;
1563
+ z-index: 100;
1564
+ }
1565
+ .layout-3d #gerber-3d-toolbar {
1566
+ z-index: 200;
1567
+ }
1568
+ .layout-3d .btn {
1569
+ background: var(--ycw-color-primary, #009688);
1570
+ color: var(--ycw-color-bg-primary, #fff);
1571
+ padding: 5px 12px;
1572
+ border: none;
1573
+ border-radius: 4px;
1574
+ cursor: pointer;
1575
+ font-size: 12px;
1576
+ transition: opacity 0.2s;
1577
+ }
1578
+ .layout-3d .btn:hover {
1579
+ opacity: 0.85;
1580
+ }
1581
+ .layout-3d #loading {
1582
+ display: none;
1583
+ position: absolute;
1584
+ top: 0;
1585
+ left: 0;
1586
+ right: 0;
1587
+ bottom: 0;
1588
+ background: rgba(0, 0, 0, 0.5);
1589
+ color: white;
1590
+ z-index: 300;
1591
+ justify-content: center;
1592
+ align-items: center;
1593
+ font-size: 24px;
1594
+ }
1595
+ .layout-3d #loading.active {
1596
+ display: flex;
1597
+ }
1598
+ .layout-3d #layer-list {
1599
+ position: absolute;
1600
+ top: 10px;
1601
+ right: 10px;
1602
+ background: rgba(0, 0, 0, 0.7);
1603
+ color: white;
1604
+ padding: 10px;
1605
+ border-radius: 5px;
1606
+ max-height: 80%;
1607
+ overflow-y: auto;
1608
+ }
1609
+ .layout-3d .layer-item {
1610
+ margin: 5px 0;
1611
+ font-size: 12px;
1612
+ }
1613
+ .layout-3d-error {
1614
+ color: var(--ycw-color-error, #dc3545);
1615
+ padding: 16px;
1616
+ text-align: center;
1617
+ font-size: 14px;
1618
+ position: relative;
1619
+ z-index: 500;
1620
+ }
1621
+
1622
+ /* src/components/jetPaveGerberViewer/src/styles/page-simulation.css */
1623
+ .layout-simulation-mount {
1624
+ width: 100%;
1625
+ height: 100%;
1626
+ position: relative;
1627
+ }
1628
+ .layout-simulation * {
1629
+ margin: 0;
1630
+ padding: 0;
1631
+ box-sizing: border-box;
1632
+ }
1633
+ .layout-simulation {
1634
+ font-family:
1635
+ -apple-system,
1636
+ BlinkMacSystemFont,
1637
+ "Segoe UI",
1638
+ Roboto,
1639
+ "Microsoft YaHei",
1640
+ sans-serif;
1641
+ background: var(--ycw-color-bg-secondary, #f5f5f5);
1642
+ width: 100%;
1643
+ height: 100%;
1644
+ overflow: hidden;
1645
+ }
1646
+ .layout-simulation .container {
1647
+ display: flex;
1648
+ height: 100%;
1649
+ background: var(--ycw-color-bg-primary, #fff);
1650
+ }
1651
+ .layout-simulation .control-panel {
1652
+ width: 240px;
1653
+ background: var(--ycw-color-bg-tertiary, #f8f9fa);
1654
+ border-right: 1px solid var(--ycw-color-border, #e9ecef);
1655
+ padding: 10px;
1656
+ display: flex;
1657
+ flex-direction: column;
1658
+ gap: 10px;
1659
+ flex-shrink: 0;
1660
+ overflow: hidden;
1661
+ }
1662
+ .layout-simulation .panel-title {
1663
+ font-size: 13px;
1664
+ font-weight: 600;
1665
+ color: var(--ycw-color-text-primary, #333);
1666
+ padding-bottom: 8px;
1667
+ border-bottom: 2px solid var(--ycw-color-primary, #009688);
1668
+ }
1669
+ .layout-simulation .control-group {
1670
+ display: flex;
1671
+ flex-direction: column;
1672
+ gap: 6px;
1673
+ }
1674
+ .layout-simulation .control-row {
1675
+ display: flex;
1676
+ align-items: center;
1677
+ justify-content: space-between;
1678
+ gap: 6px;
1679
+ }
1680
+ .layout-simulation .control-label {
1681
+ font-size: 12px;
1682
+ color: var(--ycw-color-text-secondary, #555);
1683
+ min-width: 50px;
1684
+ }
1685
+ .layout-simulation select {
1686
+ flex: 1;
1687
+ padding: 4px 8px;
1688
+ border: 1px solid var(--ycw-color-border, #ddd);
1689
+ border-radius: 4px;
1690
+ background: var(--ycw-color-bg-primary, #fff);
1691
+ color: var(--ycw-color-text-primary, #333);
1692
+ font-size: 12px;
1693
+ cursor: pointer;
1694
+ }
1695
+ .layout-simulation select:hover,
1696
+ .layout-simulation select:focus {
1697
+ border-color: var(--ycw-color-primary, #009688);
1698
+ outline: none;
1699
+ }
1700
+ .layout-simulation .file-input-wrapper {
1701
+ position: relative;
1702
+ display: inline-block;
1703
+ width: 100%;
1704
+ }
1705
+ .layout-simulation .file-input-wrapper input[type=file] {
1706
+ position: absolute;
1707
+ top: 0;
1708
+ left: 0;
1709
+ opacity: 0;
1710
+ width: 100%;
1711
+ height: 100%;
1712
+ cursor: pointer;
1713
+ z-index: 10;
1714
+ }
1715
+ .layout-simulation .file-input-button {
1716
+ display: block;
1717
+ padding: 6px 14px;
1718
+ background: var(--ycw-color-primary, #009688);
1719
+ color: var(--ycw-color-bg-primary, #fff);
1720
+ border-radius: 4px;
1721
+ cursor: pointer;
1722
+ font-size: 12px;
1723
+ text-align: center;
1724
+ transition: opacity 0.2s;
1725
+ }
1726
+ .layout-simulation .file-input-button:hover {
1727
+ opacity: 0.85;
1728
+ }
1729
+ .layout-simulation .btn {
1730
+ padding: 5px 12px;
1731
+ border: none;
1732
+ border-radius: 4px;
1733
+ font-size: 12px;
1734
+ font-weight: 500;
1735
+ cursor: pointer;
1736
+ transition: all 0.2s ease;
1737
+ width: 100%;
1738
+ }
1739
+ .layout-simulation .btn-success {
1740
+ background: var(--ycw-color-primary, #009688);
1741
+ color: var(--ycw-color-bg-primary, #fff);
1742
+ }
1743
+ .layout-simulation .btn-success:hover {
1744
+ opacity: 0.85;
1745
+ }
1746
+ .layout-simulation .btn-secondary {
1747
+ background: var(--ycw-color-text-tertiary, #6c757d);
1748
+ color: var(--ycw-color-bg-primary, #fff);
1749
+ }
1750
+ .layout-simulation .btn-secondary:hover {
1751
+ opacity: 0.85;
1752
+ }
1753
+ .layout-simulation .view-toggle {
1754
+ display: flex;
1755
+ gap: 0;
1756
+ border-radius: 6px;
1757
+ overflow: hidden;
1758
+ border: 1px solid var(--ycw-color-border, #ddd);
1759
+ }
1760
+ .layout-simulation .view-toggle button {
1761
+ flex: 1;
1762
+ padding: 5px 8px;
1763
+ border: none;
1764
+ background: var(--ycw-color-bg-primary, #fff);
1765
+ color: var(--ycw-color-text-secondary, #555);
1766
+ font-size: 12px;
1767
+ cursor: pointer;
1768
+ transition: all 0.2s ease;
1769
+ }
1770
+ .layout-simulation .view-toggle button.active {
1771
+ background: var(--ycw-color-primary, #009688);
1772
+ color: var(--ycw-color-bg-primary, #fff);
1773
+ }
1774
+ .layout-simulation .view-toggle button:hover:not(.active) {
1775
+ background: var(--ycw-color-bg-hover, #f0f0f0);
1776
+ }
1777
+ .layout-simulation .color-preview {
1778
+ display: flex;
1779
+ align-items: center;
1780
+ gap: 8px;
1781
+ flex: 1;
1782
+ }
1783
+ .layout-simulation .color-swatch {
1784
+ width: 18px;
1785
+ height: 18px;
1786
+ border-radius: 4px;
1787
+ border: 1px solid var(--ycw-color-border, #ccc);
1788
+ flex-shrink: 0;
1789
+ }
1790
+ .layout-simulation .switch-row {
1791
+ display: flex;
1792
+ align-items: center;
1793
+ justify-content: space-between;
1794
+ }
1795
+ .layout-simulation .switch {
1796
+ position: relative;
1797
+ width: 36px;
1798
+ height: 20px;
1799
+ }
1800
+ .layout-simulation .switch input {
1801
+ opacity: 0;
1802
+ width: 0;
1803
+ height: 0;
1804
+ }
1805
+ .layout-simulation .slider {
1806
+ position: absolute;
1807
+ cursor: pointer;
1808
+ top: 0;
1809
+ left: 0;
1810
+ right: 0;
1811
+ bottom: 0;
1812
+ background-color: var(--ycw-color-text-quaternary, #ccc);
1813
+ transition: 0.3s;
1814
+ border-radius: 20px;
1815
+ }
1816
+ .layout-simulation .slider:before {
1817
+ position: absolute;
1818
+ content: "";
1819
+ height: 14px;
1820
+ width: 14px;
1821
+ left: 3px;
1822
+ bottom: 3px;
1823
+ background-color: var(--ycw-color-bg-primary, #fff);
1824
+ transition: 0.3s;
1825
+ border-radius: 50%;
1826
+ }
1827
+ .layout-simulation input:checked + .slider {
1828
+ background-color: var(--ycw-color-primary, #009688);
1829
+ }
1830
+ .layout-simulation input:checked + .slider:before {
1831
+ transform: translateX(16px);
1832
+ }
1833
+ .layout-simulation .main-view {
1834
+ flex: 1;
1835
+ display: flex;
1836
+ flex-direction: column;
1837
+ background: var(--ycw-color-bg-primary, #fff);
1838
+ }
1839
+ .layout-simulation .canvas-container {
1840
+ flex: 1;
1841
+ position: relative;
1842
+ overflow: hidden;
1843
+ display: flex;
1844
+ align-items: center;
1845
+ justify-content: center;
1846
+ background: #1a1a1a;
1847
+ }
1848
+ .layout-simulation #simulationCanvas {
1849
+ cursor: grab;
1850
+ }
1851
+ .layout-simulation #simulationCanvas:active {
1852
+ cursor: grabbing;
1853
+ }
1854
+ .layout-simulation .loading-overlay {
1855
+ position: absolute;
1856
+ top: 0;
1857
+ left: 0;
1858
+ right: 0;
1859
+ bottom: 0;
1860
+ background: rgba(0, 0, 0, 0.8);
1861
+ display: flex;
1862
+ align-items: center;
1863
+ justify-content: center;
1864
+ flex-direction: column;
1865
+ gap: 15px;
1866
+ z-index: 100;
1867
+ }
1868
+ .layout-simulation .loading-overlay.hidden {
1869
+ display: none;
1870
+ }
1871
+ .layout-simulation .spinner {
1872
+ width: 40px;
1873
+ height: 40px;
1874
+ border: 3px solid var(--ycw-color-text-quaternary, #444);
1875
+ border-top-color: var(--ycw-color-primary, #009688);
1876
+ border-radius: 50%;
1877
+ animation: layoutSim-spin 1s linear infinite;
1878
+ }
1879
+ @keyframes layoutSim-spin {
1880
+ to {
1881
+ transform: rotate(360deg);
1882
+ }
1883
+ }
1884
+ .layout-simulation .loading-text {
1885
+ font-size: 12px;
1886
+ color: var(--ycw-color-text-tertiary, #888);
1887
+ }
1888
+ .layout-simulation .hidden-status {
1889
+ display: none;
1890
+ }
1891
+ .layout-simulation-error {
1892
+ color: var(--ycw-color-error, #dc3545);
1893
+ padding: 16px;
1894
+ text-align: center;
1895
+ font-size: 14px;
1896
+ position: relative;
1897
+ z-index: 500;
1898
+ }
1899
+ /*# sourceMappingURL=PdfViewer-LPYGQETK.css.map */