jaml-ui 0.24.0 → 0.24.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.
package/dist/ui/jimbo.css CHANGED
@@ -9,6 +9,7 @@
9
9
  scrollbar-width: none !important;
10
10
  -ms-overflow-style: none !important;
11
11
  }
12
+
12
13
  *::-webkit-scrollbar {
13
14
  display: none !important;
14
15
  }
@@ -86,7 +87,11 @@
86
87
  text-shadow: var(--j-text-shadow);
87
88
  color: var(--j-white);
88
89
  }
89
- .j-text--no-shadow { text-shadow: none; }
90
+
91
+ .j-text--no-shadow {
92
+ text-shadow: none;
93
+ }
94
+
90
95
  .j-text--upper {
91
96
  text-transform: uppercase;
92
97
  letter-spacing: 0.08em;
@@ -104,35 +109,113 @@
104
109
  }
105
110
 
106
111
  @keyframes j-font-dance {
107
- 0%, 100% { transform: translate(0, 0); }
108
- 25% { transform: translate(1px, -1px); }
109
- 50% { transform: translate(0, -2px); }
110
- 75% { transform: translate(-1px, -1px); }
112
+
113
+ 0%,
114
+ 100% {
115
+ transform: translate(0, 0);
116
+ }
117
+
118
+ 25% {
119
+ transform: translate(1px, -1px);
120
+ }
121
+
122
+ 50% {
123
+ transform: translate(0, -2px);
124
+ }
125
+
126
+ 75% {
127
+ transform: translate(-1px, -1px);
128
+ }
111
129
  }
112
130
 
113
131
  /* Sizes (from DESIGN.md typography scale) */
114
- .j-text--display { font-size: 26px; letter-spacing: 0.04em; line-height: 1; }
115
- .j-text--xl { font-size: 24px; letter-spacing: 0.04em; }
116
- .j-text--lg { font-size: 18px; letter-spacing: 0.04em; }
117
- .j-text--heading { font-size: 14px; letter-spacing: 0.08em; line-height: 1.2; }
118
- .j-text--md { font-size: 14px; }
119
- .j-text--sm { font-size: 12px; }
120
- .j-text--body { font-size: 11px; letter-spacing: 0.05em; line-height: 1.3; }
121
- .j-text--xs { font-size: 10px; }
122
- .j-text--label { font-size: 9px; letter-spacing: 0.1em; line-height: 1; text-transform: uppercase; }
123
- .j-text--micro { font-size: 8px; letter-spacing: 0.08em; line-height: 1; }
132
+ .j-text--display {
133
+ font-size: 26px;
134
+ letter-spacing: 0.04em;
135
+ line-height: 1;
136
+ }
137
+
138
+ .j-text--xl {
139
+ font-size: 24px;
140
+ letter-spacing: 0.04em;
141
+ }
142
+
143
+ .j-text--lg {
144
+ font-size: 18px;
145
+ letter-spacing: 0.04em;
146
+ }
147
+
148
+ .j-text--heading {
149
+ font-size: 14px;
150
+ letter-spacing: 0.08em;
151
+ line-height: 1.2;
152
+ }
153
+
154
+ .j-text--md {
155
+ font-size: 14px;
156
+ }
157
+
158
+ .j-text--sm {
159
+ font-size: 12px;
160
+ }
161
+
162
+ .j-text--body {
163
+ font-size: 11px;
164
+ letter-spacing: 0.05em;
165
+ line-height: 1.3;
166
+ }
167
+
168
+ .j-text--xs {
169
+ font-size: 10px;
170
+ }
171
+
172
+ .j-text--label {
173
+ font-size: 9px;
174
+ letter-spacing: 0.1em;
175
+ line-height: 1;
176
+ text-transform: uppercase;
177
+ }
178
+
179
+ .j-text--micro {
180
+ font-size: 8px;
181
+ letter-spacing: 0.08em;
182
+ line-height: 1;
183
+ }
124
184
 
125
185
  /* Tones */
126
- .j-text--default { color: var(--j-white); }
186
+ .j-text--default {
187
+ color: var(--j-white);
188
+ }
189
+
127
190
  .j-text--mult,
128
- .j-text--red { color: var(--j-red); }
191
+ .j-text--red {
192
+ color: var(--j-red);
193
+ }
194
+
129
195
  .j-text--chips,
