File size: 19,812 Bytes
e62d29b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
---
library_name: transformers
license: apache-2.0
language:
- en
base_model:
- mistralai/Mistral-Nemo-Base-2407
tags:
- general-purpose
- roleplay
- storywriting
- chemistry
- biology
- code
- climate
- axolotl
- text-generation-inference
- finetune
datasets:
- PocketDoc/Dans-MemoryCore-CoreCurriculum-Small
- AquaV/Energetic-Materials-Sharegpt
- AquaV/Chemical-Biological-Safety-Applications-Sharegpt
- AquaV/US-Army-Survival-Sharegpt
- AquaV/Resistance-Sharegpt
- AquaV/Interrogation-Sharegpt
- AquaV/Multi-Environment-Operations-Sharegpt
- PocketDoc/Dans-Mathmaxx
- PocketDoc/Dans-Mathmaxx-Numina-CoT
- PJMixers/Math-Multiturn-1K-ShareGPT
- PocketDoc/Dans-Benchmaxx
- PocketDoc/Dans-Benchmaxx-COT
- PocketDoc/Dans-Codemaxx-LeetCode
- PocketDoc/Dans-Codemaxx-CodeFeedback-Conversations
- PocketDoc/Dans-Codemaxx-CodeFeedback-SingleTurn
- PocketDoc/Dans-Codemaxx-Bigcode-SelfInstruct
- PocketDoc/Dans-Taskmaxx
- PocketDoc/Dans-Taskmaxx-DataPrepper
- PocketDoc/Dans-Taskmaxx-ConcurrentQA-Reworked
- PocketDoc/Dans-Taskmaxx-TableGPT
- PocketDoc/Dans-Taskmaxx-SciRIFF
- PocketDoc/Dans-Taskmaxx-Edit
- PocketDoc/Dans-Systemmaxx
- PocketDoc/Dans-Toolmaxx-Agent
- PocketDoc/Dans-Toolmaxx-ShellCommands
- PocketDoc/Dans-Toolmaxx-Functions-Toolbench
- PocketDoc/Dans-Toolmaxx-Functions-ToolACE
- PocketDoc/Dans-Toolmaxx-Functions-apigen
- PocketDoc/Dans-ASCIIMaxx-Wordart
- PocketDoc/Dans-Prosemaxx-Gutenberg
- PocketDoc/Dans-Prosemaxx-Cowriter-M
- PocketDoc/Dans-Prosemaxx-Adventure
- PocketDoc/Dans-Prosemaxx-Gryphe-GPT4o-WritingPrompts
- PocketDoc/Dans-Assistantmaxx-Sharegpt
- PocketDoc/Dans-Assistantmaxx-OpenAssistant2
- PocketDoc/Dans-Assistantmaxx-Opus-Merge
- PocketDoc/Dans-Assistantmaxx-sonnetorca-subset
- PocketDoc/Dans-Assistantmaxx-sonnetorca-subset-2
- PocketDoc/Dans-Assistantmaxx-NoRobots
- PocketDoc/Dans-Assistantmaxx-Synthia
- PocketDoc/Dans-Assistantmaxx-ASL
- PocketDoc/Dans-Assistantmaxx-PersonaLLM-Opus
- PocketDoc/Dans-Assistantmaxx-UnnaturalInstructions-GPT4
- PocketDoc/Dans-Assistantmaxx-LongAlign
- PocketDoc/Dans-Assistantmaxx-EvolKit
- PocketDoc/Dans-Assistantmaxx-Camel-GPT4
- PocketDoc/Dans-Assistantmaxx-Tulu3-IF
- PocketDoc/Dans-Logicmaxx-Skunkworks
- PocketDoc/Dans-Logicmaxx-SAT-AP
- PocketDoc/Dans-Logicmaxx-Magpie-Ultra
- PJMixers/grimulkan_theory-of-mind-ShareGPT
- PJMixers/grimulkan_physical-reasoning-ShareGPT
- PocketDoc/Dans-Personamaxx
- PocketDoc/Dans-Personamaxx-Rainy
- PocketDoc/Dans-Personamaxx-Aesir
- PocketDoc/Dans-Kinomaxx-VanillaBackrooms
model-index:
- name: Dans-PersonalityEngine-V1.1.0-12b
  results: []
