@ntmats/hc-ui 0.4.0 → 0.6.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.
package/dist/styles.css CHANGED
@@ -29,6 +29,13 @@
29
29
  border-radius: var(--hc-radius-lg);
30
30
  box-shadow: var(--hc-shadow-card);
31
31
  }
32
+ /* Muted: the card with the `bg-muted-2` fill (HCUI's `surface` mixin over `bg-muted-2`, as the
33
+ `SheetOptions` card and HCUI's action lists in sheets). */
34
+ [data-hc-ds] .hc-ui-surface[data-tone='muted'] {
35
+ background: var(--hc-color-bg-muted-2);
36
+ border-radius: var(--hc-radius-lg);
37
+ box-shadow: var(--hc-shadow-card);
38
+ }
32
39
  [data-hc-ds] .hc-ui-surface:not([data-tone='page'], [data-tone='main'])[data-radius='md'] { border-radius: var(--hc-radius-md); }
33
40
  [data-hc-ds] .hc-ui-surface:not([data-tone='page'], [data-tone='main'])[data-radius='lg'] { border-radius: var(--hc-radius-lg); }
34
41
  [data-hc-ds] .hc-ui-surface:not([data-tone='page'], [data-tone='main'])[data-radius='xl'] { border-radius: var(--hc-radius-xl); }
@@ -53,7 +60,8 @@
53
60
  align-items: center;
54
61
  justify-content: center;
55
62
  gap: 6px;
56
- min-width: 0;
63
+ /* `optionMinWidth` sets the custom property; without it, 0 as before. */
64
+ min-width: var(--hc-segmented-option-min-width, 0);
57
65
  min-height: 38px;
58
66
  margin: 0;
59
67
  padding: 0 var(--hc-space-3);
@@ -91,8 +99,8 @@
91
99
  }
92
100
 
93
101
  [data-hc-ds] .hc-ui-segmented__option:focus-visible {
94
- outline: 2px solid var(--hc-focus-ring);
95
- outline-offset: var(--hc-focus-ring-offset, 2px);
102
+ outline: var(--hc-focus-ring-width) solid var(--hc-focus-ring);
103
+ outline-offset: var(--hc-focus-ring-offset, var(--hc-focus-ring-width));
96
104
  }
97
105
 
98
106
  [data-hc-ds] .hc-ui-segmented__option:disabled { opacity: 0.48; cursor: not-allowed; }
@@ -182,8 +190,8 @@
182
190
  [data-hc-ds] :is(.hc-ui-button, .hc-ui-icon-button, .hc-ui-chip):active:not(:disabled) { transform: scale(0.97); }
183
191
 
184
192
  [data-hc-ds] :is(.hc-ui-button, .hc-ui-icon-button, .hc-ui-chip):focus-visible {
185
- outline: 2px solid var(--hc-focus-ring);
186
- outline-offset: var(--hc-focus-ring-offset, 2px);
193
+ outline: var(--hc-focus-ring-width) solid var(--hc-focus-ring);
194
+ outline-offset: var(--hc-focus-ring-offset, var(--hc-focus-ring-width));
187
195
  }
188
196
 
189
197
  [data-hc-ds] :is(.hc-ui-button__icon, .hc-ui-icon-button__icon, .hc-ui-chip__icon) { display: inline-flex; flex: 0 0 auto; }
@@ -224,12 +232,21 @@
224
232
  [data-hc-ds] .hc-ui-button[data-variant='primary'] { color: var(--hc-color-text-inverse); background-color: var(--hc-color-accent); }
225
233
  [data-hc-ds] .hc-ui-button[data-variant='outline'] { background-color: transparent; box-shadow: inset 0 0 0 1px var(--hc-color-border-strong); }
226
234
  [data-hc-ds] .hc-ui-button[data-variant='danger'] { color: var(--hc-color-text-on-danger); background-color: var(--hc-color-bg-danger); }
235
+ /* Ghost: no fill, only the veil; `tone="danger"` is HCUI's danger in text only (team-save-menu__btn--danger). */
236
+ [data-hc-ds] .hc-ui-button[data-variant='ghost'] { background-color: transparent; }
237
+ [data-hc-ds] .hc-ui-button:is([data-variant='secondary'], [data-variant='outline'], [data-variant='ghost'])[data-tone='danger'] { color: var(--hc-color-danger); }
238
+ /* An open popup trigger: the 1.5px ring in the text color, as Chip (HCUI's Importar, Entrar and Convidar). */
239
+ [data-hc-ds] .hc-ui-button:is([data-variant='secondary'], [data-variant='outline'], [data-variant='ghost'])[aria-haspopup]:not([aria-haspopup='false'])[aria-expanded='true'] { box-shadow: inset 0 0 0 1.5px var(--hc-color-text-primary); }
227
240
  [data-hc-ds] .hc-ui-button[data-size='sm'] { min-height: var(--hc-control-height-chip); padding: 0 var(--hc-space-4); font-size: var(--hc-font-size-sm); }
228
241
  [data-hc-ds] .hc-ui-button[data-size='lg'] { min-height: var(--hc-control-height-lg); padding: 0 var(--hc-space-6); font-size: var(--hc-font-size-base); }
229
242
  [data-hc-ds] .hc-ui-button[data-full-width] { width: 100%; }
230
243
  [data-hc-ds] .hc-ui-button:disabled { opacity: 0.4; cursor: default; }
231
244
  [data-hc-ds] .hc-ui-button { max-width: 100%; }