130
- .j-text--blue { color: var(--j-blue); }
131
- .j-text--gold { color: var(--j-gold-text); }
132
- .j-text--green { color: var(--j-green-text); }
133
- .j-text--orange { color: var(--j-orange-text); }
134
- .j-text--purple { color: var(--j-purple); }
135
- .j-text--grey { color: var(--j-grey); }
196
+ .j-text--blue {
197
+ color: var(--j-blue);
198
+ }
199
+
200
+ .j-text--gold {
201
+ color: var(--j-gold-text);
202
+ }
203
+
204
+ .j-text--green {
205
+ color: var(--j-green-text);
206
+ }
207
+
208
+ .j-text--orange {
209
+ color: var(--j-orange-text);
210
+ }
211
+
212
+ .j-text--purple {
213
+ color: var(--j-purple);
214
+ }
215
+
216
+ .j-text--grey {
217
+ color: var(--j-grey);
218
+ }
136
219
 
137
220
 
138
221
  /* ── Panel ─────────────────────────────────────────────────────────────── */
@@ -143,7 +226,7 @@
143
226
  border-bottom-color: var(--j-border-south);
144
227
  border-radius: var(--j-radius-md);
145
228
  box-shadow: 0 3px 0 0 rgba(0, 0, 0, 0.55),
146
- inset 0 0 0 1px rgba(255, 255, 255, 0.04);
229
+ inset 0 0 0 1px rgba(255, 255, 255, 0.04);
147
230
  padding: var(--j-space-lg);
148
231
  display: flex;
149
232
  flex-direction: column;
@@ -182,6 +265,7 @@
182
265
  -webkit-user-select: none;
183
266
  user-select: none;
184
267
  }
268
+
185
269
  /* Invisible stable hit target to prevent hover jitter when the child transforms */
186
270
  .j-btn::after {
187
271
  content: '';
@@ -190,7 +274,11 @@
190
274
  background: transparent;
191
275
  z-index: 10;
192
276
  }
193
- .j-btn--full { width: 100%; }
277
+
278
+ .j-btn--full {
279
+ width: 100%;
280
+ }
281
+
194
282
  .j-btn--disabled {
195
283
  opacity: 0.55;
196
284
  cursor: not-allowed;
@@ -206,29 +294,66 @@
206
294
  transform: translate(0, 0);
207
295
  transition: transform var(--j-press-speed) linear, box-shadow var(--j-press-speed) linear;
208
296
  }
297
+
209
298
  .j-btn[data-pressed="true"] .j-btn__face,
210
299
  .j-btn:active:not(:disabled):not(.j-btn--disabled) .j-btn__face {
211
300
  transform: translateY(var(--j-press-y));
212
301
  box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.6);
213
302
  }
303
+
214
304
  .j-btn:not(.j-btn--disabled):hover .j-btn__face {
215
305
  filter: brightness(1.1);
216
306
  }
217
307
 
218
308
  /* Sizes */
219
- .j-btn--xs .j-btn__face { padding: 4px 8px; font-size: 11px; }
220
- .j-btn--sm .j-btn__face { padding: 6px 12px; font-size: 13px; }
221
- .j-btn--md .j-btn__face { padding: 10px 18px; font-size: 16px; }
222
- .j-btn--lg .j-btn__face { padding: 8px 18px; font-size: 20px; }
309
+ .j-btn--xs .j-btn__face {
310
+ padding: 4px 8px;
311
+ font-size: 11px;
312
+ }
313
+
314
+ .j-btn--sm .j-btn__face {
315
+ padding: 6px 12px;
316
+ font-size: 13px;
317
+ }
318
+
319
+ .j-btn--md .j-btn__face {
320
+ padding: 10px 18px;
321
+ font-size: 16px;
322
+ }
323
+
324
+ .j-btn--lg .j-btn__face {
325
+ padding: 8px 18px;
326
+ font-size: 20px;
327
+ }
223
328
 
224
329
  /* Tone colors — set via CSS custom properties */
