diff --git a/assets/static/style.css b/assets/static/style.css
index a2093d3..51a4084 100644
--- a/assets/static/style.css
+++ b/assets/static/style.css
@@ -31,14 +31,14 @@ a:hover, a:focus-visible { color: var(--teal); }
.header-meta { display: flex; justify-content: space-between; padding: 0 0 22px; color: var(--dim); font-size: 10px; }
.socials { display: flex; flex-wrap: wrap; gap: 20px; color: var(--muted); text-transform: none; letter-spacing: .04em; }
-.hero { border-bottom: 1px solid var(--rule); padding: 60px 0 55px; }
+.hero { border-bottom: 1px solid var(--rule); padding: 54px 0 48px; }
.hero.compact { padding-block: 58px; }
.eyebrow { margin: 0 0 18px; color: var(--magenta); font-size: 11px; }
.eyebrow::before { content: "— "; }
h1, h2 { font-family: var(--serif); }
-h1 { max-width: 650px; margin: 0; font-size: clamp(30px, 4vw, 45px); font-style: italic; line-height: 1.25; }
+h1 { max-width: 880px; margin: 0; font-size: clamp(30px, 4vw, 45px); font-style: italic; line-height: 1.25; }
.entry-hero h1 { font-style: normal; }
-.dek { max-width: 650px; margin-top: 18px; color: var(--muted); }
+.dek { max-width: 700px; margin-top: 18px; color: var(--muted); }
.dek p { margin: 0; }
.activity-section { min-height: 370px; padding: 48px 0 72px; }
@@ -53,7 +53,7 @@ h1 { max-width: 650px; margin: 0; font-size: clamp(30px, 4vw, 45px); font-style:
.accent-blog::before { border-color: var(--violet); }
.accent-article::before { border-color: var(--magenta); }
.entry-meta { display: flex; align-items: center; gap: 16px; color: var(--muted); font-size: 10px; }
-.label { border: 1px solid currentColor; padding: 2px 8px; color: var(--teal); }
+.label { border: 1px solid currentColor; padding: 2px 8px; color: var(--teal); text-transform: uppercase; }
.accent-blog .label { color: var(--violet); }
.accent-article .label { color: var(--magenta); }
.timeline-entry h2, .entry-card h2 { margin: 10px 0 5px; font-size: 21px; line-height: 1.3; }
@@ -77,11 +77,20 @@ h1 { max-width: 650px; margin: 0; font-size: clamp(30px, 4vw, 45px); font-style:
.activity-more-button:focus-visible { border-color: var(--teal); color: var(--teal); }
.activity-more-button:disabled { cursor: default; opacity: .55; }
-.featured-project-list { border-bottom: 1px solid var(--rule); }
-.featured-project { padding: 22px 0 24px; }
-.featured-project + .featured-project { border-top: 1px solid rgba(39,48,57,.65); }
-.featured-project h2 { margin: 10px 0 5px; font-size: 21px; line-height: 1.3; }
-.featured-project p { margin: 0 0 10px; color: var(--muted); font-size: 14px; line-height: 1.55; }
+.featured-project-list { display: grid; gap: 14px; }
+.featured-project-card { border: 1px solid var(--rule); border-top-color: var(--teal); background: var(--panel); padding: 22px; }
+.featured-project-meta { display: flex; align-items: center; justify-content: space-between; gap: 14px; color: var(--muted); font: 10px var(--mono); letter-spacing: .12em; }
+.featured-project-card h2 { margin: 15px 0 7px; font-size: 25px; line-height: 1.2; }
+.featured-project-card > p { margin: 0; color: var(--muted); font-size: 14px; line-height: 1.55; }
+.featured-project-technologies { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 17px; }
+.featured-project-technologies span { border: 1px solid rgba(81,182,165,.55); padding: 3px 6px; color: var(--teal); font: 500 9px var(--mono); letter-spacing: .08em; text-transform: uppercase; }
+.featured-project-latest { display: grid; gap: 7px; margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--rule); }
+.featured-project-latest > span { color: var(--dim); font: 500 9px var(--mono); letter-spacing: .12em; text-transform: uppercase; }
+.featured-project-latest a { color: var(--ink); font: 14px/1.45 var(--serif); }
+.featured-project-latest time { color: var(--teal); font: 500 9px var(--mono); letter-spacing: .07em; }
+.featured-project-actions { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 21px; }
+.featured-project-actions a { color: var(--magenta); font: 500 10px var(--mono); letter-spacing: .1em; text-transform: uppercase; }
+.featured-project-actions a:first-child { color: var(--teal); }
.featured-projects-empty { margin: 0; padding: 24px 0; color: var(--muted); }
.featured-projects-link { display: inline-block; margin-top: 22px; color: var(--teal); font: 500 10px var(--mono); letter-spacing: .12em; text-transform: uppercase; }
@@ -312,6 +321,7 @@ h1 { max-width: 650px; margin: 0; font-size: clamp(30px, 4vw, 45px); font-style:
.hero, .hero.compact { padding-block: 44px; }
h1 { font-size: 30px; }
.homepage-discovery-grid { grid-template-columns: 1fr; gap: 48px; }
+ .featured-project-card { padding: 20px; }
.card-grid { grid-template-columns: 1fr; }
.tag-directory { grid-template-columns: 1fr; }
.tag-filter { padding-block: 18px; }
diff --git a/content/contents.lr b/content/contents.lr
index 9df2315..9681acf 100644
--- a/content/contents.lr
+++ b/content/contents.lr
@@ -4,9 +4,8 @@ title: Home
---
eyebrow: The Chronicle
---
-summary: A living record of what's shipping, what's written, and what's quietly under construction.
+summary: Things built. Lessons learned. Work still in progress.
---
body:
-Every entry is maintained in Git and published through a repeatable static build.
-Commit it, deploy it, and it appears.
-
+A running record of projects, experiments, technical writing, and the occasional
+idea that refused to stay hypothetical.
diff --git a/templates/base.html b/templates/base.html
index 931b5b0..5432ed9 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -9,7 +9,7 @@
-
+
diff --git a/templates/home.html b/templates/home.html
index 660af69..09efb0e 100644
--- a/templates/home.html
+++ b/templates/home.html
@@ -21,14 +21,12 @@
{% if entries.append(item) %}{% endif %}
{% endfor %}
{% endfor %}
- {% for project in site.query('/projects') %}
- {% if project._model == 'project' %}
- {% set devlog = site.get(project.path ~ '/devlog') %}
- {% if devlog %}
- {% for entry in devlog.children %}
- {% if entries.append(entry) %}{% endif %}
- {% endfor %}
- {% endif %}
+ {% for project in site.query('/projects').filter(F._model == 'project') %}
+ {% set devlog = site.get(project.path ~ '/devlog') %}
+ {% if devlog %}
+ {% for entry in devlog.children %}
+ {% if entries.append(entry) %}{% endif %}
+ {% endfor %}
{% endif %}
{% endfor %}
{% for item in entries|sort(attribute='date', reverse=true) %}
@@ -56,14 +54,33 @@
{% for project in site.query('/projects').filter(F._model == 'project').filter(F.featured == true).order_by('featured_order', '-date').limit(3) %}
-
-
+ {% set devlog = site.get(project.path ~ '/devlog') %}
+ {% set latest_activity = devlog.children.order_by('-date', '-source_commit_time').first() if devlog else none %}
+
+
{{ project.status }}
{{ project.summary }}
- View project →
+ {% if project.technology_labels %}
+
+ {% for technology in project.technology_labels[:4] %}
+ {% set parts = technology.split('\t', 1) %}
+ {{ parts[1] if parts|length > 1 else parts[0] }}
+ {% endfor %}
+
+ {% endif %}
+ {% if latest_activity %}
+
+ {% endif %}
+
{% else %}
Selected projects will appear here.