Update index.html
Browse files- index.html +90 -134
index.html
CHANGED
|
@@ -54,163 +54,119 @@ tailwind.config = {
|
|
| 54 |
}
|
| 55 |
}
|
| 56 |
</script>
|
|
|
|
| 57 |
<style>
|
| 58 |
* { box-sizing: border-box; }
|
| 59 |
-
body {
|
| 60 |
-
|
| 61 |
body {
|
| 62 |
-
--
|
| 63 |
-
--
|
| 64 |
-
--
|
| 65 |
-
--
|
| 66 |
-
--
|
| 67 |
-
--
|
| 68 |
-
--
|
| 69 |
-
--
|
| 70 |
-
--
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
}
|
| 72 |
body.light {
|
| 73 |
-
--
|
| 74 |
-
--
|
| 75 |
-
--
|
| 76 |
-
--
|
| 77 |
-
--
|
| 78 |
-
--
|
| 79 |
-
--
|
| 80 |
-
--
|
| 81 |
-
--
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 82 |
}
|
| 83 |
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
:
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
.
|
| 93 |
-
.
|
| 94 |
-
.
|
| 95 |
-
.
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
}
|
| 103 |
-
.
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
}
|
| 111 |
-
.
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
}
|
| 117 |
-
.prose-msg
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
}
|
| 123 |
-
.prose-msg h1 { font-size: 1.25em; }
|
| 124 |
-
.prose-msg h2 { font-size: 1.1em; }
|
| 125 |
-
.prose-msg h3 { font-size: 1em; }
|
| 126 |
.prose-msg ul, .prose-msg ol { padding-left: 1.25em; margin: 0.4em 0 0.6em; }
|
| 127 |
.prose-msg li { margin: 0.2em 0; }
|
| 128 |
-
.prose-msg blockquote {
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
color: #9898a8;
|
| 132 |
-
margin: 0.5em 0;
|
| 133 |
-
font-style: italic;
|
| 134 |
-
}
|
| 135 |
-
.prose-msg a { color: #d4a853; text-decoration: underline; }
|
| 136 |
-
.prose-msg strong { color: #e8e4dc; font-weight: 500; }
|
| 137 |
.prose-msg table { border-collapse: collapse; width: 100%; margin: 0.5em 0; font-size: 0.85em; }
|
| 138 |
-
.prose-msg th { background:
|
| 139 |
-
.prose-msg td { border-top: 1px solid
|
| 140 |
|
| 141 |
-
|
| 142 |
-
.prose-user {
|
| 143 |
-
.prose-user p { margin: 0 0 0.5em; }
|
| 144 |
-
.prose-user p:last-child { margin-bottom: 0; }
|
| 145 |
.prose-user code { background: rgba(0,0,0,0.12); padding: 0.1em 0.3em; border-radius: 3px; font-size: 0.875em; }
|
| 146 |
.prose-user pre { background: rgba(0,0,0,0.15); border-radius: 5px; padding: 10px 12px; overflow-x: auto; margin: 0.5em 0; }
|
| 147 |
.prose-user strong { font-weight: 500; }
|
| 148 |
|
| 149 |
-
/* Textarea auto-resize trick */
|
| 150 |
textarea { resize: none; overflow: hidden; }
|
| 151 |
-
|
| 152 |
-
/* Sidebar transition */
|
| 153 |
#sidebar { transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1); }
|
| 154 |
#overlay { transition: opacity 0.3s ease; }
|
| 155 |
-
|
| 156 |
-
/* Thinking dots */
|
| 157 |
.dot-1 { animation: blink 1.2s 0s infinite; }
|
| 158 |
.dot-2 { animation: blink 1.2s 0.2s infinite; }
|
| 159 |
.dot-3 { animation: blink 1.2s 0.4s infinite; }
|
| 160 |
-
|
| 161 |
-
.msg-anim { opacity: 0; animation: fadeUp 0.35s cubic-bezier(0.16, 1, 0.3, 1) forwards; }
|
| 162 |
-
|
| 163 |
-
/* Model select */
|
| 164 |
select { -webkit-appearance: none; appearance: none; }
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
textarea:focus, input:focus, select:focus { outline: none; box-shadow: 0 0 0 1.5px #d4a853; }
|
| 168 |
-
|
| 169 |
-
/* Apply variables to all the fixed-color elements */
|
| 170 |
-
body { background: var(--c-bg); }
|
| 171 |
-
#sidebar { background: var(--c-surface); border-color: var(--c-border); }
|
| 172 |
-
header { background: var(--c-surface); border-color: var(--c-border); }
|
| 173 |
-
.border-ash { border-color: var(--c-border) !important; }
|
| 174 |
-
.bg-smoke { background: var(--c-surface) !important; }
|
| 175 |
-
.bg-ash { background: var(--c-mist) !important; }
|
| 176 |
-
.bg-mist { background: var(--c-mist) !important; }
|
| 177 |
-
.text-fog { color: var(--c-fog) !important; }
|
| 178 |
-
.text-ghost { color: var(--c-ghost) !important; }
|
| 179 |
-
.text-pearl { color: var(--c-pearl) !important; }
|
| 180 |
-
.text-cream { color: var(--c-cream) !important; }
|
| 181 |
-
.border-mist { border-color: var(--c-mist) !important; }
|
| 182 |
-
|
| 183 |
-
/* Prose text in light mode */
|
| 184 |
-
body.light .prose-msg { color: var(--c-text); }
|
| 185 |
-
body.light .prose-msg code { background: rgba(0,0,0,0.08); color: #b06000; }
|
| 186 |
-
body.light .prose-msg pre { background: #e8e0d4; border-color: var(--c-border); }
|
| 187 |
-
body.light .prose-msg pre code { color: var(--c-text); }
|
| 188 |
-
body.light .prose-msg strong { color: var(--c-cream); }
|
| 189 |
-
body.light .prose-msg blockquote { color: var(--c-ghost); }
|
| 190 |
-
|
| 191 |
-
/* Input/select backgrounds */
|
| 192 |
-
body.light textarea,
|
| 193 |
-
body.light input[type="text"],
|
| 194 |
-
body.light input[type="password"],
|
| 195 |
-
body.light input[type="number"],
|
| 196 |
-
body.light select { background: var(--c-surface); color: var(--c-cream); }
|
| 197 |
-
|
| 198 |
-
/* Conversation list hover */
|
| 199 |
-
body.light #conv-list [class*="hover:bg-ash"]:hover { background: var(--c-border) !important; }
|
| 200 |
-
body.light #conv-list [class*="bg-mist"] { background: var(--c-mist) !important; }
|
| 201 |
-
|
| 202 |
-
/* Message container */
|
| 203 |
-
body.light #messages { background: var(--c-bg); }
|
| 204 |
-
|
| 205 |
-
/* Scrollbar in light mode */
|
| 206 |
-
body.light ::-webkit-scrollbar-thumb { background: var(--c-mist); }
|
| 207 |
-
|
| 208 |
-
|
| 209 |
-
|
| 210 |
-
|
| 211 |
</style>
|
| 212 |
</head>
|
| 213 |
-
<body class="h-screen flex overflow-hidden
|
| 214 |
|
| 215 |
<!-- Privacy notice -->
|
| 216 |
<div id="privacy-modal" class="fixed inset-0 z-50 flex items-center justify-center bg-black/70 backdrop-blur-sm">
|
|
@@ -579,7 +535,7 @@ tailwind.config = {
|
|
| 579 |
</div>
|
| 580 |
|
| 581 |
<!-- Input -->
|
| 582 |
-
<div class="border-t border-ash bg-smoke px-4 py-3 flex-shrink-0">
|
| 583 |
<div class="flex items-end gap-2 bg-ash rounded-lg border border-mist focus-within:border-amber transition-colors px-3 py-2">
|
| 584 |
<textarea id="user-input"
|
| 585 |
placeholder="Send a message..."
|
|
|
|
| 54 |
}
|
| 55 |
}
|
| 56 |
</script>
|
| 57 |
+
<link href="https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300&family=Fraunces:ital,opsz,wght@0,9..144,300;0,9..144,700;1,9..144,300&display=swap" rel="stylesheet">
|
| 58 |
<style>
|
| 59 |
* { box-sizing: border-box; }
|
| 60 |
+
body { font-family: 'DM Mono', monospace; }
|
| 61 |
+
|
| 62 |
body {
|
| 63 |
+
--bg: #0d0d0f;
|
| 64 |
+
--surface: #1a1a1f;
|
| 65 |
+
--border: #2a2a32;
|
| 66 |
+
--mist: #3d3d48;
|
| 67 |
+
--fog: #6b6b7a;
|
| 68 |
+
--ghost: #9898a8;
|
| 69 |
+
--pearl: #c8c8d8;
|
| 70 |
+
--cream: #e8e4dc;
|
| 71 |
+
--accent: #d4a853;
|
| 72 |
+
--accent2: #c47c3a;
|
| 73 |
+
--ink: #0d0d0f;
|
| 74 |
+
--user-bg: #d4a853;
|
| 75 |
+
--user-text: #0d0d0f;
|
| 76 |
+
--danger: #b85c5c;
|
| 77 |
+
--safe: #6b8f71;
|
| 78 |
+
--prose: #c8c8d8;
|
| 79 |
+
--code-bg: rgba(255,255,255,0.08);
|
| 80 |
+
--code-col: #d4a853;
|
| 81 |
+
--pre-bg: #111116;
|
| 82 |
}
|
| 83 |
body.light {
|
| 84 |
+
--bg: #f5f0e8;
|
| 85 |
+
--surface: #ede8df;
|
| 86 |
+
--border: #d8d0c4;
|
| 87 |
+
--mist: #cfc7b8;
|
| 88 |
+
--fog: #8a8070;
|
| 89 |
+
--ghost: #6a6058;
|
| 90 |
+
--pearl: #3a3028;
|
| 91 |
+
--cream: #1a1208;
|
| 92 |
+
--accent: #9a6010;
|
| 93 |
+
--accent2: #7a4a08;
|
| 94 |
+
--ink: #f5f0e8;
|
| 95 |
+
--user-bg: #9a6010;
|
| 96 |
+
--user-text: #f5f0e8;
|
| 97 |
+
--danger: #993030;
|
| 98 |
+
--safe: #3a6a3a;
|
| 99 |
+
--prose: #3a3028;
|
| 100 |
+
--code-bg: rgba(0,0,0,0.07);
|
| 101 |
+
--code-col: #7a4a08;
|
| 102 |
+
--pre-bg: #e4ddd0;
|
| 103 |
}
|
| 104 |
|
| 105 |
+
body { background: var(--bg); color: var(--pearl); }
|
| 106 |
+
#sidebar { background: var(--surface); border-color: var(--border); }
|
| 107 |
+
header { background: var(--surface); border-color: var(--border); }
|
| 108 |
+
.bg-smoke { background: var(--surface) !important; }
|
| 109 |
+
.bg-ash { background: var(--mist) !important; }
|
| 110 |
+
.bg-mist { background: var(--mist) !important; }
|
| 111 |
+
.hover\:bg-ash:hover { background: var(--border) !important; }
|
| 112 |
+
.hover\:bg-mist:hover { background: var(--mist) !important; }
|
| 113 |
+
.border-ash { border-color: var(--border) !important; }
|
| 114 |
+
.border-mist { border-color: var(--mist) !important; }
|
| 115 |
+
.text-fog { color: var(--fog) !important; }
|
| 116 |
+
.text-ghost { color: var(--ghost) !important; }
|
| 117 |
+
.text-pearl { color: var(--pearl) !important; }
|
| 118 |
+
.text-cream { color: var(--cream) !important; }
|
| 119 |
+
.text-amber { color: var(--accent) !important; }
|
| 120 |
+
.text-ink { color: var(--user-text) !important; }
|
| 121 |
+
.text-rose { color: var(--danger) !important; }
|
| 122 |
+
.text-sage { color: var(--safe) !important; }
|
| 123 |
+
.bg-amber { background: var(--user-bg) !important; }
|
| 124 |
+
.hover\:bg-ember:hover { background: var(--accent2) !important; }
|
| 125 |
+
.bg-amber\/10 { background: color-mix(in srgb, var(--accent) 10%, transparent) !important; }
|
| 126 |
+
.bg-amber\/20 { background: color-mix(in srgb, var(--accent) 20%, transparent) !important; }
|
| 127 |
+
.border-amber\/25 { border-color: color-mix(in srgb, var(--accent) 25%, transparent) !important; }
|
| 128 |
+
.from-amber { --tw-gradient-from: var(--accent) !important; }
|
| 129 |
+
.to-ember { --tw-gradient-to: var(--accent2) !important; }
|
| 130 |
+
.bg-rose { background: var(--danger) !important; }
|
| 131 |
+
.hover\:text-rose:hover { color: var(--danger) !important; }
|
| 132 |
+
.hover\:text-sage:hover { color: var(--safe) !important; }
|
| 133 |
+
.hover\:text-pearl:hover { color: var(--pearl) !important; }
|
| 134 |
+
textarea, input, select { background: var(--mist); color: var(--cream); }
|
| 135 |
+
|
| 136 |
+
.prose-msg { line-height: 1.65; color: var(--prose); }
|
| 137 |
+
.prose-msg p { margin: 0 0 0.6em; } .prose-msg p:last-child { margin-bottom: 0; }
|
| 138 |
+
.prose-msg code { font-family: 'DM Mono', monospace; background: var(--code-bg); padding: 0.1em 0.35em; border-radius: 3px; font-size: 0.875em; color: var(--code-col); }
|
| 139 |
+
.prose-msg pre { background: var(--pre-bg); border: 1px solid var(--border); border-radius: 6px; padding: 12px 14px; overflow-x: auto; margin: 0.6em 0; }
|
| 140 |
+
.prose-msg pre code { background: transparent; padding: 0; color: var(--prose); font-size: 0.82em; }
|
| 141 |
+
.prose-msg h1,.prose-msg h2,.prose-msg h3 { font-family: 'Fraunces', serif; color: var(--cream); margin: 0.8em 0 0.3em; font-weight: 700; }
|
| 142 |
+
.prose-msg h1 { font-size: 1.25em; } .prose-msg h2 { font-size: 1.1em; } .prose-msg h3 { font-size: 1em; }
|
|
|
|
|
|
|
|
|
|
|
|
|
| 143 |
.prose-msg ul, .prose-msg ol { padding-left: 1.25em; margin: 0.4em 0 0.6em; }
|
| 144 |
.prose-msg li { margin: 0.2em 0; }
|
| 145 |
+
.prose-msg blockquote { border-left: 2px solid var(--accent); padding-left: 0.75em; color: var(--ghost); margin: 0.5em 0; font-style: italic; }
|
| 146 |
+
.prose-msg a { color: var(--accent); text-decoration: underline; }
|
| 147 |
+
.prose-msg strong { color: var(--cream); font-weight: 500; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 148 |
.prose-msg table { border-collapse: collapse; width: 100%; margin: 0.5em 0; font-size: 0.85em; }
|
| 149 |
+
.prose-msg th { background: var(--mist); color: var(--cream); padding: 5px 8px; text-align: left; }
|
| 150 |
+
.prose-msg td { border-top: 1px solid var(--border); padding: 5px 8px; }
|
| 151 |
|
| 152 |
+
.prose-user { line-height: 1.65; color: var(--user-text); }
|
| 153 |
+
.prose-user p { margin: 0 0 0.5em; } .prose-user p:last-child { margin-bottom: 0; }
|
|
|
|
|
|
|
| 154 |
.prose-user code { background: rgba(0,0,0,0.12); padding: 0.1em 0.3em; border-radius: 3px; font-size: 0.875em; }
|
| 155 |
.prose-user pre { background: rgba(0,0,0,0.15); border-radius: 5px; padding: 10px 12px; overflow-x: auto; margin: 0.5em 0; }
|
| 156 |
.prose-user strong { font-weight: 500; }
|
| 157 |
|
|
|
|
| 158 |
textarea { resize: none; overflow: hidden; }
|
|
|
|
|
|
|
| 159 |
#sidebar { transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1); }
|
| 160 |
#overlay { transition: opacity 0.3s ease; }
|
|
|
|
|
|
|
| 161 |
.dot-1 { animation: blink 1.2s 0s infinite; }
|
| 162 |
.dot-2 { animation: blink 1.2s 0.2s infinite; }
|
| 163 |
.dot-3 { animation: blink 1.2s 0.4s infinite; }
|
|
|
|
|
|
|
|
|
|
|
|
|
| 164 |
select { -webkit-appearance: none; appearance: none; }
|
| 165 |
+
textarea:focus, input:focus, select:focus { outline: none; box-shadow: 0 0 0 1.5px var(--accent); }
|
| 166 |
+
#input-footer { padding-bottom: max(12px, env(safe-area-inset-bottom)); }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 167 |
</style>
|
| 168 |
</head>
|
| 169 |
+
<body class="h-screen flex overflow-hidden">
|
| 170 |
|
| 171 |
<!-- Privacy notice -->
|
| 172 |
<div id="privacy-modal" class="fixed inset-0 z-50 flex items-center justify-center bg-black/70 backdrop-blur-sm">
|
|
|
|
| 535 |
</div>
|
| 536 |
|
| 537 |
<!-- Input -->
|
| 538 |
+
<div id="input-footer" class="border-t border-ash bg-smoke px-4 py-3 flex-shrink-0">
|
| 539 |
<div class="flex items-end gap-2 bg-ash rounded-lg border border-mist focus-within:border-amber transition-colors px-3 py-2">
|
| 540 |
<textarea id="user-input"
|
| 541 |
placeholder="Send a message..."
|