xref: /webtrees/resources/css/fab.css (revision ffb4495015ffc2f565789df543f2759f552aee96)
1/**
2 * webtrees: online genealogy
3 * Copyright (C) 2021 webtrees development team
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 * You should have received a copy of the GNU General Public License
13 * along with this program. If not, see <https://www.gnu.org/licenses/>.
14 */
15
16/* The FAB theme */
17@import "_base.css";
18
19:root {
20    --chart-line-radius: 1rem;
21    --chart-line: solid gray thin;
22    --link-color-hover: #f00;
23    --link-color: #369;
24    --link-decoration-hover: underline;
25    --link-decoration: none;
26    --sex-f-bg: #ffdddd;
27    --sex-f-fg: #ff8888;
28    --sex-m-bg: #ddddff;
29    --sex-m-fg: #8888ff;
30    --sex-u-bg: #ddffdd;
31    --sex-u-fg: #88ff88;
32}
33
34/* Override Bootstrap formatting */
35.btn-link {
36    padding-left: 0.25rem;
37    padding-right: 0.25rem;
38}
39
40.table-given-name {
41    overflow-x: hidden;
42}
43
44.container-fluid {
45    padding-left: 5px;
46    padding-right: 5px;
47}
48
49table {
50    border-collapse: separate;
51}
52
53/*
54 * Pages have the following high-level structure:
55 *
56 * wt-global wt-theme-<THEME> wt-route-<ROUTE>
57 * +---wt-header-wrapper
58 * |   +---wt-header-container
59 * |       +---wt-header-content
60 * |           +---wt-accessibility-links
61 * |           +---wt-site-logo
62 * |           +---wt-site-title
63 * |           +---wt-header-search
64 * |           |   +---wt-header-search-form
65 * |           |       +---wt-header-search-field
66 * |           |       +---wt-header-search-button
67 * |           +---wt-secondary-navigation
68 * |           |   +---wt-user-menu
69 * |           +---wt-primary-navigation
70 * |               +---wt-genealogy-menu
71 * +---wt-main-wrapper
72 * |   +---wt-main-container
73 * |       +---wt-main-content
74 * |           +---wt-messages
75 * |           +---wt-page-title
76 * |           +---wt-page-options wt-page-options-xxxxx
77 * |           +---wt-page-content
78 * +---wt-footers
79 *     +---wt-footer wt-footer-xxxxx
80 */
81
82.wt-global {
83    color: #555;
84}
85
86.wt-header-wrapper {
87}
88
89.wt-header-container {
90    background-color: #eee;
91}
92
93.wt-header-content {
94}
95
96.wt-accessibility-links {
97}
98
99.wt-site-logo {
100    display: none;
101}
102
103.wt-site-title {
104    order: 1;
105    flex: 1 1 auto;
106    width: auto;
107    font-size: 1.5rem;
108    color: #888;
109}
110
111.wt-header-search {
112    order: 3;
113    flex: 0 0 15rem;
114}
115
116.wt-header-search-form {
117}
118
119.wt-header-search-field {
120}
121
122.wt-header-search-button {
123}
124
125.wt-secondary-navigation {
126    order: 2;
127    flex: 0 0 auto;
128    width: auto;
129    white-space: nowrap;
130}
131
132.wt-user-menu {
133    flex-wrap: nowrap;
134}
135
136.wt-user-menu .nav-link {
137    display: inline-block;
138    padding: 0.5rem;
139}
140
141.wt-user-menu .nav-item::after {
142    content: "|";
143}
144
145.wt-user-menu .dropdown-toggle::after {
146    display: none;
147}
148
149.wt-primary-navigation {
150    order: 4;
151    flex: 0 0 100%;
152    background-color: #eee;
153}
154
155.wt-genealogy-menu {
156    justify-content: center;
157}
158
159.wt-genealogy-menu .dropdown-toggle::after {
160    display: none;
161}
162
163.wt-genealogy-menu .nav-link {
164    white-space: nowrap;
165    display: inline-block;
166    padding: 0.5rem;
167}
168
169.wt-genealogy-menu .nav-item + .nav-item::before {
170    content: "|";
171}
172
173.wt-main-container {
174    /* Space between the header/footer and the main content. */
175    padding-top: 1rem;
176    padding-bottom: 1rem;
177}
178
179.wt-main {
180}
181
182.wt-messages {
183}
184
185.wt-page-title {
186    text-align: center;
187}
188
189.wt-page-options .form-group {
190    margin-bottom: 0;
191}
192
193.wt-page-options-label {
194    background-color: #ccc;
195    border-left: 2px solid transparent;
196    border-right: 2px solid transparent;
197    Color: #555;
198    font-weight: bold;
199}
200
201.wt-page-options-value {
202    background-color: #ddd;
203    border: 1px solid #fff;
204    border-top: 1px solid #ddd;
205
206    padding: 0.25rem 0.75rem;
207}
208
209.wt-page-content {
210    margin-top: 1rem;
211}
212
213.wt-footers {
214}
215
216.wt-footer {
217}
218
219.wt-footer-contact {
220}
221
222.wt-footer-cookies {
223    background: #aaa;
224    color: #fff;
225    transition: height 0.5s;
226}
227
228.wt-footer-page-views {
229}
230
231.wt-footer-powered-by {
232}
233
234.wt-footer-powered-by-webtrees {
235    width: 100px;
236    height: 21px;
237    content: url(images/powered-by-webtrees.png);
238}
239
240/*
241 * The tree/user home pages
242 *
243 * wt-home-page / wt-user-page
244 * +---wt-main-blocks
245 * |   +---wt-block, wt-block-AAA
246 * |   +---wt-block, wt-block-BBB
247 * |   +---wt-block, wt-block-CCC
248 * +---wt-side-blocks
249 *     +---wt-block, wt-block-XXX
250 *     +---wt-block, wt-block-YYY
251 *     +---wt-block, wt-block-ZZZ
252 *
253 * Each block as the structure
254 * wt-block, wt-block-XXX
255 * +---wt-block-header, wt-block-header-XXX
256 * +---wt-block-content, wt-block-content-XXX
257 */
258
259.wt-block {
260    background-color: #eee;
261    padding: 3px;
262    vertical-align: top;
263}
264
265.wt-block-header {
266    background-color: #eee;
267    border-bottom: 0;
268    font-weight: bold;
269}
270
271.wt-block-content {
272}
273
274.wt-block-content .list_table {
275    border-spacing: 1px;
276    border: solid #000 1px;
277    border-right: 0;
278}
279
280.wt-block-content .list_value,
281.wt-block-content .list_value_wrap {
282    border: 0;
283}
284
285/*
286 * The individual page.
287 *
288 * wt-route-individual
289 * +---wt-header-wrapper
290 */
291
292.wt-individual-silhouette {
293    content: url(images/individual-silhouette-unknown.png);
294}
295
296.wt-individual-silhouette-f {
297    content: url(images/individual-silhouette-female.png);
298}
299
300.wt-individual-silhouette-m {
301    content: url(images/individual-silhouette-male.png);
302}
303
304/*
305 * Chart-boxes are used to build the various charts.
306 * Each type of chart will set its own size and hide/show content.
307 *
308 * wt-chart-box
309 * +--- wt-chart-box-thumbnail
310 * +--- wt-chart-box-extra
311 *      +--- wt-chart-box-zoom
312 *           +--- wt-chart-box-icon
313 *           +--- wt-chart-box-dropdown wt-chart-box-zoom-dropdown
314 *      +--- wt-chart-box-links
315 *           +--- wt-chart-box-icon
316 *           +--- wt-chart-box-dropdown wt-chart-box-links-dropdown
317 * +--- wt-chart-box-name
318 * +--- wt-chart-box-lifespan
319 * +--- wt-chart-box-facts
320 *     +--- wt-chart-box-fact
321 */
322.wt-chart-box,
323.wt-chart-box-menu {
324    background: var(--sex-u-bg);
325    border: dashed var(--sex-u-fg) thin;
326}
327
328.wt-chart-box {
329    height: 5rem;
330    padding: 2px;
331    line-height: 1.1;
332    border: none;
333    border-radius: 4px;
334}
335
336.wt-chart-box-f,
337.wt-chart-box-f .wt-chart-box-dropdown {
338    background: var(--sex-f-bg);
339}
340
341.wt-chart-box-m,
342.wt-chart-box-m .wt-chart-box-dropdown {
343    background: var(--sex-m-bg);
344}
345
346/* ====== Round Corners ======== */
347.block,
348.descriptionbox,
349.list_label,
350.list_label_wrap,
351.list_value,
352.list_value_wrap,
353.messagebox,
354.optionbox,
355.person0,
356.person1,
357.person2,
358.person3,
359.person4,
360.person5,
361#indi_main_blocks,
362#tabs {
363    margin: 4px;
364    padding: 4px;
365    border-radius: 4px;
366}
367
368:focus {
369    outline-style: none;
370}
371
372.flash-messages {
373    clear: both;
374    text-align: center;
375}
376
377dl {
378    margin: 0;
379}
380
381dt {
382    float: left;
383    font-weight: bold;
384    margin-right: 10px;
385}
386
387.button {
388    width: 60px;
389}
390
391.alpha_index {
392    color: #999;
393}
394
395.news_box:target,
396#gedcom_stats:target {
397    background-color: #ffc;
398}
399
400/* families tab person box */
401table.center {
402    margin-left: auto;
403    margin-right: auto;
404}
405
406.list_table {
407    margin: 0 auto;
408}
409
410.list_label,
411.list_label_wrap {
412    background-color: #ccc;
413    font-weight: bold;
414    text-align: center;
415}
416
417.list_value,
418.list_value_wrap {
419    background-color: #ddd;
420    vertical-align: top;
421}
422
423.list_label,
424.list_value {
425    white-space: nowrap;
426}
427
428.list_label_wrap,
429.list_value_wrap {
430    white-space: normal;
431}
432
433div.fact_SHARED_NOTE {
434    clear: both;
435}
436
437/* Table of genealogical facts */
438.wt-facts-table caption {
439    caption-side: top;
440}
441
442.wt-facts-table th {
443    background-color: #ccc;
444    border-radius: 4px;
445    text-align: center;
446    font-weight: normal;
447    min-width: 20%;
448}
449
450.wt-facts-table td {
451    border-radius: 4px;
452    background-color: #ddd;
453}
454
455.wt-facts-table .wt-gender-M td {
456    background-color: var(--sex-m-bg);
457}
458
459.wt-facts-table .wt-gender-F td {
460    background-color: var(--sex-f-bg);
461}
462
463.details_label {
464    font-weight: bold;
465}
466
467.date {
468    color: #337;
469}
470
471.label {
472    font-weight: bold;
473}
474
475.error {
476    color: #f00;
477    font-weight: bold;
478}
479
480.indent {
481    padding-left: 7px;
482}
483
484.parentdeath {
485    padding: 1px;
486}
487
488.journal_box {
489    padding: 3pt;
490    border: thin solid #aaa;
491    overflow: visible;
492}
493
494.news_box {
495    background-color: #ccc;
496    border-top: none;
497    padding: 0.25rem;
498}
499
500.news_title {
501    font-weight: bold;
502    font-size: 14px;
503}
504
505.news_date {
506    margin-bottom: 12px;
507}
508
509.current_day {
510    font-weight: bold;
511    font-size: 16px;
512}
513
514.cal_day {
515    font-weight: bold;
516}
517
518.rtl_cal_day {
519    color: #00f;
520    font-weight: bold;
521}
522
523#user-page h1 {
524    margin: 0.25em auto 0.6em;
525}
526
527.tvertline {
528    vertical-align: bottom;
529}
530
531#childbox {
532    padding: 5px;
533    position: absolute;
534    display: none;
535    text-align: start;
536    white-space: nowrap;
537    top: 20px;
538    left: 0;
539}
540
541.layout3 #childbox {
542    top: auto;
543    bottom: 20px;
544}
545
546.person0 {
547    background-color: #aaf;
548    vertical-align: top;
549}
550
551.person1 {
552    background-color: #afa;
553    vertical-align: top;
554}
555
556.person2 {
557    background-color: #faa;
558    vertical-align: top;
559}
560
561.person3 {
562    background-color: #55f;
563    vertical-align: top;
564}
565
566.person4 {
567    background-color: #f55;
568    vertical-align: top;
569}
570
571.person5 {
572    background-color: #5f5;
573    vertical-align: top;
574}
575
576.starredname {
577    text-decoration: underline;
578}
579
580.search_hit {
581    background-color: #ff0;
582}
583
584.descriptionbox {
585    font-weight: bold;
586    background-color: #ccc;
587    vertical-align: top;
588}
589
590.descriptionbox {
591    font-size: 14px;
592    background-color: #ccc;
593    vertical-align: top;
594    padding: 3px;
595}
596
597.optionbox {
598    background-color: #ddd;
599    color: #000;
600    vertical-align: top;
601    white-space: nowrap;
602    padding: 3px;
603}
604
605.red {
606    color: #f00;
607}
608
609.wt-associate-fact,
610.wt-relation-fact,
611.wt-historic-fact {
612    opacity: 0.8;
613}
614
615.messagebox {
616    background-color: #bce;
617}
618
619/* ---Pending edits--- */
620.wt-new {
621    outline: solid #00f 1px;
622}
623
624.wt-old {
625    outline: solid #f00 1px;
626}
627
628.nowrap {
629    white-space: nowrap;
630}
631
632.wrap {
633    white-space: normal;
634}
635
636.statistics-page {
637    text-align: center;
638}
639
640.gchart {
641    border: 0;
642}
643
644#facts_content dd {
645    float: left;
646    width: 70%;
647}
648
649/* this keeps the tag color the same when it is a link as when not */
650
651.place {
652    padding-top: 5px;
653}
654
655.filtersH,
656.filtersF {
657    margin: 4px;
658}
659
660.filtersH img {
661    margin-bottom: 2px;
662}
663
664.list-charts {
665    text-align: center;
666}
667
668#place-hierarchy h2,
669#place-hierarchy h4 {
670    text-align: center;
671}
672
673.user_welcome_block table,
674.gedcom_block_block table {
675    margin: auto;
676}
677
678.user_welcome_block td,
679.gedcom_block_block td {
680    width: 33%;
681    text-align: center;
682    vertical-align: top;
683}
684
685/* ==== FAQ table styles ===== */
686table.faq {
687    background-color: #ddd;
688    margin: 5px 0 50px 5px;
689    width: 98%;
690}
691
692table.faq tr:nth-child(odd) td {
693    background-color: #eee;
694}
695
696div.faq_title {
697    background-color: #ddd;
698    margin: 1em 0;
699    padding: .25em;
700    font-weight: bold;
701    width: 98%;
702}
703
704div.faq_body {
705    clear: both;
706    padding: 0 1em;
707}
708
709.faq_top {
710    float: right;
711}
712
713/* === Positioning edit, copy, delete links === */
714/* General use */
715.editfacts {
716    clear: left;
717    padding-top: 15px;
718}
719
720#indi_note {
721    margin: 0 0 5px;
722}
723
724.indi_table {
725    clear: left;
726}
727
728#indi_note .fact_NOTE {
729    float: left;
730    margin: 0 5px 0 0;
731}
732
733#indi_note .fact_SOUR {
734    margin: 3px 0;
735}
736
737#indi_note .fact_SOUR a {
738    font-size: 100%;
739}
740
741#indi_note .fact_NOTE,
742#indi_note .fact_SOUR {
743    clear: both;
744}
745
746.odometer {
747    font-family: courier, monospace;
748    font-weight: bold;
749    background: #000;
750    color: #fff;
751}
752
753.upcoming_events_block button,
754.todays_events_block button {
755    margin: 0 20px;
756}
757
758/* Sidebar - Family navigator */
759.wt-family-navigator-dropdown {
760    background: #eee;
761}
762
763.wt-family-navigator-dropdown-heading {
764    font-weight: bold;
765    font-size: inherit;
766    color: inherit;
767}
768
769/* Sidebar - Descendants */
770#sb_content_descendancy {
771    margin-top: 5px;
772}
773
774#sb_desc_content {
775    margin-left: 3px;
776    font-size: 0.8em;
777}
778
779#sb_desc_content ul {
780    padding: 0;
781    margin: 0;
782}
783
784.sb_desc_indi_li {
785    list-style-type: none;
786}
787
788/* Individuals and Families */
789#sidebar-content-individuals,
790#sidebar-content-families {
791    margin-top: 5px;
792}
793
794.sb_indi_surname_li,
795.sb_fam_surname_li {
796    list-style-image: url(icons/plus.png);
797}
798
799.name_tree_div ul {
800    padding: 0;
801    margin: 0;
802}
803
804.name_tree_div li {
805    list-style: none;
806    margin: 0;
807    padding: 0;
808}
809
810/* Clippings */
811#sb_clippings_content ul {
812    padding: 0;
813    margin: 0;
814}
815
816#sb_clippings_content li {
817    list-style: none;
818    margin: 0;
819    padding: 0;
820    white-space: nowrap;
821}
822
823/* Stories module */
824.story_title {
825    padding-top: 12px;
826    font-size: 13px;
827    height: 32px;
828    font-weight: bold;
829}
830
831.story_body {
832    padding: 20px;
833    white-space: normal;
834}
835
836.story_edit {
837    padding: 12px;
838}
839
840/*-- Fan chart ---- */
841.fan_chart_menu {
842    background: #fff;
843    position: absolute;
844    display: none;
845    z-index: 100;
846}
847
848#fan_chart ul {
849    list-style-type: none;
850    margin: 0;
851}
852
853/* Lifespans chart */
854.wt-lifespans-subtitle {
855    text-align: center;
856}
857
858.wt-lifespans-scale {
859    white-space: nowrap;
860}
861
862.wt-lifespans-decade {
863    width: 70px;
864    height: 60px;
865    display: inline-block;
866    background-image: url(images/lifespan-decade.png);
867    background-position-y: bottom;
868    background-repeat: no-repeat;
869    background-size: 70px 37px;
870}
871
872.wt-lifespans-individuals {
873    background: #fafafa;
874}
875
876.wt-lifespans-individual {
877
878}
879
880.wt-lifespans-summary {
881    background: #ffffff;
882    border: thin solid #000;
883    z-index: 1;
884}
885
886.wt-lifespans-summary-link {
887    font-weight: bold;
888}
889
890/*-- timeline  --*/
891#timeline_chart {
892    position: relative;
893    top: 0;
894    left: 0;
895}
896
897/*-- Relationship ---- */
898.wt-relationship-chart .hline-text,
899.wt-relationship-chart .vline-text {
900    font-size: 12px;
901}
902
903/*
904 * Any element that is loaded dynamically has the class wt-ajax-load.
905 * We can provide a "loading" placeholder for empty elements with this class.
906 */
907.wt-ajax-load:empty {
908    height: 32px;
909    background: url(images/loading-32x32.gif) no-repeat 50% 50%;
910}
911
912/*
913 * Default icons are provided by FontAwesome.
914 */
915.wt-icon-anniversary {
916}
917
918.wt-icon-arrow-down {
919}
920
921a > .wt-icon-arrow-down:hover {
922}
923
924.wt-icon-arrow-left {
925}
926
927a > .wt-icon-arrow-left:hover {
928}
929
930.wt-icon-arrow-right {
931}
932
933a > .wt-icon-arrow-right:hover {
934}
935
936.wt-icon-arrow-up {
937}
938
939a > .wt-icon-arrow-up:hover {
940}
941
942.wt-icon-bing-maps {
943}
944
945.wt-icon-calendar {
946}
947
948.wt-icon-collapse {
949}
950
951.wt-icon-coordinates {
952}
953
954.wt-icon-copy {
955}
956
957.wt-icon-delete {
958}
959
960.wt-icon-edit {
961}
962
963.wt-icon-expand {
964}
965
966.wt-icon-family {
967}
968
969.wt-icon-google-maps {
970}
971
972.wt-icon-help {
973}
974
975.wt-icon-individual {
976}
977
978.wt-icon-keyboard {
979}
980
981.wt-icon-media {
982}
983
984.wt-icon-note {
985}
986
987.wt-icon-openstreetmap {
988}
989
990.wt-icon-preferences {
991}
992
993.wt-icon-reorder {
994}
995
996.wt-icon-repository {
997}
998
999.wt-icon-sex-f {
1000    color: var(--sex-f-fg);
1001}
1002
1003.wt-icon-sex-m {
1004    color: var(--sex-m-fg);
1005}
1006
1007.wt-icon-sex-u {
1008    color: var(--sex-u-fg);
1009}
1010
1011.wt-icon-sex-x {
1012    color: var(--sex-u-fg);
1013}
1014
1015.wt-icon-source {
1016}
1017
1018.wt-icon-submitter {
1019}
1020
1021.wt-icon-warning {
1022}
1023
1024.wt-icon-zoom-in {
1025}
1026
1027.wt-icon-zoom-out {
1028}
1029
1030/* Miscellaneous images */
1031.icon-cfamily {
1032    content: url(fab/images/cfamily.png);
1033}
1034
1035.icon-childless {
1036    content: url(images/childless.png);
1037}
1038
1039.icon-children {
1040    content: url(images/children.png);
1041}
1042
1043.icon-edit_indi {
1044    content: url(fab/images/edit_indi.png);
1045}
1046
1047.icon-fam-list {
1048    content: url(fab/images/sfamily.png);
1049}
1050
1051.icon-indi-list {
1052    content: url(fab/images/indis.png);
1053}
1054
1055.icon-loading-small {
1056    content: url(images/indicator.gif);
1057}
1058
1059.icon-minus {
1060    content: url(icons/minus.png);
1061}
1062
1063.icon-mypage {
1064    content: url(fab/images/mypage.png);
1065}
1066
1067.icon-pin-in {
1068    content: url(fab/images/pin-in.png);
1069}
1070
1071.icon-pin-out {
1072    content: url(fab/images/pin-out.png);
1073}
1074
1075.icon-plus {
1076    content: url(icons/plus.png);
1077}
1078
1079.icon-resn-confidential {
1080    content: url(images/resn_confidential.png);
1081}
1082
1083.icon-resn-locked {
1084    content: url(images/resn_locked.png);
1085}
1086
1087.icon-resn-none {
1088    content: url(images/resn_none.png);
1089}
1090
1091.icon-resn-privacy {
1092    content: url(images/resn_privacy.png);
1093}
1094
1095.icon-rings {
1096    content: url(images/rings.png);
1097}
1098
1099.icon-selected {
1100    content: url(fab/images/selected.png);
1101}
1102
1103/* Silhouettes on charts */
1104.icon-silhouette-F {
1105    content: url(fab/images/silhouette_female_small.png);
1106}
1107
1108.icon-silhouette-M {
1109    content: url(fab/images/silhouette_male_small.png);
1110}
1111
1112.icon-silhouette-U {
1113    content: url(fab/images/silhouette_unknown_small.png);
1114}
1115
1116.menu-language li {
1117    text-align: left; /* The language menu is always LTR, even on RTL pages */
1118}
1119
1120.menu-theme li {
1121    text-align: left; /* The theme menu is always LTR, even on RTL pages */
1122}
1123
1124.icon-indis {
1125    content: url(fab/images/indis.png);
1126}
1127
1128.icon-patriarch {
1129    content: url(fab/images/patriarch.png);
1130}
1131
1132.icon-pedigree {
1133    content: url(fab/images/pedigree.png);
1134}
1135
1136.icon-sfamily {
1137    content: url(fab/images/sfamily.png);
1138}
1139
1140.icon-user_add {
1141    content: url(fab/images/user_add.png);
1142}
1143
1144/* Census assistant */
1145.wt-census-assistant-form-control:focus {
1146    min-width: 12rem;
1147}
1148
1149/* Some blocks show a reduced version on the right-hand side. */
1150.wt-side-blocks .wt-side-block-optional {
1151    display: none !important;
1152}
1153
1154/* my page chart enhancements */
1155.wt-block-content-charts {
1156    overflow: auto;
1157}
1158
1159/* Some charts are wider than the page. */
1160.wt-chart {
1161    overflow-x: auto;
1162    overflow-y: hidden;
1163}
1164
1165/* Fit thumbnail into parent on charts */
1166.select2-selection.select2-selection--single {
1167    min-height: 36px;
1168    height: auto;
1169    padding: 2px 0;
1170}
1171
1172.select2-container .select2-selection--single .select2-selection__rendered {
1173    padding-left: 2px;
1174}
1175
1176.select2-selection--single .NAME {
1177    padding-left: 4px;
1178}
1179
1180/* Some menus (e.g. languages) can be longer than a page */
1181.dropdown-menu {
1182    max-height: 30rem;
1183    overflow-x: hidden;
1184}
1185
1186/* Forms */
1187.col-form-label {
1188    font-weight: bold;
1189}
1190