225
- .j-btn--orange { --j-btn-face-color: var(--j-orange); }
226
- .j-btn--red { --j-btn-face-color: var(--j-red); }
227
- .j-btn--blue { --j-btn-face-color: var(--j-blue); }
228
- .j-btn--green { --j-btn-face-color: var(--j-green); }
229
- .j-btn--tarot { --j-btn-face-color: var(--j-tarot-btn); }
230
- .j-btn--planet { --j-btn-face-color: var(--j-planet-btn); }
231
- .j-btn--spectral { --j-btn-face-color: var(--j-spectral-btn); }
330
+ .j-btn--orange {
331
+ --j-btn-face-color: var(--j-orange);
332
+ }
333
+
334
+ .j-btn--red {
335
+ --j-btn-face-color: var(--j-red);
336
+ }
337
+
338
+ .j-btn--blue {
339
+ --j-btn-face-color: var(--j-blue);
340
+ }
341
+
342
+ .j-btn--green {
343
+ --j-btn-face-color: var(--j-green);
344
+ }
345
+
346
+ .j-btn--tarot {
347
+ --j-btn-face-color: var(--j-tarot-btn);
348
+ }
349
+
350
+ .j-btn--planet {
351
+ --j-btn-face-color: var(--j-planet-btn);
352
+ }
353
+
354
+ .j-btn--spectral {
355
+ --j-btn-face-color: var(--j-spectral-btn);
356
+ }
232
357
 
233
358
 
234
359
  /* ── Badge ─────────────────────────────────────────────────────────────── */
@@ -244,16 +369,47 @@
244
369
  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.8);
245
370
  border: none;
246
371
  }
247
- .j-badge--sm { padding: 2px 6px; font-size: 10px; }
248
- .j-badge--md { padding: 4px 8px; font-size: 12px; }
372
+
373
+ .j-badge--sm {
374
+ padding: 2px 6px;
375
+ font-size: 10px;
376
+ }
377
+
378
+ .j-badge--md {
379
+ padding: 4px 8px;
380
+ font-size: 12px;
381
+ }
249
382
 
250
383
  /* Badge tones — flat, no shadow, no edges */
251
- .j-badge--dark { background: var(--j-darkest); color: var(--j-white); }
252
- .j-badge--blue { background: var(--j-blue); color: var(--j-white); }
253
- .j-badge--red { background: var(--j-red); color: var(--j-white); }
254
- .j-badge--green { background: var(--j-green); color: var(--j-white); }
255
- .j-badge--orange { background: var(--j-orange); color: var(--j-white); }
256
- .j-badge--purple { background: var(--j-purple); color: var(--j-white); }
384
+ .j-badge--dark {
385
+ background: var(--j-darkest);
386
+ color: var(--j-white);
387
+ }
388
+
389
+ .j-badge--blue {
390
+ background: var(--j-blue);
391
+ color: var(--j-white);
392
+ }
393
+
394
+ .j-badge--red {
395
+ background: var(--j-red);
396
+ color: var(--j-white);
397
+ }
398
+
399
+ .j-badge--green {
400
+ background: var(--j-green);
401
+ color: var(--j-white);
402
+ }
403
+
404
+ .j-badge--orange {
405
+ background: var(--j-orange);
406
+ color: var(--j-white);
407
+ }
408
+
409
+ .j-badge--purple {
410
+ background: var(--j-purple);
411
+ color: var(--j-white);
412
+ }
257
413
 
258
414
 
259
415
  /* ── Tabs ──────────────────────────────────────────────────────────────── */
@@ -261,8 +417,13 @@
261
417
  .j-tabs {
262
418
  display: flex;
263
419
  gap: var(--j-space-md);
264
- align-items: flex-end;
265
- flex-wrap: wrap;
420
+ align-items: flex-start;
421
+ flex-wrap: nowrap;
422
+ min-width: 0;
423
+ overflow-x: auto;
424
+ overflow-y: visible;
425
+ padding-top: 12px;
426
+ scrollbar-width: none;
266
427
  }
267
428
 
268
429
  .j-tab {
@@ -270,40 +431,75 @@
270
431
  flex-direction: column;
271
432
  align-items: center;
272
433
  position: relative;
434
+ flex: 0 0 auto;
435
+ padding-top: 10px;
273
436
  }
274
437
 
275
438
  .j-tab__indicator {
276
- margin-bottom: var(--j-space-sm);
439
+ position: absolute;
440
+ top: 0;
441
+ left: 50%;
442
+ width: 14px;
443
+ height: 10px;
444
+ transform: translateX(-50%);
445
+ display: flex;
446
+ align-items: center;
447
+ justify-content: center;
448
+ pointer-events: none;
277
449
  }
