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