@inkra/react 0.8.0 → 0.9.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.
Files changed (48) hide show
  1. package/README.md +89 -0
  2. package/dist/PencilIcon.d.ts +14 -1
  3. package/dist/PencilIcon.js +88 -52
  4. package/dist/guide/index.d.ts +77 -0
  5. package/dist/guide/index.js +379 -0
  6. package/dist/i18n/catalog.d.ts +1 -1
  7. package/dist/i18n/catalog.js +6 -0
  8. package/dist/image-viewer/index.d.ts +2 -0
  9. package/dist/image-viewer/index.js +28 -28
  10. package/dist/index.d.ts +4 -0
  11. package/dist/index.js +4 -0
  12. package/dist/infinite-scroll/gesture.d.ts +19 -0
  13. package/dist/infinite-scroll/gesture.js +218 -0
  14. package/dist/infinite-scroll/index.d.ts +55 -0
  15. package/dist/infinite-scroll/index.js +543 -0
  16. package/dist/infinite-scroll/model.d.ts +33 -0
  17. package/dist/infinite-scroll/model.js +168 -0
  18. package/dist/internal/iconFill.d.ts +16 -0
  19. package/dist/internal/iconFill.js +275 -0
  20. package/dist/inventory-grid/index.js +13 -3
  21. package/dist/inventory-grid/outline.d.ts +9 -0
  22. package/dist/inventory-grid/outline.js +54 -0
  23. package/dist/loading/index.d.ts +58 -0
  24. package/dist/loading/index.js +188 -0
  25. package/dist/loading/locales.d.ts +15 -0
  26. package/dist/loading/locales.js +34 -0
  27. package/dist/loading/model.d.ts +6 -0
  28. package/dist/loading/model.js +29 -0
  29. package/dist/masonry/index.d.ts +25 -0
  30. package/dist/masonry/index.js +227 -0
  31. package/dist/masonry/layout.d.ts +35 -0
  32. package/dist/masonry/layout.js +67 -0
  33. package/dist/number-ticker/RollingValue.d.ts +6 -0
  34. package/dist/number-ticker/RollingValue.js +10 -0
  35. package/dist/number-ticker/index.d.ts +4 -0
  36. package/dist/number-ticker/index.js +55 -7
  37. package/dist/number-ticker/rolling.d.ts +35 -0
  38. package/dist/number-ticker/rolling.js +87 -0
  39. package/dist/styles/guide.css +202 -0
  40. package/dist/styles/image-viewer.css +20 -0
  41. package/dist/styles/infinite-scroll.css +171 -0
  42. package/dist/styles/inventory-grid.css +20 -8
  43. package/dist/styles/loading.css +348 -0
  44. package/dist/styles/masonry.css +68 -0
  45. package/dist/styles/number-ticker.css +46 -0
  46. package/dist/styles.css +879 -8
  47. package/dist/toast/manager.d.ts +4 -4
  48. package/package.json +26 -1
package/dist/styles.css CHANGED
@@ -2648,6 +2648,799 @@
2648
2648
  .inkra-tabs__overflow-icon > [data-pencil-icon-ready] + svg { display: block; }
2649
2649
  }
2650
2650
 
