zenkit-css 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.
Files changed (96) hide show
  1. package/README.md +182 -0
  2. package/dist/zenkit.css +33721 -0
  3. package/dist/zenkit.css.map +1 -0
  4. package/dist/zenkit.min.css +1 -0
  5. package/dist/zenkit.min.css.map +1 -0
  6. package/package.json +41 -0
  7. package/scss/abstracts/_functions.scss +174 -0
  8. package/scss/abstracts/_mixins.scss +272 -0
  9. package/scss/abstracts/_variables.scss +216 -0
  10. package/scss/base/_reset.scss +130 -0
  11. package/scss/base/_root.scss +194 -0
  12. package/scss/base/_typography.scss +271 -0
  13. package/scss/components/_accordion.scss +200 -0
  14. package/scss/components/_affix.scss +278 -0
  15. package/scss/components/_alerts.scss +175 -0
  16. package/scss/components/_anchor.scss +438 -0
  17. package/scss/components/_autocomplete.scss +530 -0
  18. package/scss/components/_avatar.scss +256 -0
  19. package/scss/components/_backtop.scss +329 -0
  20. package/scss/components/_badges.scss +266 -0
  21. package/scss/components/_breadcrumb.scss +102 -0
  22. package/scss/components/_buttons.scss +340 -0
  23. package/scss/components/_calendar.scss +787 -0
  24. package/scss/components/_cards.scss +265 -0
  25. package/scss/components/_carousel.scss +306 -0
  26. package/scss/components/_cascader.scss +510 -0
  27. package/scss/components/_close-button.scss +106 -0
  28. package/scss/components/_colorpicker.scss +593 -0
  29. package/scss/components/_datepicker.scss +625 -0
  30. package/scss/components/_descriptions.scss +453 -0
  31. package/scss/components/_divider.scss +253 -0
  32. package/scss/components/_drawer.scss +485 -0
  33. package/scss/components/_dropdown.scss +323 -0
  34. package/scss/components/_empty.scss +321 -0
  35. package/scss/components/_floatbutton.scss +400 -0
  36. package/scss/components/_forms.scss +753 -0
  37. package/scss/components/_image.scss +497 -0
  38. package/scss/components/_inputnumber.scss +475 -0
  39. package/scss/components/_layout.scss +538 -0
  40. package/scss/components/_list-group.scss +227 -0
  41. package/scss/components/_list.scss +528 -0
  42. package/scss/components/_mentions.scss +479 -0
  43. package/scss/components/_menu.scss +510 -0
  44. package/scss/components/_message.scss +412 -0
  45. package/scss/components/_modal.scss +304 -0
  46. package/scss/components/_navbar.scss +329 -0
  47. package/scss/components/_notification.scss +499 -0
  48. package/scss/components/_offcanvas.scss +274 -0
  49. package/scss/components/_pagination.scss +176 -0
  50. package/scss/components/_placeholder.scss +237 -0
  51. package/scss/components/_popconfirm.scss +393 -0
  52. package/scss/components/_popover.scss +298 -0
  53. package/scss/components/_progress.scss +225 -0
  54. package/scss/components/_rating.scss +314 -0
  55. package/scss/components/_result.scss +383 -0
  56. package/scss/components/_segmented.scss +441 -0
  57. package/scss/components/_select.scss +412 -0
  58. package/scss/components/_spinners.scss +229 -0
  59. package/scss/components/_statistic.scss +336 -0
  60. package/scss/components/_steps.scss +343 -0
  61. package/scss/components/_tabs.scss +239 -0
  62. package/scss/components/_tag.scss +317 -0
  63. package/scss/components/_timeline.scss +341 -0
  64. package/scss/components/_timepicker.scss +468 -0
  65. package/scss/components/_toast.scss +279 -0
  66. package/scss/components/_tooltip.scss +305 -0
  67. package/scss/components/_tour.scss +488 -0
  68. package/scss/components/_transfer.scss +556 -0
  69. package/scss/components/_tree.scss +518 -0
  70. package/scss/components/_treeselect.scss +531 -0
  71. package/scss/components/_upload.scss +510 -0
  72. package/scss/components/_watermark.scss +314 -0
  73. package/scss/content/_figures.scss +38 -0
  74. package/scss/content/_images.scss +138 -0
  75. package/scss/content/_tables.scss +232 -0
  76. package/scss/layout/_container.scss +71 -0
  77. package/scss/layout/_grid.scss +258 -0
  78. package/scss/utilities/_animations.scss +494 -0
  79. package/scss/utilities/_borders.scss +246 -0
  80. package/scss/utilities/_colors.scss +194 -0
  81. package/scss/utilities/_display.scss +263 -0
  82. package/scss/utilities/_filters.scss +328 -0
  83. package/scss/utilities/_flex.scss +178 -0
  84. package/scss/utilities/_float.scss +70 -0
  85. package/scss/utilities/_grid-utils.scss +151 -0
  86. package/scss/utilities/_helpers.scss +479 -0
  87. package/scss/utilities/_interactions.scss +249 -0
  88. package/scss/utilities/_overflow.scss +204 -0
  89. package/scss/utilities/_position.scss +245 -0
  90. package/scss/utilities/_shadows.scss +67 -0
  91. package/scss/utilities/_sizing.scss +217 -0
  92. package/scss/utilities/_spacing.scss +207 -0
  93. package/scss/utilities/_text.scss +237 -0
  94. package/scss/utilities/_transforms.scss +368 -0
  95. package/scss/utilities/_visibility.scss +251 -0
  96. package/scss/zenkit.scss +121 -0
