/* RetroBIOS on top of Starlight. Starlight's dark theme is :root and its light theme :root[data-theme='light']. Colour pairs are the ones measured for WCAG AA on the previous site, in both themes. Classes the generator and the wiki pages use: .rb-lead first paragraph under a page title .rb-level-* level label (start, setup, explore, reference, contribute) .rb-cards, .rb-card card grid .rb-steps ordered list drawn as numbered steps .rb-button a link drawn as a button (.rb-button-primary: filled) .rb-terminal wraps a code block that shows terminal output .rb-cmd wraps a command that must wrap instead of scrolling code.rb-path a folder path shown as a chip .rb-figure a generated diagram (scripts/sitediagrams.py) .rb-bar inline coverage bar, width from --v .rb-details-* collapsible block, neutral unless caution or danger dl.rb-facts the facts of a file card, label and value side by side abbr.rb-term a glossary term, its definition on hover or tap */ :root { --sl-font: system-ui, -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif; --sl-font-mono: ui-monospace, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace; --sl-color-accent-low: #1f2147; --sl-color-accent: #aebcff; --sl-color-accent-high: #c9d2ff; --sl-color-text-accent: var(--sl-color-accent); --sl-text-h1: 2.25rem; --sl-text-h2: 1.5rem; --sl-text-h3: 1.2rem; --sl-text-h4: 1rem; --rb-link: #aebcff; --rb-link-strong: #c9d2ff; --rb-surface: #252838; --rb-border: #3a3d52; --rb-border-strong: #5a5e7a; --rb-text-secondary: #a6adc8; --rb-ok-fg: #a5d6a7; --rb-ok-bg: #1b3a1f; --rb-warn-fg: #ffcc80; --rb-warn-bg: #7a2e00; --rb-err-fg: #ef9a9a; --rb-err-bg: #7f1414; --rb-info-fg: #90caf9; --rb-info-bg: #0d2a55; --rb-muted-fg: #cfd8dc; --rb-muted-bg: #37474f; --rb-level-start: #a5d6a7; --rb-level-setup: #90caf9; --rb-level-explore: #ce93d8; --rb-level-reference: #cfd8dc; --rb-level-contribute: #ffcc80; --rb-terminal-bg: #12131c; --rb-terminal-fg: #e6e6f0; --rb-terminal-label: #9aa0c3; --rb-diagram-fill: #252838; --rb-diagram-stroke: #7c82a3; --rb-diagram-accent: #aebcff; } :root[data-theme='light'] { --sl-color-accent-low: #e3e5f6; --sl-color-accent: #273c8f; --sl-color-accent-high: #1d2f73; --sl-color-text-accent: var(--sl-color-accent); --rb-link: #273c8f; --rb-link-strong: #1d2f73; --rb-surface: #f5f6fa; --rb-border: #e0e3eb; --rb-border-strong: #b8bdcc; --rb-text-secondary: #546e7a; --rb-ok-fg: #1b5e20; --rb-ok-bg: #e8f5e9; --rb-warn-fg: #a33f00; --rb-warn-bg: #fff3e0; --rb-err-fg: #b71c1c; --rb-err-bg: #ffebee; --rb-info-fg: #0d47a1; --rb-info-bg: #e3f2fd; --rb-muted-fg: #455a64; --rb-muted-bg: #eceff1; --rb-level-start: #1b5e20; --rb-level-setup: #0d47a1; --rb-level-explore: #6a1b9a; --rb-level-reference: #455a64; --rb-level-contribute: #a33f00; --rb-terminal-bg: #1b1d2e; --rb-diagram-fill: #f5f6fa; --rb-diagram-stroke: #8c92ac; --rb-diagram-accent: #3b3f7a; } /* Links and focus */ .sl-markdown-content a:not(.rb-button):not(.rb-badge):not(.rb-permalink) { color: var(--rb-link); text-decoration-thickness: 0.08em; text-underline-offset: 0.14em; } .sl-markdown-content a:not(.rb-button):hover { text-decoration-thickness: 0.14em; } .sl-markdown-content a code { color: var(--rb-link); } /* The ring is the link colour: red is kept for what is wrong. The offset puts it on the page background, never on the fill it surrounds. */ :where(a, button, input, select, textarea, summary, abbr, [tabindex]):focus-visible { outline: 2px solid var(--rb-link); outline-offset: 2px; } /* Type scale: h2 two thirds of the h1, so a page of short blocks keeps one title and its sections, not a column of headlines. */ .sl-markdown-content h2 { font-weight: 600; letter-spacing: -0.01em; } .sl-markdown-content h3 { font-weight: 600; } .sl-markdown-content :not(h1, h2, h3, h4, h5, h6, .sl-heading-wrapper) + :is(.sl-heading-wrapper.level-h2, h2) { margin-top: 2.75rem; } .sl-markdown-content :not(h1, h2, h3, h4, h5, h6, .sl-heading-wrapper) + :is(.sl-heading-wrapper.level-h3, h3:not(.rb-file-title)) { margin-top: 1.75rem; } /* A row of buttons right under a heading does not touch it. */ .sl-markdown-content .sl-heading-wrapper:has(+ .rb-button) { margin-bottom: 0.5rem; } .sl-markdown-content .rb-lead { font-size: 1.05em; line-height: 1.55; max-width: 44em; } /* Breadcrumbs above the title */ .rb-breadcrumbs ol { display: flex; flex-wrap: wrap; gap: 0.15rem 0; margin: 0 0 0.4rem; padding: 0; list-style: none; font-size: var(--sl-text-sm); color: var(--rb-text-secondary); } .rb-breadcrumbs li + li::before { content: '/'; padding: 0 0.45rem; color: var(--rb-border-strong); } .rb-breadcrumbs a { display: inline-block; min-height: 24px; line-height: 24px; color: var(--rb-text-secondary); text-decoration: none; } .rb-breadcrumbs a:hover { color: var(--rb-link); text-decoration: underline; } /* Level label above a title */ .rb-level { display: inline-block; margin: 0 0 0.5rem; padding: 0.05rem 0.45rem; border: 1px solid currentColor; border-radius: 2px; font-size: 0.72rem; font-weight: 600; letter-spacing: 0.01em; line-height: 1.6; color: var(--rb-level-reference); } .rb-level-start { color: var(--rb-level-start); } .rb-level-setup { color: var(--rb-level-setup); } .rb-level-explore { color: var(--rb-level-explore); } .rb-level-reference { color: var(--rb-level-reference); } .rb-level-contribute { color: var(--rb-level-contribute); } /* Buttons */ .sl-markdown-content .rb-button { display: inline-flex; align-items: center; min-height: 44px; padding: 0.5rem 1.1rem; margin: 0.25rem 0.4rem 0.25rem 0; border: 2px solid var(--rb-link); border-radius: 4px; color: var(--rb-link); font-weight: 600; text-decoration: none; } .sl-markdown-content .rb-button-primary { background: var(--rb-link); color: var(--sl-color-black); } .sl-markdown-content .rb-button:hover { background: var(--sl-color-accent-low); } .sl-markdown-content .rb-button-primary:hover { background: var(--rb-link-strong); border-color: var(--rb-link-strong); } .sl-markdown-content table .rb-button { font-size: 0.8rem; padding: 0.4rem 0.8rem; } /* Badges */ .rb-badge { display: inline-block; padding: 0 0.4em; border-radius: 2px; font-size: 0.75rem; font-weight: 600; line-height: 1.6; white-space: nowrap; } .rb-badge-success { background: var(--rb-ok-bg); color: var(--rb-ok-fg); } .rb-badge-warning { background: var(--rb-warn-bg); color: var(--rb-warn-fg); } .rb-badge-danger { background: var(--rb-err-bg); color: var(--rb-err-fg); } .rb-badge-info { background: var(--rb-info-bg); color: var(--rb-info-fg); } .rb-badge-muted { background: var(--rb-muted-bg); color: var(--rb-muted-fg); } .sl-markdown-content .rb-badge a, .sl-markdown-content a.rb-badge { color: inherit; } /* A badge link sits in a dense list: it keeps a 24 px target (WCAG 2.5.8). */ .sl-markdown-content :is(.rb-sys-file, .rb-file-entry) li:has(.rb-badge a) { min-height: 24px; line-height: 24px; } .sl-markdown-content .rb-badge a { display: inline-block; min-width: 24px; line-height: 24px; text-align: center; } /* Headline figures */ .rb-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr)); gap: 0.6rem 1rem; margin: 1rem 0 1.5rem; padding: 0.8rem 1rem; border: 1px solid var(--rb-border); border-radius: 4px; background: var(--rb-surface); } .sl-markdown-content .rb-stats > *, .sl-markdown-content .rb-stat > * { margin: 0; } .rb-stat-value { display: block; font-size: 1.25rem; font-weight: 700; font-variant-numeric: tabular-nums; } .rb-stat-label { display: block; font-size: 0.75rem; color: var(--rb-text-secondary); } .sl-markdown-content img[src*='assets/logos/'] { padding: 2px; border-radius: 2px; background: #fff; } /* A system icon beside a console heading holds its box before it loads: it pushed every card below it down once it arrived. */ .sl-markdown-content :is(h2, h3) img { display: inline; width: 24px; height: 24px; object-fit: contain; vertical-align: middle; margin: 0 0.4rem 0 0; } /* Card grids */ .rb-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr)); gap: 0.8rem; margin: 1rem 0 1.5rem; } .sl-markdown-content .rb-cards > .rb-card { display: flex; flex-direction: column; gap: 0.35rem; margin: 0; padding: 0.8rem; border: 1px solid var(--rb-border); border-radius: 4px; background: var(--sl-color-bg); } .rb-card:is(:hover, :focus-within) { border-color: var(--rb-border-strong); } .sl-markdown-content .rb-card > * { margin: 0; } .sl-markdown-content .rb-card .rb-button { margin-top: auto; align-self: flex-start; } .sl-markdown-content .rb-card-logo { width: 40px; height: 40px; object-fit: contain; padding: 4px; border: 1px solid var(--rb-border); border-radius: 4px; background: #fff; vertical-align: middle; } /* Device tiles: the whole tile is the link. Logo on the left, name over what it runs on, so a phone shows a short row per setup. */ .sl-markdown-content .rb-tiles { grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: 0.6rem; } .sl-markdown-content .rb-cards > a.rb-tile { display: grid; grid-template-columns: 40px 1fr; grid-template-rows: auto auto; column-gap: 0.75rem; row-gap: 0.1rem; align-items: center; align-content: center; padding: 0.6rem 0.75rem; color: var(--sl-color-white); text-decoration: none; } .sl-markdown-content a.rb-tile .rb-card-logo { grid-row: 1 / span 2; } .sl-markdown-content a.rb-tile .rb-tile-name { color: var(--sl-color-text-accent); font-weight: 600; line-height: 1.3; } .sl-markdown-content a.rb-tile .rb-tile-runs { color: var(--sl-color-gray-3); font-size: var(--sl-text-sm); line-height: 1.35; } .sl-markdown-content a.rb-tile:hover .rb-tile-name { text-decoration: underline; } /* Numbered steps */ .sl-markdown-content .rb-steps > ol { counter-reset: rb-step; list-style: none; padding-left: 0; } .sl-markdown-content .rb-steps > ol > li { counter-increment: rb-step; position: relative; margin: 0 0 1.2rem; padding-left: 2.6rem; min-height: 1.8rem; } .sl-markdown-content .rb-steps > ol > li::before { content: counter(rb-step); position: absolute; top: 0; left: 0; width: 1.8rem; height: 1.8rem; border-radius: 4px; background: var(--rb-link); color: var(--sl-color-black); font-weight: 700; line-height: 1.8rem; text-align: center; } /* Path chip */ .sl-markdown-content code.rb-path { padding: 0.15rem 0.45rem; border: 1px solid var(--rb-border); border-radius: 2px; font-size: 0.8em; overflow-wrap: anywhere; } /* Inline coverage bar beside a number */ .rb-bar { display: inline-block; width: 5rem; height: 0.4rem; margin-right: 0.4rem; border-radius: 2px; background: var(--rb-border); vertical-align: middle; } .rb-bar > span { display: block; width: var(--v, 0%); height: 100%; border-radius: 2px; background: var(--rb-ok-fg); } /* Tables */ .sl-markdown-content table { font-variant-numeric: tabular-nums; } .sl-markdown-content table th { font-weight: 600; } .sl-markdown-content table[role='region']:focus-visible { outline: 2px solid var(--rb-link); outline-offset: 2px; } /* Key and value cards: the empty header row is not drawn */ .rb-meta-card thead, .sl-markdown-content table thead:not(:has(th:not(:empty))) { display: none; } /* Fixed layout: the label column keeps its share and a value wraps between words. Only code and long addresses break inside a word. */ .sl-markdown-content .rb-meta-card table { display: table; table-layout: fixed; width: 100%; } .rb-meta-card td { overflow-wrap: break-word; } .rb-meta-card td code { overflow-wrap: anywhere; } .rb-meta-card td a { word-break: normal; } .rb-meta-card td:first-child { font-weight: 600; color: var(--rb-text-secondary); width: 11rem; } /* Cross-reference by upstream, the last table of its page: the address column wraps instead of pushing the cores and platforms off screen. */ .sl-markdown-content .sl-heading-wrapper:has(> #by-upstream-emulator) ~ section td:has(a[href^='http']) { max-width: 22rem; overflow-wrap: anywhere; } /* Beside the column, the five columns share its width: at 1440 px the Platforms column sat 100 px past the edge. */ @media (min-width: 50rem) { .sl-markdown-content .sl-heading-wrapper:has(> #by-upstream-emulator) ~ section table { display: table; table-layout: fixed; width: 100%; } .sl-markdown-content .sl-heading-wrapper:has(> #by-upstream-emulator) ~ section :is(th, td) { overflow-wrap: anywhere; } .sl-markdown-content .sl-heading-wrapper:has(> #by-upstream-emulator) ~ section th:nth-child(1) { width: 26%; } .sl-markdown-content .sl-heading-wrapper:has(> #by-upstream-emulator) ~ section th:nth-child(2) { width: 26%; } .sl-markdown-content .sl-heading-wrapper:has(> #by-upstream-emulator) ~ section th:nth-child(3) { width: 17%; } .sl-markdown-content .sl-heading-wrapper:has(> #by-upstream-emulator) ~ section th:nth-child(4) { width: 18%; } .sl-markdown-content .sl-heading-wrapper:has(> #by-upstream-emulator) ~ section th:nth-child(5) { width: 13%; } } /* The id a platform writes for a system, beside the name in its heading: smaller and quieter than the name, set as code. */ .sl-markdown-content :is(h2, h3) small { margin-left: 0.4em; font-family: var(--sl-font-mono); font-size: 0.65em; font-weight: 400; color: var(--rb-text-secondary); overflow-wrap: anywhere; } .rb-timestamp { font-size: 0.8rem; color: var(--rb-text-secondary); margin-top: 2rem; padding-top: 1rem; border-top: 1px solid var(--rb-border); } /* File cards on system and emulator pages. A page holds hundreds: those off screen are laid out when they come near, and the column is wide enough for a sha256 on one line. */ body:has(.rb-sys-file, .rb-file-entry) { --sl-content-width: 54rem; } .sl-markdown-content :is(.rb-sys-file, .rb-file-entry) { border-top: 1px solid var(--rb-border); padding: 0.75rem 0 0.25rem; content-visibility: auto; contain-intrinsic-size: auto 320px; } .sl-markdown-content :is(.rb-sys-file, .rb-file-entry) > :first-child { margin-top: 0; } .sl-markdown-content .rb-file-title { margin: 0 0 0.3rem; font-size: 1rem; font-weight: 400; letter-spacing: normal; scroll-margin-top: 5rem; } .sl-markdown-content .rb-file-title code { font-weight: 700; } .sl-markdown-content .rb-search-skip > ul { margin-top: 0.1rem; } .sl-markdown-content :is(.rb-sys-file, .rb-file-entry) ul { margin: 0.3rem 0 0; padding-left: 1.2rem; font-size: 0.85rem; } .sl-markdown-content :is(.rb-sys-file, .rb-file-entry) li { margin: 0.1rem 0; } .rb-hash { font-family: var(--sl-font-mono); font-size: 0.78rem; color: var(--rb-text-secondary); overflow-wrap: anywhere; } .rb-hash code { background: none; padding: 0; overflow-wrap: anywhere; } .rb-permalink { display: inline-flex; align-items: center; min-height: 24px; margin-left: 0.4rem; font-size: 0.75rem; color: var(--rb-text-secondary); text-decoration: none; opacity: 0; } :is(.rb-sys-file, .rb-file-entry):hover .rb-permalink, .rb-permalink:focus { opacity: 1; } /* No hover on a touch screen: the link is always shown there. */ @media (hover: none) { .rb-permalink { opacity: 1; } } /* The facts of a file card: label column, value column, one column on a phone. */ .sl-markdown-content dl.rb-facts { display: grid; grid-template-columns: 9rem minmax(0, 1fr); gap: 0.2rem 1rem; margin: 0.4rem 0 0; font-size: 0.85rem; } .sl-markdown-content .rb-facts :is(dt, dd) { margin: 0; padding: 0; } .sl-markdown-content .rb-facts dt { font-size: 0.8rem; font-weight: 400; color: var(--rb-text-secondary); } .sl-markdown-content .rb-facts dd { min-width: 0; overflow-wrap: break-word; } .sl-markdown-content .rb-facts code { overflow-wrap: anywhere; } @media (max-width: 30rem) { .sl-markdown-content dl.rb-facts { grid-template-columns: minmax(0, 1fr); gap: 0; } .sl-markdown-content .rb-facts dd + dt { margin-top: 0.4rem; } } :is(.rb-sys-file, .rb-file-entry):has(> .rb-file-title:target) { background: var(--rb-surface); } /* Collapsible blocks are quiet: a closed block must not outweigh the command it explains. Colour is kept for caution and danger. */ .sl-markdown-content details.rb-details { border: 1px solid var(--rb-border); border-radius: 4px; background: transparent; padding: 0.6rem 1rem; } .sl-markdown-content details.rb-details:not(.rb-details-caution, .rb-details-danger):has(> summary:hover) { border-color: var(--rb-border-strong); } .sl-markdown-content details.rb-details-caution { border-color: var(--sl-color-orange); background: var(--sl-color-orange-low); } .sl-markdown-content details.rb-details-danger { border-color: var(--sl-color-red); background: var(--sl-color-red-low); } .sl-markdown-content details.rb-details > summary { min-height: 24px; font-size: 0.95rem; font-weight: 600; cursor: pointer; } /* Starlight's chevron, which turns when the block opens, in the muted colour. */ .sl-markdown-content details.rb-details > summary::before { background-color: var(--rb-text-secondary); } .sl-markdown-content details.rb-details[open] > summary { margin-bottom: 0.6rem; } /* Asides: a neutral box for notes and tips, no side stripe, no icon. Caution and danger keep their colour, as a 1 px border all round. */ .sl-markdown-content .starlight-aside { border: 1px solid var(--sl-color-asides-border); border-radius: 4px; } .sl-markdown-content .starlight-aside:is(.starlight-aside--note, .starlight-aside--tip) { --sl-color-asides-border: var(--rb-border); --sl-color-asides-text-accent: var(--sl-color-white); background: var(--rb-surface); } .sl-markdown-content .starlight-aside:is(.starlight-aside--note, .starlight-aside--tip) .starlight-aside__icon { display: none; } /* Terminal output: what the screen shows, not something to type */ .sl-markdown-content .rb-terminal .expressive-code pre { background: var(--rb-terminal-bg); color: var(--rb-terminal-fg); } /* Diagrams written by scripts/sitediagrams.py follow the theme */ .sl-markdown-content .rb-figure { margin: 1.2rem 0 1.6rem; } .sl-markdown-content .rb-figure svg { display: block; width: 100%; height: auto; max-width: 52rem; color: var(--sl-color-text); } .sl-markdown-content .rb-figure :is(figcaption, .rb-figure-caption) { display: block; max-width: 44em; margin-top: 0.4rem; font-size: 0.8rem; color: var(--rb-text-secondary); } .rb-diagram text { font-family: var(--sl-font); fill: currentColor; } .rb-diagram .rb-d-box { fill: var(--rb-diagram-fill); stroke: var(--rb-diagram-stroke); } .rb-diagram .rb-d-accent { stroke: var(--rb-diagram-accent); } .rb-diagram .rb-d-line { stroke: var(--rb-diagram-stroke); } .rb-diagram .rb-d-head { fill: var(--rb-diagram-stroke); } .rb-diagram .rb-d-num { fill: var(--rb-diagram-accent); } .rb-diagram .rb-d-numtext { fill: var(--sl-color-bg); } .rb-diagram .rb-d-muted { fill: var(--rb-text-secondary); } .rb-diagram-narrow { display: none !important; } @media (max-width: 37.5em) { .rb-diagram-wide { display: none !important; } .rb-diagram-narrow { display: block !important; } } /* Glossary terms */ abbr.rb-term { position: relative; text-decoration: underline dotted; text-underline-offset: 0.2em; cursor: help; } abbr.rb-term[data-open]::after { content: attr(data-definition); position: absolute; z-index: 10; top: calc(100% + 0.3rem); left: 0; width: max-content; max-width: min(20rem, 80vw); padding: 0.4rem 0.6rem; border: 1px solid var(--rb-border-strong); border-radius: 4px; background: var(--sl-color-bg); color: var(--sl-color-text); font-size: 0.85rem; font-weight: 400; line-height: 1.4; white-space: normal; } /* Forms: lookup, picker, table filters */ .rb-file-lookup, .rb-picker fieldset { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; } .sl-markdown-content :is(.rb-file-lookup, .rb-picker) :is(input, select, button) { min-height: 44px; padding: 0 0.6rem; border: 1px solid var(--rb-border-strong); border-radius: 4px; background: var(--sl-color-bg); color: var(--sl-color-text); font: inherit; } .sl-markdown-content .rb-file-lookup input { flex: 1 1 20rem; font-family: var(--sl-font-mono); } .sl-markdown-content :is(.rb-file-lookup, .rb-picker) button { background: var(--rb-link); color: var(--sl-color-black); font-weight: 600; border: 0; } .rb-visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; } .rb-table-filter { display: grid; grid-template-columns: minmax(14rem, 28rem) auto; gap: 0.35rem 0.8rem; align-items: end; margin: 1rem 0 0.45rem; } .sl-markdown-content .rb-table-filter > * { margin: 0; } .rb-table-filter label { grid-column: 1 / -1; color: var(--rb-text-secondary); font-size: 0.78rem; font-weight: 700; } .rb-table-filter input { width: 100%; min-height: 44px; border: 1px solid var(--rb-text-secondary); border-radius: 2px; background: var(--sl-color-bg); color: var(--sl-color-text); padding: 0.55rem 0.75rem; font: inherit; } .rb-table-filter-count { align-self: center; color: var(--rb-text-secondary); font-size: 0.8rem; white-space: nowrap; } /* 404 */ .sl-markdown-content .rb-notfound-search { display: inline-flex; align-items: center; min-height: 44px; padding: 0.55em 1.2em; border: 2px solid var(--rb-link); border-radius: 4px; background: none; color: var(--rb-link); font: inherit; font-weight: 700; cursor: pointer; } /* Search: a system page's file names rank it (its `files` meta field) but are not printed under the result. */ site-search .pagefind-ui__result-tags { display: none; } /* The site name keeps its size: Starlight sizes it from the h4 step. */ .site-title { font-size: var(--sl-text-xl); } @media (min-width: 50rem) { .site-title { font-size: var(--sl-text-2xl); } } /* Pagination and the phone menu button sit flat on the page. */ .pagination-links a { box-shadow: none; border-color: var(--rb-border); } .pagination-links a:hover { border-color: var(--rb-border-strong); } .pagination-links .link-title { font-size: 1.05rem; font-weight: 600; } .sl-menu-button { box-shadow: none; border: 1px solid var(--rb-border); background: transparent; color: var(--sl-color-white); } .sl-menu-button:has(~ :popover-open) { box-shadow: none; background: var(--sl-color-accent-low); } /* Sidebar: small grey group labels, regular links, the current page on a tinted background with no bar or rule beside it. */ #starlight__sidebar .top-level summary .large { font-size: var(--sl-text-xs); font-weight: 600; color: var(--rb-text-secondary); } #starlight__sidebar .top-level a { font-weight: 400; } #starlight__sidebar .top-level a[aria-current='page'] { background: var(--sl-color-accent-low); color: var(--sl-color-accent-high); font-weight: 600; } /* OS tabs wrap on a narrow phone instead of hiding the last one. */ starlight-tabs [role='tablist'] { flex-wrap: wrap; } starlight-tabs [role='tab'] { white-space: nowrap; } /* A page without "On this page" keeps the column, and the search box above it, where a page with one has them: they no longer jump between pages. */ :root[data-has-sidebar]:not([data-has-toc]) { --__toc-width: initial; } @media (min-width: 72rem) { :root[data-has-sidebar]:not([data-has-toc]) .main-pane { --sl-content-margin-inline: auto 0; width: min( calc(100% - var(--sl-sidebar-width)), calc(var(--sl-content-width) + (100% - var(--sl-content-width) - var(--sl-sidebar-width)) / 2) ); } } /* Licence line under every page */ .rb-copyright { margin: 1.5rem 0 0; font-size: var(--sl-text-xs); color: var(--sl-color-gray-3); } @media (max-width: 50rem) { /* Tables with an action column become one block per row, so the button is never behind a horizontal scroll (site.ts marks them). */ .sl-markdown-content table[data-rb-stack] { display: block; width: 100%; overflow: visible; } .sl-markdown-content table[data-rb-stack] thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); } .sl-markdown-content table[data-rb-stack] :is(tbody, tr) { display: block; } .sl-markdown-content table[data-rb-stack] tr { padding: 0.5rem 0; border-top: 1px solid var(--rb-border); } .sl-markdown-content table[data-rb-stack] td { display: block; position: relative; min-height: 1.6rem; padding: 0.25rem 0.6rem 0.25rem 8.4rem; border: 0; text-align: left !important; overflow-wrap: anywhere; } .sl-markdown-content table[data-rb-stack] td::before { content: attr(data-label); position: absolute; top: 0.25rem; left: 0.6rem; width: 7.4rem; font-weight: 600; color: var(--rb-text-secondary); } .sl-markdown-content table[data-rb-stack] td:empty { display: none; } /* A two-column table of labels and values: the label above, the value on the full width under it. */ .sl-markdown-content table[data-rb-stack='kv'] td { padding: 0 0.6rem; } .sl-markdown-content table[data-rb-stack='kv'] td::before { content: none; } .sl-markdown-content table[data-rb-stack='kv'] td:first-child { padding-bottom: 0.15rem; font-size: 0.85rem; font-weight: 600; color: var(--rb-text-secondary); } /* On a phone every command wraps: the end of a one-liner is never off-screen. */ .sl-markdown-content .expressive-code pre > code { white-space: pre-wrap; overflow-wrap: anywhere; } .sl-markdown-content :is(.rb-sys-file, .rb-file-entry) ul, .rb-hash { font-size: 0.75rem; } } @media (max-width: 50rem) { :root { --sl-text-h1: 1.875rem; } .rb-meta-card td:first-child { width: 40%; } } @media (max-width: 600px) { .rb-table-filter { grid-template-columns: 1fr; } .rb-table-filter label { grid-column: auto; } .rb-stats { grid-template-columns: repeat(auto-fit, minmax(5.5rem, 1fr)); } .rb-stat-value { font-size: 1.1rem; } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; } } /* Starlight sizes the header logo from --sl-nav-height, which also holds the tab row from 50rem up. Size it from the top bar alone. */ @media (min-width: 50rem) { header .site-title img { height: calc(4rem - 2 * var(--sl-nav-pad-y)); width: auto; } }