2651
+ .inkra-guide__spotlight,
2652
+ .inkra-guide__backdrop {
2653
+ inset: 0;
2654
+ pointer-events: none;
2655
+ position: fixed;
2656
+ z-index: calc(var(--inkra-z-modal, 30) + var(--inkra-floating-layer-offset, 0));
2657
+ }
2658
+
2659
+ .inkra-guide__backdrop {
2660
+ background: var(--inkra-overlay);
2661
+ }
2662
+
2663
+ .inkra-guide__spotlight {
2664
+ box-shadow: 0 0 0 100vmax var(--inkra-overlay);
2665
+ overflow: visible;
2666
+ }
2667
+
2668
+ .inkra-guide__spotlight > .inkra-pencil-surface__ink,
2669
+ .inkra-guide__spotlight > .inkra-pencil-surface__border {
2670
+ border-radius: var(--inkra-guide-highlight-radius, 8px);
2671
+ }
2672
+
2673
+ .inkra-guide__content {
2674
+ max-height: min(70dvh, var(--radix-popover-content-available-height, 70dvh));
2675
+ max-width: min(24rem, calc(100dvw - var(--inkra-space-6)));
2676
+ outline: 0;
2677
+ transform-origin: var(--radix-popover-content-transform-origin);
2678
+ width: min(22rem, calc(100dvw - var(--inkra-space-6)));
2679
+ z-index: calc(var(--inkra-z-modal, 30) + var(--inkra-floating-layer-offset, 0) + 1);
2680
+ }
2681
+
2682
+ .inkra-guide__content:focus-visible {
2683
+ outline: var(--inkra-focus-width) solid var(--inkra-focus);
2684
+ outline-offset: var(--inkra-focus-offset);
2685
+ }
2686
+
2687
+ .inkra-guide__skip-layer {
2688
+ inset: 0;
2689
+ pointer-events: none;
2690
+ position: fixed;
2691
+ z-index: calc(var(--inkra-z-modal, 30) + var(--inkra-floating-layer-offset, 0) + 2);
2692
+ }
2693
+
2694
+ .inkra-guide__skip {
2695
+ color: var(--inkra-ink-muted);
2696
+ opacity: .72;
2697
+ pointer-events: auto;
2698
+ position: absolute;
2699
+ }
2700
+
2701
+ .inkra-guide__skip:is(:hover, :focus-visible) {
2702
+ color: var(--inkra-ink);
2703
+ opacity: 1;
2704
+ }
2705
+
2706
+ .inkra-guide__skip[data-placement^="top"] {
2707
+ inset-block-start: max(var(--inkra-space-4), env(safe-area-inset-top));
2708
+ }
2709
+
2710
+ .inkra-guide__skip[data-placement^="bottom"] {
2711
+ inset-block-end: max(var(--inkra-space-4), env(safe-area-inset-bottom));
2712
+ }
2713
+
2714
+ .inkra-guide__skip[data-placement$="start"] {
2715
+ inset-inline-start: max(var(--inkra-space-4), env(safe-area-inset-left));
2716
+ }
2717
+
2718
+ .inkra-guide__skip[data-placement$="end"] {
2719
+ inset-inline-end: max(var(--inkra-space-4), env(safe-area-inset-right));
2720
+ }
2721
+
2722
+ .inkra-guide__surface {
2723
+ color: var(--inkra-ink);
2724
+ display: block;
2725
+ max-height: inherit;
2726
+ width: 100%;
2727
+ }
2728
+
2729
+ .inkra-guide__panel {
2730
+ box-sizing: border-box;
2731
+ display: grid;
2732
+ gap: var(--inkra-space-4);
2733
+ max-height: inherit;
2734
+ overflow: auto;
2735
+ overflow-wrap: anywhere;
2736
+ overscroll-behavior: contain;
2737
+ padding: var(--inkra-space-5);
2738
+ }
2739
+
2740
+ .inkra-guide__header,
2741
+ .inkra-guide__footer,
2742
+ .inkra-guide__navigation {
2743
+ align-items: center;
2744
+ display: flex;
2745
+ gap: var(--inkra-space-2);
2746
+ }
2747
+
2748
+ .inkra-guide__header {
2749
+ align-items: flex-start;
2750
+ }
2751
+
2752
+ .inkra-guide__heading {
2753
+ display: grid;
2754
+ flex: 1;
2755
+ gap: var(--inkra-space-1);
2756
+ min-width: 0;
2757
+ }
2758
+
2759
+ .inkra-guide__progress {
2760
+ color: var(--inkra-ink-subtle);
2761
+ font-family: var(--inkra-font-body);
2762
+ font-size: var(--inkra-text-sm);
2763
+ line-height: var(--inkra-line-ui);
2764
+ }
2765
+
2766
+ .inkra-guide__title {
2767
+ font-family: var(--inkra-font-display);
2768
+ font-size: var(--inkra-text-xl);
2769
+ font-weight: var(--inkra-weight-regular);
2770
+ line-height: var(--inkra-line-ui);
2771
+ margin: 0;
2772
+ }
2773
+
2774
+ .inkra-guide__description {
2775
+ color: var(--inkra-ink-muted);
2776
+ font-family: var(--inkra-font-body);
2777
+ font-size: var(--inkra-text-md);
2778
+ line-height: var(--inkra-line-body);
2779
+ }
2780
+
2781
+ .inkra-guide__close {
2782
+ flex: none;
2783
+ }
2784
+
2785
+ .inkra-guide__footer {
2786
+ flex-wrap: wrap;
2787
+ justify-content: space-between;
2788
+ }
2789
+
2790
+ .inkra-guide__footer > :empty {
2791
+ display: none;
2792
+ }
2793
+
2794
+ .inkra-guide__navigation {
2795
+ flex-wrap: wrap;
2796
+ justify-content: flex-end;
2797
+ margin-inline-start: auto;
2798
+ }
2799
+
2800
+ .inkra-guide__footer .inkra-button {
2801
+ max-width: 100%;
2802
+ }
2803
+
2804
+ @media (max-width: 30rem) {
2805
+ .inkra-guide__content {
2806
+ max-height: calc(100dvh - var(--inkra-space-4));
2807
+ max-width: calc(100dvw - var(--inkra-space-4));
2808
+ width: calc(100dvw - var(--inkra-space-4));
2809
+ }
2810
+
2811
+ .inkra-guide__panel {
2812
+ padding: var(--inkra-space-4);
2813
+ }
2814
+
2815
+ .inkra-guide__footer,
2816
+ .inkra-guide__navigation {
2817
+ width: 100%;
2818
+ }
2819
+
2820
+ .inkra-guide__footer > .inkra-button,
2821
+ .inkra-guide__navigation > .inkra-button {
2822
+ flex: 1 1 auto;
2823
+ }
2824
+ }
2825
+
2826
+ @media (prefers-reduced-motion: reduce) {
2827
+ .inkra-guide__content {
2828
+ animation: none !important;
2829
+ }
2830
+ }
2831
+
2832
+ @media (forced-colors: active) {
2833
+ .inkra-guide__backdrop {
2834
+ background: CanvasText;
2835
+ opacity: 0.25;
2836
+ }
2837
+
2838
+ .inkra-guide__spotlight {
2839
+ box-shadow: 0 0 0 100vmax color-mix(in srgb, CanvasText 25%, transparent);
2840
+ outline: 2px solid Highlight;
2841
+ }
2842
+
2843
+ .inkra-guide__surface {
2844
+ background: Canvas;
2845
+ border: 1px solid CanvasText;
2846
+ }
2847
+
2848
+ .inkra-guide__skip {
2849
+ color: ButtonText;
2850
+ opacity: 1;
2851
+ }
2852
+ }
2853
+
2854
+ .inkra-loading {
2855
+ box-sizing: border-box;
2856
+ color: var(--inkra-ink);
2857
+ font-family: var(--inkra-font-body);
2858
+ min-inline-size: 0;
2859
+ position: relative;
2860
+ }
2861
+
2862
+ .inkra-loading[data-mode="inline"] {
2863
+ align-items: center;
2864
+ display: inline-flex;
2865
+ inline-size: auto;
2866
+ max-inline-size: 100%;
2867
+ }
2868
+
2869
+ .inkra-loading[data-mode="region"] {
2870
+ column-gap: var(--inkra-space-2);
2871
+ display: grid;
2872
+ grid-template-columns: minmax(0, 1fr) minmax(0, 28rem) minmax(0, 1fr);
2873
+ grid-template-rows: auto minmax(0, 1fr) auto;
2874
+ inline-size: 100%;
2875
+ min-block-size: 12rem;
2876
+ overflow: hidden;
2877
+ }
2878
+
2879
+ .inkra-loading[data-mode="fullscreen"] {
2880
+ column-gap: var(--inkra-space-2);
2881
+ display: grid;
2882
+ grid-template-columns: minmax(0, 1fr) minmax(0, 28rem) minmax(0, 1fr);
2883
+ grid-template-rows: auto minmax(0, 1fr) auto;
2884
+ inset: 0;
2885
+ min-block-size: 100dvh;
2886
+ overflow: auto;
2887
+ overscroll-behavior: contain;
2888
+ padding: max(var(--inkra-space-4), env(safe-area-inset-top)) max(var(--inkra-space-4), env(safe-area-inset-right)) max(var(--inkra-space-4), env(safe-area-inset-bottom)) max(var(--inkra-space-4), env(safe-area-inset-left));
2889
+ position: fixed;
2890
+ z-index: var(--inkra-z-modal, 30);
2891
+ }
2892
+
2893
+ .inkra-loading:is([data-mode="region"], [data-mode="fullscreen"]):has(.inkra-loading__slot[data-slot="center"]) {
2894
+ grid-template-rows: auto auto minmax(0, 1fr) auto;
2895
+ }
2896
+
2897
+ .inkra-loading[data-mode="fullscreen"]:not([data-blocking]) { pointer-events: none; }
2898
+ .inkra-loading[data-mode="fullscreen"]:not([data-blocking]) :is(.inkra-loading__actions, .inkra-loading__tip-controls, .inkra-loading__slot, .inkra-loading__content-layer) { pointer-events: auto; }
2899
+
2900
+ .inkra-loading__theme-anchor {
2901
+ block-size: 0;
2902
+ inline-size: 0;
2903
+ inset: 0 auto auto 0;
2904
+ pointer-events: none;
2905
+ position: fixed;
2906
+ }
2907
+
2908
+ .inkra-loading__sr-status {
2909
+ block-size: 1px;
2910
+ clip-path: inset(50%);
2911
+ inline-size: 1px;
2912
+ overflow: hidden;
2913
+ position: absolute;
2914
+ white-space: nowrap;
2915
+ }
2916
+
2917
+ .inkra-loading__background,
2918
+ .inkra-loading__veil {
2919
+ inset: 0;
2920
+ pointer-events: none;
2921
+ position: absolute;
2922
+ }
2923
+
2924
+ .inkra-loading[data-mode="fullscreen"] > :is(.inkra-loading__background, .inkra-loading__veil) {
2925
+ position: fixed;
2926
+ }
2927
+
2928
+ .inkra-loading__background { overflow: hidden; }
2929
+ .inkra-loading__background > :is(img, video, canvas, picture),
2930
+ .inkra-loading__background > picture > img {
2931
+ block-size: 100%;
2932
+ inline-size: 100%;
2933
+ object-fit: cover;
2934
+ }
2935
+
2936
+ .inkra-loading__veil {
2937
+ background: color-mix(in srgb, var(--inkra-paper) 86%, transparent);
2938
+ }
2939
+
2940
+ .inkra-loading[data-mode="inline"] .inkra-loading__background,
2941
+ .inkra-loading[data-mode="inline"] .inkra-loading__veil { display: none; }
2942
+
2943
+ .inkra-loading__layout {
2944
+ align-items: center;
2945
+ display: grid;
2946
+ grid-column: 1 / -1;
2947
+ grid-row: 2;
2948
+ inline-size: 100%;
2949
+ justify-items: center;
2950
+ min-block-size: 0;
2951
+ min-inline-size: 0;
2952
+ position: relative;
2953
+ z-index: 1;
2954
+ }
2955
+
2956
+ .inkra-loading:is([data-mode="region"], [data-mode="fullscreen"]):has(.inkra-loading__slot[data-slot="center"]) .inkra-loading__layout {
2957
+ grid-row: 3;
2958
+ }
2959
+
2960
+ .inkra-loading__main {
2961
+ align-items: center;
2962
+ display: grid;
2963
+ gap: var(--inkra-space-4);
2964
+ inline-size: min(100%, 34rem);
2965
+ justify-items: center;
2966
+ min-inline-size: 0;
2967
+ padding: var(--inkra-space-4);
2968
+ text-align: center;
2969
+ }
2970
+
2971
+ .inkra-loading[data-mode="inline"] .inkra-loading__main {
2972
+ align-items: center;
2973
+ display: inline-flex;
2974
+ gap: var(--inkra-space-2);
2975
+ inline-size: auto;
2976
+ justify-items: initial;
2977
+ padding: 0;
2978
+ text-align: start;
2979
+ }
2980
+
2981
+ .inkra-loading[data-mode="inline"] .inkra-loading__copy { gap: 0; }
2982
+ .inkra-loading[data-mode="inline"] .inkra-loading__description,
2983
+ .inkra-loading[data-mode="inline"] .inkra-loading__tips,
2984
+ .inkra-loading[data-mode="inline"] .inkra-loading__stages { display: none; }
2985
+ .inkra-loading[data-mode="inline"] .inkra-loading__progress { inline-size: min(14rem, 45vw); }
2986
+ .inkra-loading[data-mode="inline"] .inkra-progress[data-shape="circular"] { inline-size: 32px; }
2987
+ .inkra-loading[data-mode="inline"] .inkra-progress__ring { --inkra-progress-diameter: 32px !important; }
2988
+
2989
+ .inkra-loading__logo {
2990
+ align-items: center;
2991
+ display: flex;
2992
+ justify-content: center;
2993
+ max-inline-size: 100%;
2994
+ }
2995
+
2996
+ .inkra-loading__logo > :is(img, svg) { block-size: auto; max-block-size: 7rem; max-inline-size: min(16rem, 100%); }
2997
+ .inkra-loading__copy { display: grid; gap: var(--inkra-space-2); max-inline-size: 100%; }
2998
+ .inkra-loading__title { font-size: var(--inkra-text-2xl); line-height: var(--inkra-line-tight); overflow-wrap: anywhere; }
2999
+ .inkra-loading__description { color: var(--inkra-ink-muted); font-size: var(--inkra-text-md); line-height: var(--inkra-line-body); overflow-wrap: anywhere; }
3000
+ .inkra-loading[data-mode="inline"] .inkra-loading__title { font-size: var(--inkra-text-md); line-height: var(--inkra-line-ui); }
3001
+
3002
+ .inkra-loading__progress { inline-size: min(100%, 28rem); }
3003
+ .inkra-loading__animation-progress {
3004
+ display: grid;
3005
+ gap: var(--inkra-space-2);
3006
+ inline-size: min(100%, 28rem);
3007
+ justify-items: center;
3008
+ }
3009
+ .inkra-loading[data-mode="inline"] .inkra-loading__animation-progress {
3010
+ align-items: center;
3011
+ display: inline-flex;
3012
+ inline-size: auto;
3013
+ }
3014
+ .inkra-loading__animation-label {
3015
+ line-height: var(--inkra-line-ui);
3016
+ overflow-wrap: anywhere;
3017
+ }
3018
+ .inkra-loading__animation {
3019
+ block-size: 48px;
3020
+ color: var(--inkra-accent-strong);
3021
+ flex: 0 0 auto;
3022
+ inline-size: 48px;
3023
+ position: relative;
3024
+ }
3025
+ .inkra-loading[data-mode="inline"] .inkra-loading__animation {
3026
+ block-size: 32px;
3027
+ inline-size: 32px;
3028
+ }
3029
+ .inkra-loading__animation-visual {
3030
+ block-size: 100%;
3031
+ display: block;
3032
+ inline-size: 100%;
3033
+ inset: 0;
3034
+ position: absolute;
3035
+ }
3036
+ .inkra-loading__animation-mark { position: absolute; }
3037
+
3038
+ .inkra-loading[data-animation="orbit"] .inkra-loading__animation {
3039
+ animation: inkra-loading-orbit 1100ms linear infinite;
3040
+ }
3041
+ .inkra-loading[data-animation="orbit"] .inkra-loading__animation-mark {
3042
+ block-size: 20.8333%;
3043
+ inline-size: 20.8333%;
3044
+ inset-block-start: 39.5833%;
3045
+ inset-inline-start: 39.5833%;
3046
+ transform: rotate(0deg) translateY(-175%);
3047
+ }
3048
+ .inkra-loading[data-animation="orbit"] .inkra-loading__animation-mark:nth-child(2) {
3049
+ opacity: .68;
3050
+ transform: rotate(120deg) translateY(-175%);
3051
+ }
3052
+ .inkra-loading[data-animation="orbit"] .inkra-loading__animation-mark:nth-child(3) {
3053
+ opacity: .4;
3054
+ transform: rotate(240deg) translateY(-175%);
3055
+ }
3056
+
3057
+ .inkra-loading[data-animation="dots"] .inkra-loading__animation {
3058
+ display: block;
3059
+ }
3060
+ .inkra-loading[data-animation="dots"] .inkra-loading__animation-mark {
3061
+ animation: inkra-loading-dot 900ms var(--inkra-ease) infinite;
3062
+ block-size: 20.8333%;
3063
+ inline-size: 20.8333%;
3064
+ inset-block-start: 39.5833%;
3065
+ inset-inline-start: 8.3333%;
3066
+ }
3067
+ .inkra-loading[data-animation="dots"] .inkra-loading__animation-mark:nth-child(2) { animation-delay: 120ms; inset-inline-start: 39.5833%; }
3068
+ .inkra-loading[data-animation="dots"] .inkra-loading__animation-mark:nth-child(3) { animation-delay: 240ms; inset-inline-start: 70.8333%; }
3069
+
3070
+ .inkra-loading[data-animation="pulse"] .inkra-loading__animation-mark {
3071
+ animation: inkra-loading-pulse 1500ms var(--inkra-ease) infinite;
3072
+ inset: 12.5%;
3073
+ }
3074
+ .inkra-loading[data-animation="pulse"] .inkra-loading__animation-mark:nth-child(2) { animation-delay: 300ms; }
3075
+ .inkra-loading[data-animation="pulse"] .inkra-loading__animation-mark:nth-child(3) { animation-delay: 600ms; }
3076
+
3077
+ .inkra-loading[data-animation="trail"] .inkra-loading__animation-mark {
3078
+ animation: inkra-loading-trail 1050ms var(--inkra-ease) infinite;
3079
+ block-size: 12.5%;
3080
+ inline-size: 58.3333%;
3081
+ inset-block-start: 25%;
3082
+ inset-inline-start: 20.8333%;
3083
+ transform-origin: center;
3084
+ }
3085
+ .inkra-loading[data-animation="trail"] .inkra-loading__animation-mark:nth-child(2) {
3086
+ animation-delay: 140ms;
3087
+ inset-block-start: 43.75%;
3088
+ }
3089
+ .inkra-loading[data-animation="trail"] .inkra-loading__animation-mark:nth-child(3) {
3090
+ animation-delay: 280ms;
3091
+ inset-block-start: 62.5%;
3092
+ }
3093
+
3094
+ .inkra-loading__stages { display: grid; gap: var(--inkra-space-2); inline-size: min(100%, 28rem); text-align: start; }
3095
+ .inkra-loading__stage { align-items: start; display: grid; gap: var(--inkra-space-3); grid-template-columns: 36px minmax(0, 1fr); min-inline-size: 0; }
3096
+ .inkra-loading__stage-marker { align-items: center; block-size: 32px; display: flex; inline-size: 32px; justify-content: center; }
3097
+ .inkra-loading__stage[data-state="pending"] { color: var(--inkra-ink-muted); }
3098
+ .inkra-loading__stage[data-state="complete"] { color: var(--inkra-success-foreground); }
3099
+ .inkra-loading__stage[data-state="error"] { color: var(--inkra-danger-foreground); }
3100
+ .inkra-loading__stage-copy { display: grid; gap: var(--inkra-space-1); min-inline-size: 0; overflow-wrap: anywhere; }
3101
+ .inkra-loading__stage-description { color: var(--inkra-ink-muted); font-size: var(--inkra-text-sm); line-height: var(--inkra-line-body); }
3102
+
3103
+ .inkra-loading__tips { display: grid; gap: var(--inkra-space-2); inline-size: min(100%, 32rem); min-block-size: 2.5rem; place-items: center; }
3104
+ .inkra-loading__tip { line-height: var(--inkra-line-body); max-inline-size: 100%; overflow-wrap: anywhere; }
3105
+ .inkra-loading__tips[data-transition="fade"] .inkra-loading__tip { animation: inkra-loading-tip-fade var(--inkra-motion-normal) var(--inkra-ease) both; }
3106
+ .inkra-loading__tips[data-transition="slide"] .inkra-loading__tip { animation: inkra-loading-tip-slide var(--inkra-motion-normal) var(--inkra-ease) both; }
3107
+ .inkra-loading__tip-controls { align-items: center; display: flex; gap: var(--inkra-space-2); }
3108
+ .inkra-loading__tip-position { color: var(--inkra-ink-muted); font-variant-numeric: tabular-nums; min-inline-size: 4ch; }
3109
+
3110
+ .inkra-loading__content-layer { inline-size: 100%; min-inline-size: 0; }
3111
+ .inkra-loading__actions { align-items: center; display: flex; flex-wrap: wrap; gap: var(--inkra-space-2); justify-content: center; }
3112
+
3113
+ .inkra-loading__slot {
3114
+ max-block-size: calc(50dvh - var(--inkra-space-8));
3115
+ max-inline-size: 100%;
3116
+ min-inline-size: 0;
3117
+ overflow: auto;
3118
+ overflow-wrap: anywhere;
3119
+ pointer-events: auto;
3120
+ position: relative;
3121
+ z-index: 2;
3122
+ }
3123
+ .inkra-loading__slot[data-slot="top-start"] { align-self: start; grid-column: 1; grid-row: 1; justify-self: start; margin-block-end: var(--inkra-space-4); }
3124
+ .inkra-loading__slot[data-slot="top-end"] { align-self: start; grid-column: 3; grid-row: 1; justify-self: end; margin-block-end: var(--inkra-space-4); }
3125
+ .inkra-loading__slot[data-slot="center"] { align-self: center; grid-column: 2; grid-row: 2; justify-self: center; margin-block-end: var(--inkra-space-4); }
3126
+ .inkra-loading__slot[data-slot="bottom-start"] { align-self: end; grid-column: 1; grid-row: 3; justify-self: start; margin-block-start: var(--inkra-space-4); }
3127
+ .inkra-loading__slot[data-slot="bottom-center"] { align-self: end; grid-column: 2; grid-row: 3; justify-self: center; margin-block-start: var(--inkra-space-4); }
3128
+ .inkra-loading__slot[data-slot="bottom-end"] { align-self: end; grid-column: 3; grid-row: 3; justify-self: end; margin-block-start: var(--inkra-space-4); }
3129
+
3130
+ .inkra-loading:is([data-mode="region"], [data-mode="fullscreen"]):has(.inkra-loading__slot[data-slot="center"]) .inkra-loading__slot[data-slot^="bottom-"] {
3131
+ grid-row: 4;
3132
+ }
3133
+
3134
+ .inkra-loading[data-mode="region"] .inkra-loading__slot[data-slot$="start"] { margin-inline-start: var(--inkra-space-4); }
3135
+ .inkra-loading[data-mode="region"] .inkra-loading__slot[data-slot$="end"] { margin-inline-end: var(--inkra-space-4); }
3136
+
3137
+ .inkra-loading[data-preset="scene-bottom"] .inkra-loading__layout { align-items: end; }
3138
+ .inkra-loading[data-preset="scene-bottom"] .inkra-loading__main { padding-block-end: max(var(--inkra-space-8), 10dvh); }
3139
+ .inkra-loading[data-preset="intel"] .inkra-loading__main { justify-items: start; margin-inline-start: 0; text-align: start; }
3140
+ .inkra-loading[data-preset="staged"] .inkra-loading__main { align-items: start; grid-template-columns: minmax(0, .8fr) minmax(14rem, 1.2fr); text-align: start; }
3141
+ .inkra-loading[data-preset="staged"] .inkra-loading__copy,
3142
+ .inkra-loading[data-preset="staged"] .inkra-loading__logo { justify-self: start; }
3143
+ .inkra-loading[data-preset="staged"] .inkra-loading__stages { grid-column: 2; grid-row: 1 / span 5; }
3144
+ .inkra-loading[data-preset="edge"] { align-items: start; min-block-size: auto; padding: 0; }
3145
+ .inkra-loading[data-preset="edge"] .inkra-loading__veil,
3146
+ .inkra-loading[data-preset="edge"] .inkra-loading__background { display: none; }
3147
+ .inkra-loading[data-preset="edge"] .inkra-loading__layout { justify-items: stretch; }
3148
+ .inkra-loading[data-preset="edge"] .inkra-loading__main { align-items: center; display: flex; inline-size: 100%; justify-content: space-between; padding: var(--inkra-space-2) var(--inkra-space-4); text-align: start; }
3149
+ .inkra-loading__edge-line { block-size: 8px; inset-block-end: 0; inset-inline: 0; pointer-events: none; position: absolute; }
3150
+
3151
+ .inkra-loading__skeleton { display: grid; gap: var(--inkra-space-3); inline-size: min(100%, 36rem); }
3152
+ .inkra-loading__skeleton-grid { display: grid; gap: var(--inkra-space-3); grid-template-columns: repeat(3, minmax(0, 1fr)); }
3153
+
3154
+ @keyframes inkra-loading-tip-fade { from { opacity: 0; } to { opacity: 1; } }
3155
+ @keyframes inkra-loading-tip-slide { from { opacity: 0; transform: translateY(var(--inkra-space-2)); } to { opacity: 1; transform: translateY(0); } }
3156
+ @keyframes inkra-loading-orbit { to { transform: rotate(360deg); } }
3157
+ @keyframes inkra-loading-dot { 0%, 70%, 100% { opacity: .36; transform: translateY(0); } 35% { opacity: 1; transform: translateY(-45%); } }
3158
+ @keyframes inkra-loading-pulse { 0% { opacity: .9; transform: scale(.35); } 75%, 100% { opacity: 0; transform: scale(1); } }
3159
+ @keyframes inkra-loading-trail { 0%, 100% { opacity: .28; transform: scaleX(.45); } 50% { opacity: 1; transform: scaleX(1); } }
3160
+
3161
+ @media (max-width: 40rem), (max-height: 32rem) {
3162
+ .inkra-loading:is([data-mode="region"], [data-mode="fullscreen"]) {
3163
+ display: flex;
3164
+ flex-direction: column;
3165
+ gap: var(--inkra-space-2);
3166
+ }
3167
+ .inkra-loading[data-mode="fullscreen"] { padding: max(var(--inkra-space-2), env(safe-area-inset-top)) max(var(--inkra-space-2), env(safe-area-inset-right)) max(var(--inkra-space-2), env(safe-area-inset-bottom)) max(var(--inkra-space-2), env(safe-area-inset-left)); }
3168
+ .inkra-loading:is([data-mode="region"], [data-mode="fullscreen"]) .inkra-loading__layout { flex: 1 0 auto; order: 4; }
3169
+ .inkra-loading__main { gap: var(--inkra-space-3); padding: var(--inkra-space-3); }
3170
+ .inkra-loading__title { font-size: var(--inkra-text-xl); }
3171
+ .inkra-loading[data-preset="staged"] .inkra-loading__main { grid-template-columns: minmax(0, 1fr); }
3172
+ .inkra-loading[data-preset="staged"] .inkra-loading__stages { grid-column: auto; grid-row: auto; }
3173
+ .inkra-loading__slot { flex: none; margin-block: 0 !important; max-block-size: none; max-inline-size: min(100%, 28rem); overflow: visible; }
3174
+ .inkra-loading__slot[data-slot="top-start"] { align-self: start; order: 1; }
3175
+ .inkra-loading__slot[data-slot="top-end"] { align-self: end; order: 2; }
3176
+ .inkra-loading__slot[data-slot="center"] { align-self: center; order: 3; }
3177
+ .inkra-loading__slot[data-slot="bottom-start"] { align-self: start; order: 5; }
3178
+ .inkra-loading__slot[data-slot="bottom-center"] { align-self: center; order: 6; }
3179
+ .inkra-loading__slot[data-slot="bottom-end"] { align-self: end; order: 7; }
3180
+ .inkra-loading__skeleton-grid { grid-template-columns: 1fr; }
3181
+ }
3182
+
3183
+ @media (prefers-reduced-motion: reduce) {
3184
+ .inkra-loading__tip,
3185
+ .inkra-loading__animation,
3186
+ .inkra-loading__animation * { animation: none !important; }
3187
+ }
3188
+
3189
+ @media (forced-colors: active) {
3190
+ .inkra-loading__veil { background: Canvas; opacity: .92; }
3191
+ .inkra-loading[data-blocking] { border: 1px solid CanvasText; }
3192
+ .inkra-loading__animation { color: CanvasText; }
3193
+ }
3194
+
3195
+ @media print {
3196
+ .inkra-loading[data-mode="fullscreen"] { min-block-size: auto; position: static; }
3197
+ .inkra-loading__background, .inkra-loading__veil { display: none; }
3198
+ .inkra-loading__tip,
3199
+ .inkra-loading__animation,
3200
+ .inkra-loading__animation * { animation: none !important; }
3201
+ }
3202
+
3203
+ .inkra-infinite-scroll {
3204
+ --inkra-infinite-scroll-pull-distance: 0px;
3205
+ --inkra-infinite-scroll-indicator-inline-offset: 0px;
3206
+ --inkra-infinite-scroll-indicator-block-offset: 0px;
3207
+ --inkra-infinite-scroll-indicator-viewport-inline-size: 100%;
3208
+ --inkra-infinite-scroll-indicator-viewport-block-size: 100%;
3209
+ position: relative;
3210
+ display: grid;
3211
+ grid-template-rows: auto minmax(min-content, 1fr) auto;
3212
+ max-inline-size: 100%;
3213
+ min-block-size: 0;
3214
+ min-inline-size: 0;
3215
+ overflow: auto;
3216
+ overscroll-behavior: contain;
3217
+ color: var(--inkra-ink);
3218
+ }
3219
+
3220
+ .inkra-infinite-scroll__body {
3221
+ display: grid;
3222
+ grid-template-columns: auto minmax(min-content, 1fr) auto;
3223
+ grid-row: 2;
3224
+ min-block-size: 0;
3225
+ min-inline-size: 0;
3226
+ transform: translate3d(0, 0, 0);
3227
+ transition: transform var(--inkra-motion-slow) cubic-bezier(0.22, 1.45, 0.36, 1);
3228
+ }
3229
+
3230
+ .inkra-infinite-scroll[data-pull-direction] > .inkra-infinite-scroll__body {
3231
+ transition: none;
3232
+ }
3233
+
3234
+ .inkra-infinite-scroll__content {
3235
+ grid-column: 2;
3236
+ grid-row: 1;
3237
+ min-block-size: 100%;
3238
+ min-inline-size: 100%;
3239
+ }
3240
+
3241
+ .inkra-infinite-scroll[data-pull-direction="top"] > .inkra-infinite-scroll__body {
3242
+ transform: translate3d(0, var(--inkra-infinite-scroll-pull-distance), 0);
3243
+ }
3244
+ .inkra-infinite-scroll[data-pull-direction="bottom"] > .inkra-infinite-scroll__body {
3245
+ transform: translate3d(0, calc(-1 * var(--inkra-infinite-scroll-pull-distance)), 0);
3246
+ }
3247
+ .inkra-infinite-scroll[data-pull-direction="left"] > .inkra-infinite-scroll__body {
3248
+ transform: translate3d(var(--inkra-infinite-scroll-pull-distance), 0, 0);
3249
+ }
3250
+ .inkra-infinite-scroll[data-pull-direction="right"] > .inkra-infinite-scroll__body {
3251
+ transform: translate3d(calc(-1 * var(--inkra-infinite-scroll-pull-distance)), 0, 0);
3252
+ }
3253
+
3254
+ .inkra-infinite-scroll__indicator {
3255
+ position: relative;
3256
+ display: none;
3257
+ min-block-size: 0;
3258
+ min-inline-size: 0;
3259
+ z-index: 1;
3260
+ }
3261
+ .inkra-infinite-scroll__indicator[data-active] { display: flex; }
3262
+ .inkra-infinite-scroll__indicator[data-direction="top"],
3263
+ .inkra-infinite-scroll__indicator[data-direction="bottom"] {
3264
+ inline-size: 100%;
3265
+ }
3266
+ .inkra-infinite-scroll__indicator[data-visible][data-direction="top"],
3267
+ .inkra-infinite-scroll__indicator[data-visible][data-direction="bottom"] {
3268
+ min-block-size: 52px;
3269
+ }
3270
+ .inkra-infinite-scroll__indicator[data-direction="left"],
3271
+ .inkra-infinite-scroll__indicator[data-direction="right"] {
3272
+ align-self: stretch;
3273
+ grid-row: 1;
3274
+ }
3275
+ .inkra-infinite-scroll__indicator[data-visible][data-direction="left"],
3276
+ .inkra-infinite-scroll__indicator[data-visible][data-direction="right"] {
3277
+ min-inline-size: 112px;
3278
+ }
3279
+ .inkra-infinite-scroll__indicator[data-direction="top"] { grid-row: 1; }
3280
+ .inkra-infinite-scroll__indicator[data-direction="bottom"] { grid-row: 3; }
3281
+ .inkra-infinite-scroll__indicator[data-direction="left"] { grid-column: 1; }
3282
+ .inkra-infinite-scroll__indicator[data-direction="right"] { grid-column: 3; }
3283
+
3284
+ /* Pull feedback reveals inside the elastic gap, without changing scroll layout. */
3285
+ .inkra-infinite-scroll__indicator[data-pulling] {
3286
+ position: absolute;
3287
+ grid-area: auto;
3288
+ left: var(--inkra-pull-left, 0px);
3289
+ top: var(--inkra-pull-top, 0px);
3290
+ inline-size: var(--inkra-pull-width, 0px);
3291
+ block-size: var(--inkra-pull-height, 0px);
3292
+ min-inline-size: 0 !important;
3293
+ min-block-size: 0 !important;
3294
+ overflow: clip;
3295
+ pointer-events: none;
3296
+ }
3297
+ .inkra-infinite-scroll__indicator[data-pulling] .inkra-infinite-scroll__indicator-surface {
3298
+ padding: 0;
3299
+ max-inline-size: none;
3300
+ min-block-size: 0;
3301
+ }
3302
+ .inkra-infinite-scroll__indicator[data-pulling][data-direction="left"] .inkra-infinite-scroll__loading-label,
3303
+ .inkra-infinite-scroll__indicator[data-pulling][data-direction="right"] .inkra-infinite-scroll__loading-label {
3304
+ display: none;
3305
+ }
3306
+
3307
+ .inkra-infinite-scroll__indicator-surface {
3308
+ display: flex;
3309
+ align-items: center;
3310
+ justify-content: center;
3311
+ inline-size: 100%;
3312
+ min-inline-size: 0;
3313
+ padding: var(--inkra-space-1) var(--inkra-space-2);
3314
+ }
3315
+ .inkra-infinite-scroll__indicator[data-direction="left"] .inkra-infinite-scroll__indicator-surface,
3316
+ .inkra-infinite-scroll__indicator[data-direction="right"] .inkra-infinite-scroll__indicator-surface {
3317
+ min-block-size: 100%;
3318
+ max-inline-size: 144px;
3319
+ }
3320
+ .inkra-infinite-scroll__indicator[data-status="loading"][data-direction="top"] .inkra-infinite-scroll__indicator-surface {
3321
+ inline-size: var(--inkra-infinite-scroll-indicator-viewport-inline-size);
3322
+ transform: translate3d(var(--inkra-infinite-scroll-indicator-inline-offset), 0, 0);
3323
+ }
3324
+ .inkra-infinite-scroll__indicator[data-status="loading"][data-direction="bottom"] .inkra-infinite-scroll__indicator-surface {
3325
+ inline-size: var(--inkra-infinite-scroll-indicator-viewport-inline-size);
3326
+ transform: translate3d(var(--inkra-infinite-scroll-indicator-inline-offset), 0, 0);
3327
+ }
3328
+ .inkra-infinite-scroll__indicator[data-status="loading"][data-direction="left"] .inkra-infinite-scroll__indicator-surface {
3329
+ block-size: var(--inkra-infinite-scroll-indicator-viewport-block-size);
3330
+ min-block-size: 0;
3331
+ transform: translate3d(0, var(--inkra-infinite-scroll-indicator-block-offset), 0);
3332
+ }
3333
+ .inkra-infinite-scroll__indicator[data-status="loading"][data-direction="right"] .inkra-infinite-scroll__indicator-surface {
3334
+ block-size: var(--inkra-infinite-scroll-indicator-viewport-block-size);
3335
+ min-block-size: 0;
3336
+ transform: translate3d(0, var(--inkra-infinite-scroll-indicator-block-offset), 0);
3337
+ }
3338
+ .inkra-infinite-scroll__indicator-content {
3339
+ display: flex;
3340
+ align-items: center;
3341
+ justify-content: center;
3342
+ flex-wrap: wrap;
3343
+ gap: var(--inkra-space-2);
3344
+ inline-size: 100%;
3345
+ min-inline-size: 0;
3346
+ overflow-wrap: anywhere;
3347
+ text-align: center;
3348
+ }
3349
+ .inkra-infinite-scroll__indicator-content > .inkra-progress { max-inline-size: 240px; }
3350
+ .inkra-infinite-scroll__indicator[data-direction="left"] .inkra-infinite-scroll__indicator-content > .inkra-progress,
3351
+ .inkra-infinite-scroll__indicator[data-direction="right"] .inkra-infinite-scroll__indicator-content > .inkra-progress { min-inline-size: 96px; }
3352
+ .inkra-infinite-scroll__loading {
3353
+ display: flex;
3354
+ align-items: center;
3355
+ justify-content: center;
3356
+ gap: var(--inkra-space-2);
3357
+ min-inline-size: 0;
3358
+ }
3359
+ .inkra-infinite-scroll__loading > .inkra-progress { flex: 0 0 auto; }
3360
+ .inkra-infinite-scroll__loading-label { min-inline-size: 0; white-space: nowrap; }
3361
+ .inkra-infinite-scroll__indicator[data-direction="left"] .inkra-infinite-scroll__loading,
3362
+ .inkra-infinite-scroll__indicator[data-direction="right"] .inkra-infinite-scroll__loading { flex-wrap: wrap; }
3363
+ .inkra-infinite-scroll__indicator[data-direction="left"] .inkra-infinite-scroll__loading-label,
3364
+ .inkra-infinite-scroll__indicator[data-direction="right"] .inkra-infinite-scroll__loading-label { white-space: normal; }
3365
+
3366
+ @media (prefers-reduced-motion: reduce) {
3367
+ .inkra-infinite-scroll__body { transition-duration: 0ms; }
3368
+ }
3369
+
3370
+ @media print {
3371
+ .inkra-infinite-scroll { overflow: visible; }
3372
+ .inkra-infinite-scroll__body { transform: none !important; }
3373
+ }
3374
+
3375
+ .inkra-masonry {
3376
+ box-sizing: border-box;
3377
+ display: grid;
3378
+ gap: var(--inkra-masonry-row-gap, 16px) var(--inkra-masonry-column-gap, 16px);
3379
+ grid-template-columns: repeat(var(--inkra-masonry-columns, 1), minmax(0, 1fr));
3380
+ inline-size: 100%;
3381
+ max-inline-size: 100%;
3382
+ min-inline-size: 0;
3383
+ overflow: clip;
3384
+ overflow-clip-margin: 1px;
3385
+ position: relative;
3386
+ }
3387
+
3388
+ .inkra-masonry[data-mode="adaptive"] {
3389
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--inkra-masonry-min-column-width, 240px)), 1fr));
3390
+ }
3391
+
3392
+ .inkra-masonry[data-layout="ready"] {
3393
+ display: block;
3394
+ }
3395
+
3396
+ .inkra-masonry__item {
3397
+ box-sizing: border-box;
3398
+ max-inline-size: 100%;
3399
+ min-inline-size: 0;
3400
+ }
3401
+
3402
+ .inkra-masonry[data-layout="ready"] > .inkra-masonry__item {
3403
+ inset-block-start: 0;
3404
+ left: 0;
3405
+ position: absolute;
3406
+ }
3407
+
3408
+ .inkra-masonry[data-layout="ready"][data-animated] > .inkra-masonry__item {
3409
+ transition: transform var(--inkra-motion-normal, 180ms) var(--inkra-ease, ease);
3410
+ }
3411
+
3412
+ .inkra-masonry__item > * {
3413
+ max-inline-size: 100%;
3414
+ }
3415
+
3416
+ @media (prefers-reduced-motion: reduce) {
3417
+ .inkra-masonry[data-layout="ready"][data-animated] > .inkra-masonry__item {
3418
+ transition-duration: 0ms;
3419
+ }
3420
+ }
3421
+
3422
+ @media (forced-colors: active) {
3423
+ .inkra-masonry[data-layout="ready"][data-animated] > .inkra-masonry__item {
3424
+ transition-duration: 0ms;
3425
+ }
3426
+ }
3427
+
3428
+ @media print {
3429
+ .inkra-masonry,
3430
+ .inkra-masonry[data-layout="ready"] {
3431
+ block-size: auto !important;
3432
+ display: grid;
3433
+ overflow: visible;
3434
+ }
3435
+
3436
+ .inkra-masonry[data-layout="ready"] > .inkra-masonry__item {
3437
+ inline-size: auto !important;
3438
+ position: static;
3439
+ transform: none !important;
3440
+ transition: none;
3441
+ }
3442
+ }
3443
+
2651
3444
  .inkra-tooltip__content {
2652
3445
  animation: inkra-tooltip-content-in var(--inkra-motion-fast) var(--inkra-ease) both;
2653
3446
  max-height: min(50dvh, var(--radix-tooltip-content-available-height, 50dvh));
@@ -3944,6 +4737,52 @@
3944
4737
  font-family: "Trip Map Hand", "HanziPen SC", "Hannotate SC", "Kaiti SC", "STKaiti", cursive;
3945
4738
  }
