@learnpack/learnpack 5.0.354 → 5.0.357

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 (120) hide show
  1. package/lib/commands/serve.d.ts +0 -17
  2. package/lib/commands/serve.js +160 -130
  3. package/lib/creatorDist/assets/{index-DnthLsvb.js → index-D6pmbMe9.js} +14030 -13903
  4. package/lib/creatorDist/assets/index-zrPponAn.css +1701 -0
  5. package/lib/creatorDist/index.html +2 -2
  6. package/lib/models/creator.d.ts +1 -1
  7. package/lib/services/ingest/adapters/gcsCourseStorage.d.ts +13 -0
  8. package/lib/services/ingest/adapters/gcsCourseStorage.js +58 -0
  9. package/lib/services/ingest/adapters/rigoUserTokenAuth.d.ts +15 -0
  10. package/lib/services/ingest/adapters/rigoUserTokenAuth.js +46 -0
  11. package/lib/services/ingest/adapters/rigobotPackageRegistry.d.ts +7 -0
  12. package/lib/services/ingest/adapters/rigobotPackageRegistry.js +119 -0
  13. package/lib/services/ingest/core/buildIngestConfig.d.ts +27 -0
  14. package/lib/services/ingest/core/buildIngestConfig.js +40 -0
  15. package/lib/services/ingest/core/buildInitialSyllabus.d.ts +24 -0
  16. package/lib/services/ingest/core/buildInitialSyllabus.js +104 -0
  17. package/lib/services/ingest/core/buildSidebar.d.ts +13 -0
  18. package/lib/services/ingest/core/buildSidebar.js +28 -0
  19. package/lib/services/ingest/core/coursePaths.d.ts +31 -0
  20. package/lib/services/ingest/core/coursePaths.js +50 -0
  21. package/lib/services/ingest/core/ingestCoursePackage.d.ts +52 -0
  22. package/lib/services/ingest/core/ingestCoursePackage.js +217 -0
  23. package/lib/services/ingest/core/normalizeLearnJson.d.ts +25 -0
  24. package/lib/services/ingest/core/normalizeLearnJson.js +29 -0
  25. package/lib/services/ingest/core/pairLessons.d.ts +29 -0
  26. package/lib/services/ingest/core/pairLessons.js +102 -0
  27. package/lib/services/ingest/core/planWrites.d.ts +44 -0
  28. package/lib/services/ingest/core/planWrites.js +59 -0
  29. package/lib/services/ingest/core/resolveSlug.d.ts +53 -0
  30. package/lib/services/ingest/core/resolveSlug.js +93 -0
  31. package/lib/services/ingest/core/types.d.ts +53 -0
  32. package/lib/services/ingest/core/types.js +2 -0
  33. package/lib/services/ingest/core/validatePackage.d.ts +38 -0
  34. package/lib/services/ingest/core/validatePackage.js +97 -0
  35. package/lib/services/ingest/createIngestService.d.ts +34 -0
  36. package/lib/services/ingest/createIngestService.js +38 -0
  37. package/lib/services/ingest/errors.d.ts +22 -0
  38. package/lib/services/ingest/errors.js +34 -0
  39. package/lib/services/ingest/http/errorMapping.d.ts +8 -0
  40. package/lib/services/ingest/http/errorMapping.js +40 -0
  41. package/lib/services/ingest/http/router.d.ts +32 -0
  42. package/lib/services/ingest/http/router.js +124 -0
  43. package/lib/services/ingest/http/zipPackageReader.d.ts +26 -0
  44. package/lib/services/ingest/http/zipPackageReader.js +62 -0
  45. package/lib/services/ingest/ports/courseStorage.d.ts +25 -0
  46. package/lib/services/ingest/ports/courseStorage.js +2 -0
  47. package/lib/services/ingest/ports/packageRegistry.d.ts +58 -0
  48. package/lib/services/ingest/ports/packageRegistry.js +2 -0
  49. package/lib/services/ingest/ports/requestAuthenticator.d.ts +25 -0
  50. package/lib/services/ingest/ports/requestAuthenticator.js +2 -0
  51. package/lib/utils/coursePackage/bucketIo.d.ts +23 -0
  52. package/lib/utils/coursePackage/bucketIo.js +36 -0
  53. package/lib/utils/coursePackage/learnJson.d.ts +26 -0
  54. package/lib/utils/coursePackage/learnJson.js +36 -0
  55. package/lib/utils/coursePackage/sidebar.d.ts +15 -0
  56. package/lib/utils/coursePackage/sidebar.js +26 -0
  57. package/lib/utils/creatorSocket.js +15 -21
  58. package/lib/utils/gcpCredentials.d.ts +18 -0
  59. package/lib/utils/gcpCredentials.js +27 -0
  60. package/lib/utils/rigoActions.d.ts +16 -0
  61. package/lib/utils/rigoActions.js +102 -1
  62. package/lib/utils/socketRegistry.d.ts +46 -0
  63. package/lib/utils/socketRegistry.js +83 -0
  64. package/package.json +1 -1
  65. package/src/commands/serve.ts +163 -115
  66. package/src/creator/README.md +63 -51
  67. package/src/creator/package-lock.json +1188 -8
  68. package/src/creator/package.json +5 -1
  69. package/src/creator/src/App.tsx +120 -54
  70. package/src/creator/src/components/FileUploader.tsx +1 -12
  71. package/src/creator/src/components/NotificationListener.tsx +1 -8
  72. package/src/creator/src/components/syllabus/SyllabusEditor.tsx +101 -36
  73. package/src/creator/src/locales/en.json +8 -0
  74. package/src/creator/src/locales/es.json +8 -0
  75. package/src/creator/src/utils/completionResult.test.ts +144 -0
  76. package/src/creator/src/utils/completionResult.ts +154 -0
  77. package/src/creator/src/utils/constants.ts +17 -4
  78. package/src/creator/src/utils/socket.test.ts +113 -0
  79. package/src/creator/src/utils/socket.ts +60 -37
  80. package/src/creator/src/utils/store.ts +84 -67
  81. package/src/creator/src/utils/useCompletionWatchdog.test.ts +99 -0
  82. package/src/creator/src/utils/useCompletionWatchdog.ts +37 -0
  83. package/src/creator/vitest.config.ts +16 -0
  84. package/src/creatorDist/assets/{index-DnthLsvb.js → index-D6pmbMe9.js} +14030 -13903
  85. package/src/creatorDist/assets/index-zrPponAn.css +1701 -0
  86. package/src/creatorDist/index.html +2 -2
  87. package/src/models/creator.ts +1 -1
  88. package/src/services/ingest/adapters/gcsCourseStorage.ts +70 -0
  89. package/src/services/ingest/adapters/rigoUserTokenAuth.ts +65 -0
  90. package/src/services/ingest/adapters/rigobotPackageRegistry.ts +161 -0
  91. package/src/services/ingest/core/buildIngestConfig.ts +51 -0
  92. package/src/services/ingest/core/buildInitialSyllabus.ts +122 -0
  93. package/src/services/ingest/core/buildSidebar.ts +32 -0
  94. package/src/services/ingest/core/coursePaths.ts +59 -0
  95. package/src/services/ingest/core/ingestCoursePackage.ts +343 -0
  96. package/src/services/ingest/core/normalizeLearnJson.ts +47 -0
  97. package/src/services/ingest/core/pairLessons.ts +132 -0
  98. package/src/services/ingest/core/planWrites.ts +91 -0
  99. package/src/services/ingest/core/resolveSlug.ts +119 -0
  100. package/src/services/ingest/core/types.ts +57 -0
  101. package/src/services/ingest/core/validatePackage.ts +132 -0
  102. package/src/services/ingest/createIngestService.ts +66 -0
  103. package/src/services/ingest/errors.ts +45 -0
  104. package/src/services/ingest/http/errorMapping.ts +49 -0
  105. package/src/services/ingest/http/router.ts +156 -0
  106. package/src/services/ingest/http/zipPackageReader.ts +81 -0
  107. package/src/services/ingest/ports/courseStorage.ts +25 -0
  108. package/src/services/ingest/ports/packageRegistry.ts +60 -0
  109. package/src/services/ingest/ports/requestAuthenticator.ts +28 -0
  110. package/src/ui/_app/app.js +325 -325
  111. package/src/ui/app.tar.gz +0 -0
  112. package/src/utils/coursePackage/bucketIo.ts +46 -0
  113. package/src/utils/coursePackage/learnJson.ts +37 -0
  114. package/src/utils/coursePackage/sidebar.ts +28 -0
  115. package/src/utils/creatorSocket.ts +16 -22
  116. package/src/utils/gcpCredentials.ts +38 -0
  117. package/src/utils/rigoActions.ts +163 -0
  118. package/src/utils/socketRegistry.ts +85 -0
  119. package/lib/creatorDist/assets/index-CjddKHB_.css +0 -1
  120. package/src/creatorDist/assets/index-CjddKHB_.css +0 -1
