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 @@ + + + + styleguide — unturf. + + + + + + + + + + +
+ +

unturf.

+

grow food not lawn

+ + +

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.

+ + + + + + + + + +
ClassMax WidthUsed On
.content-narrow460pxmanifesto
.content-wide960pxall 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> &middot;
+  <a href="..." aria-current="page">current page</a> &middot;
+  <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> &copy; 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 diagram: eight forms of capital from foundation to emergence +
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

+
+
    +
  1. Example footnote demonstrating the pattern. Source title, Publication Name, date.
  2. +
+
+ +
<div class="footnotes">
+  <ol>
+    <li id="fn1">Source text. <a href="#ref1">&#8617;</a></li>
+  </ol>
+</div>
+ +
+ + + + + +

10. Tables

+ +

Pico CSS styles tables from semantic markup alone. No classes needed.

+ + + + + + + + + + + +
CapitalPermacomputer ExpressionQuadrivium Value
LivingDurable hardware, repair not replaceHarmony
IntellectualOpen source, public domain, seeds to sproutTruth
SocialBy people, for people, voluntaryFreedom
SpiritualLove as fuel, wu wei, homeostasisLove
+ +
+ + + + + +

11. Lists

+ +

Unordered

+ + +

Ordered

+
    +
  1. Eliminate petroleum plastic
  2. +
  3. Grow hemp
  4. +
  5. Process cooperatively
  6. +
  7. Compost at end of life
  8. +
+ +
+ + + + + +

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:

+ + + + + + + + + + + + + +
ClassPurpose
.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

+ +
+ + + + + + +