@ilo-org/styles 1.10.0 → 1.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/css/components/accordion.css +1 -1
  2. package/css/components/audioplayer.css +1 -0
  3. package/css/components/blockquote.css +1 -1
  4. package/css/components/breadcrumb.css +1 -1
  5. package/css/components/button.css +1 -1
  6. package/css/components/callout.css +1 -1
  7. package/css/components/card.css +1 -1
  8. package/css/components/cardgroup.css +1 -1
  9. package/css/components/checkbox.css +1 -1
  10. package/css/components/container.css +1 -1
  11. package/css/components/contextmenu.css +1 -1
  12. package/css/components/datacard.css +1 -1
  13. package/css/components/datepicker.css +1 -1
  14. package/css/components/detailcard.css +1 -1
  15. package/css/components/dropdown.css +1 -1
  16. package/css/components/empty.css +1 -1
  17. package/css/components/factlistcard.css +1 -1
  18. package/css/components/featurecard.css +1 -1
  19. package/css/components/fieldset.css +1 -1
  20. package/css/components/file-upload.css +1 -1
  21. package/css/components/footer.css +1 -1
  22. package/css/components/form.css +1 -1
  23. package/css/components/formcontrol.css +1 -1
  24. package/css/components/hero.css +1 -1
  25. package/css/components/herocard.css +1 -1
  26. package/css/components/image.css +1 -1
  27. package/css/components/input.css +1 -1
  28. package/css/components/languagetoggle.css +1 -1
  29. package/css/components/link.css +1 -1
  30. package/css/components/linklist.css +1 -1
  31. package/css/components/list.css +1 -1
  32. package/css/components/loading.css +1 -1
  33. package/css/components/logogrid.css +1 -1
  34. package/css/components/modal.css +1 -1
  35. package/css/components/multilinkcard.css +1 -1
  36. package/css/components/navigation.css +1 -1
  37. package/css/components/notification.css +1 -1
  38. package/css/components/pagination.css +1 -1
  39. package/css/components/profile.css +1 -1
  40. package/css/components/promocard.css +1 -1
  41. package/css/components/radio.css +1 -1
  42. package/css/components/readmore.css +1 -1
  43. package/css/components/richtext.css +1 -1
  44. package/css/components/scorecard.css +1 -1
  45. package/css/components/searchfield.css +1 -1
  46. package/css/components/socialmedia.css +1 -1
  47. package/css/components/statcard.css +1 -1
  48. package/css/components/status.css +1 -1
  49. package/css/components/table.css +1 -1
  50. package/css/components/tableofcontents.css +1 -1
  51. package/css/components/tabs.css +1 -1
  52. package/css/components/tag.css +1 -1
  53. package/css/components/textarea.css +1 -1
  54. package/css/components/textcard.css +1 -1
  55. package/css/components/textinput.css +1 -1
  56. package/css/components/toggle.css +1 -1
  57. package/css/components/tooltip.css +1 -1
  58. package/css/components/video.css +1 -1
  59. package/css/global.css +1 -1
  60. package/css/global.css.map +1 -1
  61. package/css/index.css +3 -3
  62. package/css/index.css.map +1 -1
  63. package/css/monorepo.css +3 -3
  64. package/css/monorepo.css.map +1 -1
  65. package/package.json +2 -2
  66. package/scss/_animations.scss +22 -0
  67. package/scss/components/_audioplayer.scss +206 -0
  68. package/scss/components/_linklist.scss +2 -2
  69. package/scss/components/_tableofcontents.scss +2 -1
  70. package/scss/components/_video.scss +7 -1
  71. package/scss/components/index.scss +2 -0
  72. package/scss/components/photogallery/_expandable-caption.scss +92 -0
  73. package/scss/components/photogallery/_lightbox.scss +70 -0
  74. package/scss/components/photogallery/_lightboxgallery.scss +254 -0
  75. package/scss/components/photogallery/_photogallery-controls.scss +125 -0
  76. package/scss/components/photogallery/_photogallery-thumbnails.scss +100 -0
  77. package/scss/components/photogallery/_photogallery.scss +179 -0
  78. package/scss/components/photogallery/index.scss +6 -0
  79. package/scss/theme/_foundation.scss +10 -4
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ilo-org/styles",
3
3
  "description": "Styles for products using ILO's Design System",
4
- "version": "1.10.0",
4
+ "version": "1.10.2",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/international-labour-organization/designsystem.git",
@@ -39,7 +39,7 @@
39
39
  "license": "Apache-2.0",