232
245
  [data-hc-ds] .hc-ui-button__label { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
246
+ /* `wrap`: the label breaks onto more lines and the button grows; the 8px block padding
247
+ keeps a single line at the size's height. */
248
+ [data-hc-ds] .hc-ui-button[data-wrap] { padding-block: var(--hc-space-2); white-space: normal; text-align: center; }
249
+ [data-hc-ds] .hc-ui-button[data-wrap] .hc-ui-button__label { overflow: visible; text-overflow: clip; overflow-wrap: anywhere; }
233
250
  [data-hc-ds] .hc-ui-button[aria-busy='true'] { cursor: progress; }
234
251
  [data-hc-ds] .hc-ui-button__spinner {
235
252
  flex: 0 0 auto;
@@ -253,9 +270,12 @@
253
270
  }
254
271
  [data-hc-ds] .hc-ui-icon-button[data-size='sm'] { width: 36px; height: 36px; overflow: visible; }
255
272
  [data-hc-ds] .hc-ui-icon-button[data-size='lg'] { width: 44px; height: 44px; }
273
+ [data-hc-ds] .hc-ui-icon-button[data-size='xs'] { width: 28px; height: 28px; overflow: visible; }
256
274
  [data-hc-ds] .hc-ui-icon-button[data-tone='secondary'] { color: var(--hc-color-text-secondary); }
257
- /* 36px keeps a 44px touch target; the veil stays clipped to the circle. */
275
+ [data-hc-ds] .hc-ui-icon-button[data-tone='muted'] { color: var(--hc-color-text-muted); }
276
+ /* 36 and 28px keep a 44px touch target; the veil stays clipped to the circle. */
258
277
  [data-hc-ds] .hc-ui-icon-button[data-size='sm']::before { content: ''; position: absolute; inset: -4px; }
278
+ [data-hc-ds] .hc-ui-icon-button[data-size='xs']::before { content: ''; position: absolute; inset: -8px; }
259
279
  /* Fills: surface (HCUI's mobile theme button: surface, card ring and shadow) and ghost
260
280
  (HCUI's desktop utilities: no fill, muted fill and primary text on hover). */
261
281
  [data-hc-ds] .hc-ui-icon-button[data-variant='surface'] { background-color: var(--hc-color-bg-surface); box-shadow: var(--hc-shadow-card); }
@@ -264,6 +284,8 @@
264
284
  @media (hover: hover) {
265
285
  [data-hc-ds] .hc-ui-icon-button[data-variant='ghost']:hover:not(:disabled, [aria-pressed='true']) { color: var(--hc-color-text-primary); background-color: var(--hc-color-bg-muted); }
266
286
  }
287
+ /* An open popup trigger keeps the hover look, with a mouse or not (HCUI's ⋯ menus). */
288
+ [data-hc-ds] .hc-ui-icon-button[data-variant='ghost'][aria-haspopup]:not([aria-haspopup='false'])[aria-expanded='true']:not([aria-pressed='true']) { color: var(--hc-color-text-primary); background-color: var(--hc-color-bg-muted); }
267
289
  [data-hc-ds] .hc-ui-icon-button[data-shape='rounded'] { border-radius: var(--hc-radius-sm); }
268
290
  [data-hc-ds] .hc-ui-icon-button[aria-pressed='true'] { color: var(--hc-color-text-inverse); background-color: var(--hc-color-accent); }
269
291
  /* iconKey: the new icon turns in (HCUI's theme sun and moon). */
@@ -367,7 +389,7 @@
367
389
  }
368
390
  [data-hc-ds] .hc-ui-chip__clear svg { display: block; }
369
391
  [data-hc-ds] .hc-ui-chip__clear:hover:not(:disabled) { color: var(--hc-color-text-primary); background-color: color-mix(in srgb, currentColor 18%, transparent); }
370
- [data-hc-ds] :is(.hc-ui-chip__main, .hc-ui-chip__clear):focus-visible { outline: 2px solid var(--hc-focus-ring); outline-offset: var(--hc-focus-ring-offset, 2px); }
392
+ [data-hc-ds] :is(.hc-ui-chip__main, .hc-ui-chip__clear):focus-visible { outline: var(--hc-focus-ring-width) solid var(--hc-focus-ring); outline-offset: var(--hc-focus-ring-offset, var(--hc-focus-ring-width)); }
371
393
  [data-hc-ds] .hc-ui-chip__clear:disabled, [data-hc-ds] button.hc-ui-chip__main:disabled { cursor: default; }
372
394
  [data-hc-ds] .hc-ui-chip[data-disabled] { opacity: 0.4; }
373
395
  /* Selected with a remove button: the contrast fill at xs (HCUI's active quick filter), the accent otherwise. */
@@ -377,6 +399,33 @@
377
399
  [data-hc-ds] .hc-ui-chip[data-size='xs']:is([aria-pressed='true'], [aria-checked='true'], [data-selected]):hover { color: var(--hc-color-text-on-contrast); background-color: var(--hc-color-bg-contrast); }
378
400
  [data-hc-ds] .hc-ui-chip:is([aria-pressed='true'], [aria-checked='true'], [data-selected]) .hc-ui-chip__count { color: inherit; }
379
401
  [data-hc-ds] .hc-ui-chip[data-selected] .hc-ui-chip__clear { color: inherit; }
402
+ /* Muted: gray fill without ring (HCUI's search conditions, .search-page__cond). */
403
+ [data-hc-ds] .hc-ui-chip[data-variant='muted'] { background-color: var(--hc-color-bg-muted); box-shadow: none; }
404
+ /* Removable at md and sm: the whole height is the main button, and the 26px × sits 5px from the
405
+ end, concentric with the pill's curve ((36 - 26) / 2), in the muted color. */
406
+ [data-hc-ds] .hc-ui-chip[data-clearable][data-variant='muted']:not([data-size='xs']) { gap: 0; padding: 0 5px 0 0; }
407
+ [data-hc-ds] .hc-ui-chip[data-clearable][data-variant='muted']:not([data-size='xs']) .hc-ui-chip__main { align-self: stretch; padding: 0 var(--hc-space-1) 0 14px; }
408
+ [data-hc-ds] .hc-ui-chip[data-clearable][data-variant='muted'][data-size='sm'] .hc-ui-chip__main { padding-left: var(--hc-space-3); }
409
+ [data-hc-ds] .hc-ui-chip[data-clearable][data-variant='muted']:not([data-size='xs']) .hc-ui-chip__clear { width: 26px; height: 26px; color: var(--hc-color-text-muted); }
410
+ [data-hc-ds] .hc-ui-chip[data-clearable][data-variant='muted']:not([data-size='xs']) .hc-ui-chip__clear svg { width: 14px; height: 14px; }
411
+ /* Only an icon: a circle as tall as the chip. */
412
+ [data-hc-ds] .hc-ui-chip[data-icon-only] { width: var(--hc-control-height-chip); padding: 0; }
413
+ [data-hc-ds] .hc-ui-chip[data-icon-only][data-size='xs'] { width: 26px; }
414
+ /* Corner badge: on the top right corner, brand fill, a ring of the page around it (HCUI's .meta-fchip__count). */
415
+ [data-hc-ds] .hc-ui-chip__badge[data-placement='corner'] {
416
+ position: absolute;
417
+ top: -4px;
418
+ right: -4px;
419
+ padding: 0 var(--hc-space-1);
420
+ color: var(--hc-color-text-inverse);
421
+ background-color: var(--hc-color-brand);
422
+ box-shadow: 0 0 0 2px var(--hc-chip-badge-ring, var(--hc-color-bg-page));
423
+ font-family: var(--hc-font-mono);
424
+ font-weight: var(--hc-font-weight-semibold);
425
+ animation: hc-ui-check-in 260ms var(--hc-ease-pop);
426
+ }
427
+ /* Informative: it cannot be pressed (disabled) but keeps its full color. */
428
+ [data-hc-ds] .hc-ui-chip[data-informative]:disabled { opacity: 1; cursor: default; }
380
429
 
381
430
  /* FilterBar — a row of filters with start, end and footer slots (HCUI's .desktop-filter-bar,
382
431
  .desktop-filter-bar--sheet and .quick-filters). Placement stays with the caller. */
