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