1/** 2 * Copyright (c) 2019-2020, Juan Linietsky, Ariel Manzur and the Godot community 3 * Copyright (c) 2021, Teslabs Engineering S.L. 4 * Copyright (c) 2023-2025, The Linux Foundation. 5 * SPDX-License-Identifier: CC-BY-3.0 6 * 7 * Various tweaks to the Read the Docs theme to better conform with Zephyr's 8 * visual identity. Many colors are also overridden to use CSS variables. 9 */ 10 11 :root { 12 /* Use system font stacks for better performance (no Web fonts required) */ 13 --system-font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 14 --header-font-family: Seravek, 'Gill Sans Nova', Ubuntu, Calibri, 'DejaVu Sans', source-sans-pro, sans-serif; 15 } 16 17body, 18h1, 19h2, 20h3, 21h4, 22h5, 23h6, 24input[type="text"], 25input[type="button"], 26input[type="reset"], 27input[type="submit"], 28textarea, 29legend, 30.btn, 31.rst-content .toctree-wrapper p.caption, 32.rst-versions { 33 font-family: var(--system-font-family); 34} 35 36h1, 37h2, 38h3, 39h4, 40h5, 41h6, 42legend, 43.rst-content .toctree-wrapper p.caption { 44 /* Use a lighter font for headers (Semi-Bold instead of Bold) */ 45 font-weight: 600; 46 font-family: var(--header-font-family); 47} 48 49.rst-content div.figure p.caption { 50 /* Tweak caption styling to be closer to typical captions */ 51 text-align: center; 52 margin-top: 8px; 53 opacity: 0.75; 54} 55 56.rst-content div.figure.figure-w480 { 57 max-width: 480px; 58} 59 60p, 61article ul, 62article ol, 63.wy-plain-list-disc, 64.wy-plain-list-decimal, 65.rst-content ol.arabic, 66.rst-content .section ul, 67.rst-content .toctree-wrapper ul, 68.rst-content .section ol { 69 /* Increase the line height slightly to account for the different font */ 70 line-height: 25px; 71} 72 73body, 74.rst-content table.docutils thead { 75 color: var(--body-color); 76} 77 78a { 79 color: var(--link-color); 80} 81 82a:hover { 83 color: var(--link-color-hover); 84 text-decoration: underline; 85} 86 87a:active { 88 /* Add visual feedback when clicking on a link */ 89 color: var(--link-color-active); 90} 91 92a:visited { 93 color: var(--link-color-visited); 94} 95 96a.btn:hover { 97 text-decoration: none; 98} 99 100.sphinx-tabs .sphinx-menu a.item { 101 /* Original definition has `!important` */ 102 color: var(--link-color) !important; 103} 104 105.rst-content .toc-backref { 106 color: var(--link-color); 107} 108 109/* Style external links differently to make them easier to distinguish from internal links. */ 110.reference.external { 111 background-position: center right; 112 background-repeat: no-repeat; 113 background-image: var(--external-reference-icon); 114 padding-right: 13px; 115} 116 117hr, 118#search-results .search li:first-child, 119#search-results .search li { 120 border-color: var(--hr-color); 121} 122 123/* JavaScript documentation directives */ 124html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dt, 125html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list) > dt { 126 background-color: var(--admonition-note-background-color); 127 border-color: var(--admonition-note-title-background-color); 128 color: var(--admonition-note-color); 129} 130html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl dt { 131 background-color: transparent; 132 border-color: transparent; 133 color: var(--footer-color); 134} 135html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).class dt, 136html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).function dt, 137html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).method dt, 138html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).attribute dt { 139 font-weight: 600; 140 padding: 0 8px; 141 margin-bottom: 1px; 142 width: 100%; 143} 144html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).class > dt, 145html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).function > dt, 146html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).method > dt, 147html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).attribute > dt { 148 font-family: var(--monospace-font-family); 149 font-variant-ligatures: none; 150 font-size: 90%; 151 font-weight: normal; 152 margin-bottom: 16px; 153 padding: 6px 8px; 154} 155html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .sig-prename.descclassname { 156 color: var(--highlight-type2-color); 157 font-weight: normal; 158} 159html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .sig-name.descname { 160 color: var(--highlight-function-color); 161 font-weight: 700; 162} 163html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .sig-paren, 164html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .optional { 165 color: var(--highlight-operator-color) !important; 166 font-weight: normal; 167 padding: 0 2px; 168} 169html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .optional { 170 font-style: italic; 171} 172html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .sig-param, 173html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).class dt > em, 174html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).function dt > em, 175html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).method dt > em { 176 color: var(--code-literal-color); 177 font-style: normal; 178 padding: 0 4px; 179} 180html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .k { 181 font-style: normal; 182} 183html.writer-html5 .rst-content dl:not(.docutils) > dt, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt { 184 border-top-color: var(--highlight-background-emph-color); 185 background: var(--highlight-background-color); 186} 187html.writer-html5 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt { 188 border-left-color: var(--highlight-background-emph-color); 189 background: var(--highlight-background-color); 190} 191html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .sig-param, 192html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).class dt > .optional ~ em, 193html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).function dt > .optional ~ em, 194html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).method dt > .optional ~ em { 195 color: var(--highlight-number-color); 196 font-style: italic; 197} 198html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).class dt > em.property { 199 color: var(--highlight-keyword-color); 200} 201html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dt a.headerlink { 202 color: var(--link-color) !important; 203} 204html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dt a.headerlink:visited { 205 color: var(--link-color-visited); 206} 207html.writer-html5 .rst-content dl.field-list > dd strong { 208 font-family: var(--monospace-font-family); 209 font-variant-ligatures: none; 210} 211 212footer, 213#search-results .context { 214 color: var(--footer-color); 215} 216 217/* Icon tweaks */ 218a.icon-home, 219a.icon-home:visited { 220 color: var(--navbar-level-1-color); 221} 222 223/* Main sections */ 224 225.wy-nav-content-wrap { 226 background-color: var(--content-wrap-background-color); 227} 228 229.wy-nav-content { 230 background-color: var(--content-background-color); 231 min-height: 100vh; 232 min-height: 100dvh; 233 display: flex; 234} 235 236.wy-body-for-nav { 237 background-color: var(--content-wrap-background-color); 238} 239 240@media only screen and (min-width: 769px) { 241 .wy-nav-content { 242 max-width: 915px; 243 } 244} 245 246/* Table display tweaks */ 247 248.rst-content table.docutils, 249.wy-table-bordered-all td, 250.rst-content table.docutils td, 251.wy-table thead th, 252.rst-content table.docutils thead th, 253.rst-content table.field-list thead th { 254 border-color: var(--code-border-color); 255} 256 257.rst-content table.docutils caption, .rst-content table.field-list caption, .wy-table caption { 258 color: var(--body-color); 259} 260.wy-table-odd td, 261.wy-table-striped tr:nth-child(2n-1) td, 262.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td { 263 background-color: var(--table-row-odd-background-color); 264} 265 266/* Override table no-wrap */ 267/* The first column cells are not verbose, no need to wrap them */ 268.wy-table-responsive table td:not(:nth-child(1)), 269.wy-table-responsive table th:not(:nth-child(1)) { 270 white-space: normal; 271} 272 273/* Allow to control wrapping behavior per table */ 274.wy-table-responsive table.wrap-normal td, 275.wy-table-responsive table.wrap-normal th { 276 white-space: normal; 277} 278 279/* Make sure not to wrap keyboard shortcuts */ 280.wy-table-responsive table td kbd { 281 white-space: nowrap; 282} 283 284/* Force table content font-size in responsive tables to be 100% 285 * fixing larger font size for paragraphs in the kconfig tables */ 286 .wy-table-responsive td p { 287 font-size: 100%; 288} 289 290/* Code display tweaks */ 291 292code, 293.rst-content tt, 294.rst-content code { 295 font-size: 14px; 296 background-color: var(--code-background-color); 297 border: 1px solid var(--code-border-color); 298} 299 300.rst-content tt.literal, 301.rst-content code.literal { 302 color: var(--code-literal-color); 303} 304 305.rst-content div[class^="highlight"] { 306 border-color: none; 307 border: none; 308} 309 310.rst-content pre.literal-block, 311.rst-content div[class^="highlight"] pre, 312.rst-content .linenodiv pre { 313 /* Increase the font size and line height in code blocks */ 314 font-size: 14px; 315 line-height: 1.5; 316} 317 318.rst-content pre.literal-block { 319 border: none; 320 border-radius: 0.25rem; 321 background-color: var(--code-background-color); 322} 323 324/* Code tab display tweaks */ 325 326.ui.tabular.menu .active.item, 327.ui.segment, 328.sphinx-tabs-panel { 329 background-color: var(--code-background-color) !important; 330} 331 332.sphinx-tabs-tab { 333 color: var(--link-color) !important; 334} 335 336.sphinx-tabs-tab[aria-selected="true"] { 337 background-color: var(--code-background-color) !important; 338 border-bottom: 1px solid var(--code-background-color) !important; 339} 340 341/* Code literals */ 342a.internal code.literal { 343 color: var(--link-color); 344} 345 346a.internal:visited code.literal { 347 color: var(--link-color-visited); 348} 349 350/* Syntax highlighting */ 351 352.tab div[class^='highlight']:last-child { 353 margin-bottom: 1em; 354} 355 356.rst-content tt.literal, .rst-content code.literal, .highlight { 357 border-radius: 0.25rem; 358} 359 360.highlight { 361 background-color: var(--highlight-background-color); 362} 363 364/* Emphasized lines */ 365.highlight .hll { 366 background-color: var(--highlight-background-emph-color); 367} 368 369.highlight .gh /* Generic.Heading */, 370.highlight .gu /* Generic.Subheading */, 371.highlight .go /* Generic.Output */, 372.highlight .gt /* Generic.Traceback */ { 373 color: var(--highlight-default-color); 374} 375 376.highlight .c /* Comment */, 377.highlight .c1 /* Comment.Single */, 378.highlight .cm /* Comment.Multiline */, 379.highlight .cs /* Comment.Special */ { 380 color: var(--highlight-comment-color); 381} 382 383.highlight .bp /* Name.Builtin.Pseudo */, 384.highlight .k /* Keyword */, 385.highlight .kc /* Keyword.Constant */, 386.highlight .kd /* Keyword.Declaration */, 387.highlight .kn /* Keyword.Namespace */, 388.highlight .kp /* Keyword.Pseudo */, 389.highlight .kr /* Keyword.Reserved */, 390.highlight .kt /* Keyword.Type */, 391.highlight .ow /* Operator.Word */ { 392 color: var(--highlight-keyword-color); 393} 394 395.highlight .ch /* Comment.Hashbang */, 396.highlight .cp /* Comment.Preproc */ { 397 color: var(--highlight-keyword2-color); 398} 399 400.highlight .m /* Literal.Number */, 401.highlight .mf /* Literal.Number.Float */, 402.highlight .mi /* Literal.Number.Integer */, 403.highlight .il /* Literal.Number.Integer.Long */, 404.highlight .mb /* Literal.Number.Bin */, 405.highlight .mh /* Literal.Number.Hex */, 406.highlight .mo /* Literal.Number.Oct */ { 407 color: var(--highlight-number-color); 408} 409 410.highlight .na /* Name.Attribute */, 411.highlight .nd /* Name.Decorator */, 412.highlight .ni /* Name.Entity */, 413.highlight .nl /* Name.Label */ { 414 color: var(--highlight-decorator-color); 415} 416 417.highlight .nb /* Name.Builtin */, 418.highlight .ne /* Name.Exception */ { 419 color: var(--highlight-type-color); 420} 421 422.highlight .nc /* Name.Class */, 423.highlight .nn /* Name.Namespace */, 424.highlight .no /* Name.Constant */, 425.highlight .nv /* Name.Variable */, 426.highlight .vc /* Name.Variable.Class */, 427.highlight .vg /* Name.Variable.Global */, 428.highlight .vi /* Name.Variable.Instance */, 429.highlight .vm /* Name.Variable.Magic */ { 430 color: var(--highlight-type2-color); 431} 432 433.highlight .nf /* Name.Function */, 434.highlight .fm /* Name.Function.Magic */, 435.highlight .nt /* Name.Tag */ { 436 color: var(--highlight-function-color); 437} 438 439.highlight .o /* Operator */, 440.highlight .si /* Literal.String.Interpol */, 441.highlight .sx /* Literal.String.Other */, 442.highlight .sr /* Literal.String.Regex */, 443.highlight .ss /* Literal.String.Symbol */ { 444 color: var(--highlight-operator-color); 445} 446 447.highlight .cpf/* Comment.PreprocFile */, 448.highlight .s /* Literal.String */, 449.highlight .s1 /* Literal.String.Single */, 450.highlight .s2 /* Literal.String.Double */, 451.highlight .sc /* Literal.String.Char */, 452.highlight .se /* Literal.String.Escape */, 453.highlight .sa /* Literal.String.Affix */, 454.highlight .sb /* Literal.String.Backtick */, 455.highlight .dl /* Literal.String.Delimiter */, 456.highlight .sd /* Literal.String.Doc */, 457.highlight .sh /* Literal.String.Heredoc */ { 458 color: var(--highlight-string-color); 459} 460 461/* Admonition tweaks */ 462 463.rst-content .admonition, 464.rst-content .admonition.note, 465.rst-content .admonition.seealso { 466 background-color: var(--admonition-note-background-color); 467 color: var(--admonition-note-color); 468 overflow: auto; 469} 470 471.rst-content .admonition .admonition-title, 472.rst-content .admonition.note .admonition-title, 473.rst-content .admonition.seealso .admonition-title { 474 background-color: var(--admonition-note-title-background-color); 475 color: var(--admonition-note-title-color); 476} 477 478.rst-content .admonition.attention, 479.rst-content .admonition.caution, 480.rst-content .admonition.warning { 481 background-color: var(--admonition-attention-background-color); 482 color: var(--admonition-attention-color); 483 overflow: auto; 484} 485 486.rst-content .admonition.attention .admonition-title, 487.rst-content .admonition.caution .admonition-title, 488.rst-content .admonition.warning .admonition-title { 489 background-color: var(--admonition-attention-title-background-color); 490 color: var(--admonition-attention-title-color); 491} 492 493.rst-content .admonition.danger { 494 background-color: var(--admonition-danger-background-color); 495 color: var(--admonition-danger-color); 496 overflow: auto; 497} 498 499.rst-content .admonition.danger .admonition-title { 500 background-color: var(--admonition-danger-title-background-color); 501 color: var(--admonition-danger-title-color); 502} 503 504.rst-content .admonition.tip, 505.rst-content .admonition.important { 506 background-color: var(--admonition-tip-background-color); 507 color: var(--admonition-tip-color); 508 overflow: auto; 509} 510 511.rst-content .admonition.tip .admonition-title, 512.rst-content .admonition.important .admonition-title { 513 background-color: var(--admonition-tip-title-background-color); 514 color: var(--admonition-tip-title-color); 515} 516 517/* Admonition tweaks - sphinx_togglebutton */ 518 519.rst-content .admonition.toggle { 520 overflow: visible; 521} 522 523.rst-content .admonition.toggle button { 524 display: inline-flex; 525 color: var(--admonition-note-title-color); 526} 527 528.rst-content .admonition.toggle .tb-icon { 529 height: 1em; 530 width: 1em; 531} 532 533/* Keyboard shortcuts tweaks */ 534kbd, .kbd, 535.rst-content :not(dl.option-list) > :not(dt):not(kbd):not(.kbd) > kbd, 536.rst-content :not(dl.option-list) > :not(dt):not(kbd):not(.kbd) > .kbd { 537 background-color: var(--kbd-background-color); 538 border: 1px solid var(--kbd-outline-color); 539 border-radius: 3px; 540 box-shadow: inset 0 -1px 0 var(--kbd-shadow-color); 541 color: var(--kbd-text-color); 542 display: inline-block; 543 font-size: 12px; 544 line-height: 11px; 545 padding: 4px 5px; 546 vertical-align: middle; 547} 548 549/* guilabel and menuselection tweaks */ 550.rst-content .guilabel, 551.rst-content .menuselection { 552 color: var(--body-color); 553 background-color: var(--guiitems-background-color); 554 border-color: var(--guiitems-border-color); 555} 556 557/* heading tweaks to make document hierarchy easier to grasp */ 558 559.rst-content section > h1 { 560 font-weight: 700; 561 margin-bottom: 2.5rem; 562 position: relative; 563 line-height: 1; 564 z-index: 1; 565} 566 567.rst-content section > h1::before { 568 content: ''; 569 position: absolute; 570 z-index:-1; 571 left: 0; 572 right: 0; 573 height: 4px; 574 bottom: -1px; 575 background: linear-gradient(to right, var(--admonition-note-title-background-color), var(--admonition-note-title-background-color) 50%, var(--admonition-note-background-color) 80%, transparent); /* Example gradient */ 576 opacity:50%; 577} 578 579.rst-content section > h2, 580.rst-content section > h3, 581.rst-content section > h4, 582.rst-content section > h5 { 583 font-weight: 500; 584 padding-inline-start: 8px; 585 margin-inline-start: 0px; 586 border-inline-start: 8px solid; 587 padding-top: 0.2em; 588 padding-bottom: 0.2em; 589} 590 591.rst-content section > h2 { 592 border-color: var(--admonition-note-title-background-color); 593} 594 595.rst-content section > h3 { 596 border-color: var(--admonition-note-background-color); 597} 598 599.rst-content section > h4 { 600 border-color: transparent; 601 font-weight: 400; 602} 603 604.rst-content section > h5 { 605 border-color: transparent; 606 font-weight: 100; 607} 608 609/* Buttons */ 610 611.btn-neutral { 612 background-color: var(--btn-neutral-background-color) !important; 613 color: var(--body-color) !important; 614} 615 616.btn-neutral:hover { 617 background-color: var(--btn-neutral-hover-background-color) !important; 618} 619 620.btn-neutral:visited { 621 color: var(--body-color) !important; 622} 623 624/* Navigation bar logo and search */ 625 626.logo { 627 opacity: var(--logo-opacity); 628} 629 630.wy-side-nav-search > a img.logo { 631 /* Fixed size to prevent reflows and support hiDPI displays */ 632 /* A 5 pixel margin is added on each side. The logo itself displays at 200×100 at 100% scaling. */ 633 width: 210px; 634 height: 105px; 635} 636 637.wy-side-nav-search { 638 background-color: var(--navbar-background-color); 639} 640 641.wy-side-nav-search.fixed { 642 position: fixed; 643} 644 645@media only screen and (min-width: 769px) { 646 /* Simulate a drop shadow that only affects the bottom edge */ 647 /* This is used to indicate the search bar is fixed */ 648 .wy-side-nav-search.fixed-and-scrolled::after { 649 content: ''; 650 position: absolute; 651 left: 0; 652 bottom: -8px; 653 width: 300px; 654 height: 8px; 655 pointer-events: none; 656 background: linear-gradient(hsla(0, 0%, 0%, 0.2), transparent); 657 } 658} 659 660.wy-side-nav-search > a:hover, 661.wy-side-nav-search .wy-dropdown > a:hover { 662 background-color: var(--navbar-background-color-hover); 663} 664 665.wy-side-nav-search > a:active, 666.wy-side-nav-search .wy-dropdown > a:active { 667 background-color: var(--navbar-background-color-active); 668} 669 670.wy-side-nav-search input[type=search] { 671 width: 100%; 672 border-radius: 50px; 673 padding: 6px 12px; 674 background-color: var(--input-background-color); 675 color: var(--body-color); 676 /* Avoid reflowing when toggling the focus state */ 677 border: 2px solid transparent; 678 box-shadow: none; 679 /* Make visual feedback instant */ 680 transition: none; 681 font-size: 14px; 682} 683 684.wy-side-nav-search input[type="search"]:focus { 685 border: 2px solid var(--input-focus-border-color); 686} 687 688.wy-side-nav-search input[type="search"]::placeholder { 689 color: var(--body-color); 690 opacity: 0.55; 691} 692 693/* Navigation bar */ 694 695.wy-nav-side { 696 background-color: var(--navbar-background-color); 697} 698 699.wy-menu-vertical header, 700.wy-menu-vertical p.caption { 701 color: var(--navbar-heading-color); 702 703 /* Improves the appearance of uppercase text */ 704 letter-spacing: 0.75px; 705} 706 707/* Mobile navigation */ 708 709.wy-nav-top, 710.wy-nav-top a { 711 background-color: var(--navbar-background-color); 712 color: var(--navbar-level-1-color); 713} 714 715/* Version branch label below the logo */ 716.wy-side-nav-search > div.version { 717 color: var(--navbar-level-3-color); 718 opacity: 0.9; 719} 720 721/* First level of navigation items */ 722 723.wy-menu-vertical a { 724 color: var(--navbar-level-1-color); 725} 726 727.wy-menu-vertical a:hover { 728 background-color: var(--navbar-background-color-hover); 729 color: var(--navbar-level-1-color); 730} 731 732.wy-menu-vertical a:active { 733 background-color: var(--navbar-background-color-active); 734} 735 736.wy-menu-vertical li.toctree-l1.current > a { 737 border: none; 738} 739 740.wy-side-nav-search, .wy-menu-vertical a, .wy-menu-vertical a span.toctree-expand, 741.wy-menu-vertical li.toctree-l2 a span.toctree-expand { 742 color: var(--navbar-level-3-color); 743 opacity: 0.9; 744 margin-right: 8px; 745} 746 747.wy-side-nav-search, .wy-menu-vertical a, .wy-menu-vertical a:hover span.toctree-expand, 748.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand { 749 color: var(--navbar-level-2-color); 750 opacity: 1; 751} 752 753.wy-side-nav-search, .wy-menu-vertical a, .wy-menu-vertical a:active span.toctree-expand, 754.wy-menu-vertical li.toctree-l2 a:active span.toctree-expand { 755 color: var(--navbar-level-1-color); 756 opacity: 1; 757} 758 759/* Second (and higher) levels of navigation items */ 760 761.wy-menu-vertical li.current a { 762 /* Make long words always display on a single line, keep wrapping for multiple words */ 763 /* This fixes the class reference titles' display with very long class names */ 764 display: flex; 765} 766 767.wy-menu-vertical li.current a, 768.wy-menu-vertical li.toctree-l2.current > a, 769.wy-menu-vertical li.toctree-l2.current li.toctree-l3 > a, 770.wy-menu-vertical li.toctree-l2.current li.toctree-l4 > a { 771 background-color: var(--navbar-current-background-color); 772 color: var(--navbar-level-2-color); 773 border-color: var(--navbar-current-background-color); 774} 775 776.wy-menu-vertical li.current a:hover, 777.wy-menu-vertical li.toctree-l2.current > a:hover, 778.wy-menu-vertical li.toctree-l2.current li.toctree-l3 > a:hover, 779.wy-menu-vertical li.toctree-l3.current li.toctree-l4 > a:hover { 780 background-color: var(--navbar-current-background-color-hover); 781} 782 783.wy-menu-vertical li.current a:active, 784.wy-menu-vertical li.toctree-l2.current > a:active, 785.wy-menu-vertical li.toctree-l2.current li.toctree-l3 > a:active, 786.wy-menu-vertical li.toctree-l3.current li.toctree-l4 > a:active { 787 background-color: var(--navbar-current-background-color-active); 788} 789 790.wy-menu-vertical a { 791 /* This overrides 8px margin added in other multi-selector rules */ 792 margin-right: 0; 793} 794 795/* Banner panel in sidebar */ 796.wy-nav-side .ethical-rtd.fixed { 797 position: fixed; 798} 799 800/* Version selector (only visible on Read the Docs) */ 801 802.rst-versions { 803 background-color: var(--navbar-current-background-color); 804} 805 806.rst-versions a, 807.rst-versions .rst-current-version, 808.rst-versions .rst-current-version .fa, 809.rst-versions .rst-other-versions dd a { 810 color: var(--navbar-level-1-color); 811} 812 813.rst-versions .rst-other-versions small { 814 color: var(--navbar-level-3-color); 815} 816 817.rst-versions .rst-other-versions dd a:hover { 818 text-decoration: underline; 819} 820 821.rst-versions .rst-other-versions { 822 color: var(--navbar-heading-color); 823} 824 825.rst-versions .rst-current-version { 826 background-color: var(--navbar-current-background-color); 827} 828 829.rst-versions .rst-current-version:hover { 830 background-color: var(--navbar-current-background-color-hover); 831} 832 833.rst-versions .rst-current-version:active { 834 background-color: var(--navbar-current-background-color-active); 835} 836 837.rst-versions.shift-up { 838 overflow-y: auto; 839} 840 841/* Hide the obnoxious automatic highlight in search results */ 842.rst-content .highlighted { 843 background-color: transparent; 844 font-weight: inherit; 845 padding: 0; 846} 847 848/* Allows the scrollbar to be shown in the sidebar */ 849@media only screen and (min-width: 769px) { 850 .wy-side-scroll { 851 overflow: hidden; 852 } 853 854 .wy-nav-side .wy-side-scroll .ethical-rtd { 855 width: calc(300px - 1.25em); 856 padding: 0 0 0 1em; 857 } 858} 859.wy-menu.wy-menu-vertical { 860 overflow-y: auto; 861 overflow-x: hidden; 862 max-height: calc(100% - 243px); 863} 864@media screen and (max-width: 768px) { 865 .wy-nav-side { 866 padding-bottom: 44px; 867 } 868 .wy-menu.wy-menu-vertical { 869 overflow-y: initial; 870 max-height: initial; 871 } 872 .wy-nav-content { 873 min-height: calc(100vh - 64px); 874 min-height: calc(100dvh - 64px); 875 } 876} 877 878/* Scrollbar styling */ 879.wy-menu.wy-menu-vertical { 880 scrollbar-color: var(--navbar-scrollbar-color) var(--navbar-scrollbar-background); 881} 882.wy-menu.wy-menu-vertical::-webkit-scrollbar { 883 width: .75rem; 884} 885.wy-menu.wy-menu-vertical::-webkit-scrollbar-track { 886 background-color: var(--navbar-scrollbar-background); 887} 888.wy-menu.wy-menu-vertical::-webkit-scrollbar-thumb { 889 background-color: var(--navbar-scrollbar-color); 890} 891/* Firefox does the dimming on hover automatically. We emulate it for Webkit-based browsers. */ 892.wy-menu.wy-menu-vertical::-webkit-scrollbar-thumb:hover { 893 background-color: var(--navbar-scrollbar-hover-color); 894} 895.wy-menu.wy-menu-vertical::-webkit-scrollbar-thumb:active { 896 background-color: var(--navbar-scrollbar-active-color); 897} 898 899/* Misc tweaks */ 900 901.rst-columns { 902 column-width: 18em; 903} 904 905.rst-content div.figure, .rst-content figure { 906 text-align: center; 907} 908 909.wy-alert.wy-alert-danger { 910 background-color: var(--admonition-danger-background-color); 911} 912 913 914dark-mode-toggle::part(fieldset) { 915 padding-inline: 0.75rem; 916 padding-block: 0; 917} 918 919dark-mode-toggle::part(darkLabel), 920dark-mode-toggle::part(lightLabel), 921dark-mode-toggle::part(toggleLabel){ 922 font-size: unset; 923} 924 925div.graphviz > object { 926 filter: var(--graphviz-filter); 927} 928 929/* Home page grid display */ 930.grid { 931 list-style-type: none !important; 932 display: -webkit-box; 933 display: -ms-flexbox; 934 display: flex; 935 -ms-flex-wrap: wrap; 936 flex-wrap: wrap; 937 -webkit-box-pack: center; 938 -ms-flex-pack: center; 939 justify-content: center; 940 margin: 1rem auto; 941 max-width: calc((160px + 2rem) * 4); 942} 943 944.grid-item { 945 list-style-type: none !important; 946 -webkit-box-flex: 0; 947 -ms-flex: 0 0 auto; 948 flex: 0 0 auto; 949 width: 150px; 950 text-align: center; 951 margin: 1rem; 952} 953 954.grid-item a { 955 display: block; 956 width: 150px; 957 height: 150px; 958 padding: 20px; 959 display: -webkit-box; 960 display: -ms-flexbox; 961 display: flex; 962 -webkit-box-orient: vertical; 963 -webkit-box-direction: normal; 964 -ms-flex-direction: column; 965 flex-direction: column; 966 -webkit-box-pack: center; 967 -ms-flex-pack: center; 968 justify-content: center; 969 -webkit-box-align: center; 970 -ms-flex-align: center; 971 align-items: center; 972 border-radius: 1rem; 973 background: linear-gradient(135deg, #0070c5 0%, #5c13a5 100%); 974 color: white; 975} 976 977.grid-item h2 { 978 font-size: 1rem; 979} 980 981.grid-item img { 982 margin-bottom: 1rem; 983 max-width: 75%; 984} 985 986.grid-item a:hover { 987 text-decoration: none; 988} 989 990.grid-item p { 991 font-size: 0.9rem; 992 margin-top: 0.5rem; 993 color: var(--body-color); 994 font-weight: 200; 995 margin-left: -0.9em; 996 margin-right: -0.9em; 997 line-height: 1.4rem; 998} 999 1000.grid-icon { 1001 line-height: 1.5; 1002 font-size: 3rem; 1003 color: white; 1004} 1005 1006.lastupdated { 1007 font-weight: 200; 1008 font-size: 0.9rem; 1009} 1010 1011/* Make actual document take all vertical space available so that footer is always at the bottom */ 1012 1013.rst-content { 1014 flex: 1; 1015 display: flex; 1016 flex-direction: column; 1017 width: 100%; 1018} 1019 1020.document { 1021 flex-grow: 1; 1022} 1023 1024/* Custom search box, including search engine selection */ 1025 1026.search-container { 1027 position: relative; 1028} 1029 1030#search-se-settings-icon { 1031 position: absolute; 1032 color: var(--body-color); 1033 right: 10px; 1034 top: 50%; 1035 transform: translateY(-50%); 1036 cursor: pointer; 1037 opacity: 0.8; 1038} 1039 1040#search-se-menu { 1041 display: none; 1042 position: absolute; 1043 font-size: 11px; 1044 background-color: var(--input-background-color); 1045 color: var(--body-color); 1046 right: 0px; 1047 top: 36px; 1048 border: solid 1px var(--body-color); 1049 border-radius: 10px; 1050 z-index: 1000; 1051} 1052 1053#search-se-menu ul { 1054 list-style: none; 1055 margin: 0; 1056 padding: 2px; 1057} 1058 1059#search-se-menu ul li { 1060 padding: 8px 12px; 1061 cursor: pointer; 1062 display: flex; 1063 justify-content: space-between; 1064 align-items: center; 1065 gap: 1em; 1066} 1067 1068#search-se-menu [role="menuitemradio"]:focus { 1069 background-color: var(--navbar-current-background-color-hover); 1070 color: var(--navbar-level-1-color); 1071 border-radius: 10px; 1072} 1073 1074#search-se-menu ul li .fa-check { 1075 display: none; 1076 } 1077 1078 #search-se-menu ul li.selected .fa-check { 1079 display: inline; 1080 } 1081 1082.doxygroup::after { 1083 content: 'Doxygen'; 1084 display: inline-block; 1085 background-color: var(--admonition-note-title-background-color); 1086 color: var(--admonition-note-title-color); 1087 padding: 2px 8px; 1088 border-radius: 12px; 1089 margin-left: 8px; 1090 font-size: 0.875em; 1091 font-weight: bold; 1092} 1093 1094.code-sample-list li { 1095 margin-bottom: 0.25em; 1096} 1097.code-sample-name { 1098 font-weight: bold; 1099 padding-right: 0.5em; 1100} 1101 1102.code-sample-description { 1103 font-weight: 300; 1104} 1105 1106.code-sample-description::before { 1107 content: '\F0A9'; /* arrow-circle-right */ 1108 font-family: 'FontAwesome'; 1109 padding-right: 0.5em; 1110} 1111 1112li>a.code-sample-link.reference.internal { 1113 font-weight: 100; 1114} 1115 1116li>a.code-sample-link.reference.internal.current { 1117 text-decoration: underline; 1118} 1119