@@ -391,7 +440,13 @@
391
440
  [data-hc-ds] .hc-ui-filter-bar__line { display: flex; align-items: center; gap: var(--hc-space-2); min-width: 0; }
392
441
  [data-hc-ds] :is(.hc-ui-filter-bar__start, .hc-ui-filter-bar__end) { display: flex; flex: 0 0 auto; align-items: center; gap: var(--hc-space-2); }
393
442
  [data-hc-ds] .hc-ui-filter-bar__end { margin-inline-start: auto; }
394
- [data-hc-ds] .hc-ui-filter-bar__row { display: flex; flex: 1 1 auto; flex-wrap: wrap; align-items: center; gap: var(--hc-space-2); min-width: 0; }
443
+ /* Bleed: the bar reaches the panel's edges and gives the space back as padding. */
444
+ [data-hc-ds] .hc-ui-filter-bar[data-bleed] {
445
+ margin-inline: calc(-1 * var(--hc-filter-bar-bleed-start, var(--hc-filter-bar-bleed, 0px))) calc(-1 * var(--hc-filter-bar-bleed-end, var(--hc-filter-bar-bleed, 0px)));
446
+ padding-inline: var(--hc-filter-bar-bleed-start, var(--hc-filter-bar-bleed, 0px)) var(--hc-filter-bar-bleed-end, var(--hc-filter-bar-bleed, 0px));
447
+ }
448
+ /* The row anchors what the caller places in it with position: absolute (a popup). */
449
+ [data-hc-ds] .hc-ui-filter-bar__row { position: relative; display: flex; flex: 1 1 auto; flex-wrap: wrap; align-items: center; gap: var(--hc-space-2); min-width: 0; }
395
450
  [data-hc-ds] .hc-ui-filter-bar[data-density='compact'] .hc-ui-filter-bar__row { gap: var(--hc-space-1); }
396
451
  [data-hc-ds] .hc-ui-filter-bar__footer { margin-top: var(--hc-space-2); }
397
452
  /* One line that scrolls sideways. 4px of padding above and below, taken back by the margin,
@@ -499,6 +554,7 @@
499
554
  [data-hc-ds] :is(.hc-ui-segmented[data-indicator='slide'], .hc-ui-segmented__indicator) { transition: none; }
500
555
  [data-hc-ds] .hc-ui-segmented[data-indicator='slide']:has(.hc-ui-segmented__option:active:not(:disabled)) { transform: none; }
501
556
  [data-hc-ds] .hc-ui-icon-button__icon[data-swap] { animation: none; }
557
+ [data-hc-ds] .hc-ui-chip__badge[data-placement='corner'] { animation: none; }
502
558
  [data-hc-ds] :is(.hc-ui-button, .hc-ui-icon-button, .hc-ui-chip) { transition: none; }
503
559
  [data-hc-ds] .hc-ui-field__control { transition: none; }
504
560
  [data-hc-ds] .hc-ui-button__spinner { animation: none; }
@@ -531,13 +587,16 @@
531
587
  [data-hc-ds] .hc-ui-meter[data-track='none'][data-cap='round'] .hc-ui-meter__fill { border-radius: 0 var(--hc-radius-full) var(--hc-radius-full) 0; }
532
588
  [data-hc-ds] .hc-ui-meter[data-cap='square'] .hc-ui-meter__fill { border-radius: 0; }
533
589
  [data-hc-ds] .hc-ui-meter[data-tone='over'] .hc-ui-meter__fill { background-color: var(--hc-color-danger); }
534
- /* Drawn only above the limit, over the danger fill: in the text color it shows in both themes. */
590
+ /* Drawn only above the limit, over the danger fill: in the text color, with a 1px edge of
591
+ the surface on each side, so it stands apart from the red in both themes (dark on light,
592
+ light on dark) and from the track. */
535
593
  [data-hc-ds] .hc-ui-meter__limit {
536
594
  position: absolute;
537
595
  top: 0;
538
596
  bottom: 0;
539
597
  width: 2px;
540
598
  background-color: var(--hc-color-text-primary);
599
+ box-shadow: -1px 0 0 var(--hc-color-bg-surface), 1px 0 0 var(--hc-color-bg-surface);
541
600
  }
542
601
  [data-hc-ds] .hc-ui-meter[data-animated] .hc-ui-meter__fill { transition: width var(--hc-transition-base); }
543
602
 
@@ -611,8 +670,8 @@
611
670
  }
612
671
  [data-hc-ds] .hc-ui-checkbox__input:focus-visible { outline: none; }
613
672
  [data-hc-ds] .hc-ui-checkbox__input:focus-visible + .hc-ui-checkbox__box {
614
- outline: 2px solid var(--hc-focus-ring);
615
- outline-offset: var(--hc-focus-ring-offset, 2px);
673
+ outline: var(--hc-focus-ring-width) solid var(--hc-focus-ring);
674
+ outline-offset: var(--hc-focus-ring-offset, var(--hc-focus-ring-width));
616
675
  }
617
676
  [data-hc-ds] .hc-ui-checkbox__input:disabled + .hc-ui-checkbox__box {
618
677
  background-color: var(--hc-color-bg-muted);
@@ -630,7 +689,10 @@
630
689
  }
631
690
 
632
691
  /* Dialog — native <dialog> in the top layer. `sm` is HCUI's desktop confirmation
633
- (.desktop-confirm); `md` is HCUI's Sheet in its centered desktop form. */
692
+ (.desktop-confirm); `md` is HCUI's Sheet in its centered desktop form. Both have the
693
+ panel's look (decision of 2026-11-07): `shadow-modal`, the entry and exit animation and
694
+ the backdrop's fade, none under reduced motion. The backdrop is not blurred: the panel
695
+ is solid (blur only behind translucent surfaces). */
634
696
  [data-hc-ds] .hc-ui-dialog {
635
697
  box-sizing: border-box;
636
698
  width: min(400px, calc(100vw - 32px));
@@ -644,15 +706,23 @@
644
706
  background-color: var(--hc-color-bg-elevated);
645
707
  border: 0;
646
708
  border-radius: var(--hc-radius-lg);
709
+ box-shadow: var(--hc-shadow-modal);
647
710
  font-family: var(--hc-font-body);
648
711
  font-size: var(--hc-font-size-md);
649
712
  font-variation-settings: 'ROND' var(--hc-rond);
650
713
  line-height: var(--hc-line-height-md);
651
714
  outline: none;
715
+ /* `backwards`, not `both`: once in, no transform stays on the dialog. A transform would make
716
+ it the containing block of fixed popups portaled into it, and its overflow would cut them. */
717
+ animation: hc-ui-dialog-in var(--hc-dur-medium) var(--hc-ease-standard) backwards;
652
718
  }
653
719
  [data-hc-ds] .hc-ui-dialog[open] { display: grid; align-content: start; gap: var(--hc-space-2); }
