Move capture actions out of the header into the bottom dock
The header now holds only the wordmark; the capture actions live in a
dock fixed to the bottom of the viewport on every screen, so the
primary action stays reachable without sitting in the navbar. Drop the
v1.0 footer, which the fixed dock would otherwise overlap.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0147qRctyhELxJgGs3nHizEM
change
commit 1d00cdc9109787f00e12867ae104f2ffd8f24aa2
author Claude <noreply@anthropic.com>
date
parent a560bb4c
diff --git a/lib/views/home.rb b/lib/views/home.rb
index 968e9da..4c1599a 100644
--- a/lib/views/home.rb
+++ b/lib/views/home.rb
@@ -34,7 +34,6 @@ module Domus
               render_header
               render_main
               render_capture
-              render_footer
               render_dock
             end
           end
@@ -49,7 +48,6 @@ module Domus
             span(class: "logo-mark")
             plain "domus"
           end
-          render_actions(class: "actions", "x-show": "state === 'capture'")
         end
       end
 
@@ -119,14 +117,9 @@ module Domus
         end
       end
 
-      def render_footer
-        footer(class: "foot", "x-show": "state === 'capture'") do
-          span(class: "fm") { plain "v1.0" }
-        end
-      end
-
-      # On small screens the capture actions move to a thumb-reachable dock
-      # fixed to the bottom of the viewport; it's hidden on wider screens.
+      # The capture front door: a dock fixed to the bottom of the viewport on
+      # every screen, so the primary action stays reachable and out of the
+      # header.
       def render_dock
         render_actions(class: "dock", "x-show": "state === 'capture'")
       end
diff --git a/public/app.css b/public/app.css
index 0abd9a1..bcd2c24 100644
--- a/public/app.css
+++ b/public/app.css
@@ -315,14 +315,7 @@ body {
    Home — the archive front door
    ════════════════════════════════════════════════════════════════════════ */
 
-/* ---- header capture actions ---- */
-.topbar .actions {
-  margin-left: auto;
-  display: flex;
-  align-items: center;
-  gap: var(--space-s);
-}
-
+/* ---- capture actions (shown in the bottom dock) ---- */
 .add-btn {
   display: inline-flex;
   align-items: center;
@@ -365,7 +358,7 @@ body {
   width: 100%;
   max-width: 760px;
   margin: 0 auto;
-  padding: var(--space-xl) var(--space-l) var(--space-2xl);
+  padding: var(--space-xl) var(--space-l) var(--space-3xl);
 }
 
 .sec-h {
@@ -456,40 +449,26 @@ body {
   color: var(--w-ink-3);
 }
 
-/* ---- footer ---- */
-.foot {
-  width: 100%;
-  max-width: 760px;
-  margin: 0 auto;
-  padding: var(--space-l);
+/* ---- capture dock — the front door, anchored to the bottom ---- */
+.dock {
+  position: fixed;
+  left: 0; right: 0; bottom: 0;
+  z-index: 20;
   display: flex;
-  justify-content: center;
   align-items: center;
-  border-top: 1px solid var(--w-line);
-}
-.foot .fm {
-  font-family: var(--font-mono);
-  font-size: var(--step--2);
-  letter-spacing: 0.04em;
-  color: var(--w-ink-3);
+  justify-content: center;
+  gap: var(--space-m);
+  padding: var(--space-2xl) var(--space-l) var(--space-l);
+  background: linear-gradient(to top, var(--w-bg) 55%, transparent);
 }
 
-/* ---- mobile: capture moves to a thumb-reachable bottom dock ---- */
-.dock { display: none; }
-
+/* On small screens the dock fills the width and the primary action grows
+   into a thumb-reachable button. */
 @media (max-width: 560px) {
-  .topbar .actions { display: none; }
-
   .wrap { padding: var(--space-l) var(--space-s) 150px; }
-  .foot { display: none; }
 
   .dock {
-    position: fixed;
-    left: 0; right: 0; bottom: 0;
-    z-index: 20;
-    display: flex;
     flex-direction: column-reverse;
-    align-items: center;
     gap: var(--space-xs);
     padding: var(--space-s) var(--space-s) calc(var(--space-s) + env(safe-area-inset-bottom, 8px));
     background: linear-gradient(to top, var(--w-bg) 72%, transparent);