/* tractor docs: a minimal black + white skin over * `pydata-sphinx-theme` plus RHS-marginalia + d2 * diagram styling. */ html[data-theme="light"] { --pst-color-primary: #000000; --pst-color-secondary: #3d3d3d; --pst-color-accent: #5a5a5a; --pst-color-link: #000000; --pst-color-link-hover: #5a5a5a; --pst-color-inline-code: #1a1a1a; --pst-color-inline-code-links: #000000; } html[data-theme="dark"] { --pst-color-primary: #ffffff; --pst-color-secondary: #c9c9c9; --pst-color-accent: #a8a8a8; --pst-color-link: #ffffff; --pst-color-link-hover: #bdbdbd; --pst-color-inline-code: #e8e8e8; --pst-color-inline-code-links: #ffffff; } /* mono-chrome links: rely on underline for * affordance instead of color. */ .bd-content a:not(.headerlink) { text-decoration: underline; text-underline-offset: 0.18em; } /* d2 diagram figures */ figure.d2-diagram { text-align: center; } figure.d2-diagram img { max-width: 100%; height: auto; } /* keep light-rendered svgs legible in dark mode */ html[data-theme="dark"] figure.d2-diagram img { background: #ffffff; border-radius: 6px; padding: 6px; } /* prose-anchored right-margin asides (tufte-ish): * float right within the content column on wide * screens, collapse inline on narrow ones. */ @media (min-width: 960px) { aside.margin, figure.margin, div.margin, figure.d2-margin { float: right; clear: right; width: 44%; margin: 0.2rem 0 1rem 1.4rem; font-size: 0.85rem; } } /* strip docutils sidebar chrome from margin asides */ aside.sidebar.margin { border: none; background: transparent; padding: 0; } aside.sidebar.margin > p.sidebar-title { font-weight: 600; font-size: 0.9rem; margin-bottom: 0.3rem; } /* landing-page hero logo (inline svg): the linework uses * `fill: currentColor` so it inherits the theme text colour * (auto-flips light<->dark), and the faces are transparent so * the page background shows through. */ svg.hero-logo { display: block; max-width: 360px; height: auto; color: var(--pst-color-text-base); } /* 3-up landing hero row: name | logo | tagline, with a centered * sub-tagline beneath. */ .hero-row { display: flex; align-items: center; /* left-anchored single row; tighter gap so the logo sits over * the sub-line and the tagline over the prose below it (stack * only on mobile, via the media query). */ justify-content: flex-start; flex-wrap: nowrap; gap: clamp(0.5rem, 2vw, 1.5rem); margin: 0 0 0.25rem; } .hero-row svg.hero-logo { /* override the stacked-hero sizing for the inline row */ width: clamp(240px, 34vw, 360px); margin: 0; } .hero-row .hero-tag { margin: 0; /* keep it on a single line beside the logo */ max-width: none; white-space: nowrap; font-size: clamp(1rem, 2.1vw, 1.4rem); font-weight: 400; line-height: 1.15; color: var(--pst-color-text-base); } .hero-row .hero-tag { min-width: 0; } .hero-sub { /* wrap at the prose width (not the logo's), with a line of * space before the prose section below. */ margin: 0 0 4rem; max-width: none; text-align: left; font-size: 1.05rem; color: var(--pst-color-text-muted); } /* the page carries a single rst