@@ -0,0 +1,1701 @@
1
+ /*! tailwindcss v4.1.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties {
3
+ @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or
4
+ ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
5
+ *,
6
+ :before,
7
+ :after,
8
+ ::backdrop {
9
+ --tw-translate-x: 0;
10
+ --tw-translate-y: 0;
11
+ --tw-translate-z: 0;
12
+ --tw-rotate-x: rotateX(0);
13
+ --tw-rotate-y: rotateY(0);
14
+ --tw-rotate-z: rotateZ(0);
15
+ --tw-skew-x: skewX(0);
16
+ --tw-skew-y: skewY(0);
17
+ --tw-space-y-reverse: 0;
18
+ --tw-space-x-reverse: 0;
19
+ --tw-border-style: solid;
20
+ --tw-gradient-position: initial;
21
+ --tw-gradient-from: #0000;
22
+ --tw-gradient-via: #0000;
23
+ --tw-gradient-to: #0000;
24
+ --tw-gradient-stops: initial;
25
+ --tw-gradient-via-stops: initial;
26
+ --tw-gradient-from-position: 0%;
27
+ --tw-gradient-via-position: 50%;
28
+ --tw-gradient-to-position: 100%;
29
+ --tw-leading: initial;
30
+ --tw-font-weight: initial;
31
+ --tw-shadow: 0 0 #0000;
32
+ --tw-shadow-color: initial;
33
+ --tw-shadow-alpha: 100%;
34
+ --tw-inset-shadow: 0 0 #0000;
35
+ --tw-inset-shadow-color: initial;
36
+ --tw-inset-shadow-alpha: 100%;
37
+ --tw-ring-color: initial;
38
+ --tw-ring-shadow: 0 0 #0000;
39
+ --tw-inset-ring-color: initial;
40
+ --tw-inset-ring-shadow: 0 0 #0000;
41
+ --tw-ring-inset: initial;
42
+ --tw-ring-offset-width: 0px;
43
+ --tw-ring-offset-color: #fff;
44
+ --tw-ring-offset-shadow: 0 0 #0000;
45
+ --tw-outline-style: solid;
46
+ --tw-duration: initial;
47
+ --tw-ease: initial;
48
+ }
49
+ }
50
+ }
51
+ @layer theme {
52
+ :root,
53
+ :host {
54
+ --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
55
+ "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
56
+ --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
57
+ "Liberation Mono", "Courier New", monospace;
58
+ --color-red-50: oklch(97.1% 0.013 17.38);
59
+ --color-red-100: oklch(93.6% 0.032 17.717);
60
+ --color-red-500: oklch(63.7% 0.237 25.331);
61
+ --color-red-600: oklch(57.7% 0.245 27.325);
62
+ --color-red-700: oklch(50.5% 0.213 27.518);
63
+ --color-yellow-600: oklch(68.1% 0.162 75.834);
64
+ --color-yellow-700: oklch(55.4% 0.135 66.442);
65
+ --color-blue-50: oklch(97% 0.014 254.604);
66
+ --color-blue-100: oklch(93.2% 0.032 255.585);
67
+ --color-blue-200: oklch(88.2% 0.059 254.128);
68
+ --color-blue-400: oklch(70.7% 0.165 254.624);
69
+ --color-blue-500: oklch(62.3% 0.214 259.815);
70
+ --color-blue-600: oklch(54.6% 0.245 262.881);
71
+ --color-blue-700: oklch(48.8% 0.243 264.376);
72
+ --color-blue-800: oklch(42.4% 0.199 265.638);
73
+ --color-blue-900: oklch(37.9% 0.146 265.522);
74
+ --color-gray-50: oklch(98.5% 0.002 247.839);
75
+ --color-gray-100: oklch(96.7% 0.003 264.542);
76
+ --color-gray-200: oklch(92.8% 0.006 264.531);
77
+ --color-gray-300: oklch(87.2% 0.01 258.338);
78
+ --color-gray-400: oklch(70.7% 0.022 261.325);
79
+ --color-gray-500: oklch(55.1% 0.027 264.364);
80
+ --color-gray-600: oklch(44.6% 0.03 256.802);
81
+ --color-gray-700: oklch(37.3% 0.034 259.733);
82
+ --color-gray-800: oklch(27.8% 0.033 256.848);
83
+ --color-gray-900: oklch(21% 0.034 264.665);
84
+ --color-black: #000;
85
+ --color-white: #fff;
86
+ --spacing: 0.25rem;
87
+ --container-xs: 20rem;
88
+ --container-sm: 24rem;
89
+ --container-md: 28rem;
90
+ --container-xl: 36rem;
91
+ --text-xs: 0.75rem;
92
+ --text-xs--line-height: calc(1 / 0.75);
93
+ --text-sm: 0.875rem;
94
+ --text-sm--line-height: calc(1.25 / 0.875);
95
+ --text-lg: 1.125rem;
96
+ --text-lg--line-height: calc(1.75 / 1.125);
97
+ --text-xl: 1.25rem;
98
+ --text-xl--line-height: calc(1.75 / 1.25);
99
+ --text-2xl: 1.5rem;
100
+ --text-2xl--line-height: calc(2 / 1.5);
101
+ --text-4xl: 2.25rem;
102
+ --text-4xl--line-height: calc(2.5 / 2.25);
103
+ --text-7xl: 4.5rem;
104
+ --text-7xl--line-height: 1;
105
+ --font-weight-medium: 500;
106
+ --font-weight-semibold: 600;
107
+ --font-weight-bold: 700;
108
+ --radius-md: 0.375rem;
109
+ --radius-lg: 0.5rem;
110
+ --radius-xl: 0.75rem;
111
+ --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
112
+ --animate-spin: spin 1s linear infinite;
113
+ --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
114
+ --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
115
+ --default-transition-duration: 0.15s;
116
+ --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
117
+ --default-font-family: var(--font-sans);
118
+ --default-mono-font-family: var(--font-mono);
119
+ }
120
+ }
121
+ @layer base {
122
+ *,
123
+ :after,
124
+ :before,
125
+ ::backdrop {
126
+ box-sizing: border-box;
127
+ border: 0 solid;
128
+ margin: 0;
129
+ padding: 0;
130
+ }
131
+ ::file-selector-button {
132
+ box-sizing: border-box;
133
+ border: 0 solid;
134
+ margin: 0;
135
+ padding: 0;
136
+ }
137
+ html,
138
+ :host {
139
+ -webkit-text-size-adjust: 100%;
140
+ -moz-tab-size: 4;
141
+ tab-size: 4;
142
+ line-height: 1.5;
143
+ font-family: var(
144
+ --default-font-family,
145
+ ui-sans-serif,
146
+ system-ui,
147
+ sans-serif,
148
+ "Apple Color Emoji",
149
+ "Segoe UI Emoji",
150
+ "Segoe UI Symbol",
151
+ "Noto Color Emoji"
152
+ );
153
+ font-feature-settings: var(--default-font-feature-settings, normal);
154
+ font-variation-settings: var(--default-font-variation-settings, normal);
155
+ -webkit-tap-highlight-color: transparent;
156
+ }
157
+ hr {
158
+ height: 0;
159
+ color: inherit;
160
+ border-top-width: 1px;
161
+ }
162
+ abbr:where([title]) {
163
+ -webkit-text-decoration: underline dotted;
164
+ text-decoration: underline dotted;
165
+ }
166
+ h1,
167
+ h2,
168
+ h3,
169
+ h4,
170
+ h5,
171
+ h6 {
172
+ font-size: inherit;
173
+ font-weight: inherit;
174
+ }
175
+ a {
176
+ color: inherit;
177
+ -webkit-text-decoration: inherit;
178
+ text-decoration: inherit;
179
+ }
180
+ b,
181
+ strong {
182
+ font-weight: bolder;
183
+ }
184
+ code,
185
+ kbd,
186
+ samp,
187
+ pre {
188
+ font-family: var(
189
+ --default-mono-font-family,
190
+ ui-monospace,
191
+ SFMono-Regular,
192
+ Menlo,
193
+ Monaco,
194
+ Consolas,
195
+ "Liberation Mono",
196
+ "Courier New",
197
+ monospace
198
+ );
199
+ font-feature-settings: var(--default-mono-font-feature-settings, normal);
200
+ font-variation-settings: var(
201
+ --default-mono-font-variation-settings,
202
+ normal
203
+ );
204
+ font-size: 1em;
205
+ }
206
+ small {
207
+ font-size: 80%;
208
+ }
209
+ sub,
210
+ sup {
211
+ vertical-align: baseline;
212
+ font-size: 75%;
213
+ line-height: 0;
214
+ position: relative;
215
+ }
216
+ sub {
217
+ bottom: -0.25em;
218
+ }
219
+ sup {
220
+ top: -0.5em;
221
+ }
222
+ table {
223
+ text-indent: 0;
224
+ border-color: inherit;
225
+ border-collapse: collapse;
226
+ }
227
+ :-moz-focusring {
228
+ outline: auto;
229
+ }
230
+ progress {
231
+ vertical-align: baseline;
232
+ }
233
+ summary {
234
+ display: list-item;
235
+ }
236
+ ol,
237
+ ul,
238
+ menu {
239
+ list-style: none;
240
+ }
241
+ img,
242
+ svg,
243
+ video,
244
+ canvas,
245
+ audio,
246
+ iframe,
247
+ embed,
248
+ object {
249
+ vertical-align: middle;
250
+ display: block;
251
+ }
252
+ img,
253
+ video {
254
+ max-width: 100%;
255
+ height: auto;
256
+ }
257
+ button,
258
+ input,
259
+ select,
260
+ optgroup,
261
+ textarea {
262
+ font: inherit;
263
+ font-feature-settings: inherit;
264
+ font-variation-settings: inherit;
265
+ letter-spacing: inherit;
266
+ color: inherit;
267
+ opacity: 1;
268
+ background-color: #0000;
269
+ border-radius: 0;
270
+ }
271
+ ::file-selector-button {
272
+ font: inherit;
273
+ font-feature-settings: inherit;
274
+ font-variation-settings: inherit;
275
+ letter-spacing: inherit;
276
+ color: inherit;
277
+ opacity: 1;
278
+ background-color: #0000;
279
+ border-radius: 0;
280
+ }
281
+ :where(select:is([multiple], [size])) optgroup {
282
+ font-weight: bolder;
283
+ }
284
+ :where(select:is([multiple], [size])) optgroup option {
285
+ padding-inline-start: 20px;
286
+ }
287
+ ::file-selector-button {
288
+ margin-inline-end: 4px;
289
+ }
290
+ ::placeholder {
291
+ opacity: 1;
292
+ }
293
+ @supports (not ((-webkit-appearance: -apple-pay-button))) or
294
+ (contain-intrinsic-size: 1px) {
295
+ ::placeholder {
296
+ color: currentColor;
297
+ }
298
+ @supports (color: color-mix(in lab, red, red)) {
299
+ ::placeholder {
300
+ color: color-mix(in oklab, currentcolor 50%, transparent);
301
+ }
302
+ }
303
+ }
304
+ textarea {
305
+ resize: vertical;
306
+ }
307
+ ::-webkit-search-decoration {
308
+ -webkit-appearance: none;
309
+ }
310
+ ::-webkit-date-and-time-value {
311
+ min-height: 1lh;
312
+ text-align: inherit;
313
+ }
314
+ ::-webkit-datetime-edit {
315
+ display: inline-flex;
316
+ }
317
+ ::-webkit-datetime-edit-fields-wrapper {
318
+ padding: 0;
319
+ }
320
+ ::-webkit-datetime-edit {
321
+ padding-block: 0;
322
+ }
323
+ ::-webkit-datetime-edit-year-field {
324
+ padding-block: 0;
325
+ }
326
+ ::-webkit-datetime-edit-month-field {
327
+ padding-block: 0;
328
+ }
329
+ ::-webkit-datetime-edit-day-field {
330
+ padding-block: 0;
331
+ }
332
+ ::-webkit-datetime-edit-hour-field {
333
+ padding-block: 0;
334
+ }
335
+ ::-webkit-datetime-edit-minute-field {
336
+ padding-block: 0;
337
+ }
338
+ ::-webkit-datetime-edit-second-field {
339
+ padding-block: 0;
340
+ }
341
+ ::-webkit-datetime-edit-millisecond-field {
342
+ padding-block: 0;
343
+ }
344
+ ::-webkit-datetime-edit-meridiem-field {
345
+ padding-block: 0;
346
+ }
347
+ :-moz-ui-invalid {
348
+ box-shadow: none;
349
+ }
350
+ button,
351
+ input:where([type="button"], [type="reset"], [type="submit"]) {
352
+ -webkit-appearance: button;
353
+ -moz-appearance: button;
354
+ appearance: button;
355
+ }
356
+ ::file-selector-button {
357
+ -webkit-appearance: button;
358
+ -moz-appearance: button;
359
+ appearance: button;
360
+ }
361
+ ::-webkit-inner-spin-button {
362
+ height: auto;
363
+ }
364
+ ::-webkit-outer-spin-button {
365
+ height: auto;
366
+ }
367
+ [hidden]:where(:not([hidden="until-found"])) {
368
+ display: none !important;
369
+ }
370
+ }
371
+ @layer components;
372
+ @layer utilities {
373
+ .pointer-events-auto {
374
+ pointer-events: auto;
375
+ }
376
+ .pointer-events-none {
377
+ pointer-events: none;
378
+ }
379
+ .absolute {
380
+ position: absolute;
381
+ }
382
+ .fixed {
383
+ position: fixed;
384
+ }
385
+ .relative {
386
+ position: relative;
387
+ }
388
+ .inset-0 {
389
+ inset: calc(var(--spacing) * 0);
390
+ }
391
+ .-top-3 {
392
+ top: calc(var(--spacing) * -3);
393
+ }
394
+ .top-0 {
395
+ top: calc(var(--spacing) * 0);
396
+ }
397
+ .top-2 {
398
+ top: calc(var(--spacing) * 2);
399
+ }
400
+ .right-2 {
401
+ right: calc(var(--spacing) * 2);
402
+ }
403
+ .bottom-0 {
404
+ bottom: calc(var(--spacing) * 0);
405
+ }
406
+ .bottom-2 {
407
+ bottom: calc(var(--spacing) * 2);
408
+ }
409
+ .bottom-5 {
410
+ bottom: calc(var(--spacing) * 5);
411
+ }
412
+ .bottom-10 {
413
+ bottom: calc(var(--spacing) * 10);
414
+ }
415
+ .bottom-\[100\%\] {
416
+ bottom: 100%;
417
+ }
418
+ .left-0 {
419
+ left: calc(var(--spacing) * 0);
420
+ }
421
+ .left-1\/2 {
422
+ left: 50%;
423
+ }
424
+ .left-2 {
425
+ left: calc(var(--spacing) * 2);
426
+ }
427
+ .z-10 {
428
+ z-index: 10;
429
+ }
430
+ .z-30 {
431
+ z-index: 30;
432
+ }
433
+ .z-31 {
434
+ z-index: 31;
435
+ }
436
+ .z-50 {
437
+ z-index: 50;
438
+ }
439
+ .z-1000 {
440
+ z-index: 1000;
441
+ }
442
+ .container {
443
+ width: 100%;
444
+ }
445
+ @media (min-width: 40rem) {
446
+ .container {
447
+ max-width: 40rem;
448
+ }
449
+ }
450
+ @media (min-width: 48rem) {
451
+ .container {
452
+ max-width: 48rem;
453
+ }
454
+ }
455
+ @media (min-width: 64rem) {
456
+ .container {
457
+ max-width: 64rem;
458
+ }
459
+ }
460
+ @media (min-width: 80rem) {
461
+ .container {
462
+ max-width: 80rem;
463
+ }
464
+ }
465
+ @media (min-width: 96rem) {
466
+ .container {
467
+ max-width: 96rem;
468
+ }
469
+ }
470
+ .m-0 {
471
+ margin: calc(var(--spacing) * 0);
472
+ }
473
+ .mx-2 {
474
+ margin-inline: calc(var(--spacing) * 2);
475
+ }
476
+ .mx-4 {
477
+ margin-inline: calc(var(--spacing) * 4);
478
+ }
479
+ .mx-auto {
480
+ margin-inline: auto;
481
+ }
482
+ .-mt-5 {
483
+ margin-top: calc(var(--spacing) * -5);
484
+ }
485
+ .mt-1 {
486
+ margin-top: calc(var(--spacing) * 1);
487
+ }
488
+ .mt-2 {
489
+ margin-top: calc(var(--spacing) * 2);
490
+ }
491
+ .mt-3 {
492
+ margin-top: calc(var(--spacing) * 3);
493
+ }
494
+ .mt-4 {
495
+ margin-top: calc(var(--spacing) * 4);
496
+ }
497
+ .mt-5 {
498
+ margin-top: calc(var(--spacing) * 5);
499
+ }
500
+ .mt-6 {
501
+ margin-top: calc(var(--spacing) * 6);
502
+ }
503
+ .mt-10 {
504
+ margin-top: calc(var(--spacing) * 10);
505
+ }
506
+ .mt-14 {
507
+ margin-top: calc(var(--spacing) * 14);
508
+ }
509
+ .mr-1 {
510
+ margin-right: calc(var(--spacing) * 1);
511
+ }
512
+ .mb-2 {
513
+ margin-bottom: calc(var(--spacing) * 2);
514
+ }
515
+ .mb-3 {
516
+ margin-bottom: calc(var(--spacing) * 3);
517
+ }
518
+ .mb-4 {
519
+ margin-bottom: calc(var(--spacing) * 4);
520
+ }
521
+ .mb-5 {
522
+ margin-bottom: calc(var(--spacing) * 5);
523
+ }
524
+ .mb-6 {
525
+ margin-bottom: calc(var(--spacing) * 6);
526
+ }
527
+ .ml-2 {
528
+ margin-left: calc(var(--spacing) * 2);
529
+ }
530
+ .ml-6 {
531
+ margin-left: calc(var(--spacing) * 6);
532
+ }
533
+ .ml-auto {
534
+ margin-left: auto;
535
+ }
536
+ .flex {
537
+ display: flex;
538
+ }
539
+ .hidden {
540
+ display: none;
541
+ }
542
+ .inline {
543
+ display: inline;
544
+ }
545
+ .inline-flex {
546
+ display: inline-flex;
547
+ }
548
+ .table {
549
+ display: table;
550
+ }
551
+ .h-2 {
552
+ height: calc(var(--spacing) * 2);
553
+ }
554
+ .h-4 {
555
+ height: calc(var(--spacing) * 4);
556
+ }
557
+ .h-5 {
558
+ height: calc(var(--spacing) * 5);
559
+ }
560
+ .h-6 {
561
+ height: calc(var(--spacing) * 6);
562
+ }
563
+ .h-10 {
564
+ height: calc(var(--spacing) * 10);
565
+ }
566
+ .h-12 {
567
+ height: calc(var(--spacing) * 12);
568
+ }
569
+ .h-15 {
570
+ height: calc(var(--spacing) * 15);
571
+ }
572
+ .h-20 {
573
+ height: calc(var(--spacing) * 20);
574
+ }
575
+ .h-24 {
576
+ height: calc(var(--spacing) * 24);
577
+ }
578
+ .h-60 {
579
+ height: calc(var(--spacing) * 60);
580
+ }
581
+ .h-\[50vh\] {
582
+ height: 50vh;
583
+ }
584
+ .h-\[85\%\] {
585
+ height: 85%;
586
+ }
587
+ .h-\[150px\] {
588
+ height: 150px;
589
+ }
590
+ .h-full {
591
+ height: 100%;
592
+ }
593
+ .h-screen {
594
+ height: 100vh;
595
+ }
596
+ .max-h-\[78vh\] {
597
+ max-height: 78vh;
598
+ }
599
+ .max-h-\[300px\] {
600
+ max-height: 300px;
601
+ }
602
+ .min-h-\[69vh\] {
603
+ min-height: 69vh;
604
+ }
605
+ .min-h-screen {
606
+ min-height: 100vh;
607
+ }
608
+ .w-2 {
609
+ width: calc(var(--spacing) * 2);
610
+ }
611
+ .w-4 {
612
+ width: calc(var(--spacing) * 4);
613
+ }
614
+ .w-4\/5 {
615
+ width: 80%;
616
+ }
617
+ .w-5 {
618
+ width: calc(var(--spacing) * 5);
619
+ }
620
+ .w-6 {
621
+ width: calc(var(--spacing) * 6);
622
+ }
623
+ .w-10 {
624
+ width: calc(var(--spacing) * 10);
625
+ }
626
+ .w-12 {
627
+ width: calc(var(--spacing) * 12);
628
+ }
629
+ .w-15 {
630
+ width: calc(var(--spacing) * 15);
631
+ }
632
+ .w-20 {
633
+ width: calc(var(--spacing) * 20);
634
+ }
635
+ .w-100 {
636
+ width: calc(var(--spacing) * 100);
637
+ }
638
+ .w-\[100px\] {
639
+ width: 100px;
640
+ }
641
+ .w-\[280px\] {
642
+ width: 280px;
643
+ }
644
+ .w-full {
645
+ width: 100%;
646
+ }
647
+ .max-w-\[700px\] {
648
+ max-width: 700px;
649
+ }
650
+ .max-w-md {
651
+ max-width: var(--container-md);
652
+ }
653
+ .max-w-sm {
654
+ max-width: var(--container-sm);
655
+ }
656
+ .max-w-xl {
657
+ max-width: var(--container-xl);
658
+ }
659
+ .max-w-xs {
660
+ max-width: var(--container-xs);
661
+ }
662
+ .min-w-\[250px\] {
663
+ min-width: 250px;
664
+ }
665
+ .flex-1 {
666
+ flex: 1;
667
+ }
668
+ .flex-grow {
669
+ flex-grow: 1;
670
+ }
671
+ .-translate-x-1\/2 {
672
+ --tw-translate-x: -50%;
673
+ translate: var(--tw-translate-x) var(--tw-translate-y);
674
+ }
675
+ .-translate-x-full {
676
+ --tw-translate-x: -100%;
677
+ translate: var(--tw-translate-x) var(--tw-translate-y);
678
+ }
679
+ .translate-x-0 {
680
+ --tw-translate-x: calc(var(--spacing) * 0);
681
+ translate: var(--tw-translate-x) var(--tw-translate-y);
682
+ }
683
+ .transform {
684
+ transform: var(--tw-rotate-x) var(--tw-rotate-y) var(--tw-rotate-z)
685
+ var(--tw-skew-x) var(--tw-skew-y);
686
+ }
687
+ .animate-ping {
688
+ animation: var(--animate-ping);
689
+ }
690
+ .animate-pulse {
691
+ animation: var(--animate-pulse);
692
+ }
693
+ .animate-spin {
694
+ animation: var(--animate-spin);
695
+ }
696
+ .cursor-not-allowed {
697
+ cursor: not-allowed;
698
+ }
699
+ .cursor-pointer {
700
+ cursor: pointer;
701
+ }
702
+ .resize {
703
+ resize: both;
704
+ }
705
+ .list-disc {
706
+ list-style-type: disc;
707
+ }
708
+ .flex-col {
709
+ flex-direction: column;
710
+ }
711
+ .flex-row {
712
+ flex-direction: row;
713
+ }
714
+ .flex-wrap {
715
+ flex-wrap: wrap;
716
+ }
717
+ .items-center {
718
+ align-items: center;
719
+ }
720
+ .items-start {
721
+ align-items: flex-start;
722
+ }
723
+ .justify-between {
724
+ justify-content: space-between;
725
+ }
726
+ .justify-center {
727
+ justify-content: center;
728
+ }
729
+ .justify-end {
730
+ justify-content: flex-end;
731
+ }
732
+ .justify-start {
733
+ justify-content: flex-start;
734
+ }
735
+ .gap-1 {
736
+ gap: calc(var(--spacing) * 1);
737
+ }
738
+ .gap-2 {
739
+ gap: calc(var(--spacing) * 2);
740
+ }
741
+ .gap-3 {
742
+ gap: calc(var(--spacing) * 3);
743
+ }
744
+ .gap-4 {
745
+ gap: calc(var(--spacing) * 4);
746
+ }
747
+ :where(.space-y-2 > :not(:last-child)) {
748
+ --tw-space-y-reverse: 0;
749
+ margin-block-start: calc(
750
+ calc(var(--spacing) * 2) * var(--tw-space-y-reverse)
751
+ );
752
+ margin-block-end: calc(
753
+ calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse))
754
+ );
755
+ }
756
+ :where(.space-y-3 > :not(:last-child)) {
757
+ --tw-space-y-reverse: 0;
758
+ margin-block-start: calc(
759
+ calc(var(--spacing) * 3) * var(--tw-space-y-reverse)
760
+ );
761
+ margin-block-end: calc(
762
+ calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse))
763
+ );
764
+ }
765
+ :where(.space-y-6 > :not(:last-child)) {
766
+ --tw-space-y-reverse: 0;
767
+ margin-block-start: calc(
768
+ calc(var(--spacing) * 6) * var(--tw-space-y-reverse)
769
+ );
770
+ margin-block-end: calc(
771
+ calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse))
772
+ );
773
+ }
774
+ :where(.space-x-2 > :not(:last-child)) {
775
+ --tw-space-x-reverse: 0;
776
+ margin-inline-start: calc(
777
+ calc(var(--spacing) * 2) * var(--tw-space-x-reverse)
778
+ );
779
+ margin-inline-end: calc(
780
+ calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse))
781
+ );
782
+ }
783
+ .truncate {
784
+ text-overflow: ellipsis;
785
+ white-space: nowrap;
786
+ overflow: hidden;
787
+ }
788
+ .overflow-hidden {
789
+ overflow: hidden;
790
+ }
791
+ .overflow-x-auto {
792
+ overflow-x: auto;
793
+ }
794
+ .overflow-y-auto {
795
+ overflow-y: auto;
796
+ }
797
+ .rounded {
798
+ border-radius: 0.25rem;
799
+ }
800
+ .rounded-\[50\%\] {
801
+ border-radius: 50%;
802
+ }
803
+ .rounded-full {
804
+ border-radius: 3.40282e38px;
805
+ }
806
+ .rounded-lg {
807
+ border-radius: var(--radius-lg);
808
+ }
809
+ .rounded-md {
810
+ border-radius: var(--radius-md);
811
+ }
812
+ .rounded-xl {
813
+ border-radius: var(--radius-xl);
814
+ }
815
+ .border {
816
+ border-style: var(--tw-border-style);
817
+ border-width: 1px;
818
+ }
819
+ .border-2 {
820
+ border-style: var(--tw-border-style);
821
+ border-width: 2px;
822
+ }
823
+ .border-r {
824
+ border-right-style: var(--tw-border-style);
825
+ border-right-width: 1px;
826
+ }
827
+ .border-blue-200 {
828
+ border-color: var(--color-blue-200);
829
+ }
830
+ .border-blue-500 {
831
+ border-color: var(--color-blue-500);
832
+ }
833
+ .border-blue-600 {
834
+ border-color: var(--color-blue-600);
835
+ }
836
+ .border-gray-200 {
837
+ border-color: var(--color-gray-200);
838
+ }
839
+ .border-gray-300 {
840
+ border-color: var(--color-gray-300);
841
+ }
842
+ .border-transparent {
843
+ border-color: #0000;
844
+ }
845
+ .border-t-transparent {
846
+ border-top-color: #0000;
847
+ }
848
+ .bg-black\/50 {
849
+ background-color: #00000080;
850
+ }
851
+ @supports (color: color-mix(in lab, red, red)) {
852
+ .bg-black\/50 {
853
+ background-color: color-mix(
854
+ in oklab,
855
+ var(--color-black) 50%,
856
+ transparent
857
+ );
858
+ }
859
+ }
860
+ .bg-black\/60 {
861
+ background-color: #0009;
862
+ }
863
+ @supports (color: color-mix(in lab, red, red)) {
864
+ .bg-black\/60 {
865
+ background-color: color-mix(
866
+ in oklab,
867
+ var(--color-black) 60%,
868
+ transparent
869
+ );
870
+ }
871
+ }
872
+ .bg-blue-50 {
873
+ background-color: var(--color-blue-50);
874
+ }
875
+ .bg-blue-100 {
876
+ background-color: var(--color-blue-100);
877
+ }
878
+ .bg-blue-400 {
879
+ background-color: var(--color-blue-400);
880
+ }
881
+ .bg-blue-500 {
882
+ background-color: var(--color-blue-500);
883
+ }
884
+ .bg-blue-600 {
885
+ background-color: var(--color-blue-600);
886
+ }
887
+ .bg-gray-50 {
888
+ background-color: var(--color-gray-50);
889
+ }
890
+ .bg-gray-100 {
891
+ background-color: var(--color-gray-100);
892
+ }
893
+ .bg-gray-200 {
894
+ background-color: var(--color-gray-200);
895
+ }
896
+ .bg-gray-300 {
897
+ background-color: var(--color-gray-300);
898
+ }
899
+ .bg-gray-400 {
900
+ background-color: var(--color-gray-400);
901
+ }
902
+ .bg-red-50 {
903
+ background-color: var(--color-red-50);
904
+ }
905
+ .bg-red-100 {
906
+ background-color: var(--color-red-100);
907
+ }
908
+ .bg-white {
909
+ background-color: var(--color-white);
910
+ }
911
+ .bg-gradient-to-t {
912
+ --tw-gradient-position: to top in oklab;
913
+ background-image: linear-gradient(var(--tw-gradient-stops));
914
+ }
915
+ .from-white {
916
+ --tw-gradient-from: var(--color-white);
917
+ --tw-gradient-stops: var(
918
+ --tw-gradient-via-stops,
919
+ var(--tw-gradient-position),
920
+ var(--tw-gradient-from) var(--tw-gradient-from-position),
921
+ var(--tw-gradient-to) var(--tw-gradient-to-position)
922
+ );
923
+ }
924
+ .to-transparent {
925
+ --tw-gradient-to: transparent;
926
+ --tw-gradient-stops: var(
927
+ --tw-gradient-via-stops,
928
+ var(--tw-gradient-position),
929
+ var(--tw-gradient-from) var(--tw-gradient-from-position),
930
+ var(--tw-gradient-to) var(--tw-gradient-to-position)
931
+ );
932
+ }
933
+ .object-cover {
934
+ object-fit: cover;
935
+ }
936
+ .p-1 {
937
+ padding: calc(var(--spacing) * 1);
938
+ }
939
+ .p-2 {
940
+ padding: calc(var(--spacing) * 2);
941
+ }
942
+ .p-3 {
943
+ padding: calc(var(--spacing) * 3);
944
+ }
945
+ .p-4 {
946
+ padding: calc(var(--spacing) * 4);
947
+ }
948
+ .p-6 {
949
+ padding: calc(var(--spacing) * 6);
950
+ }
951
+ .p-8 {
952
+ padding: calc(var(--spacing) * 8);
953
+ }
954
+ .p-10 {
955
+ padding: calc(var(--spacing) * 10);
956
+ }
957
+ .px-2 {
958
+ padding-inline: calc(var(--spacing) * 2);
959
+ }
960
+ .px-3 {
961
+ padding-inline: calc(var(--spacing) * 3);
962
+ }
963
+ .px-4 {
964
+ padding-inline: calc(var(--spacing) * 4);
965
+ }
966
+ .px-20 {
967
+ padding-inline: calc(var(--spacing) * 20);
968
+ }
969
+ .py-1 {
970
+ padding-block: calc(var(--spacing) * 1);
971
+ }
972
+ .py-1\.5 {
973
+ padding-block: calc(var(--spacing) * 1.5);
974
+ }
975
+ .py-2 {
976
+ padding-block: calc(var(--spacing) * 2);
977
+ }
978
+ .pr-2 {
979
+ padding-right: calc(var(--spacing) * 2);
980
+ }
981
+ .pb-1 {
982
+ padding-bottom: calc(var(--spacing) * 1);
983
+ }
984
+ .pb-20 {
985
+ padding-bottom: calc(var(--spacing) * 20);
986
+ }
987
+ .pb-32 {
988
+ padding-bottom: calc(var(--spacing) * 32);
989
+ }
990
+ .pl-5 {
991
+ padding-left: calc(var(--spacing) * 5);
992
+ }
993
+ .text-center {
994
+ text-align: center;
995
+ }
996
+ .text-left {
997
+ text-align: left;
998
+ }
999
+ .font-sans {
1000
+ font-family: var(--font-sans);
1001
+ }
1002
+ .text-2xl {
1003
+ font-size: var(--text-2xl);
1004
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
1005
+ }
1006
+ .text-4xl {
1007
+ font-size: var(--text-4xl);
1008
+ line-height: var(--tw-leading, var(--text-4xl--line-height));
1009
+ }
1010
+ .text-7xl {
1011
+ font-size: var(--text-7xl);
1012
+ line-height: var(--tw-leading, var(--text-7xl--line-height));
1013
+ }
1014
+ .text-lg {
1015
+ font-size: var(--text-lg);
1016
+ line-height: var(--tw-leading, var(--text-lg--line-height));
1017
+ }
1018
+ .text-sm {
1019
+ font-size: var(--text-sm);
1020
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1021
+ }
1022
+ .text-xl {
1023
+ font-size: var(--text-xl);
1024
+ line-height: var(--tw-leading, var(--text-xl--line-height));
1025
+ }
1026
+ .text-xs {
1027
+ font-size: var(--text-xs);
1028
+ line-height: var(--tw-leading, var(--text-xs--line-height));
1029
+ }
1030
+ .leading-none {
1031
+ --tw-leading: 1;
1032
+ line-height: 1;
1033
+ }
1034
+ .font-bold {
1035
+ --tw-font-weight: var(--font-weight-bold);
1036
+ font-weight: var(--font-weight-bold);
1037
+ }
1038
+ .font-medium {
1039
+ --tw-font-weight: var(--font-weight-medium);
1040
+ font-weight: var(--font-weight-medium);
1041
+ }
1042
+ .font-semibold {
1043
+ --tw-font-weight: var(--font-weight-semibold);
1044
+ font-weight: var(--font-weight-semibold);
1045
+ }
1046
+ .break-words {
1047
+ overflow-wrap: break-word;
1048
+ }
1049
+ .whitespace-pre-line {
1050
+ white-space: pre-line;
1051
+ }
1052
+ .text-black {
1053
+ color: var(--color-black);
1054
+ }
1055
+ .text-blue-400 {
1056
+ color: var(--color-blue-400);
1057
+ }
1058
+ .text-blue-500 {
1059
+ color: var(--color-blue-500);
1060
+ }
1061
+ .text-blue-600 {
1062
+ color: var(--color-blue-600);
1063
+ }
1064
+ .text-blue-700 {
1065
+ color: var(--color-blue-700);
1066
+ }
1067
+ .text-blue-900 {
1068
+ color: var(--color-blue-900);
1069
+ }
1070
+ .text-gray-300 {
1071
+ color: var(--color-gray-300);
1072
+ }
1073
+ .text-gray-400 {
1074
+ color: var(--color-gray-400);
1075
+ }
1076
+ .text-gray-500 {
1077
+ color: var(--color-gray-500);
1078
+ }
1079
+ .text-gray-600 {
1080
+ color: var(--color-gray-600);
1081
+ }
1082
+ .text-gray-700 {
1083
+ color: var(--color-gray-700);
1084
+ }
1085
+ .text-gray-800 {
1086
+ color: var(--color-gray-800);
1087
+ }
1088
+ .text-red-500 {
1089
+ color: var(--color-red-500);
1090
+ }
1091
+ .text-red-600 {
1092
+ color: var(--color-red-600);
1093
+ }
1094
+ .text-white {
1095
+ color: var(--color-white);
1096
+ }
1097
+ .text-yellow-600 {
1098
+ color: var(--color-yellow-600);
1099
+ }
1100
+ .uppercase {
1101
+ text-transform: uppercase;
1102
+ }
1103
+ .opacity-25 {
1104
+ opacity: 0.25;
1105
+ }
1106
+ .opacity-30 {
1107
+ opacity: 0.3;
1108
+ }
1109
+ .opacity-75 {
1110
+ opacity: 0.75;
1111
+ }
1112
+ .shadow-lg {
1113
+ --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, #0000001a),
1114
+ 0 4px 6px -4px var(--tw-shadow-color, #0000001a);
1115
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow),
1116
+ var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1117
+ }
1118
+ .shadow-md {
1119
+ --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, #0000001a),
1120
+ 0 2px 4px -2px var(--tw-shadow-color, #0000001a);
1121
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow),
1122
+ var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1123
+ }
1124
+ .shadow-sm {
1125
+ --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a),
1126
+ 0 1px 2px -1px var(--tw-shadow-color, #0000001a);
1127
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow),
1128
+ var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1129
+ }
1130
+ .shadow-xl {
1131
+ --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, #0000001a),
1132
+ 0 8px 10px -6px var(--tw-shadow-color, #0000001a);
1133
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow),
1134
+ var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1135
+ }
1136
+ .outline {
1137
+ outline-style: var(--tw-outline-style);
1138
+ outline-width: 1px;
1139
+ }
1140
+ .transition {
1141
+ transition-property: color, background-color, border-color, outline-color,
1142
+ text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via,
1143
+ --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate,
1144
+ filter, -webkit-backdrop-filter, backdrop-filter;
1145
+ transition-timing-function: var(
1146
+ --tw-ease,
1147
+ var(--default-transition-timing-function)
1148
+ );
1149
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1150
+ }
1151
+ .transition-all {
1152
+ transition-property: all;
1153
+ transition-timing-function: var(
1154
+ --tw-ease,
1155
+ var(--default-transition-timing-function)
1156
+ );
1157
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1158
+ }
1159
+ .transition-colors {
1160
+ transition-property: color, background-color, border-color, outline-color,
1161
+ text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via,
1162
+ --tw-gradient-to;
1163
+ transition-timing-function: var(
1164
+ --tw-ease,
1165
+ var(--default-transition-timing-function)
1166
+ );
1167
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1168
+ }
1169
+ .transition-shadow {
1170
+ transition-property: box-shadow;
1171
+ transition-timing-function: var(
1172
+ --tw-ease,
1173
+ var(--default-transition-timing-function)
1174
+ );
1175
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1176
+ }
1177
+ .transition-transform {
1178
+ transition-property: transform, translate, scale, rotate;
1179
+ transition-timing-function: var(
1180
+ --tw-ease,
1181
+ var(--default-transition-timing-function)
1182
+ );
1183
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
1184
+ }
1185
+ .duration-300 {
1186
+ --tw-duration: 0.3s;
1187
+ transition-duration: 0.3s;
1188
+ }
1189
+ .duration-500 {
1190
+ --tw-duration: 0.5s;
1191
+ transition-duration: 0.5s;
1192
+ }
1193
+ .ease-in-out {
1194
+ --tw-ease: var(--ease-in-out);
1195
+ transition-timing-function: var(--ease-in-out);
1196
+ }
1197
+ @media (hover: hover) {
1198
+ .hover\:bg-blue-50:hover {
1199
+ background-color: var(--color-blue-50);
1200
+ }
1201
+ .hover\:bg-blue-200:hover {
1202
+ background-color: var(--color-blue-200);
1203
+ }
1204
+ .hover\:bg-blue-700:hover {
1205
+ background-color: var(--color-blue-700);
1206
+ }
1207
+ .hover\:bg-gray-300:hover {
1208
+ background-color: var(--color-gray-300);
1209
+ }
1210
+ .hover\:text-blue-500:hover {
1211
+ color: var(--color-blue-500);
1212
+ }
1213
+ .hover\:text-blue-800:hover {
1214
+ color: var(--color-blue-800);
1215
+ }
1216
+ .hover\:text-gray-900:hover {
1217
+ color: var(--color-gray-900);
1218
+ }
1219
+ .hover\:text-red-500:hover {
1220
+ color: var(--color-red-500);
1221
+ }
1222
+ .hover\:text-red-700:hover {
1223
+ color: var(--color-red-700);
1224
+ }
1225
+ .hover\:text-yellow-600:hover {
1226
+ color: var(--color-yellow-600);
1227
+ }
1228
+ .hover\:text-yellow-700:hover {
1229
+ color: var(--color-yellow-700);
1230
+ }
1231
+ .hover\:shadow-lg:hover {
1232
+ --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, #0000001a),
1233
+ 0 4px 6px -4px var(--tw-shadow-color, #0000001a);
1234
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow),
1235
+ var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1236
+ }
1237
+ }
1238
+ .focus\:ring-2:focus {
1239
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0
1240
+ calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
1241
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow),
1242
+ var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1243
+ }
1244
+ .focus\:ring-blue-200:focus {
1245
+ --tw-ring-color: var(--color-blue-200);
1246
+ }
1247
+ .disabled\:cursor-not-allowed:disabled {
1248
+ cursor: not-allowed;
1249
+ }
1250
+ .disabled\:bg-gray-100:disabled {
1251
+ background-color: var(--color-gray-100);
1252
+ }
1253
+ .disabled\:opacity-40:disabled {
1254
+ opacity: 0.4;
1255
+ }
1256
+ .disabled\:opacity-50:disabled {
1257
+ opacity: 0.5;
1258
+ }
1259
+ @media (min-width: 40rem) {
1260
+ .sm\:w-auto {
1261
+ width: auto;
1262
+ }
1263
+ .sm\:flex-row {
1264
+ flex-direction: row;
1265
+ }
1266
+ :where(.sm\:space-y-0 > :not(:last-child)) {
1267
+ --tw-space-y-reverse: 0;
1268
+ margin-block-start: calc(
1269
+ calc(var(--spacing) * 0) * var(--tw-space-y-reverse)
1270
+ );
1271
+ margin-block-end: calc(
1272
+ calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse))
1273
+ );
1274
+ }
1275
+ :where(.sm\:space-x-4 > :not(:last-child)) {
1276
+ --tw-space-x-reverse: 0;
1277
+ margin-inline-start: calc(
1278
+ calc(var(--spacing) * 4) * var(--tw-space-x-reverse)
1279
+ );
1280
+ margin-inline-end: calc(
1281
+ calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse))
1282
+ );
1283
+ }
1284
+ .sm\:p-4 {
1285
+ padding: calc(var(--spacing) * 4);
1286
+ }
1287
+ .sm\:text-lg {
1288
+ font-size: var(--text-lg);
1289
+ line-height: var(--tw-leading, var(--text-lg--line-height));
1290
+ }
1291
+ }
1292
+ @media (min-width: 48rem) {
1293
+ .md\:flex-row {
1294
+ flex-direction: row;
1295
+ }
1296
+ .md\:p-6 {
1297
+ padding: calc(var(--spacing) * 6);
1298
+ }
1299
+ .md\:text-lg {
1300
+ font-size: var(--text-lg);
1301
+ line-height: var(--tw-leading, var(--text-lg--line-height));
1302
+ }
1303
+ .md\:text-xl {
1304
+ font-size: var(--text-xl);
1305
+ line-height: var(--tw-leading, var(--text-xl--line-height));
1306
+ }
1307
+ }
1308
+ @media (min-width: 64rem) {
1309
+ .lg\:relative {
1310
+ position: relative;
1311
+ }
1312
+ .lg\:hidden {
1313
+ display: none;
1314
+ }
1315
+ .lg\:w-1\/3 {
1316
+ width: 33.3333%;
1317
+ }
1318
+ .lg\:translate-x-0 {
1319
+ --tw-translate-x: calc(var(--spacing) * 0);
1320
+ translate: var(--tw-translate-x) var(--tw-translate-y);
1321
+ }
1322
+ .lg\:transform-none {
1323
+ transform: none;
1324
+ }
1325
+ .lg\:p-8 {
1326
+ padding: calc(var(--spacing) * 8);
1327
+ }
1328
+ }
1329
+ @media (min-width: 80rem) {
1330
+ .xl\:text-2xl {
1331
+ font-size: var(--text-2xl);
1332
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
1333
+ }
1334
+ }
1335
+ }
1336
+ :root {
1337
+ color-scheme: light dark;
1338
+ color: #213547;
1339
+ font-synthesis: none;
1340
+ text-rendering: optimizeLegibility;
1341
+ -webkit-font-smoothing: antialiased;
1342
+ -moz-osx-font-smoothing: grayscale;
1343
+ --four-geeks-blue: #0097cf;
1344
+ --soft-blue: #f3fafd;
1345
+ --gray-text: #6883b4;
1346
+ --learnpack-blue: #02a9ea;
1347
+ --learnpack-light-blue: #c7f3fd;
1348
+ font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
1349
+ font-weight: 400;
1350
+ line-height: 1.5;
1351
+ }
1352
+ a {
1353
+ color: var(--learnpack-blue);
1354
+ -webkit-text-decoration: inherit;
1355
+ text-decoration: inherit;
1356
+ font-weight: 500;
1357
+ }
1358
+ a:hover {
1359
+ color: var(--learnpack-blue);
1360
+ }
1361
+ body {
1362
+ background-color: #f4f9fe;
1363
+ min-height: 100vh;
1364
+ margin: 0;
1365
+ }
1366
+ .bg-learnpack-blue {
1367
+ background-color: var(--soft-blue);
1368
+ }
1369
+ .bg-learnpack {
1370
+ background-color: var(--learnpack-blue);
1371
+ }
1372
+ .bg-gray-blue {
1373
+ background-color: #e7f1ff;
1374
+ }
1375
+ .index-circle {
1376
+ width: 30px;
1377
+ height: 30px;
1378
+ color: var(--four-geeks-blue);
1379
+ background-color: var(--soft-blue);
1380
+ border-radius: 50%;
1381
+ justify-content: center;
1382
+ align-items: center;
1383
+ font-size: 16px;
1384
+ font-weight: 600;
1385
+ display: flex;
1386
+ }
1387
+ .text-gray {
1388
+ color: var(--gray-text);
1389
+ }
1390
+ .scrollbar-hide {
1391
+ scrollbar-width: none !important;
1392
+ }
1393
+ .loader {
1394
+ justify-content: center;
1395
+ align-items: center;
1396
+ gap: 10px;
1397
+ animation: 1s linear infinite glowing;
1398
+ display: flex;
1399
+ }
1400
+ @keyframes spin {
1401
+ to {
1402
+ transform: rotate(360deg);
1403
+ }
1404
+ }
1405
+ .loader-icon {
1406
+ justify-content: center;
1407
+ align-items: center;
1408
+ width: 40px;
1409
+ height: 40px;
1410
+ display: flex;
1411
+ position: relative;
1412
+ }
1413
+ @keyframes glowing {
1414
+ 0% {
1415
+ opacity: 0.6;
1416
+ }
1417
+ to {
1418
+ opacity: 1;
1419
+ }
1420
+ }
1421
+ .blue-on-hover:hover svg,
1422
+ .blue-on-hover:hover svg path {
1423
+ fill: var(--learnpack-blue);
1424
+ }
1425
+ .border-learnpack-blue {
1426
+ border-color: var(--learnpack-blue);
1427
+ }
1428
+ .red-ball {
1429
+ background-color: #eb5757;
1430
+ border: 2px solid #fff;
1431
+ border-radius: 50%;
1432
+ width: 16px;
1433
+ height: 16px;
1434
+ position: absolute;
1435
+ top: -10px;
1436
+ left: 10px;
1437
+ }
1438
+ .fluid-svg > svg {
1439
+ width: 100%;
1440
+ height: 100%;
1441
+ }
1442
+ .outline-blue:focus {
1443
+ outline: 1px solid #51b3e5;
1444
+ }
1445
+ .border-C8DBFC {
1446
+ border-color: #c8dbfc;
1447
+ }
1448
+ .markdown-renderer ul {
1449
+ padding-left: 0;
1450
+ list-style-type: disc;
1451
+ list-style-position: inside;
1452
+ }
1453
+ .markdown-renderer ol {
1454
+ padding-left: 0;
1455
+ list-style-type: decimal;
1456
+ list-style-position: inside;
1457
+ }
1458
+ .appear {
1459
+ transform-origin: top;
1460
+ opacity: 0;
1461
+ animation: 0.5s ease-in-out forwards appear;
1462
+ transform: scaleY(0) translateY(20px);
1463
+ }
1464
+ @keyframes appear {
1465
+ 0% {
1466
+ opacity: 0;
1467
+ transform: scaleY(0) translateY(20px);
1468
+ }
1469
+ to {
1470
+ opacity: 1;
1471
+ transform: scaleY(1) translateY(0);
1472
+ }
1473
+ }
1474
+ .bg-heavy-blue {
1475
+ background-color: #9fbdf0;
1476
+ }
1477
+ .border-heavy-blue {
1478
+ border-color: #9fbdf0;
1479
+ }
1480
+ .border-heavy-blue:focus {
1481
+ outline: 1px solid #9fbdf0;
1482
+ }
1483
+ .cloudy {
1484
+ opacity: 0;
1485
+ transition: opacity 0.5s ease-in-out;
1486
+ animation: 0.5s ease-in-out forwards fadeIn;
1487
+ }
1488
+ @keyframes fadeIn {
1489
+ 0% {
1490
+ opacity: 0;
1491
+ transform: translateY(20px);
1492
+ }
1493
+ to {
1494
+ opacity: 1;
1495
+ transform: translateY(0);
1496
+ }
1497
+ }
1498
+ .yellow-ball {
1499
+ background-color: #08f700;
1500
+ border-radius: 50%;
1501
+ width: 16px;
1502
+ height: 16px;
1503
+ position: absolute;
1504
+ top: -10px;
1505
+ left: 10px;
1506
+ }
1507
+ @property --tw-translate-x {
1508
+ syntax: "*";
1509
+ inherits: false;
1510
+ initial-value: 0;
1511
+ }
1512
+ @property --tw-translate-y {
1513
+ syntax: "*";
1514
+ inherits: false;
1515
+ initial-value: 0;
1516
+ }
1517
+ @property --tw-translate-z {
1518
+ syntax: "*";
1519
+ inherits: false;
1520
+ initial-value: 0;
1521
+ }
1522
+ @property --tw-rotate-x {
1523
+ syntax: "*";
1524
+ inherits: false;
1525
+ initial-value: rotateX(0);
1526
+ }
1527
+ @property --tw-rotate-y {
1528
+ syntax: "*";
1529
+ inherits: false;
1530
+ initial-value: rotateY(0);
1531
+ }
1532
+ @property --tw-rotate-z {
1533
+ syntax: "*";
1534
+ inherits: false;
1535
+ initial-value: rotateZ(0);
1536
+ }
1537
+ @property --tw-skew-x {
1538
+ syntax: "*";
1539
+ inherits: false;
1540
+ initial-value: skewX(0);
1541
+ }
1542
+ @property --tw-skew-y {
1543
+ syntax: "*";
1544
+ inherits: false;
1545
+ initial-value: skewY(0);
1546
+ }
1547
+ @property --tw-space-y-reverse {
1548
+ syntax: "*";
1549
+ inherits: false;
1550
+ initial-value: 0;
1551
+ }
1552
+ @property --tw-space-x-reverse {
1553
+ syntax: "*";
1554
+ inherits: false;
1555
+ initial-value: 0;
1556
+ }
1557
+ @property --tw-border-style {
1558
+ syntax: "*";
1559
+ inherits: false;
1560
+ initial-value: solid;
1561
+ }
1562
+ @property --tw-gradient-position {
1563
+ syntax: "*";
1564
+ inherits: false;
1565
+ }
1566
+ @property --tw-gradient-from {
1567
+ syntax: "<color>";
1568
+ inherits: false;
1569
+ initial-value: #0000;
1570
+ }
1571
+ @property --tw-gradient-via {
1572
+ syntax: "<color>";
1573
+ inherits: false;
1574
+ initial-value: #0000;
1575
+ }
1576
+ @property --tw-gradient-to {
1577
+ syntax: "<color>";
1578
+ inherits: false;
1579
+ initial-value: #0000;
1580
+ }
1581
+ @property --tw-gradient-stops {
1582
+ syntax: "*";
1583
+ inherits: false;
1584
+ }
1585
+ @property --tw-gradient-via-stops {
1586
+ syntax: "*";
1587
+ inherits: false;
1588
+ }
1589
+ @property --tw-gradient-from-position {
1590
+ syntax: "<length-percentage>";
1591
+ inherits: false;
1592
+ initial-value: 0%;
1593
+ }
1594
+ @property --tw-gradient-via-position {
1595
+ syntax: "<length-percentage>";
1596
+ inherits: false;
1597
+ initial-value: 50%;
1598
+ }
1599
+ @property --tw-gradient-to-position {
1600
+ syntax: "<length-percentage>";
1601
+ inherits: false;
1602
+ initial-value: 100%;
1603
+ }
1604
+ @property --tw-leading {
1605
+ syntax: "*";
1606
+ inherits: false;
1607
+ }
1608
+ @property --tw-font-weight {
1609
+ syntax: "*";
1610
+ inherits: false;
1611
+ }
1612
+ @property --tw-shadow {
1613
+ syntax: "*";
1614
+ inherits: false;
1615
+ initial-value: 0 0 #0000;
1616
+ }
1617
+ @property --tw-shadow-color {
1618
+ syntax: "*";
1619
+ inherits: false;
1620
+ }
1621
+ @property --tw-shadow-alpha {
1622
+ syntax: "<percentage>";
1623
+ inherits: false;
1624
+ initial-value: 100%;
1625
+ }
1626
+ @property --tw-inset-shadow {
1627
+ syntax: "*";
1628
+ inherits: false;
1629
+ initial-value: 0 0 #0000;
1630
+ }
1631
+ @property --tw-inset-shadow-color {
1632
+ syntax: "*";
1633
+ inherits: false;
1634
+ }
1635
+ @property --tw-inset-shadow-alpha {
1636
+ syntax: "<percentage>";
1637
+ inherits: false;
1638
+ initial-value: 100%;
1639
+ }
1640
+ @property --tw-ring-color {
1641
+ syntax: "*";
1642
+ inherits: false;
1643
+ }
1644
+ @property --tw-ring-shadow {
1645
+ syntax: "*";
1646
+ inherits: false;
1647
+ initial-value: 0 0 #0000;
1648
+ }
1649
+ @property --tw-inset-ring-color {
1650
+ syntax: "*";
1651
+ inherits: false;
1652
+ }
1653
+ @property --tw-inset-ring-shadow {
1654
+ syntax: "*";
1655
+ inherits: false;
1656
+ initial-value: 0 0 #0000;
1657
+ }
1658
+ @property --tw-ring-inset {
1659
+ syntax: "*";
1660
+ inherits: false;
1661
+ }
1662
+ @property --tw-ring-offset-width {
1663
+ syntax: "<length>";
1664
+ inherits: false;
1665
+ initial-value: 0;
1666
+ }
1667
+ @property --tw-ring-offset-color {
1668
+ syntax: "*";
1669
+ inherits: false;
1670
+ initial-value: #fff;
1671
+ }
1672
+ @property --tw-ring-offset-shadow {
1673
+ syntax: "*";
1674
+ inherits: false;
1675
+ initial-value: 0 0 #0000;
1676
+ }
1677
+ @property --tw-outline-style {
1678
+ syntax: "*";
1679
+ inherits: false;
1680
+ initial-value: solid;
1681
+ }
1682
+ @property --tw-duration {
1683
+ syntax: "*";
1684
+ inherits: false;
1685
+ }
1686
+ @property --tw-ease {
1687
+ syntax: "*";
1688
+ inherits: false;
1689
+ }
1690
+ @keyframes ping {
1691
+ 75%,
1692
+ to {
1693
+ opacity: 0;
1694
+ transform: scale(2);
1695
+ }
1696
+ }
1697
+ @keyframes pulse {
1698
+ 50% {
1699
+ opacity: 0.5;
1700
+ }
1701
+ }