3946
4739
 
4740
+ .inkra-number-ticker__reels {
4741
+ display: inline-flex;
4742
+ align-items: baseline;
4743
+ unicode-bidi: isolate;
4744
+ line-height: var(--inkra-line-ui, 1.45);
4745
+ }
4746
+
4747
+ .inkra-number-ticker__column {
4748
+ display: inline-grid;
4749
+ flex: none;
4750
+ overflow: hidden;
4751
+ vertical-align: bottom;
4752
+ }
4753
+
4754
+ .inkra-number-ticker__column-inner {
4755
+ display: grid;
4756
+ min-width: 0;
4757
+ height: 1lh;
4758
+ overflow: hidden;
4759
+ }
4760
+
4761
+ .inkra-number-ticker__face {
4762
+ grid-area: 1 / 1;
4763
+ display: flex;
4764
+ justify-content: center;
4765
+ align-items: center;
4766
+ height: 1lh;
4767
+ white-space: pre;
4768
+ }
4769
+
4770
+ .inkra-number-ticker__column[data-digit] .inkra-number-ticker__face {
4771
+ width: 1ch;
4772
+ }
4773
+
4774
+ .inkra-number-ticker__face > .inkra-pencil-text {
4775
+ flex: none;
4776
+ }
4777
+
4778
+ @media (prefers-reduced-motion: reduce), print {
4779
+ .inkra-number-ticker__column { grid-template-columns: 1fr !important; }
4780
+ .inkra-number-ticker__column[data-digit] { width: 1ch !important; }
4781
+ .inkra-number-ticker__column[data-departing] { display: none; }
4782
+ .inkra-number-ticker__face[data-face="from"] { display: none; }
4783
+ .inkra-number-ticker__face[data-face="to"] { transform: none !important; opacity: 1 !important; }
4784
+ }
4785
+
3947
4786
  .inkra-number-ticker__prefix,
