blob: afb17517737a3da18241484ca9af006366550922 [file] [edit]
/*
* psutil-sphinx-theme: design tokens.
*
* All shared variables (colors, fonts, layout dimensions) live here
* so per-component CSS files (layout.css, topbar.css, *.css) consume
* vars instead of hardcoded values. Loaded first so the cascade has
* the tokens available before any rule references them.
*/
:root {
/* ================================================================== */
/* Layout */
/* ================================================================== */
--topbar-height: 44px;
--left-sidebar-width: 260px;
--right-sidebar-width: 230px;
--content-max-width: 1240px;
--layout-width: calc(var(--left-sidebar-width) + var(--content-max-width));
/* ================================================================== */
/* Colors */
/* ================================================================== */
/* Surfaces (backgrounds). */
--bg: #ffffff;
--bg-page: #efefef;
--bg-sidebar: #343131;
--bg-topbar: #2a2828;
--bg-input: #ffffff;
--bg-key: #f0f0f0;
--kbd-bg: #f3f3f3;
--kbd-text: #6a6a6a;
--kbd-border: #c8c8c8;
--bg-search-highlight: #e1edf5;
--bg-hover: rgba(0, 0, 0, 0.04);
--bg-hover-on-dark: rgba(255, 255, 255, 0.08);
/* Text. */
--text: #404040;
--text-muted: #555555;
--text-secondary: #555555;
--text-on-dark: #d1d1d1;
--headings: #404040;
--ntuple-color: #333333;
/* Sidebar: left nav is always on a dark surface; tokens here
are constant across light/dark mode (only --bg-sidebar shifts
between the two). */
--sidebar-fg: #d9d9d9;
--sidebar-caption: #8aa8c0;
--sidebar-active-bg: #f0f0f0;
--sidebar-active-fg: #1a1a1a;
/* Inline code (`literals`). */
--inline-code-bg: rgba(175, 184, 193, 0.17);
--inline-code-text: inherit;
/* Borders. */
--border: #dddddd;
--scrollbar-thumb: #c1c1c1;
--border-radius: 6px;
--border-radius-code: 3px;
--accent: #2371a8;
--accent-ring: rgba(40, 100, 180, 0.25);
/* Inline API links (cross-refs to symbols). */
--links-api: #336699;
--links-api-underline: #336699;
/* Function/method signature box ("psutil.cpu_times(percpu=False)"). */
--func-sig-bg: #f0f4f7;
--func-sig-border: #336699;
--func-sig-text: #404040;
--func-sig-name: #404040;
--func-sig-param: #555555;
/* Lifted-surface accent (cards, sponsor logos). */
--surface-raised: #f0f4f7;
/* Admonitions (Note / Tip / Warning / Important / See also). */
--adm-padding-y: 5px;
--adm-title: black;
--adm-note-bg: #f5f5f5;
--adm-note-border: #ccc;
--adm-note-accent-border: #2980b9;
--adm-tip-bg: #f0faf0;
--adm-tip-border: #8aba8a;
--adm-warning-bg: #fff0f0;
--adm-warning-border: #e8a0a0;
--adm-important-bg: #fdf3dc;
--adm-important-border: #d4a23e;
--adm-seealso-bg: #f3f9fe;
--adm-seealso-border: #b0cfe8;
--adm-seealso-accent-border: #336699;
--adm-seealso-link: #2a6099;
--adm-seealso-hover: #2980b9;
/* Version directives (versionadded / versionchanged / deprecated). */
--versionadded-border: #4fc464;
--versionadded-color: #296433;
--versionchanged-border: #f4e34c;
--versionchanged-color: #854826;
--deprecated-border: #f44c4e;
--deprecated-color: #9f3133;
/* Tables. */
--table-header-bg: #f0f4f7;
--table-header-text: var(--text);
--table-row-odd: #f8f9fa;
--table-row-even: #ffffff;
--table-border: var(--border);
/* ================================================================== */
/* Fonts */
/* ================================================================== */
--font-body: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;
--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--code-line-height: 1.5;
/* ================================================================== */
/* Aliases (semantic names used by component files) */
/* ================================================================== */
--content-text: var(--text);
--code-font: var(--font-mono);
--links: var(--accent);
--surface-sunken: var(--bg-key);
--card-bg: var(--bg);
--card-border: var(--border);
--theme-transition: 0.2s ease;
}
/* ====================================================================== */
/* Dark mode */
/* ====================================================================== */
/*
* Dark theme overrides only the color tokens. Layout / fonts are
* mode-agnostic. data-theme is set on <html> by extrahead's inline
* script + theme-toggle.js.
*/
[data-theme="dark"] {
/* Surfaces. */
--bg: #1a1a1a;
--bg-page: #0e0e0e;
--bg-sidebar: #212121;
--bg-topbar: #181818;
--bg-input: #2a2a2a;
--bg-key: #2a2a2a;
--kbd-bg: #3a3a3a;
--kbd-text: #d4d4d4;
--kbd-border: #5a5a5a;
--bg-search-highlight: rgba(225, 237, 245, 0.15);
--bg-hover: rgba(255, 255, 255, 0.06);
--sidebar-active-bg: #404040;
--sidebar-active-fg: #fff;
/* Text. */
--text: #c8c8c8;
--text-muted: #9b9b9b;
--text-secondary: #d1d1d1;
--headings: #e0e0e0;
--ntuple-color: #6db99a;
/* Borders. */
--border: #2e2e2e;
--scrollbar-thumb: #4a4a4a;
/* Accent: lighter blue for sufficient contrast on dark. */
--accent: #6ab0de;
--accent-ring: rgba(106, 176, 222, 0.35);
/* API links + signature box. */
--links-api: #7ecfff;
--links-api-underline: #7ecfff;
--func-sig-bg: #2c2c2c;
--func-sig-border: #7ecfff;
--func-sig-text: #e0e0e0;
--func-sig-name: #e0e0e0;
--func-sig-param: #d1d1d1;
--surface-raised: #2c2c2c;
/* Inline code. */
--inline-code-bg: rgba(255, 255, 255, 0.08);
--inline-code-text: #e6e6e6;
/* Admonitions: dark mode overrides. */
--adm-title: #ddd;
--adm-note-bg: #2a2a2a;
--adm-note-border: #4a4a4a;
--adm-note-accent-border: #6ab0de;
--adm-tip-bg: #1a2a1a;
--adm-tip-border: #3a6a3a;
--adm-warning-bg: #472424;
--adm-warning-border: #8a3030;
--adm-important-bg: #2a200d;
--adm-important-border: #6e5328;
--adm-seealso-bg: #1d2e40;
--adm-seealso-border: #2d5280;
--adm-seealso-accent-border: #5599cc;
--adm-seealso-link: #90c8ee;
--adm-seealso-hover: #8bbfe0;
/* Version directives: dark mode overrides. */
--versionadded-color: #5ec46e;
--versionchanged-color: #b0873a;
--deprecated-color: #d06060;
/* Tables: dark mode overrides. */
--table-header-bg: #2d2d2d;
--table-row-odd: #222222;
--table-row-even: #272727;
--table-border: #424242;
}
/* ====================================================================== */
/* Theme transition */
/* ====================================================================== */
body,
.page,
.article,
.right-sidebar,
.right-sidebar-title,
.topbar,
.footer,
.search-page-form,
ul.search > li,
.shortcut-flyout-panel {
transition:
background-color var(--theme-transition),
color var(--theme-transition),
border-color var(--theme-transition);
}
.no-transition,
.no-transition *,
.no-transition *::before,
.no-transition *::after {
transition: none !important;
}
/* Honor the OS "reduce motion" setting: drop transitions, animations
and smooth scrolling everywhere. */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
/* ====================================================================== */
/* Utilities */
/* ====================================================================== */
/* .no-visited: suppresses the browser-default purple ":visited" color */
.no-visited:visited,
.no-visited a:visited {
color: inherit;
}
/* Thin, theme-aware scrollbars for every scrollable region (code
blocks, the TOC, tables, ...). */
* {
scrollbar-width: thin;
scrollbar-color: var(--scrollbar-thumb) transparent;
}
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-thumb {
background: var(--scrollbar-thumb);
border-radius: 4px;
}
::-webkit-scrollbar-track {
background: transparent;
}
/* about.html page */
.about-shot {
display: block;
max-width: 100%;
max-height: 560px;
width: auto;
height: auto;
margin: 0.4em 0 1.4em;
border: 1px solid var(--border);
border-radius: 6px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
/* Two screenshots side by side (light vs dark); wrap on narrow columns. */
.about-shot-pair {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin: 0.4em 0 1.4em;
}
.about-shot-pair .about-shot {
flex: 1 1 240px;
min-width: 0;
margin: 0;
}
/* Flash when clicking on a link / anchor */
@keyframes anchor-flash {
from {
background-color: var(--accent-ring);
}
}
:target > h1,
:target > h2,
:target > h3,
:target > h4,
:target > h5,
:target > h6,
:target + h1,
:target + h2,
:target + h3,
:target + h4,
:target + h5,
:target + h6,
dt:target {
animation: anchor-flash 1.8s ease-out;
}
/* Keyboard focus ring on interactive controls (both themes). The
browser default is nearly invisible on the dark topbar/sidebar. */
.topbar-link:focus-visible,
.topbar-btn:focus-visible,
.topbar-hamburger:focus-visible,
.topbar-text:focus-visible,
.topbar-version:focus-visible,
.topbar-logo:focus-visible,
.left-sidebar a:focus-visible,
.right-sidebar a:focus-visible,
.home-feature-card:focus-visible,
.home-platform-pill:focus-visible,
.home-stat:focus-visible,
.prev-next a:focus-visible,
.blog-card-title a:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
border-radius: var(--border-radius);
}