Skip to content

Commit afd314b

Browse files
docs: scaffold Zensical docs site with Navi branding
Adds branded docs infrastructure from navi-docs-template: - Zensical config with Project Navi theme and MathJax - navi.css brand stylesheet - GitHub Actions workflow for Pages deployment - Placeholder content (documentation to follow) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent fc6158f commit afd314b

11 files changed

Lines changed: 608 additions & 0 deletions

File tree

.github/workflows/docs.yml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: Docs
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths:
7+
- "docs/**"
8+
- "zensical.toml"
9+
- ".github/workflows/docs.yml"
10+
workflow_dispatch:
11+
12+
permissions:
13+
contents: read
14+
pages: write
15+
id-token: write
16+
17+
concurrency:
18+
group: pages
19+
cancel-in-progress: true
20+
21+
jobs:
22+
build:
23+
runs-on: ubuntu-latest
24+
steps:
25+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
26+
- uses: astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098 # v7.3.1
27+
with:
28+
enable-cache: true
29+
- name: Install docs dependencies
30+
# For library repos, remove --no-install-project so the package is importable
31+
run: uv sync --frozen --no-install-project --group docs
32+
- name: Build site
33+
run: uv run zensical build
34+
- name: Strip internal docs from build
35+
run: rm -rf site/internal site/aristotle site/plans
36+
- uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4.0.0
37+
with:
38+
path: site
39+
40+
deploy:
41+
needs: build
42+
runs-on: ubuntu-latest
43+
environment:
44+
name: github-pages
45+
url: ${{ steps.deployment.outputs.page_url }}
46+
steps:
47+
- id: deployment
48+
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5

docs/assets/favicon.png

1.58 KB
Loading

docs/assets/logo.png

6.83 KB
Loading

docs/getting-started/quickstart.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Quickstart
2+
3+
Content coming soon --- documentation under development.