pipeline_tag: text-generation
---
### exl2 quant (measurement.json in main branch)
---
### check revisions for quants
---

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<div class="crt-container">
  <div class="crt-case">
    <div class="crt-inner-case">
      <div class="crt-bezel">
<div class="terminal-screen">
  <h2>Dans-PersonalityEngine-V1.1.0-12b</h2>
  <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>
  <h3>Key Details</h3>
  <pre class="code-block">
BASE MODEL: mistralai/Mistral-Nemo-Base-2407
LICENSE: apache-2.0
LANGUAGE: English
CONTEXT LENGTH: 32768 tokens</pre>
  <h3>Recommended Settings</h3>
  <pre class="code-block">
TEMPERATURE: 1.0
TOP_P: 0.95
MIN_P: 0.05</pre>
  <h3>Prompting Format</h3>
  <p>The model uses standard "ChatML" format:</p>
  <pre class="code-block">
<|im_start|>system
system prompt<|im_end|>
<|im_start|>user
Hi there!<|im_end|>
<|im_start|>assistant
Nice to meet you!<|im_end|></pre>
  <h3>SillyTavern Templates</h3>
  <details>
    <summary>Context Template</summary>
    <pre class="code-block">
{
    "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",
    "example_separator": "",
    "chat_start": "",
    "use_stop_strings": false,
    "allow_jailbreak": false,
    "always_force_name2": false,
    "trim_sentences": false,
    "include_newline": false,
    "single_line": false,
    "name": "Dan-ChatML"
}</pre>
  </details>
  <details>
    <summary>Instruct Template</summary>
    <pre class="code-block">
{
    "system_prompt": "Write {{char}}'s actions and dialogue, user will write {{user}}'s.",
    "input_sequence": "<|im_start|>user\n",
    "output_sequence": "<|im_start|>assistant\n",
    "first_output_sequence": "",
    "last_output_sequence": "",
    "system_sequence_prefix": "",
    "system_sequence_suffix": "",
    "stop_sequence": "<|im_end|>",
    "wrap": false,
    "macro": true,
    "names": false,
    "names_force_groups": false,
    "activation_regex": "",
    "skip_examples": false,
    "output_suffix": "<|im_end|>\n",
    "input_suffix": "<|im_end|>\n",
    "system_sequence": "<|im_start|>system\n",
    "system_suffix": "<|im_end|>\n",
    "user_alignment_message": "",
    "last_system_sequence": "",
    "system_same_as_user": false,
    "first_input_sequence": "",
    "last_input_sequence": "",
    "name": "Dan-ChatML"
}</pre>
  </details>
  <h3>Example Outputs</h3>
  <details>
    <summary>General Assistance Example</summary>
    <p><em>System: Act as a personable virtual assistant.</em></p>
    <p><strong>User:</strong> I'm going to be in Chicago soon can you help me work up some restaurant ideas?</p>
    <p><strong>Assistant:</strong> I'd love to! Here are a few suggestions for restaurants in Chicago:</p>
    <ul>
      <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>
      <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>
      <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>
      <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>
    </ul>
    <p>Let me know if you need any other recommendations or have specific dietary restrictions or preferences!</p>
  </details>
  <details>
    <summary>Basic Programming Example</summary>
    <p><em>System: Answer the question or perform the task.</em></p>
    <p><strong>User:</strong> Explain the bug in the following code:</p>
    <pre class="code-block">
from time import sleep
from multiprocessing.pool import ThreadPool

def task():
    sleep(1)
    return 'all done'

if __name__ == '__main__':
    with ThreadPool() as pool:
        result = pool.apply_async(task())</pre>
    <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>
    <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>
    <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>
    <pre class="code-block">
from time import sleep
from multiprocessing.pool import ThreadPool