450
+
278
451
  .j-tab__indicator[data-active="true"] {
279
452
  animation: jimbo-bounce 0.8s cubic-bezier(0.68, 0, 0.68, 1) infinite;
280
453
  }
454
+
281
455
  .j-tab__indicator[data-active="false"] {
282
- visibility: hidden;
456
+ opacity: 0;
283
457
  }
284
458
 
285
459
  .j-tab__btn {
460
+ appearance: none;
461
+ -webkit-appearance: none;
286
462
  border: none;
463
+ outline: none;
287
464
  cursor: pointer;
288
465
  border-radius: var(--j-radius-lg);
289
466
  padding: 4px 12px;
467
+ min-height: 28px;
290
468
  background-color: var(--j-red);
291
469
  box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.3);
292
470
  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.8);
293
471
  transition: none;
472
+ display: inline-flex;
473
+ align-items: center;
474
+ justify-content: center;
475
+ white-space: nowrap;
476
+ color: var(--j-white);
477
+ font-family: var(--j-font);
478
+ font-size: 12px;
479
+ line-height: 1;
480
+ flex: 0 0 auto;
294
481
  }
482
+
295
483
  .j-tab__btn:hover,
296
484
  .j-tab__btn:active {
297
485
  background-color: var(--j-dark-red);
298
486
  }
487
+
299
488
  .j-tab__btn[data-pressed="true"] {
300
489
  transform: translateY(2px);
301
490
  box-shadow: none;
302
491
  }
303
492
 
304
493
  @keyframes jimbo-bounce {
305
- 0%, 100% { transform: translateY(0); }
306
- 50% { transform: translateY(-3px); }
494
+
495
+ 0%,
496
+ 100% {
497
+ transform: translateY(0);
498
+ }
499
+
500
+ 50% {
501
+ transform: translateY(-3px);
502
+ }
307
503
  }
308
504
 
309
505
  /* Vertical tabs */
@@ -367,8 +563,14 @@
367
563
  border: 1px solid var(--j-dark-grey);
368
564
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.5);
369
565
  }
370
- .j-toggle-check[data-on="true"] { background: var(--j-orange); }
371
- .j-toggle-check[data-on="false"] { background: var(--j-darkest); }
566
+
567
+ .j-toggle-check[data-on="true"] {
568
+ background: var(--j-orange);
569
+ }
570
+
571
+ .j-toggle-check[data-on="false"] {
572
+ background: var(--j-darkest);
573
+ }
372
574
 
373
575
 
374
576
  /* ── Tooltip ──────────────────────────────────────────────────────────── */
@@ -422,13 +624,15 @@
422
624
  justify-content: center;
423
625
  box-shadow: 0 var(--j-press-y) 0 0 var(--j-dark-red);
424
626
  transition: transform var(--j-press-speed) ease,
425
- box-shadow var(--j-press-speed) ease,
426
- background-color var(--j-press-speed) ease;
627
+ box-shadow var(--j-press-speed) ease,
628
+ background-color var(--j-press-speed) ease;
427
629
  }
630
+
428
631
  .j-flank__btn[data-pressed="true"] {
429
632
  transform: translateY(var(--j-press-y));
430
633
  box-shadow: none;
431
634
  }
635
+
432
636
  .j-flank__btn:disabled {
433
637
  background-color: var(--j-dark-red);
434
638
  cursor: default;
@@ -469,11 +673,13 @@
469
673
  flex-shrink: 0;
470
674
  transition: color 0.15s, background 0.15s, border-color 0.15s;
471
675
  }
676
+
472
677
  .j-copy-row__btn[data-copied="false"] {
473
678
  color: var(--j-gold-text);
474
679
  background: rgba(228, 182, 67, 0.12);
475
680
  border: 1px solid var(--j-gold-text);
476
681
  }
682
+
477
683
  .j-copy-row__btn[data-copied="true"] {
478
684
  color: var(--j-green-text);
479
685
  background: rgba(53, 189, 134, 0.12);
@@ -527,8 +733,14 @@
527
733
  cursor: pointer;
528
734
  display: flex;
529
735
  }
