/* Fluksio brand theming for the documentation site. * * Follows the zensical custom color scheme approach * (https://zensical.org/docs/setup/colors/#custom-color-schemes): override the * Material `--md-*` CSS variables per [data-md-color-scheme]. Colors mirror the * design tokens in ../DESIGN.md → ../../DESIGN-GUIDELINES.md: neutral white / * near-black surfaces carrying one slate-blue accent, with terracotta reserved * for the single secondary affordance per view. The built-in `default` (light) * and `slate` (dark) schemes stay as the base so all of Material's derived * styling keeps working; only the brand-relevant variables are remapped. * * NOTE: the modern theme paints a frosted, translucent header via * `.md-header { backdrop-filter: blur(...); background: var(--md-default-bg-color--light) }`, * which is the same `bg-card/80 backdrop-blur` shell both frontends float their * chrome on. `--md-default-bg-color--light` therefore has to stay a * *translucent* alpha of the background — an opaque value stops the header * being see-through. */ /* Slate-blue brand primary, shared by both schemes. * * `#59849b` is the identity blue in the wordmark, and deliberately not used * here: it measures 4.04:1 against white, below WCAG AA for normal text. The * values below are the same ones the apps ship as `--primary`. */ [data-md-color-scheme="default"], [data-md-color-scheme="slate"] { --md-primary-fg-color: #4a7189; --md-primary-fg-color--light: #7ba3b8; --md-primary-fg-color--dark: #395767; --md-primary-bg-color: #ffffff; --md-primary-bg-color--light: rgba(255, 255, 255, 0.7); /* The one secondary accent. Used for the facility lane on Getting started * and nowhere else, mirroring "one --brand-secondary affordance per view". */ --fluksio-brand-secondary: #de8f6e; /* Footer stays dark in both schemes (Material convention), neutral tokens. */ --md-footer-bg-color: #1a1a1a; --md-footer-bg-color--dark: #0a0a0a; } /* Light: white page, near-black text (--foreground is #333232, not pure black). */ [data-md-color-scheme="default"] { --md-default-bg-color: #ffffff; --md-default-bg-color--light: rgba(255, 255, 255, 0.7); --md-default-bg-color--lighter: rgba(255, 255, 255, 0.3); --md-default-bg-color--lightest: rgba(255, 255, 255, 0.12); --md-default-fg-color: #333232; --md-default-fg-color--light: #6b6b6b; --md-default-fg-color--lighter: #9e9e9e; --md-default-fg-color--lightest: #e4e4e4; --md-accent-fg-color: #395767; --md-typeset-a-color: #4a7189; --md-code-bg-color: #f2f2f2; --md-code-fg-color: #333232; } /* Dark: near-black page, off-white text. Surfaces lift to #1a1a1a (--card) so * code and quoted blocks read against the #0a0a0a backdrop. */ [data-md-color-scheme="slate"] { --md-default-bg-color: #0a0a0a; --md-default-bg-color--light: rgba(10, 10, 10, 0.7); --md-default-bg-color--lighter: rgba(10, 10, 10, 0.3); --md-default-bg-color--lightest: rgba(10, 10, 10, 0.12); --md-default-fg-color: #f5f5f5; --md-default-fg-color--light: #a3a3a3; --md-default-fg-color--lighter: #6b6b6b; --md-default-fg-color--lightest: #2a2a2a; --md-accent-fg-color: #7ba3b8; --md-typeset-a-color: #7ba3b8; --md-code-bg-color: #1a1a1a; --md-code-fg-color: #f5f5f5; --fluksio-brand-secondary: #e5a184; } /* The theme highlights the active sidebar entry with a * `--md-accent-fg-color--transparent` fill, which is still the built-in indigo * because only the opaque accent is remapped above. Drop the fill in both * schemes; the brand accent colour and the heavier weight the theme also * applies keep the selection visible. */ .md-nav--primary .md-nav__item .md-nav__link--active { background: none; } /* Radius follows the app's map: 16px for panels and cards, 12px for the * smaller inline surfaces. */ .md-typeset .admonition, .md-typeset details, .md-typeset pre > code, .md-typeset .tabbed-content pre > code { border-radius: 16px; } .md-typeset code { border-radius: 12px; } /* Tables are the one place these docs go wide. Nothing may scroll the page * sideways, so the box scrolls instead — DESIGN-GUIDELINES.md → Responsive. */ .md-typeset .md-typeset__table { overflow-x: auto; } /* ── Audience cards ──────────────────────────────────────────────── * * Used on Getting started, where the split mirrors the landing page's audience * switch: data science takes --primary, facility automation takes the one * terracotta accent. Built out of Markdown lists via attr_list + md_in_html, * so there is no HTML soup in the page source. */ .fluksio-lanes { display: grid; gap: 1rem; margin: 1.5rem 0; } @media screen and (min-width: 768px) { .fluksio-lanes { grid-template-columns: 1fr 1fr; } } .fluksio-lane { border: 1px solid var(--md-default-fg-color--lightest); border-radius: 16px; padding: 1.25rem 1.5rem; /* min-width:0 keeps a long line from stretching the grid track and, with it, * the page. */ min-width: 0; } .fluksio-lane > :first-child { margin-top: 0; } .fluksio-lane > :last-child { margin-bottom: 0; } .fluksio-lane--science { border-color: var(--md-primary-fg-color); } .fluksio-lane--science h3 { color: var(--md-primary-fg-color); } .fluksio-lane--facility { border-color: var(--fluksio-brand-secondary); } .fluksio-lane--facility h3 { color: var(--fluksio-brand-secondary); } /* ── Brand mark ──────────────────────────────────────────────────── * * The mark's disc is painted `--foreground`, so the light file is a dark disc * and disappears on the dark header. The theme renders the logo as an , * whose src CSS cannot swap — so the image is hidden under `slate` and the * anchor paints the dark mark instead. Both files are the same 24×24 viewBox, * so the two look identical apart from that inversion. */ [data-md-color-scheme="slate"] .md-logo img { visibility: hidden; } [data-md-color-scheme="slate"] .md-logo { background: url("../assets/favicon-dark.svg") center / 1.2rem 1.2rem no-repeat; }