654
- [data-hc-ds] .hc-ui-dialog::backdrop { background-color: var(--hc-color-bg-overlay); }
655
- [data-hc-ds] .hc-ui-dialog[data-closing] { pointer-events: none; }
720
+ [data-hc-ds] .hc-ui-dialog::backdrop {
721
+ background-color: var(--hc-color-bg-overlay);
722
+ animation: hc-ui-backdrop-in var(--hc-dur-medium) var(--hc-ease-standard) both;
723
+ }
724
+ [data-hc-ds] .hc-ui-dialog[data-closing] { pointer-events: none; animation: hc-ui-dialog-out var(--hc-dur-short) var(--hc-ease-emphasized-accel) forwards; }
725
+ [data-hc-ds] .hc-ui-dialog[data-closing]::backdrop { animation: hc-ui-backdrop-out var(--hc-dur-short) var(--hc-ease-standard) forwards; }
656
726
  [data-hc-ds] .hc-ui-dialog__header {
657
727
  display: flex;
658
728
  align-items: center;
@@ -686,25 +756,14 @@
686
756
  gap: var(--hc-space-2);
687
757
  margin-top: var(--hc-space-3);
688
758
  }
689
- /* HCUI's confirmation buttons are 38px, between Button sm (36) and md (44). */
690
- [data-hc-ds] .hc-ui-dialog[data-size='sm'] .hc-ui-dialog__actions .hc-ui-button[data-size='sm'] { min-height: 38px; }
691
759
 
692
760
  [data-hc-ds] .hc-ui-dialog[data-size='md'] {
693
761
  width: min(440px, calc(100vw - 2 * var(--hc-space-6)));
694
762
  padding: 0;
695
763
  overflow: hidden;
696
764
  border-radius: var(--hc-radius-sheet);
697
- box-shadow: var(--hc-shadow-modal);
698
- animation: hc-ui-dialog-in var(--hc-dur-medium) var(--hc-ease-standard) both;
699
765
  }
700
766
  [data-hc-ds] .hc-ui-dialog[data-size='md'][open] { display: flex; flex-direction: column; gap: 0; }
701
- [data-hc-ds] .hc-ui-dialog[data-size='md']::backdrop {
702
- -webkit-backdrop-filter: blur(8px);
703
- backdrop-filter: blur(8px);
704
- animation: hc-ui-backdrop-in var(--hc-dur-medium) var(--hc-ease-standard) both;
705
- }
706
- [data-hc-ds] .hc-ui-dialog[data-size='md'][data-closing] { animation: hc-ui-dialog-out var(--hc-dur-short) var(--hc-ease-emphasized-accel) forwards; }
707
- [data-hc-ds] .hc-ui-dialog[data-size='md'][data-closing]::backdrop { animation: hc-ui-backdrop-out var(--hc-dur-short) var(--hc-ease-standard) forwards; }
708
767
  [data-hc-ds] .hc-ui-dialog[data-size='md'] .hc-ui-dialog__header { flex: 0 0 auto; padding: var(--hc-space-5) var(--hc-space-5) var(--hc-space-3); }
709
768
  [data-hc-ds] .hc-ui-dialog[data-size='md'] .hc-ui-dialog__title {
710
769
  font-size: var(--hc-font-size-xl);
@@ -732,6 +791,8 @@
732
791
  box-shadow: 0 -1px 0 var(--hc-color-border);
733
792
  }
734
793
  [data-hc-ds] .hc-ui-dialog[data-size='md'] .hc-ui-dialog__actions > * { flex: 1 1 0; }
794
+ /* Header-less (Sheet header={false}): the content brings its own spacing, heading and close. */
795
+ [data-hc-ds] .hc-ui-dialog[data-size='md'][data-headerless] .hc-ui-dialog__body { gap: 0; padding: 0; }
735
796
 
736
797
  @keyframes hc-ui-dialog-in {
737
798
  from { opacity: 0; transform: translateY(8px) scale(0.97); }
@@ -747,10 +808,8 @@
747
808
  @media (prefers-reduced-motion: reduce) {
748
809
  [data-hc-ds] .hc-ui-dialog,
749
810
  [data-hc-ds] .hc-ui-dialog::backdrop,
750
- [data-hc-ds] .hc-ui-dialog[data-size='md'],
751
- [data-hc-ds] .hc-ui-dialog[data-size='md'][data-closing],
752
- [data-hc-ds] .hc-ui-dialog[data-size='md']::backdrop,
753
- [data-hc-ds] .hc-ui-dialog[data-size='md'][data-closing]::backdrop { animation: none; }
811
+ [data-hc-ds] .hc-ui-dialog[data-closing],
812
+ [data-hc-ds] .hc-ui-dialog[data-closing]::backdrop { animation: none; }
754
813
  }
755
814
 
756
815
  /* Sheet — a Dialog size="md" that, at the bottom, is HCUI's mobile Sheet (sheet-panel,
@@ -771,7 +830,7 @@
771
830
  padding-bottom: max(env(safe-area-inset-bottom, 0px), var(--hc-space-3));
772
831
  border-radius: var(--hc-radius-sheet) var(--hc-radius-sheet) 0 0;
773
832
  touch-action: pan-y;
774
- animation: hc-ui-sheet-up var(--hc-dur-large) var(--hc-ease-sheet) both;
833
+ animation: hc-ui-sheet-up var(--hc-dur-large) var(--hc-ease-sheet) backwards;
775
834
  transition: height 320ms var(--hc-ease-sheet), max-height 320ms var(--hc-ease-sheet);
776
835
  }
777
836
  [data-hc-ds] .hc-ui-sheet[data-presentation='bottom']::before {
@@ -806,7 +865,7 @@
806
865
  padding-bottom: max(env(safe-area-inset-bottom, 0px), var(--hc-space-3));
807
866
  border-radius: var(--hc-radius-sheet) var(--hc-radius-sheet) 0 0;
808
867
  touch-action: pan-y;
809
- animation: hc-ui-sheet-up var(--hc-dur-large) var(--hc-ease-sheet) both;
868
+ animation: hc-ui-sheet-up var(--hc-dur-large) var(--hc-ease-sheet) backwards;
810
869
  transition: height 320ms var(--hc-ease-sheet), max-height 320ms var(--hc-ease-sheet);
811
870
  }
812
871
  [data-hc-ds] .hc-ui-sheet[data-presentation='auto']::before {
@@ -858,7 +917,7 @@
858
917
  }
859
918
  [data-hc-ds] .hc-ui-sheet-options__row {
860
919
  /* The ring goes inside, where the group's overflow does not cut it. */
861
- --hc-focus-ring-offset: -2px;
920
+ --hc-focus-ring-offset: calc(-1 * var(--hc-focus-ring-width));
862
921
  appearance: none;
863
922
  position: relative;
864
923
  display: flex;
@@ -896,8 +955,8 @@
896
955
  }