530
- .j-code-block__copy[data-copied="false"] { color: rgba(255, 255, 255, 0.5); }
531
- .j-code-block__copy[data-copied="true"] { color: #4ade80; }
736
+
737
+ .j-code-block__copy[data-copied="false"] {
738
+ color: rgba(255, 255, 255, 0.5);
739
+ }
740
+
741
+ .j-code-block__copy[data-copied="true"] {
742
+ color: #4ade80;
743
+ }
532
744
 
533
745
  .j-code-block__pre {
534
746
  padding: 12px;
@@ -706,6 +918,7 @@
706
918
  width: 100%;
707
919
  transition: opacity 200ms;
708
920
  }
921
+
709
922
  .j-footer--hidden {
710
923
  pointer-events: none;
711
924
  opacity: 0;
@@ -739,7 +952,10 @@
739
952
 
740
953
  /* ── Floating ─────────────────────────────────────────────────────────── */
741
954
 
742
- .j-floating { position: absolute; z-index: 20; }
955
+ .j-floating {
956
+ position: absolute;
957
+ z-index: 20;
958
+ }
743
959
 
744
960
 
745
961
  /* ── Background (canvas is styled inline because it's fixed fullscreen) ── */
@@ -751,55 +967,157 @@
751
967
  box-shadow: 0 0 0 2px var(--j-blue), 0 0 10px var(--j-blue);
752
968
  animation: j-glow-pulse 1.6s ease-in-out infinite;
753
969
  }
970
+
754
971
  .j-glow--should {
755
972
  box-shadow: 0 0 0 2px var(--j-gold), 0 0 10px var(--j-gold);
756
973
  animation: j-glow-pulse 1.6s ease-in-out infinite;
757
974
  }
758
975
 
759
976
  @keyframes j-glow-pulse {
760
- 0%, 100% { opacity: 0.55; }
761
- 50% { opacity: 1; }
977
+
978
+ 0%,
979
+ 100% {
980
+ opacity: 0.55;
981
+ }
982
+
983
+ 50% {
984
+ opacity: 1;
985
+ }
762
986
  }
763
987
 
764
988
 
765
989
  /* ── Utility ──────────────────────────────────────────────────────────── */
766
990
 
767
- .j-flex { display: flex; }
768
- .j-flex-col { display: flex; flex-direction: column; }
769
- .j-flex-wrap { flex-wrap: wrap; }
770
- .j-items-center { align-items: center; }
771
- .j-justify-center { justify-content: center; }
772
- .j-gap-xs { gap: var(--j-space-xs); }
773
- .j-gap-sm { gap: var(--j-space-sm); }
774
- .j-gap-md { gap: var(--j-space-md); }
775
- .j-gap-lg { gap: var(--j-space-lg); }
776
- .j-gap-xl { gap: var(--j-space-xl); }
777
- .j-w-full { width: 100%; }
778
- .j-shrink-0 { flex-shrink: 0; }
779
- .j-flex-1 { flex: 1; }
780
- .j-min-w-0 { min-width: 0; }
781
- .j-text-center { text-align: center; }
782
- .j-overflow-hidden { overflow: hidden; }
783
- .j-overflow-auto { overflow: auto; }
784
- .j-relative { position: relative; }
991
+ .j-flex {
992
+ display: flex;
993
+ }
994
+
995
+ .j-flex-col {
996
+ display: flex;
997
+ flex-direction: column;
998
+ }
999
+
1000
+ .j-flex-wrap {
1001
+ flex-wrap: wrap;
1002
+ }
1003
+
1004
+ .j-items-center {
1005
+ align-items: center;
1006
+ }
1007
+
1008
+ .j-justify-center {
1009
+ justify-content: center;
1010
+ }
1011
+
1012
+ .j-gap-xs {
1013
+ gap: var(--j-space-xs);
1014
+ }
1015
+
1016
+ .j-gap-sm {
1017
+ gap: var(--j-space-sm);
1018
+ }
1019
+
1020
+ .j-gap-md {
1021
+ gap: var(--j-space-md);
1022
+ }
1023
+
1024
+ .j-gap-lg {
1025
+ gap: var(--j-space-lg);
1026
+ }
1027
+
1028
+ .j-gap-xl {
1029
+ gap: var(--j-space-xl);
1030
+ }
1031
+
1032
+ .j-w-full {
1033
+ width: 100%;
1034
+ }
1035
+
1036
+ .j-shrink-0 {
1037
+ flex-shrink: 0;
1038
+ }
1039
+
1040
+ .j-flex-1 {
1041
+ flex: 1;
1042
+ }
1043
+
1044
+ .j-min-w-0 {
1045
+ min-width: 0;
1046
+ }
1047
+
1048
+ .j-text-center {
1049
+ text-align: center;
1050
+ }
1051
+
1052
+ .j-overflow-hidden {
1053
+ overflow: hidden;
1054
+ }
1055
+
1056
+ .j-overflow-auto {
1057
+ overflow: auto;
1058
+ }
1059
+
1060
+ .j-relative {
1061
+ position: relative;
1062
+ }
785
1063
 
786
1064
  /* Tone border utilities */
787
- .j-border--red { border-color: var(--j-red); }
788
- .j-border--blue { border-color: var(--j-blue); }
789
- .j-border--green { border-color: var(--j-green); }
790
- .j-border--gold { border-color: var(--j-gold); }
791
- .j-border--orange { border-color: var(--j-orange); }
792
- .j-border--purple { border-color: var(--j-purple); }
1065
+ .j-border--red {
1066
+ border-color: var(--j-red);
1067
+ }
1068
+
1069
+ .j-border--blue {
1070
+ border-color: var(--j-blue);
1071
+ }
1072
+
1073
+ .j-border--green {
1074
+ border-color: var(--j-green);
1075
+ }
1076
+
1077
+ .j-border--gold {
1078
+ border-color: var(--j-gold);
1079
+ }
1080
+
1081
+ .j-border--orange {
1082
+ border-color: var(--j-orange);
1083
+ }
1084
+
1085
+ .j-border--purple {
1086
+ border-color: var(--j-purple);
1087
+ }
793
1088
 
794
1089
  /* Tone background utilities */
795
- .j-bg--red { background-color: var(--j-red); }
796
- .j-bg--blue { background-color: var(--j-blue); }
797
- .j-bg--green { background-color: var(--j-green); }
798
- .j-bg--gold { background-color: var(--j-gold); }
799
- .j-bg--orange { background-color: var(--j-orange); }
800
- .j-bg--purple { background-color: var(--j-purple); }
801
- .j-bg--dark-grey { background-color: var(--j-dark-grey); }
802
- .j-bg--darkest { background-color: var(--j-darkest); }
1090
+ .j-bg--red {
1091
+ background-color: var(--j-red);
1092
+ }
1093
+
1094
+ .j-bg--blue {
1095
+ background-color: var(--j-blue);
1096
+ }
1097
+
1098
+ .j-bg--green {
1099
+ background-color: var(--j-green);
1100
+ }
1101
+
1102
+ .j-bg--gold {
1103
+ background-color: var(--j-gold);
1104
+ }
1105
+
1106
+ .j-bg--orange {
1107
+ background-color: var(--j-orange);
1108
+ }
1109
+
1110
+ .j-bg--purple {
1111
+ background-color: var(--j-purple);
1112
+ }
1113
+
1114
+ .j-bg--dark-grey {
1115
+ background-color: var(--j-dark-grey);
1116
+ }
1117
+
1118
+ .j-bg--darkest {
1119
+ background-color: var(--j-darkest);
1120
+ }
803
1121
 
804
1122
  /* ── App Shell ────────────────────────────────────────────────────────── */
805
1123
  /* Mobile-first 375px layout container for ALL Jimbo UI screens.
@@ -855,7 +1173,10 @@
855
1173
  scrollbar-width: none;
856
1174
  -ms-overflow-style: none;
857
1175
  }
858
- .j-app__scroll::-webkit-scrollbar { display: none; }
1176
+
1177
+ .j-app__scroll::-webkit-scrollbar {
1178
+ display: none;
1179
+ }
859
1180
 
860
1181
  .j-app__footer {
861
1182
  flex-shrink: 0;
@@ -874,9 +1195,11 @@
874
1195
  .j-app__content {
875
1196
  padding: var(--j-space-xl) var(--j-space-xl) var(--j-space-lg);
876
1197
  }
1198
+
877
1199
  .j-app__scroll {
878
1200
  padding: var(--j-space-xl) var(--j-space-xl) var(--j-space-lg);
879
1201
  }
1202
+
880
1203
  .j-app__footer {
881
1204
  padding: var(--j-space-md) var(--j-space-xl) var(--j-space-lg);
882
1205
  }
@@ -886,12 +1209,15 @@
886
1209
  .j-stat-grid__value {
887
1210
  font-size: 20px;
888
1211
  }
1212
+
889
1213
  .j-info-card {
890
1214
  padding: var(--j-space-md) var(--j-space-lg);
891
1215
  }
1216
+
892
1217
  .j-info-card__title {
893
1218
  font-size: 14px;
894
1219
  }
1220
+
895
1221
  .j-section-header__tag {
896
1222
  font-size: 12px;
897
1223
  }
@@ -972,6 +1298,7 @@
972
1298
  cursor: pointer;
973
1299
  border: 2px solid transparent;
974
1300
  }
1301
+
975
1302
  .j-info-card:hover {
976
1303
  filter: brightness(1.08);
977
1304
  }
@@ -1075,6 +1402,7 @@
1075
1402
  transition: border-color 100ms ease;
1076
1403
  box-sizing: border-box;
1077
1404
  }
1405
+
1078
1406
  .j-seed-input__field::placeholder {
1079
1407
  color: var(--j-grey);
1080
1408
  opacity: 0.6;
@@ -1082,15 +1410,19 @@
1082
1410
  letter-spacing: 0.06em;
1083
1411
  font-size: 12px;
1084
1412
  }
1413
+
1085
1414
  .j-seed-input__field:focus {
1086
1415
  border-color: var(--j-gold);
1087
1416
  }
1417
+
1088
1418
  .j-seed-input__field[data-valid="true"] {
1089
1419
  border-color: var(--j-green);
1090
1420
  }
1421
+
1091
1422
  .j-seed-input__field[data-valid="false"] {
1092
1423
  border-color: var(--j-red);
1093
1424
  }
1425
+
1094
1426
  .j-seed-input__field[data-valid="partial"] {
1095
1427
  border-color: var(--j-panel-edge);
1096
1428
  }
@@ -1133,10 +1465,12 @@
1133
1465
  transition: border-color 100ms ease, background 100ms ease, color 100ms ease;
1134
1466
  box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.3);
1135
1467
  }
1468
+
1136
1469
  .j-aesthetic-pill:hover {
1137
1470
  border-color: var(--j-gold);
1138
1471
  color: var(--j-gold-text);
1139
1472
  }
1473
+
1140
1474
  .j-aesthetic-pill[data-active="true"] {
1141
1475
  border-color: var(--j-gold);
1142
1476
  background: rgba(228, 182, 67, 0.13);
@@ -1378,11 +1712,25 @@
1378
1712
  /* ── Font Dance Animation ─────────────────────────────────────────────── */
1379
1713
 
1380
1714
  @keyframes j-font-dance {
1381
- 0% { transform: translateY(0); }
1382
- 25% { transform: translateY(-1px); }
1383
- 50% { transform: translateY(0); }
1384
- 75% { transform: translateY(1px); }
1385
- 100% { transform: translateY(0); }
1715
+ 0% {
1716
+ transform: translateY(0);
1717
+ }
1718
+
1719
+ 25% {
1720
+ transform: translateY(-1px);
1721
+ }
1722
+
1723
+ 50% {
1724
+ transform: translateY(0);
1725
+ }
1726
+
1727
+ 75% {
1728
+ transform: translateY(1px);
1729
+ }
1730
+
1731
+ 100% {
1732
+ transform: translateY(0);
1733
+ }
1386
1734
  }
1387
1735
 
1388
1736
  .j-text--dance-container {
@@ -1398,8 +1746,16 @@
1398
1746
  scrollbar-width: none;
1399
1747
  -ms-overflow-style: none;
1400
1748
  }
1749
+
1401
1750
  .hide-scrollbar::-webkit-scrollbar {
1402
1751
  display: none;
1403
1752
  }
1404
- .j-juice-hover { transition: transform 200ms cubic-bezier(0.175, 0.885, 0.32, 1.275); }
1405
- .j-juice-hover:hover { transform: scale(1.05) translateY(-2px); z-index: 5; }
1753
+
1754
+ .j-juice-hover {
1755
+ transition: transform 200ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
1756
+ }
1757
+
1758
+ .j-juice-hover:hover {
1759
+ transform: scale(1.05) translateY(-2px);
1760
+ z-index: 5;
1761
+ }