tina4ruby 0.4.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 (74) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +80 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +768 -0
  5. data/exe/tina4 +4 -0
  6. data/lib/tina4/api.rb +152 -0
  7. data/lib/tina4/auth.rb +139 -0
  8. data/lib/tina4/cli.rb +349 -0
  9. data/lib/tina4/crud.rb +124 -0
  10. data/lib/tina4/database.rb +135 -0
  11. data/lib/tina4/database_result.rb +89 -0
  12. data/lib/tina4/debug.rb +83 -0
  13. data/lib/tina4/dev.rb +15 -0
  14. data/lib/tina4/dev_reload.rb +68 -0
  15. data/lib/tina4/drivers/firebird_driver.rb +94 -0
  16. data/lib/tina4/drivers/mssql_driver.rb +112 -0
  17. data/lib/tina4/drivers/mysql_driver.rb +90 -0
  18. data/lib/tina4/drivers/postgres_driver.rb +99 -0
  19. data/lib/tina4/drivers/sqlite_driver.rb +85 -0
  20. data/lib/tina4/env.rb +55 -0
  21. data/lib/tina4/field_types.rb +84 -0
  22. data/lib/tina4/graphql.rb +837 -0
  23. data/lib/tina4/localization.rb +100 -0
  24. data/lib/tina4/middleware.rb +59 -0
  25. data/lib/tina4/migration.rb +124 -0
  26. data/lib/tina4/orm.rb +168 -0
  27. data/lib/tina4/public/css/tina4.css +2286 -0
  28. data/lib/tina4/public/css/tina4.min.css +2 -0
  29. data/lib/tina4/public/js/tina4.js +134 -0
  30. data/lib/tina4/public/js/tina4helper.js +387 -0
  31. data/lib/tina4/queue.rb +117 -0
  32. data/lib/tina4/queue_backends/kafka_backend.rb +80 -0
  33. data/lib/tina4/queue_backends/lite_backend.rb +79 -0
  34. data/lib/tina4/queue_backends/rabbitmq_backend.rb +73 -0
  35. data/lib/tina4/rack_app.rb +150 -0
  36. data/lib/tina4/request.rb +158 -0
  37. data/lib/tina4/response.rb +172 -0
  38. data/lib/tina4/router.rb +148 -0
  39. data/lib/tina4/scss/tina4css/_alerts.scss +34 -0
  40. data/lib/tina4/scss/tina4css/_badges.scss +22 -0
  41. data/lib/tina4/scss/tina4css/_buttons.scss +69 -0
  42. data/lib/tina4/scss/tina4css/_cards.scss +49 -0
  43. data/lib/tina4/scss/tina4css/_forms.scss +156 -0
  44. data/lib/tina4/scss/tina4css/_grid.scss +81 -0
  45. data/lib/tina4/scss/tina4css/_modals.scss +84 -0
  46. data/lib/tina4/scss/tina4css/_nav.scss +149 -0
  47. data/lib/tina4/scss/tina4css/_reset.scss +94 -0
  48. data/lib/tina4/scss/tina4css/_tables.scss +54 -0
  49. data/lib/tina4/scss/tina4css/_typography.scss +55 -0
  50. data/lib/tina4/scss/tina4css/_utilities.scss +197 -0
  51. data/lib/tina4/scss/tina4css/_variables.scss +117 -0
  52. data/lib/tina4/scss/tina4css/base.scss +1 -0
  53. data/lib/tina4/scss/tina4css/colors.scss +48 -0
  54. data/lib/tina4/scss/tina4css/tina4.scss +17 -0
  55. data/lib/tina4/scss_compiler.rb +131 -0
  56. data/lib/tina4/seeder.rb +529 -0
  57. data/lib/tina4/session.rb +145 -0
  58. data/lib/tina4/session_handlers/file_handler.rb +55 -0
  59. data/lib/tina4/session_handlers/mongo_handler.rb +49 -0
  60. data/lib/tina4/session_handlers/redis_handler.rb +43 -0
  61. data/lib/tina4/swagger.rb +123 -0
  62. data/lib/tina4/template.rb +478 -0
  63. data/lib/tina4/templates/base.twig +26 -0
  64. data/lib/tina4/templates/errors/403.twig +22 -0
  65. data/lib/tina4/templates/errors/404.twig +22 -0
  66. data/lib/tina4/templates/errors/500.twig +22 -0
  67. data/lib/tina4/testing.rb +213 -0
  68. data/lib/tina4/version.rb +5 -0
  69. data/lib/tina4/webserver.rb +101 -0
  70. data/lib/tina4/websocket.rb +167 -0
  71. data/lib/tina4/wsdl.rb +164 -0
  72. data/lib/tina4.rb +259 -0
  73. data/lib/tina4ruby.rb +4 -0
  74. metadata +324 -0