40
40
  "dependencies": {
41
41
  "@ilo-org/fonts": "2.0.0",
42
- "@ilo-org/icons": "2.3.0",
42
+ "@ilo-org/icons": "2.4.0",
43
43
  "@ilo-org/themes": "0.9.1"
44
44
  },
45
45
  "devDependencies": {
@@ -63,3 +63,25 @@
63
63
  opacity: 1;
64
64
  }
65
65
  }
66
+
67
+ @keyframes slideUp {
68
+ from {
69
+ opacity: 0;
70
+ transform: translateY(30px);
71
+ }
72
+ to {
73
+ opacity: 1;
74
+ transform: translateY(0);
75
+ }
76
+ }
77
+
78
+ @keyframes slideDown {
79
+ from {
80
+ opacity: 0;
81
+ transform: translateY(-30px);
82
+ }
83
+ to {
84
+ opacity: 1;
85
+ transform: translateY(0);
86
+ }
87
+ }
@@ -0,0 +1,206 @@
1
+ @use "../functions" as *;
2
+ @import "../mixins";
3
+
4
+ .ilo--audio-player {
5
+ &--progress-bar {
6
+ height: px-to-rem(8px);
7
+ background-color: var(--ilo-color-gray-accessible);
8
+ position: relative;
9
+ cursor: pointer;
10
+ }
11
+ &--progress-complete {
12
+ --progress: 0%;
13
+ width: var(--progress);
14
+ height: 100%;
15
+ background-color: var(--ilo-color-yellow-500);
16
+ position: absolute;
17
+ top: 0;
18
+ left: 0;
19
+ transition: width 0.5s;
20
+ }
21
+ &--body {
22
+ display: grid;
23
+ grid-template-columns: 1fr 1fr;
24
+ grid-template-rows: auto auto;
25
+ grid-template-areas:
26
+ "left left"
27
+ "center right";
28
+ align-items: center;
29
+ color: var(--ilo-color-white);
30
+ background-color: var(--ilo-color-gray-charcoal);
31
+ padding: spacing(3) 0;
32
+ row-gap: spacing(3);
33
+ }
34
+ &--left {
35
+ grid-area: left;
36
+ border-bottom: 1px solid var(--ilo-color-gray-accessible);
37
+ padding-inline: spacing(3);
38
+ padding-block-end: spacing(3);
39
+ }
40
+ &--track-name {
41
+ font-size: var(--ilo-font-size-sm);
42
+ font-weight: var(--ilo-font-weight-medium);
43
+ line-height: var(--ilo-line-height-lg);
44
+ }
45
+ &--track-details {
46
+ display: flex;
47
+ font-size: var(--ilo-font-size-xsm);
48
+ line-height: var(--ilo-line-height-xlg);
49
+ color: var(--ilo-color-gray-light);
50
+ }
51
+ &--track-creator::before {
52
+ content: "•";
53
+ margin-right: spacing(2);
54
+ }
55
+ &--track-programme {
56
+ text-wrap: nowrap;
57
+ }
58
+ &--track-creator {
59
+ margin-left: spacing(2);
60
+ text-wrap: nowrap;
61
+ }
62
+ &--center {
63
+ grid-area: center;
64
+ display: flex;
65
+ align-items: center;
66
+ gap: spacing(1);
67
+ padding-inline-start: spacing(3);
68
+ }
69
+ &--skip-button {
70
+ border: none;
71
+ display: flex;
72
+ cursor: pointer;
73
+ padding: spacing(2);
74
+ }
75
+ &--skip-button:hover {
76
+ background-color: var(--ilo-color-brand-100);
77
+ color: var(--ilo-color-brand-600);
78
+ }
79
+ &--play-button {
80
+ display: flex;
81
+ align-items: center;
82
+ background-color: var(--ilo-color-yellow-500);
83
+ color: var(--ilo-color-brand-800);
84
+ border-radius: 50%;
85
+ cursor: pointer;
86
+ padding: spacing(1);
87
+ border: none;
88
+ }
89
+ &--play-button:hover {
90
+ background-color: var(--ilo-color-brand-100);
91
+ }
92
+ [aria-label="Play"] &--play-icon {
93
+ display: block;
94
+ }
95
+ [aria-label="Play"] &--pause-icon {
96
+ display: none;
97
+ }
98
+ [aria-label="Pause"] &--play-icon {
99
+ display: none;
100
+ }
101
+ [aria-label="Pause"] &--pause-icon {
102
+ display: block;
103
+ }
104
+ &--right {
105
+ grid-area: right;
106
+ display: flex;
107
+ justify-content: flex-end;
108
+ align-items: center;
109
+ padding-inline-end: spacing(3);
110
+ }
111
+ &--duration {
112
+ display: flex;
113
+ flex-direction: column;
114
+ align-items: flex-end;
115
+ }
116
+ &--duration-played {
117
+ font-size: var(--ilo-font-size-sm);
118
+ font-weight: var(--ilo-font-weight-bold);
119
+ line-height: var(--ilo-line-height-lg);
120
+ }
121
+ &--duration-total {
122
+ color: var(--ilo-color-gray-light);
123
+ font-size: var(--ilo-font-size-2xsm);
124
+ line-height: var(--ilo-line-height-2xlg);
125
+ }
126
+ &--separator {
127
+ height: 32px;
128
+ border-left: 1px solid var(--ilo-color-gray-accessible);
129
+ margin: spacing(1) spacing(3);
130
+ }
131
+ &--volume-icon {
132
+ border: none;
133
+ background: none;
134
+ cursor: pointer;
135
+ display: flex;
136
+ align-items: center;
137
+ }
138
+ [aria-label="Mute"] &--sound-on-icon {
139
+ display: block;
140
+ }
141
+ [aria-label="Mute"] &--sound-off-icon {
142
+ display: none;
143
+ }
144
+ [aria-label="Unmute"] &--sound-on-icon {
145
+ display: none;
146
+ }
147
+ [aria-label="Unmute"] &--sound-off-icon {
148
+ display: block;
149
+ }
150
+ &--volume-slider {
151
+ --progress: 100%;
152
+ margin-left: spacing(1);
153
+ background: var(--ilo-color-yellow-500);
154
+ border-radius: 4px;
155
+ height: 4px;
156
+ width: 50%;
157
+ background: linear-gradient(
158
+ to right,
159
+ var(--ilo-color-yellow-500) 0%,
160
+ var(--ilo-color-yellow-500) var(--progress, 50%),
161
+ var(--ilo-color-gray-accessible) var(--progress, 50%),
162
+ var(--ilo-color-gray-accessible) 100%
163
+ );
164
+ [dir="rtl"] & {
165
+ background: linear-gradient(
166
+ to left,
167
+ var(--ilo-color-yellow-500) 0%,
168
+ var(--ilo-color-yellow-500) var(--progress, 50%),
169
+ var(--ilo-color-gray-accessible) var(--progress, 50%),
170
+ var(--ilo-color-gray-accessible) 100%
171
+ );
172
+ }
173
+ }
174
+ &--volume-slider::-webkit-slider-thumb {
175
+ // Reset default styles
176
+ border: none;
177
+ -webkit-appearance: none;
178
+
179
+ width: 16px;
180
+ height: 16px;
181
+ background: var(--ilo-color-gray-light);
182
+ border-radius: 50%;
183
+ cursor: pointer;
184
+ margin-top: -2px; // Center thumb on track
185
+ }
186
+
187
+ @include breakpoint("md") {
188
+ &--body {
189
+ grid-template-columns: 1fr 1fr 1fr;
190
+ grid-template-rows: auto;
191
+ grid-template-areas: "left center right";
192
+ }
193
+ &--left {
194
+ border-bottom: none;
195
+ padding-inline: spacing(3) 0;
196
+ padding-block: 0;
197
+ }
198
+ &--center {
199
+ justify-content: center;
200
+ padding: 0;
201
+ }
202
+ &--volume-slider {
203
+ width: 40%;
204
+ }
205
+ }
206
+ }
@@ -18,7 +18,7 @@
18
18
  &--headline {
19
19
  font-family: var(--ilo-fonts-display);
20
20
  font-weight: map-get($type, "weights", "label");
21
- @include typography("highlight-large");
21
+ @include typography("heading-4");
22
22
  @include textmargin("margin-bottom", 27px, "headline-6", "display", 0, 0);
23
23
  @include textmargin(
24
24
  "margin-top",
@@ -90,7 +90,7 @@
90
90
  color: map-get($color, "link", "text", "default");
91
91
  font-family: var(--ilo-fonts-display);
92
92
  font-weight: map-get($type, "weights", "section");
93
- @include typography("highlight-medium-bold");
93
+ @include typography("highlight-medium");
94
94
  padding-top: spacing(4);
95
95
  padding-bottom: spacing(4);
96
96
  text-decoration: none;
@@ -125,7 +125,8 @@
125
125
  display: block;
126
126
  font-family: var(--ilo-fonts-display);
127
127
  font-weight: 500;
128
- padding: spacing(4) spacing(4) spacing(4);
128
+ padding-block: spacing(4);
129
+ padding-inline: spacing(4) spacing(12);
129
130
  text-decoration: none;
130
131
  @include dataurlicon("arrow_down", $color-ux-labels-actionable);
131
132
  @include typography("highlight-medium");
@@ -175,7 +175,7 @@
175
175
  // Fullscreen control
176
176
  .vjs-fullscreen-control {
177
177
  order: 5;
178
- @include videobutton("fullscreen", "standard");
178
+ @include videobutton("fullscreen");
179
179
  }
180
180
 
181
181
  // Duration Bar
@@ -332,4 +332,10 @@
332
332
  }
333
333
  }
