diff --git a/content/explore.md b/content/explore.md
index 27bfad0..fa6b651 100644
--- a/content/explore.md
+++ b/content/explore.md
@@ -20,6 +20,7 @@ The main event — essays, reflections, and the daily Morning Brief.
Side projects built into the site.
+- [/earth](/earth) — Earth View — interactive 3D globe with live NASA satellite imagery, overlays, and time lapses
- [/status](/status) — KC Situation Awareness Dashboard — live weather alerts, Windy radar, Blink cameras, and I-70 traffic cameras
- [/airbrief](/airbrief) — AirBrief — aviation weather situational awareness (METARs, TAFs, flight categories)
- [/volleyball-score](/volleyball-score) — volleyball scorekeeping app
diff --git a/hugo.toml b/hugo.toml
index 81e4264..f267085 100644
--- a/hugo.toml
+++ b/hugo.toml
@@ -77,6 +77,12 @@ contentDir = "content"
parent = "explore"
weight = 8
+[[menus.main]]
+ name = "Earth View"
+ url = "/earth"
+ parent = "explore"
+ weight = 9
+
[[menus.footer]]
name = "RSS"
url = "/index.xml"
diff --git a/layouts/index.html b/layouts/index.html
index 8e74b2f..4c8cabd 100644
--- a/layouts/index.html
+++ b/layouts/index.html
@@ -1,4 +1,26 @@
{{ define "main" }}
+
+
+
{{- $pages := where .Site.RegularPages "Section" "posts" }}
{{- $paginator := .Paginate $pages }}
diff --git a/static/css/custom.css b/static/css/custom.css
index a880adb..9851faf 100644
--- a/static/css/custom.css
+++ b/static/css/custom.css
@@ -101,3 +101,59 @@
.post-list-pagination a:hover {
text-decoration: underline;
}
+
+/* ── Homepage tools section ── */
+
+.homepage-tools {
+ margin-bottom: 2.5rem;
+}
+
+.homepage-tools__heading {
+ font-size: 0.75rem;
+ font-family: 'IBM Plex Mono', 'Courier New', monospace;
+ font-weight: 400;
+ letter-spacing: 0.08em;
+ text-transform: uppercase;
+ color: var(--color-tertiary);
+ margin-bottom: 0.85rem;
+}
+
+.homepage-tools__grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
+ gap: 0.75rem;
+}
+
+.tool-card {
+ display: flex;
+ flex-direction: column;
+ gap: 0.3rem;
+ padding: 0.9rem 1rem;
+ background: var(--color-surface);
+ border: 1px solid var(--color-border);
+ border-radius: 5px;
+ text-decoration: none;
+ transition: border-color 150ms ease, box-shadow 150ms ease;
+}
+
+.tool-card:hover {
+ border-color: var(--color-tertiary);
+ box-shadow: 0 2px 8px rgba(44, 36, 22, 0.07);
+}
+
+.tool-card__icon {
+ font-size: 1.25rem;
+ line-height: 1;
+}
+
+.tool-card__name {
+ font-size: 0.9375rem;
+ font-weight: 600;
+ color: var(--color-primary);
+}
+
+.tool-card__desc {
+ font-size: 0.8125rem;
+ color: var(--color-secondary);
+ line-height: 1.4;
+}