nuttx/Documentation/_static/custom.css

361 lines
10 KiB
CSS
Raw Normal View History

/****************************************************************************
* Documentation/_static/custom.css
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
2020-07-20 19:18:26 -03:00
/* Make content wider */
.wy-nav-content {
max-width: 1000px !important;
2020-07-20 19:18:26 -03:00
}
/* Make links inside C definitions more visible */
.c a:link {
color: black;
}
/* override table width restrictions */
2020-07-20 19:18:26 -03:00
@media screen and (min-width: 767px) {
.wy-table-responsive table td {
/* !important prevents the common CSS stylesheets from overriding
this as on RTD they are loaded after this stylesheet */
white-space: normal !important;
}
.wy-table-responsive {
overflow: visible !important;
}
}
/* remove useless padding on the sidebar */
.wy-nav-side
{
padding-bottom: 0em !important;
}
/* define some classes to be used */
table.valign-top td {
vertical-align: top !important;
}
/* Make <kbd> elements look nice */
kbd {
margin: 0px 0.1em;
padding: 0.1em 0.6em;
border-radius: 3px;
border: 1px solid rgb(204, 204, 204);
color: rgb(51, 51, 51);
line-height: 1.4;
font-family: Arial,Helvetica,sans-serif;
font-size: 10px;
display: inline-block;
box-shadow: 0px 1px 0px rgba(0,0,0,0.2), inset 0px 0px 0px 2px #ffffff;
background-color: rgb(247, 247, 247);
-moz-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2), 0 0 0 2px #ffffff inset;
-webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2), 0 0 0 2px #ffffff inset;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
text-shadow: 0 1px 0 #fff;
}
span.menuselection
{
margin: 0px 0.1em;
padding: 0.1em 0.1em;
border-radius: 3px;
border: 1px solid rgb(204, 204, 204);
}
2020-11-26 15:15:49 -03:00
div.version-selector
{
margin-bottom: 1em;
}
Documentation: brand new layout for NuttX documentation. The documentation grew one page at a time, so the tree follows the history of who wrote what and not the shape of NuttX. Scheduling is spread over three places, a driver page can sit above the subsystem that owns it, and the front page lists everything at the same level. That is a lot to face when all you want to know is where the scheduler lives. This change files every page under the code it describes. It is a move, not a rewrite: outside the ten pages named below, every page keeps the text that is already in master, and no page's text is deleted. What it does: * Groups the table of contents into nine chapters. * Moves the OS subsystems under os/: scheduling, memory, drivers, filesystem, networking, IPC, interrupts, libs, time. * Renames the platform pages to the names the source tree uses, and derives their tags from the tree instead of by hand. * Splits guides/ by subject. * Adds Documentation/redirects.py, with a rule for every page that left its old path, so old URLs keep working. The redirect page also carries a link's #anchor across to the new page. Ten pages have text that is new or rewritten. Nine of them are the landing page of a chapter, which has to exist for the new structure: index the front page os/index OS Design os/scheduling/index Scheduling os/interrupts/index Interrupts os/ipc/index IPC os/time/index Time and timers about/index About developing/index Developing NuttX ReleaseNotes/index Release notes The tenth is os/libs/libbuiltin, the only page here with technical content: libs/libbuiltin/ had no page at all. Five SVG diagrams come with these pages, hand-written XML with no editor metadata. Nothing outside Documentation/ is touched. How it was checked: * Sphinx builds with -W: no warnings, and no document left outside a toctree. * A script, offered in the PR, proves the narrow claim this rests on. For every page outside the ten named above it erases what a move touches -- link target, path, tag line, toctree block, table border -- from the whole old text and the whole new text, and requires the two to be byte for byte identical. It also requires every sentence of a deleted page to turn up somewhere, and every page that left its old path to have a redirect, from a URL that existed, to where its content went. It exits non-zero and names the page if any of that is not true, and it tests added pages too, so forgetting to declare one cannot make it pass. * An independent audit checked 133 factual claims on these ten pages against the tree, one shell command per claim: 130 confirmed, 1 refuted and fixed here, 2 not checkable. * tools/checkpatch.sh is clean over the range. The diff is large because moving a page changes every link that points to it. Most of it is pure renames, and board pages that gained one tag line. Assisted-by: Claude:claude-opus-5
2026-09-30 17:55:03 +02:00
/* Tag overview ------------------------------------------------------------
*
* The tag overview is a tree: architectures hold chip families, and families
* hold the parts fitted to boards. sphinx_rtd_theme lays nested sections
* flush against the same left margin, so the reader gets four levels of
* heading with nothing saying which belongs to which. Indent each level and
* draw the line it hangs from.
*
* The line is grey rather than a theme colour so that it survives being read
* through a dark mode extension, which tends to rewrite anything with a hue.
* !important throughout, for the same reason as the table rules above: on
* Read the Docs the common stylesheets load after this one.
*/
.tag-overview section {
margin-left: .25em !important;
padding-left: 1.75em !important;
border-left: 2px solid rgba(127, 127, 127, .45) !important;
}
/* Nothing may pull a heading back out of its own section: that cancels the
* indentation and puts every level back on the same margin, which is the bug
* this whole block exists to fix.
*/
.tag-overview section > h2,
.tag-overview section > h3,
.tag-overview section > h4 {
margin-left: 0 !important;
padding-left: 0 !important;
margin-top: 1.3em !important;
margin-bottom: .4em !important;
}
/* The long lists -- arm alone holds 71 chip families -- leave most of the
* width empty in one column and turn the page into scrolling. Only the lists
* worth splitting get the class, which the page generator decides; a short
* list stays in one column, because sending the eye across the width for
* three names costs more than it saves.
*
* The column width is in em so that the columns collapse back to one on a
* narrow screen instead of being cut off.
*/
.tag-overview .tag-columns .toctree-wrapper ul {
column-width: 16em;
column-gap: 2.5em;
}
.tag-overview .toctree-wrapper ul {
margin-bottom: 12px !important;
}
.tag-overview .toctree-wrapper li {
break-inside: avoid;
}
/* Sidebar header ----------------------------------------------------------
*
* The logo, the version selector and the search box, in the block at the top
* of the sidebar.
*
* The colours are not chosen, they are the ones in logos/NuttX_Simple.svg --
* the logo the NuttX Logos page names as the one to use on documentation.
* Taken from the SVG rather than sampled from a PNG, so they are the exact
* values the artwork carries:
*
* #3c34e3 the indigo of the diamond
* #2b2787 the navy it is shadowed in
* #5a96bd the steel blue of the trailing strokes
* #cee3f1 the pale blue of the letterform highlights
*
* This is also why the header stopped clashing with the logo standing in it:
* the theme's default #2980b9 is a cyan the NuttX mark has nothing to do
* with.
*/
.wy-side-nav-search {
padding: 1.4em .9em 1.1em;
background: linear-gradient(160deg, #3c34e3 0%, #2b2787 72%) !important;
}
/* Mark above wordmark, sharing one link. The theme's house icon is gone: the
* logo is the link home, and two ways home side by side is one too many.
*/
.wy-side-nav-search > a.nuttx-brand {
display: flex;
flex-direction: column;
align-items: center;
gap: .45em;
margin: 0 0 1em;
padding: 0;
background: none;
}
.wy-side-nav-search > a.nuttx-brand img.logo {
width: 58px;
height: 58px;
margin: 0;
padding: 0;
background: none;
}
.nuttx-brand-name {
font-size: 1.5em;
font-weight: 600;
letter-spacing: .015em;
line-height: 1;
color: #fff;
}
/* The version selector carried a comment in the template asking for
* something less raw than a bare OS dropdown. Give it the same shape and
* weight as the search field below so the two read as a pair.
*/
.version-selector {
display: flex;
align-items: center;
justify-content: center;
gap: .5em;
margin-bottom: .75em;
}
.nuttx-version-label {
font-size: .7em;
font-weight: 600;
letter-spacing: .09em;
text-transform: uppercase;
color: #cee3f1;
opacity: .8;
}
.version-selector select {
appearance: none;
-webkit-appearance: none;
padding: .32em 1.9em .32em .75em;
border: 1px solid rgba(90, 150, 189, .75);
border-radius: 6px;
background-color: rgba(255, 255, 255, .1);
color: #fff;
font-size: .85em;
line-height: 1.4;
cursor: pointer;
/* The chevron is drawn here rather than fetched, so the sidebar needs no
* extra asset and no network. */
background-image:
linear-gradient(45deg, transparent 50%, rgba(255, 255, 255, .75) 50%),
linear-gradient(135deg, rgba(255, 255, 255, .75) 50%, transparent 50%);
background-position: right 1em center, right .65em center;
background-size: 5px 5px, 5px 5px;
background-repeat: no-repeat;
}
.version-selector select:hover,
.version-selector select:focus {
border-color: rgba(255, 255, 255, .55);
background-color: rgba(255, 255, 255, .18);
outline: none;
}
.version-selector select option {
color: #404040;
background: #fff;
}
.wy-side-nav-search input[type="text"] {
border: 1px solid rgba(90, 150, 189, .75) !important;
border-radius: 20px !important;
background-color: rgba(255, 255, 255, .1) !important;
color: #fff;
padding: .5em 1em;
box-shadow: none !important;
}
.wy-side-nav-search input[type="text"]::placeholder {
color: #cee3f1;
opacity: .75;
}
.wy-side-nav-search input[type="text"]:focus {
border-color: rgba(255, 255, 255, .55) !important;
background-color: rgba(255, 255, 255, .16) !important;
outline: none;
}
/* Reading text ------------------------------------------------------------
*
* Three changes, all about how long a reader can stay on a page.
*
* Justified prose, with hyphenation on. Justifying without hyphens is what
* produces the rivers of white space that make justified text worse than
* ragged-right, so the two go together and neither is useful alone.
*
* Prose uses the full width of the content column, the same as the cards,
* the tables and the diagrams. A narrower measure reads better in the
* abstract -- 60 to 80 characters against the column's 107 -- but it gives
* a page two different right margins, and a paragraph that stops short of
* the boxes underneath it looks like a mistake rather than like
* typography. Hyphenation is what keeps the long line honest.
*
* A darker body colour. The theme's #404040 on white is a little washed
* out; #2b3137 raises the contrast from about 10:1 to 13:1, which reads as
* sharper without going to black, and black on white is its own kind of
* tiring.
*
* Links take the indigo from logos/NuttX_Simple.svg, the same colour as the
* sidebar, instead of the theme's unrelated cyan.
*/
.rst-content p,
.rst-content li,
.rst-content dd {
text-align: justify;
hyphens: auto;
-webkit-hyphens: auto;
}
/* Anything that is not running prose keeps its own alignment: code has
* meaningful whitespace, and a short line in a table or a card only looks
* stretched when justified.
*/
.rst-content pre,
.rst-content pre *,
.rst-content .highlight,
.rst-content .highlight *,
.rst-content table p,
.rst-content table li,
.rst-content .sd-card p,
.rst-content .sd-card li,
.rst-content .caption-text,
.rst-content figcaption,
.rst-content figcaption p,
.rst-content .toctree-wrapper li,
.rst-content dl.c dt,
.wy-menu-vertical li {
text-align: left !important;
hyphens: manual;
max-width: none;
}
.rst-content,
.rst-content p,
.rst-content li,
.rst-content dd,
.rst-content .section,
.wy-plain-list-disc li {
color: #2b3137;
}
.rst-content p,
.rst-content li,
.rst-content dd {
line-height: 1.72;
}
.rst-content a,
.rst-content a:visited {
color: #3c34e3;
}
.rst-content a:hover {
color: #2b2787;
}