fix: enable theme sections and local search
Build and publish Corp v1 steering documentation / build (push) Successful in 45s
Build and publish Corp v1 steering documentation / build (push) Successful in 45s
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Decision Log
|
||||
slug: /governance/decisions/
|
||||
slug: /decisions/
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Project Lifecycle
|
||||
slug: /governance/project-lifecycle/
|
||||
slug: /project-lifecycle/
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Members Registry
|
||||
slug: /members/
|
||||
slug: /
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
|
||||
@@ -13,9 +13,9 @@ This repository is the authoritative governance workspace for starting, steering
|
||||
|
||||
| Registry | Purpose |
|
||||
|---|---|
|
||||
| [Projects](./projects/index.md) | Portfolio status, ownership, lifecycle, and outcomes |
|
||||
| [Teams](./teams/index.md) | Team mandates, responsibilities, and project assignments |
|
||||
| [Members](./members/index.md) | Member identity, roles, and team membership |
|
||||
| [Projects](/projects/) | Portfolio status, ownership, lifecycle, and outcomes |
|
||||
| [Teams](/teams/) | Team mandates, responsibilities, and project assignments |
|
||||
| [Members](/members/) | Member identity, roles, and team membership |
|
||||
|
||||
## Operating principle
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Projects Registry
|
||||
slug: /projects/
|
||||
slug: /
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Teams Registry
|
||||
slug: /teams/
|
||||
slug: /
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
|
||||
+36
-10
@@ -2,6 +2,12 @@ import {themes as prismThemes} from 'prism-react-renderer';
|
||||
import type {Config} from '@docusaurus/types';
|
||||
import type * as Preset from '@docusaurus/preset-classic';
|
||||
|
||||
const docsCommon = {
|
||||
showLastUpdateAuthor: true,
|
||||
showLastUpdateTime: true,
|
||||
editUrl: 'https://gitea.lego-cloud.eu/corp-v1/sterring-commitee/_edit/main/',
|
||||
};
|
||||
|
||||
const config: Config = {
|
||||
title: 'Corp v1 Steering Committee',
|
||||
tagline: 'Project governance, teams, and membership registry',
|
||||
@@ -17,31 +23,51 @@ const config: Config = {
|
||||
'classic',
|
||||
{
|
||||
docs: {
|
||||
...docsCommon,
|
||||
path: 'docs/overview',
|
||||
routeBasePath: '/',
|
||||
sidebarPath: './sidebars.ts',
|
||||
editUrl: 'https://gitea.lego-cloud.eu/corp-v1/sterring-commitee/_edit/main/',
|
||||
showLastUpdateAuthor: true,
|
||||
showLastUpdateTime: true,
|
||||
sidebarPath: './sidebars/overview.ts',
|
||||
},
|
||||
blog: false,
|
||||
theme: {customCss: './src/css/custom.css'},
|
||||
sitemap: {changefreq: 'weekly', priority: 0.5},
|
||||
} satisfies Preset.Options,
|
||||
]],
|
||||
plugins: [
|
||||
['@docusaurus/plugin-content-docs', {...docsCommon, id: 'projects', path: 'docs/projects', routeBasePath: 'projects', sidebarPath: './sidebars/projects.ts'}],
|
||||
['@docusaurus/plugin-content-docs', {...docsCommon, id: 'teams', path: 'docs/teams', routeBasePath: 'teams', sidebarPath: './sidebars/teams.ts'}],
|
||||
['@docusaurus/plugin-content-docs', {...docsCommon, id: 'members', path: 'docs/members', routeBasePath: 'members', sidebarPath: './sidebars/members.ts'}],
|
||||
['@docusaurus/plugin-content-docs', {...docsCommon, id: 'governance', path: 'docs/governance', routeBasePath: 'governance', sidebarPath: './sidebars/governance.ts'}],
|
||||
],
|
||||
themes: [[
|
||||
require.resolve('@easyops-cn/docusaurus-search-local'),
|
||||
{
|
||||
hashed: 'filename',
|
||||
indexDocs: true,
|
||||
indexBlog: false,
|
||||
indexPages: true,
|
||||
docsRouteBasePath: ['/', 'projects', 'teams', 'members', 'governance'],
|
||||
language: ['en'],
|
||||
highlightSearchTermsOnTargetPage: true,
|
||||
explicitSearchResultPath: true,
|
||||
searchResultLimits: 12,
|
||||
searchResultContextMaxLength: 120,
|
||||
},
|
||||
]],
|
||||
themeConfig: {
|
||||
colorMode: {defaultMode: 'dark', disableSwitch: false, respectPrefersColorScheme: true},
|
||||
navbar: {
|
||||
title: 'CORP V1 / STEERING',
|
||||
items: [
|
||||
{to: '/projects/', label: 'Projects', position: 'left'},
|
||||
{to: '/teams/', label: 'Teams', position: 'left'},
|
||||
{to: '/members/', label: 'Members', position: 'left'},
|
||||
{to: '/governance/project-lifecycle/', label: 'Governance', position: 'left'},
|
||||
{type: 'docSidebar', sidebarId: 'projectsSidebar', docsPluginId: 'projects', label: 'Projects', position: 'left'},
|
||||
{type: 'docSidebar', sidebarId: 'teamsSidebar', docsPluginId: 'teams', label: 'Teams', position: 'left'},
|
||||
{type: 'docSidebar', sidebarId: 'membersSidebar', docsPluginId: 'members', label: 'Members', position: 'left'},
|
||||
{type: 'docSidebar', sidebarId: 'governanceSidebar', docsPluginId: 'governance', label: 'Governance', position: 'left'},
|
||||
{href: 'https://gitea.lego-cloud.eu/corp-v1/sterring-commitee', label: 'Gitea ↗', position: 'right'},
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
style: 'dark',
|
||||
style: 'light',
|
||||
links: [{title: 'Registry', items: [
|
||||
{label: 'Projects', to: '/projects/'},
|
||||
{label: 'Teams', to: '/teams/'},
|
||||
@@ -52,7 +78,7 @@ const config: Config = {
|
||||
]}],
|
||||
copyright: `© ${new Date().getFullYear()} Corp v1 Steering Committee`,
|
||||
},
|
||||
prism: {theme: prismThemes.oneDark, darkTheme: prismThemes.oneDark},
|
||||
prism: {theme: prismThemes.github, darkTheme: prismThemes.oneDark},
|
||||
} satisfies Preset.ThemeConfig,
|
||||
};
|
||||
|
||||
|
||||
+3
-1
@@ -12,12 +12,14 @@
|
||||
"serve": "docusaurus serve",
|
||||
"write-translations": "docusaurus write-translations",
|
||||
"write-heading-ids": "docusaurus write-heading-ids",
|
||||
"typecheck": "tsc"
|
||||
"typecheck": "tsc",
|
||||
"verify:portal": "node scripts/verify-portal.mjs"
|
||||
},
|
||||
"dependencies": {
|
||||
"@docusaurus/core": "3.10.2",
|
||||
"@docusaurus/faster": "3.10.2",
|
||||
"@docusaurus/preset-classic": "3.10.2",
|
||||
"@easyops-cn/docusaurus-search-local": "^0.55.3",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"clsx": "^2.0.0",
|
||||
"prism-react-renderer": "^2.3.0",
|
||||
|
||||
Generated
+419
-245
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,40 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import {existsSync, readFileSync, readdirSync} from 'node:fs';
|
||||
import {join} from 'node:path';
|
||||
|
||||
const root = process.cwd();
|
||||
const read = (path) => readFileSync(join(root, path), 'utf8');
|
||||
const config = read('docusaurus.config.ts');
|
||||
const packageJson = JSON.parse(read('package.json'));
|
||||
const globalCss = read('src/css/custom.css');
|
||||
const homepageCss = read('src/pages/index.module.css');
|
||||
|
||||
assert.match(config, /defaultMode:\s*'dark'/, 'dark must remain the default theme');
|
||||
assert.match(config, /disableSwitch:\s*false/, 'theme switch must be enabled');
|
||||
assert.match(globalCss, /\[data-theme=['"]light['"]\]/, 'global CSS needs an explicit light palette');
|
||||
assert.match(homepageCss, /:global\(\[data-theme=['"]light['"]\]\)/, 'homepage needs a light palette');
|
||||
assert.doesNotMatch(globalCss, /html,\s*body\s*\{\s*background:\s*#08101b/, 'document background must not be hard-coded dark');
|
||||
|
||||
for (const section of ['projects', 'teams', 'members', 'governance']) {
|
||||
assert.match(config, new RegExp(`id:\\s*'${section}'`), `${section} docs plugin is missing`);
|
||||
assert.match(config, new RegExp(`sidebarId:\\s*'${section}Sidebar'`), `${section} navbar item does not target its dedicated sidebar`);
|
||||
assert.ok(existsSync(join(root, `sidebars/${section}.ts`)), `${section} sidebar file is missing`);
|
||||
}
|
||||
|
||||
assert.ok(packageJson.dependencies?.['@easyops-cn/docusaurus-search-local'], 'local search dependency is missing');
|
||||
assert.match(config, /@easyops-cn\/docusaurus-search-local/, 'local search theme is not configured');
|
||||
assert.match(config, /indexPages:\s*true/, 'custom pages must be indexed');
|
||||
for (const route of ['/', 'projects', 'teams', 'members', 'governance']) {
|
||||
assert.ok(config.includes(`'${route}'`), `search does not include route base ${route}`);
|
||||
}
|
||||
|
||||
if (existsSync(join(root, 'build'))) {
|
||||
const filename = readdirSync(join(root, 'build')).find((name) => /^search-index(?:-[a-f0-9]+)?\.json$/.test(name));
|
||||
assert.ok(filename, 'production search index is missing');
|
||||
const search = readFileSync(join(root, 'build', filename), 'utf8').toLowerCase();
|
||||
for (const term of ['projects registry', 'teams registry', 'members registry', 'project lifecycle', 'corp v1 steering committee']) {
|
||||
assert.ok(search.includes(term), `search index is missing: ${term}`);
|
||||
}
|
||||
}
|
||||
|
||||
console.log('Portal behavior checks passed.');
|
||||
-13
@@ -1,13 +0,0 @@
|
||||
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
|
||||
|
||||
const sidebars: SidebarsConfig = {
|
||||
steering: [
|
||||
'index',
|
||||
{type: 'category', label: 'Projects Registry', link: {type: 'doc', id: 'projects/index'}, items: [{type: 'autogenerated', dirName: 'projects'}]},
|
||||
{type: 'category', label: 'Teams Registry', link: {type: 'doc', id: 'teams/index'}, items: [{type: 'autogenerated', dirName: 'teams'}]},
|
||||
{type: 'category', label: 'Members Registry', link: {type: 'doc', id: 'members/index'}, items: [{type: 'autogenerated', dirName: 'members'}]},
|
||||
{type: 'category', label: 'Governance', items: ['governance/project-lifecycle', 'governance/decisions']},
|
||||
],
|
||||
};
|
||||
|
||||
export default sidebars;
|
||||
@@ -0,0 +1,10 @@
|
||||
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
|
||||
|
||||
const sidebars: SidebarsConfig = {
|
||||
governanceSidebar: [
|
||||
{type: 'doc', id: 'project-lifecycle', label: 'Project Lifecycle'},
|
||||
{type: 'doc', id: 'decisions', label: 'Decision Log'},
|
||||
],
|
||||
};
|
||||
|
||||
export default sidebars;
|
||||
@@ -0,0 +1,7 @@
|
||||
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
|
||||
|
||||
const sidebars: SidebarsConfig = {
|
||||
membersSidebar: [{type: 'doc', id: 'index', label: 'Members Registry'}],
|
||||
};
|
||||
|
||||
export default sidebars;
|
||||
@@ -0,0 +1,7 @@
|
||||
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
|
||||
|
||||
const sidebars: SidebarsConfig = {
|
||||
overviewSidebar: [{type: 'doc', id: 'index', label: 'Steering overview'}],
|
||||
};
|
||||
|
||||
export default sidebars;
|
||||
@@ -0,0 +1,7 @@
|
||||
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
|
||||
|
||||
const sidebars: SidebarsConfig = {
|
||||
projectsSidebar: [{type: 'doc', id: 'index', label: 'Projects Registry'}],
|
||||
};
|
||||
|
||||
export default sidebars;
|
||||
@@ -0,0 +1,7 @@
|
||||
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
|
||||
|
||||
const sidebars: SidebarsConfig = {
|
||||
teamsSidebar: [{type: 'doc', id: 'index', label: 'Teams Registry'}],
|
||||
};
|
||||
|
||||
export default sidebars;
|
||||
+43
-17
@@ -1,6 +1,7 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@500;700&display=swap');
|
||||
|
||||
:root {
|
||||
:root,
|
||||
[data-theme='light'] {
|
||||
--ifm-font-family-base: 'Inter', system-ui, sans-serif;
|
||||
--ifm-font-family-monospace: 'JetBrains Mono', monospace;
|
||||
--ifm-color-primary: #0f766e;
|
||||
@@ -10,6 +11,21 @@
|
||||
--ifm-color-primary-light: #14b8a6;
|
||||
--ifm-color-primary-lighter: #2dd4bf;
|
||||
--ifm-color-primary-lightest: #5eead4;
|
||||
--ifm-background-color: #f7f9fb;
|
||||
--ifm-background-surface-color: #ffffff;
|
||||
--ifm-color-content: #111827;
|
||||
--ifm-color-content-secondary: #526174;
|
||||
--ifm-toc-border-color: #cdd5df;
|
||||
--portal-navbar-bg: rgba(255, 255, 255, .97);
|
||||
--portal-navbar-ink: #111827;
|
||||
--portal-navbar-muted: #526174;
|
||||
--portal-border: #cdd5df;
|
||||
--portal-sidebar-bg: #ffffff;
|
||||
--portal-footer-bg: #edf1f5;
|
||||
--portal-footer-ink: #111827;
|
||||
--portal-footer-muted: #526174;
|
||||
--portal-active-bg: rgba(15, 118, 110, .09);
|
||||
--portal-accent: #0f766e;
|
||||
--ifm-global-radius: 0;
|
||||
--ifm-code-border-radius: 0;
|
||||
--ifm-pre-border-radius: 0;
|
||||
@@ -33,38 +49,48 @@
|
||||
--ifm-color-content: #f5f7fa;
|
||||
--ifm-color-content-secondary: #a5b0c2;
|
||||
--ifm-toc-border-color: #283345;
|
||||
--portal-navbar-bg: rgba(8, 16, 27, .97);
|
||||
--portal-navbar-ink: #f5f7fa;
|
||||
--portal-navbar-muted: #a5b0c2;
|
||||
--portal-border: #283345;
|
||||
--portal-sidebar-bg: #08101b;
|
||||
--portal-footer-bg: #050b12;
|
||||
--portal-footer-ink: #f5f7fa;
|
||||
--portal-footer-muted: #a5b0c2;
|
||||
--portal-active-bg: rgba(94, 234, 212, .08);
|
||||
--portal-accent: #5eead4;
|
||||
}
|
||||
|
||||
html, body { background: #08101b; }
|
||||
html,
|
||||
body { background: var(--ifm-background-color); }
|
||||
|
||||
/* Corp v1 has an explicit no-rounding rule. This intentionally overrides
|
||||
Infima and third-party component radii across all rendered shapes. */
|
||||
/* Corp v1 has an explicit no-rounding rule. */
|
||||
*, *::before, *::after { border-radius: 0 !important; }
|
||||
|
||||
.navbar {
|
||||
height: 68px;
|
||||
background: rgba(8, 16, 27, .97) !important;
|
||||
border-bottom: 1px solid #283345 !important;
|
||||
background: var(--portal-navbar-bg) !important;
|
||||
border-bottom: 1px solid var(--portal-border) !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
.navbar__brand { margin-right: 2.5rem; }
|
||||
.navbar__title { color: #f5f7fa !important; font-size: .87rem; letter-spacing: .09em; font-weight: 700; }
|
||||
.navbar__link { color: #a5b0c2 !important; font-size: .86rem; font-weight: 500; }
|
||||
.navbar__link:hover, .navbar__link--active { color: #5eead4 !important; }
|
||||
.navbar-sidebar { background: #08101b !important; }
|
||||
.navbar__title { color: var(--portal-navbar-ink) !important; font-size: .87rem; letter-spacing: .09em; font-weight: 700; }
|
||||
.navbar__link { color: var(--portal-navbar-muted) !important; font-size: .86rem; font-weight: 500; }
|
||||
.navbar__link:hover, .navbar__link--active { color: var(--portal-accent) !important; }
|
||||
.navbar-sidebar { background: var(--portal-sidebar-bg) !important; }
|
||||
|
||||
.footer { background: #050b12 !important; border-top: 1px solid #283345; }
|
||||
.footer__title { color: #f5f7fa; letter-spacing: .04em; }
|
||||
.footer__link-item { color: #a5b0c2; }
|
||||
.footer__link-item:hover { color: #5eead4; }
|
||||
.footer { background: var(--portal-footer-bg) !important; border-top: 1px solid var(--portal-border); color: var(--portal-footer-muted); }
|
||||
.footer__title { color: var(--portal-footer-ink); letter-spacing: .04em; }
|
||||
.footer__link-item, .footer__copyright { color: var(--portal-footer-muted); }
|
||||
.footer__link-item:hover { color: var(--portal-accent); }
|
||||
|
||||
.theme-doc-markdown h1,
|
||||
.theme-doc-markdown h2,
|
||||
.theme-doc-markdown h3 { letter-spacing: -.025em; }
|
||||
.theme-doc-sidebar-container { border-right-color: #283345 !important; }
|
||||
.theme-doc-sidebar-container { border-right-color: var(--portal-border) !important; }
|
||||
.menu__link { font-size: .9rem; }
|
||||
.menu__link--active { background: rgba(94, 234, 212, .08) !important; }
|
||||
.table-of-contents__link--active { color: #5eead4; }
|
||||
.menu__link--active { background: var(--portal-active-bg) !important; }
|
||||
.table-of-contents__link--active { color: var(--portal-accent); }
|
||||
|
||||
.button, code, pre, .card, .alert, .pagination-nav__link, .menu,
|
||||
input, select, textarea, details, summary, table, .dropdown__menu,
|
||||
|
||||
+41
-10
@@ -4,11 +4,42 @@
|
||||
--portal-line: #283345;
|
||||
--portal-panel: #101722;
|
||||
--portal-panel-strong: #151e2c;
|
||||
--portal-canvas: #08101b;
|
||||
--portal-hero-start: #08101b;
|
||||
--portal-hero-middle: #0b1522;
|
||||
--portal-hero-end: #0c1a26;
|
||||
--portal-grid-glow: rgba(19, 185, 170, .13);
|
||||
--portal-rail-bg: rgba(8, 16, 27, .88);
|
||||
--portal-rail-muted: #748196;
|
||||
--portal-secondary-border: #4a5669;
|
||||
--portal-cta-bg: #0d1724;
|
||||
--portal-accent: #5eead4;
|
||||
background: #08101b;
|
||||
--portal-button-ink: #06110f;
|
||||
--portal-button-hover: #99f6e4;
|
||||
background: var(--portal-canvas);
|
||||
color: var(--portal-ink);
|
||||
}
|
||||
|
||||
:global([data-theme='light']) .page {
|
||||
--portal-ink: #111827;
|
||||
--portal-muted: #526174;
|
||||
--portal-line: #cdd5df;
|
||||
--portal-panel: #ffffff;
|
||||
--portal-panel-strong: #edf5f4;
|
||||
--portal-canvas: #f7f9fb;
|
||||
--portal-hero-start: #f7f9fb;
|
||||
--portal-hero-middle: #edf4f4;
|
||||
--portal-hero-end: #e4efef;
|
||||
--portal-grid-glow: rgba(15, 118, 110, .15);
|
||||
--portal-rail-bg: rgba(255, 255, 255, .90);
|
||||
--portal-rail-muted: #637083;
|
||||
--portal-secondary-border: #8793a3;
|
||||
--portal-cta-bg: #e9f1f1;
|
||||
--portal-accent: #0f766e;
|
||||
--portal-button-ink: #ffffff;
|
||||
--portal-button-hover: #115e59;
|
||||
}
|
||||
|
||||
.hero {
|
||||
min-height: 700px;
|
||||
position: relative;
|
||||
@@ -17,8 +48,8 @@
|
||||
align-items: center;
|
||||
border-bottom: 1px solid var(--portal-line);
|
||||
background:
|
||||
radial-gradient(circle at 78% 22%, rgba(19, 185, 170, .13), transparent 28%),
|
||||
linear-gradient(125deg, #08101b 0%, #0b1522 62%, #0c1a26 100%);
|
||||
radial-gradient(circle at 78% 22%, var(--portal-grid-glow), transparent 28%),
|
||||
linear-gradient(125deg, var(--portal-hero-start) 0%, var(--portal-hero-middle) 62%, var(--portal-hero-end) 100%);
|
||||
}
|
||||
|
||||
.gridTexture {
|
||||
@@ -90,17 +121,17 @@
|
||||
}
|
||||
|
||||
.primaryAction {
|
||||
color: #06110f !important;
|
||||
color: var(--portal-button-ink) !important;
|
||||
background: var(--portal-accent);
|
||||
border-color: var(--portal-accent);
|
||||
}
|
||||
|
||||
.primaryAction:hover { background: #99f6e4; border-color: #99f6e4; }
|
||||
.primaryAction:hover { background: var(--portal-button-hover); border-color: var(--portal-button-hover); }
|
||||
|
||||
.secondaryAction {
|
||||
color: var(--portal-ink) !important;
|
||||
background: transparent;
|
||||
border-color: #4a5669;
|
||||
border-color: var(--portal-secondary-border);
|
||||
}
|
||||
|
||||
.secondaryAction:hover { border-color: var(--portal-accent); color: var(--portal-accent) !important; }
|
||||
@@ -116,14 +147,14 @@
|
||||
grid-template-columns: repeat(4, auto);
|
||||
border-top: 1px solid var(--portal-line);
|
||||
border-left: 1px solid var(--portal-line);
|
||||
background: rgba(8, 16, 27, .88);
|
||||
background: var(--portal-rail-bg);
|
||||
}
|
||||
|
||||
.heroRail span {
|
||||
padding: 17px 25px;
|
||||
border-right: 1px solid var(--portal-line);
|
||||
font-family: var(--ifm-font-family-monospace);
|
||||
color: #748196;
|
||||
color: var(--portal-rail-muted);
|
||||
font-size: .67rem;
|
||||
letter-spacing: .12em;
|
||||
}
|
||||
@@ -164,7 +195,7 @@
|
||||
.cardHeader { flex: 1; min-height: 310px; padding: 36px; }
|
||||
.cardHeader h2 { font-size: 2.1rem; letter-spacing: -.035em; margin: 0 0 18px; }
|
||||
.cardHeader p { color: var(--portal-muted); line-height: 1.65; margin: 0; }
|
||||
.eyebrow { margin-bottom: 46px; color: #718096; }
|
||||
.eyebrow { margin-bottom: 46px; color: var(--portal-rail-muted); }
|
||||
.cardLinks { border-top: 1px solid var(--portal-line); }
|
||||
|
||||
.cardLink {
|
||||
@@ -213,7 +244,7 @@
|
||||
gap: 40px;
|
||||
border: 1px solid var(--portal-line);
|
||||
border-bottom: 0;
|
||||
background: #0d1724;
|
||||
background: var(--portal-cta-bg);
|
||||
}
|
||||
.cta .kicker { margin-bottom: 16px; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user