docs/index.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
hide:
3+
- navigation
4+
- toc
5+
---
6+
7+
<div class="hero-glow" markdown>
8+
9+
# fd-formalization
10+
11+
**Lean 4 + Mathlib formalization of \((u,v)\)-flower fractal dimension.**
12+
13+
Hub distance \(= u^g\) and log-ratio convergence to \(\frac{\log(u+v)}{\log u}\).
14+
15+
[Get Started](getting-started/quickstart.md){ .md-button .md-button--primary }
16+
[Theorems](#){ .md-button }
17+
18+
</div>
19+
20+
---
21+
22+
## What it proves
23+
24+
A complete Lean 4 formalization of the fractal dimension formula for \((u,v)\)-flower networks, including construction, hub distance, and the key convergence theorem.
25+
26+
## What's next
27+
28+
- **[Quickstart](getting-started/quickstart.md)** --- build and check the proofs

docs/javascripts/mathjax.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
window.MathJax = {
2+
tex: {
3+
inlineMath: [["\\(", "\\)"]],
4+
displayMath: [["\\[", "\\]"]],
5+
processEscapes: true,
6+
processEnvironments: true
7+
},
8+
options: {
9+
ignoreHtmlClass: ".*|",
10+
processHtmlClass: "arithmatex"
11+
}
12+
};
13+
14+
document$.subscribe(() => {
15+
MathJax.startup.output.clearCache()
16+
MathJax.typesetClear()
17+
MathJax.texReset()
18+
MathJax.typesetPromise()
19+
})

docs/reference/changelog.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Changelog
2+
3+
See [CHANGELOG.md](https://github.com/Project-Navi/fd-formalization/blob/main/CHANGELOG.md) on GitHub.

docs/stylesheets/navi.css

Lines changed: 282 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,282 @@
1+
/* Project Navi Brand Overrides for Zensical
2+
Brand guide: project-navi-brand-guide.html
3+
Palette: #141414 bg, #e8e4de text, #7eb8a8 accent
4+
Blessing tiers: #7eb8a8 positive, #d4a574 neutral, #c47a7a negative */
5+
6+
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;700&family=Fraunces:wght@300;400;500&family=JetBrains+Mono:wght@400&display=swap');
7+
8+
/* --- Color overrides --- */
9+
:root {
10+
--md-primary-fg-color: #1a1a1a;
11+
--md-primary-bg-color: #e8e4de;
12+
--md-accent-fg-color: #7eb8a8;
13+
--md-accent-bg-color: #4a7a6d;
14+
}
15+
16+
[data-md-color-scheme="slate"] {
17+
--md-default-bg-color: #141414;
18+
--md-default-fg-color: #e8e4de;
19+
--md-default-fg-color--light: #9a958e;
20+
--md-default-fg-color--lighter: #8a867f;
21+
--md-code-bg-color: #1a1a1a;
22+
--md-typeset-a-color: #7eb8a8;
23+
--md-footer-bg-color: #1a1a1a;
24+
--md-footer-bg-color--dark: #141414;
25+
}
26+
27+
/* --- Typography --- */
28+
:root {
29+
--md-text-font: "DM Sans", -apple-system, BlinkMacSystemFont, sans-serif;
30+
--md-code-font: "JetBrains Mono", Consolas, monospace;
31+
}
32+
33+
body {
34+
-webkit-font-smoothing: antialiased;
35+
-moz-osx-font-smoothing: grayscale;
36+
}
37+
38+
.md-typeset h1,
39+
.md-typeset h2,
40+
.md-typeset h3 {
41+
font-family: "Fraunces", Georgia, serif;
42+
font-weight: 300;
43+
letter-spacing: -0.02em;
44+
}
45+
46+
/* h2: 2rem + accent underline per brand guide */
47+
.md-typeset h2 {
48+
font-size: 2rem;
49+
padding-bottom: 0.75rem;
50+
border-bottom: 1px solid #2a2a2a;
51+
}
52+
53+
.md-typeset h2::after {
54+
content: '';
55+
display: block;
56+
width: 40px;
57+
height: 2px;
58+
background: #7eb8a8;
59+
margin-top: 0.75rem;
60+
opacity: 0.6;
61+
}
62+
63+
/* h3: accent color, 1.35rem per brand guide */
64+
.md-typeset h3 {
65+
font-size: 1.35rem;
66+
color: #7eb8a8;
67+
}
68+
69+
/* h4: body font (DM Sans) at weight 500 per brand guide */
70+
.md-typeset h4 {
71+
font-family: "DM Sans", -apple-system, BlinkMacSystemFont, sans-serif;
72+
font-size: 1rem;
73+
font-weight: 500;
74+
letter-spacing: -0.02em;
75+
}
76+
77+
.md-typeset {
78+
font-weight: 300;
79+
line-height: 1.7;
80+
}
81+
82+
/* --- Accent list markers --- */
83+
.md-typeset li::marker {
84+
color: #7eb8a8;
85+
}
86+
87+
/* --- Code --- */
88+
/* Inline code: accent color */
89+
.md-typeset code {
90+
color: #7eb8a8;
91+
}
92+
93+
/* Block code: text-secondary, not accent */
94+
.md-typeset pre code {
95+
color: #9a958e;
96+
}
97+
98+
/* Code blocks: explicit border + radius per brand guide */
99+
.md-typeset pre {
100+
border: 1px solid #2a2a2a;
101+
border-radius: 8px;
102+
}
103+
104+
/* --- Tables — brand header background --- */
105+
.md-typeset th {
106+
background: #1a1a1a;
107+
font-weight: 500;
108+
}
109+
110+
.md-typeset th,
111+
.md-typeset td {
112+
border-bottom: 1px solid #2a2a2a;
113+
}
114+
115+
/* --- Navigation accent --- */
116+
.md-nav__link--active,
117+
.md-nav__link:hover {
118+
color: #7eb8a8 !important;
119+
}
120+
121+
/* --- Admonition blessing tiers --- */
122+
/* Positive: note, tip, success, check, done */
123+
.md-typeset .admonition.note,
124+
.md-typeset .admonition.tip,
125+
.md-typeset .admonition.success,
126+
.md-typeset details.note,
127+
.md-typeset details.tip,
128+
.md-typeset details.success {
129+
border-color: #7eb8a8;
130+
}
131+
132+
.md-typeset .note > .admonition-title,
133+
.md-typeset .tip > .admonition-title,
134+
.md-typeset .success > .admonition-title {
135+
background-color: rgba(126, 184, 168, 0.1);
136+
}
137+
138+
.md-typeset .note > .admonition-title::before,
139+
.md-typeset .tip > .admonition-title::before,
140+
.md-typeset .success > .admonition-title::before {
141+
color: #7eb8a8;
142+
}
143+
144+
/* Neutral: warning, caution, attention */
145+
.md-typeset .admonition.warning,
146+
.md-typeset .admonition.caution,
147+
.md-typeset .admonition.attention,
148+
.md-typeset details.warning,
149+
.md-typeset details.caution,
150+
.md-typeset details.attention {
151+
border-color: #d4a574;
152+
}
153+
154+
.md-typeset .warning > .admonition-title,
155+
.md-typeset .caution > .admonition-title,
156+
.md-typeset .attention > .admonition-title {
157+
background-color: rgba(212, 165, 116, 0.1);
158+
}
159+
160+
.md-typeset .warning > .admonition-title::before,
161+
.md-typeset .caution > .admonition-title::before,
162+
.md-typeset .attention > .admonition-title::before {
163+
color: #d4a574;
164+
}
165+
166+
/* Negative: danger, error, bug, failure */
167+
.md-typeset .admonition.danger,
168+
.md-typeset .admonition.error,
169+
.md-typeset .admonition.bug,
170+
.md-typeset .admonition.failure,
171+
.md-typeset details.danger,
172+
.md-typeset details.error,
173+
.md-typeset details.bug,
174+
.md-typeset details.failure {
175+
border-color: #c47a7a;
176+
}
177+
178+
.md-typeset .danger > .admonition-title,
179+
.md-typeset .error > .admonition-title,
180+
.md-typeset .bug > .admonition-title,
181+
.md-typeset .failure > .admonition-title {
182+
background-color: rgba(196, 122, 122, 0.1);
183+
}
184+
185+
.md-typeset .danger > .admonition-title::before,
186+
.md-typeset .error > .admonition-title::before,
187+
.md-typeset .bug > .admonition-title::before,
188+
.md-typeset .failure > .admonition-title::before {
189+
color: #c47a7a;
190+
}
191+
192+
/* Info/abstract — use accent (positive tier) */
193+
.md-typeset .admonition.info,
194+
.md-typeset .admonition.abstract,
195+
.md-typeset details.info,
196+
.md-typeset details.abstract {
197+
border-color: #7eb8a8;
198+
}
199+
200+
.md-typeset .info > .admonition-title,
201+
.md-typeset .abstract > .admonition-title {
202+
background-color: rgba(126, 184, 168, 0.1);
203+
}
204+
205+
.md-typeset .info > .admonition-title::before,
206+
.md-typeset .abstract > .admonition-title::before {
207+
color: #7eb8a8;
208+
}
209+
210+
/* --- Hero glow (landing page only) --- */
211+
.md-content .hero-glow {
212+
position: relative;
213+
}
214+
215+
.md-content .hero-glow::before {
216+
content: '';
217+
position: absolute;
218+
top: 0;
219+
left: 0;
220+
right: 0;
221+
height: 200px;
222+
background: radial-gradient(
223+
ellipse at center top,
224+
rgba(126, 184, 168, 0.08) 0%,
225+
transparent 50%
226+
);
227+
pointer-events: none;
228+
z-index: -1;
229+
}
230+
231+
/* --- Primary button — inverted per brand guide --- */
232+
.md-typeset .md-button--primary {
233+
background: #e8e4de;
234+
color: #141414;
235+
border-color: #e8e4de;
236+
}
237+
238+
.md-typeset .md-button--primary:hover {
239+
background: #7eb8a8;
240+
border-color: #7eb8a8;
241+
color: #141414;
242+
}
243+
244+
.md-typeset .md-button:not(.md-button--primary) {
245+
background: transparent;
246+
border-color: #2a2a2a;
247+
color: #e8e4de;
248+
}
249+
250+
.md-typeset .md-button:not(.md-button--primary):hover {
251+
border-color: #7eb8a8;
252+
color: #7eb8a8;
253+
}
254+
255+
/* --- Blockquote accent — 3px per brand guide --- */
256+
.md-typeset blockquote {
257+
border-left: 3px solid #7eb8a8;
258+
}
259+
260+
/* --- Card-like containers --- */
261+
.md-typeset .grid-card {
262+
background: #1f1f1f;
263+
border: 1px solid #2a2a2a;
264+
border-radius: 12px;
265+
padding: 1.5rem;
266+
}
267+
268+
.md-typeset .grid-card.featured {
269+
border-color: #4a7a6d;
270+
}
271+
272+
/* --- Focus states — accessibility + brand --- */
273+
:focus-visible {
274+
outline: 3px solid #7eb8a8;
275+
outline-offset: 2px;
276+
border-radius: 3px;
277+
}
278+
279+
/* --- Footer muted --- */
280+
.md-footer-meta {
281+
color: #8a867f;
282+
}

pyproject.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[project]
2+
name = "fd-formalization"
3+
version = "0.1.0"
4+
description = "Lean 4 formalization of (u,v)-flower fractal dimension"
5+
requires-python = ">=3.12"
6+
7+
[dependency-groups]
8+
docs = ["zensical>=0.0.24"]

0 commit comments

Comments
 (0)