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.
This commit is contained in:
+89
-26
@@ -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,6 +564,7 @@
|
||||
|
||||
<!-- PHASE 2: One message from Neuron -->
|
||||
<div class="phase" id="phase2">
|
||||
<div class="chat-window">
|
||||
<div class="chat-container" id="chat-container"></div>
|
||||
<div class="typing-indicator" id="typing-indicator">
|
||||
<div class="typing-indicator-avatar"><img src="/assets/neuron-icon.png" alt=""></div>
|
||||
@@ -532,8 +582,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<!-- Quiet footer — shown after Neuron goes silent -->
|
||||
<div id="quiet-footer" style="display:none;opacity:0;transition:opacity 900ms ease;margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--border)">
|
||||
<p style="font-size:0.85rem;color:var(--t3);margin-bottom:1rem">Leave your email and I'll find you when it's time.</p>
|
||||
<div id="quiet-footer" style="display:none;opacity:0;transition:opacity 900ms ease;border-top:1px solid var(--border);padding:1rem 1rem 0.75rem">
|
||||
<p style="font-size:0.85rem;color:var(--t3);margin-bottom:0.75rem">Leave your email and I'll find you when it's time.</p>
|
||||
<div class="input-row">
|
||||
<input class="text-input" id="quiet-email" type="email" placeholder="your@email.com" autocomplete="email">
|
||||
<button class="arrow-btn" id="quiet-email-submit" aria-label="Send">
|
||||
@@ -545,6 +595,7 @@
|
||||
<button class="phone-skip" id="quiet-skip">no thanks</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- PHASE 2b: Email collection -->
|
||||
<div class="phase" id="phase2b">
|
||||
@@ -571,8 +622,26 @@
|
||||
|
||||
<!-- PHASE 3: Return — 5 exchanges then manifesto + waitlist -->
|
||||
<div class="phase" id="phase3">
|
||||
|
||||
<!-- Revealed after 5 exchanges (or immediately on confirmation) -->
|
||||
<div id="phase3-content" style="display:none;opacity:0;transition:opacity 700ms ease;">
|
||||
<div class="phase3-grid">
|
||||
|
||||
<!-- Left: manifesto -->
|
||||
<div class="phase3-left">
|
||||
<p class="manifesto">
|
||||
The company that gave you free search built the most powerful ad-targeting machine in history. The one that promised to connect the world optimized it for outrage — because outrage drives engagement, and engagement drives revenue. The one that gave everyone a voice sold that attention to the highest bidder. These aren't accidents. They're the business model.<br><br>
|
||||
Every free product is the same transaction: something useful in exchange for something you didn't know you were selling — your attention, your behavior, your future choices. The product is always "free." The price is always you.<br><br>
|
||||
Now AI is doing the same thing — faster and deeper. Your queries train their models. Your thought patterns become datasets. The way you reason, what you struggle with, what you're afraid of — it's all captured. You get a useful tool. They get a map of your mind.<br><br>
|
||||
Neuron is a direct rejection of that model. It runs on your machine. <strong>Your memory never leaves.</strong> I don't sell data, serve ads, or profile you. The only thing I sell is the software — and once you have it, it's yours.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Center: headline + chat -->
|
||||
<div class="phase3-center">
|
||||
<h2 class="phase3-headline" id="phase3-headline"></h2>
|
||||
|
||||
<div class="chat-window">
|
||||
<div class="chat-container" id="return-chat-container"></div>
|
||||
<div class="typing-indicator" id="return-typing-indicator">
|
||||
<div class="typing-indicator-avatar"><img src="/assets/neuron-icon.png" alt=""></div>
|
||||
@@ -589,19 +658,11 @@
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Revealed after 5 exchanges (or immediately on confirmation) -->
|
||||
<div id="phase3-content" style="display:none;opacity:0;transition:opacity 700ms ease;">
|
||||
|
||||
<div class="divider" style="margin-top:2.5rem"></div>
|
||||
|
||||
<p class="manifesto">
|
||||
The company that gave you free search built the most powerful ad-targeting machine in history. The one that promised to connect the world optimized it for outrage — because outrage drives engagement, and engagement drives revenue. The one that gave everyone a voice sold that attention to the highest bidder. These aren't accidents. They're the business model.<br><br>
|
||||
Every free product is the same transaction: something useful in exchange for something you didn't know you were selling — your attention, your behavior, your future choices. The product is always "free." The price is always you.<br><br>
|
||||
Now AI is doing the same thing — faster and deeper. Your queries train their models. Your thought patterns become datasets. The way you reason, what you struggle with, what you're afraid of — it's all captured. You get a useful tool. They get a map of your mind.<br><br>
|
||||
Neuron is a direct rejection of that model. It runs on your machine. <strong>Your memory never leaves.</strong> I don't sell data, serve ads, or profile you. The only thing I sell is the software — and once you have it, it's yours.
|
||||
</p>
|
||||
|
||||
<!-- Right: values + waitlist + share -->
|
||||
<div class="phase3-right">
|
||||
<div class="values-section">
|
||||
<p class="values-title">Local first</p>
|
||||
<div class="positions-grid">
|
||||
@@ -669,7 +730,9 @@
|
||||
<span id="copy-label">Copy link</span>
|
||||
</button>
|
||||
</div>
|
||||
</div><!-- /phase3-right -->
|
||||
|
||||
</div><!-- /phase3-grid -->
|
||||
</div><!-- /phase3-content -->
|
||||
</div><!-- /phase3 -->
|
||||
|
||||
|
||||
Reference in New Issue
Block a user