897
956
  [data-hc-ds] .hc-ui-sheet-options__row:active:not(:disabled)::after { opacity: 0.07; }
898
957
  [data-hc-ds] .hc-ui-sheet-options__row:focus-visible {
899
- outline: 2px solid var(--hc-focus-ring);
900
- outline-offset: var(--hc-focus-ring-offset, 2px);
958
+ outline: var(--hc-focus-ring-width) solid var(--hc-focus-ring);
959
+ outline-offset: var(--hc-focus-ring-offset, var(--hc-focus-ring-width));
901
960
  border-radius: var(--hc-radius-lg);
902
961
  }
903
962
  [data-hc-ds] .hc-ui-sheet-options__row:disabled { opacity: 0.4; cursor: default; }
@@ -915,22 +974,6 @@
915
974
  animation: hc-ui-check-in 260ms var(--hc-ease-pop);
916
975
  }
917
976
 
918
- /* SheetOptions variant="list" — HCUI's mobile sort sheet (.sort-button__option): plain
919
- 48px rows with a line under each, 560 weight and 720 once chosen, a 20px check in the text color. */
920
- [data-hc-ds] .hc-ui-sheet-options[data-variant='list'] { background-color: transparent; border-radius: 0; box-shadow: none; }
921
- [data-hc-ds] .hc-ui-sheet-options[data-variant='list'] .hc-ui-sheet-options__row,
922
- [data-hc-ds] .hc-ui-sheet-options[data-variant='list'] .hc-ui-sheet-options__row + .hc-ui-sheet-options__row {
923
- min-height: 48px;
924
- padding: 0;
925
- font-size: var(--hc-font-size-md);
926
- font-weight: 560;
927
- line-height: var(--hc-line-height-md);
928
- box-shadow: inset 0 -1px 0 var(--hc-color-border);
929
- }
930
- [data-hc-ds] .hc-ui-sheet-options[data-variant='list'] .hc-ui-sheet-options__row[data-selected] .hc-ui-sheet-options__label { font-weight: 720; }
931
- [data-hc-ds] .hc-ui-sheet-options[data-variant='list'] .hc-ui-sheet-options__row:focus-visible { border-radius: var(--hc-radius-xs); }
932
- [data-hc-ds] .hc-ui-sheet-options[data-variant='list'] .hc-ui-sheet-options__check { color: var(--hc-color-text-primary); animation: none; }
933
-
934
977
  /* SheetChips — wrapping Chips with radio semantics. */
935
978
  [data-hc-ds] .hc-ui-sheet-chips { display: flex; flex-wrap: wrap; gap: var(--hc-space-2); }
936
979
 
@@ -1020,8 +1063,8 @@
1020
1063
  [data-hc-ds] .hc-ui-menu__item[data-danger]:hover:not(:disabled) { color: var(--hc-color-danger); }
1021
1064
  [data-hc-ds] .hc-ui-menu__item:disabled { color: var(--hc-color-text-muted); cursor: default; }
1022
1065
  [data-hc-ds] .hc-ui-menu__item:focus-visible {
1023
- outline: 2px solid var(--hc-focus-ring);
1024
- outline-offset: var(--hc-focus-ring-offset, 3px);
1066
+ outline: var(--hc-focus-ring-width) solid var(--hc-focus-ring);
1067
+ outline-offset: var(--hc-focus-ring-offset, var(--hc-focus-ring-width));
1025
1068
  }
1026
1069
  [data-hc-ds] .hc-ui-menu__text { min-width: 0; }
1027
1070
  [data-hc-ds] .hc-ui-menu__hint {
@@ -1101,6 +1144,7 @@
1101
1144
  background: transparent;
1102
1145
  color: inherit;
1103
1146
  font: inherit;
1147
+ font-variation-settings: 'ROND' var(--hc-rond);
1104
1148
  cursor: pointer;
1105
1149
  -webkit-tap-highlight-color: transparent;
1106
1150
  }
@@ -1116,8 +1160,8 @@
1116
1160
  text-align: start;
1117
1161
  }
1118
1162
  [data-hc-ds] :is(.hc-ui-table__sort, .hc-ui-table__row-button):focus-visible {
1119
- outline: 2px solid var(--hc-focus-ring);
1120
- outline-offset: var(--hc-focus-ring-offset, 3px);
1163
+ outline: var(--hc-focus-ring-width) solid var(--hc-focus-ring);
1164
+ outline-offset: var(--hc-focus-ring-offset, var(--hc-focus-ring-width));
1121
1165
  }
1122
1166
 