def task():
    sleep(1)
    return 'all done'

if __name__ == '__main__':
    with ThreadPool() as pool:
        result = pool.apply_async(task)  # Pass the function, not the result
        value = result.get()  # Wait for the result
        print(value)</pre>
  </details>
  <details>
    <summary>Writing Example</summary>
    <p><em>System: Take the users messages and use them as a writing prompt. Write 5 sentences.</em></p>
    <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>
    <p><strong>Assistant:</strong> "Sir, they are gone sir." The young corporal was out of breath.</p>
    <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>
    <p><strong>User:</strong> "Who?"</p>
    <p><strong>Assistant:</strong> He turned and looked at the corporal.</p>
    <p>"The bears. They left. We checked the entire perimeter. No bears to be found sir."</p>
    <p>"Did you check the air?"</p>
    <p>"Not the air, sir. We didn't see any shuttles. But we have drones out now."</p>
    <p><strong>User:</strong> "*Sigh*"</p>
    <p><strong>Assistant:</strong> "Ok, get me the status report. I need to know how many dead we have."</p>
    <p>"Yes sir." The corporal turned to leave.</p>
    <p>"Corporal…"</p>
    <p>"Sir?"</p>
    <p>"Get me a fresh cup of coffee. Black. I need the caffeine."</p>
  </details>
  <details>
    <summary>Text Editing Example</summary>
    <p><em>System: You are a professional editor with decades of experience, help the user with any task they have for you.</em></p>
    <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>
    <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>
  </details>
  <h3>Datasets</h3>
  <details>
    <summary>Breakdown</summary>
    <ul>
        <li>Memory & Core Curriculum
            <ul>
                <li>Dans-MemoryCore-CoreCurriculum-Small - Base knowledge</li>
            </ul>
        </li>
        <li>Military & Survival Knowledge
            <ul>
                <li>Energetic-Materials - Understanding of explosives and related chemistry</li>
                <li>Chemical-Biological-Safety-Applications - Safety protocols, handling procedures, etc.</li>
                <li>US-Army-Survival - Survival techniques and field craft</li>
                <li>Resistance - Resistance operations and tactics</li>
                <li>Interrogation - Interview and interrogation techniques</li>
                <li>Multi-Environment-Operations - Operations across different environments</li>
            </ul>
        </li>
        <li>Mathematics & Problem Solving
            <ul>
                <li>Dans-Mathmaxx - Core mathematics capabilities</li>
                <li>Dans-Mathmaxx-Numina-CoT - Chain of thought mathematical reasoning</li>
                <li>Math-Multiturn-1K-ShareGPT - Multi-turn math problem solving</li>
            </ul>
        </li>
        <li>Benchmarking & Testing
            <ul>
                <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>
                <li>Dans-Benchmaxx-COT - The same but for COT then answer based testing.</li>
            </ul>
        </li>
        <li>Programming & Code
            <ul>
                <li>Dans-Codemaxx-LeetCode - Programmatically produced from rosettacode</li>
                <li>Dans-Codemaxx-CodeFeedback - Dataset focused on correction after producing incorrect code.</li>
                <li>Dans-Codemaxx-Bigcode-SelfInstruct - Subset from the Bigcode SelfInstruct dataset</li>
            </ul>
        </li>
        <li>Task Specific Training
            <ul>
                <li>Dans-Taskmaxx - General task handling</li>
                <li>Dans-Taskmaxx-DataPrepper - Data preparation and cleaning</li>
                <li>Dans-Taskmaxx-ConcurrentQA - Multi hop retrieval based tasks</li>
                <li>Dans-Taskmaxx-TableGPT - Table data processing</li>
                <li>Dans-Taskmaxx-SciRIFF - Scientific paper analysis</li>
                <li>Dans-Taskmaxx-Edit - Text editing and revision</li>
            </ul>
        </li>
        <li>System & Tool Usage
            <ul>
                <li>Dans-Toolmaxx-Agent - Tool usage and agent behavior</li>
                <li>Dans-Toolmaxx-ShellCommands - Command line operations</li>
                <li>Dans-Toolmaxx-Functions - API and function calling</li>
            </ul>
        </li>
        <li>Creative & Writing
            <ul>
                <li>Dans-ASCIIMaxx-Wordart - ASCII word art creation</li>
                <li>Dans-Prosemaxx-Gutenberg - Summary style prompt writing instructions sourced from the Gutenberg project.</li>
                <li>Dans-Prosemaxx-Cowriter - Back and forth co-writing dataset sourced from human written literature</li>
                <li>Dans-Prosemaxx-Adventure - Interactive fiction throwbacks such as Zork, Anchorhead, and Hunting the Ripper</li>
                <li>Dans-Prosemaxx-WritingPrompts - Prompt based writing instructions</li>
            </ul>
        </li>
        <li>Assistant & Personality
            <ul>
                <li>Dans-Assistantmaxx series - Various assistant behaviors and capabilities</li>
                <li>Dans-Personamaxx series - Personality and character development</li>
                <li>Dans-Logicmaxx series - Logical reasoning and problem solving</li>
            </ul>
        </li>
        <li>Instruction Following
            <ul>
                <li>Dans-Systemmaxx - System message training data optimized to help the model reject bad patterns</li>
            </ul>
        </li>
    </ul>