@@ -0,0 +1,412 @@
1
+ // ========================================
2
+ // ZenKit - Message Component
3
+ // Global message alerts (toast-like)
4
+ // ========================================
5
+
6
+ @use '../abstracts/variables' as *;
7
+
8
+ // ----------------------------------------
9
+ // Message Container (holds all messages)
10
+ // ----------------------------------------
11
+ .message-container {
12
+ position: fixed;
13
+ z-index: $z-toast;
14
+ display: flex;
15
+ flex-direction: column;
16
+ align-items: center;
17
+ gap: 0.5rem;
18
+ pointer-events: none;
19
+ }
20
+
21
+ // Position variants
22
+ .message-container-top {
23
+ top: 24px;
24
+ left: 50%;
25
+ transform: translateX(-50%);
26
+ }
27
+
28
+ .message-container-top-left {
29
+ top: 24px;
30
+ left: 24px;
31
+ align-items: flex-start;
32
+ }
33
+
34
+ .message-container-top-right {
35
+ top: 24px;
36
+ right: 24px;
37
+ align-items: flex-end;
38
+ }
39
+
40
+ .message-container-bottom {
41
+ bottom: 24px;
42
+ left: 50%;
43
+ transform: translateX(-50%);
44
+ }
45
+
46
+ .message-container-bottom-left {
47
+ bottom: 24px;
48
+ left: 24px;
49
+ align-items: flex-start;
50
+ }
51
+
52
+ .message-container-bottom-right {
53
+ bottom: 24px;
54
+ right: 24px;
55
+ align-items: flex-end;
56
+ }
57
+
58
+ // ----------------------------------------
59
+ // Message Item
60
+ // ----------------------------------------
61
+ .message {
62
+ display: flex;
63
+ align-items: flex-start;
64
+ gap: 0.5rem;
65
+ padding: 0.625rem 1rem;
66
+ font-size: 0.875rem;
67
+ color: var(--text-primary);
68
+ background-color: var(--bg-primary);
69
+ border-radius: $border-radius;
70
+ box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08),
71
+ 0 3px 6px -4px rgba(0, 0, 0, 0.12),
72
+ 0 9px 28px 8px rgba(0, 0, 0, 0.05);
73
+ pointer-events: auto;
74
+ animation: message-fade-in 0.3s ease;
75
+ }
76
+
77
+ @keyframes message-fade-in {
78
+ from {
79
+ opacity: 0;
80
+ transform: translateY(-8px);
81
+ }
82
+ to {
83
+ opacity: 1;
84
+ transform: translateY(0);
85
+ }
86
+ }
87
+
88
+ .message-leaving {
89
+ animation: message-fade-out 0.3s ease forwards;
90
+ }
91
+
92
+ @keyframes message-fade-out {
93
+ from {
94
+ opacity: 1;
95
+ transform: translateY(0);
96
+ }
97
+ to {
98
+ opacity: 0;
99
+ transform: translateY(-8px);
100
+ }
101
+ }
102
+
103
+ // ----------------------------------------
104
+ // Message Icon
105
+ // ----------------------------------------
106
+ .message-icon {
107
+ display: flex;
108
+ align-items: center;
109
+ font-size: 1rem;
110
+ line-height: 1;
111
+ }
112
+
113
+ // Type colors
114
+ .message-info .message-icon {
115
+ color: var(--info);
116
+ }
117
+
118
+ .message-success .message-icon {
119
+ color: var(--success);
120
+ }
121
+
122
+ .message-warning .message-icon {
123
+ color: var(--warning);
124
+ }
125
+
126
+ .message-error .message-icon {
127
+ color: var(--danger);
128
+ }
129
+
130
+ .message-loading .message-icon {
131
+ color: var(--primary);
132
+ animation: spin 1s linear infinite;
133
+ }
134
+
135
+ @keyframes spin {
136
+ to { transform: rotate(360deg); }
137
+ }
138
+
139
+ // ----------------------------------------
140
+ // Message Content
141
+ // ----------------------------------------
142
+ .message-content {
143
+ flex: 1;
144
+ line-height: 1.5;
145
+ }
146
+
147
+ // ----------------------------------------
148
+ // Message Close Button
149
+ // ----------------------------------------
150
+ .message-close {
151
+ display: flex;
152
+ align-items: center;
153
+ justify-content: center;
154
+ width: 1.25rem;
155
+ height: 1.25rem;
156
+ padding: 0;
157
+ margin-left: 0.5rem;
158
+ color: var(--text-muted);
159
+ background: transparent;
160
+ border: none;
161
+ border-radius: $border-radius-sm;
162
+ cursor: pointer;
163
+ transition: color 0.15s ease, background-color 0.15s ease;
164
+
165
+ &:hover {
166
+ color: var(--text-primary);
167
+ background-color: var(--bg-secondary);
168
+ }
169
+ }
170
+
171
+ // ----------------------------------------
172
+ // Message Variants
173
+ // ----------------------------------------
174
+ // Filled / Solid background
175
+ .message-filled {
176
+ color: #fff;
177
+
178
+ &.message-info {
179
+ background-color: var(--info);
180
+ }
181
+
182
+ &.message-success {
183
+ background-color: var(--success);
184
+ }
185
+
186
+ &.message-warning {
187
+ background-color: var(--warning);
188
+ color: var(--text-primary);
189
+ }
190
+
191
+ &.message-error {
192
+ background-color: var(--danger);
193
+ }
194
+
195
+ .message-icon {
196
+ color: inherit;
197
+ }
198
+
199
+ .message-close {
200
+ color: inherit;
201
+ opacity: 0.7;
202
+
203
+ &:hover {
204
+ opacity: 1;
205
+ background-color: rgba(255, 255, 255, 0.2);
206
+ }
207
+ }
208
+ }
209
+
210
+ // Outlined / Bordered
211
+ .message-outlined {
212
+ border: 1px solid var(--border-color);
213
+ box-shadow: $shadow-sm;
214
+
215
+ &.message-info {
216
+ border-color: var(--info);
217
+ background-color: rgba(var(--info-rgb), 0.1);
218
+ }
219
+
220
+ &.message-success {
221
+ border-color: var(--success);
222
+ background-color: rgba(var(--success-rgb), 0.1);
223
+ }
224
+
225
+ &.message-warning {
226
+ border-color: var(--warning);
227
+ background-color: rgba(var(--warning-rgb), 0.1);
228
+ }
229
+
230
+ &.message-error {
231
+ border-color: var(--danger);
232
+ background-color: rgba(var(--danger-rgb), 0.1);
233
+ }
234
+ }
235
+
236
+ // ----------------------------------------
237
+ // Message with Progress
238
+ // ----------------------------------------
239
+ .message-with-progress {
240
+ position: relative;
241
+ overflow: hidden;
242
+ }
243
+
244
+ .message-progress {
245
+ position: absolute;
246
+ bottom: 0;
247
+ left: 0;
248
+ height: 2px;
249
+ background-color: currentColor;
250
+ opacity: 0.3;
251
+ animation: message-progress linear forwards;
252
+ }
253
+
254
+ @keyframes message-progress {
255
+ from {
256
+ width: 100%;
257
+ }
258
+ to {
259
+ width: 0%;
260
+ }
261
+ }
262
+
263
+ // ----------------------------------------
264
+ // Message with Action
265
+ // ----------------------------------------
266
+ .message-action {
267
+ margin-left: 0.5rem;
268
+ padding: 0.125rem 0.5rem;
269
+ font-size: 0.75rem;
270
+ font-weight: 500;
271
+ color: var(--primary);
272
+ background: transparent;
273
+ border: none;
274
+ cursor: pointer;
275
+ transition: opacity 0.15s ease;
276
+
277
+ &:hover {
278
+ opacity: 0.8;
279
+ text-decoration: underline;
280
+ }
281
+ }
282
+
283
+ // ----------------------------------------
284
+ // Message with Title
285
+ // ----------------------------------------
286
+ .message-with-title {
287
+ flex-direction: column;
288
+ gap: 0.25rem;
289
+
290
+ .message-icon {
291
+ position: absolute;
292
+ }
293
+ }
294
+
295
+ .message-title {
296
+ font-weight: 600;
297
+ color: var(--text-primary);
298
+ margin-left: 1.5rem;
299
+ }
300
+
301
+ .message-with-title .message-content {
302
+ margin-left: 1.5rem;
303
+ color: var(--text-muted);
304
+ }
305
+
306
+ // ----------------------------------------
307
+ // Message Stacking
308
+ // ----------------------------------------
309
+ .message-stacked {
310
+ position: relative;
311
+
312
+ &::before,
313
+ &::after {
314
+ content: '';
315
+ position: absolute;
316
+ left: 8px;
317
+ right: 8px;
318
+ height: 4px;
319
+ background-color: var(--bg-primary);
320
+ border-radius: 0 0 $border-radius $border-radius;
321
+ opacity: 0.6;
322
+ z-index: -1;
323
+ }
324
+
325
+ &::before {
326
+ bottom: -4px;
327
+ }
328
+
329
+ &::after {
330
+ bottom: -8px;
331
+ left: 16px;
332
+ right: 16px;
333
+ opacity: 0.3;
334
+ }
335
+ }
336
+
337
+ // ----------------------------------------
338
+ // Message Dark Theme
339
+ // ----------------------------------------
340
+ .message-dark {
341
+ background-color: #1f1f1f;
342
+ color: rgba(255, 255, 255, 0.85);
343
+
344
+ .message-close {
345
+ color: rgba(255, 255, 255, 0.45);
346
+
347
+ &:hover {
348
+ color: rgba(255, 255, 255, 0.85);
349
+ background-color: rgba(255, 255, 255, 0.1);
350
+ }
351
+ }
352
+ }
353
+
354
+ // ----------------------------------------
355
+ // Message Compact
356
+ // ----------------------------------------
357
+ .message-compact {
358
+ padding: 0.375rem 0.75rem;
359
+ font-size: 0.8125rem;
360
+
361
+ .message-icon {
362
+ font-size: 0.875rem;
363
+ }
364
+ }
365
+
366
+ // ----------------------------------------
367
+ // Message Max Width
368
+ // ----------------------------------------
369
+ .message {
370
+ max-width: 400px;
371
+ }
372
+
373
+ .message-wide {
374
+ max-width: 600px;
375
+ }
376
+
377
+ .message-full {
378
+ max-width: calc(100vw - 48px);
379
+ }
380
+
381
+ // ----------------------------------------
382
+ // Message Responsive
383
+ // ----------------------------------------
384
+ @media (max-width: 575.98px) {
385
+ .message-container {
386
+ left: 12px;
387
+ right: 12px;
388
+ transform: none;
389
+ }
390
+
391
+ .message-container-top,
392
+ .message-container-top-left,
393
+ .message-container-top-right {
394
+ top: 12px;
395
+ left: 12px;
396
+ right: 12px;
397
+ align-items: stretch;
398
+ }
399
+
400
+ .message-container-bottom,
401
+ .message-container-bottom-left,
402
+ .message-container-bottom-right {
403
+ bottom: 12px;
404
+ left: 12px;
405
+ right: 12px;
406
+ align-items: stretch;
407
+ }
408
+
409
+ .message {
410
+ max-width: 100%;
411
+ }
412
+ }
@@ -0,0 +1,304 @@
1
+ // ========================================
2
+ // ZenKit - Modal
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+ @use '../abstracts/mixins' as *;
7
+
8
+ // ----------------------------------------
9
+ // Modal Backdrop
10
+ // ----------------------------------------
11
+ .modal-backdrop {
12
+ position: fixed;
13
+ top: 0;
14
+ left: 0;
15
+ z-index: var(--z-modal-backdrop);
16
+ width: 100vw;
17
+ height: 100vh;
18
+ background-color: rgba(0, 0, 0, 0.5);
19
+ opacity: 0;
20
+ visibility: hidden;
21
+ transition: opacity var(--transition-base) ease-in-out,
22
+ visibility var(--transition-base) ease-in-out;
23
+
24
+ &.show {
25
+ opacity: 1;
26
+ visibility: visible;
27
+ }
28
+ }
29
+
30
+ // ----------------------------------------
31
+ // Modal Container
32
+ // ----------------------------------------
33
+ .modal {
34
+ position: fixed;
35
+ top: 0;
36
+ left: 0;
37
+ z-index: var(--z-modal);
38
+ display: none;
39
+ width: 100%;
40
+ height: 100%;
41
+ overflow-x: hidden;
42
+ overflow-y: auto;
43
+ outline: 0;
44
+
45
+ &.show {
46
+ display: block;
47
+ }
48
+ }
49
+
50
+ // ----------------------------------------
51
+ // Modal Dialog
52
+ // ----------------------------------------
53
+ .modal-dialog {
54
+ position: relative;
55
+ width: auto;
56
+ margin: 1.75rem auto;
57
+ pointer-events: none;
58
+ max-width: 500px;
59
+ transform: translateY(-20px);
60
+ opacity: 0;
61
+ transition: transform var(--transition-base) ease-in-out,
62
+ opacity var(--transition-base) ease-in-out;
63
+
64
+ .modal.show & {
65
+ transform: translateY(0);
66
+ opacity: 1;
67
+ }
68
+ }
69
+
70
+ // Centered modal
71
+ .modal-dialog-centered {
72
+ display: flex;
73
+ align-items: center;
74
+ min-height: calc(100% - 3.5rem);
75
+ }
76
+
77
+ // Scrollable modal body
78
+ .modal-dialog-scrollable {
79
+ height: calc(100% - 3.5rem);
80
+
81
+ .modal-content {
82
+ max-height: 100%;
83
+ overflow: hidden;
84
+ }
85
+
86
+ .modal-body {
87
+ overflow-y: auto;
88
+ }
89
+ }
90
+
91
+ // ----------------------------------------
92
+ // Modal Content
93
+ // ----------------------------------------
94
+ .modal-content {
95
+ position: relative;
96
+ display: flex;
97
+ flex-direction: column;
98
+ width: 100%;
99
+ pointer-events: auto;
100
+ background-color: var(--bg-card);
101
+ background-clip: padding-box;
102
+ border: $border-width solid var(--border);
103
+ border-radius: var(--radius-lg);
104
+ box-shadow: var(--shadow-xl);
105
+ outline: 0;
106
+ }
107
+
108
+ // ----------------------------------------
109
+ // Modal Header
110
+ // ----------------------------------------
111
+ .modal-header {
112
+ display: flex;
113
+ flex-shrink: 0;
114
+ align-items: center;
115
+ justify-content: space-between;
116
+ padding: 1rem 1.5rem;
117
+ border-bottom: $border-width solid var(--border);
118
+ border-top-left-radius: calc(var(--radius-lg) - 1px);
119
+ border-top-right-radius: calc(var(--radius-lg) - 1px);
120
+ }
121
+
122
+ .modal-title {
123
+ margin: 0;
124
+ font-size: var(--text-xl);
125
+ font-weight: $font-weight-semibold;
126
+ line-height: $line-height-tight;
127
+ }
128
+
129
+ // ----------------------------------------
130
+ // Modal Body
131
+ // ----------------------------------------
132
+ .modal-body {
133
+ position: relative;
134
+ flex: 1 1 auto;
135
+ padding: 1.5rem;
136
+ }
137
+
138
+ // ----------------------------------------
139
+ // Modal Footer
140
+ // ----------------------------------------
141
+ .modal-footer {
142
+ display: flex;
143
+ flex-shrink: 0;
144
+ flex-wrap: wrap;
145
+ align-items: center;
146
+ justify-content: flex-end;
147
+ gap: 0.5rem;
148
+ padding: 1rem 1.5rem;
149
+ border-top: $border-width solid var(--border);
150
+ border-bottom-right-radius: calc(var(--radius-lg) - 1px);
151
+ border-bottom-left-radius: calc(var(--radius-lg) - 1px);
152
+ }
153
+
154
+ // ----------------------------------------
155
+ // Modal Close Button
156
+ // ----------------------------------------
157
+ .modal-close {
158
+ display: flex;
159
+ align-items: center;
160
+ justify-content: center;
161
+ width: 2rem;
162
+ height: 2rem;
163
+ padding: 0;
164
+ background: transparent;
165
+ border: none;
166
+ border-radius: var(--radius);
167
+ color: var(--text-muted);
168
+ cursor: pointer;
169
+ transition: color var(--transition-fast) ease-in-out,
170
+ background-color var(--transition-fast) ease-in-out;
171
+
172
+ &:hover {
173
+ color: var(--text);
174
+ background-color: var(--bg-muted);
175
+ }
176
+
177
+ svg {
178
+ width: 1.25rem;
179
+ height: 1.25rem;
180
+ }
181
+ }
182
+
183
+ // ----------------------------------------
184
+ // Modal Sizes
185
+ // ----------------------------------------
186
+ .modal-sm {
187
+ max-width: 300px;
188
+ }
189
+
190
+ .modal-lg {
191
+ max-width: 800px;
192
+ }
193
+
194
+ .modal-xl {
195
+ max-width: 1140px;
196
+ }
197
+
198
+ .modal-fullscreen {
199
+ width: 100vw;
200
+ max-width: none;
201
+ height: 100%;
202
+ margin: 0;
203
+
204
+ .modal-content {
205
+ height: 100%;
206
+ border: 0;
207
+ border-radius: 0;
208
+ }
209
+
210
+ .modal-header,
211
+ .modal-footer {
212
+ border-radius: 0;
213
+ }
214
+ }
215
+
216
+ // Responsive fullscreen
217
+ @include breakpoint-down(sm) {
218
+ .modal-fullscreen-sm-down {
219
+ width: 100vw;
220
+ max-width: none;
221
+ height: 100%;
222
+ margin: 0;
223
+
224
+ .modal-content {
225
+ height: 100%;
226
+ border: 0;
227
+ border-radius: 0;
228
+ }
229
+ }
230
+ }
231
+
232
+ @include breakpoint-down(md) {
233
+ .modal-fullscreen-md-down {
234
+ width: 100vw;
235
+ max-width: none;
236
+ height: 100%;
237
+ margin: 0;
238
+
239
+ .modal-content {
240
+ height: 100%;
241
+ border: 0;
242
+ border-radius: 0;
243
+ }
244
+ }
245
+ }
246
+
247
+ @include breakpoint-down(lg) {
248
+ .modal-fullscreen-lg-down {
249
+ width: 100vw;
250
+ max-width: none;
251
+ height: 100%;
252
+ margin: 0;
253
+
254
+ .modal-content {
255
+ height: 100%;
256
+ border: 0;
257
+ border-radius: 0;
258
+ }
259
+ }
260
+ }
261
+
262
+ @include breakpoint-down(xl) {
263
+ .modal-fullscreen-xl-down {
264
+ width: 100vw;
265
+ max-width: none;
266
+ height: 100%;
267
+ margin: 0;
268
+
269
+ .modal-content {
270
+ height: 100%;
271
+ border: 0;
272
+ border-radius: 0;
273
+ }
274
+ }
275
+ }
276
+
277
+ @media (max-width: 1535.98px) {
278
+ .modal-fullscreen-xxl-down {
279
+ width: 100vw;
280
+ max-width: none;
281
+ height: 100%;
282
+ margin: 0;
283
+
284
+ .modal-content {
285
+ height: 100%;
286
+ border: 0;
287
+ border-radius: 0;
288
+ }
289
+ }
290
+ }
291
+
292
+ // ----------------------------------------
293
+ // Static backdrop animation
294
+ // ----------------------------------------
295
+ .modal-static .modal-dialog {
296
+ transform: scale(1.02);
297
+ }
298
+
299
+ // ----------------------------------------
300
+ // Prevent body scroll when modal is open
301
+ // ----------------------------------------
302
+ body.modal-open {
303
+ overflow: hidden;
304
+ }