334
334
  }
335
+
336
+ .vjs-fullscreen {
337
+ .vjs-fullscreen-control {
338
+ @include videobutton("reduce");
339
+ }
340
+ }
335
341
  }
@@ -57,3 +57,5 @@
57
57
  @use "socialmedia";
58
58
  @use "languagetoggle";
59
59
  @use "navigation/index.scss";
60
+ @use "photogallery";
61
+ @use "audioplayer";
@@ -0,0 +1,92 @@
1
+ @use "../../tokens" as *;
2
+ @use "../../functions" as *;
3
+ @import "../../mixins";
4
+ @import "../../config";
5
+
6
+ .ilo--photo-gallery-expandable-caption {
7
+ position: relative;
8
+ $self: &;
9
+ min-height: px-to-rem(56px);
10
+
11
+ &__preview {
12
+ padding: spacing(4);
13
+ min-height: px-to-rem(56px);
14
+ display: flex;
15
+ justify-content: space-between;
16
+ gap: spacing(1);
17
+ align-items: center;
18
+ color: var(--ilo-color-white);
19
+ animation: slideDown 0.2s ease-out;
20
+ }
21
+
22
+ &__text {
23
+ @include typography("body-xsmall");
24
+ line-height: normal;
25
+ position: relative;
26
+ padding-left: spacing(4);
27
+ flex: 1;
28
+ overflow: hidden;
29
+ white-space: nowrap;
30
+ text-overflow: ellipsis;
31
+ margin: 0;
32
+
33
+ [dir="rtl"] & {
34
+ padding-left: 0;
35
+ padding-right: spacing(4);
36
+ text-align: right;
37
+ }
38
+
39
+ &::before {
40
+ content: "";
41
+ position: absolute;
42
+ left: 0;
43
+ top: 50%;
44
+ transform: translateY(-50%);
45
+ width: px-to-rem(3px);
46
+ height: 100%;
47
+ background-color: var(--ilo-color-gray-light);
48
+
49
+ [dir="rtl"] & {
50
+ left: auto;
51
+ right: 0;
52
+ }
53
+ }
54
+ }
55
+
56
+ &__toggle {
57
+ border: none;
58
+ outline: none;
59
+ width: px-to-rem(24px);
60
+ height: px-to-rem(24px);
61
+ background: transparent;
62
+ color: var(--ilo-color-white);
63
+ cursor: pointer;
64
+ flex-shrink: 0;
65
+
66
+ &:hover {
67
+ opacity: 0.8;
68
+ }
69
+ }
70
+
71
+ &--expanded {
72
+ #{$self}__preview {
73
+ overflow: visible;
74
+ white-space: normal;
75
+ text-overflow: unset;
76
+ position: absolute;
77
+ bottom: 0;
78
+ left: 0;
79
+ right: 0;
80
+ background: rgba(0, 0, 0, 0.8);
81
+ color: var(--ilo-color-white);
82
+ animation: slideUp 0.2s ease-out;
83
+ align-items: flex-start;
84
+ }
85
+
86
+ #{$self}__text {
87
+ overflow: visible;
88
+ white-space: normal;
89
+ text-overflow: unset;
90
+ }
91
+ }
92
+ }
@@ -0,0 +1,70 @@
1
+ @use "../../tokens" as *;
2
+ @use "../../functions" as *;
3
+ @import "../../mixins";
4
+ @import "../../config";
5
+
6
+ .ilo--lightbox {
7
+ position: fixed;
8
+ top: 0;
9
+ left: 0;
10
+ right: 0;
11
+ bottom: 0;
12
+ z-index: 9999;
13
+ display: none;
14
+ opacity: 0;
15
+ align-items: center;
16
+ justify-content: center;
17
+ background-color: var(--ilo-color-gray-charcoal);
18
+
19
+ &--open {
20
+ display: flex;
21
+ opacity: 1;
22
+ }
23
+
24
+ &__backdrop {
25
+ position: absolute;
26
+ top: 0;
27
+ left: 0;
28
+ right: 0;
29
+ bottom: 0;
30
+ background-color: var(--ilo-color-gray-charcoal);
31
+ }
32
+
33
+ &__container {
34
+ position: relative;
35
+ width: 100svw;
36
+ height: 100%;
37
+ }
38
+
39
+ &__content {
40
+ position: relative;
41
+ z-index: 1;
42
+ height: 100%;
43
+ }
44
+
45
+ &__close {
46
+ position: fixed;
47
+ top: 0;
48
+ right: 0;
49
+ z-index: 10000;
50
+ background: var(--ilo-color-white);
51
+ border: none;
52
+ width: px-to-rem(40px);
53
+ height: px-to-rem(40px);
54
+ display: flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ color: var(--ilo-color-gray-charcoal);
58
+ cursor: pointer;
59
+
60
+ &:hover {
61
+ background: var(--ilo-color-blue-lighter);
62
+ color: var(--ilo-color-blue);
63
+ }
64
+
65
+ &:focus {
66
+ outline: 2px solid var(--ilo-color-blue);
67
+ outline-offset: 2px;
68
+ }
69
+ }
70
+ }
@@ -0,0 +1,254 @@
1
+ @use "../../tokens" as *;
2
+ @use "../../functions" as *;
3
+ @import "../../mixins";
4
+ @import "../../config";
5
+
6
+ .ilo--lightbox-gallery {
7
+ display: flex;
8
+ flex-direction: column;
9
+ height: inherit;
10
+
11
+ &__core {
12
+ width: 100%;
13
+ height: 70svh;
14
+
15
+ @include breakpoint("md") {
16
+ height: 80svh;
17
+ }
18
+
19
+ &__viewport {
20
+ overflow: hidden;
21
+ width: 100%;
22
+ }
23
+
24
+ &__container {
25
+ display: flex;
26
+ touch-action: pan-y pinch-zoom;
27
+ margin-left: calc(spacing(5) * -1);
28
+ }
29
+
30
+ &__slide {
31
+ transform: translate3d(0, 0, 0);
32
+ flex: 0 0 100%;
33
+ padding-left: spacing(5);
34
+ display: flex;
35
+ justify-content: center;
36
+ align-items: center;
37
+ overflow: visible;
38
+ height: 70svh;
39
+
40
+ @include breakpoint("md") {
41
+ height: 80svh;
42
+ }
43
+ }
44
+
45
+ &__image-wrapper {
46
+ position: relative;
47
+ display: flex;
48
+ align-items: center;
49
+ width: 100%;
50
+
51
+ @include breakpoint("md") {
52
+ display: block;
53
+ height: 100%;
54
+ width: auto;
55
+ }
56
+
57
+ &-credit {
58
+ position: absolute;
59
+ bottom: 0;
60
+ left: 0;
61
+ color: var(--ilo-color-white);
62
+ height: 25px;
63
+ display: flex;
64
+ @include typography("body-xsmall");
65
+ margin-bottom: -1px;
66
+
67
+ [dir="rtl"] & {
68
+ left: auto;
69
+ right: 0;
70
+ }
71
+
72
+ &-text {
73
+ padding: spacing(1) spacing(3);
74
+ display: flex;
75
+ align-items: center;
76
+ background-color: var(--ilo-color-gray-charcoal);
77
+ }
78
+
79
+ &-corner {
80
+ display: block;
81
+ width: px-to-rem(25px);
82
+ height: px-to-rem(25px);
83
+ background-color: var(--ilo-color-gray-charcoal);
84
+ clip-path: polygon(0 0, 0% 100%, 100% 100%);
85
+ margin-left: px-to-rem(-0.5px);
86
+
87
+ @include breakpoint("md") {
88
+ margin-left: 0;
89
+ margin-right: 0;
90
+ }
91
+
92
+ [dir="rtl"] & {
93
+ clip-path: polygon(100% 0, 0% 100%, 100% 100%);
94
+ margin-left: 0;
95
+ margin-right: px-to-rem(-0.5px);
96
+ }
97
+ }
98
+ }
99
+
100
+ img {
101
+ width: 100%;
102
+ object-fit: contain;
103
+
104
+ @include breakpoint("md") {
105
+ height: 70svh;
106
+
107
+ @include breakpoint("md") {
108
+ height: 80svh;
109
+ }
110
+ aspect-ratio: unset;
111
+ }
112
+ }
113
+ }
114
+ }
115
+
116
+ &__bar {
117
+ height: 30svh;
118
+
119
+ @include breakpoint("md") {
120
+ height: 20svh;
121
+ }
122
+ background-color: rgba(0, 0, 0, 0.7);
123
+ display: flex;
124
+ flex-direction: column;
125
+ justify-content: space-between;
126
+
127
+ @include breakpoint("md") {
128
+ justify-content: space-evenly;
129
+ }
130
+ }
131
+
132
+ &__caption {
133
+ display: block;
134
+
135
+ @include breakpoint("md") {
136
+ display: none;
137
+ }
138
+ }
139
+
140
+ &__extra {
141
+ display: none;
142
+ height: px-to-rem(80px);
143
+ padding: spacing(4) spacing(10);
144
+ align-items: center;
145
+ justify-content: space-between;
146
+
147
+ @include breakpoint("md") {
148
+ display: flex;
149
+ }
150
+
151
+ &-text {
152
+ color: var(--ilo-color-white);
153
+ @include typography("body-small");
154
+ position: relative;
155
+ padding-left: spacing(4);
156
+ text-align: left;
157
+ flex-basis: 70%;
158
+
159
+ [dir="rtl"] & {
160
+ padding-left: 0;
161
+ padding-right: spacing(4);
162
+ text-align: right;
163
+ }
164
+
165
+ &::before {
166
+ content: "";
167
+ position: absolute;
168
+ left: 0;
169
+ top: 50%;
170
+ transform: translateY(-50%);
171
+ width: px-to-rem(3px);
172
+ height: 100%;
173
+ background-color: var(--ilo-color-gray-light);
174
+
175
+ [dir="rtl"] & {
176
+ left: auto;
177
+ right: 0;
178
+ }
179
+ }
180
+ }
181
+ }
182
+
183
+ &__thumbnails {
184
+ &__carousel {
185
+ overflow: hidden;
186
+ padding-inline: spacing(2);
187
+ }
188
+
189
+ &__container {
190
+ display: flex;
191
+ gap: spacing(2);
192
+ }
193
+
194
+ &__slide {
195
+ display: flex;
196
+ }
197
+
198
+ &__image {
199
+ position: relative;
200
+ width: px-to-rem(90px);
201
+ border: none;
202
+ outline: none;
203
+ background-color: var(--ilo-color-gray-light);
204
+ display: flex;
205
+ align-items: center;
206
+ justify-content: center;
207
+ cursor: pointer;
208
+
209
+ &:focus {
210
+ outline: px-to-rem(2px) solid var(--ilo-color-blue);
211
+ outline-offset: px-to-rem(2px);
212
+ }
213
+
214
+ @include breakpoint("md") {
215
+ width: px-to-rem(160px);
216
+ }
217
+
218
+ img {
219
+ height: inherit;
220
+ width: inherit;
221
+ aspect-ratio: 16/9;
222
+ object-fit: contain;
223
+ }
224
+
225
+ &--selected,
226
+ &:hover {
227
+ z-index: 2;
228
+
229
+ &::after {
230
+ width: inherit;
231
+ content: "";
232
+ position: absolute;
233
+ inset: 0;
234
+ background: linear-gradient(
235
+ 0deg,
236
+ rgba(30, 45, 190, 0.4) 0%,
237
+ rgba(30, 45, 190, 0.4) 100%
238
+ );
239
+ pointer-events: none;
240
+ border-bottom: px-to-rem(4) solid var(--ilo-color-blue);
241
+ }
242
+ }
243
+ }
244
+ }
245
+
246
+ &__controls {
247
+ display: block;
248
+ padding: spacing(4);
249
+
250
+ @include breakpoint("md") {
251
+ display: none;
252
+ }
253
+ }
254
+ }