</details>
  <h3>Training</h3>
  <p>Full finetuned for 2 epochs on 1x H200 SXM (88 hours of training)</p>
    <p class="badge-container">
  <a href="https://github.com/OpenAccess-AI-Collective/axolotl" target="_blank" rel="noopener noreferrer">
    <img src="https://raw.githubusercontent.com/OpenAccess-AI-Collective/axolotl/main/image/axolotl-badge-web.png" alt="Built with Axolotl" width="200" height="32"/>
  </a>
</p>
  <h3>Support Development</h3>
  <p>Development is limited by funding and resources. To help support:</p>
  <p>- Contact on HF</p>
  <p>- Email: visuallyadequate@gmail.com</p>
  <p class="coffee-container">
  <a href="https://www.buymeacoffee.com/visually" target="_blank" rel="noopener noreferrer">
    <img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" height="45" width="162">
  </a>
</p>
</div>
      </div>
    </div>
  </div>
</div>
<style>
@import url('https://fonts.googleapis.com/css2?family=VT323&display=swap');
.crt-container {
  padding: 10px;
  max-width: 1000px;
  margin: 0 auto;
  width: 95%;
}
.crt-case {
  background: #e8d7c3;
  border-radius: 10px;
  padding: 15px;
  box-shadow: inset -2px -2px 5px rgba(0,0,0,0.3), 2px 2px 5px rgba(0,0,0,0.2);
}
.crt-inner-case {
  background: #e8d7c3;
  border-radius: 8px;
  padding: 3px;
  box-shadow: inset -1px -1px 4px rgba(0,0,0,0.3), 1px 1px 4px rgba(0,0,0,0.2);
}
.crt-bezel {
  background: linear-gradient(145deg, #1a1a1a, #2a2a2a);
  padding: 15px;
  border-radius: 5px;
  border: 3px solid #0a0a0a;
  position: relative;
  box-shadow: 
    inset 0 0 20px rgba(0,0,0,0.5),
    inset 0 0 4px rgba(0,0,0,0.4),
    inset 2px 2px 4px rgba(255,255,255,0.05),
    inset -2px -2px 4px rgba(0,0,0,0.8),
    0 0 2px rgba(0,0,0,0.6),
    -1px -1px 4px rgba(255,255,255,0.1),
    1px 1px 4px rgba(0,0,0,0.3);
}
.crt-bezel::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg,
    rgba(255,255,255,0.03) 0%,
    rgba(255,255,255,0) 40%,
    rgba(0,0,0,0.1) 60%,
    rgba(0,0,0,0.2) 100%);
  border-radius: 3px;
  pointer-events: none;
}
.terminal-screen {
  background: #111112;
  padding: 20px;
  border-radius: 15px;
  position: relative;
  overflow: hidden;
  font-family: 'VT323', monospace;
  font-size: clamp(12px, 1.5vw, 16px);
  color: #e49b3e;
  line-height: 1.4;
  text-shadow: 0 0 2px #e49b3e;
  animation: flicker 0.15s infinite;
  filter: brightness(1.1) contrast(1.1);
  box-shadow: 
    inset 0 0 30px rgba(0,0,0,0.9),
    inset 0 0 8px rgba(0,0,0,0.8),
    0 0 5px rgba(0,0,0,0.6);
  max-width: 80ch;
  margin: 0 auto;
}
.terminal-screen h2, .terminal-screen h3 {
  font-size: clamp(16px, 2vw, 20px);
  margin-bottom: 1em;
  color: #e49b3e;
}
.terminal-screen pre.code-block {
  font-size: clamp(11px, 1.3vw, 14px);
  white-space: pre-wrap;
  margin: 1em 0;
  background-color: #1a1a1a;
  padding: 1em;
  border-radius: 4px;
  color: #e49b3e;
}
.terminal-screen::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.25) 50%), url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyBAMAAADsEZWCAAAAGFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4o8JoAAAAB3RSTlMAGwQIEQMYADcPzwAAACJJREFUKM9jYBgFo2AU0Beg+A8YMCLxGYZCbNQEo4BaAAD5TQiR5wU9vAAAAABJRU5ErkJggg==');
  background-size: 100% 2.5px;
  animation: scan 1s linear infinite;
  pointer-events: none;
  z-index: 2;
}
.terminal-screen::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: radial-gradient(circle at center, 
    rgba(17, 17, 18, 0) 0%, 
    rgba(17, 17, 18, 0.2) 50%, 
    rgba(17, 17, 18, 0.15) 100%
  );
  border-radius: 20px;
  animation: vignette-pulse 3s infinite;
  pointer-events: none;
  z-index: 1;
}
.terminal-screen details {
  margin: 1em 0;
  padding: 0.5em;
  border: 1px solid #e49b3e;
  border-radius: 4px;
}
.terminal-screen summary {
  cursor: pointer;
  font-weight: bold;
  margin: -0.5em;
  padding: 0.5em;
  border-bottom: 1px solid #e49b3e;
  color: #e49b3e;
}
.terminal-screen details[open] summary {
  margin-bottom: 0.5em;
}
.badge-container, .coffee-container {
  text-align: center;
  margin: 1em 0;
}
.badge-container img, .coffee-container img {
  max-width: 100%;
  height: auto;
}
.terminal-screen a {
  color: #e49b3e;
  text-decoration: underline;
  transition: opacity 0.2s;
}
.terminal-screen a:hover {
  opacity: 0.8;
}
.terminal-screen strong, .terminal-screen em {
  color: #f0f0f0;  /* off-white color for user/system messages */
}
.terminal-screen p {
  color: #f0f0f0;  /* off-white color for assistant responses */
}
.terminal-screen p, .terminal-screen li {
  color: #e49b3e;
}
.terminal-screen code,
.terminal-screen kbd,
.terminal-screen samp {
  color: #e49b3e;
  font-family: 'VT323', monospace;
  text-shadow: 0 0 2px #e49b3e;
  background-color: #1a1a1a;
  padding: 0.2em 0.4em;
  border-radius: 4px;
}
.terminal-screen pre.code-block,
.terminal-screen pre {
  font-size: clamp(11px, 1.3vw, 14px);
  white-space: pre-wrap;
  margin: 1em 0;
  background-color: #1a1a1a;
  padding: 1em;
  border-radius: 4px;
  color: #e49b3e;
}
@keyframes flicker {
  0% { opacity: 0.98; }
  50% { opacity: 1; }
  100% { opacity: 0.99; }
}
@keyframes scan {
  0% { transform: translateY(0); }
  100% { transform: translateY(4px); }
}
@keyframes vignette-pulse {
  0% { opacity: 0.8; }
  50% { opacity: 1; }
  100% { opacity: 0.8; }
}
</style>