diff --git a/README.md b/README.md index b68580b..d798e96 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,20 @@ A loop is a recursive goal: you define a purpose and the AI iterates (often with → Read the Loop Engineering essay on Substack

+## Contents + +- [Quick Links](#quick-links) +- [Why This Matters](#why-this-matters) +- [The Five Building Blocks + Memory](#the-five-building-blocks--memory) +- [Patterns](#patterns) +- [Getting Started (5 minutes)](#getting-started-5-minutes) +- [Examples by Tool](#examples-by-tool) +- [Operating & Safety](#operating--safety) +- [Caveats](#caveats) +- [Contributing](#contributing) +- [Sources](#sources) +- [License](#license) + ## Quick Links | Start here | Description | diff --git a/assets/cobus-greyling.jpg b/assets/author-banner.jpg similarity index 100% rename from assets/cobus-greyling.jpg rename to assets/author-banner.jpg diff --git a/assets/visuals/social-preview.jpg b/assets/visuals/social-preview.jpg new file mode 100644 index 0000000..225bfb3 Binary files /dev/null and b/assets/visuals/social-preview.jpg differ diff --git a/docs/assets/css/showcase.css b/docs/assets/css/showcase.css index 2bb301f..5ba09a6 100644 --- a/docs/assets/css/showcase.css +++ b/docs/assets/css/showcase.css @@ -56,7 +56,9 @@ a:hover { color: #6ff5d8; } display: flex; align-items: center; justify-content: space-between; + gap: 16px; height: 64px; + position: relative; } .logo { @@ -82,6 +84,47 @@ a:hover { color: #6ff5d8; } .nav-links a:hover { color: var(--text); } +.nav-menu { + display: flex; + align-items: center; + gap: 28px; +} + +.nav-toggle { + display: none; + flex-direction: column; + justify-content: center; + gap: 5px; + width: 40px; + height: 40px; + padding: 8px; + border-radius: 10px; + border: 1px solid var(--border); + background: var(--bg-card); + cursor: pointer; +} + +.nav-toggle-bar { + display: block; + width: 100%; + height: 2px; + background: var(--text); + border-radius: 2px; + transition: transform 0.2s, opacity 0.2s; +} + +.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(1) { + transform: translateY(7px) rotate(45deg); +} + +.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(2) { + opacity: 0; +} + +.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(3) { + transform: translateY(-7px) rotate(-45deg); +} + .btn { display: inline-flex; align-items: center; @@ -491,6 +534,24 @@ section { margin-bottom: 28px; } +.cta-actions { + display: flex; + align-items: center; + justify-content: center; + flex-wrap: wrap; + gap: 12px; +} + +.cta-stars { + display: inline-flex; + line-height: 0; +} + +.cta-stars img { + display: block; + border-radius: 999px; +} + .footer { padding: 32px 24px; text-align: center; @@ -503,7 +564,50 @@ section { .footer a:hover { color: var(--accent); } @media (max-width: 640px) { - .nav-links { display: none; } + .nav-toggle { display: flex; } + + .nav-menu { + position: absolute; + top: calc(100% + 8px); + left: 0; + right: 0; + display: none; + flex-direction: column; + align-items: stretch; + gap: 16px; + padding: 20px; + background: rgba(7, 11, 18, 0.98); + border: 1px solid var(--border); + border-radius: var(--radius); + box-shadow: 0 24px 64px rgba(0, 0, 0, 0.45); + } + + .nav-menu.open { display: flex; } + + .nav-links { + flex-direction: column; + align-items: stretch; + gap: 4px; + width: 100%; + } + + .nav-links a { + display: block; + padding: 10px 12px; + border-radius: 8px; + } + + .nav-links a:hover { + background: rgba(62, 232, 197, 0.08); + } + + .nav-menu .btn { + width: 100%; + justify-content: center; + } + + body.nav-open { overflow: hidden; } + .hero { padding: 48px 0 40px; } .flow-arrow { display: none; } } diff --git a/docs/index.html b/docs/index.html index 1ecf717..3e51ce5 100644 --- a/docs/index.html +++ b/docs/index.html @@ -20,14 +20,28 @@ @@ -402,8 +416,17 @@

loop-audit on every PR

Ready to stop prompting?

The best loops are boring, reliable, and transparent.

- Star on GitHub - Contribute a pattern +
+ Star on GitHub + + GitHub stars + + Contribute a pattern +