summaryrefslogtreecommitdiffstats
path: root/src/objects/_card.scss
diff options
context:
space:
mode:
Diffstat (limited to 'src/objects/_card.scss')
-rw-r--r--src/objects/_card.scss115
1 files changed, 60 insertions, 55 deletions
diff --git a/src/objects/_card.scss b/src/objects/_card.scss
index 4f8c7fb..6b80e2f 100644
--- a/src/objects/_card.scss
+++ b/src/objects/_card.scss
@@ -14,34 +14,26 @@
14 position: relative; 14 position: relative;
15 display: flex; 15 display: flex;
16 flex-direction: column; 16 flex-direction: column;
17 background-color: props.get(vars.$bg-color);
18 background-clip: content-box; 17 background-clip: content-box;
19 border: 1px solid transparent; 18 background-color: props.get(vars.$bg-color);
19 border: props.get(vars.$border-width) solid transparent;
20 border-color: props.get(vars.$border-color); 20 border-color: props.get(vars.$border-color);
21 border-radius: props.get(vars.$rounding); 21 border-radius: props.get(vars.$rounding);
22 transition: transform .2s; 22 transition: transform .2s, background-color .2s, border-color .2s;
23 23
24 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive') { 24 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive') {
25 &:hover, 25 &:hover,
26 &:active, 26 &:active,
27 &:focus-visible { 27 &:focus-visible {
28 transform: translateY(props.get(vars.$hover--offset-b)); 28 transform: translateY(props.get(vars.$hover--offset-b));
29 29 background-color: props.get(vars.$hover--bg-color);
30 @include bem.elem('body') { 30 border-color: props.get(vars.$hover--border-color);
31 @include bem.modifier('hidden') {
32 visibility: visible;
33 opacity: 1;
34 transition:
35 opacity .2s ease,
36 visibility .2s linear;
37 }
38 }
39 } 31 }
40 32
41 &:focus-visible { 33 &:focus-visible {
42 margin: calc(-1 * props.get(vars.$key-focus--border-width) + 1px); 34 margin: calc(-1 * props.get(vars.$key-focus--border-width));
43 border: props.get(vars.$key-focus--border-offset) solid transparent; 35 border: calc(props.get(vars.$key-focus--border-offset) + props.get(vars.$border-width)) solid transparent;
44 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset) - 1px); 36 border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset));
45 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); 37 outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width);
46 box-shadow: 38 box-shadow:
47 0 0 0 39 0 0 0
@@ -65,13 +57,13 @@
65 transition: background-color .2s, transform .2s, opacity .2s; 57 transition: background-color .2s, transform .2s, opacity .2s;
66 58
67 &:first-child { 59 &:first-child {
68 border-start-start-radius: calc(props.get(vars.$rounding) - 1px); 60 border-start-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
69 border-start-end-radius: calc(props.get(vars.$rounding) - 1px); 61 border-start-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
70 } 62 }
71 63
72 &:last-child { 64 &:last-child {
73 border-end-start-radius: calc(props.get(vars.$rounding) - 1px); 65 border-end-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
74 border-end-end-radius: calc(props.get(vars.$rounding) - 1px); 66 border-end-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
75 } 67 }
76 68
77 @include bem.next-elem('avatar') { 69 @include bem.next-elem('avatar') {
@@ -104,26 +96,6 @@
104 margin-block: -100em 100em; 96 margin-block: -100em 100em;
105 content: ''; 97 content: '';
106 } 98 }
107
108 @include bem.modifier('hidden') {
109 position: absolute;
110 inset-block-end: 0;
111 inset-inline: 0;
112 z-index: 10;
113 visibility: hidden;
114 background-color: props.get(vars.$bg-color);
115 //border-end-start-radius: props.get(vars.$rounding);
116 //border-end-end-radius: props.get(vars.$rounding);
117 opacity: 0;
118 transition:
119 opacity .2s ease,
120 visibility 0s .2s linear;
121
122 @include bem.next-elem('image') {
123 border-start-start-radius: calc(props.get(vars.$rounding) - 1px);
124 border-start-end-radius: calc(props.get(vars.$rounding) - 1px);
125 }
126 }
127 } 99 }
128 100
129 @include bem.elem('content') { 101 @include bem.elem('content') {
@@ -155,19 +127,14 @@
155 &:hover, 127 &:hover,
156 &:active, 128 &:active,
157 &:focus-visible { 129 &:focus-visible {
158 transform: none; 130 transform: none;
131 background-color: transparent;
159 132
160 @include bem.elem('image') { 133 @include bem.elem('image') {
161 background-color: props.get(vars.$quiet--hover--image-color); 134 background-color: props.get(vars.$quiet--hover--image-color);
162 opacity: .75; 135 opacity: .75;
163 transform: translateY(props.get(vars.$hover--offset-b)); 136 transform: translateY(props.get(vars.$hover--offset-b));
164 } 137 }
165
166 @include bem.elem('body') {
167 @include bem.modifier('hidden') {
168 transform: translateY(props.get(vars.$hover--offset-b));
169 }
170 }
171 } 138 }
172 139
173 &:focus-visible { 140 &:focus-visible {
@@ -203,11 +170,6 @@
203 @include bem.elem('body') { 170 @include bem.elem('body') {
204 padding: 0; 171 padding: 0;
205 padding-block-start: props.get(vars.$spacing); 172 padding-block-start: props.get(vars.$spacing);
206
207 @include bem.modifier('hidden') {
208 padding-block: props.get(vars.$pad-b);
209 padding-inline: props.get(vars.$pad-i);
210 }
211 } 173 }
212 174
213 @include bem.elem('footer') { 175 @include bem.elem('footer') {
@@ -215,6 +177,49 @@
215 } 177 }
216 } 178 }
217 179
180 @include bem.modifier('thumbnail') {
181 @include bem.elem('image') {
182 inline-size: calc(100% + 2 * props.get(vars.$border-width));
183 margin: calc(-1 * props.get(vars.$border-width));
184 border-radius: props.get(vars.$rounding);
185 }
186
187 @include bem.elem('body') {
188 position: absolute;
189 inset-block-end: calc(-1 * props.get(vars.$border-width));
190 inset-inline: calc(-1 * props.get(vars.$border-width));
191 z-index: 10;
192 visibility: hidden;
193 background-color: props.get(vars.$hover--bg-color);
194 border-width: 0 props.get(vars.$border-width) props.get(vars.$border-width);
195 border-color: transparent;
196 border-style: solid;
197 border-end-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
198 border-end-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width));
199 opacity: 0;
200 transition:
201 border-color .2s ease,
202 opacity .2s ease,
203 visibility 0s .2s linear;
204 }
205
206 @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive') {
207 &:hover,
208 &:active,
209 &:focus-visible {
210 @include bem.elem('body') {
211 border-color: props.get(vars.$hover--border-color);
212 visibility: visible;
213 opacity: 1;
214 transition:
215 border-color .2s ease,
216 opacity .2s ease,
217 visibility .2s linear;
218 }
219 }
220 }
221 }
222
218 @include bem.modifier('horizontal') { 223 @include bem.modifier('horizontal') {
219 flex-direction: row; 224 flex-direction: row;
220 align-items: center; 225 align-items: center;
@@ -225,11 +230,11 @@
225 230
226 &:first-child { 231 &:first-child {
227 border-start-end-radius: 0; 232 border-start-end-radius: 0;
228 border-end-start-radius: calc(props.get(vars.$rounding) - 1px); 233 border-end-start-radius: props.get(vars.$rounding);
229 } 234 }
230 235
231 &:last-child { 236 &:last-child {
232 border-start-end-radius: calc(props.get(vars.$rounding) - 1px); 237 border-start-end-radius: props.get(vars.$rounding);
233 border-end-start-radius: 0; 238 border-end-start-radius: 0;
234 } 239 }
235 } 240 }