From 686ab1ee2fb21bb62adb2efec50ddb5468483e35 Mon Sep 17 00:00:00 2001 From: Will Anderson Date: Tue, 28 Apr 2026 18:58:09 -0500 Subject: [PATCH] iMessage-style bubbles, integrated chat input, 3-column return layout Chat messages are now proper left/right bubbles. Input bar lives inside the chat window with a top border separator. On return visit, manifesto goes left, chat center, values/waitlist right in a full-width grid. --- src/landing.html | 313 ++++++++++++++++++++++++++++------------------- 1 file changed, 188 insertions(+), 125 deletions(-) diff --git a/src/landing.html b/src/landing.html index 00ca161..ad4b294 100644 --- a/src/landing.html +++ b/src/landing.html @@ -145,19 +145,25 @@ /* ── Chat ── */ - .chat-container { - max-height: 420px; - overflow-y: auto; + .chat-window { + background: #fff; + border: 1px solid var(--border); + border-radius: 8px; + box-shadow: 0 2px 8px rgba(13,13,20,0.07), 0 0 0 1px rgba(13,13,20,0.02); + display: flex; + flex-direction: column; + overflow: hidden; margin-bottom: 1.25rem; + } + .chat-container { + flex: 1; + max-height: 380px; + overflow-y: auto; display: flex; flex-direction: column; gap: 0.6rem; - padding: 1rem; + padding: 1rem 1rem 0.5rem; scroll-behavior: smooth; - background: #fff; - border: 1px solid var(--border); - border-radius: 6px; - box-shadow: 0 1px 6px rgba(13,13,20,0.06), 0 0 0 1px rgba(13,13,20,0.02); } .chat-container::-webkit-scrollbar { width: 3px; } .chat-container::-webkit-scrollbar-track { background: transparent; } @@ -213,13 +219,13 @@ user-select: none; } - .chat-msg-body { min-width: 0; } + .chat-msg-body { min-width: 0; flex: none; } /* hide labels — position is enough */ .chat-msg-label { display: none; } .chat-msg-text { - display: inline-block; + display: block; font-size: 0.95rem; line-height: 1.6; padding: 0.55rem 0.85rem; @@ -240,7 +246,17 @@ border-bottom-right-radius: 4px; } - .chat-input-area { margin-top: 0.25rem; } + .chat-input-area { + border-top: 1px solid var(--border); + padding: 0.65rem 1rem; + } + .chat-input-area .input-row { margin-top: 0; } + .chat-input-area .text-input { + border-bottom: none; + padding: 0.25rem 0; + font-size: 0.95rem; + } + .chat-input-area .text-input:focus { border-color: transparent; } /* ── Phase 2 greeting ── */ @@ -311,6 +327,39 @@ color: var(--text); } + /* Phase 3 three-column layout */ + .phase3-grid { + display: grid; + grid-template-columns: 1fr 420px 1fr; + gap: 2.5rem; + align-items: start; + width: 100vw; + position: relative; + left: 50%; + transform: translateX(-50%); + max-width: 1200px; + padding: 0 2rem; + box-sizing: border-box; + } + .phase3-left { + padding-top: 0.5rem; + } + .phase3-center { + /* center column */ + } + .phase3-right { + padding-top: 0.5rem; + } + @media (max-width: 900px) { + .phase3-grid { + grid-template-columns: 1fr; + width: 100%; + left: auto; + transform: none; + padding: 0; + } + } + .manifesto { font-size: 1rem; line-height: 1.85; @@ -435,7 +484,7 @@ gap: 0.5rem; align-items: flex-end; align-self: flex-start; - margin-bottom: 0.25rem; + padding: 0.25rem 1rem 0.5rem; } .typing-indicator.active { display: flex; } .typing-indicator-avatar { @@ -515,34 +564,36 @@
-
-
-
-
-
-