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