1123
1167
  /* PageHeader — HCUI's desktop page heading (`.desktop-page-heading`): 22px semibold title on a
@@ -1260,6 +1304,7 @@
1260
1304
  padding: var(--hc-space-1) var(--hc-space-2);
1261
1305
  border-radius: var(--hc-radius-xs);
1262
1306
  font: inherit;
1307
+ font-variation-settings: 'ROND' var(--hc-rond);
1263
1308
  }
1264
1309
  [data-hc-ds] .hc-ui-panel-header__close {
1265
1310
  display: grid;
@@ -1272,8 +1317,8 @@
1272
1317
  }
1273
1318
  [data-hc-ds] :is(.hc-ui-panel-header__step, .hc-ui-panel-header__close):hover { background: var(--hc-color-bg-muted); color: var(--hc-color-text-primary); }
1274
1319
  [data-hc-ds] :is(.hc-ui-panel-header__step, .hc-ui-panel-header__close):focus-visible {
1275
- outline: 2px solid var(--hc-focus-ring);
1276
- outline-offset: var(--hc-focus-ring-offset, 3px);
1320
+ outline: var(--hc-focus-ring-width) solid var(--hc-focus-ring);
1321
+ outline-offset: var(--hc-focus-ring-offset, var(--hc-focus-ring-width));
1277
1322
  }
1278
1323
 
1279
1324
  /* ListRow — HCUI's `list-row` mixin: a full-width button row with a translucent veil on hover
@@ -1316,8 +1361,8 @@
1316
1361
  [data-hc-ds] .hc-ui-list-row:active:not(:disabled)::after { opacity: 0.07; }
1317
1362
  [data-hc-ds] .hc-ui-list-row:focus-visible {
1318
1363
  border-radius: var(--hc-radius-lg);
1319
- outline: 2px solid var(--hc-focus-ring);
1320
- outline-offset: var(--hc-focus-ring-offset, -2px);
1364
+ outline: var(--hc-focus-ring-width) solid var(--hc-focus-ring);
1365
+ outline-offset: var(--hc-focus-ring-offset, calc(-1 * var(--hc-focus-ring-width)));
1321
1366
  }
1322
1367
  @media (prefers-reduced-motion: reduce) {
1323
1368
  [data-hc-ds] .hc-ui-list-row::after { transition: none; }
@@ -1325,7 +1370,7 @@
1325
1370
 
1326
1371
  /* CommandPalette — HCUI's desktop ⌘K (.command-palette): 640px wide, at most 560px tall,
1327
1372
  12vh from the top, a 1px border, `shadow-soft`, no blur and no animation. The backdrop
1328
- is `bg-overlay` unless `--hc-command-palette-backdrop` says otherwise (HCUI: 28% black). */
1373
+ is the `bg-scrim` token (HCUI's 28% black) unless `--hc-command-palette-backdrop` says otherwise. */
1329
1374
  [data-hc-ds] .hc-ui-command-palette {
1330
1375
  box-sizing: border-box;
1331
1376
  width: min(640px, calc(100vw - 32px));
@@ -1344,7 +1389,7 @@
1344
1389
  line-height: var(--hc-line-height-md);
1345
1390
  outline: none;
1346
1391
  }
1347
- [data-hc-ds] .hc-ui-command-palette::backdrop { background: var(--hc-command-palette-backdrop, var(--hc-color-bg-overlay)); }
1392
+ [data-hc-ds] .hc-ui-command-palette::backdrop { background: var(--hc-command-palette-backdrop, var(--hc-color-bg-scrim)); }
1348
1393
  [data-hc-ds] .hc-ui-command-palette__box { display: flex; flex-direction: column; max-height: inherit; }
1349
1394
  [data-hc-ds] .hc-ui-command-palette__field {
1350
1395
  display: flex;
@@ -1399,14 +1444,15 @@
1399
1444
  background: transparent;
1400
1445
  color: inherit;
1401
1446
  font: inherit;
1447
+ font-variation-settings: 'ROND' var(--hc-rond);
1402
1448
  text-align: left;
1403
1449
  cursor: pointer;
1404
1450
  -webkit-tap-highlight-color: transparent;
1405
1451
  }
1406
1452
  [data-hc-ds] .hc-ui-command-palette__item[aria-selected='true'] { background: var(--hc-color-bg-muted); }
1407
1453
  [data-hc-ds] .hc-ui-command-palette__item:focus-visible {
1408
- outline: 2px solid var(--hc-focus-ring);
1409
- outline-offset: var(--hc-focus-ring-offset, -2px);
1454
+ outline: var(--hc-focus-ring-width) solid var(--hc-focus-ring);
1455
+ outline-offset: var(--hc-focus-ring-offset, calc(-1 * var(--hc-focus-ring-width)));
1410
1456
  }
1411
1457
  [data-hc-ds] .hc-ui-command-palette__icon {
1412
1458
  display: grid;
@@ -1744,6 +1790,7 @@
1744
1790
  background: transparent;
1745
1791
  color: inherit;
1746
1792
  font: inherit;
1793
+ font-variation-settings: 'ROND' var(--hc-rond);
1747
1794
  cursor: pointer;
1748
1795
  -webkit-tap-highlight-color: transparent;
1749
1796
  touch-action: manipulation;
@@ -1793,13 +1840,14 @@
1793
1840
  background: transparent;
1794
1841
  color: inherit;
1795
1842
  font: inherit;
1843
+ font-variation-settings: 'ROND' var(--hc-rond);
1796
1844
  cursor: pointer;
1797
1845
  -webkit-tap-highlight-color: transparent;
1798
1846
  touch-action: manipulation;
1799
1847
  }
1800
1848
  [data-hc-ds] .hc-ui-combat-dial__cell:focus-visible {
1801
- outline: 2px solid var(--hc-focus-ring);
1802
- outline-offset: var(--hc-focus-ring-offset, 2px);
1849
+ outline: var(--hc-focus-ring-width) solid var(--hc-focus-ring);
1850
+ outline-offset: var(--hc-focus-ring-offset, var(--hc-focus-ring-width));
1803
1851
  }
1804
1852
  [data-hc-ds] .hc-ui-combat-dial__cell[data-round] { border-radius: 50%; }
1805
1853
  [data-hc-ds] .hc-ui-combat-dial__cell[data-kind='legend'] { color: var(--hc-color-text-secondary); }
@@ -1843,9 +1891,25 @@
1843
1891
  /* `max-width` lets the bolts squeeze into the printed card's 28px legend, as in HCUI. */
1844
1892
  [data-hc-ds] .hc-ui-combat-dial__bolt { width: auto; max-width: 100%; height: 16px; object-fit: contain; filter: var(--hc-filter-symbol-muted); }
1845
1893
 
1894
+ /* `density="compact"`: HCUI's compact dial of the unit view on phones, for dense lists:
1895
+ 34px cells and rows, 6px gaps, 13px numbers, 18px special icons and tighter point chips.
1896
+ The printed presentation keeps its own measures. */
1897
+ [data-hc-ds] .hc-ui-combat-dial[data-density='compact']:not([data-presentation='printed']) .hc-ui-combat-dial__header { gap: var(--hc-space-1); }
1898
+ [data-hc-ds] .hc-ui-combat-dial[data-density='compact']:not([data-presentation='printed']) .hc-ui-combat-dial__points { gap: var(--hc-space-1); padding: var(--hc-space-1) 0; }
1899
+ [data-hc-ds] .hc-ui-combat-dial[data-density='compact']:not([data-presentation='printed']) .hc-ui-combat-dial__chip { gap: var(--hc-space-2); padding: var(--hc-space-2); border-radius: var(--hc-radius-lg); }
1900
+ [data-hc-ds] .hc-ui-combat-dial[data-density='compact']:not([data-presentation='printed']) .hc-ui-combat-dial__grid-wrap { padding: var(--hc-space-2) 0 var(--hc-space-1); }
1901
+ [data-hc-ds] .hc-ui-combat-dial[data-density='compact']:not([data-presentation='printed']) .hc-ui-combat-dial__grid { gap: 6px; }
1902
+ [data-hc-ds] .hc-ui-combat-dial[data-density='compact']:not([data-presentation='printed']) .hc-ui-combat-dial__col { grid-template-rows: repeat(5, 34px); gap: 6px; }
1903
+ [data-hc-ds] .hc-ui-combat-dial[data-density='compact']:not([data-presentation='printed']) .hc-ui-combat-dial__col[data-start]::before { top: 40px; }
1904
+ [data-hc-ds] .hc-ui-combat-dial[data-density='compact']:not([data-presentation='printed']) .hc-ui-combat-dial__cell { width: 34px; height: 34px; }
1905
+ [data-hc-ds] .hc-ui-combat-dial[data-density='compact']:not([data-presentation='printed']) .hc-ui-combat-dial__cell[data-tip]::after { inset: -3px; }
1906
+ [data-hc-ds] .hc-ui-combat-dial[data-density='compact']:not([data-presentation='printed']) :is(.hc-ui-combat-dial__cell[data-kind='value'], .hc-ui-combat-dial__range) { font-size: var(--hc-font-size-sm); }
1907
+ [data-hc-ds] .hc-ui-combat-dial[data-density='compact']:not([data-presentation='printed']) .hc-ui-combat-dial__special-icon { width: 18px; height: 18px; }
1908
+
1846
1909
  /* `presentation="printed"`: the physical card's dial, at HCUnits' measures (20px
1847
1910
  cells, 23px between clicks, 24px between rows); the white legend sits on the
1848
- card's dark window. Its numbers keep HCUI's `font` shorthand, without ROND. */
1911
+ card's dark window. Its numbers use the `font` shorthand, with ROND right after it
1912
+ (`--hc-rond`, which the card sets to 0). */
1849
1913
  [data-hc-ds] .hc-ui-combat-dial[data-presentation='printed'] .hc-ui-combat-dial__grid-wrap {
1850
1914
  display: flex;
1851
1915
  flex-direction: column;
@@ -1873,6 +1937,7 @@
1873
1937
  /* Condensed, so two digits fit the 20px cell; no tracking, so they stay centered. */
1874
1938
  [data-hc-ds] .hc-ui-combat-dial[data-presentation='printed'] .hc-ui-combat-dial__cell[data-kind='value'] {
1875
1939
  font: 600 17px/1 var(--hc-font-body);
1940
+ font-variation-settings: 'ROND' var(--hc-rond);
1876
1941
  font-stretch: 50%;
1877
1942
  letter-spacing: 0;
1878
1943
  font-variant-numeric: tabular-nums;
@@ -1899,7 +1964,7 @@
1899
1964
  }
1900
1965
  [data-hc-ds] .hc-ui-combat-dial[data-presentation='printed'] .hc-ui-combat-dial__cell[data-tip]::after { inset: -2px -1.5px; }
1901
1966
  [data-hc-ds] .hc-ui-combat-dial[data-presentation='printed'] .hc-ui-combat-dial__rangebox { flex-direction: row; gap: 0; align-items: center; }
1902
- [data-hc-ds] .hc-ui-combat-dial[data-presentation='printed'] .hc-ui-combat-dial__range { margin-right: 2px; color: var(--hc-color-dial-legend-printed); font: 300 14px/1 var(--hc-font-body); }
1967
+ [data-hc-ds] .hc-ui-combat-dial[data-presentation='printed'] .hc-ui-combat-dial__range { margin-right: 2px; color: var(--hc-color-dial-legend-printed); font: 300 14px/1 var(--hc-font-body); font-variation-settings: 'ROND' var(--hc-rond); }
1903
1968
  [data-hc-ds] .hc-ui-combat-dial[data-presentation='printed'] .hc-ui-combat-dial__bolt { height: 14px; margin-right: -1px; filter: var(--hc-filter-symbol-light); }
1904
1969
  /* The legend symbols are 18px tall at their own width, at most 26px, and white. */
1905
1970
  [data-hc-ds] .hc-ui-combat-dial[data-presentation='printed'] .hc-ui-combat-dial__col[data-kind='legend'] .hc-ui-stat-glyph {
@@ -2021,6 +2086,7 @@
2021
2086
  background: var(--hc-color-card-print-black);
2022
2087
  color: var(--hc-color-card-print-white);
2023
2088
  font: inherit;
2089
+ font-variation-settings: 'ROND' var(--hc-rond);
2024
2090
  cursor: pointer;
2025
2091
  -webkit-tap-highlight-color: transparent;
2026
2092
  touch-action: manipulation;
@@ -2059,6 +2125,7 @@
2059
2125
  }
2060
2126
  [data-hc-ds] .hc-ui-physical-card__collection strong {
2061
2127
  font: 800 20px/1 var(--hc-font-display);
2128
+ font-variation-settings: 'ROND' var(--hc-rond);
2062
2129
  font-stretch: 62%;
2063
2130
  min-height: 19px;
2064
2131
  color: var(--hc-color-card-print-white);
@@ -2162,7 +2229,7 @@
2162
2229
  [data-hc-ds] .hc-ui-physical-card__bystander-tab[data-stat='attack'] { width: 43px; top: 48px; }
2163
2230
  [data-hc-ds] .hc-ui-physical-card__bystander-tab[data-stat='defense'] { width: 51px; top: 72px; }
2164
2231
  [data-hc-ds] .hc-ui-physical-card__bystander-tab[data-stat='damage'] { width: 59px; top: 96px; }
2165
- [data-hc-ds] .hc-ui-physical-card__bystander-tab[data-stat='range'] span { position: absolute; right: 58px; top: 4px; font: 300 11px/1.2 var(--hc-font-body); }
2232
+ [data-hc-ds] .hc-ui-physical-card__bystander-tab[data-stat='range'] span { position: absolute; right: 58px; top: 4px; font: 300 11px/1.2 var(--hc-font-body); font-variation-settings: 'ROND' var(--hc-rond); }
2166
2233
  [data-hc-ds] .hc-ui-physical-card__bystander-tab[data-stat='range'] img.hc-ui-physical-card__bystander-bolt { right: auto; top: 6px; width: 6px; height: 12px; }
2167
2234
  [data-hc-ds] .hc-ui-physical-card__bystander-name {
2168
2235
  position: absolute;
@@ -2174,6 +2241,7 @@
2174
2241
  width: 105px;
2175
2242
  height: 45px;
2176
2243
  font: 500 13px/1 var(--hc-font-body);
2244
+ font-variation-settings: 'ROND' var(--hc-rond);
2177
2245
  font-stretch: 80%;
2178
2246
  text-align: center;
2179
2247
  }
@@ -2201,6 +2269,7 @@
2201
2269
  justify-content: center;
2202
2270
  width: 40px;
2203
2271
  font: 500 14px/1 var(--hc-font-body);
2272
+ font-variation-settings: 'ROND' var(--hc-rond);
2204
2273
  }
2205
2274
  [data-hc-ds] .hc-ui-physical-card__bystander-extra img { width: 20px; height: 20px; filter: var(--hc-filter-symbol-light); }
2206
2275
  [data-hc-ds] .hc-ui-physical-card__bystander-extra[data-kind='passengers'] img { width: auto; height: auto; margin-right: 5px; }
@@ -2216,6 +2285,7 @@
2216
2285
  background: transparent;
2217
2286
  color: inherit;
2218
2287
  font: inherit;
2288
+ font-variation-settings: 'ROND' var(--hc-rond);
2219
2289
  cursor: pointer;
2220
2290
  -webkit-tap-highlight-color: transparent;
2221
2291
  touch-action: manipulation;
@@ -2237,6 +2307,7 @@
2237
2307
  color: var(--hc-color-card-print-black);
2238
2308
  /* The card's dial, in proportion to the 18px cell. */
2239
2309
  font: 600 16px/1 var(--hc-font-body);
2310
+ font-variation-settings: 'ROND' var(--hc-rond);
2240
2311
  font-stretch: 50%;
2241
2312
  letter-spacing: 0;
2242
2313
  font-variant-numeric: tabular-nums;
@@ -2252,8 +2323,8 @@
2252
2323
  /* A hit area larger than the 18px square. */
2253
2324
  [data-hc-ds] .hc-ui-physical-card__bystander-value[data-tip]::after { content: ''; position: absolute; inset: -3px; }
2254
2325
  [data-hc-ds] :is(.hc-ui-physical-card__ability, .hc-ui-physical-card__bystander-improved-ability, .hc-ui-physical-card__bystander-value[data-tip], .hc-ui-physical-card__improved, .hc-ui-physical-card__point):focus-visible {
2255
- outline: 2px solid var(--hc-focus-ring);
2256
- outline-offset: var(--hc-focus-ring-offset, 2px);
2326
+ outline: var(--hc-focus-ring-width) solid var(--hc-focus-ring);
2327
+ outline-offset: var(--hc-focus-ring-offset, var(--hc-focus-ring-width));
2257
2328
  }
2258
2329
 
2259
2330
  [data-hc-ds] .hc-ui-physical-card__terrain-art { display: block; max-width: min(360px, 100%); max-height: 335px; margin: 5px auto 0; }
@@ -2267,6 +2338,7 @@
2267
2338
  min-height: 22px;
2268
2339
  margin: 0 0 1px;
2269
2340
  font: 700 16px/1.1 var(--hc-font-display);
2341
+ font-variation-settings: 'ROND' var(--hc-rond);
2270
2342
  font-stretch: 65%;
2271
2343
  text-transform: uppercase;
2272
2344
  color: var(--hc-color-card-ink);
@@ -2285,7 +2357,7 @@
2285
2357
  transition: opacity var(--hc-transition-fast);
2286
2358
  }
2287
2359
  [data-hc-ds] .hc-ui-physical-card__copy:active { opacity: 0.6; }
2288
- [data-hc-ds] .hc-ui-physical-card__keyphrase { min-height: 22px; display: flex; align-items: center; font: 700 16px/1.1 var(--hc-font-display); font-stretch: 75%; color: var(--hc-color-card-ink); }
2360
+ [data-hc-ds] .hc-ui-physical-card__keyphrase { min-height: 22px; display: flex; align-items: center; font: 700 16px/1.1 var(--hc-font-display); font-variation-settings: 'ROND' var(--hc-rond); font-stretch: 75%; color: var(--hc-color-card-ink); }
2289
2361
  [data-hc-ds] .hc-ui-physical-card__relic { margin: 0; }
2290
2362
 
2291
2363
  /* Improved abilities right above the dial's window. */
@@ -2306,6 +2378,7 @@
2306
2378
  background: transparent;
2307
2379
  color: inherit;
2308
2380
  font: inherit;
2381
+ font-variation-settings: 'ROND' var(--hc-rond);
2309
2382
  cursor: pointer;
2310
2383
  -webkit-tap-highlight-color: transparent;
2311
2384
  touch-action: manipulation;
@@ -2336,6 +2409,7 @@
2336
2409
  background: transparent;
2337
2410
  color: inherit;
2338
2411
  font: 600 18px/23px var(--hc-font-display);
2412
+ font-variation-settings: 'ROND' var(--hc-rond);
2339
2413
  font-stretch: 75%;
2340
2414
  font-variant-numeric: tabular-nums;
2341
2415
  text-align: right;
@@ -2350,6 +2424,7 @@
2350
2424
  left: 15px;
2351
2425
  bottom: 10px;
2352
2426
  font: 20px var(--hc-font-mono);
2427
+ font-variation-settings: 'ROND' var(--hc-rond);
2353
2428
  color: var(--hc-color-card-print-white);
2354
2429
  text-shadow: -1px -1px 0 var(--hc-color-card-print-black), 1px -1px 0 var(--hc-color-card-print-black), -1px 1px 0 var(--hc-color-card-print-black), 1px 1px 0 var(--hc-color-card-print-black);
2355
2430
  }
