diff --git a/css/unturf.css b/css/unturf.css
index 35d60dd..3aa8e2a 100644
--- a/css/unturf.css
+++ b/css/unturf.css
@@ -2,20 +2,59 @@
unturf. shared stylesheet
============================================================ */
+/* ---- 1. custom properties ---- */
+
:root {
+ /* brand */
--primary: #43a047;
+
+ /* step label */
+ --step-bg: #263238;
+ --step-text: #CDDC39;
+
+ /* callout boxes */
+ --honest-border: #F44336;
+ --honest-bg: rgba(244, 67, 54, 0.05);
+ --recipe-border: #4CAF50;
+ --recipe-bg: rgba(76, 175, 80, 0.05);
+ --warning-border: #FF9800;
+ --warning-bg: rgba(255, 152, 0, 0.05);
+
+ /* footnotes */
+ --footnote-link: #CDDC39;
+ --footnote-highlight-bg: rgba(205, 220, 57, 0.1);
+ --footnote-highlight-border: #CDDC39;
+
+ /* diagrams */
+ --diagram-caption: #888;
+
+ /* eight forms of capital */
+ --capital-living: #4CAF50;
+ --capital-material: #795548;
+ --capital-financial: #607D8B;
+ --capital-intellectual: #2196F3;
+ --capital-experiential: #009688;
+ --capital-social: #FF9800;
+ --capital-cultural: #9C27B0;
+ --capital-spiritual: #E91E63;
+
+ /* software page */
+ --unsandbox-color: #c4b550;
}
-/* ---- brand ---- */
-.unturf-brand {
+/* ---- 2. brand & typography ---- */
+
+.unturf-brand,
+.site-title {
font-family: 'chunkfiveregular', sans-serif;
}
.site-title {
- font-family: 'chunkfiveregular', sans-serif;
- margin-bottom: 0px;
+ margin-bottom: 0;
}
+/* ---- 3. navigation ---- */
+
.nav-links {
margin-bottom: 2em;
}
@@ -27,6 +66,8 @@
opacity: 0.7;
}
+/* ---- 4. layout ---- */
+
.content-wide {
max-width: 960px;
}
@@ -35,7 +76,10 @@
max-width: 460px;
}
-/* ---- diagrams ---- */
+/* ---- 5. content components ---- */
+
+/* diagrams */
+
.diagram {
margin: 1.5em 0;
text-align: center;
@@ -48,36 +92,46 @@
.diagram figcaption {
font-size: 0.85em;
- color: #888;
+ color: var(--diagram-caption);
margin-top: 0.5em;
}
-/* ---- step labels ---- */
+/* step labels */
+
.step-label {
display: inline-block;
- background: #263238;
- color: #CDDC39;
+ background: var(--step-bg);
+ color: var(--step-text);
padding: 0.2em 0.6em;
font-size: 0.8em;
margin-bottom: 0.5em;
}
-/* ---- honest box (warnings / caveats) ---- */
-.honest-box {
- border-left: 4px solid #F44336;
+/* callout boxes (shared structure) */
+
+.honest-box,
+.recipe-box,
+.warning-box {
+ border-left-width: 4px;
+ border-left-style: solid;
padding: 0.5em 1em;
margin: 1em 0;
- background: rgba(244, 67, 54, 0.05);
}
-.honest-box b {
- color: #F44336;
-}
+.honest-box { border-color: var(--honest-border); background: var(--honest-bg); }
+.honest-box b { color: var(--honest-border); }
+
+.recipe-box { border-color: var(--recipe-border); background: var(--recipe-bg); }
+.recipe-box b { color: var(--recipe-border); }
+
+.warning-box { border-color: var(--warning-border); background: var(--warning-bg); }
+.warning-box b { color: var(--warning-border); }
+
+/* footnotes */
-/* ---- footnotes ---- */
sup a {
text-decoration: none;
- color: #CDDC39;
+ color: var(--footnote-link);
font-weight: bold;
}
@@ -99,12 +153,13 @@ sup a:hover {
}
.footnotes li:target {
- background: rgba(205, 220, 57, 0.1);
+ background: var(--footnote-highlight-bg);
padding: 0.25em;
- border-left: 3px solid #CDDC39;
+ border-left: 3px solid var(--footnote-highlight-border);
}
-/* ---- capital cards (eight forms of capital) ---- */
+/* capital cards (eight forms of capital) */
+
.capital-card {
border-left: 4px solid var(--primary);
padding: 0.5em 1em;
@@ -115,50 +170,24 @@ sup a:hover {
margin-bottom: 0.25em;
}
-.capital-card--living { border-color: #4CAF50; }
-.capital-card--living h4 { color: #4CAF50; }
-.capital-card--material { border-color: #795548; }
-.capital-card--material h4 { color: #795548; }
-.capital-card--financial { border-color: #607D8B; }
-.capital-card--financial h4 { color: #607D8B; }
-.capital-card--intellectual { border-color: #2196F3; }
-.capital-card--intellectual h4 { color: #2196F3; }
-.capital-card--experiential { border-color: #009688; }
-.capital-card--experiential h4 { color: #009688; }
-.capital-card--social { border-color: #FF9800; }
-.capital-card--social h4 { color: #FF9800; }
-.capital-card--cultural { border-color: #9C27B0; }
-.capital-card--cultural h4 { color: #9C27B0; }
-.capital-card--spiritual { border-color: #E91E63; }
-.capital-card--spiritual h4 { color: #E91E63; }
+.capital-card--living { border-color: var(--capital-living); }
+.capital-card--living h4 { color: var(--capital-living); }
+.capital-card--material { border-color: var(--capital-material); }
+.capital-card--material h4 { color: var(--capital-material); }
+.capital-card--financial { border-color: var(--capital-financial); }
+.capital-card--financial h4 { color: var(--capital-financial); }
+.capital-card--intellectual { border-color: var(--capital-intellectual); }
+.capital-card--intellectual h4 { color: var(--capital-intellectual); }
+.capital-card--experiential { border-color: var(--capital-experiential); }
+.capital-card--experiential h4 { color: var(--capital-experiential); }
+.capital-card--social { border-color: var(--capital-social); }
+.capital-card--social h4 { color: var(--capital-social); }
+.capital-card--cultural { border-color: var(--capital-cultural); }
+.capital-card--cultural h4 { color: var(--capital-cultural); }
+.capital-card--spiritual { border-color: var(--capital-spiritual); }
+.capital-card--spiritual h4 { color: var(--capital-spiritual); }
-/* ---- recipe page ---- */
-.recipe-box {
- border-left: 4px solid #4CAF50;
- padding: 0.5em 1em;
- margin: 1em 0;
- background: rgba(76, 175, 80, 0.05);
-}
-
-.recipe-box b {
- color: #4CAF50;
-}
-
-.warning-box {
- border-left: 4px solid #FF9800;
- padding: 0.5em 1em;
- margin: 1em 0;
- background: rgba(255, 152, 0, 0.05);
-}
-
-.warning-box b {
- color: #FF9800;
-}
-
-/* ---- software page ---- */
-.software-page * {
- box-sizing: border-box;
-}
+/* ---- 6. software page ---- */
.software-page body {
overflow-x: hidden;
@@ -177,7 +206,7 @@ sup a:hover {
.unsandbox-logo {
font-family: ArialPixel, system-ui, sans-serif;
- color: #c4b550;
+ color: var(--unsandbox-color);
}
.neopig-logo {
@@ -209,12 +238,6 @@ sup a:hover {
max-width: 100%;
}
-@media (prefers-color-scheme: light) {
- .logo-container {
- background: rgba(0, 0, 0, 0.03);
- }
-}
-
.software-page article {
margin-bottom: 1rem;
}
@@ -253,6 +276,14 @@ sup a:hover {
gap: 1rem;
}
+/* ---- 7. responsive ---- */
+
+@media (prefers-color-scheme: light) {
+ .logo-container {
+ background: rgba(0, 0, 0, 0.03);
+ }
+}
+
@media (min-width: 768px) {
.projects-grid {
display: grid;
diff --git a/styleguide/index.html b/styleguide/index.html
new file mode 100644
index 0000000..8668447
--- /dev/null
+++ b/styleguide/index.html
@@ -0,0 +1,448 @@
+
+
+
+
+
+unturf.
+grow food not lawn
+manifesto · eight forms of capital · single-use plastics · hemp bioplastic · free software
+
+Styleguide
+
+
+A living reference for every component, element, & pattern across unturf. pages. This page uses unturf.css layered on Pico CSS v2.0.6 (classless). What you see here matches what appears across all pages.
+
+
+
+
+
+
+1. Color Palette
+
+Every color lives in a CSS custom property inside :root. Change a variable, change every page.
+
+Brand
+
+
+ --primary #43a047
+
+
+Step Label
+
+
+ --step-bg #263238
+
+
+
+ --step-text #CDDC39
+
+
+Callout Boxes
+
+
+ --honest-border #F44336 (honest box)
+
+
+
+ --recipe-border #4CAF50 (recipe box)
+
+
+
+ --warning-border #FF9800 (warning box)
+
+
+Footnotes
+
+
+ --footnote-link #CDDC39
+
+
+
+ --footnote-highlight-border #CDDC39
+
+
+Eight Forms of Capital
+
+
+ --capital-living #4CAF50
+
+
+
+ --capital-material #795548
+
+
+
+ --capital-financial #607D8B
+
+
+
+ --capital-intellectual #2196F3
+
+
+
+ --capital-experiential #009688
+
+
+
+ --capital-social #FF9800
+
+
+
+ --capital-cultural #9C27B0
+
+
+
+ --capital-spiritual #E91E63
+
+
+
+
+
+
+
+
+2. Typography
+
+Pico CSS handles body text via system fonts. unturf. uses ChunkFive ('chunkfiveregular') for branding only.
+
+Brand Font
+unturf. ← class="unturf-brand"
+
+Heading Hierarchy
+<h1> stays reserved for the site logo. Content headings start at <h2>.
+h2: Page Title
+h3: Section Heading
+h4: Subsection Heading
+
+Text Styles
+A regular paragraph of body text. Pico CSS provides the base font stack, line height, & color.
+Bold text via <b> tag.
+Italic text via <i> tag.
+Inline code via <code> tag.
+Small text via <small> tag, used for navigation & footer.
+
+Blockquote
+go-rusty-rails-jvm.js
+
+
+
+
+
+
+
+3. Layout
+
+Two layout widths exist. Apply one class to <main>. Pico CSS provides the centering & padding.
+
+
+
+ Class Max Width Used On
+
+
+ .content-narrow460px manifesto
+ .content-wide960px all other content pages
+
+
+
+
+
+
+
+
+
+4. Navigation & Footer
+
+Every content page shares a header & footer pattern. Current page link gets aria-current="page" for bold, reduced opacity styling.
+
+Header Pattern
+<center><a href="/"><h1 class="site-title">unturf.</h1></a></center>
+<center><h3>grow food not lawn</h3></center>
+<center class="nav-links"><small>
+ <a href="...">manifesto</a> ·
+ <a href="..." aria-current="page">current page</a> ·
+ <a href="...">other page</a>
+</small></center>
+
+Footer Pattern
+<footer>
+ <center><a href="/software/" class="unturf-brand">unturf. software</a></center>
+ <center>Russell Ballestrini | <span class="unturf-brand">unturf.</span> © 2025</center>
+</footer>
+
+
+
+
+
+
+
+5. Step Label
+
+Progressive disclosure pattern. A numbered label introduces each section on multi-step pages.
+
+STEP 1
+Example Section Title
+Content follows a step label & heading pair.
+
+<span class="step-label">STEP 1</span>
+<h3>Section Title</h3>
+
+
+
+
+
+
+
+6. Callout Boxes
+
+Three box types share the same structure (left border, padding, subtle background). Each carries a distinct color & purpose.
+
+
+ Honest box. Caveats, corrections, uncomfortable truths. Red border signals caution about claims or expectations.
+
+
+
+ Recipe box. Procedures, instructions, actionable steps. Green border signals constructive action.
+
+
+
+ Warning box. Safety notes, hazards, things that could cause harm. Orange border signals attention required.
+
+
+<div class="honest-box">
+ <b>Label.</b> Content here.
+</div>
+
+<div class="recipe-box">
+ <b>Label.</b> Content here.
+</div>
+
+<div class="warning-box">
+ <b>Label.</b> Content here.
+</div>
+
+
+
+
+
+
+
+7. Capital Cards
+
+Eight color coded cards for the eight forms of capital . Each variant sets a left border color & heading color via custom property.
+
+
+
Living Capital
+
Soil, water, plants, animals, ecosystems.
+
+
+
+
Material Capital
+
Stone, metal, timber, tools, servers, networks.
+
+
+
+
Financial Capital
+
Money, currencies, securities.
+
+
+
+
Intellectual Capital
+
Ideas, concepts, knowledge, open source code.
+
+
+
+
Experiential Capital
+
Embodied know-how built from lived experience.
+
+
+
+
Social Capital
+
Influence, connections, relationships, trust.
+
+
+
+
Cultural Capital
+
Shared story, myth, song, art, ceremony, ethics.
+
+
+
+
Spiritual Capital
+
Karma, faith, presence, connection to a greater whole.
+
+
+<div class="capital-card capital-card--living">
+ <h4>Living Capital</h4>
+ <p>Description here.</p>
+</div>
+
+Variants: --living, --material, --financial, --intellectual, --experiential, --social, --cultural, --spiritual.
+
+
+
+
+
+
+
+8. Diagram Figure
+
+All diagrams wrap in <figure class="diagram">. Images scale to container width. Captions render small & gray.
+
+
+
+ example caption: from living capital at the foundation to cultural capital as emergent community property
+
+
+<figure class="diagram">
+ <img src="path/to/diagram.svg" alt="Description">
+ <figcaption>caption text</figcaption>
+</figure>
+
+
+
+
+
+
+
+9. Footnotes
+
+Inline superscript links point to numbered footnotes at the bottom of a page. Clicking a footnote number scrolls down. A back arrow scrolls up. Targeted footnotes highlight with a lime left border.[1]
+
+Inline Pattern
+<sup id="ref1"><a href="#fn1">[1]</a></sup>
+
+Footnote Section
+
+
+<div class="footnotes">
+ <ol>
+ <li id="fn1">Source text. <a href="#ref1">↩</a></li>
+ </ol>
+</div>
+
+
+
+
+
+
+
+10. Tables
+
+Pico CSS styles tables from semantic markup alone. No classes needed.
+
+
+
+ Capital Permacomputer Expression Quadrivium Value
+
+
+ Living Durable hardware, repair not replace Harmony
+ Intellectual Open source, public domain, seeds to sprout Truth
+ Social By people, for people, voluntary Freedom
+ Spiritual Love as fuel, wu wei, homeostasis Love
+
+
+
+
+
+
+
+
+
+11. Lists
+
+Unordered
+
+ Glass jars for storage
+ Steel water bottles
+ Cotton bags
+ Beeswax wraps
+
+
+Ordered
+
+ Eliminate petroleum plastic
+ Grow hemp
+ Process cooperatively
+ Compost at end of life
+
+
+
+
+
+
+
+
+12. Horizontal Rule & Links
+
+A horizontal rule (<hr>) separates major sections:
+
+
+
+Links styled by Pico CSS: home , manifesto , external link .
+
+
+
+
+
+
+
+13. Software Page Components
+
+The software page uses a distinct layout. A class="software-page" on <html> scopes all its rules. These classes apply only on that page:
+
+
+
+ Class Purpose
+
+
+ .software-pageRoot scope on <html>, triggers ChunkFive headings & layout rules
+ .projects-gridResponsive grid: 1 column mobile, 2 columns at 768px+
+ .logo-containerSubtle background box for project logos
+ .unsandbox-logoArialPixel font, gold color
+ .neopig-logoGradient text effect (pink/orange)
+ .project-uncloseaiSpans full width at desktop breakpoint
+
+
+
+
+
+← back to the manifesto
+
+
+
+