3948
4787
  .inkra-number-ticker__suffix {
3949
4788
  align-items: center;
@@ -5719,6 +6558,7 @@ div.inkra-choice-grid > .inkra-radio-group {
5719
6558
  }
5720
6559
 
5721
6560
  .inkra-image-viewer__body {
6561
+ position: relative;
5722
6562
  display: grid;
5723
6563
  flex: 1 1 auto;
5724
6564
  min-block-size: var(--inkra-touch-target);
@@ -5866,6 +6706,24 @@ div.inkra-choice-grid > .inkra-radio-group {
5866
6706
  padding: var(--inkra-focus-offset);
5867
6707
  position: relative;
5868
6708
  scrollbar-gutter: auto;
6709
+ pointer-events: auto;
6710
+ }
6711
+
6712
+ .inkra-image-viewer__floating-tools {
6713
+ position: absolute;
6714
+ inset-inline: max(var(--inkra-space-3), env(safe-area-inset-left)) max(var(--inkra-space-3), env(safe-area-inset-right));
6715
+ inset-block-start: max(var(--inkra-space-3), env(safe-area-inset-top));
6716
+ display: flex;
6717
+ justify-content: center;
6718
+ padding-inline: var(--inkra-touch-target);
6719
+ pointer-events: none;
6720
+ z-index: 6;
6721
+ }
6722
+
6723
+ .inkra-image-viewer__floating-tools[data-position="bottom"] {
6724
+ inset-block-start: auto;
6725
+ inset-block-end: max(var(--inkra-space-3), env(safe-area-inset-bottom));
6726
+ padding-inline: 0;
5869
6727
  }
5870
6728
 
5871
6729
  .inkra-image-viewer__video-navigation {
@@ -5985,6 +6843,7 @@ div.inkra-choice-grid > .inkra-radio-group {
5985
6843
  @media print {
5986
6844
  .inkra-image-viewer__close-control,
5987
6845
  .inkra-image-viewer__navigation,
6846
+ .inkra-image-viewer__floating-tools,
5988
6847
  .inkra-image-viewer__bottom { display: none; }
5989
6848
  }
5990
6849
 
@@ -7012,26 +7871,38 @@ div.inkra-choice-grid > .inkra-radio-group {
7012
7871
  .inkra-inventory-grid__item, .inkra-inventory-grid__preview, .inkra-inventory-grid__cell, .inkra-inventory-grid__blocked { position: absolute; }
7013
7872
  .inkra-inventory-grid__item { outline: none; pointer-events: none; }
7014
7873
  .inkra-inventory-grid__cell { box-sizing: border-box; display: grid; place-items: center; pointer-events: auto; touch-action: none; cursor: grab; }
7015
- .inkra-inventory-grid__cell-surface { position: absolute; inset: 2px; pointer-events: none; }
7874
+ .inkra-inventory-grid__shape { position: absolute; inset: 0 auto auto 0; pointer-events: none; color: var(--inkra-border-strong); }
7875
+ .inkra-inventory-grid__shape-fill, .inkra-inventory-grid__shape-wash { position: absolute; inset: 0; pointer-events: none; }
7876
+ .inkra-inventory-grid__shape-wash { opacity: .65; --inkra-selection-pigment: var(--inkra-accent-soft); }
7877
+ .inkra-inventory-grid__shape-fill[data-pencil-fallback] { background: var(--inkra-paper); border: 0; }
7878
+ .inkra-inventory-grid__shape-fill[data-pencil-fallback] + .inkra-inventory-grid__shape-fallback { display: block; }
7879
+ .inkra-inventory-grid__shape-edge { position: absolute; }
7880
+ .inkra-inventory-grid__shape-fallback { position: absolute; inset: 0; display: none; }
7016
7881
  .inkra-inventory-grid__item-content { position: relative; z-index: 1; padding: 4px; max-width: 100%; max-height: 100%; overflow: hidden; pointer-events: none; font-size: 13px; overflow-wrap: anywhere; text-align: center; }
7017
- .inkra-inventory-grid__item[data-selected] .inkra-inventory-grid__cell-surface { color: var(--inkra-accent-strong); }
7018
- .inkra-inventory-grid__cell-focus { position: absolute; inset: 3px; pointer-events: none; opacity: 0; color: var(--inkra-focus); }
7019
- .inkra-inventory-grid__item:focus-visible .inkra-inventory-grid__cell-focus { opacity: 1; }
7882
+ .inkra-inventory-grid__item[data-selected] .inkra-inventory-grid__shape { color: var(--inkra-accent-strong); }
7883
+ .inkra-inventory-grid__item:focus-visible .inkra-inventory-grid__shape { color: var(--inkra-focus); --inkra-stroke-width: 2; }
7884
+ .inkra-inventory-grid__item[data-selected] .inkra-inventory-grid__shape-wash { opacity: 1; }
7020
7885
  .inkra-inventory-grid__item[data-dragging] { opacity: .28; }
7021
7886
  .inkra-inventory-grid__item[data-disabled] .inkra-inventory-grid__cell { cursor: default; touch-action: auto; }
7022
7887
  .inkra-inventory-grid__container[data-disabled], .inkra-inventory-grid[data-disabled] { opacity: .55; }
7023
7888
  .inkra-inventory-grid__preview { z-index: 2; pointer-events: none; color: var(--inkra-accent-strong); }
7024
7889
  .inkra-inventory-grid__preview[data-valid="false"] { color: var(--inkra-danger); }
7025
- .inkra-inventory-grid__preview[data-valid="false"] .inkra-inventory-grid__cell { outline: 2px solid var(--inkra-danger); outline-offset: -4px; }
7890
+ .inkra-inventory-grid__preview .inkra-inventory-grid__shape { color: inherit; --inkra-stroke-width: 2; }
7026
7891
  .inkra-inventory-grid__preview .inkra-inventory-grid__cell, .inkra-inventory-grid__overlay .inkra-inventory-grid__cell { pointer-events: none; }
7027
7892
  .inkra-inventory-grid__overlay { position: relative; opacity: .8; pointer-events: none; color: var(--inkra-ink); }
7028
7893
  .inkra-inventory-grid__blocked { display: grid; place-items: center; color: var(--inkra-ink-muted); pointer-events: none; }
7029
7894
  .inkra-inventory-grid__announcement { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
7030
7895
  @media (forced-colors: active) {
7031
7896
  .inkra-inventory-grid__board { border: 1px solid CanvasText; }
7032
- .inkra-inventory-grid__cell { border: 1px solid CanvasText; background: Canvas; }
7033
- .inkra-inventory-grid__item:focus-visible .inkra-inventory-grid__cell { outline: 2px solid Highlight; outline-offset: -3px; }
7034
- .inkra-inventory-grid__preview .inkra-inventory-grid__cell { border: 3px solid Highlight; }
7897
+ .inkra-inventory-grid__shape-fill { background: Canvas; }
7898
+ .inkra-inventory-grid__shape-fallback { display: block; color: CanvasText; }
7899
+ .inkra-inventory-grid__shape-edge { display: none; }
7900
+ .inkra-inventory-grid__item:focus-visible .inkra-inventory-grid__shape-fallback,
7901
+ .inkra-inventory-grid__preview .inkra-inventory-grid__shape-fallback { color: Highlight; stroke-width: 3px; }
7902
+ }
7903
+ @media print {
7904
+ .inkra-inventory-grid__shape-fallback { display: block; }
7905
+ .inkra-inventory-grid__shape-edge { display: none; }
7035
7906
  }
7036
7907
 
7037
7908
  .inkra-sparkline { position: relative; display: inline-grid; gap: var(--inkra-space-1, 4px); max-inline-size: 100%; color: var(--inkra-ink); font-size: var(--inkra-text-sm); }