@@ -2368,9 +2443,9 @@
2368
2443
  color: var(--hc-color-card-print-black);
2369
2444
  text-align: center;
2370
2445
  }
2371
- [data-hc-ds] .hc-ui-physical-card__terrain-dial span { align-self: end; font: 700 24px/1 var(--hc-font-display); }
2446
+ [data-hc-ds] .hc-ui-physical-card__terrain-dial span { align-self: end; font: 700 24px/1 var(--hc-font-display); font-variation-settings: 'ROND' var(--hc-rond); }
2372
2447
  [data-hc-ds] .hc-ui-physical-card__terrain-dial img { height: 22px; vertical-align: middle; }
2373
- [data-hc-ds] .hc-ui-physical-card__terrain-dial b { font: 700 24px/30px var(--hc-font-display); font-stretch: 75%; letter-spacing: -1px; }
2448
+ [data-hc-ds] .hc-ui-physical-card__terrain-dial b { font: 700 24px/30px var(--hc-font-display); font-variation-settings: 'ROND' var(--hc-rond); font-stretch: 75%; letter-spacing: -1px; }
2374
2449
 
2375
2450
  [data-hc-ds] .hc-ui-physical-card__back-bar {
2376
2451
  position: absolute;
@@ -2446,7 +2521,9 @@
2446
2521
  }