@@ -0,0 +1,2286 @@
1
+ /* Tina4 CSS Framework v2.0.0 | MIT License | https://github.com/tina4stack/tina4-css */
2
+ *,
3
+ *::before,
4
+ *::after {
5
+ box-sizing: border-box;
6
+ }
7
+
8
+ html {
9
+ line-height: 1.5;
10
+ -webkit-text-size-adjust: 100%;
11
+ -moz-tab-size: 4;
12
+ tab-size: 4;
13
+ scroll-behavior: smooth;
14
+ }
15
+
16
+ body {
17
+ margin: 0;
18
+ font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
19
+ font-size: 1rem;
20
+ font-weight: 400;
21
+ line-height: 1.5;
22
+ color: #212529;
23
+ background-color: #fff;
24
+ -webkit-font-smoothing: antialiased;
25
+ -moz-osx-font-smoothing: grayscale;
26
+ }
27
+
28
+ h1, h2, h3, h4, h5, h6 {
29
+ margin-top: 0;
30
+ margin-bottom: 0.5rem;
31
+ font-weight: 500;
32
+ line-height: 1.25;
33
+ }
34
+
35
+ p {
36
+ margin-top: 0;
37
+ margin-bottom: 1rem;
38
+ }
39
+
40
+ ol, ul {
41
+ padding-left: 2rem;
42
+ margin-top: 0;
43
+ margin-bottom: 1rem;
44
+ }
45
+
46
+ a {
47
+ color: #4a90d9;
48
+ text-decoration: none;
49
+ }
50
+
51
+ a:hover {
52
+ color: #256ab1;
53
+ text-decoration: underline;
54
+ }
55
+
56
+ img, svg {
57
+ max-width: 100%;
58
+ height: auto;
59
+ vertical-align: middle;
60
+ }
61
+
62
+ table {
63
+ border-collapse: collapse;
64
+ caption-side: bottom;
65
+ }
66
+
67
+ button, input, optgroup, select, textarea {
68
+ margin: 0;
69
+ font-family: inherit;
70
+ font-size: inherit;
71
+ line-height: inherit;
72
+ }
73
+
74
+ button, select {
75
+ text-transform: none;
76
+ }
77
+
78
+ button, [type="button"], [type="reset"], [type="submit"] {
79
+ -webkit-appearance: button;
80
+ cursor: pointer;
81
+ }
82
+
83
+ hr {
84
+ margin: 1rem 0;
85
+ color: inherit;
86
+ border: 0;
87
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
88
+ opacity: 0.25;
89
+ }
90
+
91
+ pre, code, kbd, samp {
92
+ font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
93
+ font-size: 1em;
94
+ }
95
+
96
+ pre {
97
+ margin-top: 0;
98
+ margin-bottom: 1rem;
99
+ overflow: auto;
100
+ }
101
+
102
+ [hidden] {
103
+ display: none !important;
104
+ }
105
+
106
+ h1 {
107
+ font-size: 2.25rem;
108
+ }
109
+
110
+ h2 {
111
+ font-size: 1.875rem;
112
+ }
113
+
114
+ h3 {
115
+ font-size: 1.5rem;
116
+ }
117
+
118
+ h4 {
119
+ font-size: 1.25rem;
120
+ }
121
+
122
+ h5 {
123
+ font-size: 1.125rem;
124
+ }
125
+
126
+ h6 {
127
+ font-size: 1rem;
128
+ }
129
+
130
+ small, .small {
131
+ font-size: 0.875em;
132
+ }
133
+
134
+ mark, .mark {
135
+ padding: 0.2em;
136
+ background-color: rgba(255, 193, 7, 0.3);
137
+ }
138
+
139
+ blockquote {
140
+ margin: 0 0 1rem;
141
+ padding: 0.5rem 1rem;
142
+ border-left: 0.25rem solid rgba(0, 0, 0, 0.1);
143
+ font-size: 1.125rem;
144
+ }
145
+
146
+ code {
147
+ font-size: 0.875em;
148
+ color: #dc3545;
149
+ word-wrap: break-word;
150
+ }
151
+
152
+ pre {
153
+ display: block;
154
+ padding: 1rem;
155
+ font-size: 0.875em;
156
+ color: #212529;
157
+ background-color: #f8f9fa;
158
+ border-radius: 0.25rem;
159
+ }
160
+
161
+ .list-unstyled {
162
+ padding-left: 0;
163
+ list-style: none;
164
+ }
165
+
166
+ .list-inline {
167
+ padding-left: 0;
168
+ list-style: none;
169
+ }
170
+
171
+ .list-inline-item {
172
+ display: inline-block;
173
+ }
174
+
175
+ .list-inline-item:not(:last-child) {
176
+ margin-right: 0.5rem;
177
+ }
178
+
179
+ .container,
180
+ .container-fluid {
181
+ width: 100%;
182
+ padding-right: calc($grid-gutter / 2);
183
+ padding-left: calc($grid-gutter / 2);
184
+ margin-right: auto;
185
+ margin-left: auto;
186
+ }
187
+
188
+ @media (min-width: 576px) {
189
+ .container {
190
+ max-width: 540px;
191
+ }
192
+ }
193
+
194
+ @media (min-width: 768px) {
195
+ .container {
196
+ max-width: 720px;
197
+ }
198
+ }
199
+
200
+ @media (min-width: 992px) {
201
+ .container {
202
+ max-width: 960px;
203
+ }
204
+ }
205
+
206
+ @media (min-width: 1200px) {
207
+ .container {
208
+ max-width: 1140px;
209
+ }
210
+ }
211
+
212
+ @media (min-width: 1400px) {
213
+ .container {
214
+ max-width: 1320px;
215
+ }
216
+ }
217
+
218
+ .row {
219
+ display: flex;
220
+ flex-wrap: wrap;
221
+ margin-right: calc($grid-gutter / -2);
222
+ margin-left: calc($grid-gutter / -2);
223
+ }
224
+
225
+ .row > * {
226
+ flex-shrink: 0;
227
+ width: 100%;
228
+ max-width: 100%;
229
+ padding-right: calc($grid-gutter / 2);
230
+ padding-left: calc($grid-gutter / 2);
231
+ }
232
+
233
+ .col {
234
+ flex: 1 0 0%;
235
+ }
236
+
237
+ .col-1 {
238
+ flex: 0 0 auto;
239
+ width: 8.33333%;
240
+ }
241
+
242
+ .col-2 {
243
+ flex: 0 0 auto;
244
+ width: 16.66667%;
245
+ }
246
+
247
+ .col-3 {
248
+ flex: 0 0 auto;
249
+ width: 25%;
250
+ }
251
+
252
+ .col-4 {
253
+ flex: 0 0 auto;
254
+ width: 33.33333%;
255
+ }
256
+
257
+ .col-5 {
258
+ flex: 0 0 auto;
259
+ width: 41.66667%;
260
+ }
261
+
262
+ .col-6 {
263
+ flex: 0 0 auto;
264
+ width: 50%;
265
+ }
266
+
267
+ .col-7 {
268
+ flex: 0 0 auto;
269
+ width: 58.33333%;
270
+ }
271
+
272
+ .col-8 {
273
+ flex: 0 0 auto;
274
+ width: 66.66667%;
275
+ }
276
+
277
+ .col-9 {
278
+ flex: 0 0 auto;
279
+ width: 75%;
280
+ }
281
+
282
+ .col-10 {
283
+ flex: 0 0 auto;
284
+ width: 83.33333%;
285
+ }
286
+
287
+ .col-11 {
288
+ flex: 0 0 auto;
289
+ width: 91.66667%;
290
+ }
291
+
292
+ .col-12 {
293
+ flex: 0 0 auto;
294
+ width: 100%;
295
+ }
296
+
297
+ .offset-1 {
298
+ margin-left: 8.33333%;
299
+ }
300
+
301
+ .offset-2 {
302
+ margin-left: 16.66667%;
303
+ }
304
+
305
+ .offset-3 {
306
+ margin-left: 25%;
307
+ }
308
+
309
+ .offset-4 {
310
+ margin-left: 33.33333%;
311
+ }
312
+
313
+ .offset-0 {
314
+ margin-left: 0;
315
+ }
316
+
317
+ @media (min-width: 576px) {
318
+ .col-sm {
319
+ flex: 1 0 0%;
320
+ }
321
+ .col-sm-1 {
322
+ flex: 0 0 auto;
323
+ width: 8.33333%;
324
+ }
325
+ .col-sm-2 {
326
+ flex: 0 0 auto;
327
+ width: 16.66667%;
328
+ }
329
+ .col-sm-3 {
330
+ flex: 0 0 auto;
331
+ width: 25%;
332
+ }
333
+ .col-sm-4 {
334
+ flex: 0 0 auto;
335
+ width: 33.33333%;
336
+ }
337
+ .col-sm-5 {
338
+ flex: 0 0 auto;
339
+ width: 41.66667%;
340
+ }
341
+ .col-sm-6 {
342
+ flex: 0 0 auto;
343
+ width: 50%;
344
+ }
345
+ .col-sm-7 {
346
+ flex: 0 0 auto;
347
+ width: 58.33333%;
348
+ }
349
+ .col-sm-8 {
350
+ flex: 0 0 auto;
351
+ width: 66.66667%;
352
+ }
353
+ .col-sm-9 {
354
+ flex: 0 0 auto;
355
+ width: 75%;
356
+ }
357
+ .col-sm-10 {
358
+ flex: 0 0 auto;
359
+ width: 83.33333%;
360
+ }
361
+ .col-sm-11 {
362
+ flex: 0 0 auto;
363
+ width: 91.66667%;
364
+ }
365
+ .col-sm-12 {
366
+ flex: 0 0 auto;
367
+ width: 100%;
368
+ }
369
+ .offset-sm-0 {
370
+ margin-left: 0;
371
+ }
372
+ }
373
+
374
+ @media (min-width: 768px) {
375
+ .col-md {
376
+ flex: 1 0 0%;
377
+ }
378
+ .col-md-1 {
379
+ flex: 0 0 auto;
380
+ width: 8.33333%;
381
+ }
382
+ .col-md-2 {
383
+ flex: 0 0 auto;
384
+ width: 16.66667%;
385
+ }
386
+ .col-md-3 {
387
+ flex: 0 0 auto;
388
+ width: 25%;
389
+ }
390
+ .col-md-4 {
391
+ flex: 0 0 auto;
392
+ width: 33.33333%;
393
+ }
394
+ .col-md-5 {
395
+ flex: 0 0 auto;
396
+ width: 41.66667%;
397
+ }
398
+ .col-md-6 {
399
+ flex: 0 0 auto;
400
+ width: 50%;
401
+ }
402
+ .col-md-7 {
403
+ flex: 0 0 auto;
404
+ width: 58.33333%;
405
+ }
406
+ .col-md-8 {
407
+ flex: 0 0 auto;
408
+ width: 66.66667%;
409
+ }
410
+ .col-md-9 {
411
+ flex: 0 0 auto;
412
+ width: 75%;
413
+ }
414
+ .col-md-10 {
415
+ flex: 0 0 auto;
416
+ width: 83.33333%;
417
+ }
418
+ .col-md-11 {
419
+ flex: 0 0 auto;
420
+ width: 91.66667%;
421
+ }
422
+ .col-md-12 {
423
+ flex: 0 0 auto;
424
+ width: 100%;
425
+ }
426
+ .offset-md-0 {
427
+ margin-left: 0;
428
+ }
429
+ }
430
+
431
+ @media (min-width: 992px) {
432
+ .col-lg {
433
+ flex: 1 0 0%;
434
+ }
435
+ .col-lg-1 {
436
+ flex: 0 0 auto;
437
+ width: 8.33333%;
438
+ }
439
+ .col-lg-2 {
440
+ flex: 0 0 auto;
441
+ width: 16.66667%;
442
+ }
443
+ .col-lg-3 {
444
+ flex: 0 0 auto;
445
+ width: 25%;
446
+ }
447
+ .col-lg-4 {
448
+ flex: 0 0 auto;
449
+ width: 33.33333%;
450
+ }
451
+ .col-lg-5 {
452
+ flex: 0 0 auto;
453
+ width: 41.66667%;
454
+ }
455
+ .col-lg-6 {
456
+ flex: 0 0 auto;
457
+ width: 50%;
458
+ }
459
+ .col-lg-7 {
460
+ flex: 0 0 auto;
461
+ width: 58.33333%;
462
+ }
463
+ .col-lg-8 {
464
+ flex: 0 0 auto;
465
+ width: 66.66667%;
466
+ }
467
+ .col-lg-9 {
468
+ flex: 0 0 auto;
469
+ width: 75%;
470
+ }
471
+ .col-lg-10 {
472
+ flex: 0 0 auto;
473
+ width: 83.33333%;
474
+ }
475
+ .col-lg-11 {
476
+ flex: 0 0 auto;
477
+ width: 91.66667%;
478
+ }
479
+ .col-lg-12 {
480
+ flex: 0 0 auto;
481
+ width: 100%;
482
+ }
483
+ .offset-lg-0 {
484
+ margin-left: 0;
485
+ }
486
+ }
487
+
488
+ @media (min-width: 1200px) {
489
+ .col-xl {
490
+ flex: 1 0 0%;
491
+ }
492
+ .col-xl-1 {
493
+ flex: 0 0 auto;
494
+ width: 8.33333%;
495
+ }
496
+ .col-xl-2 {
497
+ flex: 0 0 auto;
498
+ width: 16.66667%;
499
+ }
500
+ .col-xl-3 {
501
+ flex: 0 0 auto;
502
+ width: 25%;
503
+ }
504
+ .col-xl-4 {
505
+ flex: 0 0 auto;
506
+ width: 33.33333%;
507
+ }
508
+ .col-xl-5 {
509
+ flex: 0 0 auto;
510
+ width: 41.66667%;
511
+ }
512
+ .col-xl-6 {
513
+ flex: 0 0 auto;
514
+ width: 50%;
515
+ }
516
+ .col-xl-7 {
517
+ flex: 0 0 auto;
518
+ width: 58.33333%;
519
+ }
520
+ .col-xl-8 {
521
+ flex: 0 0 auto;
522
+ width: 66.66667%;
523
+ }
524
+ .col-xl-9 {
525
+ flex: 0 0 auto;
526
+ width: 75%;
527
+ }
528
+ .col-xl-10 {
529
+ flex: 0 0 auto;
530
+ width: 83.33333%;
531
+ }
532
+ .col-xl-11 {
533
+ flex: 0 0 auto;
534
+ width: 91.66667%;
535
+ }
536
+ .col-xl-12 {
537
+ flex: 0 0 auto;
538
+ width: 100%;
539
+ }
540
+ .offset-xl-0 {
541
+ margin-left: 0;
542
+ }
543
+ }
544
+
545
+ .justify-start {
546
+ justify-content: flex-start;
547
+ }
548
+
549
+ .justify-center {
550
+ justify-content: center;
551
+ }
552
+
553
+ .justify-end {
554
+ justify-content: flex-end;
555
+ }
556
+
557
+ .justify-between {
558
+ justify-content: space-between;
559
+ }
560
+
561
+ .justify-around {
562
+ justify-content: space-around;
563
+ }
564
+
565
+ .align-start {
566
+ align-items: flex-start;
567
+ }
568
+
569
+ .align-center {
570
+ align-items: center;
571
+ }
572
+
573
+ .align-end {
574
+ align-items: flex-end;
575
+ }
576
+
577
+ .btn {
578
+ display: inline-block;
579
+ font-weight: 400;
580
+ line-height: 1.5;
581
+ color: #212529;
582
+ text-align: center;
583
+ vertical-align: middle;
584
+ cursor: pointer;
585
+ user-select: none;
586
+ background-color: transparent;
587
+ border: 1px solid transparent;
588
+ padding: 0.375rem 0.75rem;
589
+ font-size: 1rem;
590
+ border-radius: 0.25rem;
591
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
592
+ text-decoration: none;
593
+ }
594
+
595
+ .btn:disabled, .btn.disabled {
596
+ pointer-events: none;
597
+ opacity: 0.65;
598
+ }
599
+
600
+ .btn-primary {
601
+ color: #fff;
602
+ background-color: #4a90d9;
603
+ border-color: #4a90d9;
604
+ }
605
+
606
+ .btn-primary:hover {
607
+ background-color: #2b7bcf;
608
+ border-color: #2a76c6;
609
+ }
610
+
611
+ .btn-secondary {
612
+ color: #fff;
613
+ background-color: #6c757d;
614
+ border-color: #6c757d;
615
+ }
616
+
617
+ .btn-secondary:hover {
618
+ background-color: #596167;
619
+ border-color: #545b62;
620
+ }
621
+
622
+ .btn-success {
623
+ color: #fff;
624
+ background-color: #28a745;
625
+ border-color: #28a745;
626
+ }
627
+
628
+ .btn-success:hover {
629
+ background-color: #208637;
630
+ border-color: #1e7e34;
631
+ }
632
+
633
+ .btn-danger {
634
+ color: #fff;
635
+ background-color: #dc3545;
636
+ border-color: #dc3545;
637
+ }
638
+
639
+ .btn-danger:hover {
640
+ background-color: #c62232;
641
+ border-color: #bd2130;
642
+ }
643
+
644
+ .btn-warning {
645
+ color: #212529;
646
+ background-color: #ffc107;
647
+ border-color: #ffc107;
648
+ }
649
+
650
+ .btn-warning:hover {
651
+ background-color: #dda600;
652
+ border-color: #d39e00;
653
+ }
654
+
655
+ .btn-info {
656
+ color: #fff;
657
+ background-color: #17a2b8;
658
+ border-color: #17a2b8;
659
+ }
660
+
661
+ .btn-info:hover {
662
+ background-color: #128294;
663
+ border-color: #117a8b;
664
+ }
665
+
666
+ .btn-light {
667
+ color: #212529;
668
+ background-color: #f8f9fa;
669
+ border-color: #f8f9fa;
670
+ }
671
+
672
+ .btn-light:hover {
673
+ background-color: #e0e5e9;
674
+ border-color: #dae0e5;
675
+ }
676
+
677
+ .btn-dark {
678
+ color: #fff;
679
+ background-color: #212529;
680
+ border-color: #212529;
681
+ }
682
+
683
+ .btn-dark:hover {
684
+ background-color: #0f1112;
685
+ border-color: #0a0c0d;
686
+ }
687
+
688
+ .btn-outline-primary {
689
+ color: #4a90d9;
690
+ border-color: #4a90d9;
691
+ background-color: transparent;
692
+ }
693
+
694
+ .btn-outline-primary:hover {
695
+ color: #fff;
696
+ background-color: #4a90d9;
697
+ }
698
+
699
+ .btn-outline-secondary {
700
+ color: #6c757d;
701
+ border-color: #6c757d;
702
+ background-color: transparent;
703
+ }
704
+
705
+ .btn-outline-secondary:hover {
706
+ color: #fff;
707
+ background-color: #6c757d;
708
+ }
709
+
710
+ .btn-outline-success {
711
+ color: #28a745;
712
+ border-color: #28a745;
713
+ background-color: transparent;
714
+ }
715
+
716
+ .btn-outline-success:hover {
717
+ color: #fff;
718
+ background-color: #28a745;
719
+ }
720
+
721
+ .btn-outline-danger {
722
+ color: #dc3545;
723
+ border-color: #dc3545;
724
+ background-color: transparent;
725
+ }
726
+
727
+ .btn-outline-danger:hover {
728
+ color: #fff;
729
+ background-color: #dc3545;
730
+ }
731
+
732
+ .btn-outline-warning {
733
+ color: #ffc107;
734
+ border-color: #ffc107;
735
+ background-color: transparent;
736
+ }
737
+
738
+ .btn-outline-warning:hover {
739
+ color: #212529;
740
+ background-color: #ffc107;
741
+ }
742
+
743
+ .btn-outline-info {
744
+ color: #17a2b8;
745
+ border-color: #17a2b8;
746
+ background-color: transparent;
747
+ }
748
+
749
+ .btn-outline-info:hover {
750
+ color: #fff;
751
+ background-color: #17a2b8;
752
+ }
753
+
754
+ .btn-outline-light {
755
+ color: #f8f9fa;
756
+ border-color: #f8f9fa;
757
+ background-color: transparent;
758
+ }
759
+
760
+ .btn-outline-light:hover {
761
+ color: #212529;
762
+ background-color: #f8f9fa;
763
+ }
764
+
765
+ .btn-outline-dark {
766
+ color: #212529;
767
+ border-color: #212529;
768
+ background-color: transparent;
769
+ }
770
+
771
+ .btn-outline-dark:hover {
772
+ color: #fff;
773
+ background-color: #212529;
774
+ }
775
+
776
+ .btn-sm {
777
+ padding: 0.25rem 0.5rem;
778
+ font-size: 0.875rem;
779
+ border-radius: 0.25rem;
780
+ }
781
+
782
+ .btn-lg {
783
+ padding: 0.5rem 1rem;
784
+ font-size: 1.125rem;
785
+ border-radius: 0.5rem;
786
+ }
787
+
788
+ .btn-block {
789
+ display: block;
790
+ width: 100%;
791
+ }
792
+
793
+ .form-group {
794
+ margin-bottom: 1rem;
795
+ }
796
+
797
+ .form-label {
798
+ display: inline-block;
799
+ margin-bottom: 0.5rem;
800
+ font-weight: 700;
801
+ }
802
+
803
+ .form-control {
804
+ display: block;
805
+ width: 100%;
806
+ padding: 0.375rem 0.75rem;
807
+ font-size: 1rem;
808
+ font-weight: 400;
809
+ line-height: 1.5;
810
+ color: #212529;
811
+ background-color: #fff;
812
+ background-clip: padding-box;
813
+ border: 1px solid #ced4da;
814
+ border-radius: 0.25rem;
815
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
816
+ appearance: none;
817
+ }
818
+
819
+ .form-control:focus {
820
+ color: #212529;
821
+ background-color: #fff;
822
+ border-color: #b3d1ef;
823
+ outline: 0;
824
+ box-shadow: 0 0 0 0.2rem rgba(74, 144, 217, 0.25);
825
+ }
826
+
827
+ .form-control::placeholder {
828
+ color: #6c757d;
829
+ opacity: 1;
830
+ }
831
+
832
+ .form-control:disabled {
833
+ background-color: #f8f9fa;
834
+ opacity: 1;
835
+ }
836
+
837
+ textarea.form-control {
838
+ min-height: calc(1.5em + 0.75rem + 2px);
839
+ }
840
+
841
+ .form-select {
842
+ display: block;
843
+ width: 100%;
844
+ padding: 0.375rem 2.25rem 0.375rem 0.75rem;
845
+ font-size: 1rem;
846
+ font-weight: 400;
847
+ line-height: 1.5;
848
+ color: #212529;
849
+ background-color: #fff;
850
+ border: 1px solid #ced4da;
851
+ border-radius: 0.25rem;
852
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
853
+ appearance: none;
854
+ }
855
+
856
+ .form-select:focus {
857
+ border-color: #b3d1ef;
858
+ outline: 0;
859
+ box-shadow: 0 0 0 0.2rem rgba(74, 144, 217, 0.25);
860
+ }
861
+
862
+ .form-check {
863
+ display: block;
864
+ min-height: 1.5rem;
865
+ padding-left: 1.5em;
866
+ margin-bottom: 0.125rem;
867
+ }
868
+
869
+ .form-check-input {
870
+ float: left;
871
+ width: 1em;
872
+ height: 1em;
873
+ margin-left: -1.5em;
874
+ margin-top: 0.25em;
875
+ appearance: none;
876
+ background-color: #fff;
877
+ border: 1px solid rgba(0, 0, 0, 0.25);
878
+ }
879
+
880
+ .form-check-input[type="checkbox"] {
881
+ border-radius: 0.25em;
882
+ }
883
+
884
+ .form-check-input[type="radio"] {
885
+ border-radius: 50%;
886
+ }
887
+
888
+ .form-check-input:checked {
889
+ background-color: #4a90d9;
890
+ border-color: #4a90d9;
891
+ }
892
+
893
+ .form-check-input:focus {
894
+ border-color: #b3d1ef;
895
+ outline: 0;
896
+ box-shadow: 0 0 0 0.2rem rgba(74, 144, 217, 0.25);
897
+ }
898
+
899
+ .form-check-label {
900
+ cursor: pointer;
901
+ }
902
+
903
+ .is-valid {
904
+ border-color: #28a745 !important;
905
+ }
906
+
907
+ .is-valid:focus {
908
+ box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25) !important;
909
+ }
910
+
911
+ .is-invalid {
912
+ border-color: #dc3545 !important;
913
+ }
914
+
915
+ .is-invalid:focus {
916
+ box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25) !important;
917
+ }
918
+
919
+ .valid-feedback,
920
+ .invalid-feedback {
921
+ display: none;
922
+ width: 100%;
923
+ margin-top: 0.25rem;
924
+ font-size: 0.875em;
925
+ }
926
+
927
+ .valid-feedback {
928
+ color: #28a745;
929
+ }
930
+
931
+ .invalid-feedback {
932
+ color: #dc3545;
933
+ }
934
+
935
+ .is-valid ~ .valid-feedback,
936
+ .is-invalid ~ .invalid-feedback {
937
+ display: block;
938
+ }
939
+
940
+ .input-group {
941
+ position: relative;
942
+ display: flex;
943
+ flex-wrap: wrap;
944
+ align-items: stretch;
945
+ width: 100%;
946
+ }
947
+
948
+ .input-group > .form-control,
949
+ .input-group > .form-select {
950
+ position: relative;
951
+ flex: 1 1 auto;
952
+ width: 1%;
953
+ min-width: 0;
954
+ }
955
+
956
+ .input-group-text {
957
+ display: flex;
958
+ align-items: center;
959
+ padding: 0.375rem 0.75rem;
960
+ font-size: 1rem;
961
+ line-height: 1.5;
962
+ color: #212529;
963
+ text-align: center;
964
+ white-space: nowrap;
965
+ background-color: #f8f9fa;
966
+ border: 1px solid #ced4da;
967
+ border-radius: 0.25rem;
968
+ }
969
+
970
+ .card {
971
+ position: relative;
972
+ display: flex;
973
+ flex-direction: column;
974
+ min-width: 0;
975
+ word-wrap: break-word;
976
+ background-color: #fff;
977
+ background-clip: border-box;
978
+ border: 1px solid rgba(0, 0, 0, 0.125);
979
+ border-radius: 0.5rem;
980
+ }
981
+
982
+ .card-header {
983
+ padding: 0.75rem 1rem;
984
+ margin-bottom: 0;
985
+ background-color: rgba(0, 0, 0, 0.03);
986
+ border-bottom: 1px solid rgba(0, 0, 0, 0.125);
987
+ }
988
+
989
+ .card-header:first-child {
990
+ border-radius: calc($border-radius-lg - 1px) calc($border-radius-lg - 1px) 0 0;
991
+ }
992
+
993
+ .card-body {
994
+ flex: 1 1 auto;
995
+ padding: 1rem;
996
+ }
997
+
998
+ .card-footer {
999
+ padding: 0.75rem 1rem;
1000
+ background-color: rgba(0, 0, 0, 0.03);
1001
+ border-top: 1px solid rgba(0, 0, 0, 0.125);
1002
+ }
1003
+
1004
+ .card-footer:last-child {
1005
+ border-radius: 0 0 calc($border-radius-lg - 1px) calc($border-radius-lg - 1px);
1006
+ }
1007
+
1008
+ .card-title {
1009
+ margin-bottom: 0.5rem;
1010
+ font-weight: 700;
1011
+ }
1012
+
1013
+ .card-text:last-child {
1014
+ margin-bottom: 0;
1015
+ }
1016
+
1017
+ .card-img-top {
1018
+ width: 100%;
1019
+ border-top-left-radius: calc($border-radius-lg - 1px);
1020
+ border-top-right-radius: calc($border-radius-lg - 1px);
1021
+ }
1022
+
1023
+ .nav {
1024
+ display: flex;
1025
+ flex-wrap: wrap;
1026
+ padding-left: 0;
1027
+ margin-bottom: 0;
1028
+ list-style: none;
1029
+ }
1030
+
1031
+ .nav-link {
1032
+ display: block;
1033
+ padding: 0.5rem 1rem;
1034
+ color: #4a90d9;
1035
+ text-decoration: none;
1036
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out;
1037
+ }
1038
+
1039
+ .nav-link:hover, .nav-link:focus {
1040
+ color: #256ab1;
1041
+ }
1042
+
1043
+ .nav-link.disabled {
1044
+ color: #6c757d;
1045
+ pointer-events: none;
1046
+ cursor: default;
1047
+ }
1048
+
1049
+ .nav-link.active {
1050
+ color: #4a90d9;
1051
+ font-weight: 700;
1052
+ }
1053
+
1054
+ .navbar {
1055
+ position: relative;
1056
+ display: flex;
1057
+ flex-wrap: wrap;
1058
+ align-items: center;
1059
+ justify-content: space-between;
1060
+ padding: 0.5rem 1rem;
1061
+ }
1062
+
1063
+ .navbar-brand {
1064
+ padding-top: 0.3125rem;
1065
+ padding-bottom: 0.3125rem;
1066
+ margin-right: 1rem;
1067
+ font-size: 1.25rem;
1068
+ font-weight: 700;
1069
+ color: inherit;
1070
+ text-decoration: none;
1071
+ white-space: nowrap;
1072
+ }
1073
+
1074
+ .navbar-brand:hover {
1075
+ color: inherit;
1076
+ opacity: 0.8;
1077
+ }
1078
+
1079
+ .navbar-nav {
1080
+ display: flex;
1081
+ flex-direction: column;
1082
+ padding-left: 0;
1083
+ margin-bottom: 0;
1084
+ list-style: none;
1085
+ }
1086
+
1087
+ .navbar-nav .nav-link {
1088
+ padding-right: 0.5rem;
1089
+ padding-left: 0.5rem;
1090
+ }
1091
+
1092
+ .navbar-toggler {
1093
+ padding: 0.25rem 0.75rem;
1094
+ font-size: 1.125rem;
1095
+ line-height: 1;
1096
+ background-color: transparent;
1097
+ border: 1px solid rgba(0, 0, 0, 0.1);
1098
+ border-radius: 0.25rem;
1099
+ cursor: pointer;
1100
+ }
1101
+
1102
+ .navbar-toggler:focus {
1103
+ outline: 0;
1104
+ box-shadow: 0 0 0 0.2rem rgba(74, 144, 217, 0.25);
1105
+ }
1106
+
1107
+ .navbar-collapse {
1108
+ flex-basis: 100%;
1109
+ flex-grow: 1;
1110
+ align-items: center;
1111
+ display: none;
1112
+ }
1113
+
1114
+ .navbar-collapse.show {
1115
+ display: flex;
1116
+ }
1117
+
1118
+ @media (min-width: 576px) {
1119
+ .navbar-expand-sm .navbar-nav {
1120
+ flex-direction: row;
1121
+ }
1122
+ .navbar-expand-sm .navbar-collapse {
1123
+ display: flex;
1124
+ flex-basis: auto;
1125
+ }
1126
+ .navbar-expand-sm .navbar-toggler {
1127
+ display: none;
1128
+ }
1129
+ }
1130
+
1131
+ @media (min-width: 768px) {
1132
+ .navbar-expand-md .navbar-nav {
1133
+ flex-direction: row;
1134
+ }
1135
+ .navbar-expand-md .navbar-collapse {
1136
+ display: flex;
1137
+ flex-basis: auto;
1138
+ }
1139
+ .navbar-expand-md .navbar-toggler {
1140
+ display: none;
1141
+ }
1142
+ }
1143
+
1144
+ @media (min-width: 992px) {
1145
+ .navbar-expand-lg .navbar-nav {
1146
+ flex-direction: row;
1147
+ }
1148
+ .navbar-expand-lg .navbar-collapse {
1149
+ display: flex;
1150
+ flex-basis: auto;
1151
+ }
1152
+ .navbar-expand-lg .navbar-toggler {
1153
+ display: none;
1154
+ }
1155
+ }
1156
+
1157
+ @media (min-width: 1200px) {
1158
+ .navbar-expand-xl .navbar-nav {
1159
+ flex-direction: row;
1160
+ }
1161
+ .navbar-expand-xl .navbar-collapse {
1162
+ display: flex;
1163
+ flex-basis: auto;
1164
+ }
1165
+ .navbar-expand-xl .navbar-toggler {
1166
+ display: none;
1167
+ }
1168
+ }
1169
+
1170
+ @media (min-width: 1400px) {
1171
+ .navbar-expand-xxl .navbar-nav {
1172
+ flex-direction: row;
1173
+ }
1174
+ .navbar-expand-xxl .navbar-collapse {
1175
+ display: flex;
1176
+ flex-basis: auto;
1177
+ }
1178
+ .navbar-expand-xxl .navbar-toggler {
1179
+ display: none;
1180
+ }
1181
+ }
1182
+
1183
+ @media (min-width: 992px) {
1184
+ .navbar-nav {
1185
+ flex-direction: row;
1186
+ }
1187
+ .navbar-collapse {
1188
+ display: flex;
1189
+ flex-basis: auto;
1190
+ }
1191
+ .navbar-toggler {
1192
+ display: none;
1193
+ }
1194
+ }
1195
+
1196
+ .navbar-dark {
1197
+ color: #fff;
1198
+ background-color: #212529;
1199
+ }
1200
+
1201
+ .navbar-dark .navbar-brand {
1202
+ color: #fff;
1203
+ }
1204
+
1205
+ .navbar-dark .nav-link {
1206
+ color: rgba(255, 255, 255, 0.75);
1207
+ }
1208
+
1209
+ .navbar-dark .nav-link:hover, .navbar-dark .nav-link.active {
1210
+ color: #fff;
1211
+ }
1212
+
1213
+ .navbar-light {
1214
+ background-color: #f8f9fa;
1215
+ }
1216
+
1217
+ .navbar-light .nav-link {
1218
+ color: rgba(0, 0, 0, 0.55);
1219
+ }
1220
+
1221
+ .navbar-light .nav-link:hover, .navbar-light .nav-link.active {
1222
+ color: rgba(0, 0, 0, 0.9);
1223
+ }
1224
+
1225
+ .breadcrumb {
1226
+ display: flex;
1227
+ flex-wrap: wrap;
1228
+ padding: 0.5rem 1rem;
1229
+ margin-bottom: 1rem;
1230
+ list-style: none;
1231
+ background-color: #f8f9fa;
1232
+ border-radius: 0.25rem;
1233
+ }
1234
+
1235
+ .breadcrumb-item + .breadcrumb-item::before {
1236
+ display: inline-block;
1237
+ padding-right: 0.5rem;
1238
+ padding-left: 0.5rem;
1239
+ color: #6c757d;
1240
+ content: "/";
1241
+ }
1242
+
1243
+ .breadcrumb-item.active {
1244
+ color: #6c757d;
1245
+ }
1246
+
1247
+ .modal {
1248
+ position: fixed;
1249
+ top: 0;
1250
+ left: 0;
1251
+ z-index: 1050;
1252
+ display: none;
1253
+ width: 100%;
1254
+ height: 100%;
1255
+ overflow-x: hidden;
1256
+ overflow-y: auto;
1257
+ outline: 0;
1258
+ }
1259
+
1260
+ .modal.show {
1261
+ display: block;
1262
+ }
1263
+
1264
+ .modal-dialog {
1265
+ position: relative;
1266
+ width: auto;
1267
+ margin: 1.75rem auto;
1268
+ max-width: 500px;
1269
+ }
1270
+
1271
+ .modal-sm {
1272
+ max-width: 300px;
1273
+ }
1274
+
1275
+ .modal-lg {
1276
+ max-width: 800px;
1277
+ }
1278
+
1279
+ .modal-content {
1280
+ position: relative;
1281
+ display: flex;
1282
+ flex-direction: column;
1283
+ width: 100%;
1284
+ pointer-events: auto;
1285
+ background-color: #fff;
1286
+ background-clip: padding-box;
1287
+ border: 1px solid rgba(0, 0, 0, 0.2);
1288
+ border-radius: 0.5rem;
1289
+ box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
1290
+ outline: 0;
1291
+ }
1292
+
1293
+ .modal-header {
1294
+ display: flex;
1295
+ flex-shrink: 0;
1296
+ align-items: center;
1297
+ justify-content: space-between;
1298
+ padding: 1rem;
1299
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
1300
+ }
1301
+
1302
+ .modal-title {
1303
+ margin-bottom: 0;
1304
+ font-weight: 700;
1305
+ }
1306
+
1307
+ .modal-body {
1308
+ position: relative;
1309
+ flex: 1 1 auto;
1310
+ padding: 1rem;
1311
+ }
1312
+
1313
+ .modal-footer {
1314
+ display: flex;
1315
+ flex-shrink: 0;
1316
+ flex-wrap: wrap;
1317
+ align-items: center;
1318
+ justify-content: flex-end;
1319
+ padding: 0.75rem;
1320
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
1321
+ gap: 0.5rem;
1322
+ }
1323
+
1324
+ .modal-backdrop {
1325
+ position: fixed;
1326
+ top: 0;
1327
+ left: 0;
1328
+ z-index: 1040;
1329
+ width: 100vw;
1330
+ height: 100vh;
1331
+ background-color: rgba(0, 0, 0, 0.5);
1332
+ display: none;
1333
+ }
1334
+
1335
+ .modal-backdrop.show {
1336
+ display: block;
1337
+ }
1338
+
1339
+ .alert {
1340
+ position: relative;
1341
+ padding: 0.75rem 1rem;
1342
+ margin-bottom: 1rem;
1343
+ border: 1px solid transparent;
1344
+ border-radius: 0.25rem;
1345
+ }
1346
+
1347
+ .alert-primary {
1348
+ color: #1c5187;
1349
+ background-color: #deeaf8;
1350
+ border-color: #b3d1ef;
1351
+ }
1352
+
1353
+ .alert-secondary {
1354
+ color: #313539;
1355
+ background-color: #caced1;
1356
+ border-color: #afb5ba;
1357
+ }
1358
+
1359
+ .alert-success {
1360
+ color: #0f401b;
1361
+ background-color: #9be7ac;
1362
+ border-color: #71dd8a;
1363
+ }
1364
+
1365
+ .alert-danger {
1366
+ color: #7c151f;
1367
+ background-color: #f6cdd1;
1368
+ border-color: #efa2a9;
1369
+ }
1370
+
1371
+ .alert-warning {
1372
+ color: #876500;
1373
+ background-color: #ffeeba;
1374
+ border-color: #ffe187;
1375
+ }
1376
+
1377
+ .alert-info {
1378
+ color: #093e47;
1379
+ background-color: #90e4f1;
1380
+ border-color: #63d9ec;
1381
+ }
1382
+
1383
+ .alert-light {
1384
+ color: #aeb9c5;
1385
+ background-color: white;
1386
+ border-color: white;
1387
+ }
1388
+
1389
+ .alert-dark {
1390
+ color: black;
1391
+ background-color: #717e8c;
1392
+ border-color: #5a6570;
1393
+ }
1394
+
1395
+ .alert-dismissible {
1396
+ padding-right: 3rem;
1397
+ }
1398
+
1399
+ .alert-dismissible .btn-close {
1400
+ position: absolute;
1401
+ top: 0;
1402
+ right: 0;
1403
+ padding: 0.9375rem 1rem;
1404
+ background: transparent;
1405
+ border: 0;
1406
+ cursor: pointer;
1407
+ color: inherit;
1408
+ opacity: 0.5;
1409
+ }
1410
+
1411
+ .alert-dismissible .btn-close:hover {
1412
+ opacity: 0.75;
1413
+ }
1414
+
1415
+ .table {
1416
+ width: 100%;
1417
+ margin-bottom: 1rem;
1418
+ vertical-align: top;
1419
+ border-color: rgba(0, 0, 0, 0.1);
1420
+ }
1421
+
1422
+ .table > :not(caption) > * > * {
1423
+ padding: 0.5rem;
1424
+ border-bottom-width: 1px;
1425
+ border-bottom-style: solid;
1426
+ border-bottom-color: inherit;
1427
+ }
1428
+
1429
+ .table > thead {
1430
+ vertical-align: bottom;
1431
+ border-bottom: 2px solid currentColor;
1432
+ }
1433
+
1434
+ .table > tbody > tr:last-child > * {
1435
+ border-bottom-color: transparent;
1436
+ }
1437
+
1438
+ .table-sm > :not(caption) > * > * {
1439
+ padding: 0.25rem;
1440
+ }
1441
+
1442
+ .table-bordered {
1443
+ border: 1px solid rgba(0, 0, 0, 0.1);
1444
+ }
1445
+
1446
+ .table-bordered > :not(caption) > * > * {
1447
+ border-width: 1px;
1448
+ border-style: solid;
1449
+ border-color: inherit;
1450
+ }
1451
+
1452
+ .table-striped > tbody > tr:nth-of-type(odd) > * {
1453
+ background-color: rgba(0, 0, 0, 0.02);
1454
+ }
1455
+
1456
+ .table-hover > tbody > tr:hover > * {
1457
+ background-color: rgba(0, 0, 0, 0.04);
1458
+ }
1459
+
1460
+ .table-responsive {
1461
+ overflow-x: auto;
1462
+ -webkit-overflow-scrolling: touch;
1463
+ }
1464
+
1465
+ .badge {
1466
+ display: inline-block;
1467
+ padding: 0.25em 0.65em;
1468
+ font-size: 0.75em;
1469
+ font-weight: 700;
1470
+ line-height: 1;
1471
+ color: #fff;
1472
+ text-align: center;
1473
+ white-space: nowrap;
1474
+ vertical-align: baseline;
1475
+ border-radius: 50rem;
1476
+ }
1477
+
1478
+ .badge-primary {
1479
+ color: #fff;
1480
+ background-color: #4a90d9;
1481
+ }
1482
+
1483
+ .badge-secondary {
1484
+ color: #fff;
1485
+ background-color: #6c757d;
1486
+ }
1487
+
1488
+ .badge-success {
1489
+ color: #fff;
1490
+ background-color: #28a745;
1491
+ }
1492
+
1493
+ .badge-danger {
1494
+ color: #fff;
1495
+ background-color: #dc3545;
1496
+ }
1497
+
1498
+ .badge-warning {
1499
+ color: #212529;
1500
+ background-color: #ffc107;
1501
+ }
1502
+
1503
+ .badge-info {
1504
+ color: #fff;
1505
+ background-color: #17a2b8;
1506
+ }
1507
+
1508
+ .badge-light {
1509
+ color: #212529;
1510
+ background-color: #f8f9fa;
1511
+ }
1512
+
1513
+ .badge-dark {
1514
+ color: #fff;
1515
+ background-color: #212529;
1516
+ }
1517
+
1518
+ .d-none {
1519
+ display: none !important;
1520
+ }
1521
+
1522
+ .d-block {
1523
+ display: block !important;
1524
+ }
1525
+
1526
+ .d-flex {
1527
+ display: flex !important;
1528
+ }
1529
+
1530
+ .d-inline {
1531
+ display: inline !important;
1532
+ }
1533
+
1534
+ .d-inline-block {
1535
+ display: inline-block !important;
1536
+ }
1537
+
1538
+ .d-grid {
1539
+ display: grid !important;
1540
+ }
1541
+
1542
+ @media (min-width: 576px) {
1543
+ .d-sm-none {
1544
+ display: none !important;
1545
+ }
1546
+ .d-sm-block {
1547
+ display: block !important;
1548
+ }
1549
+ .d-sm-flex {
1550
+ display: flex !important;
1551
+ }
1552
+ .d-sm-inline {
1553
+ display: inline !important;
1554
+ }
1555
+ .d-sm-inline-block {
1556
+ display: inline-block !important;
1557
+ }
1558
+ }
1559
+
1560
+ @media (min-width: 768px) {
1561
+ .d-md-none {
1562
+ display: none !important;
1563
+ }
1564
+ .d-md-block {
1565
+ display: block !important;
1566
+ }
1567
+ .d-md-flex {
1568
+ display: flex !important;
1569
+ }
1570
+ .d-md-inline {
1571
+ display: inline !important;
1572
+ }
1573
+ .d-md-inline-block {
1574
+ display: inline-block !important;
1575
+ }
1576
+ }
1577
+
1578
+ @media (min-width: 992px) {
1579
+ .d-lg-none {
1580
+ display: none !important;
1581
+ }
1582
+ .d-lg-block {
1583
+ display: block !important;
1584
+ }
1585
+ .d-lg-flex {
1586
+ display: flex !important;
1587
+ }
1588
+ .d-lg-inline {
1589
+ display: inline !important;
1590
+ }
1591
+ .d-lg-inline-block {
1592
+ display: inline-block !important;
1593
+ }
1594
+ }
1595
+
1596
+ .flex-row {
1597
+ flex-direction: row !important;
1598
+ }
1599
+
1600
+ .flex-column {
1601
+ flex-direction: column !important;
1602
+ }
1603
+
1604
+ .flex-wrap {
1605
+ flex-wrap: wrap !important;
1606
+ }
1607
+
1608
+ .flex-nowrap {
1609
+ flex-wrap: nowrap !important;
1610
+ }
1611
+
1612
+ .flex-grow-0 {
1613
+ flex-grow: 0 !important;
1614
+ }
1615
+
1616
+ .flex-grow-1 {
1617
+ flex-grow: 1 !important;
1618
+ }
1619
+
1620
+ .justify-content-start {
1621
+ justify-content: flex-start !important;
1622
+ }
1623
+
1624
+ .justify-content-end {
1625
+ justify-content: flex-end !important;
1626
+ }
1627
+
1628
+ .justify-content-center {
1629
+ justify-content: center !important;
1630
+ }
1631
+
1632
+ .justify-content-between {
1633
+ justify-content: space-between !important;
1634
+ }
1635
+
1636
+ .justify-content-around {
1637
+ justify-content: space-around !important;
1638
+ }
1639
+
1640
+ .align-items-start {
1641
+ align-items: flex-start !important;
1642
+ }
1643
+
1644
+ .align-items-end {
1645
+ align-items: flex-end !important;
1646
+ }
1647
+
1648
+ .align-items-center {
1649
+ align-items: center !important;
1650
+ }
1651
+
1652
+ .gap-0 {
1653
+ gap: 0 !important;
1654
+ }
1655
+
1656
+ .gap-1 {
1657
+ gap: 0.25rem !important;
1658
+ }
1659
+
1660
+ .gap-2 {
1661
+ gap: 0.5rem !important;
1662
+ }
1663
+
1664
+ .gap-3 {
1665
+ gap: 1rem !important;
1666
+ }
1667
+
1668
+ .gap-4 {
1669
+ gap: 1.5rem !important;
1670
+ }
1671
+
1672
+ .gap-5 {
1673
+ gap: 3rem !important;
1674
+ }
1675
+
1676
+ .m-0 {
1677
+ margin: 0 !important;
1678
+ }
1679
+
1680
+ .m-1 {
1681
+ margin: 0.25rem !important;
1682
+ }
1683
+
1684
+ .m-2 {
1685
+ margin: 0.5rem !important;
1686
+ }
1687
+
1688
+ .m-3 {
1689
+ margin: 1rem !important;
1690
+ }
1691
+
1692
+ .m-4 {
1693
+ margin: 1.5rem !important;
1694
+ }
1695
+
1696
+ .m-5 {
1697
+ margin: 3rem !important;
1698
+ }
1699
+
1700
+ .mt-0 {
1701
+ margin-top: 0 !important;
1702
+ }
1703
+
1704
+ .mt-1 {
1705
+ margin-top: 0.25rem !important;
1706
+ }
1707
+
1708
+ .mt-2 {
1709
+ margin-top: 0.5rem !important;
1710
+ }
1711
+
1712
+ .mt-3 {
1713
+ margin-top: 1rem !important;
1714
+ }
1715
+
1716
+ .mt-4 {
1717
+ margin-top: 1.5rem !important;
1718
+ }
1719
+
1720
+ .mt-5 {
1721
+ margin-top: 3rem !important;
1722
+ }
1723
+
1724
+ .mb-0 {
1725
+ margin-bottom: 0 !important;
1726
+ }
1727
+
1728
+ .mb-1 {
1729
+ margin-bottom: 0.25rem !important;
1730
+ }
1731
+
1732
+ .mb-2 {
1733
+ margin-bottom: 0.5rem !important;
1734
+ }
1735
+
1736
+ .mb-3 {
1737
+ margin-bottom: 1rem !important;
1738
+ }
1739
+
1740
+ .mb-4 {
1741
+ margin-bottom: 1.5rem !important;
1742
+ }
1743
+
1744
+ .mb-5 {
1745
+ margin-bottom: 3rem !important;
1746
+ }
1747
+
1748
+ .ms-0 {
1749
+ margin-left: 0 !important;
1750
+ }
1751
+
1752
+ .ms-1 {
1753
+ margin-left: 0.25rem !important;
1754
+ }
1755
+
1756
+ .ms-2 {
1757
+ margin-left: 0.5rem !important;
1758
+ }
1759
+
1760
+ .ms-3 {
1761
+ margin-left: 1rem !important;
1762
+ }
1763
+
1764
+ .ms-4 {
1765
+ margin-left: 1.5rem !important;
1766
+ }
1767
+
1768
+ .ms-5 {
1769
+ margin-left: 3rem !important;
1770
+ }
1771
+
1772
+ .me-0 {
1773
+ margin-right: 0 !important;
1774
+ }
1775
+
1776
+ .me-1 {
1777
+ margin-right: 0.25rem !important;
1778
+ }
1779
+
1780
+ .me-2 {
1781
+ margin-right: 0.5rem !important;
1782
+ }
1783
+
1784
+ .me-3 {
1785
+ margin-right: 1rem !important;
1786
+ }
1787
+
1788
+ .me-4 {
1789
+ margin-right: 1.5rem !important;
1790
+ }
1791
+
1792
+ .me-5 {
1793
+ margin-right: 3rem !important;
1794
+ }
1795
+
1796
+ .p-0 {
1797
+ padding: 0 !important;
1798
+ }
1799
+
1800
+ .p-1 {
1801
+ padding: 0.25rem !important;
1802
+ }
1803
+
1804
+ .p-2 {
1805
+ padding: 0.5rem !important;
1806
+ }
1807
+
1808
+ .p-3 {
1809
+ padding: 1rem !important;
1810
+ }
1811
+
1812
+ .p-4 {
1813
+ padding: 1.5rem !important;
1814
+ }
1815
+
1816
+ .p-5 {
1817
+ padding: 3rem !important;
1818
+ }
1819
+
1820
+ .pt-0 {
1821
+ padding-top: 0 !important;
1822
+ }
1823
+
1824
+ .pt-1 {
1825
+ padding-top: 0.25rem !important;
1826
+ }
1827
+
1828
+ .pt-2 {
1829
+ padding-top: 0.5rem !important;
1830
+ }
1831
+
1832
+ .pt-3 {
1833
+ padding-top: 1rem !important;
1834
+ }
1835
+
1836
+ .pt-4 {
1837
+ padding-top: 1.5rem !important;
1838
+ }
1839
+
1840
+ .pt-5 {
1841
+ padding-top: 3rem !important;
1842
+ }
1843
+
1844
+ .pb-0 {
1845
+ padding-bottom: 0 !important;
1846
+ }
1847
+
1848
+ .pb-1 {
1849
+ padding-bottom: 0.25rem !important;
1850
+ }
1851
+
1852
+ .pb-2 {
1853
+ padding-bottom: 0.5rem !important;
1854
+ }
1855
+
1856
+ .pb-3 {
1857
+ padding-bottom: 1rem !important;
1858
+ }
1859
+
1860
+ .pb-4 {
1861
+ padding-bottom: 1.5rem !important;
1862
+ }
1863
+
1864
+ .pb-5 {
1865
+ padding-bottom: 3rem !important;
1866
+ }
1867
+
1868
+ .ps-0 {
1869
+ padding-left: 0 !important;
1870
+ }
1871
+
1872
+ .ps-1 {
1873
+ padding-left: 0.25rem !important;
1874
+ }
1875
+
1876
+ .ps-2 {
1877
+ padding-left: 0.5rem !important;
1878
+ }
1879
+
1880
+ .ps-3 {
1881
+ padding-left: 1rem !important;
1882
+ }
1883
+
1884
+ .ps-4 {
1885
+ padding-left: 1.5rem !important;
1886
+ }
1887
+
1888
+ .ps-5 {
1889
+ padding-left: 3rem !important;
1890
+ }
1891
+
1892
+ .pe-0 {
1893
+ padding-right: 0 !important;
1894
+ }
1895
+
1896
+ .pe-1 {
1897
+ padding-right: 0.25rem !important;
1898
+ }
1899
+
1900
+ .pe-2 {
1901
+ padding-right: 0.5rem !important;
1902
+ }
1903
+
1904
+ .pe-3 {
1905
+ padding-right: 1rem !important;
1906
+ }
1907
+
1908
+ .pe-4 {
1909
+ padding-right: 1.5rem !important;
1910
+ }
1911
+
1912
+ .pe-5 {
1913
+ padding-right: 3rem !important;
1914
+ }
1915
+
1916
+ .mx-auto {
1917
+ margin-left: auto !important;
1918
+ margin-right: auto !important;
1919
+ }
1920
+
1921
+ .text-start {
1922
+ text-align: left !important;
1923
+ }
1924
+
1925
+ .text-center {
1926
+ text-align: center !important;
1927
+ }
1928
+
1929
+ .text-end {
1930
+ text-align: right !important;
1931
+ }
1932
+
1933
+ .text-uppercase {
1934
+ text-transform: uppercase !important;
1935
+ }
1936
+
1937
+ .text-capitalize {
1938
+ text-transform: capitalize !important;
1939
+ }
1940
+
1941
+ .text-nowrap {
1942
+ white-space: nowrap !important;
1943
+ }
1944
+
1945
+ .text-truncate {
1946
+ overflow: hidden;
1947
+ text-overflow: ellipsis;
1948
+ white-space: nowrap;
1949
+ }
1950
+
1951
+ .fw-bold {
1952
+ font-weight: 700 !important;
1953
+ }
1954
+
1955
+ .fw-normal {
1956
+ font-weight: 400 !important;
1957
+ }
1958
+
1959
+ .fw-light {
1960
+ font-weight: 300 !important;
1961
+ }
1962
+
1963
+ .fs-1 {
1964
+ font-size: 2.25rem !important;
1965
+ }
1966
+
1967
+ .fs-2 {
1968
+ font-size: 1.875rem !important;
1969
+ }
1970
+
1971
+ .fs-3 {
1972
+ font-size: 1.5rem !important;
1973
+ }
1974
+
1975
+ .fs-4 {
1976
+ font-size: 1.25rem !important;
1977
+ }
1978
+
1979
+ .fs-5 {
1980
+ font-size: 1rem !important;
1981
+ }
1982
+
1983
+ .fs-6 {
1984
+ font-size: 0.875rem !important;
1985
+ }
1986
+
1987
+ .text-primary {
1988
+ color: #4a90d9 !important;
1989
+ }
1990
+
1991
+ .text-secondary {
1992
+ color: #6c757d !important;
1993
+ }
1994
+
1995
+ .text-success {
1996
+ color: #28a745 !important;
1997
+ }
1998
+
1999
+ .text-danger {
2000
+ color: #dc3545 !important;
2001
+ }
2002
+
2003
+ .text-warning {
2004
+ color: #ffc107 !important;
2005
+ }
2006
+
2007
+ .text-info {
2008
+ color: #17a2b8 !important;
2009
+ }
2010
+
2011
+ .text-light {
2012
+ color: #f8f9fa !important;
2013
+ }
2014
+
2015
+ .text-dark {
2016
+ color: #212529 !important;
2017
+ }
2018
+
2019
+ .text-muted {
2020
+ color: #6c757d !important;
2021
+ }
2022
+
2023
+ .text-white {
2024
+ color: #fff !important;
2025
+ }
2026
+
2027
+ .bg-primary {
2028
+ background-color: #4a90d9 !important;
2029
+ }
2030
+
2031
+ .bg-secondary {
2032
+ background-color: #6c757d !important;
2033
+ }
2034
+
2035
+ .bg-success {
2036
+ background-color: #28a745 !important;
2037
+ }
2038
+
2039
+ .bg-danger {
2040
+ background-color: #dc3545 !important;
2041
+ }
2042
+
2043
+ .bg-warning {
2044
+ background-color: #ffc107 !important;
2045
+ }
2046
+
2047
+ .bg-info {
2048
+ background-color: #17a2b8 !important;
2049
+ }
2050
+
2051
+ .bg-light {
2052
+ background-color: #f8f9fa !important;
2053
+ }
2054
+
2055
+ .bg-dark {
2056
+ background-color: #212529 !important;
2057
+ }
2058
+
2059
+ .bg-white {
2060
+ background-color: #fff !important;
2061
+ }
2062
+
2063
+ .border {
2064
+ border: 1px solid rgba(0, 0, 0, 0.1) !important;
2065
+ }
2066
+
2067
+ .border-0 {
2068
+ border: 0 !important;
2069
+ }
2070
+
2071
+ .rounded {
2072
+ border-radius: 0.25rem !important;
2073
+ }
2074
+
2075
+ .rounded-0 {
2076
+ border-radius: 0 !important;
2077
+ }
2078
+
2079
+ .rounded-circle {
2080
+ border-radius: 50% !important;
2081
+ }
2082
+
2083
+ .rounded-pill {
2084
+ border-radius: 50rem !important;
2085
+ }
2086
+
2087
+ .w-25 {
2088
+ width: 25% !important;
2089
+ }
2090
+
2091
+ .h-25 {
2092
+ height: 25% !important;
2093
+ }
2094
+
2095
+ .w-50 {
2096
+ width: 50% !important;
2097
+ }
2098
+
2099
+ .h-50 {
2100
+ height: 50% !important;
2101
+ }
2102
+
2103
+ .w-75 {
2104
+ width: 75% !important;
2105
+ }
2106
+
2107
+ .h-75 {
2108
+ height: 75% !important;
2109
+ }
2110
+
2111
+ .w-100 {
2112
+ width: 100% !important;
2113
+ }
2114
+
2115
+ .h-100 {
2116
+ height: 100% !important;
2117
+ }
2118
+
2119
+ .mw-100 {
2120
+ max-width: 100% !important;
2121
+ }
2122
+
2123
+ .mh-100 {
2124
+ max-height: 100% !important;
2125
+ }
2126
+
2127
+ .position-relative {
2128
+ position: relative !important;
2129
+ }
2130
+
2131
+ .position-absolute {
2132
+ position: absolute !important;
2133
+ }
2134
+
2135
+ .position-fixed {
2136
+ position: fixed !important;
2137
+ }
2138
+
2139
+ .position-sticky {
2140
+ position: sticky !important;
2141
+ }
2142
+
2143
+ .position-static {
2144
+ position: static !important;
2145
+ }
2146
+
2147
+ .visible {
2148
+ visibility: visible !important;
2149
+ }
2150
+
2151
+ .invisible {
2152
+ visibility: hidden !important;
2153
+ }
2154
+
2155
+ .overflow-hidden {
2156
+ overflow: hidden !important;
2157
+ }
2158
+
2159
+ .overflow-auto {
2160
+ overflow: auto !important;
2161
+ }
2162
+
2163
+ .shadow {
2164
+ box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
2165
+ }
2166
+
2167
+ .shadow-sm {
2168
+ box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
2169
+ }
2170
+
2171
+ .shadow-lg {
2172
+ box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
2173
+ }
2174
+
2175
+ .shadow-none {
2176
+ box-shadow: none !important;
2177
+ }
2178
+
2179
+ .collapse {
2180
+ display: none;
2181
+ }
2182
+
2183
+ .collapse.show {
2184
+ display: block;
2185
+ }
2186
+
2187
+ .fade {
2188
+ opacity: 0;
2189
+ transition: opacity 0.15s linear;
2190
+ }
2191
+
2192
+ .fade.show {
2193
+ opacity: 1;
2194
+ }
2195
+
2196
+ .clearfix::after {
2197
+ display: block;
2198
+ clear: both;
2199
+ content: "";
2200
+ }
2201
+
2202
+ .cursor-pointer {
2203
+ cursor: pointer !important;
2204
+ }
2205
+
2206
+ .btn-close {
2207
+ box-sizing: content-box;
2208
+ width: 1em;
2209
+ height: 1em;
2210
+ padding: 0.25em;
2211
+ color: #000;
2212
+ background: transparent;
2213
+ border: 0;
2214
+ opacity: 0.5;
2215
+ cursor: pointer;
2216
+ font-size: 1.25rem;
2217
+ line-height: 1;
2218
+ }
2219
+
2220
+ .btn-close:hover {
2221
+ opacity: 0.75;
2222
+ }
2223
+
2224
+ .btn-close:focus {
2225
+ opacity: 1;
2226
+ outline: 0;
2227
+ box-shadow: 0 0 0 0.2rem rgba(74, 144, 217, 0.25);
2228
+ }
2229
+
2230
+ .img-fluid {
2231
+ max-width: 100%;
2232
+ height: auto;
2233
+ }
2234
+
2235
+ .img-thumbnail {
2236
+ padding: 0.25rem;
2237
+ background-color: #fff;
2238
+ border: 1px solid rgba(0, 0, 0, 0.1);
2239
+ border-radius: 0.25rem;
2240
+ max-width: 100%;
2241
+ height: auto;
2242
+ }
2243
+
2244
+ .border-top {
2245
+ border-top: 1px solid rgba(0, 0, 0, 0.1) !important;
2246
+ }
2247
+
2248
+ .border-bottom {
2249
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1) !important;
2250
+ }
2251
+
2252
+ .align-middle {
2253
+ vertical-align: middle !important;
2254
+ }
2255
+
2256
+ .align-top {
2257
+ vertical-align: top !important;
2258
+ }
2259
+
2260
+ .align-bottom {
2261
+ vertical-align: bottom !important;
2262
+ }
2263
+
2264
+ .float-start {
2265
+ float: left !important;
2266
+ }
2267
+
2268
+ .float-end {
2269
+ float: right !important;
2270
+ }
2271
+
2272
+ .float-none {
2273
+ float: none !important;
2274
+ }
2275
+
2276
+ .visually-hidden {
2277
+ position: absolute !important;
2278
+ width: 1px !important;
2279
+ height: 1px !important;
2280
+ padding: 0 !important;
2281
+ margin: -1px !important;
2282
+ overflow: hidden !important;
2283
+ clip: rect(0, 0, 0, 0) !important;
2284
+ white-space: nowrap !important;
2285
+ border: 0 !important;
2286
+ }