lucyknada commited on
Commit
e62d29b
1 Parent(s): eb6e6e6

Upload ./README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +525 -0
README.md ADDED
@@ -0,0 +1,525 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: transformers
3
+ license: apache-2.0
4
+ language:
5
+ - en
6
+ base_model:
7
+ - mistralai/Mistral-Nemo-Base-2407
8
+ tags:
9
+ - general-purpose
10
+ - roleplay
11
+ - storywriting
12
+ - chemistry
13
+ - biology
14
+ - code
15
+ - climate
16
+ - axolotl
17
+ - text-generation-inference
18
+ - finetune
19
+ datasets:
20
+ - PocketDoc/Dans-MemoryCore-CoreCurriculum-Small
21
+ - AquaV/Energetic-Materials-Sharegpt
22
+ - AquaV/Chemical-Biological-Safety-Applications-Sharegpt
23
+ - AquaV/US-Army-Survival-Sharegpt
24
+ - AquaV/Resistance-Sharegpt
25
+ - AquaV/Interrogation-Sharegpt
26
+ - AquaV/Multi-Environment-Operations-Sharegpt
27
+ - PocketDoc/Dans-Mathmaxx
28
+ - PocketDoc/Dans-Mathmaxx-Numina-CoT
29
+ - PJMixers/Math-Multiturn-1K-ShareGPT
30
+ - PocketDoc/Dans-Benchmaxx
31
+ - PocketDoc/Dans-Benchmaxx-COT
32
+ - PocketDoc/Dans-Codemaxx-LeetCode
33
+ - PocketDoc/Dans-Codemaxx-CodeFeedback-Conversations
34
+ - PocketDoc/Dans-Codemaxx-CodeFeedback-SingleTurn
35
+ - PocketDoc/Dans-Codemaxx-Bigcode-SelfInstruct
36
+ - PocketDoc/Dans-Taskmaxx
37
+ - PocketDoc/Dans-Taskmaxx-DataPrepper
38
+ - PocketDoc/Dans-Taskmaxx-ConcurrentQA-Reworked
39
+ - PocketDoc/Dans-Taskmaxx-TableGPT
40
+ - PocketDoc/Dans-Taskmaxx-SciRIFF
41
+ - PocketDoc/Dans-Taskmaxx-Edit
42
+ - PocketDoc/Dans-Systemmaxx
43
+ - PocketDoc/Dans-Toolmaxx-Agent
44
+ - PocketDoc/Dans-Toolmaxx-ShellCommands
45
+ - PocketDoc/Dans-Toolmaxx-Functions-Toolbench
46
+ - PocketDoc/Dans-Toolmaxx-Functions-ToolACE
47
+ - PocketDoc/Dans-Toolmaxx-Functions-apigen
48
+ - PocketDoc/Dans-ASCIIMaxx-Wordart
49
+ - PocketDoc/Dans-Prosemaxx-Gutenberg
50
+ - PocketDoc/Dans-Prosemaxx-Cowriter-M
51
+ - PocketDoc/Dans-Prosemaxx-Adventure
52
+ - PocketDoc/Dans-Prosemaxx-Gryphe-GPT4o-WritingPrompts
53
+ - PocketDoc/Dans-Assistantmaxx-Sharegpt
54
+ - PocketDoc/Dans-Assistantmaxx-OpenAssistant2
55
+ - PocketDoc/Dans-Assistantmaxx-Opus-Merge
56
+ - PocketDoc/Dans-Assistantmaxx-sonnetorca-subset
57
+ - PocketDoc/Dans-Assistantmaxx-sonnetorca-subset-2
58
+ - PocketDoc/Dans-Assistantmaxx-NoRobots
59
+ - PocketDoc/Dans-Assistantmaxx-Synthia
60
+ - PocketDoc/Dans-Assistantmaxx-ASL
61
+ - PocketDoc/Dans-Assistantmaxx-PersonaLLM-Opus
62
+ - PocketDoc/Dans-Assistantmaxx-UnnaturalInstructions-GPT4
63
+ - PocketDoc/Dans-Assistantmaxx-LongAlign
64
+ - PocketDoc/Dans-Assistantmaxx-EvolKit
65
+ - PocketDoc/Dans-Assistantmaxx-Camel-GPT4
66
+ - PocketDoc/Dans-Assistantmaxx-Tulu3-IF
67
+ - PocketDoc/Dans-Logicmaxx-Skunkworks
68
+ - PocketDoc/Dans-Logicmaxx-SAT-AP
69
+ - PocketDoc/Dans-Logicmaxx-Magpie-Ultra
70
+ - PJMixers/grimulkan_theory-of-mind-ShareGPT
71
+ - PJMixers/grimulkan_physical-reasoning-ShareGPT
72
+ - PocketDoc/Dans-Personamaxx
73
+ - PocketDoc/Dans-Personamaxx-Rainy
74
+ - PocketDoc/Dans-Personamaxx-Aesir
75
+ - PocketDoc/Dans-Kinomaxx-VanillaBackrooms
76
+ model-index:
77
+ - name: Dans-PersonalityEngine-V1.1.0-12b
78
+ results: []
79
+ pipeline_tag: text-generation
80
+ ---
81
+ ### exl2 quant (measurement.json in main branch)
82
+ ---
83
+ ### check revisions for quants
84
+ ---
85
+
86
+ <html lang="en">
87
+ <head>
88
+ <meta charset="UTF-8">
89
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
90
+ </head>
91
+ <div class="crt-container">
92
+ <div class="crt-case">
93
+ <div class="crt-inner-case">
94
+ <div class="crt-bezel">
95
+ <div class="terminal-screen">
96
+ <h2>Dans-PersonalityEngine-V1.1.0-12b</h2>
97
+ <p>This model series is intended to be multifarious in its capabilities and should be quite capable at both co-writing and roleplay as well as find itself quite at home performing sentiment analysis or summarization as part of a pipeline. It has been trained on a wide array of one shot instructions, multi turn instructions, tool use, role playing scenarios, text adventure games, co-writing, and much more.</p>
98
+ <h3>Key Details</h3>
99
+ <pre class="code-block">
100
+ BASE MODEL: mistralai/Mistral-Nemo-Base-2407
101
+ LICENSE: apache-2.0
102
+ LANGUAGE: English
103
+ CONTEXT LENGTH: 32768 tokens</pre>
104
+ <h3>Recommended Settings</h3>
105
+ <pre class="code-block">
106
+ TEMPERATURE: 1.0
107
+ TOP_P: 0.95
108
+ MIN_P: 0.05</pre>
109
+ <h3>Prompting Format</h3>
110
+ <p>The model uses standard "ChatML" format:</p>
111
+ <pre class="code-block">
112
+ <|im_start|>system
113
+ system prompt<|im_end|>
114
+ <|im_start|>user
115
+ Hi there!<|im_end|>
116
+ <|im_start|>assistant
117
+ Nice to meet you!<|im_end|></pre>
118
+ <h3>SillyTavern Templates</h3>
119
+ <details>
120
+ <summary>Context Template</summary>
121
+ <pre class="code-block">
122
+ {
123
+ "story_string": "<|im_start|>system\n{{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{char}}'s personality: {{personality}}\n{{/if}}{{#if scenario}}Scenario: {{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}{{trim}}<|im_end|>\n",
124
+ "example_separator": "",
125
+ "chat_start": "",
126
+ "use_stop_strings": false,
127
+ "allow_jailbreak": false,
128
+ "always_force_name2": false,
129
+ "trim_sentences": false,
130
+ "include_newline": false,
131
+ "single_line": false,
132
+ "name": "Dan-ChatML"
133
+ }</pre>
134
+ </details>
135
+ <details>
136
+ <summary>Instruct Template</summary>
137
+ <pre class="code-block">
138
+ {
139
+ "system_prompt": "Write {{char}}'s actions and dialogue, user will write {{user}}'s.",
140
+ "input_sequence": "<|im_start|>user\n",
141
+ "output_sequence": "<|im_start|>assistant\n",
142
+ "first_output_sequence": "",
143
+ "last_output_sequence": "",
144
+ "system_sequence_prefix": "",
145
+ "system_sequence_suffix": "",
146
+ "stop_sequence": "<|im_end|>",
147
+ "wrap": false,
148
+ "macro": true,
149
+ "names": false,
150
+ "names_force_groups": false,
151
+ "activation_regex": "",
152
+ "skip_examples": false,
153
+ "output_suffix": "<|im_end|>\n",
154
+ "input_suffix": "<|im_end|>\n",
155
+ "system_sequence": "<|im_start|>system\n",
156
+ "system_suffix": "<|im_end|>\n",
157
+ "user_alignment_message": "",
158
+ "last_system_sequence": "",
159
+ "system_same_as_user": false,
160
+ "first_input_sequence": "",
161
+ "last_input_sequence": "",
162
+ "name": "Dan-ChatML"
163
+ }</pre>
164
+ </details>
165
+ <h3>Example Outputs</h3>
166
+ <details>
167
+ <summary>General Assistance Example</summary>
168
+ <p><em>System: Act as a personable virtual assistant.</em></p>
169
+ <p><strong>User:</strong> I'm going to be in Chicago soon can you help me work up some restaurant ideas?</p>
170
+ <p><strong>Assistant:</strong> I'd love to! Here are a few suggestions for restaurants in Chicago:</p>
171
+ <ul>
172
+ <li>For deep dish pizza, I highly recommend Lou Malnati's Pizzeria or Giordano's. Both are iconic Chicago institutions and serve some of the best deep dish pizza in the city.</li>
173
+ <li>If you're looking for a classic steakhouse experience, Gibson's Bar & Steakhouse is a great choice. They offer high-quality steaks, seafood, and an extensive wine list in a sophisticated atmosphere.</li>
174
+ <li>For a more casual dining experience, check out Portillo's Hot Dogs. They're known for their Chicago-style hot dogs, Italian beef sandwiches, and other classic American fare.</li>
175
+ <li>For something a bit more unique, try Alinea. It's a high-end, avant-garde restaurant that offers a truly one-of-a-kind dining experience with innovative cuisine and cutting-edge presentation techniques.</li>
176
+ </ul>
177
+ <p>Let me know if you need any other recommendations or have specific dietary restrictions or preferences!</p>
178
+ </details>
179
+ <details>
180
+ <summary>Basic Programming Example</summary>
181
+ <p><em>System: Answer the question or perform the task.</em></p>
182
+ <p><strong>User:</strong> Explain the bug in the following code:</p>
183
+ <pre class="code-block">
184
+ from time import sleep
185
+ from multiprocessing.pool import ThreadPool
186
+
187
+ def task():
188
+ sleep(1)
189
+ return 'all done'
190
+
191
+ if __name__ == '__main__':
192
+ with ThreadPool() as pool:
193
+ result = pool.apply_async(task())</pre>
194
+ <p><strong>Assistant:</strong> The bug in this code is that the `task()` function is called immediately when the `apply_async()` method is invoked, not when the worker process is ready to execute it.</p>
195
+ <p>Specifically, the line `result = pool.apply_async(task())` calls `task()` right away and passes its return value to `apply_async()`. The worker process will execute whatever `task()` returns at that moment, which is `'all done'` since `task()` completes execution almost immediately.</p>
196
+ <p>To fix this bug, you need to pass the `task` function itself to `apply_async()`, rather than calling `task()` beforehand. Here's the corrected code:</p>
197
+ <pre class="code-block">
198
+ from time import sleep
199
+ from multiprocessing.pool import ThreadPool
200
+
201
+ def task():
202
+ sleep(1)
203
+ return 'all done'
204
+
205
+ if __name__ == '__main__':
206
+ with ThreadPool() as pool:
207
+ result = pool.apply_async(task) # Pass the function, not the result
208
+ value = result.get() # Wait for the result
209
+ print(value)</pre>
210
+ </details>
211
+ <details>
212
+ <summary>Writing Example</summary>
213
+ <p><em>System: Take the users messages and use them as a writing prompt. Write 5 sentences.</em></p>
214
+ <p><strong>User:</strong> Alpha Centauri has fallen, to the bears. This is a point of view tale about a soldier on the ground.</p>
215
+ <p><strong>Assistant:</strong> "Sir, they are gone sir." The young corporal was out of breath.</p>
216
+ <p>The soldier looked up. His grey eyes had been locked on his holofac display for hours now. He was in his late thirties and wore the rank of colonel. He was tall, with a well-muscled but slightly over weight body.</p>
217
+ <p><strong>User:</strong> "Who?"</p>
218
+ <p><strong>Assistant:</strong> He turned and looked at the corporal.</p>
219
+ <p>"The bears. They left. We checked the entire perimeter. No bears to be found sir."</p>
220
+ <p>"Did you check the air?"</p>
221
+ <p>"Not the air, sir. We didn't see any shuttles. But we have drones out now."</p>
222
+ <p><strong>User:</strong> "*Sigh*"</p>
223
+ <p><strong>Assistant:</strong> "Ok, get me the status report. I need to know how many dead we have."</p>
224
+ <p>"Yes sir." The corporal turned to leave.</p>
225
+ <p>"Corporal…"</p>
226
+ <p>"Sir?"</p>
227
+ <p>"Get me a fresh cup of coffee. Black. I need the caffeine."</p>
228
+ </details>
229
+ <details>
230
+ <summary>Text Editing Example</summary>
231
+ <p><em>System: You are a professional editor with decades of experience, help the user with any task they have for you.</em></p>
232
+ <p><strong>User:</strong> Can you rewrite this to flow better? "I knew I probably shouldnt have done that but ohhh well i guess i just going to live with it since whats done is done"</p>
233
+ <p><strong>Assistant:</strong> I knew I probably shouldn't have done that, but oh well. I guess I just going to live with it since what's done is done.</p>
234
+ </details>
235
+ <h3>Datasets</h3>
236
+ <details>
237
+ <summary>Breakdown</summary>
238
+ <ul>
239
+ <li>Memory & Core Curriculum
240
+ <ul>
241
+ <li>Dans-MemoryCore-CoreCurriculum-Small - Base knowledge</li>
242
+ </ul>
243
+ </li>
244
+ <li>Military & Survival Knowledge
245
+ <ul>
246
+ <li>Energetic-Materials - Understanding of explosives and related chemistry</li>
247
+ <li>Chemical-Biological-Safety-Applications - Safety protocols, handling procedures, etc.</li>
248
+ <li>US-Army-Survival - Survival techniques and field craft</li>
249
+ <li>Resistance - Resistance operations and tactics</li>
250
+ <li>Interrogation - Interview and interrogation techniques</li>
251
+ <li>Multi-Environment-Operations - Operations across different environments</li>
252
+ </ul>
253
+ </li>
254
+ <li>Mathematics & Problem Solving
255
+ <ul>
256
+ <li>Dans-Mathmaxx - Core mathematics capabilities</li>
257
+ <li>Dans-Mathmaxx-Numina-CoT - Chain of thought mathematical reasoning</li>
258
+ <li>Math-Multiturn-1K-ShareGPT - Multi-turn math problem solving</li>
259
+ </ul>
260
+ </li>
261
+ <li>Benchmarking & Testing
262
+ <ul>
263
+ <li>Dans-Benchmaxx - Prepares model for "answer only" style benchmarks. Helps prevent the model from talking too much when the situation calls for it.</li>
264
+ <li>Dans-Benchmaxx-COT - The same but for COT then answer based testing.</li>
265
+ </ul>
266
+ </li>
267
+ <li>Programming & Code
268
+ <ul>
269
+ <li>Dans-Codemaxx-LeetCode - Programmatically produced from rosettacode</li>
270
+ <li>Dans-Codemaxx-CodeFeedback - Dataset focused on correction after producing incorrect code.</li>
271
+ <li>Dans-Codemaxx-Bigcode-SelfInstruct - Subset from the Bigcode SelfInstruct dataset</li>
272
+ </ul>
273
+ </li>
274
+ <li>Task Specific Training
275
+ <ul>
276
+ <li>Dans-Taskmaxx - General task handling</li>
277
+ <li>Dans-Taskmaxx-DataPrepper - Data preparation and cleaning</li>
278
+ <li>Dans-Taskmaxx-ConcurrentQA - Multi hop retrieval based tasks</li>
279
+ <li>Dans-Taskmaxx-TableGPT - Table data processing</li>
280
+ <li>Dans-Taskmaxx-SciRIFF - Scientific paper analysis</li>
281
+ <li>Dans-Taskmaxx-Edit - Text editing and revision</li>
282
+ </ul>
283
+ </li>
284
+ <li>System & Tool Usage
285
+ <ul>
286
+ <li>Dans-Toolmaxx-Agent - Tool usage and agent behavior</li>
287
+ <li>Dans-Toolmaxx-ShellCommands - Command line operations</li>
288
+ <li>Dans-Toolmaxx-Functions - API and function calling</li>
289
+ </ul>
290
+ </li>
291
+ <li>Creative & Writing
292
+ <ul>
293
+ <li>Dans-ASCIIMaxx-Wordart - ASCII word art creation</li>
294
+ <li>Dans-Prosemaxx-Gutenberg - Summary style prompt writing instructions sourced from the Gutenberg project.</li>
295
+ <li>Dans-Prosemaxx-Cowriter - Back and forth co-writing dataset sourced from human written literature</li>
296
+ <li>Dans-Prosemaxx-Adventure - Interactive fiction throwbacks such as Zork, Anchorhead, and Hunting the Ripper</li>
297
+ <li>Dans-Prosemaxx-WritingPrompts - Prompt based writing instructions</li>
298
+ </ul>
299
+ </li>
300
+ <li>Assistant & Personality
301
+ <ul>
302
+ <li>Dans-Assistantmaxx series - Various assistant behaviors and capabilities</li>
303
+ <li>Dans-Personamaxx series - Personality and character development</li>
304
+ <li>Dans-Logicmaxx series - Logical reasoning and problem solving</li>
305
+ </ul>
306
+ </li>
307
+ <li>Instruction Following
308
+ <ul>
309
+ <li>Dans-Systemmaxx - System message training data optimized to help the model reject bad patterns</li>
310
+ </ul>
311
+ </li>
312
+ </ul>
313
+ </details>
314
+ <h3>Training</h3>
315
+ <p>Full finetuned for 2 epochs on 1x H200 SXM (88 hours of training)</p>
316
+ <p class="badge-container">
317
+ <a href="https://github.com/OpenAccess-AI-Collective/axolotl" target="_blank" rel="noopener noreferrer">
318
+ <img src="https://raw.githubusercontent.com/OpenAccess-AI-Collective/axolotl/main/image/axolotl-badge-web.png" alt="Built with Axolotl" width="200" height="32"/>
319
+ </a>
320
+ </p>
321
+ <h3>Support Development</h3>
322
+ <p>Development is limited by funding and resources. To help support:</p>
323
+ <p>- Contact on HF</p>
324
+ <p>- Email: visuallyadequate@gmail.com</p>
325
+ <p class="coffee-container">
326
+ <a href="https://www.buymeacoffee.com/visually" target="_blank" rel="noopener noreferrer">
327
+ <img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" height="45" width="162">
328
+ </a>
329
+ </p>
330
+ </div>
331
+ </div>
332
+ </div>
333
+ </div>
334
+ </div>
335
+ <style>
336
+ @import url('https://fonts.googleapis.com/css2?family=VT323&display=swap');
337
+ .crt-container {
338
+ padding: 10px;
339
+ max-width: 1000px;
340
+ margin: 0 auto;
341
+ width: 95%;
342
+ }
343
+ .crt-case {
344
+ background: #e8d7c3;
345
+ border-radius: 10px;
346
+ padding: 15px;
347
+ box-shadow: inset -2px -2px 5px rgba(0,0,0,0.3), 2px 2px 5px rgba(0,0,0,0.2);
348
+ }
349
+ .crt-inner-case {
350
+ background: #e8d7c3;
351
+ border-radius: 8px;
352
+ padding: 3px;
353
+ box-shadow: inset -1px -1px 4px rgba(0,0,0,0.3), 1px 1px 4px rgba(0,0,0,0.2);
354
+ }
355
+ .crt-bezel {
356
+ background: linear-gradient(145deg, #1a1a1a, #2a2a2a);
357
+ padding: 15px;
358
+ border-radius: 5px;
359
+ border: 3px solid #0a0a0a;
360
+ position: relative;
361
+ box-shadow:
362
+ inset 0 0 20px rgba(0,0,0,0.5),
363
+ inset 0 0 4px rgba(0,0,0,0.4),
364
+ inset 2px 2px 4px rgba(255,255,255,0.05),
365
+ inset -2px -2px 4px rgba(0,0,0,0.8),
366
+ 0 0 2px rgba(0,0,0,0.6),
367
+ -1px -1px 4px rgba(255,255,255,0.1),
368
+ 1px 1px 4px rgba(0,0,0,0.3);
369
+ }
370
+ .crt-bezel::before {
371
+ content: '';
372
+ position: absolute;
373
+ top: 0;
374
+ left: 0;
375
+ right: 0;
376
+ bottom: 0;
377
+ background: linear-gradient(45deg,
378
+ rgba(255,255,255,0.03) 0%,
379
+ rgba(255,255,255,0) 40%,
380
+ rgba(0,0,0,0.1) 60%,
381
+ rgba(0,0,0,0.2) 100%);
382
+ border-radius: 3px;
383
+ pointer-events: none;
384
+ }
385
+ .terminal-screen {
386
+ background: #111112;
387
+ padding: 20px;
388
+ border-radius: 15px;
389
+ position: relative;
390
+ overflow: hidden;
391
+ font-family: 'VT323', monospace;
392
+ font-size: clamp(12px, 1.5vw, 16px);
393
+ color: #e49b3e;
394
+ line-height: 1.4;
395
+ text-shadow: 0 0 2px #e49b3e;
396
+ animation: flicker 0.15s infinite;
397
+ filter: brightness(1.1) contrast(1.1);
398
+ box-shadow:
399
+ inset 0 0 30px rgba(0,0,0,0.9),
400
+ inset 0 0 8px rgba(0,0,0,0.8),
401
+ 0 0 5px rgba(0,0,0,0.6);
402
+ max-width: 80ch;
403
+ margin: 0 auto;
404
+ }
405
+ .terminal-screen h2, .terminal-screen h3 {
406
+ font-size: clamp(16px, 2vw, 20px);
407
+ margin-bottom: 1em;
408
+ color: #e49b3e;
409
+ }
410
+ .terminal-screen pre.code-block {
411
+ font-size: clamp(11px, 1.3vw, 14px);
412
+ white-space: pre-wrap;
413
+ margin: 1em 0;
414
+ background-color: #1a1a1a;
415
+ padding: 1em;
416
+ border-radius: 4px;
417
+ color: #e49b3e;
418
+ }
419
+ .terminal-screen::before {
420
+ content: "";
421
+ position: absolute;
422
+ top: 0;
423
+ left: 0;
424
+ right: 0;
425
+ bottom: 0;
426
+ background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.25) 50%), url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyBAMAAADsEZWCAAAAGFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4o8JoAAAAB3RSTlMAGwQIEQMYADcPzwAAACJJREFUKM9jYBgFo2AU0Beg+A8YMCLxGYZCbNQEo4BaAAD5TQiR5wU9vAAAAABJRU5ErkJggg==');
427
+ background-size: 100% 2.5px;
428
+ animation: scan 1s linear infinite;
429
+ pointer-events: none;
430
+ z-index: 2;
431
+ }
432
+ .terminal-screen::after {
433
+ content: "";
434
+ position: absolute;
435
+ top: 0;
436
+ left: 0;
437
+ right: 0;
438
+ bottom: 0;
439
+ background: radial-gradient(circle at center,
440
+ rgba(17, 17, 18, 0) 0%,
441
+ rgba(17, 17, 18, 0.2) 50%,
442
+ rgba(17, 17, 18, 0.15) 100%
443
+ );
444
+ border-radius: 20px;
445
+ animation: vignette-pulse 3s infinite;
446
+ pointer-events: none;
447
+ z-index: 1;
448
+ }
449
+ .terminal-screen details {
450
+ margin: 1em 0;
451
+ padding: 0.5em;
452
+ border: 1px solid #e49b3e;
453
+ border-radius: 4px;
454
+ }
455
+ .terminal-screen summary {
456
+ cursor: pointer;
457
+ font-weight: bold;
458
+ margin: -0.5em;
459
+ padding: 0.5em;
460
+ border-bottom: 1px solid #e49b3e;
461
+ color: #e49b3e;
462
+ }
463
+ .terminal-screen details[open] summary {
464
+ margin-bottom: 0.5em;
465
+ }
466
+ .badge-container, .coffee-container {
467
+ text-align: center;
468
+ margin: 1em 0;
469
+ }
470
+ .badge-container img, .coffee-container img {
471
+ max-width: 100%;
472
+ height: auto;
473
+ }
474
+ .terminal-screen a {
475
+ color: #e49b3e;
476
+ text-decoration: underline;
477
+ transition: opacity 0.2s;
478
+ }
479
+ .terminal-screen a:hover {
480
+ opacity: 0.8;
481
+ }
482
+ .terminal-screen strong, .terminal-screen em {
483
+ color: #f0f0f0; /* off-white color for user/system messages */
484
+ }
485
+ .terminal-screen p {
486
+ color: #f0f0f0; /* off-white color for assistant responses */
487
+ }
488
+ .terminal-screen p, .terminal-screen li {
489
+ color: #e49b3e;
490
+ }
491
+ .terminal-screen code,
492
+ .terminal-screen kbd,
493
+ .terminal-screen samp {
494
+ color: #e49b3e;
495
+ font-family: 'VT323', monospace;
496
+ text-shadow: 0 0 2px #e49b3e;
497
+ background-color: #1a1a1a;
498
+ padding: 0.2em 0.4em;
499
+ border-radius: 4px;
500
+ }
501
+ .terminal-screen pre.code-block,
502
+ .terminal-screen pre {
503
+ font-size: clamp(11px, 1.3vw, 14px);
504
+ white-space: pre-wrap;
505
+ margin: 1em 0;
506
+ background-color: #1a1a1a;
507
+ padding: 1em;
508
+ border-radius: 4px;
509
+ color: #e49b3e;
510
+ }
511
+ @keyframes flicker {
512
+ 0% { opacity: 0.98; }
513
+ 50% { opacity: 1; }
514
+ 100% { opacity: 0.99; }
515
+ }
516
+ @keyframes scan {
517
+ 0% { transform: translateY(0); }
518
+ 100% { transform: translateY(4px); }
519
+ }
520
+ @keyframes vignette-pulse {
521
+ 0% { opacity: 0.8; }
522
+ 50% { opacity: 1; }
523
+ 100% { opacity: 0.8; }
524
+ }
525
+ </style>