2447
2522
 
2448
2523
  /* PhysicalCardFocusView — HCUI `.card-focus`. The blurred background was asked for
2449
- by HCUI and applies only here. */
2524
+ by HCUI and applies only here: the view has no panel of its own, so the dimmed,
2525
+ translucent backdrop is the surface the card floats on (the exception to "no blur
2526
+ behind solid surfaces"). */
2450
2527
  [data-hc-ds] .hc-ui-card-focus {
2451
2528
  position: fixed;
2452
2529
  inset: 0;
@@ -2533,7 +2610,7 @@
2533
2610
  background-color: var(--hc-color-map-board);
2534
2611
  cursor: crosshair;
2535
2612
  }
2536
- [data-hc-ds] .hc-ui-map-board:focus-visible { outline: 2px solid var(--hc-color-outline); outline-offset: 4px; }
2613
+ [data-hc-ds] .hc-ui-map-board:focus-visible { outline: var(--hc-focus-ring-width) solid var(--hc-focus-ring); outline-offset: var(--hc-focus-ring-offset, var(--hc-focus-ring-width)); }
2537
2614
  [data-hc-ds] .hc-ui-map-board canvas {
2538
2615
  display: block;
2539
2616
  width: 100%;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ntmats/hc-ui",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "type": "module",
5
5
  "description": "Shared HCUI/Arena React presentation primitives.",
6
6
  "license": "UNLICENSED",