blob: 45e4887ac37fd34858b088b6dcf5aa52e077eb58 [file] [log] [blame]
/**
* Copyright (c) 2019-2020, Juan Linietsky, Ariel Manzur and the Godot community
* Copyright (c) 2021, Teslabs Engineering S.L.
* SPDX-License-Identifier: CC-BY-3.0
*
* Various tweaks to the Read the Docs theme to better conform with Zephyr's
* visual identity. Many colors are also overridden to use CSS variables.
*/
body,
h1,
h2,
h3,
h4,
h5,
h6,
input[type="text"],
input[type="button"],
input[type="reset"],
input[type="submit"],
textarea,
legend,
.btn,
.rst-content .toctree-wrapper p.caption,
.rst-versions {
/* Use a system font stack for better performance (no Web fonts required) */
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";
}
h1,
h2,
h3,
h4,
h5,
h6,
legend,
.rst-content .toctree-wrapper p.caption {
/* Use a lighter font for headers (Medium instead of Bold) */
font-weight: 500;
}
.rst-content div.figure p.caption {
/* Tweak caption styling to be closer to typical captions */
text-align: center;
margin-top: 8px;
opacity: 0.75;
}
.rst-content div.figure.figure-w480 {
max-width: 480px;
}
p,
article ul,
article ol,
.wy-plain-list-disc,
.wy-plain-list-decimal,
.rst-content ol.arabic,
.rst-content .section ul,
.rst-content .toctree-wrapper ul,
.rst-content .section ol {
/* Increase the line height slightly to account for the different font */
line-height: 25px;
}
body,
.rst-content table.docutils thead {
color: var(--body-color);
}
a {
color: var(--link-color);
}
a:hover {
color: var(--link-color-hover);
text-decoration: underline;
}
a:active {
/* Add visual feedback when clicking on a link */
color: var(--link-color-active);
}
a:visited {
color: var(--link-color-visited);
}
a.btn:hover {
text-decoration: none;
}
.sphinx-tabs .sphinx-menu a.item {
/* Original definition has `!important` */
color: var(--link-color) !important;
}
.rst-content .toc-backref {
color: var(--link-color);
}
/* Style external links differently to make them easier to distinguish from internal links. */
.reference.external {
background-position: center right;
background-repeat: no-repeat;
background-image: var(--external-reference-icon);
padding-right: 13px;
}
hr,
#search-results .search li:first-child,
#search-results .search li {
border-color: var(--hr-color);
}
/* JavaScript documentation directives */
.rst-content dl:not(.docutils) dt {
background-color: var(--admonition-note-background-color) !important;
border-color: var(--admonition-note-title-background-color) !important;
color: var(--admonition-note-color) !important;
}
.rst-content dl:not(.docutils) dl dt {
background-color: var(--admonition-attention-background-color) !important;
border-color: var(--admonition-attention-title-background-color) !important;
color: var(--admonition-attention-color) !important;
}
.rst-content dt.sig .k {
color: var(--highlight-keyword2-color) !important;
font-style: normal !important;
}
.rst-content dt.sig .kt {
color: var(--highlight-keyword-color) !important;
font-style: normal !important;
}
.rst-content dt.sig .sig-name .n {
color: var(--highlight-function-color) !important;
}
.rst-content dt.sig .k,
.rst-content dt.sig .kt,
.rst-content dt.sig .n {
font-weight: normal !important;
}
.rst-content dl:not(.docutils) dt a.headerlink {
color: var(--link-color) !important;
}
.rst-content dl:not(.docutils) dt a.headerlink:visited {
color: var(--link-color-visited) !important;
}
footer,
#search-results .context {
color: var(--footer-color);
}
/* Icon tweaks */
a.icon-home,
a.icon-home:visited {
color: var(--navbar-level-1-color);
}
/* Sphinx Search extension */
/* .wy-body-for-nav is used for higher rule specificity */
/* Search popup body */
.wy-body-for-nav .search__outer {
background-color: var(--content-background-color);
border: 2px solid var(--content-background-color);
}
.wy-body-for-nav .search__cross svg {
fill: var(--body-color);
}
.wy-body-for-nav .search__outer::-webkit-scrollbar-track {
border-radius: 10px;
background-color: var(--content-background-color);
}
.wy-body-for-nav .search__outer::-webkit-scrollbar {
width: 7px;
height: 7px;
background-color: var(--content-background-color);
}
.wy-body-for-nav .search__outer::-webkit-scrollbar-thumb {
border-radius: 10px;
background-color: var(--hr-color);
}
/* Search input */
.wy-body-for-nav .search__outer__input {
background-color: var(--search-input-background-color);
background-image: none;
border-radius: 50px;
border: 2px solid transparent;
color: var(--body-color);
height: 36px;
padding: 6px 12px;
}
.wy-body-for-nav .search__outer__input:focus {
border-color: var(--input-focus-border-color);
}
.wy-body-for-nav .search__outer .bar:after,
.wy-body-for-nav .search__outer .bar:before {
display: none;
}
/* Search results item */
.wy-body-for-nav .search__result__single {
border-bottom-color: var(--hr-color);
}
/* Search item title */
.wy-body-for-nav .search__result__title {
color: var(--link-color);
border-bottom: none;
font-size: 120%;
font-weight: 400;
}
/* Search item section */
.wy-body-for-nav .outer_div_page_results:hover,
.wy-body-for-nav .search__result__box .active {
background-color: var(--search-active-color);
}
.wy-body-for-nav .search__result__subheading{
color: var(--body-color);
font-size: 100%;
font-weight: 400;
}
.wy-body-for-nav .search__result__content {
color: var(--footer-color);
}
/* Search item matching substring */
.wy-body-for-nav .search__outer .search__result__title span,
.wy-body-for-nav .search__outer .search__result__content span {
color: var(--search-match-color);
border-bottom: 1px solid var(--search-match-color);
background-color: var(--search-match-background-color);
padding: 0 2px;
}
.wy-body-for-nav .search__result__subheading span {
border-bottom-color: var(--body-color);
}
/* Search empty results */
/* The original styles are inlined, see https://github.com/readthedocs/readthedocs-sphinx-search/issues/48 */
.wy-body-for-nav .search__result__box {
color: var(--body-color) !important;
}
/* Search footer & credits */
.wy-body-for-nav .rtd__search__credits {
background-color: var(--search-credits-background-color);
border-color: var(--search-credits-background-color);
color: var(--search-credits-color);
padding: 4px 8px;
}
.wy-body-for-nav .rtd__search__credits a {
color: var(--search-credits-link-color);
}
/* Main sections */
.wy-nav-content-wrap {
background-color: var(--content-wrap-background-color);
}
.wy-nav-content {
background-color: var(--content-background-color);
}
.wy-body-for-nav {
background-color: var(--content-wrap-background-color);
}
@media only screen and (min-width: 769px) {
.wy-nav-content {
max-width: 915px;
}
}
/* Table display tweaks */
.rst-content table.docutils,
.wy-table-bordered-all td,
.rst-content table.docutils td,
.wy-table thead th,
.rst-content table.docutils thead th,
.rst-content table.field-list thead th {
border-color: var(--code-border-color);
}
.wy-table-odd td,
.wy-table-striped tr:nth-child(2n-1) td,
.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td {
background-color: var(--table-row-odd-background-color);
}
/* Override table no-wrap */
/* The first column cells are not verbose, no need to wrap them */
.wy-table-responsive table td:not(:nth-child(1)),
.wy-table-responsive table th:not(:nth-child(1)) {
white-space: normal;
}
/* Make sure not to wrap keyboard shortcuts */
.wy-table-responsive table td kbd {
white-space: nowrap;
}
/* Force table content font-size in responsive tables to be 100%
* fixing larger font size for paragraphs in the kconfig tables */
.wy-table-responsive td p {
font-size: 100%;
}
/* Code display tweaks */
code,
.rst-content tt,
.rst-content code {
font-size: 14px;
background-color: var(--code-background-color);
border: 1px solid var(--code-border-color);
}
.rst-content tt.literal,
.rst-content code.literal {
color: var(--code-literal-color);
}
.rst-content div[class^="highlight"] {
border-color: none;
border: none;
}
.rst-content pre.literal-block,
.rst-content div[class^="highlight"] pre,
.rst-content .linenodiv pre {
/* Increase the font size and line height in code blocks */
font-size: 14px;
line-height: 1.5;
}
.rst-content pre.literal-block {
border: none;
border-radius: 0.25rem;
background-color: var(--code-background-color);
}
/* Code tab display tweaks */
.ui.tabular.menu .active.item,
.ui.segment,
.sphinx-tabs-panel {
background-color: var(--code-background-color) !important;
}
.sphinx-tabs-tab {
color: var(--link-color) !important;
}
.sphinx-tabs-tab[aria-selected="true"] {
background-color: var(--code-background-color) !important;
border-bottom: 1px solid var(--code-background-color) !important;
}
/* Code literals */
a.internal code.literal {
color: var(--link-color);
}
a.internal:visited code.literal {
color: var(--link-color-visited);
}
/* Syntax highlighting */
.tab div[class^='highlight']:last-child {
margin-bottom: 1em;
}
.rst-content tt.literal, .rst-content code.literal, .highlight {
border-radius: 0.25rem;
}
.highlight {
background-color: var(--highlight-background-color);
}
/* Emphasized lines */
.highlight .hll {
background-color: var(--highlight-background-emph-color);
}
.highlight .gh /* Generic.Heading */,
.highlight .gu /* Generic.Subheading */,
.highlight .go /* Generic.Output */,
.highlight .gt /* Generic.Traceback */ {
color: var(--highlight-default-color);
}
.highlight .c /* Comment */,
.highlight .c1 /* Comment.Single */,
.highlight .cm /* Comment.Multiline */,
.highlight .cs /* Comment.Special */ {
color: var(--highlight-comment-color);
}
.highlight .bp /* Name.Builtin.Pseudo */,
.highlight .k /* Keyword */,
.highlight .kc /* Keyword.Constant */,
.highlight .kd /* Keyword.Declaration */,
.highlight .kn /* Keyword.Namespace */,
.highlight .kp /* Keyword.Pseudo */,
.highlight .kr /* Keyword.Reserved */,
.highlight .kt /* Keyword.Type */,
.highlight .ow /* Operator.Word */ {
color: var(--highlight-keyword-color);
}
.highlight .ch /* Comment.Hashbang */,
.highlight .cp /* Comment.Preproc */ {
color: var(--highlight-keyword2-color);
}
.highlight .m /* Literal.Number */,
.highlight .mf /* Literal.Number.Float */,
.highlight .mi /* Literal.Number.Integer */,
.highlight .il /* Literal.Number.Integer.Long */,
.highlight .mb /* Literal.Number.Bin */,
.highlight .mh /* Literal.Number.Hex */,
.highlight .mo /* Literal.Number.Oct */ {
color: var(--highlight-number-color);
}
.highlight .na /* Name.Attribute */,
.highlight .nd /* Name.Decorator */,
.highlight .ni /* Name.Entity */,
.highlight .nl /* Name.Label */ {
color: var(--highlight-decorator-color);
}
.highlight .nb /* Name.Builtin */,
.highlight .ne /* Name.Exception */ {
color: var(--highlight-type-color);
}
.highlight .nc /* Name.Class */,
.highlight .nn /* Name.Namespace */,
.highlight .no /* Name.Constant */,
.highlight .nv /* Name.Variable */,
.highlight .vc /* Name.Variable.Class */,
.highlight .vg /* Name.Variable.Global */,
.highlight .vi /* Name.Variable.Instance */,
.highlight .vm /* Name.Variable.Magic */ {
color: var(--highlight-type2-color);
}
.highlight .nf /* Name.Function */,
.highlight .fm /* Name.Function.Magic */,
.highlight .nt /* Name.Tag */ {
color: var(--highlight-function-color);
}
.highlight .o /* Operator */,
.highlight .si /* Literal.String.Interpol */,
.highlight .sx /* Literal.String.Other */,
.highlight .sr /* Literal.String.Regex */,
.highlight .ss /* Literal.String.Symbol */ {
color: var(--highlight-operator-color);
}
.highlight .cpf/* Comment.PreprocFile */,
.highlight .s /* Literal.String */,
.highlight .s1 /* Literal.String.Single */,
.highlight .s2 /* Literal.String.Double */,
.highlight .sc /* Literal.String.Char */,
.highlight .se /* Literal.String.Escape */,
.highlight .sa /* Literal.String.Affix */,
.highlight .sb /* Literal.String.Backtick */,
.highlight .dl /* Literal.String.Delimiter */,
.highlight .sd /* Literal.String.Doc */,
.highlight .sh /* Literal.String.Heredoc */ {
color: var(--highlight-string-color);
}
/* Admonition tweaks */
.rst-content .admonition,
.rst-content .admonition.note,
.rst-content .admonition.seealso {
background-color: var(--admonition-note-background-color);
color: var(--admonition-note-color);
overflow: auto;
}
.rst-content .admonition .admonition-title,
.rst-content .admonition.note .admonition-title,
.rst-content .admonition.seealso .admonition-title {
background-color: var(--admonition-note-title-background-color);
color: var(--admonition-note-title-color);
}
.rst-content .admonition.attention,
.rst-content .admonition.caution,
.rst-content .admonition.warning {
background-color: var(--admonition-attention-background-color);
color: var(--admonition-attention-color);
overflow: auto;
}
.rst-content .admonition.attention .admonition-title,
.rst-content .admonition.caution .admonition-title,
.rst-content .admonition.warning .admonition-title {
background-color: var(--admonition-attention-title-background-color);
color: var(--admonition-attention-title-color);
}
.rst-content .admonition.danger {
background-color: var(--admonition-danger-background-color);
color: var(--admonition-danger-color);
overflow: auto;
}
.rst-content .admonition.danger .admonition-title {
background-color: var(--admonition-danger-title-background-color);
color: var(--admonition-danger-title-color);
}
.rst-content .admonition.tip,
.rst-content .admonition.important {
background-color: var(--admonition-tip-background-color);
color: var(--admonition-tip-color);
overflow: auto;
}
.rst-content .admonition.tip .admonition-title,
.rst-content .admonition.important .admonition-title {
background-color: var(--admonition-tip-title-background-color);
color: var(--admonition-tip-title-color);
}
/* Keyboard shortcuts tweaks */
kbd, .kbd {
background-color: var(--kbd-background-color);
border: 1px solid var(--kbd-outline-color);
border-radius: 3px;
box-shadow: inset 0 -1px 0 var(--kbd-shadow-color);
color: var(--kbd-text-color);
display: inline-block;
font-size: 12px;
line-height: 11px;
padding: 4px 5px;
vertical-align: middle;
}
/* Buttons */
.btn-neutral {
background-color: var(--btn-neutral-background-color) !important;
color: var(--body-color) !important;
}
.btn-neutral:hover {
background-color: var(--btn-neutral-hover-background-color) !important;
}
.btn-neutral:visited {
color: var(--body-color) !important;
}
/* Navigation bar logo and search */
.logo {
opacity: var(--logo-opacity);
}
.wy-side-nav-search > a img.logo {
/* Fixed size to prevent reflows and support hiDPI displays */
/* A 5 pixel margin is added on each side. The logo itself displays at 200×100 at 100% scaling. */
width: 210px;
height: 105px;
}
.wy-side-nav-search {
background-color: var(--navbar-background-color);
}
.wy-side-nav-search.fixed {
position: fixed;
}
@media only screen and (min-width: 769px) {
/* Simulate a drop shadow that only affects the bottom edge */
/* This is used to indicate the search bar is fixed */
.wy-side-nav-search.fixed-and-scrolled::after {
content: '';
position: absolute;
left: 0;
bottom: -8px;
width: 300px;
height: 8px;
pointer-events: none;
background: linear-gradient(hsla(0, 0%, 0%, 0.2), transparent);
}
}
.wy-side-nav-search > a:hover,
.wy-side-nav-search .wy-dropdown > a:hover {
background-color: var(--navbar-background-color-hover);
}
.wy-side-nav-search > a:active,
.wy-side-nav-search .wy-dropdown > a:active {
background-color: var(--navbar-background-color-active);
}
.wy-side-nav-search input[type="text"] {
background-color: var(--input-background-color);
color: var(--body-color);
/* Avoid reflowing when toggling the focus state */
border: 2px solid transparent;
box-shadow: none;
/* Make visual feedback instant */
transition: none;
font-size: 14px;
}
.wy-side-nav-search input[type="text"]:focus {
border: 2px solid var(--input-focus-border-color);
}
.wy-side-nav-search input[type="text"]::placeholder {
color: var(--body-color);
opacity: 0.55;
}
/* Navigation bar */
.wy-nav-side {
background-color: var(--navbar-background-color);
}
.wy-menu-vertical header,
.wy-menu-vertical p.caption {
color: var(--navbar-heading-color);
/* Improves the appearance of uppercase text */
letter-spacing: 0.75px;
}
/* Mobile navigation */
.wy-nav-top,
.wy-nav-top a {
background-color: var(--navbar-background-color);
color: var(--navbar-level-1-color);
}
/* Version branch label below the logo */
.wy-side-nav-search > div.version {
color: var(--navbar-level-3-color);
opacity: 0.9;
}
/* First level of navigation items */
.wy-menu-vertical a {
color: var(--navbar-level-1-color);
}
.wy-menu-vertical a:hover {
background-color: var(--navbar-background-color-hover);
color: var(--navbar-level-1-color);
}
.wy-menu-vertical a:active {
background-color: var(--navbar-background-color-active);
}
.wy-menu-vertical li.toctree-l1.current > a {
border: none;
}
.wy-side-nav-search, .wy-menu-vertical a, .wy-menu-vertical a span.toctree-expand,
.wy-menu-vertical li.toctree-l2 a span.toctree-expand {
color: var(--navbar-level-3-color);
opacity: 0.9;
margin-right: 8px;
}
.wy-side-nav-search, .wy-menu-vertical a, .wy-menu-vertical a:hover span.toctree-expand,
.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand {
color: var(--navbar-level-2-color);
opacity: 1;
}
.wy-side-nav-search, .wy-menu-vertical a, .wy-menu-vertical a:active span.toctree-expand,
.wy-menu-vertical li.toctree-l2 a:active span.toctree-expand {
color: var(--navbar-level-1-color);
opacity: 1;
}
/* Second (and higher) levels of navigation items */
.wy-menu-vertical li.current a {
/* Make long words always display on a single line, keep wrapping for multiple words */
/* This fixes the class reference titles' display with very long class names */
display: flex;
}
.wy-menu-vertical li.current a,
.wy-menu-vertical li.toctree-l2.current > a,
.wy-menu-vertical li.toctree-l2.current li.toctree-l3 > a,
.wy-menu-vertical li.toctree-l2.current li.toctree-l4 > a {
background-color: var(--navbar-current-background-color);
color: var(--navbar-level-2-color);
border-color: var(--navbar-current-background-color);
}
.wy-menu-vertical li.current a:hover,
.wy-menu-vertical li.toctree-l2.current > a:hover,
.wy-menu-vertical li.toctree-l2.current li.toctree-l3 > a:hover,
.wy-menu-vertical li.toctree-l3.current li.toctree-l4 > a:hover {
background-color: var(--navbar-current-background-color-hover);
}
.wy-menu-vertical li.current a:active,
.wy-menu-vertical li.toctree-l2.current > a:active,
.wy-menu-vertical li.toctree-l2.current li.toctree-l3 > a:active,
.wy-menu-vertical li.toctree-l3.current li.toctree-l4 > a:active {
background-color: var(--navbar-current-background-color-active);
}
.wy-menu-vertical a {
/* This overrides 8px margin added in other multi-selector rules */
margin-right: 0;
}
/* Banner panel in sidebar */
.wy-nav-side .ethical-rtd.fixed {
position: fixed;
}
/* Version selector (only visible on Read the Docs) */
.rst-versions {
background-color: var(--navbar-current-background-color);
}
.rst-versions a,
.rst-versions .rst-current-version,
.rst-versions .rst-current-version .fa,
.rst-versions .rst-other-versions dd a {
color: var(--navbar-level-1-color);
}
.rst-versions .rst-other-versions small {
color: var(--navbar-level-3-color);
}
.rst-versions .rst-other-versions dd a:hover {
text-decoration: underline;
}
.rst-versions .rst-other-versions {
color: var(--navbar-heading-color);
}
.rst-versions .rst-current-version {
background-color: var(--navbar-current-background-color);
}
.rst-versions .rst-current-version:hover {
background-color: var(--navbar-current-background-color-hover);
}
.rst-versions .rst-current-version:active {
background-color: var(--navbar-current-background-color-active);
}
.rst-versions.shift-up {
overflow-y: auto;
}
/* Hide the obnoxious automatic highlight in search results */
.rst-content .highlighted {
background-color: transparent;
font-weight: inherit;
padding: 0;
}
/* Allows the scrollbar to be shown in the sidebar */
@media only screen and (min-width: 769px) {
.wy-side-scroll {
overflow: hidden;
}
.wy-nav-side .wy-side-scroll .ethical-rtd {
width: calc(300px - 1.25em);
padding: 0 0 0 1em;
}
}
.wy-menu.wy-menu-vertical {
overflow-y: auto;
overflow-x: hidden;
max-height: calc(100% - 243px);
}
@media screen and (max-width: 768px) {
.wy-nav-side {
padding-bottom: 44px;
}
.wy-menu.wy-menu-vertical {
overflow-y: initial;
max-height: initial;
}
}
/* Scrollbar styling */
.wy-menu.wy-menu-vertical {
scrollbar-color: var(--navbar-scrollbar-color) var(--navbar-scrollbar-background);
}
.wy-menu.wy-menu-vertical::-webkit-scrollbar {
width: .75rem;
}
.wy-menu.wy-menu-vertical::-webkit-scrollbar-track {
background-color: var(--navbar-scrollbar-background);
}
.wy-menu.wy-menu-vertical::-webkit-scrollbar-thumb {
background-color: var(--navbar-scrollbar-color);
}
/* Firefox does the dimming on hover automatically. We emulate it for Webkit-based browsers. */
.wy-menu.wy-menu-vertical::-webkit-scrollbar-thumb:hover {
background-color: var(--navbar-scrollbar-hover-color);
}
.wy-menu.wy-menu-vertical::-webkit-scrollbar-thumb:active {
background-color: var(--navbar-scrollbar-active-color);
}
/* Breathe tweaks */
.rst-content .section > dl > dd {
margin-left: 0;
}
.rst-content p.breathe-sectiondef-title {
font-size: 115%;
color: var(--link-color);
}
.rst-content dl:not(.docutils) dl:not(.rst-other-versions) dt {
background: var(--admonition-note-background-color) !important;
border-top: none !important;
border-left: none !important;
}
/* Misc tweaks */
.rst-columns {
column-width: 18em;
}
.rst-content div.figure, .rst-content figure {
text-align: center;
}
.wy-alert.wy-alert-danger {
background-color: var(--admonition-danger-background-color);
}
dark-mode-toggle::part(fieldset) {
padding-inline: 0.75rem;
padding-block: 0;
}
dark-mode-toggle::part(darkLabel),
dark-mode-toggle::part(lightLabel),
dark-mode-toggle::part(toggleLabel){
font-size: unset;
}
/* Home page grid display */
.grid {
list-style-type: none !important;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
margin: 1rem auto;
max-width: calc((160px + 2rem) * 4);
}
.grid-item {
list-style-type: none !important;
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: 150px;
text-align: center;
margin: 1rem;
}
.grid-item a {
display: block;
width: 150px;
height: 150px;
padding: 20px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
border-radius: 0.5rem;
background: linear-gradient(135deg, #0070c5 0%, #5c13a5 100%);
color: white;
}
.grid-item h2 {
font-size: 1rem;
}
.grid-item img {
margin-bottom: 1rem;
max-width: 75%;
}
.grid-item a:hover {
text-decoration: none;
}
.grid-item p {
font-size: 0.9rem;
margin-top: 0.5rem;
color: var(--body-color);
}
.grid-icon {
line-height: 1.5;
font-size: 3rem;
color: white;
}