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,194 @@
1
+ // ========================================
2
+ // ZenKit - CSS Custom Properties (Root)
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+
7
+ :root {
8
+ // ----------------------------------------
9
+ // Colors - Primary
10
+ // ----------------------------------------
11
+ --primary: #{$primary};
12
+ --primary-50: #{$primary-50};
13
+ --primary-100: #{$primary-100};
14
+ --primary-200: #{$primary-200};
15
+ --primary-300: #{$primary-300};
16
+ --primary-400: #{$primary-400};
17
+ --primary-500: #{$primary-500};
18
+ --primary-600: #{$primary-600};
19
+ --primary-700: #{$primary-700};
20
+ --primary-800: #{$primary-800};
21
+ --primary-900: #{$primary-900};
22
+ --primary-950: #{$primary-950};
23
+
24
+ // ----------------------------------------
25
+ // Colors - Gray
26
+ // ----------------------------------------
27
+ --gray-50: #{$gray-50};
28
+ --gray-100: #{$gray-100};
29
+ --gray-200: #{$gray-200};
30
+ --gray-300: #{$gray-300};
31
+ --gray-400: #{$gray-400};
32
+ --gray-500: #{$gray-500};
33
+ --gray-600: #{$gray-600};
34
+ --gray-700: #{$gray-700};
35
+ --gray-800: #{$gray-800};
36
+ --gray-900: #{$gray-900};
37
+ --gray-950: #{$gray-950};
38
+
39
+ // ----------------------------------------
40
+ // Colors - Semantic
41
+ // ----------------------------------------
42
+ --success: #{$success};
43
+ --success-light: #{$success-light};
44
+ --success-dark: #{$success-dark};
45
+
46
+ --warning: #{$warning};
47
+ --warning-light: #{$warning-light};
48
+ --warning-dark: #{$warning-dark};
49
+
50
+ --danger: #{$danger};
51
+ --danger-light: #{$danger-light};
52
+ --danger-dark: #{$danger-dark};
53
+
54
+ --info: #{$info};
55
+ --info-light: #{$info-light};
56
+ --info-dark: #{$info-dark};
57
+
58
+ --white: #{$white};
59
+ --black: #{$black};
60
+
61
+ // ----------------------------------------
62
+ // Theme Colors (Light Mode - Default)
63
+ // ----------------------------------------
64
+ --bg: #{$gray-50};
65
+ --bg-secondary: #{$white};
66
+ --bg-card: #{$white};
67
+ --bg-muted: #{$gray-100};
68
+
69
+ --text: #{$gray-900};
70
+ --text-secondary: #{$gray-700};
71
+ --text-muted: #{$gray-500};
72
+
73
+ --border: #{$gray-200};
74
+ --border-dark: #{$gray-300};
75
+
76
+ --link: #{$primary};
77
+ --link-hover: #{$primary-700};
78
+
79
+ // ----------------------------------------
80
+ // Typography
81
+ // ----------------------------------------
82
+ --font-sans: #{$font-family-sans};
83
+ --font-mono: #{$font-family-mono};
84
+
85
+ --text-xs: #{$font-size-xs};
86
+ --text-sm: #{$font-size-sm};
87
+ --text-base: #{$font-size-base};
88
+ --text-lg: #{$font-size-lg};
89
+ --text-xl: #{$font-size-xl};
90
+ --text-2xl: #{$font-size-2xl};
91
+ --text-3xl: #{$font-size-3xl};
92
+ --text-4xl: #{$font-size-4xl};
93
+ --text-5xl: #{$font-size-5xl};
94
+
95
+ // ----------------------------------------
96
+ // Spacing
97
+ // ----------------------------------------
98
+ --space-1: 0.25rem;
99
+ --space-2: 0.5rem;
100
+ --space-3: 0.75rem;
101
+ --space-4: 1rem;
102
+ --space-5: 1.25rem;
103
+ --space-6: 1.5rem;
104
+ --space-8: 2rem;
105
+ --space-10: 2.5rem;
106
+ --space-12: 3rem;
107
+ --space-16: 4rem;
108
+ --space-20: 5rem;
109
+ --space-24: 6rem;
110
+
111
+ // ----------------------------------------
112
+ // Borders
113
+ // ----------------------------------------
114
+ --radius-sm: #{$border-radius-sm};
115
+ --radius: #{$border-radius};
116
+ --radius-md: #{$border-radius-md};
117
+ --radius-lg: #{$border-radius-lg};
118
+ --radius-xl: #{$border-radius-xl};
119
+ --radius-2xl: #{$border-radius-2xl};
120
+ --radius-full: #{$border-radius-full};
121
+
122
+ // ----------------------------------------
123
+ // Shadows
124
+ // ----------------------------------------
125
+ --shadow-sm: #{$shadow-sm};
126
+ --shadow: #{$shadow};
127
+ --shadow-md: #{$shadow-md};
128
+ --shadow-lg: #{$shadow-lg};
129
+ --shadow-xl: #{$shadow-xl};
130
+
131
+ // ----------------------------------------
132
+ // Transitions
133
+ // ----------------------------------------
134
+ --transition-fast: #{$transition-fast};
135
+ --transition-base: #{$transition-base};
136
+ --transition-slow: #{$transition-slow};
137
+
138
+ // ----------------------------------------
139
+ // Z-Index
140
+ // ----------------------------------------
141
+ --z-dropdown: #{$z-dropdown};
142
+ --z-sticky: #{$z-sticky};
143
+ --z-fixed: #{$z-fixed};
144
+ --z-modal-backdrop: #{$z-modal-backdrop};
145
+ --z-modal: #{$z-modal};
146
+ --z-tooltip: #{$z-tooltip};
147
+ }
148
+
149
+ // ----------------------------------------
150
+ // Dark Mode
151
+ // ----------------------------------------
152
+ [data-theme="dark"] {
153
+ --bg: #{$gray-900};
154
+ --bg-secondary: #{$gray-800};
155
+ --bg-card: #{$gray-800};
156
+ --bg-muted: #{$gray-700};
157
+
158
+ --text: #{$gray-50};
159
+ --text-secondary: #{$gray-200};
160
+ --text-muted: #{$gray-400};
161
+
162
+ --border: #{$gray-700};
163
+ --border-dark: #{$gray-600};
164
+
165
+ --link: #{$primary-400};
166
+ --link-hover: #{$primary-300};
167
+
168
+ // Adjusted shadows for dark mode
169
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
170
+ --shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.4), 0 1px 2px -1px rgba(0, 0, 0, 0.4);
171
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -2px rgba(0, 0, 0, 0.4);
172
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.4), 0 4px 6px -4px rgba(0, 0, 0, 0.4);
173
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.4), 0 8px 10px -6px rgba(0, 0, 0, 0.4);
174
+ }
175
+
176
+ // System preference based dark mode
177
+ @media (prefers-color-scheme: dark) {
178
+ :root:not([data-theme="light"]) {
179
+ --bg: #{$gray-900};
180
+ --bg-secondary: #{$gray-800};
181
+ --bg-card: #{$gray-800};
182
+ --bg-muted: #{$gray-700};
183
+
184
+ --text: #{$gray-50};
185
+ --text-secondary: #{$gray-200};
186
+ --text-muted: #{$gray-400};
187
+
188
+ --border: #{$gray-700};
189
+ --border-dark: #{$gray-600};
190
+
191
+ --link: #{$primary-400};
192
+ --link-hover: #{$primary-300};
193
+ }
194
+ }
@@ -0,0 +1,271 @@
1
+ // ========================================
2
+ // ZenKit - Typography
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+
7
+ // ----------------------------------------
8
+ // Base Typography
9
+ // ----------------------------------------
10
+ html {
11
+ font-size: 16px;
12
+ scroll-behavior: smooth;
13
+ }
14
+
15
+ body {
16
+ font-family: var(--font-sans);
17
+ font-size: var(--text-base);
18
+ font-weight: $font-weight-normal;
19
+ line-height: $line-height-normal;
20
+ color: var(--text);
21
+ background-color: var(--bg);
22
+ }
23
+
24
+ // ----------------------------------------
25
+ // Headings
26
+ // ----------------------------------------
27
+ h1, h2, h3, h4, h5, h6,
28
+ .h1, .h2, .h3, .h4, .h5, .h6 {
29
+ margin-bottom: 0.5em;
30
+ font-weight: $font-weight-bold;
31
+ line-height: $line-height-tight;
32
+ color: var(--text);
33
+ }
34
+
35
+ h1, .h1 {
36
+ font-size: var(--text-4xl);
37
+ letter-spacing: -0.025em;
38
+ }
39
+
40
+ h2, .h2 {
41
+ font-size: var(--text-3xl);
42
+ letter-spacing: -0.025em;
43
+ }
44
+
45
+ h3, .h3 {
46
+ font-size: var(--text-2xl);
47
+ }
48
+
49
+ h4, .h4 {
50
+ font-size: var(--text-xl);
51
+ }
52
+
53
+ h5, .h5 {
54
+ font-size: var(--text-lg);
55
+ }
56
+
57
+ h6, .h6 {
58
+ font-size: var(--text-base);
59
+ }
60
+
61
+ // ----------------------------------------
62
+ // Paragraphs
63
+ // ----------------------------------------
64
+ p {
65
+ margin-bottom: 1rem;
66
+
67
+ &:last-child {
68
+ margin-bottom: 0;
69
+ }
70
+ }
71
+
72
+ // ----------------------------------------
73
+ // Links
74
+ // ----------------------------------------
75
+ a {
76
+ color: var(--link);
77
+ text-decoration: none;
78
+ transition: color $transition-base $transition-timing;
79
+
80
+ &:hover {
81
+ color: var(--link-hover);
82
+ text-decoration: underline;
83
+ }
84
+
85
+ &:focus {
86
+ outline: 2px solid var(--primary);
87
+ outline-offset: 2px;
88
+ }
89
+ }
90
+
91
+ // ----------------------------------------
92
+ // Text Utilities
93
+ // ----------------------------------------
94
+ .lead {
95
+ font-size: var(--text-xl);
96
+ font-weight: $font-weight-normal;
97
+ line-height: $line-height-relaxed;
98
+ color: var(--text-secondary);
99
+ }
100
+
101
+ .small, small {
102
+ font-size: var(--text-sm);
103
+ }
104
+
105
+ .tiny {
106
+ font-size: var(--text-xs);
107
+ }
108
+
109
+ // ----------------------------------------
110
+ // Emphasis
111
+ // ----------------------------------------
112
+ strong, b {
113
+ font-weight: $font-weight-bold;
114
+ }
115
+
116
+ em, i {
117
+ font-style: italic;
118
+ }
119
+
120
+ mark {
121
+ padding: 0.125em 0.25em;
122
+ background-color: var(--warning-light);
123
+ border-radius: var(--radius-sm);
124
+ }
125
+
126
+ del, s {
127
+ text-decoration: line-through;
128
+ }
129
+
130
+ ins, u {
131
+ text-decoration: underline;
132
+ }
133
+
134
+ // ----------------------------------------
135
+ // Code & Preformatted
136
+ // ----------------------------------------
137
+ code, kbd, samp, pre {
138
+ font-family: var(--font-mono);
139
+ font-size: 0.875em;
140
+ }
141
+
142
+ code {
143
+ padding: 0.125em 0.375em;
144
+ background-color: var(--bg-muted);
145
+ border-radius: var(--radius-sm);
146
+ color: var(--danger);
147
+ }
148
+
149
+ pre {
150
+ display: block;
151
+ padding: 1rem;
152
+ margin-bottom: 1rem;
153
+ overflow-x: auto;
154
+ background-color: var(--bg-muted);
155
+ border-radius: var(--radius);
156
+
157
+ code {
158
+ padding: 0;
159
+ background-color: transparent;
160
+ color: inherit;
161
+ font-size: inherit;
162
+ }
163
+ }
164
+
165
+ kbd {
166
+ padding: 0.125em 0.375em;
167
+ background-color: var(--gray-800);
168
+ color: var(--white);
169
+ border-radius: var(--radius-sm);
170
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
171
+ }
172
+
173
+ // ----------------------------------------
174
+ // Blockquote
175
+ // ----------------------------------------
176
+ blockquote {
177
+ margin: 0 0 1rem;
178
+ padding: 1rem 1.5rem;
179
+ border-left: 4px solid var(--primary);
180
+ background-color: var(--bg-muted);
181
+ border-radius: 0 var(--radius) var(--radius) 0;
182
+
183
+ p:last-child {
184
+ margin-bottom: 0;
185
+ }
186
+
187
+ cite {
188
+ display: block;
189
+ margin-top: 0.5rem;
190
+ font-size: var(--text-sm);
191
+ color: var(--text-muted);
192
+
193
+ &::before {
194
+ content: "— ";
195
+ }
196
+ }
197
+ }
198
+
199
+ // ----------------------------------------
200
+ // Lists
201
+ // ----------------------------------------
202
+ ul, ol {
203
+ margin-bottom: 1rem;
204
+ padding-left: 1.5rem;
205
+ }
206
+
207
+ ul {
208
+ list-style-type: disc;
209
+ }
210
+
211
+ ol {
212
+ list-style-type: decimal;
213
+ }
214
+
215
+ li {
216
+ margin-bottom: 0.25rem;
217
+ }
218
+
219
+ ul ul, ol ol, ul ol, ol ul {
220
+ margin-top: 0.25rem;
221
+ margin-bottom: 0;
222
+ }
223
+
224
+ // Description lists
225
+ dl {
226
+ margin-bottom: 1rem;
227
+ }
228
+
229
+ dt {
230
+ font-weight: $font-weight-semibold;
231
+ }
232
+
233
+ dd {
234
+ margin-left: 0;
235
+ margin-bottom: 0.5rem;
236
+ }
237
+
238
+ // ----------------------------------------
239
+ // Horizontal Rule
240
+ // ----------------------------------------
241
+ hr {
242
+ margin: 2rem 0;
243
+ border: 0;
244
+ border-top: 1px solid var(--border);
245
+ }
246
+
247
+ // ----------------------------------------
248
+ // Selection
249
+ // ----------------------------------------
250
+ ::selection {
251
+ background-color: var(--primary);
252
+ color: var(--white);
253
+ }
254
+
255
+ // ----------------------------------------
256
+ // Abbreviations
257
+ // ----------------------------------------
258
+ abbr[title] {
259
+ text-decoration: underline dotted;
260
+ cursor: help;
261
+ border-bottom: none;
262
+ }
263
+
264
+ // ----------------------------------------
265
+ // Address
266
+ // ----------------------------------------
267
+ address {
268
+ margin-bottom: 1rem;
269
+ font-style: normal;
270
+ line-height: inherit;
271
+ }
@@ -0,0 +1,200 @@
1
+ // ========================================
2
+ // ZenKit - Accordion
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+
7
+ // ----------------------------------------
8
+ // Accordion Container
9
+ // ----------------------------------------
10
+ .accordion {
11
+ --accordion-color: var(--text);
12
+ --accordion-bg: transparent;
13
+ --accordion-border-color: var(--border);
14
+ --accordion-border-width: #{$border-width};
15
+ --accordion-border-radius: var(--radius);
16
+ --accordion-inner-border-radius: calc(var(--radius) - #{$border-width});
17
+ --accordion-btn-padding-x: 1.25rem;
18
+ --accordion-btn-padding-y: 1rem;
19
+ --accordion-btn-color: var(--text);
20
+ --accordion-btn-bg: var(--bg-card);
21
+ --accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
22
+ --accordion-btn-icon-width: 1.25rem;
23
+ --accordion-btn-icon-transform: rotate(-180deg);
24
+ --accordion-btn-icon-transition: transform 0.2s ease-in-out;
25
+ --accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234F46E5'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
26
+ --accordion-btn-focus-box-shadow: 0 0 0 0.25rem #{rgba($primary, 0.25)};
27
+ --accordion-body-padding-x: 1.25rem;
28
+ --accordion-body-padding-y: 1rem;
29
+ --accordion-active-color: var(--primary);
30
+ --accordion-active-bg: #{rgba($primary, 0.05)};
31
+ }
32
+
33
+ // ----------------------------------------
34
+ // Accordion Item
35
+ // ----------------------------------------
36
+ .accordion-item {
37
+ color: var(--accordion-color);
38
+ background-color: var(--accordion-bg);
39
+ border: var(--accordion-border-width) solid var(--accordion-border-color);
40
+
41
+ &:first-of-type {
42
+ border-top-left-radius: var(--accordion-border-radius);
43
+ border-top-right-radius: var(--accordion-border-radius);
44
+
45
+ > .accordion-header .accordion-button {
46
+ border-top-left-radius: var(--accordion-inner-border-radius);
47
+ border-top-right-radius: var(--accordion-inner-border-radius);
48
+ }
49
+ }
50
+
51
+ &:not(:first-of-type) {
52
+ border-top: 0;
53
+ }
54
+
55
+ &:last-of-type {
56
+ border-bottom-right-radius: var(--accordion-border-radius);
57
+ border-bottom-left-radius: var(--accordion-border-radius);
58
+
59
+ > .accordion-header .accordion-button.collapsed {
60
+ border-bottom-right-radius: var(--accordion-inner-border-radius);
61
+ border-bottom-left-radius: var(--accordion-inner-border-radius);
62
+ }
63
+
64
+ > .accordion-collapse {
65
+ border-bottom-right-radius: var(--accordion-border-radius);
66
+ border-bottom-left-radius: var(--accordion-border-radius);
67
+ }
68
+ }
69
+ }
70
+
71
+ // ----------------------------------------
72
+ // Accordion Header
73
+ // ----------------------------------------
74
+ .accordion-header {
75
+ margin-bottom: 0;
76
+ }
77
+
78
+ // ----------------------------------------
79
+ // Accordion Button
80
+ // ----------------------------------------
81
+ .accordion-button {
82
+ position: relative;
83
+ display: flex;
84
+ align-items: center;
85
+ width: 100%;
86
+ padding: var(--accordion-btn-padding-y) var(--accordion-btn-padding-x);
87
+ font-size: var(--text-base);
88
+ color: var(--accordion-btn-color);
89
+ text-align: left;
90
+ background-color: var(--accordion-btn-bg);
91
+ border: 0;
92
+ border-radius: 0;
93
+ overflow-anchor: none;
94
+ transition: color $transition-fast ease-in-out,
95
+ background-color $transition-fast ease-in-out,
96
+ border-color $transition-fast ease-in-out,
97
+ box-shadow $transition-fast ease-in-out;
98
+
99
+ &:not(.collapsed) {
100
+ color: var(--accordion-active-color);
101
+ background-color: var(--accordion-active-bg);
102
+ box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--accordion-border-color);
103
+
104
+ &::after {
105
+ background-image: var(--accordion-btn-active-icon);
106
+ transform: var(--accordion-btn-icon-transform);
107
+ }
108
+ }
109
+
110
+ &::after {
111
+ flex-shrink: 0;
112
+ width: var(--accordion-btn-icon-width);
113
+ height: var(--accordion-btn-icon-width);
114
+ margin-left: auto;
115
+ content: "";
116
+ background-image: var(--accordion-btn-icon);
117
+ background-repeat: no-repeat;
118
+ background-size: var(--accordion-btn-icon-width);
119
+ transition: var(--accordion-btn-icon-transition);
120
+ }
121
+
122
+ &:hover {
123
+ z-index: 2;
124
+ }
125
+
126
+ &:focus {
127
+ z-index: 3;
128
+ outline: 0;
129
+ box-shadow: var(--accordion-btn-focus-box-shadow);
130
+ }
131
+ }
132
+
133
+ // ----------------------------------------
134
+ // Accordion Body
135
+ // ----------------------------------------
136
+ .accordion-body {
137
+ padding: var(--accordion-body-padding-y) var(--accordion-body-padding-x);
138
+ }
139
+
140
+ // ----------------------------------------
141
+ // Accordion Collapse
142
+ // ----------------------------------------
143
+ .accordion-collapse {
144
+ border-top: 0;
145
+ }
146
+
147
+ // ----------------------------------------
148
+ // Flush Accordion (No outer borders/rounded corners)
149
+ // ----------------------------------------
150
+ .accordion-flush {
151
+ > .accordion-item {
152
+ border-right: 0;
153
+ border-left: 0;
154
+ border-radius: 0;
155
+
156
+ &:first-child {
157
+ border-top: 0;
158
+ }
159
+
160
+ &:last-child {
161
+ border-bottom: 0;
162
+ }
163
+
164
+ > .accordion-header .accordion-button {
165
+ border-radius: 0;
166
+
167
+ &.collapsed {
168
+ border-radius: 0;
169
+ }
170
+ }
171
+
172
+ > .accordion-collapse {
173
+ border-radius: 0;
174
+ }
175
+ }
176
+ }
177
+
178
+ // ----------------------------------------
179
+ // Collapse Utility (for JS)
180
+ // ----------------------------------------
181
+ .collapse:not(.show) {
182
+ display: none;
183
+ }
184
+
185
+ .collapsing {
186
+ height: 0;
187
+ overflow: hidden;
188
+ transition: height $transition-base ease;
189
+ }
190
+
191
+ .collapse.show {
192
+ display: block;
193
+ }
194
+
195
+ // Horizontal collapsing
196
+ .collapsing.collapse-horizontal {
197
+ width: 0;
198
+ height: auto;
199
+ transition: width $transition-base ease;
200
+ }