@nanarino/stylus 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,79 @@
1
+ /**
2
+ * 和checkbox的样式太相似
3
+ * 直接复制过来改了几个词就能用
4
+ * 暂时不考虑编译后体积
5
+ */
6
+ .{prefix}-radio
7
+
8
+ // --indent-radio 1.4em
9
+ // --color-radio var(--primary-6)
10
+ // --color-radio:disabled var(--primary-3)
11
+
12
+ min-height var(--line-height-body)
13
+ position relative
14
+ /** 設置行高后會未對齊 */
15
+ // line-height var(--line-height-body)
16
+ // font-size var(--font-size-body)
17
+ display inline-flex
18
+ // text-indent 1.4em // IOS中不支持 遂改用label的padding-left
19
+ // vertical-align middle
20
+ .{prefix}-input:where(input[type=radio])
21
+ margin 0
22
+ border 0
23
+ width 16px
24
+ height 16px
25
+ top 0
26
+ bottom 0
27
+ margin auto 0
28
+ position absolute
29
+ z-index 1
30
+ opacity 0
31
+ cursor pointer
32
+ &:disabled
33
+ cursor not-allowed
34
+ /.{prefix}-input-wrapper
35
+ &:has(^[0..1])
36
+ gap 8px
37
+ ~/-label
38
+ padding-left var(--indent-radio, 1.4em)
39
+ min-width 2px
40
+ min-height 1em
41
+ position relative
42
+ display inline-flex
43
+ align-items center
44
+ &[for]
45
+ cursor pointer
46
+ /**
47
+ * 使用 `^[1..1]` 代替 `../` 减少编译后体积以及选择器冗余
48
+ */
49
+ ^[1..1]:focus-visible+&
50
+ outline 2px solid rgb(var(_get_var_by("color-input\*", wrapper), var(_get_var_by("outline-color-\*\:focus"))))
51
+ border-radius var(--border-radius-sm)
52
+ ^[1..1]:disabled+&
53
+ color rgb(var(--gray-6))
54
+ &[for]
55
+ cursor not-allowed
56
+ ~/-label::before
57
+ content ''
58
+ width 16px
59
+ height 16px
60
+ box-sizing border-box
61
+ border 2px solid rgb(var(--gray-4))
62
+ border-radius 8px
63
+ position absolute
64
+ left 0
65
+ background-color rgb(var(--white))
66
+ transition border-color .3s, border-width .1s
67
+ ^[1..1]:not(:disabled):hover+&
68
+ border-color rgb(var(--color-radio, var(--primary-6)))
69
+ ^[1..1]:checked+&
70
+ border-width 5px
71
+ border-color rgb(var(--color-radio, var(--primary-6)))
72
+ // background-color @border-color
73
+ ^[1..1]:checked:disabled+&
74
+ border-color rgb(var(_get_var_by("color-radio\:disabled"), var(--primary-3)))
75
+ // background-color @border-color
76
+ ^[1..1]:disabled+&
77
+ background-color rgb(var(--gray-1))
78
+ ^[1..1]:disabled:not(:checked)+&
79
+ background-color rgb(var(--gray-2))
@@ -0,0 +1,93 @@
1
+ // select.{prefix}-select
2
+ .{prefix}-select
3
+ // --padding-vertical-select 4px
4
+ // --padding-horizontal-select 12px
5
+ --color-select var(_get_var_by("color-input\*", wrapper), var(_get_var_by("outline-color-\*\:focus")))
6
+
7
+ flex 1
8
+ // 默认的
9
+ // display inline-flex
10
+ align-items center
11
+ padding var(--padding-vertical-select, 4px) var(--padding-horizontal-select, 12px)
12
+ &.sm
13
+ --padding-vertical-select 0
14
+
15
+ &.lg
16
+ --padding-vertical-select 7px
17
+ --font-size-body var(--font-size-h5)
18
+ --line-height-body var(--line-height-h5)
19
+ &:where([data-primary])
20
+ --color-select var(--primary-6)
21
+
22
+ // 以下来自 ./input.styl def input_stat():
23
+
24
+ appearance base-select
25
+ box-sizing border-box
26
+ border none
27
+ outline 2px solid transparent
28
+ border-radius var(--border-radius-md)
29
+ font-size var(--font-size-body)
30
+ line-height var(--line-height-body)
31
+ background-color rgb(var(--gray-2))
32
+ &:hover
33
+ box-shadow var(--box-shadow-drop-bottom)
34
+ &:open
35
+ &:focus-visible
36
+ outline-color rgb(var(_get_var_by(color, select)))
37
+ box-shadow var(--box-shadow-drop-bottom)
38
+ transition outline-color .3s, box-shadow .3s
39
+
40
+ &[disabled]
41
+ cursor not-allowed
42
+ background-color rgb(var(--gray-1))
43
+ color rgb(var(--gray-6))
44
+ &:hover
45
+ box-shadow none
46
+
47
+ optgroup
48
+ display grid
49
+ gap 2px
50
+ line-height calc(var(--line-height-body) + 8px)
51
+ option
52
+ padding @padding
53
+ line-height @line-height
54
+ border-radius @border-radius
55
+ outline @outline
56
+ &:hover
57
+ &:focus-visible
58
+ color rgb(var(--primary-6))
59
+ background-color rgb(var(--primary-1))
60
+ &:focus-visible
61
+ outline-color rgb(var(_get_var_by(color, select)))
62
+ &[data-primary]
63
+ outline-color rgb(var(--primary-6))
64
+ &:checked
65
+ color rgb(var(--white))
66
+ background-color rgb(var(--primary-5))
67
+ &:focus-visible
68
+ outline-color rgb(var(_get_var_by("outline-color-\*\:focus")))
69
+
70
+ // 彈出層
71
+ &::picker(select)
72
+ border none
73
+ margin 8px 0
74
+ border-radius @border-radius
75
+ box-shadow var(--box-shadow-drop-bottom)
76
+ appearance base-select
77
+ background rgb(var(--white))
78
+ padding 4px
79
+ gap 4px
80
+ ^[0]:open^[-1..-1]
81
+ display grid
82
+
83
+ &:where(:has(selectedcontent))::picker-icon
84
+ display none
85
+
86
+ // 要先引入 input 再引入 select
87
+ // 纔能保證未被 `.☘-input-wrapper:where([data-primary]) button` 覆蓋
88
+ button
89
+ color rgb(var(--black))
90
+
91
+ selectedcontent
92
+ flex 1
93
+
@@ -0,0 +1,144 @@
1
+ .{prefix}-switch
2
+
3
+ // --size-switch 22px
4
+ // --padding-switch 2px
5
+
6
+ --size-switch-mover calc(var(--size-switch, 22px) - 2 * var(--padding-switch, 2px))
7
+
8
+ // --box-shadow-width-switch var(--padding-switch)
9
+ box-shadow-width-switch = var(--box-shadow-width-switch, var(--padding-switch, 2px))
10
+ // --color-switch var(--gray-4)
11
+ // --color-switch:checked var(--primary-6)
12
+ // --color-switch:disabled var(--gray-1)
13
+ // --color-switch:checked:disabled var(--primary-3)
14
+ // --color-switch-mover var(--gray-2)
15
+ // --box-shadow-color-switch var(--color-switch:checked)
16
+ // --box-shadow-color-switch:checked var(--color-switch)
17
+ box-shadow-color-switch = var(
18
+ --box-shadow-color-switch, var(
19
+ _get_var_by("color-switch\:checked"), var(
20
+ --primary-6
21
+ )
22
+ )
23
+ )
24
+ box-shadow-color-switch-checked = var(
25
+ _get_var_by("box-shadow-color-switch\:checked"), var(
26
+ --color-switch, var(
27
+ --gray-4
28
+ )
29
+ )
30
+ )
31
+
32
+ display inline-flex
33
+ position relative
34
+ font-size calc(var(--size-switch-mover) - var(--font-offset-parent))
35
+
36
+ height var(--size-switch, 22px)
37
+ width calc(var(--size-switch, 22px) * 2)
38
+ border-radius calc((var(--size-switch, 22px) / 2))
39
+ // overflow hidden
40
+
41
+ &.sm
42
+ --size-switch 16px
43
+
44
+ &-mover
45
+ z-index 1
46
+ overflow hidden
47
+ border-radius 50%
48
+ background-color rgb(var(--color-switch-mover, var(--gray-2)))
49
+ outline 2px solid transparent
50
+ will-change filter
51
+ &-slot
52
+ position absolute
53
+ z-index 0
54
+ font-size 0
55
+ background-color rgb(var(--color-switch, var(--gray-4)))
56
+ transition background-color 1s, box-shadow .5s
57
+ inset 0
58
+ border-radius @border-radius
59
+ &-mover
60
+ .{prefix}-input:where(input[type=checkbox])
61
+ cursor pointer
62
+ position absolute
63
+ display flex
64
+ align-items center
65
+ justify-content center
66
+ margin 0
67
+ left var(--padding-switch, 2px)
68
+ top var(--padding-switch, 2px)
69
+ bottom var(--padding-switch, 2px)
70
+ width var(--size-switch-mover)
71
+ height @width
72
+ transition all .5s
73
+ .{prefix}-input:where(input[type=checkbox])
74
+ opacity 0
75
+ z-index 2
76
+ ~/[data-wider-trigger] ^[-1..-1]
77
+ inset 0 !important
78
+ width @width
79
+ height @height
80
+
81
+ ^[-1..-1]:focus-visible~^[0]-mover
82
+ outline 2px solid rgb(var(_get_var_by("color-input\*", wrapper), var(_get_var_by("outline-color-\*\:focus"))))
83
+
84
+ &:disabled
85
+ ^[-1..-1]:disabled~^[0]-mover
86
+ cursor not-allowed
87
+ ^[-1..-1]:disabled~^[0]-slot
88
+ background-color rgb(var(_get_var_by("color-switch\:disabled"), var(--gray-1)))
89
+ ^[-1..-1]:checked:disabled~^[0]-slot
90
+ background-color rgb(var(_get_var_by("color-switch\:checked\:disabled"), var(--primary-3)))
91
+
92
+ &:checked
93
+ ^[-1..-1]:checked~^[0]-mover
94
+ left calc(var(--size-switch, 22px) + var(--padding-switch, 2px))
95
+ ^[-1..-1]:checked~^[0]-slot
96
+ background-color rgb(var(_get_var_by("color-switch\:checked"), var(--primary-6)))
97
+
98
+ &:not(:disabled):hover~^[0]-mover
99
+ ^[-1..-1]:not(:disabled)~^[0]-mover:hover
100
+ filter drop-shadow(
101
+ 0 \
102
+ 0 \
103
+ var(--padding-switch, 2px) \
104
+ rgb(box-shadow-color-switch) \
105
+ )
106
+ box-shadow \
107
+ 0 \
108
+ 0 \
109
+ box-shadow-width-switch \
110
+ box-shadow-width-switch \
111
+ rgb(box-shadow-color-switch \/ 25%)
112
+ &:not(:disabled):hover~^[0]-slot
113
+ ^[-1..-1]:not(:disabled)~^[0]-slot:hover
114
+ box-shadow \
115
+ inset \
116
+ 0 \
117
+ 0 \
118
+ var(--padding-switch, 2px) \
119
+ var(--padding-switch, 2px) \
120
+ rgb(box-shadow-color-switch \/ 25%)
121
+
122
+ &:not(:disabled):checked:hover~^[0]-mover
123
+ ^[-1..-1]:not(:disabled):checked~^[0]-mover:hover
124
+ filter drop-shadow(
125
+ 0 \
126
+ 0 \
127
+ var(--padding-switch, 2px) \
128
+ rgb(box-shadow-color-switch-checked) \
129
+ )
130
+ box-shadow \
131
+ 0 \
132
+ 0 \
133
+ box-shadow-width-switch \
134
+ box-shadow-width-switch \
135
+ rgb(box-shadow-color-switch-checked \/ 25%)
136
+ &:not(:disabled):checked:hover~^[0]-slot
137
+ ^[-1..-1]:not(:disabled):checked~^[0]-slot:hover
138
+ box-shadow \
139
+ inset \
140
+ 0 \
141
+ 0 \
142
+ var(--padding-switch, 2px) \
143
+ var(--padding-switch, 2px) \
144
+ rgb(box-shadow-color-switch-checked \/ 25%)
package/lib/index.styl ADDED
@@ -0,0 +1,13 @@
1
+ @require './mixins/*'
2
+ // base
3
+ @require './variables/*'
4
+ @require './primary'
5
+
6
+ /**
7
+ * 使通配符引入时要确保引入的优先级 譬如:含有的 `&>*` 选择器被 `&` 覆盖
8
+ */
9
+ @require './common/*'
10
+ // typography / markdown
11
+ @require './typography/*'
12
+ // components
13
+ @require './components/*'
@@ -0,0 +1,6 @@
1
+ user-select(value)
2
+ -webkit-user-select value
3
+ user-select value
4
+ user-drag(value)
5
+ -webkit-user-drag value
6
+ // user-drag value
@@ -0,0 +1,51 @@
1
+ /**
2
+ * 转为 css native rgb
3
+ * 覆盖 stylus 的 rgb
4
+ *
5
+ * @override rgb(0 0 0 \/ .5) => `rgb(0 0 0/0.5)`
6
+ */
7
+ rgb(color)
8
+ s('rgb(%s)', color)
9
+
10
+ /**
11
+ * 覆盖 stylus 的 selector
12
+ * @override selector(':is()') => `selector(:is())`
13
+ *
14
+ * 不要省略not的括号 css支持 但是stylus不支持
15
+ * 如 css`@supports not selector(:is(a, b))`
16
+ * 要写成 styl`@supports not (selector(:is(a, b))`
17
+ *
18
+ */
19
+ selector(query_str)
20
+ s('selector(%s)', unquote(query_str))
21
+
22
+ /**
23
+ * 定義 path 函式
24
+ *
25
+ * 刪除冗餘的縮進 需要用 '\\' 來換行
26
+ * 事實上 即使沒有這個函式 也需要用 '\\' 來換行
27
+ */
28
+ path(path_str)
29
+ s('path(%s)', replace("\\\s+", "", path_str))
30
+
31
+ /**
32
+ * 获取拼接的css变量
33
+ *
34
+ * name: str | var
35
+ * level: int | var
36
+ * return: str
37
+ */
38
+ _get_var_by(property, level = none)
39
+ if level == none
40
+ '--%s'%(unquote(property))
41
+ else
42
+ '--%s-%s'%(unquote(property) level)
43
+
44
+ /**
45
+ * 多行省略混入
46
+ */
47
+ mixin_line_clamp(number)
48
+ display -webkit-box
49
+ -webkit-box-orient vertical
50
+ -webkit-line-clamp number
51
+ overflow hidden
@@ -0,0 +1 @@
1
+ prefix = "na"
@@ -0,0 +1,17 @@
1
+ color_alias_dict = {
2
+ primary: 'pinkpurple',
3
+ success: 'green',
4
+ danger: 'red',
5
+ warning: 'orange'
6
+ }
7
+ :root
8
+ for k, v in color_alias_dict
9
+ for i in range(1 10)
10
+ {_get_var_by(k, i)} var(_get_var_by(v, i))
11
+
12
+ if k != 'primary'
13
+ [data-primary={k}]
14
+ for i in range(1 10)
15
+ {_get_var_by('primary', i)} var(_get_var_by(k, i))
16
+
17
+ {_get_var_by("outline-color-\*\:focus")} var(--black)
@@ -0,0 +1,17 @@
1
+ .{prefix}-divider
2
+ &:where(hr)
3
+ border-color rgb(var(--gray-2) \/ 0.4)
4
+ &:where(div)
5
+ padding-top 2em
6
+ margin-bottom 2em
7
+ overflow hidden
8
+ --box-shadow-color var(--gray-6)
9
+ box-shadow var(--box-shadow-divider-bottom)
10
+ &:where(span)
11
+ display inline-block
12
+ vertical-align middle
13
+ height 1em
14
+ padding-left 1em
15
+ margin-right 1em
16
+ --box-shadow-color var(--black)
17
+ box-shadow var(--box-shadow-divider-right)
@@ -0,0 +1,120 @@
1
+ .{prefix}-image
2
+
3
+ // --color-image var(--white)
4
+ // --color-image-mask var(--black)
5
+ --color-link var(--color-image, var(--white))
6
+ {_get_var_by("color-link\:hover")} var(--gray-2)
7
+ {_get_var_by("color-link\:disabled")} var(--gray-4)
8
+
9
+
10
+ display inline-flex
11
+ flex-direction column
12
+ gap 16px
13
+ align-items center
14
+ justify-content center
15
+
16
+ position relative
17
+ box-sizing border-box
18
+ background-repeat no-repeat
19
+ background-size cover
20
+ background-position center center
21
+ overflow hidden
22
+ &>img
23
+ // -webkit-user-drag none
24
+ width 100%
25
+ height 100%
26
+ object-fit @background-size
27
+ object-position @background-position
28
+ &-mask
29
+ opacity 0
30
+ transition opacity .5s
31
+ position absolute
32
+ z-index 2
33
+ inset 0
34
+ color rgb(var(--color-image, var(--white)))
35
+ background-color rgb(var(--black) \/ 0.5)
36
+ display flex
37
+ align-items center
38
+ justify-content center
39
+ &:hover
40
+ opacity 1
41
+ &-footer
42
+ height 64px
43
+ padding 9px 16px
44
+ box-sizing border-box
45
+ position absolute
46
+ z-index 2
47
+ bottom 0
48
+ left 0
49
+ right 0
50
+ color rgb(var(--color-image, var(--white)))
51
+ background-image linear-gradient(
52
+ 180deg,
53
+ transparent 0%,
54
+ transparent 0%,
55
+ rgb(var(--color-image-mask, var(--black))) 100%,
56
+ rgb(var(--color-image-mask, var(--black))) 100%
57
+ )
58
+ display flex
59
+ align-items center
60
+ gap 16px
61
+
62
+ &-content
63
+ height 100%
64
+ display flex
65
+ flex-direction column
66
+ justify-content space-around
67
+ flex 1
68
+ word-break break-all
69
+ .{prefix}-title
70
+ .{prefix}-paragraph
71
+ /**
72
+ * 不设置高度的时候 由内容撑开在多行时
73
+ * 受justify-content影响 可以居中
74
+ */
75
+ height unset
76
+ margin 0
77
+
78
+ &-action
79
+ display flex
80
+ align-items center
81
+ gap 16px
82
+
83
+ // 图片上传
84
+ &.{prefix}-input-wrapper
85
+
86
+ color rgb(var(_get_var_by("color-input\*", wrapper), var(--gray-6)))
87
+
88
+ input[type=file].{prefix}-input
89
+
90
+ --color-input var(--gray-6)
91
+ {_get_var_by("outline-color-\*\:focus")} var(_get_var_by("color-input\*", wrapper), var(--color-input))
92
+
93
+ &:where([data-primary])
94
+ --color-input var(--primary-6)
95
+
96
+ position absolute
97
+ inset 0px
98
+ border-radius var(--border-radius-md)
99
+ border 2px dashed rgb(var(_get_var_by("outline-color-\*\:focus")))
100
+ // opacity 0
101
+ cursor pointer
102
+ color transparent
103
+ outline 2px solid transparent
104
+ &::-ms-browse
105
+ display none
106
+ &::-webkit-file-upload-button
107
+ display none
108
+ &::file-selector-button
109
+ display none
110
+ &[disabled]
111
+ cursor not-allowed
112
+ opacity .3
113
+ &:focus-visible
114
+ outline-color rgb(var(_get_var_by("outline-color-\*\:focus")))
115
+
116
+ transition box-shadow .3s, opacity .3s
117
+
118
+
119
+ &:has(input[type=file].{prefix}-input:not([disabled])):hover
120
+ box-shadow var(--box-shadow-drop-bottom)
@@ -0,0 +1,32 @@
1
+ .{prefix}-link
2
+
3
+ // --color-link var(--primary-6)
4
+ // --color-link:hover var(--primary-5)
5
+ // --color-link:focus var(--primary-7)
6
+ // --color-link:disabled var(--primary-2)
7
+
8
+ display inline-flex
9
+ // vertical-align baseline
10
+ font-size inherit
11
+ border none
12
+ background none
13
+ padding unset
14
+ cursor pointer
15
+ outline 2px solid transparent
16
+ // text-decoration none
17
+ color rgb(var(--color-link, var(--primary-6)))
18
+ &:hover
19
+ color rgb(var(_get_var_by("color-link\:hover"), var(--primary-5)))
20
+ &:focus
21
+ color rgb(var(_get_var_by("color-link\:focus"), var(--primary-7)))
22
+ &[disabled]
23
+ &[aria-disabled]
24
+ color rgb(var(_get_var_by("color-link\:disabled"), var(--primary-2)))
25
+ cursor not-allowed
26
+ // pointer-events none
27
+ &:focus-visible
28
+ outline-color rgb(var(_get_var_by("outline-color-\*\:focus")))
29
+ border-radius var(--border-radius-sm)
30
+
31
+ //.{prefix}-code
32
+
@@ -0,0 +1,10 @@
1
+ // ul.{prefix}-list
2
+ // li.{prefix}-list
3
+ .{prefix}-list
4
+ line-height 2
5
+ &>*
6
+ &>li>*
7
+ vertical-align middle
8
+ &::marker
9
+ &>li::marker
10
+ color rgb(var(--primary-5))
@@ -0,0 +1,27 @@
1
+ .{prefix}-paragraph
2
+ margin 1em 0
3
+ padding 0
4
+ font-size var(--font-size-body)
5
+ line-height var(--line-height-body)
6
+ // &>*
7
+ // vertical-align middle
8
+ &:has(.{prefix}-code)
9
+ line-height calc(var(--line-height-body) + var(--font-offset-parent))
10
+
11
+ for i in range(1 6)
12
+ &:where([data-size=\"{i}\"])
13
+ --line-height-body var(_get_var_by(
14
+ line-height,
15
+ 'h%s' % i
16
+ ))
17
+ --font-size-body var(_get_var_by(
18
+ font-size,
19
+ 'h%s' % i
20
+ ))
21
+ &:where([data-ellipsis=\"{i}\"])
22
+ mixin_line_clamp(i)
23
+ height 'calc(%s * %s)' % (var(--line-height-body) i)
24
+ &:where([data-has-indent])
25
+ text-indent 2em
26
+
27
+ // blockquote 見 title.styl
@@ -0,0 +1,74 @@
1
+ gray-cell()
2
+ color rgb(var(--gray-9))
3
+ background-color rgb(var(--gray-1))
4
+ row-hover-cell()
5
+ color rgb(var(_get_var_by("color-cell-row\:hover"), var(--gray-9)))
6
+ background-color rgb(var(_get_var_by("background-color-cell-row\:hover"), var(--gray-1)))
7
+
8
+
9
+ .{prefix}-table-wrapper
10
+ display grid
11
+ overflow auto
12
+ position relative
13
+
14
+ thead, .{prefix}-table-header-group
15
+ top 0
16
+ z-index 10
17
+ position sticky
18
+ tfoot, .{prefix}-table-footer-group
19
+ bottom 0
20
+ z-index 10
21
+ position sticky
22
+
23
+ .{prefix}-table
24
+ height fit-content
25
+ /.{prefix}-table
26
+ // --min-width-cell unset
27
+ // --padding-cell 9px 12px
28
+ // --border-cell none
29
+ // --text-align-cell left
30
+
31
+ font-size var(--font-size-body)
32
+ line-height var(--line-height-body)
33
+ &.lg
34
+ --padding-cell 13px 16px
35
+ --font-size-body var(--font-size-3)
36
+ --line-height-body var(--line-height-3)
37
+ &.sm
38
+ --padding-cell 5px 8px
39
+ --font-size-body var(--font-size-1)
40
+ --line-height-body var(--line-height-1)
41
+
42
+ display table
43
+ max-width 100%
44
+ border-collapse collapse
45
+
46
+ tr, &-row
47
+ display table-row
48
+ box-sizing border-box
49
+ &:hover>*
50
+ row-hover-cell()
51
+ td, th, &-cell
52
+ display table-cell
53
+ box-sizing border-box
54
+ // white-space nowrap
55
+ white-space var(--white-space-cell, normal)
56
+ min-width var(--min-width-cell, unset)
57
+ padding var(--padding-cell, 9px 12px)
58
+ text-align var(--text-align-cell, left)
59
+ border var(--border-cell, none)
60
+ box-shadow var(--box-shadow-divider-bottom)
61
+
62
+ &-header-group
63
+ display table-header-group
64
+ .{prefix}-table-cell
65
+ gray-cell()
66
+ &-footer-group
67
+ display table-footer-group
68
+ .{prefix}-table-cell
69
+ gray-cell()
70
+ th
71
+ gray-cell()
72
+
73
+ colgroup>col
74
+ border 1px none rgb(var(--box-shadow-color) \/ .3)