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