@axiapps/forge-render 0.1.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.
@@ -0,0 +1,767 @@
1
+ /* @axiapps/forge-render — generated once by scripts/extract-forge-render-css.mjs,
2
+ hand-maintained afterwards. All selectors are scoped under .forge-render and
3
+ all theme variables are namespaced --fr-* with baked-in AxiForge dark
4
+ defaults, so embedding apps (AxiVale) can't collide with these styles. */
5
+ /* ── Mini Build Card ─────────────────────────────────────────────────────────
6
+ Reusable compact card showing build summary: specs, weapons, gear, relic.
7
+ ──────────────────────────────────────────────────────────────────────────── */
8
+
9
+ .forge-render .mini-card {
10
+ display: flex;
11
+ gap: 12px;
12
+ padding: 10px 16px;
13
+ background: var(--fr-panel-2, #101114);
14
+ border-radius: var(--fr-radius-sm, 6px);
15
+ cursor: grab;
16
+ border-left: 3px solid currentColor;
17
+ position: relative;
18
+ transition: background 0.12s;
19
+ }
20
+
21
+ .forge-render .mini-card:hover {
22
+ background: var(--fr-panel, #141518);
23
+ }
24
+
25
+ /* ── Icon ──────────────────────────────────────────────────────────────────── */
26
+
27
+ .forge-render .mini-card__icon {
28
+ width: 40px;
29
+ height: 40px;
30
+ background: var(--fr-hover-subtle, rgba(255, 255, 255, 0.05));
31
+ border-radius: 50%;
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ flex-shrink: 0;
36
+ align-self: flex-start;
37
+ margin-top: 2px;
38
+ }
39
+
40
+ .forge-render .mini-card__icon svg {
41
+ width: 24px;
42
+ height: 24px;
43
+ }
44
+
45
+ /* ── Info area ─────────────────────────────────────────────────────────────── */
46
+
47
+ .forge-render .mini-card__info {
48
+ flex: 1;
49
+ min-width: 0;
50
+ }
51
+
52
+ /* ── Header row: name + tags + role + mode ─────────────────────────────────── */
53
+
54
+ .forge-render .mini-card__header {
55
+ display: flex;
56
+ align-items: center;
57
+ gap: 8px;
58
+ }
59
+
60
+ .forge-render .mini-card__name {
61
+ all: unset;
62
+ font-size: 13px;
63
+ color: var(--fr-text-light, #aeafb8);
64
+ font-weight: 600;
65
+ overflow: hidden;
66
+ text-overflow: ellipsis;
67
+ white-space: nowrap;
68
+ min-width: 0;
69
+ flex-shrink: 1;
70
+ }
71
+
72
+ /* When the name is a button or link (clickable link to build) */
73
+ .forge-render button.mini-card__name,
74
+ .forge-render a.mini-card__name {
75
+ cursor: pointer;
76
+ transition: color 0.15s;
77
+ }
78
+
79
+ .forge-render button.mini-card__name:hover,
80
+ .forge-render a.mini-card__name:hover {
81
+ color: var(--fr-text, #e2e3e8);
82
+ }
83
+
84
+ .forge-render .mini-card__name-arrow {
85
+ font-size: 11px;
86
+ opacity: 0;
87
+ transition: opacity 0.15s;
88
+ margin-left: 2px;
89
+ }
90
+
91
+ .forge-render button.mini-card__name:hover .mini-card__name-arrow,
92
+ .forge-render a.mini-card__name:hover .mini-card__name-arrow {
93
+ opacity: 1;
94
+ }
95
+
96
+ .forge-render .mini-card__tag {
97
+ font-size: 9px;
98
+ border-radius: var(--fr-radius-xs, 4px);
99
+ padding: 1px 6px;
100
+ background: var(--fr-hover-subtle, rgba(255, 255, 255, 0.05));
101
+ border: none;
102
+ color: var(--fr-text-dim, #646670);
103
+ white-space: nowrap;
104
+ flex-shrink: 0;
105
+ font-weight: 600;
106
+ text-transform: uppercase;
107
+ letter-spacing: 0.02em;
108
+ }
109
+
110
+ .forge-render .mini-card__mode {
111
+ font-size: 9px;
112
+ color: var(--fr-text-dim, #646670);
113
+ background: var(--fr-hover-subtle, rgba(255, 255, 255, 0.05));
114
+ border: none;
115
+ border-radius: var(--fr-radius-xs, 4px);
116
+ padding: 1px 6px;
117
+ flex-shrink: 0;
118
+ white-space: nowrap;
119
+ font-weight: 600;
120
+ text-transform: uppercase;
121
+ letter-spacing: 0.02em;
122
+ }
123
+
124
+ /* ── Right-side pills (role + mode) ────────────────────────────────────────── */
125
+
126
+ .forge-render .mini-card__pills {
127
+ display: flex;
128
+ align-items: center;
129
+ gap: 6px;
130
+ flex-shrink: 0;
131
+ margin-left: auto;
132
+ padding-right: 24px;
133
+ }
134
+
135
+ /* ── Color picker (Condi / Heal) ──────────────────────────────────────────── */
136
+
137
+ .forge-render .mini-card__color-picker {
138
+ display: flex;
139
+ align-items: center;
140
+ gap: 4px;
141
+ cursor: pointer;
142
+ font-size: 9px;
143
+ color: var(--fr-text-dim, #646670);
144
+ background: var(--fr-hover-subtle, rgba(255, 255, 255, 0.05));
145
+ border-radius: var(--fr-radius-xs, 4px);
146
+ padding: 1px 6px;
147
+ white-space: nowrap;
148
+ user-select: none;
149
+ position: relative;
150
+ }
151
+ .forge-render .mini-card__color-picker:hover { background: var(--fr-hover, rgba(255, 255, 255, 0.05)); }
152
+
153
+ .forge-render .mini-card__color-dot {
154
+ display: inline-block;
155
+ width: 8px;
156
+ height: 8px;
157
+ border-radius: 50%;
158
+ flex-shrink: 0;
159
+ }
160
+
161
+ .forge-render .mini-card__color-label {
162
+ font-weight: 600;
163
+ text-transform: uppercase;
164
+ letter-spacing: 0.02em;
165
+ }
166
+
167
+ .forge-render .mini-card__color-caret {
168
+ font-size: 7px;
169
+ opacity: 0.5;
170
+ }
171
+
172
+ .forge-render .mini-card__color-menu {
173
+ position: absolute;
174
+ top: 100%;
175
+ left: 0;
176
+ margin-top: 2px;
177
+ background: var(--fr-bg-raised, #2a2a2a);
178
+ border: 1px solid var(--fr-border, #444);
179
+ border-radius: var(--fr-radius-sm, 6px);
180
+ padding: 2px 0;
181
+ z-index: 200;
182
+ min-width: 90px;
183
+ box-shadow: 0 4px 12px rgba(0,0,0,0.4);
184
+ }
185
+
186
+ .forge-render .mini-card__color-option {
187
+ display: flex;
188
+ align-items: center;
189
+ gap: 6px;
190
+ padding: 4px 10px;
191
+ cursor: pointer;
192
+ font-size: 11px;
193
+ color: var(--fr-text, #e2e3e8);
194
+ white-space: nowrap;
195
+ }
196
+ .forge-render .mini-card__color-option:hover { background: var(--fr-hover-subtle, rgba(255, 255, 255, 0.05)); }
197
+ .forge-render .mini-card__color-option--active { font-weight: 700; }
198
+
199
+ /* ── Copy build code button ────────────────────────────────────────────────── */
200
+
201
+ .forge-render .mini-card__btn-copy-code {
202
+ background: var(--fr-hover-subtle, rgba(255, 255, 255, 0.05));
203
+ border: 1px solid rgba(255, 255, 255, 0.1);
204
+ border-radius: 8px;
205
+ color: var(--fr-text-dim, #646670);
206
+ padding: 1px 7px;
207
+ font-size: 9px;
208
+ cursor: pointer;
209
+ display: flex;
210
+ align-items: center;
211
+ gap: 3px;
212
+ white-space: nowrap;
213
+ transition: background 0.15s, color 0.15s, border-color 0.15s;
214
+ }
215
+ .forge-render .mini-card__btn-copy-code:hover {
216
+ background: var(--fr-hover-accent, rgba(200, 152, 72, 0.12));
217
+ color: var(--fr-text, #e2e3e8);
218
+ border-color: rgba(255, 255, 255, 0.2);
219
+ }
220
+ .forge-render .mini-card__btn-copy-code--copied {
221
+ border-color: var(--fr-accent, rgb(200, 152, 72));
222
+ color: var(--fr-accent, rgb(200, 152, 72));
223
+ }
224
+
225
+ /* ── Two-Column Layout (specs left, gear right) ────────────────────────────── */
226
+
227
+ .forge-render .mini-card__columns {
228
+ display: flex;
229
+ gap: 24px;
230
+ margin-top: 6px;
231
+ }
232
+
233
+ .forge-render .mini-card__info {
234
+ container-type: inline-size;
235
+ }
236
+
237
+ /* Left column: label + vertical spec list */
238
+ .forge-render .mini-card__col-left {
239
+ display: flex;
240
+ gap: 6px;
241
+ flex-shrink: 0;
242
+ align-items: flex-start;
243
+ }
244
+
245
+ .forge-render .mini-card__col-left .mini-card__detail-label {
246
+ margin-top: 2px;
247
+ }
248
+
249
+ .forge-render .mini-card__spec-list {
250
+ display: flex;
251
+ flex-direction: column;
252
+ gap: 2px;
253
+ }
254
+
255
+ /* Right column: weapons, gear, relic stacked */
256
+ .forge-render .mini-card__col-right {
257
+ display: flex;
258
+ flex-direction: column;
259
+ gap: 4px;
260
+ min-width: 0;
261
+ flex: 1;
262
+ }
263
+
264
+ /* Drop to single stacked column when narrow */
265
+ @container (max-width: 320px) {
266
+ .forge-render .mini-card__columns {
267
+ flex-direction: column;
268
+ gap: 6px;
269
+ }
270
+
271
+ .forge-render .mini-card__col-left {
272
+ flex-direction: row;
273
+ flex-wrap: wrap;
274
+ gap: 4px;
275
+ }
276
+ }
277
+
278
+ .forge-render .mini-card__cell {
279
+ display: flex;
280
+ align-items: center;
281
+ gap: 6px;
282
+ min-width: 0;
283
+ overflow: hidden;
284
+ }
285
+
286
+ .forge-render .mini-card__detail-label {
287
+ font-size: 9px;
288
+ color: var(--fr-text-dim, #646670);
289
+ text-transform: uppercase;
290
+ letter-spacing: 0.5px;
291
+ min-width: 36px;
292
+ flex-shrink: 0;
293
+ }
294
+
295
+ /* ── Spec lines (vertical) ──────────────────────────────────────────────────── */
296
+
297
+ .forge-render .mini-card__spec-line {
298
+ display: flex;
299
+ align-items: center;
300
+ gap: 5px;
301
+ min-width: 0;
302
+ }
303
+
304
+ .forge-render .mini-card__spec-pip {
305
+ width: 18px;
306
+ height: 18px;
307
+ border-radius: var(--fr-radius-xs, 4px);
308
+ background: rgba(136, 153, 187, 0.15);
309
+ display: flex;
310
+ align-items: center;
311
+ justify-content: center;
312
+ font-size: 8px;
313
+ font-weight: 600;
314
+ color: var(--fr-muted, #828490);
315
+ flex-shrink: 0;
316
+ }
317
+
318
+ .forge-render .mini-card__spec-pip svg {
319
+ width: 14px;
320
+ height: 14px;
321
+ }
322
+
323
+ .forge-render .mini-card__spec-pip--elite {
324
+ background: rgba(200, 169, 110, 0.15);
325
+ color: var(--fr-gold, #e8b050);
326
+ border: 1px solid rgba(200, 169, 110, 0.25);
327
+ }
328
+
329
+ .forge-render .mini-card__spec-pip--elite svg {
330
+ width: 14px;
331
+ height: 14px;
332
+ }
333
+
334
+ .forge-render .mini-card__spec-name {
335
+ font-size: 11px;
336
+ color: var(--fr-muted, #828490);
337
+ overflow: hidden;
338
+ text-overflow: ellipsis;
339
+ white-space: nowrap;
340
+ }
341
+
342
+ .forge-render .mini-card__spec-name--elite {
343
+ color: var(--fr-gold, #e8b050);
344
+ font-weight: 500;
345
+ }
346
+
347
+
348
+ /* ── Weapon group ──────────────────────────────────────────────────────────── */
349
+
350
+ .forge-render .mini-card__weap-group {
351
+ display: flex;
352
+ align-items: center;
353
+ gap: 3px;
354
+ min-width: 0;
355
+ overflow: hidden;
356
+ }
357
+
358
+ .forge-render .mini-card__weap-icon {
359
+ display: flex;
360
+ align-items: center;
361
+ justify-content: center;
362
+ flex-shrink: 0;
363
+ color: #fff;
364
+ }
365
+
366
+ .forge-render .mini-card__weap-icon svg {
367
+ width: 16px;
368
+ height: 16px;
369
+ }
370
+
371
+ .forge-render .mini-card__weap-icon svg,
372
+ .forge-render .mini-card__weap-icon svg path,
373
+ .forge-render .mini-card__weap-icon svg g {
374
+ fill: #fff !important;
375
+ color: #fff !important;
376
+ }
377
+
378
+ .forge-render .mini-card__weap-name {
379
+ font-size: 11px;
380
+ color: var(--fr-accent, rgb(200, 152, 72));
381
+ overflow: hidden;
382
+ text-overflow: ellipsis;
383
+ white-space: nowrap;
384
+ }
385
+
386
+ .forge-render .mini-card__weap-sep {
387
+ color: var(--fr-line-soft, #181920);
388
+ margin: 0 2px;
389
+ font-size: 11px;
390
+ }
391
+
392
+ .forge-render .mini-card__weap-div {
393
+ color: var(--fr-line-soft, #181920);
394
+ margin: 0 4px;
395
+ font-size: 11px;
396
+ }
397
+
398
+ /* ── Gear icons & text ─────────────────────────────────────────────────────── */
399
+
400
+ .forge-render .mini-card__gear-icon {
401
+ width: 16px;
402
+ height: 16px;
403
+ border-radius: 3px;
404
+ display: flex;
405
+ align-items: center;
406
+ justify-content: center;
407
+ font-size: 9px;
408
+ flex-shrink: 0;
409
+ }
410
+
411
+ .forge-render .mini-card__gear-icon--stat {
412
+ background: rgba(200, 169, 110, 0.15);
413
+ color: var(--fr-gold, #e8b050);
414
+ }
415
+
416
+ .forge-render .mini-card__gear-icon--rune {
417
+ background: rgba(166, 187, 222, 0.12);
418
+ color: var(--fr-muted, #828490);
419
+ }
420
+
421
+ .forge-render .mini-card__gear-icon--relic {
422
+ background: rgba(170, 136, 204, 0.12);
423
+ color: #aa88cc;
424
+ }
425
+
426
+ .forge-render .mini-card__gear-img {
427
+ width: 18px;
428
+ height: 18px;
429
+ border-radius: 3px;
430
+ flex-shrink: 0;
431
+ object-fit: contain;
432
+ }
433
+
434
+ .forge-render .mini-card__stat {
435
+ font-size: 11px;
436
+ color: var(--fr-gold, #e8b050);
437
+ white-space: nowrap;
438
+ }
439
+
440
+ .forge-render .mini-card__equip {
441
+ font-size: 11px;
442
+ color: var(--fr-muted, #828490);
443
+ overflow: hidden;
444
+ text-overflow: ellipsis;
445
+ white-space: nowrap;
446
+ }
447
+
448
+ .forge-render .mini-card__relic {
449
+ font-size: 11px;
450
+ color: #aa88cc;
451
+ overflow: hidden;
452
+ text-overflow: ellipsis;
453
+ white-space: nowrap;
454
+ }
455
+
456
+ .forge-render .mini-card__sep {
457
+ font-size: 11px;
458
+ color: var(--fr-line-soft, #181920);
459
+ margin: 0 3px;
460
+ }
461
+
462
+ /* ── Remove button (absolute top-right) ────────────────────────────────────── */
463
+
464
+ .forge-render .mini-card__btn-remove {
465
+ all: unset;
466
+ cursor: pointer;
467
+ position: absolute;
468
+ top: 6px;
469
+ right: 6px;
470
+ font-size: 18px;
471
+ line-height: 1;
472
+ color: var(--fr-text-dim, #646670);
473
+ width: 24px;
474
+ height: 24px;
475
+ display: flex;
476
+ align-items: center;
477
+ justify-content: center;
478
+ border-radius: var(--fr-radius-xs, 4px);
479
+ z-index: 1;
480
+ opacity: 0;
481
+ transition: color 0.15s, background 0.15s, opacity 0.15s;
482
+ }
483
+
484
+ .forge-render .mini-card:hover .mini-card__btn-remove {
485
+ opacity: 1;
486
+ }
487
+
488
+ .forge-render .mini-card__btn-remove:hover {
489
+ color: var(--fr-danger-text, #f87171);
490
+ background: rgba(197, 72, 95, 0.12);
491
+ }
492
+
493
+ /* ── Link badge (comp reference indicator) ────────────────────────────────── */
494
+
495
+ .forge-render .mini-card__link-badge {
496
+ display: inline-flex;
497
+ align-items: center;
498
+ gap: 3px;
499
+ font-size: 10px;
500
+ color: var(--fr-text-dim, #646670);
501
+ background: var(--fr-bg-tertiary, rgba(255, 255, 255, 0.06));
502
+ padding: 1px 6px;
503
+ border-radius: 8px;
504
+ flex-shrink: 0;
505
+ white-space: nowrap;
506
+ vertical-align: middle;
507
+ }
508
+
509
+ .forge-render .mini-card__link-badge svg {
510
+ opacity: 0.7;
511
+ }
512
+
513
+ /* ── Missing variant ───────────────────────────────────────────────────────── */
514
+
515
+ /* Slot color overrides for left accent */
516
+ .forge-render .mini-card[data-slot-color="red"] { border-left-color: #d63a3a; }
517
+ .forge-render .mini-card[data-slot-color="blue"] { border-left-color: #3a8fd6; }
518
+
519
+ .forge-render .mini-card--missing {
520
+ opacity: 0.5;
521
+ border-left-color: var(--fr-line, #1e1f24);
522
+ cursor: default;
523
+ }
524
+
525
+ .forge-render .mini-card__icon--missing {
526
+ color: var(--fr-text-dim, #646670);
527
+ font-size: 14px;
528
+ font-weight: 600;
529
+ }
530
+
531
+ .forge-render .mini-card__name--missing {
532
+ color: var(--fr-text-dim, #646670);
533
+ font-style: italic;
534
+ }
535
+
536
+
537
+ /* src/renderer/styles/role-badge.css */
538
+ /* Role badge pill — used in library cards and comp detail. */
539
+
540
+ .forge-render .role-badge {
541
+ display: inline-flex;
542
+ align-items: center;
543
+ border-radius: 6px;
544
+ padding: 2px 8px;
545
+ font-size: 0.68rem;
546
+ font-weight: 600;
547
+ white-space: nowrap;
548
+ border: none;
549
+ line-height: 1.5;
550
+ flex-shrink: 0;
551
+ letter-spacing: 0.02em;
552
+ text-transform: uppercase;
553
+ }
554
+
555
+ .forge-render .role-badge--power-dps {
556
+ background: rgba(220, 80, 80, 0.15);
557
+ color: #e87070;
558
+ }
559
+
560
+ .forge-render .role-badge--condi-dps {
561
+ background: rgba(185, 80, 220, 0.15);
562
+ color: #cc80e8;
563
+ }
564
+
565
+ .forge-render .role-badge--boon-support {
566
+ background: rgba(72, 160, 255, 0.15);
567
+ color: #72aaff;
568
+ }
569
+
570
+ .forge-render .role-badge--heal-support {
571
+ background: rgba(77, 202, 122, 0.15);
572
+ color: #4dca7a;
573
+ }
574
+
575
+ .forge-render .role-badge--hybrid {
576
+ background: rgba(200, 169, 110, 0.15);
577
+ color: #c8a96e;
578
+ }
579
+
580
+ .forge-render .role-badge--unknown {
581
+ background: rgba(130, 130, 130, 0.08);
582
+ color: #888;
583
+ }
584
+
585
+ /* Compact variant used inside comp party line slots */
586
+ .forge-render .comp-slot .role-badge {
587
+ font-size: 0.58rem;
588
+ padding: 0 5px;
589
+ line-height: 1.4;
590
+ border-radius: 4px;
591
+ }
592
+
593
+
594
+ .forge-render .hover-preview {
595
+ position: fixed;
596
+ top: 0;
597
+ left: 0;
598
+ z-index: var(--fr-z-tooltip, 120);
599
+ width: min(360px, calc(100vw - 16px));
600
+ border: 1px solid var(--fr-line, #1e1f24);
601
+ border-radius: 11px;
602
+ background:
603
+ var(--fr-panel-gradient, linear-gradient(180deg, rgba(20, 21, 24, 0.95), rgba(16, 17, 20, 0.95))),
604
+ var(--fr-surface, rgba(10, 11, 14, 0.92));
605
+ box-shadow:
606
+ 0 12px 28px rgba(0, 0, 0, 0.72),
607
+ 0 0 0 1px rgba(var(--fr-accent-rgb, 200, 152, 72), 0.12) inset;
608
+ padding: 10px;
609
+ pointer-events: none;
610
+ }
611
+
612
+ .forge-render .hover-preview__head {
613
+ display: grid;
614
+ grid-template-columns: 56px 1fr auto;
615
+ gap: 10px;
616
+ align-items: center;
617
+ }
618
+
619
+ .forge-render .hover-preview__timings {
620
+ display: flex;
621
+ flex-direction: column;
622
+ gap: 2px;
623
+ align-self: start;
624
+ margin-top: 2px;
625
+ }
626
+
627
+ .forge-render .hover-preview__timing {
628
+ display: flex;
629
+ align-items: center;
630
+ gap: 3px;
631
+ font-size: 0.82rem;
632
+ color: var(--fr-text-secondary, #b0b0b0);
633
+ white-space: nowrap;
634
+ }
635
+
636
+ .forge-render .hover-preview__timing img {
637
+ width: 16px;
638
+ height: 16px;
639
+ opacity: 0.85;
640
+ }
641
+
642
+ .forge-render .hover-preview__icon {
643
+ width: 56px;
644
+ height: 56px;
645
+ border-radius: 10px;
646
+ border: 1px solid var(--fr-line, #1e1f24);
647
+ object-fit: cover;
648
+ }
649
+
650
+ .forge-render .hover-preview__title {
651
+ margin: 0;
652
+ font-size: 0.99rem;
653
+ color: var(--fr-text, #e2e3e8);
654
+ }
655
+
656
+ .forge-render .hover-preview__meta {
657
+ margin: 4px 0 0;
658
+ font-size: 0.71rem;
659
+ text-transform: uppercase;
660
+ letter-spacing: 0.08em;
661
+ color: var(--fr-muted, #828490);
662
+ }
663
+
664
+ .forge-render .hover-preview__desc {
665
+ margin: 9px 0 0;
666
+ font-size: 0.78rem;
667
+ color: var(--fr-text, #e2e3e8);
668
+ line-height: 1.34;
669
+ }
670
+
671
+ .forge-render .hover-preview__bonuses {
672
+ margin: 9px 0 0;
673
+ padding: 0;
674
+ list-style: none;
675
+ display: grid;
676
+ gap: 2px;
677
+ font-size: 0.78rem;
678
+ line-height: 1.34;
679
+ }
680
+
681
+ .forge-render .hover-preview__bonus--active {
682
+ color: #6fdc6f;
683
+ }
684
+
685
+ .forge-render .hover-preview__bonus--inactive {
686
+ color: var(--fr-text-dim, #646670);
687
+ }
688
+
689
+ /* Stat breakdown list (attribute hover) */
690
+ .forge-render .hover-preview__breakdown {
691
+ margin: 8px 0 0;
692
+ padding: 0;
693
+ list-style: none;
694
+ color: var(--fr-text, #e2e3e8);
695
+ display: grid;
696
+ gap: 2px;
697
+ }
698
+
699
+ .forge-render .hover-preview__breakdown li {
700
+ font-size: 0.74rem;
701
+ display: flex;
702
+ align-items: center;
703
+ gap: 5px;
704
+ }
705
+
706
+ .forge-render .hover-preview__facts {
707
+ margin: 8px 0 0;
708
+ padding-left: 16px;
709
+ color: var(--fr-text, #e2e3e8);
710
+ display: grid;
711
+ gap: 3px;
712
+ }
713
+
714
+ .forge-render .hover-preview__facts li {
715
+ font-size: 0.74rem;
716
+ display: flex;
717
+ align-items: center;
718
+ gap: 5px;
719
+ }
720
+
721
+ .forge-render .hover-preview__chain-divider {
722
+ text-align: center;
723
+ color: var(--fr-text-dim, #646670);
724
+ font-size: 0.65rem;
725
+ margin: 5px 0 1px;
726
+ letter-spacing: 3px;
727
+ border-top: 1px solid var(--fr-line-soft, #181920);
728
+ padding-top: 5px;
729
+ }
730
+
731
+ .forge-render .hover-preview__trait-skill-divider {
732
+ text-align: center;
733
+ color: #6a8a5a;
734
+ font-size: 0.55rem;
735
+ margin: 8px 0 4px;
736
+ letter-spacing: 1px;
737
+ text-transform: uppercase;
738
+ border-top: 1px solid rgba(100, 140, 90, 0.3);
739
+ padding-top: 5px;
740
+ }
741
+
742
+ .forge-render .hover-preview__trait-skill-divider + .trait-skill-list {
743
+ padding: 0 6px 4px;
744
+ }
745
+
746
+ .forge-render .hover-preview__head--chained {
747
+ margin-top: 2px;
748
+ }
749
+
750
+
751
+ /* ── Comp card (chat embeds) ─────────────────────────────────────────── */
752
+ .forge-render .comp-card { display: flex; flex-direction: column; gap: 10px; }
753
+ .forge-render .comp-card__head { display: flex; align-items: baseline; gap: 8px; }
754
+ .forge-render .comp-card__name { font-size: 14px; font-weight: 600; color: var(--fr-text-light, #aeafb8); }
755
+ .forge-render .comp-card__tag { font-size: 10px; padding: 1px 7px; border-radius: 999px;
756
+ border: 1px solid var(--fr-line, #1e1f24); color: var(--fr-muted, #828490); }
757
+ .forge-render .comp-card__lines { display: flex; flex-direction: column; gap: 6px; }
758
+ .forge-render .comp-line { display: flex; align-items: center; gap: 8px; }
759
+ .forge-render .comp-line__label { font-size: 10px; color: var(--fr-muted, #828490); width: 20px; flex-shrink: 0; }
760
+ .forge-render .comp-line__slots { display: flex; gap: 4px; flex-wrap: wrap; }
761
+ .forge-render .comp-line__count { margin-left: auto; font-size: 10px; color: var(--fr-muted, #828490); }
762
+ .forge-render .comp-slot { width: 30px; height: 30px; border-radius: var(--fr-radius-xs, 4px);
763
+ display: flex; align-items: center; justify-content: center;
764
+ background: var(--fr-panel-2, #101114); border: 1px solid var(--fr-line, #1e1f24); }
765
+ .forge-render .comp-slot--empty { border-style: dashed; opacity: 0.45; }
766
+ .forge-render .comp-slot__icon svg { width: 20px; height: 20px; }
767
+ .forge-render .comp-card__pool { display: flex; flex-direction: column; gap: 8px; }