@twentyfirstmedia/halo 0.5.0 → 0.7.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/README.md +1 -1
- package/dist/fonts/og/ibm-plex-mono-latin-500-normal.woff +0 -0
- package/dist/fonts/og/ibm-plex-mono-latin-600-normal.woff +0 -0
- package/dist/fonts/og/plus-jakarta-sans-latin-400-normal.woff +0 -0
- package/dist/fonts/og/plus-jakarta-sans-latin-500-normal.woff +0 -0
- package/dist/fonts/og/plus-jakarta-sans-latin-600-normal.woff +0 -0
- package/dist/fonts/og/plus-jakarta-sans-latin-700-normal.woff +0 -0
- package/dist/fonts/og/plus-jakarta-sans-latin-800-normal.woff +0 -0
- package/dist/scoped.css +2655 -93
- package/dist/styles.css +2609 -86
- package/dist/tailwind.css +5 -0
- package/dist/tokens.css +30 -0
- package/dist/tokens.json +40 -0
- package/package.json +3 -2
package/dist/styles.css
CHANGED
|
@@ -335,6 +335,11 @@
|
|
|
335
335
|
--chart-lilac: var(--lilac);
|
|
336
336
|
--chart-butter: var(--butter);
|
|
337
337
|
--chart-blush: var(--blush);
|
|
338
|
+
--ramp-1: color-mix(in oklab, var(--chart-1) 12%, var(--background));
|
|
339
|
+
--ramp-2: color-mix(in oklab, var(--chart-1) 28%, var(--background));
|
|
340
|
+
--ramp-3: color-mix(in oklab, var(--chart-1) 46%, var(--background));
|
|
341
|
+
--ramp-4: color-mix(in oklab, var(--chart-1) 66%, var(--background));
|
|
342
|
+
--ramp-5: color-mix(in oklab, var(--chart-1) 88%, var(--background));
|
|
338
343
|
--ok: #2f5d16;
|
|
339
344
|
--ok-bg: #d6efc3;
|
|
340
345
|
--info: #1f4f8a;
|
|
@@ -483,6 +488,11 @@
|
|
|
483
488
|
--chart-lilac: var(--lilac-ink);
|
|
484
489
|
--chart-butter: var(--butter-ink);
|
|
485
490
|
--chart-blush: var(--blush-ink);
|
|
491
|
+
--ramp-1: color-mix(in oklab, var(--chart-1) 12%, var(--background));
|
|
492
|
+
--ramp-2: color-mix(in oklab, var(--chart-1) 28%, var(--background));
|
|
493
|
+
--ramp-3: color-mix(in oklab, var(--chart-1) 46%, var(--background));
|
|
494
|
+
--ramp-4: color-mix(in oklab, var(--chart-1) 66%, var(--background));
|
|
495
|
+
--ramp-5: color-mix(in oklab, var(--chart-1) 88%, var(--background));
|
|
486
496
|
--ok: #a8db86;
|
|
487
497
|
--ok-bg: #24401a;
|
|
488
498
|
--info: #9cc6f7;
|
|
@@ -632,6 +642,11 @@
|
|
|
632
642
|
--chart-lilac: var(--lilac-ink);
|
|
633
643
|
--chart-butter: var(--butter-ink);
|
|
634
644
|
--chart-blush: var(--blush-ink);
|
|
645
|
+
--ramp-1: color-mix(in oklab, var(--chart-1) 12%, var(--background));
|
|
646
|
+
--ramp-2: color-mix(in oklab, var(--chart-1) 28%, var(--background));
|
|
647
|
+
--ramp-3: color-mix(in oklab, var(--chart-1) 46%, var(--background));
|
|
648
|
+
--ramp-4: color-mix(in oklab, var(--chart-1) 66%, var(--background));
|
|
649
|
+
--ramp-5: color-mix(in oklab, var(--chart-1) 88%, var(--background));
|
|
635
650
|
--ok: #a8db86;
|
|
636
651
|
--ok-bg: #24401a;
|
|
637
652
|
--info: #9cc6f7;
|
|
@@ -781,6 +796,11 @@
|
|
|
781
796
|
--chart-lilac: var(--lilac);
|
|
782
797
|
--chart-butter: var(--butter);
|
|
783
798
|
--chart-blush: var(--blush);
|
|
799
|
+
--ramp-1: color-mix(in oklab, var(--chart-1) 12%, var(--background));
|
|
800
|
+
--ramp-2: color-mix(in oklab, var(--chart-1) 28%, var(--background));
|
|
801
|
+
--ramp-3: color-mix(in oklab, var(--chart-1) 46%, var(--background));
|
|
802
|
+
--ramp-4: color-mix(in oklab, var(--chart-1) 66%, var(--background));
|
|
803
|
+
--ramp-5: color-mix(in oklab, var(--chart-1) 88%, var(--background));
|
|
784
804
|
--ok: #2f5d16;
|
|
785
805
|
--ok-bg: #d6efc3;
|
|
786
806
|
--info: #1f4f8a;
|
|
@@ -929,6 +949,11 @@
|
|
|
929
949
|
--chart-lilac: var(--lilac-ink);
|
|
930
950
|
--chart-butter: var(--butter-ink);
|
|
931
951
|
--chart-blush: var(--blush-ink);
|
|
952
|
+
--ramp-1: color-mix(in oklab, var(--chart-1) 12%, var(--background));
|
|
953
|
+
--ramp-2: color-mix(in oklab, var(--chart-1) 28%, var(--background));
|
|
954
|
+
--ramp-3: color-mix(in oklab, var(--chart-1) 46%, var(--background));
|
|
955
|
+
--ramp-4: color-mix(in oklab, var(--chart-1) 66%, var(--background));
|
|
956
|
+
--ramp-5: color-mix(in oklab, var(--chart-1) 88%, var(--background));
|
|
932
957
|
--ok: #a8db86;
|
|
933
958
|
--ok-bg: #24401a;
|
|
934
959
|
--info: #9cc6f7;
|
|
@@ -1076,6 +1101,11 @@
|
|
|
1076
1101
|
--chart-lilac: var(--lilac);
|
|
1077
1102
|
--chart-butter: var(--butter);
|
|
1078
1103
|
--chart-blush: var(--blush);
|
|
1104
|
+
--ramp-1: color-mix(in oklab, var(--chart-1) 12%, var(--background));
|
|
1105
|
+
--ramp-2: color-mix(in oklab, var(--chart-1) 28%, var(--background));
|
|
1106
|
+
--ramp-3: color-mix(in oklab, var(--chart-1) 46%, var(--background));
|
|
1107
|
+
--ramp-4: color-mix(in oklab, var(--chart-1) 66%, var(--background));
|
|
1108
|
+
--ramp-5: color-mix(in oklab, var(--chart-1) 88%, var(--background));
|
|
1079
1109
|
--ok: #2f5d16;
|
|
1080
1110
|
--ok-bg: #d6efc3;
|
|
1081
1111
|
--info: #1f4f8a;
|
|
@@ -1620,7 +1650,8 @@ select.tf-input {
|
|
|
1620
1650
|
border-radius: var(--radius-pill);
|
|
1621
1651
|
background: var(--surface-sunken);
|
|
1622
1652
|
color: var(--ink-muted);
|
|
1623
|
-
min-width: 220px;
|
|
1653
|
+
min-width: min(220px, 100%);
|
|
1654
|
+
box-sizing: border-box;
|
|
1624
1655
|
}
|
|
1625
1656
|
.tf-search input {
|
|
1626
1657
|
border: 0;
|
|
@@ -1629,6 +1660,7 @@ select.tf-input {
|
|
|
1629
1660
|
font: 500 14px/20px var(--font-sans);
|
|
1630
1661
|
color: var(--ink);
|
|
1631
1662
|
width: 100%;
|
|
1663
|
+
min-width: 0;
|
|
1632
1664
|
}
|
|
1633
1665
|
.tf-search input::placeholder {
|
|
1634
1666
|
color: var(--ink-subtle);
|
|
@@ -1710,7 +1742,7 @@ select.tf-input {
|
|
|
1710
1742
|
display: flex;
|
|
1711
1743
|
}
|
|
1712
1744
|
.tf-tabs-block .tf-tab {
|
|
1713
|
-
flex: 1;
|
|
1745
|
+
flex: 1 1 0;
|
|
1714
1746
|
}
|
|
1715
1747
|
|
|
1716
1748
|
/* StatTile */
|
|
@@ -2027,6 +2059,36 @@ select.tf-input {
|
|
|
2027
2059
|
background: var(--accent);
|
|
2028
2060
|
color: var(--accent-foreground);
|
|
2029
2061
|
}
|
|
2062
|
+
/* expanded: names next to the icons (the sheet's first column follows the rail's width) */
|
|
2063
|
+
.tf-rail {
|
|
2064
|
+
transition: width var(--dur-base) var(--ease-out);
|
|
2065
|
+
}
|
|
2066
|
+
.tf-rail.expanded {
|
|
2067
|
+
width: 200px;
|
|
2068
|
+
}
|
|
2069
|
+
.tf-rail.expanded .tf-rail-group {
|
|
2070
|
+
align-items: stretch;
|
|
2071
|
+
}
|
|
2072
|
+
.tf-rail.expanded .tf-rail-btn {
|
|
2073
|
+
display: flex;
|
|
2074
|
+
align-items: center;
|
|
2075
|
+
gap: 12px;
|
|
2076
|
+
width: 100%;
|
|
2077
|
+
padding: 0 10px;
|
|
2078
|
+
box-sizing: border-box;
|
|
2079
|
+
border-radius: var(--radius-pill);
|
|
2080
|
+
}
|
|
2081
|
+
.tf-rail-label {
|
|
2082
|
+
min-width: 0;
|
|
2083
|
+
overflow: hidden;
|
|
2084
|
+
text-overflow: ellipsis;
|
|
2085
|
+
white-space: nowrap;
|
|
2086
|
+
font: 600 13px/18px var(--font-sans);
|
|
2087
|
+
}
|
|
2088
|
+
.tf-rail.expanded .tf-dotcount {
|
|
2089
|
+
position: static;
|
|
2090
|
+
margin-left: auto;
|
|
2091
|
+
}
|
|
2030
2092
|
.tf-rail-btn[aria-current="page"] {
|
|
2031
2093
|
background: var(--primary);
|
|
2032
2094
|
color: var(--primary-foreground);
|
|
@@ -2176,9 +2238,28 @@ select.tf-input {
|
|
|
2176
2238
|
.tf-shell .tf-topbar {
|
|
2177
2239
|
padding: 0 var(--space-6);
|
|
2178
2240
|
}
|
|
2241
|
+
/* AppShell with navigation="sidebar": the labelled sidebar on the frame, the sheet beside it */
|
|
2242
|
+
.tf-shell.tf-shell-sidebar {
|
|
2243
|
+
display: grid;
|
|
2244
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
2245
|
+
align-items: stretch;
|
|
2246
|
+
padding: 8px;
|
|
2247
|
+
}
|
|
2248
|
+
.tf-shell-tools {
|
|
2249
|
+
display: flex;
|
|
2250
|
+
justify-content: flex-end;
|
|
2251
|
+
flex-wrap: wrap;
|
|
2252
|
+
gap: 8px;
|
|
2253
|
+
}
|
|
2254
|
+
.tf-sheet.tf-sheet-norail {
|
|
2255
|
+
grid-template-columns: minmax(0, 1fr) 300px;
|
|
2256
|
+
}
|
|
2257
|
+
.tf-sheet.tf-sheet-norail.tf-sheet-2 {
|
|
2258
|
+
grid-template-columns: minmax(0, 1fr);
|
|
2259
|
+
}
|
|
2179
2260
|
.tf-sheet {
|
|
2180
2261
|
display: grid;
|
|
2181
|
-
grid-template-columns:
|
|
2262
|
+
grid-template-columns: auto 1fr 300px;
|
|
2182
2263
|
gap: var(--space-6);
|
|
2183
2264
|
padding: var(--space-6);
|
|
2184
2265
|
background: var(--canvas);
|
|
@@ -2695,6 +2776,64 @@ select.tf-input {
|
|
|
2695
2776
|
background: var(--accent);
|
|
2696
2777
|
color: var(--accent-foreground);
|
|
2697
2778
|
}
|
|
2779
|
+
a.tf-row-item {
|
|
2780
|
+
text-decoration: none;
|
|
2781
|
+
}
|
|
2782
|
+
.tf-row-text {
|
|
2783
|
+
min-width: 0;
|
|
2784
|
+
}
|
|
2785
|
+
/* not interactive: no hover, no pointer */
|
|
2786
|
+
.tf-row-item.static {
|
|
2787
|
+
cursor: default;
|
|
2788
|
+
}
|
|
2789
|
+
.tf-row-item.static:hover {
|
|
2790
|
+
background: transparent;
|
|
2791
|
+
color: var(--ink);
|
|
2792
|
+
}
|
|
2793
|
+
/* own buttons: the title is the link or button and its hit area stretches over the row */
|
|
2794
|
+
.tf-row-item.has-hit {
|
|
2795
|
+
position: relative;
|
|
2796
|
+
}
|
|
2797
|
+
.tf-row-item.has-hit:hover {
|
|
2798
|
+
background: transparent;
|
|
2799
|
+
color: var(--ink);
|
|
2800
|
+
}
|
|
2801
|
+
.tf-row-item.has-hit:has(.tf-row-hit:hover) {
|
|
2802
|
+
background: var(--accent);
|
|
2803
|
+
color: var(--accent-foreground);
|
|
2804
|
+
}
|
|
2805
|
+
.tf-row-item.has-hit:has(.tf-row-hit:focus-visible) {
|
|
2806
|
+
outline: 2px solid var(--focus);
|
|
2807
|
+
outline-offset: 2px;
|
|
2808
|
+
}
|
|
2809
|
+
.tf-row-hit {
|
|
2810
|
+
display: block;
|
|
2811
|
+
padding: 0;
|
|
2812
|
+
border: 0;
|
|
2813
|
+
background: none;
|
|
2814
|
+
color: inherit;
|
|
2815
|
+
font: inherit;
|
|
2816
|
+
text-align: left;
|
|
2817
|
+
text-decoration: none;
|
|
2818
|
+
cursor: pointer;
|
|
2819
|
+
outline: none;
|
|
2820
|
+
}
|
|
2821
|
+
.tf-row-hit::after {
|
|
2822
|
+
content: "";
|
|
2823
|
+
position: absolute;
|
|
2824
|
+
inset: 0;
|
|
2825
|
+
border-radius: inherit;
|
|
2826
|
+
}
|
|
2827
|
+
.tf-row-item.has-actions {
|
|
2828
|
+
grid-template-columns: auto 1fr auto auto;
|
|
2829
|
+
}
|
|
2830
|
+
.tf-row-actions {
|
|
2831
|
+
position: relative;
|
|
2832
|
+
z-index: 1;
|
|
2833
|
+
display: flex;
|
|
2834
|
+
align-items: center;
|
|
2835
|
+
gap: 4px;
|
|
2836
|
+
}
|
|
2698
2837
|
.tf-row-item[aria-current="true"] {
|
|
2699
2838
|
background: var(--surface);
|
|
2700
2839
|
box-shadow: var(--shadow-card);
|
|
@@ -2706,12 +2845,27 @@ select.tf-input {
|
|
|
2706
2845
|
gap: 8px;
|
|
2707
2846
|
}
|
|
2708
2847
|
.tf-row-sub {
|
|
2848
|
+
display: block;
|
|
2709
2849
|
font: 500 13px/18px var(--font-sans);
|
|
2710
2850
|
color: var(--ink-muted);
|
|
2711
2851
|
white-space: nowrap;
|
|
2712
2852
|
overflow: hidden;
|
|
2713
2853
|
text-overflow: ellipsis;
|
|
2714
2854
|
}
|
|
2855
|
+
/* titleLines / subtitleLines: wrap, then end in an ellipsis after that many lines */
|
|
2856
|
+
.tf-row-sub.clamp,
|
|
2857
|
+
.tf-row-clamp {
|
|
2858
|
+
display: -webkit-box;
|
|
2859
|
+
-webkit-box-orient: vertical;
|
|
2860
|
+
-webkit-line-clamp: var(--lines, 2);
|
|
2861
|
+
line-clamp: var(--lines, 2);
|
|
2862
|
+
white-space: normal;
|
|
2863
|
+
overflow: hidden;
|
|
2864
|
+
min-width: 0;
|
|
2865
|
+
}
|
|
2866
|
+
.tf-row-title.clamp {
|
|
2867
|
+
align-items: flex-start;
|
|
2868
|
+
}
|
|
2715
2869
|
.tf-row-meta {
|
|
2716
2870
|
font: 600 12px/16px var(--font-sans);
|
|
2717
2871
|
color: var(--ink-muted);
|
|
@@ -2898,6 +3052,13 @@ select.tf-input {
|
|
|
2898
3052
|
font: 600 13px/1 var(--font-sans);
|
|
2899
3053
|
cursor: pointer;
|
|
2900
3054
|
}
|
|
3055
|
+
a.tf-page {
|
|
3056
|
+
display: inline-flex;
|
|
3057
|
+
align-items: center;
|
|
3058
|
+
justify-content: center;
|
|
3059
|
+
box-sizing: border-box;
|
|
3060
|
+
text-decoration: none;
|
|
3061
|
+
}
|
|
2901
3062
|
.tf-page:hover {
|
|
2902
3063
|
background: var(--accent);
|
|
2903
3064
|
color: var(--ink);
|
|
@@ -2908,18 +3069,42 @@ select.tf-input {
|
|
|
2908
3069
|
}
|
|
2909
3070
|
.tf-crumbs {
|
|
2910
3071
|
display: flex;
|
|
3072
|
+
flex-wrap: wrap;
|
|
2911
3073
|
align-items: center;
|
|
2912
3074
|
gap: 6px;
|
|
3075
|
+
min-width: 0;
|
|
2913
3076
|
font: 600 13px/18px var(--font-sans);
|
|
2914
3077
|
color: var(--ink-muted);
|
|
2915
3078
|
}
|
|
2916
|
-
|
|
3079
|
+
/* links and buttons get a 24px target without moving the text */
|
|
3080
|
+
.tf-crumb {
|
|
3081
|
+
display: inline-flex;
|
|
3082
|
+
align-items: center;
|
|
3083
|
+
min-height: 24px;
|
|
3084
|
+
max-width: 100%;
|
|
3085
|
+
padding: 0 4px;
|
|
3086
|
+
/* the target grows to 24px around the 18px line without moving the text */
|
|
3087
|
+
margin: -3px -4px;
|
|
3088
|
+
border: 0;
|
|
3089
|
+
border-radius: var(--radius-sm);
|
|
3090
|
+
background: none;
|
|
2917
3091
|
color: inherit;
|
|
3092
|
+
font: inherit;
|
|
2918
3093
|
text-decoration: none;
|
|
3094
|
+
overflow-wrap: anywhere;
|
|
3095
|
+
}
|
|
3096
|
+
a.tf-crumb,
|
|
3097
|
+
button.tf-crumb {
|
|
3098
|
+
cursor: pointer;
|
|
2919
3099
|
}
|
|
2920
|
-
.tf-
|
|
3100
|
+
a.tf-crumb:hover,
|
|
3101
|
+
button.tf-crumb:hover {
|
|
2921
3102
|
color: var(--ink);
|
|
2922
3103
|
}
|
|
3104
|
+
.tf-crumb:focus-visible {
|
|
3105
|
+
outline: 2px solid var(--focus);
|
|
3106
|
+
outline-offset: 0;
|
|
3107
|
+
}
|
|
2923
3108
|
.tf-crumbs [aria-current] {
|
|
2924
3109
|
color: var(--ink);
|
|
2925
3110
|
}
|
|
@@ -2961,7 +3146,7 @@ select.tf-input {
|
|
|
2961
3146
|
cursor: pointer;
|
|
2962
3147
|
}
|
|
2963
3148
|
.tf-sheet-2 {
|
|
2964
|
-
grid-template-columns:
|
|
3149
|
+
grid-template-columns: auto 1fr;
|
|
2965
3150
|
}
|
|
2966
3151
|
.tf-main {
|
|
2967
3152
|
display: flex;
|
|
@@ -3031,6 +3216,26 @@ select.tf-input {
|
|
|
3031
3216
|
justify-content: center;
|
|
3032
3217
|
}
|
|
3033
3218
|
}
|
|
3219
|
+
/* the TopBar measured that the labels do not fit: icons only, at any width */
|
|
3220
|
+
.tf-nav.tight .tf-nav-label {
|
|
3221
|
+
display: none;
|
|
3222
|
+
}
|
|
3223
|
+
.tf-nav.tight .tf-nav-item {
|
|
3224
|
+
position: relative;
|
|
3225
|
+
width: 36px;
|
|
3226
|
+
padding: 0;
|
|
3227
|
+
justify-content: center;
|
|
3228
|
+
}
|
|
3229
|
+
.tf-nav.tight .tf-nav-item .tf-nav-count {
|
|
3230
|
+
position: absolute;
|
|
3231
|
+
top: -2px;
|
|
3232
|
+
right: -4px;
|
|
3233
|
+
min-width: 16px;
|
|
3234
|
+
height: 16px;
|
|
3235
|
+
padding: 0 4px;
|
|
3236
|
+
font-size: 10px;
|
|
3237
|
+
line-height: 16px;
|
|
3238
|
+
}
|
|
3034
3239
|
.tf-main {
|
|
3035
3240
|
animation: none;
|
|
3036
3241
|
}
|
|
@@ -3156,6 +3361,19 @@ select.tf-input {
|
|
|
3156
3361
|
.tf-user-text {
|
|
3157
3362
|
display: flex;
|
|
3158
3363
|
flex-direction: column;
|
|
3364
|
+
min-width: 0;
|
|
3365
|
+
max-width: 200px;
|
|
3366
|
+
}
|
|
3367
|
+
/* a long name or address ends in an ellipsis instead of pushing the nav out (title has it whole) */
|
|
3368
|
+
.tf-user-name,
|
|
3369
|
+
.tf-user-mail {
|
|
3370
|
+
overflow: hidden;
|
|
3371
|
+
text-overflow: ellipsis;
|
|
3372
|
+
white-space: nowrap;
|
|
3373
|
+
}
|
|
3374
|
+
.tf-user {
|
|
3375
|
+
min-width: 0;
|
|
3376
|
+
flex-shrink: 1;
|
|
3159
3377
|
}
|
|
3160
3378
|
|
|
3161
3379
|
/* Checkbox: real box + SVG check (no pseudo-elements on the input) */
|
|
@@ -3168,9 +3386,12 @@ select.tf-input {
|
|
|
3168
3386
|
}
|
|
3169
3387
|
.tf-checkbox input {
|
|
3170
3388
|
position: absolute;
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3389
|
+
/* the box keeps its size; the hit area is at least 24px (WCAG 2.2 target size) */
|
|
3390
|
+
top: 50%;
|
|
3391
|
+
left: 50%;
|
|
3392
|
+
translate: -50% -50%;
|
|
3393
|
+
width: max(24px, 100%);
|
|
3394
|
+
height: max(24px, 100%);
|
|
3174
3395
|
margin: 0;
|
|
3175
3396
|
opacity: 0;
|
|
3176
3397
|
cursor: pointer;
|
|
@@ -4244,6 +4465,23 @@ select.tf-input {
|
|
|
4244
4465
|
font: 600 13px/18px var(--font-sans);
|
|
4245
4466
|
pointer-events: none;
|
|
4246
4467
|
}
|
|
4468
|
+
/* an interactive control at the end (reveal password, clear, copy) */
|
|
4469
|
+
.tf-input-action {
|
|
4470
|
+
position: absolute;
|
|
4471
|
+
right: 4px;
|
|
4472
|
+
top: 50%;
|
|
4473
|
+
transform: translateY(-50%);
|
|
4474
|
+
display: inline-flex;
|
|
4475
|
+
}
|
|
4476
|
+
.tf-inputwrap.has-action .tf-input {
|
|
4477
|
+
padding-right: 44px;
|
|
4478
|
+
}
|
|
4479
|
+
.tf-inputwrap.has-action.has-suffix .tf-input {
|
|
4480
|
+
padding-right: 72px;
|
|
4481
|
+
}
|
|
4482
|
+
.tf-inputwrap.has-action .tf-input-suffix {
|
|
4483
|
+
right: 44px;
|
|
4484
|
+
}
|
|
4247
4485
|
.tf-input-suffix.err {
|
|
4248
4486
|
color: var(--blush-ink);
|
|
4249
4487
|
}
|
|
@@ -4403,7 +4641,7 @@ select.tf-input {
|
|
|
4403
4641
|
display: flex;
|
|
4404
4642
|
}
|
|
4405
4643
|
.tf-seg.block .tf-seg-item {
|
|
4406
|
-
flex: 1;
|
|
4644
|
+
flex: 1 1 0;
|
|
4407
4645
|
}
|
|
4408
4646
|
.tf-seg-item {
|
|
4409
4647
|
position: relative;
|
|
@@ -5015,6 +5253,10 @@ label.tf-menu-item {
|
|
|
5015
5253
|
border-color var(--dur-fast) ease,
|
|
5016
5254
|
background-color var(--dur-fast) ease;
|
|
5017
5255
|
}
|
|
5256
|
+
.tf-drop.disabled {
|
|
5257
|
+
opacity: 0.5;
|
|
5258
|
+
cursor: not-allowed;
|
|
5259
|
+
}
|
|
5018
5260
|
.tf-drop b {
|
|
5019
5261
|
font: 600 14px/20px var(--font-sans);
|
|
5020
5262
|
margin-top: 4px;
|
|
@@ -5077,6 +5319,7 @@ label.tf-menu-item {
|
|
|
5077
5319
|
/* Alert, confirm, toaster */
|
|
5078
5320
|
.tf-alert {
|
|
5079
5321
|
display: flex;
|
|
5322
|
+
flex-wrap: wrap;
|
|
5080
5323
|
align-items: flex-start;
|
|
5081
5324
|
gap: 12px;
|
|
5082
5325
|
padding: 12px 12px 12px 16px;
|
|
@@ -5120,7 +5363,8 @@ label.tf-menu-item {
|
|
|
5120
5363
|
color: var(--lilac-ink);
|
|
5121
5364
|
}
|
|
5122
5365
|
.tf-alert-body {
|
|
5123
|
-
|
|
5366
|
+
/* when the alert is too narrow for text and actions, the actions move to their own line */
|
|
5367
|
+
flex: 1 1 200px;
|
|
5124
5368
|
min-width: 0;
|
|
5125
5369
|
display: flex;
|
|
5126
5370
|
flex-direction: column;
|
|
@@ -5136,8 +5380,11 @@ label.tf-menu-item {
|
|
|
5136
5380
|
.tf-alert-actions {
|
|
5137
5381
|
flex: none;
|
|
5138
5382
|
display: flex;
|
|
5383
|
+
flex-wrap: wrap;
|
|
5139
5384
|
align-items: center;
|
|
5140
5385
|
gap: 4px;
|
|
5386
|
+
max-width: 100%;
|
|
5387
|
+
margin-left: auto;
|
|
5141
5388
|
}
|
|
5142
5389
|
.tf-alert .tf-iconbtn-ghost {
|
|
5143
5390
|
background: transparent;
|
|
@@ -6141,14 +6388,29 @@ label.tf-menu-item {
|
|
|
6141
6388
|
display: inline-flex;
|
|
6142
6389
|
align-items: center;
|
|
6143
6390
|
gap: 8px;
|
|
6144
|
-
|
|
6145
|
-
|
|
6391
|
+
/* grows with a long title (two lines at most) instead of spilling over */
|
|
6392
|
+
min-height: 32px;
|
|
6393
|
+
box-sizing: border-box;
|
|
6394
|
+
padding: 4px 12px 4px 4px;
|
|
6146
6395
|
border-radius: var(--radius-pill);
|
|
6147
6396
|
background: var(--surface-sunken);
|
|
6148
6397
|
color: var(--ink);
|
|
6149
6398
|
text-decoration: none;
|
|
6150
6399
|
font: 600 12px/16px var(--font-sans);
|
|
6151
|
-
max-width: 260px;
|
|
6400
|
+
max-width: min(260px, 100%);
|
|
6401
|
+
}
|
|
6402
|
+
.tf-source-title {
|
|
6403
|
+
min-width: 0;
|
|
6404
|
+
display: -webkit-box;
|
|
6405
|
+
-webkit-box-orient: vertical;
|
|
6406
|
+
-webkit-line-clamp: 2;
|
|
6407
|
+
line-clamp: 2;
|
|
6408
|
+
overflow: hidden;
|
|
6409
|
+
overflow-wrap: anywhere;
|
|
6410
|
+
}
|
|
6411
|
+
.tf-source > .tf-ico,
|
|
6412
|
+
.tf-source-n {
|
|
6413
|
+
flex: none;
|
|
6152
6414
|
}
|
|
6153
6415
|
.tf-source:hover {
|
|
6154
6416
|
background: var(--line);
|
|
@@ -7271,17 +7533,25 @@ label.tf-menu-item {
|
|
|
7271
7533
|
color: var(--ink-muted);
|
|
7272
7534
|
}
|
|
7273
7535
|
.tf-csteps {
|
|
7536
|
+
/* one row at every width: steps shrink to their numbers instead of wrapping */
|
|
7537
|
+
container: tf-csteps / inline-size;
|
|
7274
7538
|
display: flex;
|
|
7275
7539
|
gap: 8px;
|
|
7276
7540
|
margin: 0;
|
|
7277
7541
|
padding: 0;
|
|
7278
7542
|
list-style: none;
|
|
7279
|
-
flex-wrap: wrap;
|
|
7280
7543
|
}
|
|
7281
7544
|
.tf-csteps li {
|
|
7282
7545
|
display: flex;
|
|
7283
7546
|
align-items: center;
|
|
7284
7547
|
gap: 8px;
|
|
7548
|
+
min-width: 0;
|
|
7549
|
+
}
|
|
7550
|
+
.tf-cstep-label {
|
|
7551
|
+
min-width: 0;
|
|
7552
|
+
overflow: hidden;
|
|
7553
|
+
text-overflow: ellipsis;
|
|
7554
|
+
white-space: nowrap;
|
|
7285
7555
|
}
|
|
7286
7556
|
.tf-csteps li + li::before {
|
|
7287
7557
|
content: "";
|
|
@@ -7310,6 +7580,40 @@ label.tf-menu-item {
|
|
|
7310
7580
|
.tf-csteps button:disabled {
|
|
7311
7581
|
cursor: default;
|
|
7312
7582
|
}
|
|
7583
|
+
.tf-csteps button {
|
|
7584
|
+
min-width: 0;
|
|
7585
|
+
max-width: 100%;
|
|
7586
|
+
}
|
|
7587
|
+
.tf-csteps.compact li:not(.cur) .tf-cstep-label {
|
|
7588
|
+
position: absolute;
|
|
7589
|
+
width: 1px;
|
|
7590
|
+
height: 1px;
|
|
7591
|
+
overflow: hidden;
|
|
7592
|
+
clip-path: inset(50%);
|
|
7593
|
+
white-space: nowrap;
|
|
7594
|
+
}
|
|
7595
|
+
.tf-csteps.compact li:not(.cur) button {
|
|
7596
|
+
padding: 0 4px;
|
|
7597
|
+
}
|
|
7598
|
+
.tf-csteps.compact li + li::before {
|
|
7599
|
+
width: 12px;
|
|
7600
|
+
}
|
|
7601
|
+
@container tf-csteps (max-width: 560px) {
|
|
7602
|
+
.tf-csteps li:not(.cur) .tf-cstep-label {
|
|
7603
|
+
position: absolute;
|
|
7604
|
+
width: 1px;
|
|
7605
|
+
height: 1px;
|
|
7606
|
+
overflow: hidden;
|
|
7607
|
+
clip-path: inset(50%);
|
|
7608
|
+
white-space: nowrap;
|
|
7609
|
+
}
|
|
7610
|
+
.tf-csteps li:not(.cur) button {
|
|
7611
|
+
padding: 0 4px;
|
|
7612
|
+
}
|
|
7613
|
+
.tf-csteps li + li::before {
|
|
7614
|
+
width: 12px;
|
|
7615
|
+
}
|
|
7616
|
+
}
|
|
7313
7617
|
.tf-csteps li.cur button {
|
|
7314
7618
|
background: var(--surface);
|
|
7315
7619
|
color: var(--ink);
|
|
@@ -7476,7 +7780,7 @@ label.tf-menu-item {
|
|
|
7476
7780
|
color: var(--on-frame);
|
|
7477
7781
|
box-shadow: var(--shadow-float);
|
|
7478
7782
|
}
|
|
7479
|
-
.tf-plan.featured .tf-plan-head span,
|
|
7783
|
+
.tf-plan.featured .tf-plan-head span:not(.tf-badge),
|
|
7480
7784
|
.tf-plan.featured .tf-plan-price span,
|
|
7481
7785
|
.tf-plan.featured .tf-plan-price s,
|
|
7482
7786
|
.tf-plan.featured .tf-plan-feats li.no {
|
|
@@ -7507,10 +7811,22 @@ label.tf-menu-item {
|
|
|
7507
7811
|
.tf-plan-head b {
|
|
7508
7812
|
font: 700 20px/26px var(--font-sans);
|
|
7509
7813
|
}
|
|
7510
|
-
.tf-plan-head span {
|
|
7814
|
+
.tf-plan-head span:not(.tf-badge) {
|
|
7511
7815
|
font: 500 13px/18px var(--font-sans);
|
|
7512
7816
|
color: var(--ink-muted);
|
|
7513
7817
|
}
|
|
7818
|
+
/* "Current plan" next to the name, and the note under the price */
|
|
7819
|
+
.tf-plan-head .tf-plan-current {
|
|
7820
|
+
align-self: flex-start;
|
|
7821
|
+
}
|
|
7822
|
+
.tf-plan-note {
|
|
7823
|
+
margin: -4px 0 0;
|
|
7824
|
+
font: 500 12px/16px var(--font-sans);
|
|
7825
|
+
color: var(--ink-muted);
|
|
7826
|
+
}
|
|
7827
|
+
a.tf-plan-cta {
|
|
7828
|
+
text-decoration: none;
|
|
7829
|
+
}
|
|
7514
7830
|
.tf-plan-price {
|
|
7515
7831
|
display: flex;
|
|
7516
7832
|
align-items: baseline;
|
|
@@ -9610,7 +9926,7 @@ label.tf-menu-item {
|
|
|
9610
9926
|
.tf-tabbar {
|
|
9611
9927
|
display: grid;
|
|
9612
9928
|
grid-auto-flow: column;
|
|
9613
|
-
grid-auto-columns: 1fr;
|
|
9929
|
+
grid-auto-columns: minmax(0, 1fr);
|
|
9614
9930
|
padding: 4px 8px calc(4px + env(safe-area-inset-bottom, 0px));
|
|
9615
9931
|
background: var(--frame);
|
|
9616
9932
|
border-radius: 24px 24px 0 0;
|
|
@@ -9629,6 +9945,17 @@ label.tf-menu-item {
|
|
|
9629
9945
|
cursor: pointer;
|
|
9630
9946
|
border-radius: 16px;
|
|
9631
9947
|
}
|
|
9948
|
+
.tf-tabbar-item {
|
|
9949
|
+
min-width: 0;
|
|
9950
|
+
}
|
|
9951
|
+
.tf-tabbar-label {
|
|
9952
|
+
max-width: 100%;
|
|
9953
|
+
padding: 0 4px;
|
|
9954
|
+
box-sizing: border-box;
|
|
9955
|
+
overflow: hidden;
|
|
9956
|
+
text-overflow: ellipsis;
|
|
9957
|
+
white-space: nowrap;
|
|
9958
|
+
}
|
|
9632
9959
|
.tf-tabbar-item.on {
|
|
9633
9960
|
color: var(--on-frame);
|
|
9634
9961
|
background: var(--frame-hover);
|
|
@@ -9936,6 +10263,22 @@ label.tf-menu-item {
|
|
|
9936
10263
|
padding-bottom: 10px;
|
|
9937
10264
|
color: var(--ink-muted);
|
|
9938
10265
|
}
|
|
10266
|
+
/* in a narrow column (a filter sidebar) the number fields give their padding to the digits */
|
|
10267
|
+
.tf-range {
|
|
10268
|
+
container: tf-range / inline-size;
|
|
10269
|
+
}
|
|
10270
|
+
@container tf-range (max-width: 280px) {
|
|
10271
|
+
.tf-range-inputs {
|
|
10272
|
+
gap: 4px;
|
|
10273
|
+
}
|
|
10274
|
+
.tf-range-num .tf-input {
|
|
10275
|
+
padding-left: 10px;
|
|
10276
|
+
padding-right: 24px;
|
|
10277
|
+
}
|
|
10278
|
+
.tf-range-num > span {
|
|
10279
|
+
right: 10px;
|
|
10280
|
+
}
|
|
10281
|
+
}
|
|
9939
10282
|
.tf-range-vals {
|
|
9940
10283
|
display: flex;
|
|
9941
10284
|
justify-content: space-between;
|
|
@@ -10089,6 +10432,31 @@ label.tf-menu-item {
|
|
|
10089
10432
|
font: 500 12px/16px var(--font-sans);
|
|
10090
10433
|
color: var(--ink-muted);
|
|
10091
10434
|
}
|
|
10435
|
+
/* layout="list": compact rows */
|
|
10436
|
+
.tf-tiles.list {
|
|
10437
|
+
grid-template-columns: minmax(0, 1fr);
|
|
10438
|
+
gap: 8px;
|
|
10439
|
+
}
|
|
10440
|
+
.tf-tiles.list .tf-tile {
|
|
10441
|
+
flex-direction: row;
|
|
10442
|
+
align-items: center;
|
|
10443
|
+
gap: 12px;
|
|
10444
|
+
padding: 8px 44px 8px 8px;
|
|
10445
|
+
}
|
|
10446
|
+
.tf-tiles.list .tf-tile-art {
|
|
10447
|
+
flex: none;
|
|
10448
|
+
width: 40px;
|
|
10449
|
+
height: 40px;
|
|
10450
|
+
aspect-ratio: auto;
|
|
10451
|
+
}
|
|
10452
|
+
.tf-tiles.list .tf-tile-label {
|
|
10453
|
+
min-width: 0;
|
|
10454
|
+
padding: 0;
|
|
10455
|
+
}
|
|
10456
|
+
.tf-tiles.list .tf-tile-check {
|
|
10457
|
+
top: 50%;
|
|
10458
|
+
translate: 0 -50%;
|
|
10459
|
+
}
|
|
10092
10460
|
.tf-tile-check {
|
|
10093
10461
|
position: absolute;
|
|
10094
10462
|
top: 14px;
|
|
@@ -11198,6 +11566,16 @@ button.tf-runs-main[aria-expanded]:hover {
|
|
|
11198
11566
|
color: var(--paper-ink);
|
|
11199
11567
|
box-shadow: inset 0 0 0 1px var(--line);
|
|
11200
11568
|
}
|
|
11569
|
+
/* QrCode: dark modules on paper, in every theme (scanners expect dark on light) */
|
|
11570
|
+
.tf-qr {
|
|
11571
|
+
display: block;
|
|
11572
|
+
width: 100%;
|
|
11573
|
+
height: auto;
|
|
11574
|
+
color: var(--paper-ink);
|
|
11575
|
+
}
|
|
11576
|
+
.tf-qr-bg {
|
|
11577
|
+
fill: var(--paper);
|
|
11578
|
+
}
|
|
11201
11579
|
.tf-2fa-qr > * {
|
|
11202
11580
|
max-width: 100%;
|
|
11203
11581
|
max-height: 100%;
|
|
@@ -11449,7 +11827,8 @@ button.tf-runs-main[aria-expanded]:hover {
|
|
|
11449
11827
|
border-radius: var(--radius-md);
|
|
11450
11828
|
overflow: hidden;
|
|
11451
11829
|
background: var(--surface-sunken);
|
|
11452
|
-
|
|
11830
|
+
/* sideways drags move the divider; the page still scrolls up and down over it */
|
|
11831
|
+
touch-action: pan-y;
|
|
11453
11832
|
user-select: none;
|
|
11454
11833
|
cursor: ew-resize;
|
|
11455
11834
|
}
|
|
@@ -12348,6 +12727,14 @@ button.tf-runs-main[aria-expanded]:hover {
|
|
|
12348
12727
|
.tf-togglegroup .tf-toggle {
|
|
12349
12728
|
height: 32px;
|
|
12350
12729
|
}
|
|
12730
|
+
.tf-togglegroup.block {
|
|
12731
|
+
display: flex;
|
|
12732
|
+
flex-wrap: nowrap;
|
|
12733
|
+
width: auto;
|
|
12734
|
+
}
|
|
12735
|
+
.tf-togglegroup.block .tf-toggle {
|
|
12736
|
+
flex: 1 1 0;
|
|
12737
|
+
}
|
|
12351
12738
|
.tf-togglegroup .tf-toggle.icon {
|
|
12352
12739
|
width: 32px;
|
|
12353
12740
|
}
|
|
@@ -12558,6 +12945,11 @@ button.tf-runs-main[aria-expanded]:hover {
|
|
|
12558
12945
|
text-align: left;
|
|
12559
12946
|
cursor: pointer;
|
|
12560
12947
|
}
|
|
12948
|
+
.tf-selectmenu.sm {
|
|
12949
|
+
height: 32px;
|
|
12950
|
+
padding: 0 12px;
|
|
12951
|
+
font-size: 13px;
|
|
12952
|
+
}
|
|
12561
12953
|
.tf-selectmenu.empty .tf-selectmenu-value {
|
|
12562
12954
|
color: var(--ink-subtle);
|
|
12563
12955
|
}
|
|
@@ -12834,26 +13226,44 @@ button.tf-runs-main[aria-expanded]:hover {
|
|
|
12834
13226
|
outline-offset: -2px;
|
|
12835
13227
|
}
|
|
12836
13228
|
|
|
12837
|
-
/* Sidebar */
|
|
13229
|
+
/* Sidebar: floating (a card), attached (flush with the screen's edge) or on the AppShell frame */
|
|
12838
13230
|
.tf-sidebar {
|
|
12839
13231
|
display: flex;
|
|
12840
13232
|
flex-direction: column;
|
|
12841
|
-
|
|
13233
|
+
flex: none;
|
|
13234
|
+
gap: 12px;
|
|
12842
13235
|
width: 248px;
|
|
12843
13236
|
padding: 12px;
|
|
12844
13237
|
box-sizing: border-box;
|
|
12845
13238
|
border-radius: var(--radius-lg);
|
|
12846
13239
|
background: var(--surface);
|
|
12847
13240
|
box-shadow: var(--shadow-card);
|
|
13241
|
+
color: var(--ink);
|
|
12848
13242
|
transition: width var(--dur-base) var(--ease-out);
|
|
12849
13243
|
}
|
|
12850
13244
|
.tf-sidebar.collapsed {
|
|
12851
13245
|
width: 64px;
|
|
12852
13246
|
}
|
|
13247
|
+
.tf-sidebar.attached {
|
|
13248
|
+
align-self: stretch;
|
|
13249
|
+
min-height: 100%;
|
|
13250
|
+
border-radius: 0;
|
|
13251
|
+
box-shadow: none;
|
|
13252
|
+
background: var(--sidebar);
|
|
13253
|
+
border-right: 1px solid var(--sidebar-border);
|
|
13254
|
+
}
|
|
13255
|
+
.tf-sidebar-head {
|
|
13256
|
+
display: flex;
|
|
13257
|
+
align-items: center;
|
|
13258
|
+
gap: 8px;
|
|
13259
|
+
min-height: 40px;
|
|
13260
|
+
padding: 0 4px;
|
|
13261
|
+
}
|
|
12853
13262
|
.tf-sidebar-body {
|
|
12854
13263
|
display: flex;
|
|
12855
13264
|
flex-direction: column;
|
|
12856
|
-
|
|
13265
|
+
/* groups sit clearly apart; a label sits close to its own items */
|
|
13266
|
+
gap: 20px;
|
|
12857
13267
|
flex: 1;
|
|
12858
13268
|
min-height: 0;
|
|
12859
13269
|
overflow-y: auto;
|
|
@@ -12866,13 +13276,49 @@ button.tf-runs-main[aria-expanded]:hover {
|
|
|
12866
13276
|
padding: 0;
|
|
12867
13277
|
list-style: none;
|
|
12868
13278
|
}
|
|
13279
|
+
.tf-sidebar-grouphead {
|
|
13280
|
+
display: flex;
|
|
13281
|
+
align-items: center;
|
|
13282
|
+
gap: 4px;
|
|
13283
|
+
min-height: 24px;
|
|
13284
|
+
margin-bottom: 8px;
|
|
13285
|
+
padding: 0 4px 0 12px;
|
|
13286
|
+
}
|
|
12869
13287
|
.tf-sidebar-grouplabel {
|
|
12870
|
-
|
|
13288
|
+
display: flex;
|
|
13289
|
+
align-items: center;
|
|
13290
|
+
gap: 4px;
|
|
13291
|
+
flex: 1;
|
|
13292
|
+
min-width: 0;
|
|
13293
|
+
padding: 0;
|
|
13294
|
+
border: 0;
|
|
13295
|
+
background: none;
|
|
12871
13296
|
font: 600 11px/14px var(--font-sans);
|
|
12872
13297
|
letter-spacing: 0.06em;
|
|
12873
13298
|
text-transform: uppercase;
|
|
13299
|
+
text-align: left;
|
|
12874
13300
|
color: var(--ink-muted);
|
|
12875
13301
|
}
|
|
13302
|
+
button.tf-sidebar-grouplabel {
|
|
13303
|
+
cursor: pointer;
|
|
13304
|
+
}
|
|
13305
|
+
button.tf-sidebar-grouplabel:hover {
|
|
13306
|
+
color: var(--ink);
|
|
13307
|
+
}
|
|
13308
|
+
button.tf-sidebar-grouplabel:focus-visible {
|
|
13309
|
+
outline: 2px solid var(--focus);
|
|
13310
|
+
outline-offset: 2px;
|
|
13311
|
+
}
|
|
13312
|
+
.tf-sidebar-grouplabel[aria-expanded="false"] .tf-sidebar-chev {
|
|
13313
|
+
transform: rotate(-90deg);
|
|
13314
|
+
}
|
|
13315
|
+
.tf-sidebar-groupaction {
|
|
13316
|
+
flex: none;
|
|
13317
|
+
margin-left: auto;
|
|
13318
|
+
}
|
|
13319
|
+
.tf-sidebar-li {
|
|
13320
|
+
position: relative;
|
|
13321
|
+
}
|
|
12876
13322
|
.tf-sidebar-item {
|
|
12877
13323
|
display: flex;
|
|
12878
13324
|
align-items: center;
|
|
@@ -12880,15 +13326,86 @@ button.tf-runs-main[aria-expanded]:hover {
|
|
|
12880
13326
|
width: 100%;
|
|
12881
13327
|
height: 40px;
|
|
12882
13328
|
padding: 0 12px;
|
|
13329
|
+
box-sizing: border-box;
|
|
12883
13330
|
border: 0;
|
|
12884
13331
|
border-radius: var(--radius-pill);
|
|
12885
13332
|
background: transparent;
|
|
12886
13333
|
color: var(--ink-muted);
|
|
12887
13334
|
font: 600 13px/18px var(--font-sans);
|
|
12888
13335
|
text-align: left;
|
|
13336
|
+
text-decoration: none;
|
|
12889
13337
|
cursor: pointer;
|
|
12890
13338
|
}
|
|
12891
|
-
|
|
13339
|
+
/* Filter options (Sidebar as="aside"): a checkbox or radio mark, the label and a count */
|
|
13340
|
+
.tf-sidebar-option {
|
|
13341
|
+
position: relative;
|
|
13342
|
+
}
|
|
13343
|
+
.tf-sidebar-option.disabled {
|
|
13344
|
+
opacity: 0.45;
|
|
13345
|
+
cursor: default;
|
|
13346
|
+
}
|
|
13347
|
+
.tf-sidebar-input {
|
|
13348
|
+
position: absolute;
|
|
13349
|
+
width: 1px;
|
|
13350
|
+
height: 1px;
|
|
13351
|
+
margin: 0;
|
|
13352
|
+
opacity: 0;
|
|
13353
|
+
pointer-events: none;
|
|
13354
|
+
}
|
|
13355
|
+
.tf-sidebar-mark {
|
|
13356
|
+
display: grid;
|
|
13357
|
+
place-items: center;
|
|
13358
|
+
flex: none;
|
|
13359
|
+
width: 18px;
|
|
13360
|
+
height: 18px;
|
|
13361
|
+
box-sizing: border-box;
|
|
13362
|
+
border-radius: 6px;
|
|
13363
|
+
border: 1.5px solid var(--line-strong);
|
|
13364
|
+
background: var(--surface);
|
|
13365
|
+
color: var(--primary-foreground);
|
|
13366
|
+
transition:
|
|
13367
|
+
background-color var(--dur-fast) var(--ease-out),
|
|
13368
|
+
border-color var(--dur-fast) var(--ease-out);
|
|
13369
|
+
}
|
|
13370
|
+
.tf-sidebar-mark.radio {
|
|
13371
|
+
border-radius: 50%;
|
|
13372
|
+
}
|
|
13373
|
+
.tf-sidebar-mark svg {
|
|
13374
|
+
opacity: 0;
|
|
13375
|
+
}
|
|
13376
|
+
.tf-sidebar-input:checked + .tf-sidebar-mark {
|
|
13377
|
+
background: var(--primary);
|
|
13378
|
+
border-color: var(--primary);
|
|
13379
|
+
}
|
|
13380
|
+
.tf-sidebar-input:checked + .tf-sidebar-mark.radio {
|
|
13381
|
+
box-shadow: inset 0 0 0 3px var(--surface);
|
|
13382
|
+
}
|
|
13383
|
+
.tf-sidebar-input:checked + .tf-sidebar-mark svg {
|
|
13384
|
+
opacity: 1;
|
|
13385
|
+
}
|
|
13386
|
+
.tf-sidebar-input:focus-visible + .tf-sidebar-mark {
|
|
13387
|
+
outline: 2px solid var(--focus);
|
|
13388
|
+
outline-offset: 2px;
|
|
13389
|
+
}
|
|
13390
|
+
.tf-sidebar-option:has(.tf-sidebar-input:checked) {
|
|
13391
|
+
color: var(--ink);
|
|
13392
|
+
}
|
|
13393
|
+
/* free content in a group (sliders, date fields, chips) */
|
|
13394
|
+
.tf-sidebar-content {
|
|
13395
|
+
display: flex;
|
|
13396
|
+
flex-direction: column;
|
|
13397
|
+
gap: 12px;
|
|
13398
|
+
padding: 4px 12px 0;
|
|
13399
|
+
min-width: 0;
|
|
13400
|
+
}
|
|
13401
|
+
.tf-sidebar-groupbody {
|
|
13402
|
+
display: flex;
|
|
13403
|
+
flex-direction: column;
|
|
13404
|
+
gap: 2px;
|
|
13405
|
+
min-width: 0;
|
|
13406
|
+
}
|
|
13407
|
+
.tf-sidebar-item:hover,
|
|
13408
|
+
.tf-sidebar-item.flying {
|
|
12892
13409
|
background: var(--sidebar-accent);
|
|
12893
13410
|
color: var(--ink);
|
|
12894
13411
|
}
|
|
@@ -12903,10 +13420,21 @@ button.tf-runs-main[aria-expanded]:hover {
|
|
|
12903
13420
|
outline: 2px solid var(--focus);
|
|
12904
13421
|
outline-offset: 2px;
|
|
12905
13422
|
}
|
|
13423
|
+
.tf-sidebar-item:disabled {
|
|
13424
|
+
opacity: 0.45;
|
|
13425
|
+
cursor: not-allowed;
|
|
13426
|
+
}
|
|
13427
|
+
.tf-sidebar-item:disabled:hover {
|
|
13428
|
+
background: transparent;
|
|
13429
|
+
color: var(--ink-muted);
|
|
13430
|
+
}
|
|
12906
13431
|
.tf-sidebar-item.nested {
|
|
12907
13432
|
height: 32px;
|
|
12908
13433
|
padding-left: 40px;
|
|
12909
13434
|
}
|
|
13435
|
+
.tf-sidebar-sub {
|
|
13436
|
+
margin-top: 2px !important;
|
|
13437
|
+
}
|
|
12910
13438
|
.tf-sidebar-label {
|
|
12911
13439
|
flex: 1;
|
|
12912
13440
|
min-width: 0;
|
|
@@ -12915,22 +13443,107 @@ button.tf-runs-main[aria-expanded]:hover {
|
|
|
12915
13443
|
white-space: nowrap;
|
|
12916
13444
|
}
|
|
12917
13445
|
.tf-sidebar-chev {
|
|
13446
|
+
flex: none;
|
|
12918
13447
|
transition: transform var(--dur-base) var(--ease-out);
|
|
12919
13448
|
}
|
|
12920
13449
|
.tf-sidebar-item[aria-expanded="true"] .tf-sidebar-chev {
|
|
12921
13450
|
transform: rotate(180deg);
|
|
12922
13451
|
}
|
|
13452
|
+
.tf-sidebar-ext {
|
|
13453
|
+
flex: none;
|
|
13454
|
+
opacity: 0.7;
|
|
13455
|
+
}
|
|
13456
|
+
.tf-sidebar-count {
|
|
13457
|
+
flex: none;
|
|
13458
|
+
min-width: 20px;
|
|
13459
|
+
height: 20px;
|
|
13460
|
+
padding: 0 6px;
|
|
13461
|
+
box-sizing: border-box;
|
|
13462
|
+
border-radius: var(--radius-pill);
|
|
13463
|
+
background: var(--count);
|
|
13464
|
+
color: var(--on-count);
|
|
13465
|
+
font: 700 11px/20px var(--font-sans);
|
|
13466
|
+
text-align: center;
|
|
13467
|
+
}
|
|
13468
|
+
.tf-sidebar-badge {
|
|
13469
|
+
flex: none;
|
|
13470
|
+
height: 20px;
|
|
13471
|
+
padding: 0 8px;
|
|
13472
|
+
box-sizing: border-box;
|
|
13473
|
+
border-radius: var(--radius-pill);
|
|
13474
|
+
background: var(--count);
|
|
13475
|
+
color: var(--on-count);
|
|
13476
|
+
font: 700 10px/20px var(--font-sans);
|
|
13477
|
+
letter-spacing: 0.04em;
|
|
13478
|
+
text-transform: uppercase;
|
|
13479
|
+
}
|
|
13480
|
+
.tf-sidebar-dot {
|
|
13481
|
+
flex: none;
|
|
13482
|
+
width: 8px;
|
|
13483
|
+
height: 8px;
|
|
13484
|
+
border-radius: 50%;
|
|
13485
|
+
background: var(--count);
|
|
13486
|
+
}
|
|
13487
|
+
.tf-sidebar-sr {
|
|
13488
|
+
position: absolute;
|
|
13489
|
+
width: 1px;
|
|
13490
|
+
height: 1px;
|
|
13491
|
+
overflow: hidden;
|
|
13492
|
+
clip-path: inset(50%);
|
|
13493
|
+
white-space: nowrap;
|
|
13494
|
+
}
|
|
13495
|
+
/* the "…" menu of an item shows on hover and focus */
|
|
13496
|
+
.tf-sidebar-li.with-actions > .tf-sidebar-item {
|
|
13497
|
+
padding-right: 40px;
|
|
13498
|
+
}
|
|
13499
|
+
.tf-sidebar-more {
|
|
13500
|
+
position: absolute;
|
|
13501
|
+
top: 4px;
|
|
13502
|
+
right: 4px;
|
|
13503
|
+
opacity: 0;
|
|
13504
|
+
transition: opacity var(--dur-fast) var(--ease-out);
|
|
13505
|
+
}
|
|
13506
|
+
.tf-sidebar-li:hover > .tf-sidebar-more,
|
|
13507
|
+
.tf-sidebar-more:focus-visible,
|
|
13508
|
+
.tf-sidebar-more[aria-expanded="true"] {
|
|
13509
|
+
opacity: 1;
|
|
13510
|
+
}
|
|
12923
13511
|
.tf-sidebar-foot {
|
|
12924
13512
|
display: flex;
|
|
12925
13513
|
align-items: center;
|
|
12926
|
-
justify-content: space-between;
|
|
12927
13514
|
gap: 8px;
|
|
12928
13515
|
padding-top: 12px;
|
|
12929
13516
|
border-top: 1px solid var(--sidebar-border);
|
|
12930
13517
|
}
|
|
13518
|
+
.tf-sidebar-foot > :not(.tf-sidebar-toggle) {
|
|
13519
|
+
flex: 1;
|
|
13520
|
+
min-width: 0;
|
|
13521
|
+
}
|
|
13522
|
+
.tf-sidebar-toggle {
|
|
13523
|
+
flex: none;
|
|
13524
|
+
margin-left: auto;
|
|
13525
|
+
}
|
|
13526
|
+
.tf-sidebar-head .tf-pop-anchor,
|
|
13527
|
+
.tf-sidebar-foot .tf-pop-anchor {
|
|
13528
|
+
display: block;
|
|
13529
|
+
min-width: 0;
|
|
13530
|
+
}
|
|
13531
|
+
.tf-sidebar-head .tf-wssw {
|
|
13532
|
+
width: 100%;
|
|
13533
|
+
}
|
|
13534
|
+
.tf-sidebar-head .tf-wssw .tf-option-text {
|
|
13535
|
+
flex: 1;
|
|
13536
|
+
min-width: 0;
|
|
13537
|
+
}
|
|
13538
|
+
|
|
13539
|
+
/* collapsed: icons only; labels stay the accessible names, tooltips and flyouts show them */
|
|
13540
|
+
.tf-sidebar.collapsed .tf-sidebar-body {
|
|
13541
|
+
gap: 12px;
|
|
13542
|
+
}
|
|
12931
13543
|
.tf-sidebar.collapsed .tf-sidebar-label,
|
|
12932
13544
|
.tf-sidebar.collapsed .tf-sidebar-chev,
|
|
12933
|
-
.tf-sidebar.collapsed .tf-sidebar-
|
|
13545
|
+
.tf-sidebar.collapsed .tf-sidebar-ext,
|
|
13546
|
+
.tf-sidebar.collapsed .tf-sidebar-grouphead {
|
|
12934
13547
|
position: absolute;
|
|
12935
13548
|
width: 1px;
|
|
12936
13549
|
height: 1px;
|
|
@@ -12938,12 +13551,19 @@ button.tf-runs-main[aria-expanded]:hover {
|
|
|
12938
13551
|
clip-path: inset(50%);
|
|
12939
13552
|
white-space: nowrap;
|
|
12940
13553
|
}
|
|
13554
|
+
.tf-sidebar.collapsed .tf-sidebar-group + .tf-sidebar-group {
|
|
13555
|
+
padding-top: 12px;
|
|
13556
|
+
border-top: 1px solid var(--sidebar-border);
|
|
13557
|
+
}
|
|
12941
13558
|
.tf-sidebar.collapsed .tf-sidebar-item {
|
|
12942
13559
|
position: relative;
|
|
12943
13560
|
justify-content: center;
|
|
12944
13561
|
padding: 0;
|
|
12945
13562
|
}
|
|
12946
|
-
.tf-sidebar.collapsed .tf-
|
|
13563
|
+
.tf-sidebar.collapsed .tf-sidebar-item.has-current {
|
|
13564
|
+
background: var(--sidebar-accent);
|
|
13565
|
+
}
|
|
13566
|
+
.tf-sidebar.collapsed .tf-sidebar-count {
|
|
12947
13567
|
position: absolute;
|
|
12948
13568
|
top: -2px;
|
|
12949
13569
|
right: -2px;
|
|
@@ -12953,57 +13573,317 @@ button.tf-runs-main[aria-expanded]:hover {
|
|
|
12953
13573
|
font-size: 10px;
|
|
12954
13574
|
line-height: 16px;
|
|
12955
13575
|
}
|
|
13576
|
+
.tf-sidebar.collapsed .tf-sidebar-dot,
|
|
13577
|
+
.tf-sidebar.collapsed .tf-sidebar-badge {
|
|
13578
|
+
position: absolute;
|
|
13579
|
+
top: 6px;
|
|
13580
|
+
right: 8px;
|
|
13581
|
+
width: 8px;
|
|
13582
|
+
height: 8px;
|
|
13583
|
+
padding: 0;
|
|
13584
|
+
font-size: 0;
|
|
13585
|
+
}
|
|
13586
|
+
.tf-sidebar.collapsed .tf-sidebar-head {
|
|
13587
|
+
justify-content: center;
|
|
13588
|
+
padding: 0;
|
|
13589
|
+
}
|
|
12956
13590
|
.tf-sidebar.collapsed .tf-sidebar-foot {
|
|
12957
13591
|
flex-direction: column;
|
|
12958
13592
|
}
|
|
12959
|
-
|
|
12960
|
-
|
|
12961
|
-
|
|
12962
|
-
|
|
12963
|
-
|
|
12964
|
-
grid-template-columns: minmax(0, 1fr);
|
|
12965
|
-
}
|
|
12966
|
-
.tf-navmenu-feature {
|
|
12967
|
-
min-height: 0;
|
|
12968
|
-
}
|
|
12969
|
-
.tf-navmenu-list {
|
|
12970
|
-
flex-wrap: wrap;
|
|
12971
|
-
}
|
|
12972
|
-
.tf-menubar {
|
|
12973
|
-
flex-wrap: wrap;
|
|
12974
|
-
border-radius: var(--radius-lg);
|
|
12975
|
-
}
|
|
13593
|
+
.tf-sidebar.collapsed .tf-sidebar-foot > :not(.tf-sidebar-toggle) {
|
|
13594
|
+
flex: none;
|
|
13595
|
+
}
|
|
13596
|
+
.tf-sidebar.collapsed .tf-sidebar-toggle {
|
|
13597
|
+
margin-left: 0;
|
|
12976
13598
|
}
|
|
12977
13599
|
|
|
12978
|
-
/*
|
|
12979
|
-
.tf-
|
|
12980
|
-
|
|
12981
|
-
|
|
12982
|
-
animation-name: tf-sheet-left;
|
|
13600
|
+
/* tooltips, flyouts and item menus float in the portal, so the scrolling body does not clip them */
|
|
13601
|
+
.tf-sidebar-layer {
|
|
13602
|
+
position: fixed;
|
|
13603
|
+
z-index: var(--z-palette);
|
|
12983
13604
|
}
|
|
12984
|
-
.tf-
|
|
12985
|
-
|
|
12986
|
-
|
|
12987
|
-
|
|
12988
|
-
|
|
12989
|
-
|
|
13605
|
+
.tf-sidebar-tip {
|
|
13606
|
+
display: inline-flex;
|
|
13607
|
+
align-items: center;
|
|
13608
|
+
gap: 8px;
|
|
13609
|
+
padding: 4px 8px;
|
|
13610
|
+
border-radius: var(--radius-sm);
|
|
13611
|
+
background: var(--frame);
|
|
13612
|
+
color: var(--on-frame);
|
|
13613
|
+
font: 600 12px/16px var(--font-sans);
|
|
13614
|
+
white-space: nowrap;
|
|
13615
|
+
pointer-events: none;
|
|
13616
|
+
animation: tf-fade var(--dur-fast) var(--ease-out) both;
|
|
12990
13617
|
}
|
|
12991
|
-
.tf-
|
|
12992
|
-
|
|
12993
|
-
animation-name: tf-sheet-top;
|
|
13618
|
+
.tf-sidebar-tipcount {
|
|
13619
|
+
color: var(--on-frame-muted);
|
|
12994
13620
|
}
|
|
12995
|
-
.tf-
|
|
12996
|
-
|
|
12997
|
-
|
|
12998
|
-
|
|
13621
|
+
.tf-sidebar-flyout {
|
|
13622
|
+
min-width: 200px;
|
|
13623
|
+
padding: 6px;
|
|
13624
|
+
border-radius: var(--radius-md);
|
|
13625
|
+
background: var(--surface);
|
|
13626
|
+
color: var(--ink);
|
|
13627
|
+
box-shadow: var(--shadow-float);
|
|
13628
|
+
animation: tf-fade var(--dur-fast) var(--ease-out) both;
|
|
12999
13629
|
}
|
|
13000
|
-
|
|
13001
|
-
|
|
13002
|
-
|
|
13003
|
-
|
|
13004
|
-
|
|
13630
|
+
.tf-sidebar-flyout ul {
|
|
13631
|
+
display: flex;
|
|
13632
|
+
flex-direction: column;
|
|
13633
|
+
gap: 2px;
|
|
13634
|
+
margin: 0;
|
|
13635
|
+
padding: 0;
|
|
13636
|
+
list-style: none;
|
|
13005
13637
|
}
|
|
13006
|
-
|
|
13638
|
+
.tf-sidebar-flytitle {
|
|
13639
|
+
padding: 6px 12px 8px;
|
|
13640
|
+
font: 600 11px/14px var(--font-sans);
|
|
13641
|
+
letter-spacing: 0.06em;
|
|
13642
|
+
text-transform: uppercase;
|
|
13643
|
+
color: var(--ink-muted);
|
|
13644
|
+
}
|
|
13645
|
+
.tf-sidebar-flyout .tf-sidebar-item.nested {
|
|
13646
|
+
padding-left: 12px;
|
|
13647
|
+
}
|
|
13648
|
+
|
|
13649
|
+
/* on the AppShell frame */
|
|
13650
|
+
.tf-sidebar.shell {
|
|
13651
|
+
align-self: stretch;
|
|
13652
|
+
padding: 16px 8px 8px;
|
|
13653
|
+
border-radius: 0;
|
|
13654
|
+
background: transparent;
|
|
13655
|
+
box-shadow: none;
|
|
13656
|
+
color: var(--on-frame);
|
|
13657
|
+
}
|
|
13658
|
+
.tf-sidebar.shell .tf-sidebar-item,
|
|
13659
|
+
.tf-sidebar.shell .tf-sidebar-grouplabel {
|
|
13660
|
+
color: var(--on-frame-muted);
|
|
13661
|
+
}
|
|
13662
|
+
.tf-sidebar.shell .tf-sidebar-item:hover,
|
|
13663
|
+
.tf-sidebar.shell .tf-sidebar-item.flying,
|
|
13664
|
+
.tf-sidebar.shell.collapsed .tf-sidebar-item.has-current {
|
|
13665
|
+
background: var(--frame-hover);
|
|
13666
|
+
color: var(--on-frame);
|
|
13667
|
+
}
|
|
13668
|
+
.tf-sidebar.shell .tf-sidebar-item.has-current,
|
|
13669
|
+
.tf-sidebar.shell button.tf-sidebar-grouplabel:hover {
|
|
13670
|
+
color: var(--on-frame);
|
|
13671
|
+
}
|
|
13672
|
+
.tf-sidebar.shell .tf-sidebar-item[aria-current="page"] {
|
|
13673
|
+
background: var(--frame-active);
|
|
13674
|
+
color: var(--on-frame);
|
|
13675
|
+
}
|
|
13676
|
+
.tf-sidebar.shell .tf-sidebar-item:disabled:hover {
|
|
13677
|
+
background: transparent;
|
|
13678
|
+
color: var(--on-frame-muted);
|
|
13679
|
+
}
|
|
13680
|
+
.tf-sidebar.shell .tf-sidebar-foot,
|
|
13681
|
+
.tf-sidebar.shell.collapsed .tf-sidebar-group + .tf-sidebar-group {
|
|
13682
|
+
border-color: var(--frame-hover);
|
|
13683
|
+
}
|
|
13684
|
+
.tf-sidebar.shell .tf-iconbtn-ghost {
|
|
13685
|
+
color: var(--on-frame-muted);
|
|
13686
|
+
}
|
|
13687
|
+
.tf-sidebar.shell .tf-iconbtn-ghost:hover {
|
|
13688
|
+
background: var(--frame-hover);
|
|
13689
|
+
color: var(--on-frame);
|
|
13690
|
+
}
|
|
13691
|
+
.tf-sidebar.shell .tf-sidebar-head {
|
|
13692
|
+
min-height: 44px;
|
|
13693
|
+
}
|
|
13694
|
+
|
|
13695
|
+
/* UserMenu: the signed-in person, opening their account menu */
|
|
13696
|
+
.tf-usermenu {
|
|
13697
|
+
display: flex;
|
|
13698
|
+
align-items: center;
|
|
13699
|
+
gap: 10px;
|
|
13700
|
+
width: 100%;
|
|
13701
|
+
min-height: 44px;
|
|
13702
|
+
padding: 4px 8px 4px 4px;
|
|
13703
|
+
box-sizing: border-box;
|
|
13704
|
+
border: 0;
|
|
13705
|
+
border-radius: var(--radius-pill);
|
|
13706
|
+
background: transparent;
|
|
13707
|
+
color: var(--ink);
|
|
13708
|
+
font: inherit;
|
|
13709
|
+
text-align: left;
|
|
13710
|
+
cursor: pointer;
|
|
13711
|
+
}
|
|
13712
|
+
.tf-usermenu.compact {
|
|
13713
|
+
width: auto;
|
|
13714
|
+
padding: 4px;
|
|
13715
|
+
}
|
|
13716
|
+
.tf-usermenu:hover,
|
|
13717
|
+
.tf-usermenu[aria-expanded="true"] {
|
|
13718
|
+
background: var(--sidebar-accent);
|
|
13719
|
+
}
|
|
13720
|
+
.tf-usermenu:focus-visible {
|
|
13721
|
+
outline: 2px solid var(--focus);
|
|
13722
|
+
outline-offset: 2px;
|
|
13723
|
+
}
|
|
13724
|
+
.tf-usermenu-avatar {
|
|
13725
|
+
display: inline-flex;
|
|
13726
|
+
flex: none;
|
|
13727
|
+
}
|
|
13728
|
+
.tf-usermenu-text {
|
|
13729
|
+
display: flex;
|
|
13730
|
+
flex-direction: column;
|
|
13731
|
+
flex: 1;
|
|
13732
|
+
min-width: 0;
|
|
13733
|
+
}
|
|
13734
|
+
.tf-usermenu-name {
|
|
13735
|
+
font: 600 13px/18px var(--font-sans);
|
|
13736
|
+
overflow: hidden;
|
|
13737
|
+
text-overflow: ellipsis;
|
|
13738
|
+
white-space: nowrap;
|
|
13739
|
+
}
|
|
13740
|
+
.tf-usermenu-mail {
|
|
13741
|
+
font: 500 11px/14px var(--font-sans);
|
|
13742
|
+
color: var(--ink-muted);
|
|
13743
|
+
overflow: hidden;
|
|
13744
|
+
text-overflow: ellipsis;
|
|
13745
|
+
white-space: nowrap;
|
|
13746
|
+
}
|
|
13747
|
+
.tf-sidebar.shell .tf-usermenu {
|
|
13748
|
+
color: var(--on-frame);
|
|
13749
|
+
}
|
|
13750
|
+
.tf-sidebar.shell .tf-usermenu:hover,
|
|
13751
|
+
.tf-sidebar.shell .tf-usermenu[aria-expanded="true"] {
|
|
13752
|
+
background: var(--frame-hover);
|
|
13753
|
+
}
|
|
13754
|
+
.tf-sidebar.shell .tf-usermenu-mail {
|
|
13755
|
+
color: var(--on-frame-muted);
|
|
13756
|
+
}
|
|
13757
|
+
.tf-wssw.compact {
|
|
13758
|
+
padding: 4px;
|
|
13759
|
+
}
|
|
13760
|
+
|
|
13761
|
+
/* the bar that opens the sidebar as a drawer on phones */
|
|
13762
|
+
.tf-sidebar-bar,
|
|
13763
|
+
.tf-sidebar-scrim {
|
|
13764
|
+
display: none;
|
|
13765
|
+
}
|
|
13766
|
+
@media (max-width: 760px) {
|
|
13767
|
+
.tf-sidebar-bar {
|
|
13768
|
+
display: flex;
|
|
13769
|
+
align-items: center;
|
|
13770
|
+
gap: 8px;
|
|
13771
|
+
min-height: 52px;
|
|
13772
|
+
padding: 6px 12px 6px 6px;
|
|
13773
|
+
box-sizing: border-box;
|
|
13774
|
+
border-radius: var(--radius-lg);
|
|
13775
|
+
background: var(--surface);
|
|
13776
|
+
box-shadow: var(--shadow-card);
|
|
13777
|
+
color: var(--ink);
|
|
13778
|
+
}
|
|
13779
|
+
.tf-sidebar-bar.attached {
|
|
13780
|
+
border-radius: 0;
|
|
13781
|
+
box-shadow: none;
|
|
13782
|
+
background: var(--sidebar);
|
|
13783
|
+
border-bottom: 1px solid var(--sidebar-border);
|
|
13784
|
+
}
|
|
13785
|
+
.tf-sidebar-bar.shell {
|
|
13786
|
+
min-height: 56px;
|
|
13787
|
+
padding: 8px 8px 8px 0;
|
|
13788
|
+
border-radius: 0;
|
|
13789
|
+
box-shadow: none;
|
|
13790
|
+
background: transparent;
|
|
13791
|
+
color: var(--on-frame);
|
|
13792
|
+
}
|
|
13793
|
+
.tf-sidebar-bar.shell .tf-iconbtn-ghost {
|
|
13794
|
+
color: var(--on-frame);
|
|
13795
|
+
}
|
|
13796
|
+
.tf-sidebar-bar > :not(.tf-iconbtn) {
|
|
13797
|
+
min-width: 0;
|
|
13798
|
+
}
|
|
13799
|
+
.tf-sidebar,
|
|
13800
|
+
.tf-sidebar.attached,
|
|
13801
|
+
.tf-sidebar.shell {
|
|
13802
|
+
position: fixed;
|
|
13803
|
+
top: 0;
|
|
13804
|
+
bottom: 0;
|
|
13805
|
+
left: 0;
|
|
13806
|
+
z-index: var(--z-overlay);
|
|
13807
|
+
width: min(300px, 86vw);
|
|
13808
|
+
min-height: 0;
|
|
13809
|
+
padding: 12px;
|
|
13810
|
+
border-radius: 0 var(--radius-lg) var(--radius-lg) 0;
|
|
13811
|
+
box-shadow: var(--shadow-float);
|
|
13812
|
+
transform: translateX(-105%);
|
|
13813
|
+
visibility: hidden;
|
|
13814
|
+
transition:
|
|
13815
|
+
transform var(--dur-base) var(--ease-out),
|
|
13816
|
+
visibility 0s linear var(--dur-base);
|
|
13817
|
+
}
|
|
13818
|
+
.tf-sidebar.shell {
|
|
13819
|
+
background: var(--frame);
|
|
13820
|
+
}
|
|
13821
|
+
.tf-sidebar.attached {
|
|
13822
|
+
background: var(--sidebar);
|
|
13823
|
+
}
|
|
13824
|
+
.tf-sidebar.open {
|
|
13825
|
+
transform: none;
|
|
13826
|
+
visibility: visible;
|
|
13827
|
+
transition: transform var(--dur-base) var(--ease-out);
|
|
13828
|
+
}
|
|
13829
|
+
.tf-sidebar-toggle {
|
|
13830
|
+
display: none;
|
|
13831
|
+
}
|
|
13832
|
+
.tf-sidebar-scrim {
|
|
13833
|
+
display: block;
|
|
13834
|
+
position: fixed;
|
|
13835
|
+
inset: 0;
|
|
13836
|
+
z-index: var(--z-overlay);
|
|
13837
|
+
background: var(--scrim-strong);
|
|
13838
|
+
animation: tf-fade var(--dur-base) var(--ease-out) both;
|
|
13839
|
+
}
|
|
13840
|
+
}
|
|
13841
|
+
|
|
13842
|
+
@media (max-width: 760px) {
|
|
13843
|
+
.tf-navmenu-panel.with-feature {
|
|
13844
|
+
grid-template-columns: minmax(0, 1fr);
|
|
13845
|
+
}
|
|
13846
|
+
.tf-navmenu-feature {
|
|
13847
|
+
min-height: 0;
|
|
13848
|
+
}
|
|
13849
|
+
.tf-navmenu-list {
|
|
13850
|
+
flex-wrap: wrap;
|
|
13851
|
+
}
|
|
13852
|
+
.tf-menubar {
|
|
13853
|
+
flex-wrap: wrap;
|
|
13854
|
+
border-radius: var(--radius-lg);
|
|
13855
|
+
}
|
|
13856
|
+
}
|
|
13857
|
+
|
|
13858
|
+
/* Drawer (sheet) sides */
|
|
13859
|
+
.tf-drawer.side-left {
|
|
13860
|
+
right: auto;
|
|
13861
|
+
left: 0;
|
|
13862
|
+
animation-name: tf-sheet-left;
|
|
13863
|
+
}
|
|
13864
|
+
.tf-drawer.side-top,
|
|
13865
|
+
.tf-drawer.side-bottom {
|
|
13866
|
+
left: 0;
|
|
13867
|
+
right: 0;
|
|
13868
|
+
width: 100%;
|
|
13869
|
+
max-height: min(80%, 640px);
|
|
13870
|
+
}
|
|
13871
|
+
.tf-drawer.side-top {
|
|
13872
|
+
bottom: auto;
|
|
13873
|
+
animation-name: tf-sheet-top;
|
|
13874
|
+
}
|
|
13875
|
+
.tf-drawer.side-bottom {
|
|
13876
|
+
top: auto;
|
|
13877
|
+
border-radius: var(--radius-xl) var(--radius-xl) 0 0;
|
|
13878
|
+
animation-name: tf-sheet-bottom;
|
|
13879
|
+
}
|
|
13880
|
+
@keyframes tf-sheet-left {
|
|
13881
|
+
from {
|
|
13882
|
+
opacity: 0;
|
|
13883
|
+
transform: translateX(calc(-24px * var(--motion-travel)));
|
|
13884
|
+
}
|
|
13885
|
+
}
|
|
13886
|
+
@keyframes tf-sheet-top {
|
|
13007
13887
|
from {
|
|
13008
13888
|
opacity: 0;
|
|
13009
13889
|
transform: translateY(calc(-24px * var(--motion-travel)));
|
|
@@ -13141,7 +14021,7 @@ a.tf-iconbtn {
|
|
|
13141
14021
|
/* Tablet: asides move below the main column, nav labels and the page nav shrink to icons */
|
|
13142
14022
|
@container tf-shell (max-width: 1180px) {
|
|
13143
14023
|
.tf-sheet:not(.tf-sheet-2):not(.tf-sheet-nav) {
|
|
13144
|
-
grid-template-columns:
|
|
14024
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
13145
14025
|
}
|
|
13146
14026
|
.tf-sheet-nav.tf-sheet-aside {
|
|
13147
14027
|
grid-template-columns: 208px minmax(0, 1fr);
|
|
@@ -13149,6 +14029,13 @@ a.tf-iconbtn {
|
|
|
13149
14029
|
.tf-sheet > .tf-main ~ :not(.tf-dock-float) {
|
|
13150
14030
|
grid-column: 2;
|
|
13151
14031
|
}
|
|
14032
|
+
/* with the sidebar there is no rail column: asides go below the main column */
|
|
14033
|
+
.tf-sheet.tf-sheet-norail:not(.tf-sheet-2) {
|
|
14034
|
+
grid-template-columns: minmax(0, 1fr);
|
|
14035
|
+
}
|
|
14036
|
+
.tf-sheet-norail > .tf-main ~ :not(.tf-dock-float) {
|
|
14037
|
+
grid-column: 1;
|
|
14038
|
+
}
|
|
13152
14039
|
/* the dock floats over the end of the sheet, not of the main column (asides follow it) */
|
|
13153
14040
|
.tf-main-dock {
|
|
13154
14041
|
padding-bottom: 0;
|
|
@@ -13179,7 +14066,7 @@ a.tf-iconbtn {
|
|
|
13179
14066
|
@container tf-shell (max-width: 1040px) {
|
|
13180
14067
|
.tf-sheet-nav,
|
|
13181
14068
|
.tf-sheet-nav.tf-sheet-aside {
|
|
13182
|
-
grid-template-columns:
|
|
14069
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
13183
14070
|
}
|
|
13184
14071
|
.tf-subnav-eyebrow {
|
|
13185
14072
|
display: none;
|
|
@@ -13276,6 +14163,21 @@ a.tf-iconbtn {
|
|
|
13276
14163
|
.tf-rail-group {
|
|
13277
14164
|
flex-direction: row;
|
|
13278
14165
|
}
|
|
14166
|
+
/* on phones the rail is a row of icons, expanded or not */
|
|
14167
|
+
.tf-rail.expanded {
|
|
14168
|
+
width: auto;
|
|
14169
|
+
}
|
|
14170
|
+
.tf-rail.expanded .tf-rail-btn {
|
|
14171
|
+
display: grid;
|
|
14172
|
+
width: 40px;
|
|
14173
|
+
padding: 0;
|
|
14174
|
+
}
|
|
14175
|
+
.tf-rail.expanded .tf-rail-label {
|
|
14176
|
+
display: none;
|
|
14177
|
+
}
|
|
14178
|
+
.tf-rail.expanded .tf-dotcount {
|
|
14179
|
+
position: absolute;
|
|
14180
|
+
}
|
|
13279
14181
|
.tf-main {
|
|
13280
14182
|
gap: var(--space-4);
|
|
13281
14183
|
}
|
|
@@ -13367,6 +14269,56 @@ a.tf-iconbtn {
|
|
|
13367
14269
|
max-width: 100%;
|
|
13368
14270
|
overflow-x: auto;
|
|
13369
14271
|
}
|
|
14272
|
+
/* Table stack: narrow boxes show every row as a card, each cell with its column label */
|
|
14273
|
+
.tf-table-stackbox {
|
|
14274
|
+
container: tf-table / inline-size;
|
|
14275
|
+
}
|
|
14276
|
+
@container tf-table (max-width: 600px) {
|
|
14277
|
+
.tf-table.stack thead {
|
|
14278
|
+
position: absolute;
|
|
14279
|
+
width: 1px;
|
|
14280
|
+
height: 1px;
|
|
14281
|
+
overflow: hidden;
|
|
14282
|
+
clip-path: inset(50%);
|
|
14283
|
+
}
|
|
14284
|
+
.tf-table.stack,
|
|
14285
|
+
.tf-table.stack tbody,
|
|
14286
|
+
.tf-table.stack tr {
|
|
14287
|
+
display: block;
|
|
14288
|
+
}
|
|
14289
|
+
.tf-table.stack tr {
|
|
14290
|
+
padding: 8px 0;
|
|
14291
|
+
border-bottom: 1px solid var(--line);
|
|
14292
|
+
}
|
|
14293
|
+
.tf-table.stack tr:last-child {
|
|
14294
|
+
border-bottom: 0;
|
|
14295
|
+
}
|
|
14296
|
+
.tf-table.stack td {
|
|
14297
|
+
display: flex;
|
|
14298
|
+
align-items: center;
|
|
14299
|
+
justify-content: space-between;
|
|
14300
|
+
gap: 16px;
|
|
14301
|
+
height: auto;
|
|
14302
|
+
min-height: 32px;
|
|
14303
|
+
padding: 4px 0;
|
|
14304
|
+
border-bottom: 0;
|
|
14305
|
+
text-align: right;
|
|
14306
|
+
white-space: normal;
|
|
14307
|
+
}
|
|
14308
|
+
.tf-table.stack td::before {
|
|
14309
|
+
content: attr(data-label);
|
|
14310
|
+
flex: none;
|
|
14311
|
+
max-width: 50%;
|
|
14312
|
+
text-align: left;
|
|
14313
|
+
font: 600 11px/14px var(--font-sans);
|
|
14314
|
+
letter-spacing: 0.06em;
|
|
14315
|
+
text-transform: uppercase;
|
|
14316
|
+
color: var(--ink-muted);
|
|
14317
|
+
}
|
|
14318
|
+
.tf-table.stack tbody tr:hover td {
|
|
14319
|
+
background: transparent;
|
|
14320
|
+
}
|
|
14321
|
+
}
|
|
13370
14322
|
|
|
13371
14323
|
/* ── Phone: components ── */
|
|
13372
14324
|
@media (max-width: 760px) {
|
|
@@ -13401,15 +14353,15 @@ a.tf-iconbtn {
|
|
|
13401
14353
|
height: 52px;
|
|
13402
14354
|
}
|
|
13403
14355
|
|
|
13404
|
-
/* segmented controls and tabs scroll sideways when the labels do not fit */
|
|
13405
|
-
.tf-seg,
|
|
13406
|
-
.tf-tabs {
|
|
14356
|
+
/* segmented controls and tabs scroll sideways when the labels do not fit (block ones shrink) */
|
|
14357
|
+
.tf-seg:not(.block),
|
|
14358
|
+
.tf-tabs:not(.tf-tabs-block) {
|
|
13407
14359
|
max-width: 100%;
|
|
13408
14360
|
overflow-x: auto;
|
|
13409
14361
|
scrollbar-width: none;
|
|
13410
14362
|
}
|
|
13411
|
-
.tf-seg-item,
|
|
13412
|
-
.tf-tab {
|
|
14363
|
+
.tf-seg:not(.block) .tf-seg-item,
|
|
14364
|
+
.tf-tabs:not(.tf-tabs-block) .tf-tab {
|
|
13413
14365
|
flex: none;
|
|
13414
14366
|
}
|
|
13415
14367
|
.tf-seg,
|
|
@@ -13558,6 +14510,71 @@ a.tf-iconbtn {
|
|
|
13558
14510
|
}
|
|
13559
14511
|
}
|
|
13560
14512
|
|
|
14513
|
+
/* AppShell with a sidebar on phones: the sidebar's bar on top of the frame, the sheet below */
|
|
14514
|
+
@media (max-width: 760px) {
|
|
14515
|
+
.tf-shell.tf-shell-sidebar {
|
|
14516
|
+
grid-template-columns: minmax(0, 1fr);
|
|
14517
|
+
padding: 0 8px 8px;
|
|
14518
|
+
}
|
|
14519
|
+
}
|
|
14520
|
+
|
|
14521
|
+
/* Fluid at every width: segmented controls, tabs and toggle groups never push past their
|
|
14522
|
+
container. When space runs short the items shrink and their labels end in an ellipsis. */
|
|
14523
|
+
.tf-tabs {
|
|
14524
|
+
max-width: 100%;
|
|
14525
|
+
box-sizing: border-box;
|
|
14526
|
+
}
|
|
14527
|
+
.tf-seg-item,
|
|
14528
|
+
.tf-tab,
|
|
14529
|
+
.tf-togglegroup .tf-toggle {
|
|
14530
|
+
min-width: 0;
|
|
14531
|
+
}
|
|
14532
|
+
.tf-seg-label,
|
|
14533
|
+
.tf-tab,
|
|
14534
|
+
.tf-toggle-label {
|
|
14535
|
+
overflow: hidden;
|
|
14536
|
+
text-overflow: ellipsis;
|
|
14537
|
+
white-space: nowrap;
|
|
14538
|
+
}
|
|
14539
|
+
|
|
14540
|
+
/* key hints mean nothing on touch screens */
|
|
14541
|
+
@media (pointer: coarse) {
|
|
14542
|
+
.tf-search .tf-kbd {
|
|
14543
|
+
display: none;
|
|
14544
|
+
}
|
|
14545
|
+
}
|
|
14546
|
+
|
|
14547
|
+
/* Fluid actions: an action row measures itself, so its buttons answer to the box it sits in (a
|
|
14548
|
+
thin card, a side panel, a phone) instead of the window. When the row is narrow it wraps and
|
|
14549
|
+
its buttons share the full width; when it is very narrow each button takes a line. The rows are
|
|
14550
|
+
the kit's own footers and action bars, and plain `.tf-row`s of buttons placed directly in a
|
|
14551
|
+
column box (panel, card, dialog, form …), where they always span the box. */
|
|
14552
|
+
:is(
|
|
14553
|
+
.tf-modal-foot,
|
|
14554
|
+
.tf-card-foot,
|
|
14555
|
+
.tf-approval-foot,
|
|
14556
|
+
.tf-review-actions,
|
|
14557
|
+
.tf-cookie-actions,
|
|
14558
|
+
.tf-push-actions,
|
|
14559
|
+
.tf-insight-actions,
|
|
14560
|
+
.tf-journal-foot,
|
|
14561
|
+
:is(.tf-panel, .tf-card, .tf-modal, .tf-drawer, .tf-popover, .tf-form, .tf-col)
|
|
14562
|
+
> .tf-row:not(:has(> :not(.tf-btn, .tf-iconbtn)))
|
|
14563
|
+
) {
|
|
14564
|
+
container: tf-actions / inline-size;
|
|
14565
|
+
flex-wrap: wrap;
|
|
14566
|
+
}
|
|
14567
|
+
@container tf-actions (max-width: 400px) {
|
|
14568
|
+
.tf-btn {
|
|
14569
|
+
flex: 1 1 auto;
|
|
14570
|
+
}
|
|
14571
|
+
}
|
|
14572
|
+
@container tf-actions (max-width: 240px) {
|
|
14573
|
+
.tf-btn {
|
|
14574
|
+
flex-basis: 100%;
|
|
14575
|
+
}
|
|
14576
|
+
}
|
|
14577
|
+
|
|
13561
14578
|
/* 07-polish.css */
|
|
13562
14579
|
/* ───────────── Polish ─────────────
|
|
13563
14580
|
Small consistency fixes found by auditing every preview in both kits and themes. Zero
|
|
@@ -13766,10 +14783,17 @@ textarea.tf-input,
|
|
|
13766
14783
|
.tf-card,
|
|
13767
14784
|
.tf-stat,
|
|
13768
14785
|
.tf-dock,
|
|
13769
|
-
.tf-sidebar,
|
|
14786
|
+
.tf-sidebar:not(.shell),
|
|
13770
14787
|
.tf-map-legend,
|
|
13771
14788
|
.tf-map-ctl,
|
|
13772
|
-
.tf-map-pop
|
|
14789
|
+
.tf-map-pop,
|
|
14790
|
+
.tf-vital,
|
|
14791
|
+
.tf-journal,
|
|
14792
|
+
.tf-goal,
|
|
14793
|
+
.tf-insight,
|
|
14794
|
+
.tf-consent-item,
|
|
14795
|
+
.tf-nw,
|
|
14796
|
+
.tf-policy
|
|
13773
14797
|
):not(
|
|
13774
14798
|
:is(
|
|
13775
14799
|
.tf-panel,
|
|
@@ -13785,6 +14809,13 @@ textarea.tf-input,
|
|
|
13785
14809
|
.tf-palette,
|
|
13786
14810
|
.tf-modal,
|
|
13787
14811
|
.tf-drawer,
|
|
14812
|
+
.tf-vital,
|
|
14813
|
+
.tf-journal,
|
|
14814
|
+
.tf-goal,
|
|
14815
|
+
.tf-insight,
|
|
14816
|
+
.tf-consent-item,
|
|
14817
|
+
.tf-nw,
|
|
14818
|
+
.tf-policy,
|
|
13788
14819
|
.tf-glass
|
|
13789
14820
|
)
|
|
13790
14821
|
*
|
|
@@ -13879,6 +14910,10 @@ textarea.tf-input,
|
|
|
13879
14910
|
.tf-modal,
|
|
13880
14911
|
.tf-drawer,
|
|
13881
14912
|
.tf-glass,
|
|
14913
|
+
.tf-insight,
|
|
14914
|
+
.tf-policy,
|
|
14915
|
+
.tf-consent-item,
|
|
14916
|
+
.tf-journal,
|
|
13882
14917
|
.tf-btngroup,
|
|
13883
14918
|
.tf-map-ctl,
|
|
13884
14919
|
.tf-topbar
|
|
@@ -13904,7 +14939,21 @@ textarea.tf-input,
|
|
|
13904
14939
|
}
|
|
13905
14940
|
[data-surface="glass"]
|
|
13906
14941
|
:is(.tf-iconbtn-soft, .tf-iconbtn-outline, .tf-btn-secondary, .tf-chip):not(
|
|
13907
|
-
:is(
|
|
14942
|
+
:is(
|
|
14943
|
+
.tf-panel,
|
|
14944
|
+
.tf-card,
|
|
14945
|
+
.tf-dock,
|
|
14946
|
+
.tf-popover,
|
|
14947
|
+
.tf-menu,
|
|
14948
|
+
.tf-modal,
|
|
14949
|
+
.tf-drawer,
|
|
14950
|
+
.tf-insight,
|
|
14951
|
+
.tf-policy,
|
|
14952
|
+
.tf-consent-item,
|
|
14953
|
+
.tf-journal,
|
|
14954
|
+
.tf-glass
|
|
14955
|
+
)
|
|
14956
|
+
*
|
|
13908
14957
|
):not(.tf-solid):not([aria-pressed="true"]):hover {
|
|
13909
14958
|
background:
|
|
13910
14959
|
linear-gradient(var(--glass-hover), var(--glass-hover)) border-box,
|
|
@@ -13955,10 +15004,17 @@ textarea.tf-input,
|
|
|
13955
15004
|
.tf-card,
|
|
13956
15005
|
.tf-stat,
|
|
13957
15006
|
.tf-dock,
|
|
13958
|
-
.tf-sidebar,
|
|
15007
|
+
.tf-sidebar:not(.shell),
|
|
13959
15008
|
.tf-map-legend,
|
|
13960
15009
|
.tf-map-ctl,
|
|
13961
|
-
.tf-map-pop
|
|
15010
|
+
.tf-map-pop,
|
|
15011
|
+
.tf-vital,
|
|
15012
|
+
.tf-journal,
|
|
15013
|
+
.tf-goal,
|
|
15014
|
+
.tf-insight,
|
|
15015
|
+
.tf-consent-item,
|
|
15016
|
+
.tf-nw,
|
|
15017
|
+
.tf-policy
|
|
13962
15018
|
) {
|
|
13963
15019
|
outline: 1px solid CanvasText;
|
|
13964
15020
|
outline-offset: -1px;
|
|
@@ -13987,11 +15043,13 @@ textarea.tf-input,
|
|
|
13987
15043
|
inset: 0;
|
|
13988
15044
|
z-index: 1;
|
|
13989
15045
|
display: grid;
|
|
13990
|
-
grid-template-columns:
|
|
15046
|
+
grid-template-columns:
|
|
15047
|
+
minmax(0, var(--floating-start, 320px)) minmax(0, 1fr)
|
|
15048
|
+
minmax(0, var(--floating-end, 340px));
|
|
13991
15049
|
grid-template-rows: auto minmax(0, 1fr) auto;
|
|
13992
15050
|
grid-template-areas:
|
|
13993
15051
|
"top top top"
|
|
13994
|
-
"start
|
|
15052
|
+
"start controls end"
|
|
13995
15053
|
"bottom bottom bottom";
|
|
13996
15054
|
gap: var(--space-4);
|
|
13997
15055
|
padding: var(--space-4);
|
|
@@ -14022,6 +15080,32 @@ textarea.tf-input,
|
|
|
14022
15080
|
grid-area: bottom;
|
|
14023
15081
|
justify-self: center;
|
|
14024
15082
|
}
|
|
15083
|
+
/* background controls and source notes: the free corner, clear of the panels and the dock */
|
|
15084
|
+
.tf-floating-ui > .tf-floating-controls {
|
|
15085
|
+
grid-area: controls;
|
|
15086
|
+
align-self: end;
|
|
15087
|
+
justify-self: end;
|
|
15088
|
+
display: flex;
|
|
15089
|
+
flex-direction: column;
|
|
15090
|
+
align-items: flex-end;
|
|
15091
|
+
gap: var(--space-2);
|
|
15092
|
+
pointer-events: none;
|
|
15093
|
+
}
|
|
15094
|
+
.tf-floating-controls > * {
|
|
15095
|
+
pointer-events: auto;
|
|
15096
|
+
}
|
|
15097
|
+
.tf-floating-attribution {
|
|
15098
|
+
max-width: 100%;
|
|
15099
|
+
padding: 2px 8px;
|
|
15100
|
+
border-radius: var(--radius-sm);
|
|
15101
|
+
background: var(--surface);
|
|
15102
|
+
color: var(--ink-muted);
|
|
15103
|
+
font: 500 11px/16px var(--font-sans);
|
|
15104
|
+
overflow-wrap: anywhere;
|
|
15105
|
+
}
|
|
15106
|
+
.tf-floating-handle {
|
|
15107
|
+
display: none;
|
|
15108
|
+
}
|
|
14025
15109
|
.tf-floating-ui > :is(.tf-floating-top, .tf-floating-bottom) {
|
|
14026
15110
|
pointer-events: none;
|
|
14027
15111
|
}
|
|
@@ -14047,10 +15131,79 @@ textarea.tf-input,
|
|
|
14047
15131
|
gap: var(--space-3);
|
|
14048
15132
|
padding: var(--space-3);
|
|
14049
15133
|
}
|
|
14050
|
-
|
|
14051
|
-
|
|
14052
|
-
|
|
14053
|
-
|
|
15134
|
+
.tf-floating-ui > .tf-floating-controls {
|
|
15135
|
+
grid-area: auto;
|
|
15136
|
+
grid-row: 3;
|
|
15137
|
+
}
|
|
15138
|
+
/* the end slot as a bottom sheet over the background: a peek, or most of the height */
|
|
15139
|
+
.tf-floating.has-sheet .tf-floating-ui {
|
|
15140
|
+
grid-template-rows: auto auto minmax(120px, 1fr) auto;
|
|
15141
|
+
grid-template-areas:
|
|
15142
|
+
"top"
|
|
15143
|
+
"start"
|
|
15144
|
+
"."
|
|
15145
|
+
"bottom";
|
|
15146
|
+
padding-bottom: calc(var(--space-3) + 96px);
|
|
15147
|
+
}
|
|
15148
|
+
.tf-floating.has-sheet .tf-floating-end {
|
|
15149
|
+
position: absolute;
|
|
15150
|
+
left: var(--space-3);
|
|
15151
|
+
right: var(--space-3);
|
|
15152
|
+
bottom: 0;
|
|
15153
|
+
z-index: 2;
|
|
15154
|
+
max-height: 96px;
|
|
15155
|
+
overflow: hidden;
|
|
15156
|
+
border-radius: var(--radius-lg) var(--radius-lg) 0 0;
|
|
15157
|
+
background: var(--surface);
|
|
15158
|
+
box-shadow: var(--shadow-card);
|
|
15159
|
+
transition: max-height var(--dur-base) var(--ease-out);
|
|
15160
|
+
}
|
|
15161
|
+
[data-surface="glass"].tf-floating.has-sheet .tf-floating-end {
|
|
15162
|
+
background: var(--glass);
|
|
15163
|
+
-webkit-backdrop-filter: var(--glass-filter);
|
|
15164
|
+
backdrop-filter: var(--glass-filter);
|
|
15165
|
+
}
|
|
15166
|
+
.tf-floating.has-sheet.sheet-full .tf-floating-end {
|
|
15167
|
+
max-height: 75%;
|
|
15168
|
+
overflow-y: auto;
|
|
15169
|
+
}
|
|
15170
|
+
.tf-floating.has-sheet .tf-floating-handle {
|
|
15171
|
+
display: block;
|
|
15172
|
+
position: sticky;
|
|
15173
|
+
top: 0;
|
|
15174
|
+
z-index: 1;
|
|
15175
|
+
width: 100%;
|
|
15176
|
+
height: 24px;
|
|
15177
|
+
margin: 0;
|
|
15178
|
+
padding: 0;
|
|
15179
|
+
border: 0;
|
|
15180
|
+
background: transparent;
|
|
15181
|
+
cursor: pointer;
|
|
15182
|
+
}
|
|
15183
|
+
.tf-floating.has-sheet .tf-floating-handle::before {
|
|
15184
|
+
content: "";
|
|
15185
|
+
display: block;
|
|
15186
|
+
width: 40px;
|
|
15187
|
+
height: 4px;
|
|
15188
|
+
margin: 10px auto;
|
|
15189
|
+
border-radius: var(--radius-pill);
|
|
15190
|
+
background: var(--line-strong);
|
|
15191
|
+
}
|
|
15192
|
+
.tf-floating.has-sheet .tf-floating-handle:focus-visible {
|
|
15193
|
+
outline: 2px solid var(--focus);
|
|
15194
|
+
outline-offset: -2px;
|
|
15195
|
+
}
|
|
15196
|
+
}
|
|
15197
|
+
|
|
15198
|
+
/* in a glass layout the attribution is glass too */
|
|
15199
|
+
[data-surface="glass"] .tf-floating-attribution {
|
|
15200
|
+
background: var(--glass);
|
|
15201
|
+
-webkit-backdrop-filter: var(--glass-filter);
|
|
15202
|
+
backdrop-filter: var(--glass-filter);
|
|
15203
|
+
}
|
|
15204
|
+
|
|
15205
|
+
/* 09-motion.css */
|
|
15206
|
+
/* Motion: leaving layers, reveal on scroll, page transitions, the expressive level.
|
|
14054
15207
|
*
|
|
14055
15208
|
* Levels come from `data-motion` (tokens.css): "standard", "expressive" (longer, staggered page
|
|
14056
15209
|
* entrances, more travel) and "off". The reader's reduced-motion setting always means off. Only
|
|
@@ -14253,3 +15406,1373 @@ textarea.tf-input,
|
|
|
14253
15406
|
[data-motion="off"] .tf-ambient-field {
|
|
14254
15407
|
animation: none;
|
|
14255
15408
|
}
|
|
15409
|
+
|
|
15410
|
+
/* 11-life.css */
|
|
15411
|
+
/* Life: habits, mood, vitals, activity rings, sleep, medication, journal, goals, insights, consent */
|
|
15412
|
+
|
|
15413
|
+
/* HabitTracker */
|
|
15414
|
+
.tf-habits {
|
|
15415
|
+
container: tf-habits / inline-size;
|
|
15416
|
+
display: grid;
|
|
15417
|
+
gap: 4px;
|
|
15418
|
+
min-width: 0;
|
|
15419
|
+
}
|
|
15420
|
+
.tf-habit-days,
|
|
15421
|
+
.tf-habit-marks {
|
|
15422
|
+
display: grid;
|
|
15423
|
+
grid-auto-flow: column;
|
|
15424
|
+
grid-auto-columns: 24px;
|
|
15425
|
+
gap: 6px;
|
|
15426
|
+
}
|
|
15427
|
+
.tf-habit-days {
|
|
15428
|
+
justify-self: end;
|
|
15429
|
+
padding-right: 12px;
|
|
15430
|
+
font: 600 11px/16px var(--font-sans);
|
|
15431
|
+
color: var(--ink-muted);
|
|
15432
|
+
text-align: center;
|
|
15433
|
+
}
|
|
15434
|
+
.tf-habit {
|
|
15435
|
+
display: grid;
|
|
15436
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
15437
|
+
align-items: center;
|
|
15438
|
+
gap: 12px;
|
|
15439
|
+
padding: 8px 12px;
|
|
15440
|
+
border-radius: var(--radius-md);
|
|
15441
|
+
}
|
|
15442
|
+
.tf-habit:hover {
|
|
15443
|
+
background: var(--surface-sunken);
|
|
15444
|
+
}
|
|
15445
|
+
.tf-habit-text {
|
|
15446
|
+
display: flex;
|
|
15447
|
+
flex-direction: column;
|
|
15448
|
+
min-width: 0;
|
|
15449
|
+
}
|
|
15450
|
+
.tf-habit-text b {
|
|
15451
|
+
overflow: hidden;
|
|
15452
|
+
text-overflow: ellipsis;
|
|
15453
|
+
white-space: nowrap;
|
|
15454
|
+
font: 600 14px/20px var(--font-sans);
|
|
15455
|
+
}
|
|
15456
|
+
.tf-habit-text small {
|
|
15457
|
+
display: flex;
|
|
15458
|
+
flex-wrap: wrap;
|
|
15459
|
+
gap: 4px 10px;
|
|
15460
|
+
font: 500 12px/16px var(--font-sans);
|
|
15461
|
+
color: var(--ink-muted);
|
|
15462
|
+
}
|
|
15463
|
+
.tf-habit-streak {
|
|
15464
|
+
display: inline-flex;
|
|
15465
|
+
align-items: center;
|
|
15466
|
+
gap: 4px;
|
|
15467
|
+
color: var(--butter-ink);
|
|
15468
|
+
}
|
|
15469
|
+
.tf-habit-mark {
|
|
15470
|
+
display: grid;
|
|
15471
|
+
place-items: center;
|
|
15472
|
+
width: 24px;
|
|
15473
|
+
height: 24px;
|
|
15474
|
+
box-sizing: border-box;
|
|
15475
|
+
padding: 0;
|
|
15476
|
+
border: 1.5px solid var(--line-strong);
|
|
15477
|
+
border-radius: 50%;
|
|
15478
|
+
background: transparent;
|
|
15479
|
+
color: var(--primary-foreground);
|
|
15480
|
+
}
|
|
15481
|
+
.tf-habit-mark.done {
|
|
15482
|
+
border-color: var(--mint-ink);
|
|
15483
|
+
background: var(--mint-ink);
|
|
15484
|
+
}
|
|
15485
|
+
/* missed: an empty ring with a small cross; no entry: a faint dashed ring */
|
|
15486
|
+
.tf-habit-mark.missed {
|
|
15487
|
+
color: var(--ink-subtle);
|
|
15488
|
+
}
|
|
15489
|
+
.tf-habit-mark:not(.done):not(.missed) {
|
|
15490
|
+
border-style: dashed;
|
|
15491
|
+
border-color: var(--line);
|
|
15492
|
+
}
|
|
15493
|
+
.tf-habit-mark.today {
|
|
15494
|
+
box-shadow:
|
|
15495
|
+
0 0 0 2px var(--surface),
|
|
15496
|
+
0 0 0 4px var(--line-strong);
|
|
15497
|
+
}
|
|
15498
|
+
/* narrow: the marks go under the name, the day labels line up with them */
|
|
15499
|
+
@container tf-habits (max-width: 400px) {
|
|
15500
|
+
.tf-habit {
|
|
15501
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
15502
|
+
row-gap: 8px;
|
|
15503
|
+
}
|
|
15504
|
+
.tf-habit-marks {
|
|
15505
|
+
grid-column: 1 / -1;
|
|
15506
|
+
}
|
|
15507
|
+
.tf-habit-days {
|
|
15508
|
+
justify-self: start;
|
|
15509
|
+
padding: 0 0 0 12px;
|
|
15510
|
+
}
|
|
15511
|
+
}
|
|
15512
|
+
@container tf-habits (max-width: 240px) {
|
|
15513
|
+
.tf-habit-days,
|
|
15514
|
+
.tf-habit-marks {
|
|
15515
|
+
gap: 2px;
|
|
15516
|
+
}
|
|
15517
|
+
}
|
|
15518
|
+
button.tf-habit-mark {
|
|
15519
|
+
cursor: pointer;
|
|
15520
|
+
}
|
|
15521
|
+
button.tf-habit-mark:focus-visible {
|
|
15522
|
+
outline: 2px solid var(--focus);
|
|
15523
|
+
outline-offset: 4px;
|
|
15524
|
+
}
|
|
15525
|
+
|
|
15526
|
+
/* MoodPicker */
|
|
15527
|
+
.tf-mood {
|
|
15528
|
+
min-width: 0;
|
|
15529
|
+
margin: 0;
|
|
15530
|
+
padding: 0;
|
|
15531
|
+
border: 0;
|
|
15532
|
+
}
|
|
15533
|
+
.tf-mood-q {
|
|
15534
|
+
padding: 0;
|
|
15535
|
+
margin-bottom: 12px;
|
|
15536
|
+
font: 600 14px/20px var(--font-sans);
|
|
15537
|
+
}
|
|
15538
|
+
.tf-mood-scale {
|
|
15539
|
+
container: tf-mood / inline-size;
|
|
15540
|
+
display: grid;
|
|
15541
|
+
grid-template-columns: repeat(5, minmax(0, 1fr));
|
|
15542
|
+
gap: 8px;
|
|
15543
|
+
}
|
|
15544
|
+
.tf-mood-opt {
|
|
15545
|
+
position: relative;
|
|
15546
|
+
display: flex;
|
|
15547
|
+
flex-direction: column;
|
|
15548
|
+
align-items: center;
|
|
15549
|
+
justify-content: center;
|
|
15550
|
+
gap: 4px;
|
|
15551
|
+
min-width: 0;
|
|
15552
|
+
min-height: 72px;
|
|
15553
|
+
padding: 8px 4px;
|
|
15554
|
+
box-sizing: border-box;
|
|
15555
|
+
border-radius: var(--radius-md);
|
|
15556
|
+
color: var(--ink-muted);
|
|
15557
|
+
font: 600 12px/16px var(--font-sans);
|
|
15558
|
+
cursor: pointer;
|
|
15559
|
+
}
|
|
15560
|
+
/* the picked level keeps the tint its tf-t-* class gives it */
|
|
15561
|
+
.tf-mood-opt:not(.on) {
|
|
15562
|
+
background: var(--surface-sunken);
|
|
15563
|
+
}
|
|
15564
|
+
.tf-mood.compact .tf-mood-opt {
|
|
15565
|
+
min-height: 48px;
|
|
15566
|
+
}
|
|
15567
|
+
.tf-mood-opt span {
|
|
15568
|
+
max-width: 100%;
|
|
15569
|
+
overflow: hidden;
|
|
15570
|
+
text-overflow: ellipsis;
|
|
15571
|
+
white-space: nowrap;
|
|
15572
|
+
}
|
|
15573
|
+
/* narrow: tighter cells so every word still fits */
|
|
15574
|
+
@container tf-mood (max-width: 300px) {
|
|
15575
|
+
.tf-mood-opt {
|
|
15576
|
+
padding: 8px 2px;
|
|
15577
|
+
font-size: 11px;
|
|
15578
|
+
}
|
|
15579
|
+
}
|
|
15580
|
+
.tf-mood-opt input {
|
|
15581
|
+
position: absolute;
|
|
15582
|
+
inset: 0;
|
|
15583
|
+
margin: 0;
|
|
15584
|
+
opacity: 0;
|
|
15585
|
+
cursor: pointer;
|
|
15586
|
+
}
|
|
15587
|
+
.tf-mood-opt:hover {
|
|
15588
|
+
color: var(--ink);
|
|
15589
|
+
}
|
|
15590
|
+
.tf-mood-opt.on {
|
|
15591
|
+
box-shadow: inset 0 0 0 2px currentColor;
|
|
15592
|
+
}
|
|
15593
|
+
.tf-mood-opt:has(input:focus-visible) {
|
|
15594
|
+
outline: 2px solid var(--focus);
|
|
15595
|
+
outline-offset: 2px;
|
|
15596
|
+
}
|
|
15597
|
+
|
|
15598
|
+
/* VitalTile */
|
|
15599
|
+
.tf-vital {
|
|
15600
|
+
display: flex;
|
|
15601
|
+
flex-direction: column;
|
|
15602
|
+
gap: 12px;
|
|
15603
|
+
min-width: 0;
|
|
15604
|
+
padding: 16px;
|
|
15605
|
+
border-radius: var(--radius-lg);
|
|
15606
|
+
background: var(--surface);
|
|
15607
|
+
box-shadow: var(--shadow-card);
|
|
15608
|
+
}
|
|
15609
|
+
.tf-vital-head {
|
|
15610
|
+
display: flex;
|
|
15611
|
+
align-items: center;
|
|
15612
|
+
justify-content: space-between;
|
|
15613
|
+
gap: 8px;
|
|
15614
|
+
}
|
|
15615
|
+
.tf-vital-head .tf-badge {
|
|
15616
|
+
flex: none;
|
|
15617
|
+
white-space: nowrap;
|
|
15618
|
+
}
|
|
15619
|
+
.tf-vital-label {
|
|
15620
|
+
display: inline-flex;
|
|
15621
|
+
align-items: center;
|
|
15622
|
+
gap: 6px;
|
|
15623
|
+
min-width: 0;
|
|
15624
|
+
font: 600 13px/18px var(--font-sans);
|
|
15625
|
+
color: var(--ink-muted);
|
|
15626
|
+
}
|
|
15627
|
+
.tf-vital-main {
|
|
15628
|
+
display: flex;
|
|
15629
|
+
align-items: flex-end;
|
|
15630
|
+
justify-content: space-between;
|
|
15631
|
+
gap: 12px;
|
|
15632
|
+
}
|
|
15633
|
+
.tf-vital-value {
|
|
15634
|
+
font: 700 28px/34px var(--font-sans);
|
|
15635
|
+
letter-spacing: -0.02em;
|
|
15636
|
+
font-variant-numeric: tabular-nums;
|
|
15637
|
+
}
|
|
15638
|
+
.tf-vital-value small {
|
|
15639
|
+
margin-left: 4px;
|
|
15640
|
+
font: 600 13px/18px var(--font-sans);
|
|
15641
|
+
letter-spacing: 0;
|
|
15642
|
+
color: var(--ink-muted);
|
|
15643
|
+
}
|
|
15644
|
+
.tf-vital-band {
|
|
15645
|
+
position: relative;
|
|
15646
|
+
height: 8px;
|
|
15647
|
+
border-radius: var(--radius-pill);
|
|
15648
|
+
background: var(--surface-sunken);
|
|
15649
|
+
}
|
|
15650
|
+
.tf-vital-normal {
|
|
15651
|
+
position: absolute;
|
|
15652
|
+
top: 0;
|
|
15653
|
+
bottom: 0;
|
|
15654
|
+
border-radius: var(--radius-pill);
|
|
15655
|
+
background: var(--mint);
|
|
15656
|
+
}
|
|
15657
|
+
.tf-vital-dot {
|
|
15658
|
+
position: absolute;
|
|
15659
|
+
top: 50%;
|
|
15660
|
+
width: 14px;
|
|
15661
|
+
height: 14px;
|
|
15662
|
+
box-sizing: border-box;
|
|
15663
|
+
border: 3px solid var(--surface);
|
|
15664
|
+
border-radius: 50%;
|
|
15665
|
+
background: var(--mint-ink);
|
|
15666
|
+
translate: -50% -50%;
|
|
15667
|
+
}
|
|
15668
|
+
.tf-vital.is-low .tf-vital-dot,
|
|
15669
|
+
.tf-vital.is-high .tf-vital-dot {
|
|
15670
|
+
background: var(--butter-ink);
|
|
15671
|
+
}
|
|
15672
|
+
.tf-vital-foot {
|
|
15673
|
+
display: flex;
|
|
15674
|
+
flex-wrap: wrap;
|
|
15675
|
+
justify-content: space-between;
|
|
15676
|
+
gap: 4px 12px;
|
|
15677
|
+
font: 500 12px/16px var(--font-sans);
|
|
15678
|
+
color: var(--ink-muted);
|
|
15679
|
+
}
|
|
15680
|
+
|
|
15681
|
+
/* ActivityRings */
|
|
15682
|
+
.tf-rings {
|
|
15683
|
+
display: flex;
|
|
15684
|
+
flex-wrap: wrap;
|
|
15685
|
+
align-items: center;
|
|
15686
|
+
gap: 20px;
|
|
15687
|
+
min-width: 0;
|
|
15688
|
+
}
|
|
15689
|
+
.tf-rings svg {
|
|
15690
|
+
flex: none;
|
|
15691
|
+
}
|
|
15692
|
+
.tf-rings-legend {
|
|
15693
|
+
display: flex;
|
|
15694
|
+
flex-direction: column;
|
|
15695
|
+
gap: 8px;
|
|
15696
|
+
min-width: 0;
|
|
15697
|
+
margin: 0;
|
|
15698
|
+
padding: 0;
|
|
15699
|
+
list-style: none;
|
|
15700
|
+
}
|
|
15701
|
+
.tf-rings-legend li {
|
|
15702
|
+
display: grid;
|
|
15703
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
15704
|
+
align-items: center;
|
|
15705
|
+
column-gap: 8px;
|
|
15706
|
+
}
|
|
15707
|
+
.tf-rings-key {
|
|
15708
|
+
width: 10px;
|
|
15709
|
+
height: 10px;
|
|
15710
|
+
border-radius: 50%;
|
|
15711
|
+
}
|
|
15712
|
+
.tf-rings-name {
|
|
15713
|
+
font: 600 12px/16px var(--font-sans);
|
|
15714
|
+
color: var(--ink-muted);
|
|
15715
|
+
}
|
|
15716
|
+
.tf-rings-legend b {
|
|
15717
|
+
grid-column: 2;
|
|
15718
|
+
font: 700 14px/20px var(--font-sans);
|
|
15719
|
+
font-variant-numeric: tabular-nums;
|
|
15720
|
+
}
|
|
15721
|
+
|
|
15722
|
+
/* SleepChart */
|
|
15723
|
+
.tf-sleep {
|
|
15724
|
+
display: flex;
|
|
15725
|
+
flex-direction: column;
|
|
15726
|
+
gap: 16px;
|
|
15727
|
+
min-width: 0;
|
|
15728
|
+
}
|
|
15729
|
+
.tf-sleep-chart {
|
|
15730
|
+
display: flex;
|
|
15731
|
+
flex-direction: column;
|
|
15732
|
+
gap: 6px;
|
|
15733
|
+
}
|
|
15734
|
+
.tf-sleep-lane {
|
|
15735
|
+
display: grid;
|
|
15736
|
+
grid-template-columns: 52px minmax(0, 1fr);
|
|
15737
|
+
align-items: center;
|
|
15738
|
+
gap: 12px;
|
|
15739
|
+
}
|
|
15740
|
+
.tf-sleep-name {
|
|
15741
|
+
font: 600 12px/16px var(--font-sans);
|
|
15742
|
+
color: var(--ink-muted);
|
|
15743
|
+
}
|
|
15744
|
+
.tf-sleep-track {
|
|
15745
|
+
position: relative;
|
|
15746
|
+
height: 20px;
|
|
15747
|
+
border-radius: var(--radius-sm);
|
|
15748
|
+
background: var(--surface-sunken);
|
|
15749
|
+
}
|
|
15750
|
+
.tf-sleep-seg {
|
|
15751
|
+
position: absolute;
|
|
15752
|
+
top: 2px;
|
|
15753
|
+
bottom: 2px;
|
|
15754
|
+
min-width: 2px;
|
|
15755
|
+
border-radius: var(--radius-sm);
|
|
15756
|
+
}
|
|
15757
|
+
.tf-sleep-axis {
|
|
15758
|
+
display: flex;
|
|
15759
|
+
justify-content: space-between;
|
|
15760
|
+
margin-left: 64px;
|
|
15761
|
+
font: 500 11px/16px var(--font-sans);
|
|
15762
|
+
color: var(--ink-muted);
|
|
15763
|
+
font-variant-numeric: tabular-nums;
|
|
15764
|
+
}
|
|
15765
|
+
.tf-sleep-sum {
|
|
15766
|
+
display: flex;
|
|
15767
|
+
flex-wrap: wrap;
|
|
15768
|
+
align-items: center;
|
|
15769
|
+
justify-content: space-between;
|
|
15770
|
+
gap: 8px 16px;
|
|
15771
|
+
}
|
|
15772
|
+
.tf-sleep-sum b {
|
|
15773
|
+
font: 700 14px/20px var(--font-sans);
|
|
15774
|
+
}
|
|
15775
|
+
.tf-sleep-sum ul {
|
|
15776
|
+
display: flex;
|
|
15777
|
+
flex-wrap: wrap;
|
|
15778
|
+
gap: 4px 14px;
|
|
15779
|
+
margin: 0;
|
|
15780
|
+
padding: 0;
|
|
15781
|
+
list-style: none;
|
|
15782
|
+
}
|
|
15783
|
+
.tf-sleep-sum li {
|
|
15784
|
+
display: inline-flex;
|
|
15785
|
+
align-items: center;
|
|
15786
|
+
gap: 6px;
|
|
15787
|
+
font: 500 12px/16px var(--font-sans);
|
|
15788
|
+
color: var(--ink-muted);
|
|
15789
|
+
}
|
|
15790
|
+
.tf-sleep-sum li span:last-child {
|
|
15791
|
+
color: var(--ink);
|
|
15792
|
+
font-weight: 600;
|
|
15793
|
+
font-variant-numeric: tabular-nums;
|
|
15794
|
+
}
|
|
15795
|
+
|
|
15796
|
+
/* MedicationList */
|
|
15797
|
+
.tf-meds {
|
|
15798
|
+
container: tf-meds / inline-size;
|
|
15799
|
+
display: flex;
|
|
15800
|
+
flex-direction: column;
|
|
15801
|
+
gap: 4px;
|
|
15802
|
+
min-width: 0;
|
|
15803
|
+
margin: 0;
|
|
15804
|
+
padding: 0;
|
|
15805
|
+
list-style: none;
|
|
15806
|
+
}
|
|
15807
|
+
.tf-med {
|
|
15808
|
+
display: grid;
|
|
15809
|
+
grid-template-columns: 48px auto minmax(0, 1fr) auto;
|
|
15810
|
+
align-items: center;
|
|
15811
|
+
gap: 12px;
|
|
15812
|
+
padding: 8px 12px;
|
|
15813
|
+
border-radius: var(--radius-md);
|
|
15814
|
+
}
|
|
15815
|
+
.tf-med.is-due {
|
|
15816
|
+
background: var(--surface-sunken);
|
|
15817
|
+
}
|
|
15818
|
+
.tf-med-time {
|
|
15819
|
+
font: 600 13px/18px var(--font-sans);
|
|
15820
|
+
font-variant-numeric: tabular-nums;
|
|
15821
|
+
color: var(--ink-muted);
|
|
15822
|
+
}
|
|
15823
|
+
.tf-med-text {
|
|
15824
|
+
display: flex;
|
|
15825
|
+
flex-direction: column;
|
|
15826
|
+
min-width: 0;
|
|
15827
|
+
}
|
|
15828
|
+
.tf-med-text b {
|
|
15829
|
+
font: 600 14px/20px var(--font-sans);
|
|
15830
|
+
overflow-wrap: break-word;
|
|
15831
|
+
}
|
|
15832
|
+
.tf-med-text small {
|
|
15833
|
+
font: 500 12px/16px var(--font-sans);
|
|
15834
|
+
color: var(--ink-muted);
|
|
15835
|
+
}
|
|
15836
|
+
.tf-med.is-taken .tf-med-text b {
|
|
15837
|
+
color: var(--ink-muted);
|
|
15838
|
+
}
|
|
15839
|
+
.tf-med-act {
|
|
15840
|
+
display: inline-flex;
|
|
15841
|
+
align-items: center;
|
|
15842
|
+
gap: 8px;
|
|
15843
|
+
}
|
|
15844
|
+
/* narrow: time, name and status; the icon gives way */
|
|
15845
|
+
@container tf-meds (max-width: 400px) {
|
|
15846
|
+
.tf-med {
|
|
15847
|
+
grid-template-columns: 44px minmax(0, 1fr) auto;
|
|
15848
|
+
gap: 8px;
|
|
15849
|
+
padding: 8px;
|
|
15850
|
+
}
|
|
15851
|
+
.tf-med > .tf-tinticon {
|
|
15852
|
+
display: none;
|
|
15853
|
+
}
|
|
15854
|
+
}
|
|
15855
|
+
|
|
15856
|
+
/* JournalEntry */
|
|
15857
|
+
.tf-journal {
|
|
15858
|
+
display: flex;
|
|
15859
|
+
flex-direction: column;
|
|
15860
|
+
gap: 8px;
|
|
15861
|
+
min-width: 0;
|
|
15862
|
+
padding: 20px;
|
|
15863
|
+
border-radius: var(--radius-lg);
|
|
15864
|
+
background: var(--surface);
|
|
15865
|
+
box-shadow: var(--shadow-card);
|
|
15866
|
+
}
|
|
15867
|
+
.tf-journal-head {
|
|
15868
|
+
display: flex;
|
|
15869
|
+
flex-wrap: wrap;
|
|
15870
|
+
align-items: center;
|
|
15871
|
+
justify-content: space-between;
|
|
15872
|
+
gap: 8px;
|
|
15873
|
+
font: 600 12px/16px var(--font-sans);
|
|
15874
|
+
color: var(--ink-muted);
|
|
15875
|
+
}
|
|
15876
|
+
.tf-journal-mood {
|
|
15877
|
+
display: inline-flex;
|
|
15878
|
+
align-items: center;
|
|
15879
|
+
gap: 4px;
|
|
15880
|
+
padding: 2px 8px;
|
|
15881
|
+
border-radius: var(--radius-pill);
|
|
15882
|
+
}
|
|
15883
|
+
.tf-journal-title {
|
|
15884
|
+
margin: 0;
|
|
15885
|
+
font: 700 16px/22px var(--font-sans);
|
|
15886
|
+
}
|
|
15887
|
+
.tf-journal-body {
|
|
15888
|
+
font: 500 14px/22px var(--font-sans);
|
|
15889
|
+
color: var(--ink);
|
|
15890
|
+
overflow-wrap: anywhere;
|
|
15891
|
+
}
|
|
15892
|
+
.tf-journal-body p {
|
|
15893
|
+
margin: 0 0 8px;
|
|
15894
|
+
}
|
|
15895
|
+
.tf-journal-foot {
|
|
15896
|
+
display: flex;
|
|
15897
|
+
flex-wrap: wrap;
|
|
15898
|
+
align-items: center;
|
|
15899
|
+
justify-content: space-between;
|
|
15900
|
+
gap: 8px;
|
|
15901
|
+
padding-top: 4px;
|
|
15902
|
+
}
|
|
15903
|
+
.tf-journal-tags {
|
|
15904
|
+
display: flex;
|
|
15905
|
+
flex-wrap: wrap;
|
|
15906
|
+
gap: 6px;
|
|
15907
|
+
}
|
|
15908
|
+
|
|
15909
|
+
/* GoalCard */
|
|
15910
|
+
.tf-goal {
|
|
15911
|
+
display: flex;
|
|
15912
|
+
flex-direction: column;
|
|
15913
|
+
gap: 12px;
|
|
15914
|
+
min-width: 0;
|
|
15915
|
+
padding: 20px;
|
|
15916
|
+
border-radius: var(--radius-lg);
|
|
15917
|
+
background: var(--surface);
|
|
15918
|
+
box-shadow: var(--shadow-card);
|
|
15919
|
+
}
|
|
15920
|
+
/* narrow: the icon steps aside so the title keeps whole words */
|
|
15921
|
+
@container tf-goal (max-width: 280px) {
|
|
15922
|
+
.tf-goal-head > .tf-tinticon {
|
|
15923
|
+
display: none;
|
|
15924
|
+
}
|
|
15925
|
+
}
|
|
15926
|
+
.tf-goal-head {
|
|
15927
|
+
container: tf-goal / inline-size;
|
|
15928
|
+
display: flex;
|
|
15929
|
+
align-items: center;
|
|
15930
|
+
gap: 12px;
|
|
15931
|
+
}
|
|
15932
|
+
.tf-goal-head .tf-option-text {
|
|
15933
|
+
flex: 1;
|
|
15934
|
+
padding: 0;
|
|
15935
|
+
}
|
|
15936
|
+
.tf-goal-head b {
|
|
15937
|
+
font: 700 14px/20px var(--font-sans);
|
|
15938
|
+
}
|
|
15939
|
+
.tf-goal-pct {
|
|
15940
|
+
font: 700 20px/26px var(--font-sans);
|
|
15941
|
+
font-variant-numeric: tabular-nums;
|
|
15942
|
+
}
|
|
15943
|
+
.tf-goal-bar {
|
|
15944
|
+
height: 10px;
|
|
15945
|
+
overflow: hidden;
|
|
15946
|
+
border-radius: var(--radius-pill);
|
|
15947
|
+
background: var(--surface-sunken);
|
|
15948
|
+
}
|
|
15949
|
+
.tf-goal-bar > span {
|
|
15950
|
+
display: block;
|
|
15951
|
+
height: 100%;
|
|
15952
|
+
border-radius: var(--radius-pill);
|
|
15953
|
+
}
|
|
15954
|
+
.tf-goal-meta,
|
|
15955
|
+
.tf-goal-note {
|
|
15956
|
+
margin: 0;
|
|
15957
|
+
font: 500 12px/16px var(--font-sans);
|
|
15958
|
+
color: var(--ink-muted);
|
|
15959
|
+
}
|
|
15960
|
+
.tf-goal-steps {
|
|
15961
|
+
display: flex;
|
|
15962
|
+
flex-direction: column;
|
|
15963
|
+
gap: 6px;
|
|
15964
|
+
margin: 0;
|
|
15965
|
+
padding: 0;
|
|
15966
|
+
list-style: none;
|
|
15967
|
+
font: 500 13px/18px var(--font-sans);
|
|
15968
|
+
}
|
|
15969
|
+
.tf-goal-steps li {
|
|
15970
|
+
display: flex;
|
|
15971
|
+
align-items: center;
|
|
15972
|
+
gap: 8px;
|
|
15973
|
+
}
|
|
15974
|
+
.tf-goal-steps li.done {
|
|
15975
|
+
color: var(--ink-muted);
|
|
15976
|
+
}
|
|
15977
|
+
.tf-goal-step {
|
|
15978
|
+
display: grid;
|
|
15979
|
+
place-items: center;
|
|
15980
|
+
flex: none;
|
|
15981
|
+
width: 16px;
|
|
15982
|
+
height: 16px;
|
|
15983
|
+
box-sizing: border-box;
|
|
15984
|
+
border: 1.5px solid var(--line-strong);
|
|
15985
|
+
border-radius: 50%;
|
|
15986
|
+
color: var(--primary-foreground);
|
|
15987
|
+
}
|
|
15988
|
+
.tf-goal-steps li.done .tf-goal-step {
|
|
15989
|
+
border-color: var(--primary);
|
|
15990
|
+
background: var(--primary);
|
|
15991
|
+
}
|
|
15992
|
+
|
|
15993
|
+
/* InsightCard */
|
|
15994
|
+
.tf-insight {
|
|
15995
|
+
display: flex;
|
|
15996
|
+
flex-direction: column;
|
|
15997
|
+
gap: 12px;
|
|
15998
|
+
min-width: 0;
|
|
15999
|
+
padding: 16px 16px 16px 20px;
|
|
16000
|
+
border-radius: var(--radius-lg);
|
|
16001
|
+
background: var(--surface);
|
|
16002
|
+
box-shadow:
|
|
16003
|
+
var(--shadow-card),
|
|
16004
|
+
inset 3px 0 0 var(--sky-ink);
|
|
16005
|
+
/* on glass the card takes a faint wash of its tone */
|
|
16006
|
+
--tint: var(--sky);
|
|
16007
|
+
}
|
|
16008
|
+
.tf-insight.is-success {
|
|
16009
|
+
--tint: var(--mint);
|
|
16010
|
+
box-shadow:
|
|
16011
|
+
var(--shadow-card),
|
|
16012
|
+
inset 3px 0 0 var(--mint-ink);
|
|
16013
|
+
}
|
|
16014
|
+
.tf-insight.is-warning {
|
|
16015
|
+
--tint: var(--butter);
|
|
16016
|
+
box-shadow:
|
|
16017
|
+
var(--shadow-card),
|
|
16018
|
+
inset 3px 0 0 var(--butter-ink);
|
|
16019
|
+
}
|
|
16020
|
+
.tf-insight.is-highlight {
|
|
16021
|
+
--tint: var(--lilac);
|
|
16022
|
+
box-shadow:
|
|
16023
|
+
var(--shadow-card),
|
|
16024
|
+
inset 3px 0 0 var(--lilac-ink);
|
|
16025
|
+
}
|
|
16026
|
+
.tf-insight-head {
|
|
16027
|
+
display: flex;
|
|
16028
|
+
align-items: flex-start;
|
|
16029
|
+
gap: 12px;
|
|
16030
|
+
}
|
|
16031
|
+
.tf-insight-titles {
|
|
16032
|
+
display: flex;
|
|
16033
|
+
flex: 1;
|
|
16034
|
+
flex-direction: column;
|
|
16035
|
+
min-width: 0;
|
|
16036
|
+
}
|
|
16037
|
+
.tf-insight-titles small {
|
|
16038
|
+
font: 600 12px/16px var(--font-sans);
|
|
16039
|
+
color: var(--ink-muted);
|
|
16040
|
+
}
|
|
16041
|
+
.tf-insight-titles b {
|
|
16042
|
+
font: 700 15px/22px var(--font-sans);
|
|
16043
|
+
overflow-wrap: anywhere;
|
|
16044
|
+
}
|
|
16045
|
+
.tf-insight-body {
|
|
16046
|
+
font: 500 14px/20px var(--font-sans);
|
|
16047
|
+
color: var(--ink);
|
|
16048
|
+
}
|
|
16049
|
+
.tf-insight-why button {
|
|
16050
|
+
display: inline-flex;
|
|
16051
|
+
align-items: center;
|
|
16052
|
+
gap: 6px;
|
|
16053
|
+
min-height: 24px;
|
|
16054
|
+
padding: 0;
|
|
16055
|
+
border: 0;
|
|
16056
|
+
background: none;
|
|
16057
|
+
color: var(--ink-muted);
|
|
16058
|
+
font: 600 12px/16px var(--font-sans);
|
|
16059
|
+
cursor: pointer;
|
|
16060
|
+
}
|
|
16061
|
+
.tf-insight-why button:hover {
|
|
16062
|
+
color: var(--ink);
|
|
16063
|
+
}
|
|
16064
|
+
.tf-insight-why button:focus-visible {
|
|
16065
|
+
outline: 2px solid var(--focus);
|
|
16066
|
+
outline-offset: 2px;
|
|
16067
|
+
border-radius: var(--radius-sm);
|
|
16068
|
+
}
|
|
16069
|
+
.tf-insight-why button[aria-expanded="true"] .tf-insight-chev {
|
|
16070
|
+
rotate: 180deg;
|
|
16071
|
+
}
|
|
16072
|
+
.tf-insight-whytext {
|
|
16073
|
+
margin-top: 8px;
|
|
16074
|
+
padding: 12px;
|
|
16075
|
+
border-radius: var(--radius-md);
|
|
16076
|
+
background: var(--surface-sunken);
|
|
16077
|
+
font: 500 13px/18px var(--font-sans);
|
|
16078
|
+
color: var(--ink-muted);
|
|
16079
|
+
}
|
|
16080
|
+
.tf-insight-actions {
|
|
16081
|
+
display: flex;
|
|
16082
|
+
flex-wrap: wrap;
|
|
16083
|
+
justify-content: flex-end;
|
|
16084
|
+
gap: 8px;
|
|
16085
|
+
}
|
|
16086
|
+
|
|
16087
|
+
/* ConsentList */
|
|
16088
|
+
.tf-consent {
|
|
16089
|
+
display: flex;
|
|
16090
|
+
flex-direction: column;
|
|
16091
|
+
gap: 12px;
|
|
16092
|
+
min-width: 0;
|
|
16093
|
+
}
|
|
16094
|
+
.tf-consent-item {
|
|
16095
|
+
display: flex;
|
|
16096
|
+
flex-direction: column;
|
|
16097
|
+
gap: 12px;
|
|
16098
|
+
padding: 16px;
|
|
16099
|
+
border-radius: var(--radius-lg);
|
|
16100
|
+
background: var(--surface);
|
|
16101
|
+
box-shadow: var(--shadow-card);
|
|
16102
|
+
}
|
|
16103
|
+
.tf-consent-head {
|
|
16104
|
+
display: flex;
|
|
16105
|
+
flex-wrap: wrap;
|
|
16106
|
+
align-items: center;
|
|
16107
|
+
gap: 12px;
|
|
16108
|
+
}
|
|
16109
|
+
.tf-consent-head .tf-option-text {
|
|
16110
|
+
flex: 1;
|
|
16111
|
+
min-width: 140px;
|
|
16112
|
+
padding: 0;
|
|
16113
|
+
}
|
|
16114
|
+
.tf-consent-purpose {
|
|
16115
|
+
margin: 0;
|
|
16116
|
+
font: 500 13px/18px var(--font-sans);
|
|
16117
|
+
color: var(--ink-muted);
|
|
16118
|
+
}
|
|
16119
|
+
.tf-consent-scopes {
|
|
16120
|
+
display: flex;
|
|
16121
|
+
flex-direction: column;
|
|
16122
|
+
margin: 0;
|
|
16123
|
+
padding: 0;
|
|
16124
|
+
list-style: none;
|
|
16125
|
+
}
|
|
16126
|
+
.tf-consent-scopes li {
|
|
16127
|
+
display: flex;
|
|
16128
|
+
align-items: center;
|
|
16129
|
+
justify-content: space-between;
|
|
16130
|
+
gap: 12px;
|
|
16131
|
+
padding: 10px 0;
|
|
16132
|
+
border-top: 1px solid var(--line);
|
|
16133
|
+
}
|
|
16134
|
+
.tf-consent-scopes .tf-option-text {
|
|
16135
|
+
min-width: 0;
|
|
16136
|
+
padding: 0;
|
|
16137
|
+
}
|
|
16138
|
+
.tf-consent-req {
|
|
16139
|
+
flex: none;
|
|
16140
|
+
font: 600 12px/16px var(--font-sans);
|
|
16141
|
+
color: var(--ink-muted);
|
|
16142
|
+
}
|
|
16143
|
+
|
|
16144
|
+
/* 12-household.css */
|
|
16145
|
+
/* Life: budgets, subscriptions, net worth, deadlines, policies, coverage, claims, documents */
|
|
16146
|
+
|
|
16147
|
+
/* BudgetList */
|
|
16148
|
+
.tf-budgets,
|
|
16149
|
+
.tf-subs ul,
|
|
16150
|
+
.tf-deadlines,
|
|
16151
|
+
.tf-docs,
|
|
16152
|
+
.tf-claim-steps,
|
|
16153
|
+
.tf-nw-side ul {
|
|
16154
|
+
margin: 0;
|
|
16155
|
+
padding: 0;
|
|
16156
|
+
list-style: none;
|
|
16157
|
+
}
|
|
16158
|
+
.tf-budgets {
|
|
16159
|
+
display: flex;
|
|
16160
|
+
flex-direction: column;
|
|
16161
|
+
gap: 4px;
|
|
16162
|
+
min-width: 0;
|
|
16163
|
+
}
|
|
16164
|
+
.tf-budget {
|
|
16165
|
+
container: tf-budget / inline-size;
|
|
16166
|
+
display: flex;
|
|
16167
|
+
align-items: center;
|
|
16168
|
+
gap: 12px;
|
|
16169
|
+
width: 100%;
|
|
16170
|
+
padding: 10px 12px;
|
|
16171
|
+
box-sizing: border-box;
|
|
16172
|
+
border: 0;
|
|
16173
|
+
border-radius: var(--radius-md);
|
|
16174
|
+
background: transparent;
|
|
16175
|
+
color: var(--ink);
|
|
16176
|
+
font: inherit;
|
|
16177
|
+
text-align: left;
|
|
16178
|
+
}
|
|
16179
|
+
button.tf-budget {
|
|
16180
|
+
cursor: pointer;
|
|
16181
|
+
}
|
|
16182
|
+
button.tf-budget:hover {
|
|
16183
|
+
background: var(--accent);
|
|
16184
|
+
}
|
|
16185
|
+
button.tf-budget:focus-visible {
|
|
16186
|
+
outline: 2px solid var(--focus);
|
|
16187
|
+
outline-offset: 2px;
|
|
16188
|
+
}
|
|
16189
|
+
.tf-budget-main {
|
|
16190
|
+
display: flex;
|
|
16191
|
+
flex: 1;
|
|
16192
|
+
flex-direction: column;
|
|
16193
|
+
gap: 6px;
|
|
16194
|
+
min-width: 0;
|
|
16195
|
+
}
|
|
16196
|
+
.tf-budget-top {
|
|
16197
|
+
display: flex;
|
|
16198
|
+
flex-wrap: wrap;
|
|
16199
|
+
align-items: baseline;
|
|
16200
|
+
justify-content: space-between;
|
|
16201
|
+
gap: 0 12px;
|
|
16202
|
+
}
|
|
16203
|
+
/* narrow: the icon steps aside so the category keeps its name */
|
|
16204
|
+
@container tf-budget (max-width: 300px) {
|
|
16205
|
+
.tf-budget > .tf-tinticon {
|
|
16206
|
+
display: none;
|
|
16207
|
+
}
|
|
16208
|
+
}
|
|
16209
|
+
.tf-budget-top b {
|
|
16210
|
+
min-width: 0;
|
|
16211
|
+
overflow: hidden;
|
|
16212
|
+
text-overflow: ellipsis;
|
|
16213
|
+
white-space: nowrap;
|
|
16214
|
+
font: 600 14px/20px var(--font-sans);
|
|
16215
|
+
}
|
|
16216
|
+
.tf-budget-nums {
|
|
16217
|
+
flex: none;
|
|
16218
|
+
font: 700 13px/18px var(--font-sans);
|
|
16219
|
+
font-variant-numeric: tabular-nums;
|
|
16220
|
+
}
|
|
16221
|
+
.tf-budget-nums small {
|
|
16222
|
+
font-weight: 500;
|
|
16223
|
+
color: var(--ink-muted);
|
|
16224
|
+
}
|
|
16225
|
+
.tf-budget-bar {
|
|
16226
|
+
display: block;
|
|
16227
|
+
height: 8px;
|
|
16228
|
+
overflow: hidden;
|
|
16229
|
+
border-radius: var(--radius-pill);
|
|
16230
|
+
background: var(--surface-sunken);
|
|
16231
|
+
}
|
|
16232
|
+
.tf-budget-bar > span {
|
|
16233
|
+
display: block;
|
|
16234
|
+
height: 100%;
|
|
16235
|
+
border-radius: var(--radius-pill);
|
|
16236
|
+
}
|
|
16237
|
+
.tf-budget-left {
|
|
16238
|
+
font: 500 12px/16px var(--font-sans);
|
|
16239
|
+
color: var(--ink-muted);
|
|
16240
|
+
}
|
|
16241
|
+
.tf-budget-left.over {
|
|
16242
|
+
color: var(--blush-ink);
|
|
16243
|
+
font-weight: 600;
|
|
16244
|
+
}
|
|
16245
|
+
|
|
16246
|
+
/* SubscriptionList */
|
|
16247
|
+
.tf-subs {
|
|
16248
|
+
display: flex;
|
|
16249
|
+
flex-direction: column;
|
|
16250
|
+
gap: 8px;
|
|
16251
|
+
min-width: 0;
|
|
16252
|
+
}
|
|
16253
|
+
.tf-subs ul {
|
|
16254
|
+
container: tf-subs / inline-size;
|
|
16255
|
+
display: flex;
|
|
16256
|
+
flex-direction: column;
|
|
16257
|
+
}
|
|
16258
|
+
.tf-sub {
|
|
16259
|
+
display: flex;
|
|
16260
|
+
align-items: center;
|
|
16261
|
+
gap: 12px;
|
|
16262
|
+
padding: 10px 4px;
|
|
16263
|
+
border-bottom: 1px solid var(--line);
|
|
16264
|
+
}
|
|
16265
|
+
.tf-sub:last-child {
|
|
16266
|
+
border-bottom: 0;
|
|
16267
|
+
}
|
|
16268
|
+
.tf-sub-text {
|
|
16269
|
+
display: flex;
|
|
16270
|
+
flex: 1;
|
|
16271
|
+
flex-direction: column;
|
|
16272
|
+
min-width: 0;
|
|
16273
|
+
}
|
|
16274
|
+
.tf-sub-text b {
|
|
16275
|
+
overflow: hidden;
|
|
16276
|
+
text-overflow: ellipsis;
|
|
16277
|
+
white-space: nowrap;
|
|
16278
|
+
font: 600 14px/20px var(--font-sans);
|
|
16279
|
+
}
|
|
16280
|
+
.tf-sub-text small {
|
|
16281
|
+
font: 500 12px/16px var(--font-sans);
|
|
16282
|
+
color: var(--ink-muted);
|
|
16283
|
+
}
|
|
16284
|
+
.tf-sub-amount {
|
|
16285
|
+
flex: none;
|
|
16286
|
+
font: 700 14px/20px var(--font-sans);
|
|
16287
|
+
font-variant-numeric: tabular-nums;
|
|
16288
|
+
text-align: right;
|
|
16289
|
+
}
|
|
16290
|
+
.tf-sub-amount small {
|
|
16291
|
+
margin-left: 2px;
|
|
16292
|
+
font-weight: 500;
|
|
16293
|
+
color: var(--ink-muted);
|
|
16294
|
+
}
|
|
16295
|
+
/* narrow: amount and trial badge go under the name, the menu stays at the end */
|
|
16296
|
+
@container tf-subs (max-width: 380px) {
|
|
16297
|
+
.tf-sub {
|
|
16298
|
+
display: grid;
|
|
16299
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
16300
|
+
gap: 4px 12px;
|
|
16301
|
+
align-items: center;
|
|
16302
|
+
}
|
|
16303
|
+
.tf-sub > :first-child {
|
|
16304
|
+
grid-row: 1 / span 2;
|
|
16305
|
+
align-self: start;
|
|
16306
|
+
}
|
|
16307
|
+
.tf-sub > .tf-sub-text,
|
|
16308
|
+
.tf-sub > .tf-badge,
|
|
16309
|
+
.tf-sub > .tf-sub-amount {
|
|
16310
|
+
grid-column: 2;
|
|
16311
|
+
justify-self: start;
|
|
16312
|
+
text-align: left;
|
|
16313
|
+
}
|
|
16314
|
+
.tf-sub > :last-child:not(.tf-sub-amount) {
|
|
16315
|
+
grid-column: 3;
|
|
16316
|
+
grid-row: 1;
|
|
16317
|
+
}
|
|
16318
|
+
}
|
|
16319
|
+
.tf-sub.is-cancelled .tf-sub-text b,
|
|
16320
|
+
.tf-sub.is-cancelled .tf-sub-amount {
|
|
16321
|
+
color: var(--ink-muted);
|
|
16322
|
+
text-decoration: line-through;
|
|
16323
|
+
}
|
|
16324
|
+
.tf-subs-total {
|
|
16325
|
+
display: flex;
|
|
16326
|
+
flex-wrap: wrap;
|
|
16327
|
+
align-items: baseline;
|
|
16328
|
+
justify-content: space-between;
|
|
16329
|
+
gap: 4px 12px;
|
|
16330
|
+
padding: 12px;
|
|
16331
|
+
border-radius: var(--radius-md);
|
|
16332
|
+
background: var(--surface-sunken);
|
|
16333
|
+
font: 500 13px/18px var(--font-sans);
|
|
16334
|
+
color: var(--ink-muted);
|
|
16335
|
+
}
|
|
16336
|
+
.tf-subs-total b {
|
|
16337
|
+
color: var(--ink);
|
|
16338
|
+
font: 700 15px/20px var(--font-sans);
|
|
16339
|
+
}
|
|
16340
|
+
|
|
16341
|
+
/* NetWorthCard */
|
|
16342
|
+
.tf-nw {
|
|
16343
|
+
display: flex;
|
|
16344
|
+
flex-direction: column;
|
|
16345
|
+
gap: 16px;
|
|
16346
|
+
min-width: 0;
|
|
16347
|
+
padding: 20px;
|
|
16348
|
+
border-radius: var(--radius-lg);
|
|
16349
|
+
background: var(--surface);
|
|
16350
|
+
box-shadow: var(--shadow-card);
|
|
16351
|
+
}
|
|
16352
|
+
.tf-nw-head {
|
|
16353
|
+
display: flex;
|
|
16354
|
+
flex-wrap: wrap;
|
|
16355
|
+
align-items: flex-end;
|
|
16356
|
+
justify-content: space-between;
|
|
16357
|
+
gap: 12px;
|
|
16358
|
+
}
|
|
16359
|
+
.tf-nw-head > :first-child {
|
|
16360
|
+
flex: 1 1 200px;
|
|
16361
|
+
}
|
|
16362
|
+
.tf-nw-head > :last-child:not(:first-child) {
|
|
16363
|
+
flex: none;
|
|
16364
|
+
max-width: 45%;
|
|
16365
|
+
}
|
|
16366
|
+
.tf-nw-title {
|
|
16367
|
+
font: 600 13px/18px var(--font-sans);
|
|
16368
|
+
color: var(--ink-muted);
|
|
16369
|
+
}
|
|
16370
|
+
.tf-nw-total {
|
|
16371
|
+
font: 700 32px/38px var(--font-sans);
|
|
16372
|
+
letter-spacing: -0.02em;
|
|
16373
|
+
font-variant-numeric: tabular-nums;
|
|
16374
|
+
}
|
|
16375
|
+
.tf-nw-change {
|
|
16376
|
+
display: inline-flex;
|
|
16377
|
+
align-items: center;
|
|
16378
|
+
gap: 4px;
|
|
16379
|
+
font: 600 12px/16px var(--font-sans);
|
|
16380
|
+
color: var(--mint-ink);
|
|
16381
|
+
}
|
|
16382
|
+
.tf-nw-change.down {
|
|
16383
|
+
color: var(--blush-ink);
|
|
16384
|
+
}
|
|
16385
|
+
.tf-nw-change.down .tf-ico {
|
|
16386
|
+
rotate: 180deg;
|
|
16387
|
+
}
|
|
16388
|
+
.tf-nw-change span {
|
|
16389
|
+
font-weight: 500;
|
|
16390
|
+
color: var(--ink-muted);
|
|
16391
|
+
}
|
|
16392
|
+
.tf-nw-sides {
|
|
16393
|
+
display: grid;
|
|
16394
|
+
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
16395
|
+
gap: 16px;
|
|
16396
|
+
}
|
|
16397
|
+
.tf-nw-side {
|
|
16398
|
+
display: flex;
|
|
16399
|
+
flex-direction: column;
|
|
16400
|
+
gap: 8px;
|
|
16401
|
+
min-width: 0;
|
|
16402
|
+
}
|
|
16403
|
+
.tf-nw-sidehead {
|
|
16404
|
+
display: flex;
|
|
16405
|
+
justify-content: space-between;
|
|
16406
|
+
gap: 8px;
|
|
16407
|
+
padding-bottom: 8px;
|
|
16408
|
+
border-bottom: 1px solid var(--line);
|
|
16409
|
+
font: 600 12px/16px var(--font-sans);
|
|
16410
|
+
color: var(--ink-muted);
|
|
16411
|
+
}
|
|
16412
|
+
.tf-nw-sidehead b {
|
|
16413
|
+
color: var(--ink);
|
|
16414
|
+
font-variant-numeric: tabular-nums;
|
|
16415
|
+
}
|
|
16416
|
+
.tf-nw-side li {
|
|
16417
|
+
display: flex;
|
|
16418
|
+
justify-content: space-between;
|
|
16419
|
+
gap: 8px;
|
|
16420
|
+
padding: 4px 0;
|
|
16421
|
+
font: 500 13px/18px var(--font-sans);
|
|
16422
|
+
}
|
|
16423
|
+
.tf-nw-side li span:first-child {
|
|
16424
|
+
display: inline-flex;
|
|
16425
|
+
align-items: center;
|
|
16426
|
+
gap: 6px;
|
|
16427
|
+
min-width: 0;
|
|
16428
|
+
color: var(--ink-muted);
|
|
16429
|
+
}
|
|
16430
|
+
.tf-nw-side li span:last-child {
|
|
16431
|
+
font-variant-numeric: tabular-nums;
|
|
16432
|
+
}
|
|
16433
|
+
|
|
16434
|
+
/* DeadlineList */
|
|
16435
|
+
.tf-deadlines {
|
|
16436
|
+
display: flex;
|
|
16437
|
+
flex-direction: column;
|
|
16438
|
+
gap: 4px;
|
|
16439
|
+
min-width: 0;
|
|
16440
|
+
}
|
|
16441
|
+
.tf-deadline {
|
|
16442
|
+
display: flex;
|
|
16443
|
+
flex-wrap: wrap;
|
|
16444
|
+
align-items: center;
|
|
16445
|
+
gap: 8px 12px;
|
|
16446
|
+
padding: 8px 12px;
|
|
16447
|
+
border-radius: var(--radius-md);
|
|
16448
|
+
}
|
|
16449
|
+
.tf-deadline.is-overdue {
|
|
16450
|
+
background: var(--blush);
|
|
16451
|
+
}
|
|
16452
|
+
.tf-deadline.is-soon {
|
|
16453
|
+
background: var(--surface-sunken);
|
|
16454
|
+
}
|
|
16455
|
+
.tf-deadline-date {
|
|
16456
|
+
display: flex;
|
|
16457
|
+
flex: none;
|
|
16458
|
+
flex-direction: column;
|
|
16459
|
+
align-items: center;
|
|
16460
|
+
width: 40px;
|
|
16461
|
+
padding: 4px 0;
|
|
16462
|
+
border-radius: var(--radius-sm);
|
|
16463
|
+
background: var(--surface);
|
|
16464
|
+
box-shadow: inset 0 0 0 1px var(--line);
|
|
16465
|
+
}
|
|
16466
|
+
.tf-deadline-date b {
|
|
16467
|
+
font: 700 16px/20px var(--font-sans);
|
|
16468
|
+
font-variant-numeric: tabular-nums;
|
|
16469
|
+
}
|
|
16470
|
+
.tf-deadline-date small {
|
|
16471
|
+
font: 600 10px/12px var(--font-sans);
|
|
16472
|
+
text-transform: uppercase;
|
|
16473
|
+
color: var(--ink-muted);
|
|
16474
|
+
}
|
|
16475
|
+
.tf-deadline-text {
|
|
16476
|
+
display: flex;
|
|
16477
|
+
flex: 1 1 160px;
|
|
16478
|
+
flex-direction: column;
|
|
16479
|
+
min-width: 0;
|
|
16480
|
+
}
|
|
16481
|
+
.tf-deadline-text b {
|
|
16482
|
+
font: 600 14px/20px var(--font-sans);
|
|
16483
|
+
overflow-wrap: break-word;
|
|
16484
|
+
}
|
|
16485
|
+
.tf-deadline-text small {
|
|
16486
|
+
font: 500 12px/16px var(--font-sans);
|
|
16487
|
+
color: var(--ink-muted);
|
|
16488
|
+
}
|
|
16489
|
+
.tf-deadline-amount {
|
|
16490
|
+
font: 700 13px/18px var(--font-sans);
|
|
16491
|
+
font-variant-numeric: tabular-nums;
|
|
16492
|
+
}
|
|
16493
|
+
.tf-deadline.is-done .tf-deadline-text b {
|
|
16494
|
+
color: var(--ink-muted);
|
|
16495
|
+
text-decoration: line-through;
|
|
16496
|
+
}
|
|
16497
|
+
.tf-deadline-done {
|
|
16498
|
+
color: var(--mint-ink);
|
|
16499
|
+
}
|
|
16500
|
+
|
|
16501
|
+
/* PolicyCard */
|
|
16502
|
+
.tf-policy {
|
|
16503
|
+
display: flex;
|
|
16504
|
+
flex-direction: column;
|
|
16505
|
+
gap: 16px;
|
|
16506
|
+
min-width: 0;
|
|
16507
|
+
padding: 20px;
|
|
16508
|
+
border-radius: var(--radius-lg);
|
|
16509
|
+
background: var(--surface);
|
|
16510
|
+
box-shadow: var(--shadow-card);
|
|
16511
|
+
}
|
|
16512
|
+
.tf-policy-head {
|
|
16513
|
+
display: flex;
|
|
16514
|
+
flex-wrap: wrap;
|
|
16515
|
+
align-items: center;
|
|
16516
|
+
gap: 12px;
|
|
16517
|
+
}
|
|
16518
|
+
.tf-policy-head .tf-option-text {
|
|
16519
|
+
flex: 1;
|
|
16520
|
+
min-width: 120px;
|
|
16521
|
+
padding: 0;
|
|
16522
|
+
}
|
|
16523
|
+
.tf-policy-head b {
|
|
16524
|
+
font: 700 15px/20px var(--font-sans);
|
|
16525
|
+
}
|
|
16526
|
+
.tf-policy-facts {
|
|
16527
|
+
display: grid;
|
|
16528
|
+
grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
|
|
16529
|
+
gap: 12px;
|
|
16530
|
+
margin: 0;
|
|
16531
|
+
}
|
|
16532
|
+
.tf-policy-facts div {
|
|
16533
|
+
min-width: 0;
|
|
16534
|
+
}
|
|
16535
|
+
.tf-policy-facts dt {
|
|
16536
|
+
font: 600 11px/14px var(--font-sans);
|
|
16537
|
+
letter-spacing: 0.04em;
|
|
16538
|
+
text-transform: uppercase;
|
|
16539
|
+
color: var(--ink-muted);
|
|
16540
|
+
}
|
|
16541
|
+
.tf-policy-facts dd {
|
|
16542
|
+
margin: 2px 0 0;
|
|
16543
|
+
font: 700 15px/20px var(--font-sans);
|
|
16544
|
+
font-variant-numeric: tabular-nums;
|
|
16545
|
+
overflow-wrap: break-word;
|
|
16546
|
+
}
|
|
16547
|
+
.tf-policy-foot {
|
|
16548
|
+
display: flex;
|
|
16549
|
+
flex-wrap: wrap;
|
|
16550
|
+
align-items: center;
|
|
16551
|
+
justify-content: space-between;
|
|
16552
|
+
gap: 8px;
|
|
16553
|
+
padding-top: 12px;
|
|
16554
|
+
border-top: 1px solid var(--line);
|
|
16555
|
+
font: 500 12px/16px var(--font-sans);
|
|
16556
|
+
color: var(--ink-muted);
|
|
16557
|
+
}
|
|
16558
|
+
.tf-policy-actions {
|
|
16559
|
+
display: inline-flex;
|
|
16560
|
+
flex-wrap: wrap;
|
|
16561
|
+
gap: 8px;
|
|
16562
|
+
}
|
|
16563
|
+
|
|
16564
|
+
/* CoverageMatrix */
|
|
16565
|
+
.tf-coverage {
|
|
16566
|
+
display: flex;
|
|
16567
|
+
flex-direction: column;
|
|
16568
|
+
gap: 12px;
|
|
16569
|
+
min-width: 0;
|
|
16570
|
+
}
|
|
16571
|
+
.tf-coverage-sum {
|
|
16572
|
+
display: flex;
|
|
16573
|
+
flex-wrap: wrap;
|
|
16574
|
+
gap: 8px 16px;
|
|
16575
|
+
}
|
|
16576
|
+
.tf-coverage-box {
|
|
16577
|
+
container: tf-coverage / inline-size;
|
|
16578
|
+
}
|
|
16579
|
+
.tf-coverage-table {
|
|
16580
|
+
width: 100%;
|
|
16581
|
+
border-collapse: collapse;
|
|
16582
|
+
}
|
|
16583
|
+
.tf-coverage-table th,
|
|
16584
|
+
.tf-coverage-table td {
|
|
16585
|
+
padding: 10px 8px;
|
|
16586
|
+
border-top: 1px solid var(--line);
|
|
16587
|
+
text-align: left;
|
|
16588
|
+
vertical-align: middle;
|
|
16589
|
+
}
|
|
16590
|
+
.tf-coverage-table th {
|
|
16591
|
+
font-weight: inherit;
|
|
16592
|
+
}
|
|
16593
|
+
.tf-coverage-table th b {
|
|
16594
|
+
display: block;
|
|
16595
|
+
font: 600 14px/20px var(--font-sans);
|
|
16596
|
+
}
|
|
16597
|
+
.tf-coverage-table th small {
|
|
16598
|
+
font: 500 12px/16px var(--font-sans);
|
|
16599
|
+
color: var(--ink-muted);
|
|
16600
|
+
}
|
|
16601
|
+
.tf-coverage-table td:nth-child(2) {
|
|
16602
|
+
white-space: nowrap;
|
|
16603
|
+
}
|
|
16604
|
+
.tf-coverage-note {
|
|
16605
|
+
font: 500 13px/18px var(--font-sans);
|
|
16606
|
+
color: var(--ink-muted);
|
|
16607
|
+
}
|
|
16608
|
+
.tf-coverage-table tr.is-none th b {
|
|
16609
|
+
color: var(--blush-ink);
|
|
16610
|
+
}
|
|
16611
|
+
/* narrow: each risk becomes a block, its status top right, the note underneath */
|
|
16612
|
+
@container tf-coverage (max-width: 440px) {
|
|
16613
|
+
.tf-coverage-table,
|
|
16614
|
+
.tf-coverage-table tbody {
|
|
16615
|
+
display: block;
|
|
16616
|
+
}
|
|
16617
|
+
.tf-coverage-table tr {
|
|
16618
|
+
display: grid;
|
|
16619
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
16620
|
+
gap: 4px 12px;
|
|
16621
|
+
padding: 10px 4px;
|
|
16622
|
+
border-top: 1px solid var(--line);
|
|
16623
|
+
}
|
|
16624
|
+
.tf-coverage-table th,
|
|
16625
|
+
.tf-coverage-table td {
|
|
16626
|
+
padding: 0;
|
|
16627
|
+
border-top: 0;
|
|
16628
|
+
}
|
|
16629
|
+
.tf-coverage-table td.tf-coverage-note {
|
|
16630
|
+
grid-column: 1 / -1;
|
|
16631
|
+
}
|
|
16632
|
+
}
|
|
16633
|
+
|
|
16634
|
+
/* ClaimTimeline */
|
|
16635
|
+
.tf-claim {
|
|
16636
|
+
display: flex;
|
|
16637
|
+
flex-direction: column;
|
|
16638
|
+
gap: 16px;
|
|
16639
|
+
min-width: 0;
|
|
16640
|
+
}
|
|
16641
|
+
.tf-claim-head {
|
|
16642
|
+
display: flex;
|
|
16643
|
+
flex-wrap: wrap;
|
|
16644
|
+
align-items: flex-start;
|
|
16645
|
+
justify-content: space-between;
|
|
16646
|
+
gap: 12px;
|
|
16647
|
+
}
|
|
16648
|
+
.tf-claim-head .tf-option-text {
|
|
16649
|
+
padding: 0;
|
|
16650
|
+
}
|
|
16651
|
+
.tf-claim-head b {
|
|
16652
|
+
font: 700 15px/20px var(--font-sans);
|
|
16653
|
+
}
|
|
16654
|
+
.tf-claim-amount {
|
|
16655
|
+
display: flex;
|
|
16656
|
+
flex-direction: column;
|
|
16657
|
+
align-items: flex-end;
|
|
16658
|
+
font: 700 18px/24px var(--font-sans);
|
|
16659
|
+
font-variant-numeric: tabular-nums;
|
|
16660
|
+
}
|
|
16661
|
+
.tf-claim-amount small {
|
|
16662
|
+
font: 600 11px/14px var(--font-sans);
|
|
16663
|
+
color: var(--ink-muted);
|
|
16664
|
+
}
|
|
16665
|
+
.tf-claim-steps {
|
|
16666
|
+
display: flex;
|
|
16667
|
+
flex-direction: column;
|
|
16668
|
+
}
|
|
16669
|
+
.tf-claim-steps li {
|
|
16670
|
+
position: relative;
|
|
16671
|
+
display: flex;
|
|
16672
|
+
gap: 12px;
|
|
16673
|
+
padding-bottom: 16px;
|
|
16674
|
+
}
|
|
16675
|
+
.tf-claim-steps li:last-child {
|
|
16676
|
+
padding-bottom: 0;
|
|
16677
|
+
}
|
|
16678
|
+
.tf-claim-steps li:not(:last-child)::before {
|
|
16679
|
+
content: "";
|
|
16680
|
+
position: absolute;
|
|
16681
|
+
top: 20px;
|
|
16682
|
+
bottom: 0;
|
|
16683
|
+
left: 9px;
|
|
16684
|
+
width: 2px;
|
|
16685
|
+
background: var(--line);
|
|
16686
|
+
}
|
|
16687
|
+
.tf-claim-steps li.is-done:not(:last-child)::before {
|
|
16688
|
+
background: var(--mint-ink);
|
|
16689
|
+
}
|
|
16690
|
+
.tf-claim-dot {
|
|
16691
|
+
position: relative;
|
|
16692
|
+
display: grid;
|
|
16693
|
+
place-items: center;
|
|
16694
|
+
flex: none;
|
|
16695
|
+
width: 20px;
|
|
16696
|
+
height: 20px;
|
|
16697
|
+
box-sizing: border-box;
|
|
16698
|
+
border: 2px solid var(--line-strong);
|
|
16699
|
+
border-radius: 50%;
|
|
16700
|
+
background: var(--surface);
|
|
16701
|
+
color: var(--primary-foreground);
|
|
16702
|
+
}
|
|
16703
|
+
.tf-claim-steps li.is-done .tf-claim-dot {
|
|
16704
|
+
border-color: var(--mint-ink);
|
|
16705
|
+
background: var(--mint-ink);
|
|
16706
|
+
}
|
|
16707
|
+
.tf-claim-steps li.is-current .tf-claim-dot {
|
|
16708
|
+
border-color: var(--primary);
|
|
16709
|
+
box-shadow: 0 0 0 4px var(--accent);
|
|
16710
|
+
}
|
|
16711
|
+
.tf-claim-steps li.is-failed .tf-claim-dot {
|
|
16712
|
+
border-color: var(--blush-ink);
|
|
16713
|
+
background: var(--blush-ink);
|
|
16714
|
+
}
|
|
16715
|
+
.tf-claim-text {
|
|
16716
|
+
display: flex;
|
|
16717
|
+
flex-direction: column;
|
|
16718
|
+
min-width: 0;
|
|
16719
|
+
}
|
|
16720
|
+
.tf-claim-text b {
|
|
16721
|
+
font: 600 14px/20px var(--font-sans);
|
|
16722
|
+
}
|
|
16723
|
+
.tf-claim-steps li.is-todo .tf-claim-text b {
|
|
16724
|
+
color: var(--ink-muted);
|
|
16725
|
+
font-weight: 500;
|
|
16726
|
+
}
|
|
16727
|
+
.tf-claim-text small {
|
|
16728
|
+
font: 500 12px/16px var(--font-sans);
|
|
16729
|
+
color: var(--ink-muted);
|
|
16730
|
+
}
|
|
16731
|
+
|
|
16732
|
+
/* DocumentList */
|
|
16733
|
+
.tf-docs {
|
|
16734
|
+
display: flex;
|
|
16735
|
+
flex-direction: column;
|
|
16736
|
+
gap: 4px;
|
|
16737
|
+
min-width: 0;
|
|
16738
|
+
}
|
|
16739
|
+
.tf-doc {
|
|
16740
|
+
display: flex;
|
|
16741
|
+
flex-wrap: wrap;
|
|
16742
|
+
align-items: center;
|
|
16743
|
+
gap: 8px 12px;
|
|
16744
|
+
width: 100%;
|
|
16745
|
+
padding: 10px 12px;
|
|
16746
|
+
box-sizing: border-box;
|
|
16747
|
+
border: 0;
|
|
16748
|
+
border-radius: var(--radius-md);
|
|
16749
|
+
background: transparent;
|
|
16750
|
+
color: var(--ink);
|
|
16751
|
+
font: inherit;
|
|
16752
|
+
text-align: left;
|
|
16753
|
+
}
|
|
16754
|
+
button.tf-doc {
|
|
16755
|
+
cursor: pointer;
|
|
16756
|
+
}
|
|
16757
|
+
button.tf-doc:hover {
|
|
16758
|
+
background: var(--accent);
|
|
16759
|
+
}
|
|
16760
|
+
button.tf-doc:focus-visible {
|
|
16761
|
+
outline: 2px solid var(--focus);
|
|
16762
|
+
outline-offset: 2px;
|
|
16763
|
+
}
|
|
16764
|
+
.tf-doc-text {
|
|
16765
|
+
display: flex;
|
|
16766
|
+
flex: 1 1 160px;
|
|
16767
|
+
flex-direction: column;
|
|
16768
|
+
min-width: 0;
|
|
16769
|
+
}
|
|
16770
|
+
.tf-doc-text b {
|
|
16771
|
+
font: 600 14px/20px var(--font-sans);
|
|
16772
|
+
overflow-wrap: break-word;
|
|
16773
|
+
}
|
|
16774
|
+
.tf-doc-text small,
|
|
16775
|
+
.tf-doc-valid {
|
|
16776
|
+
font: 500 12px/16px var(--font-sans);
|
|
16777
|
+
color: var(--ink-muted);
|
|
16778
|
+
}
|