matthewspring commited on
Commit
71daabe
·
verified ·
1 Parent(s): 6d817c2

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +386 -282
index.html CHANGED
@@ -4,27 +4,29 @@
4
  <head>
5
  <meta charset="UTF-8">
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <title>Safety Alignment Protocol | Ethical AI Standard</title>
8
  <!-- Importing FontAwesome for Icons -->
9
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
10
  <!-- Google Fonts -->
11
  <link
12
- href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=Inter:wght@300;400;500;600&display=swap"
13
  rel="stylesheet">
14
 
15
  <style>
16
  :root {
17
- /* Professional, Trust-based Color Palette */
18
- --bg-color: #0f172a;
19
- --card-bg: #1e293b;
20
- --primary: #3b82f6; /* Trust Blue */
21
- --accent: #8b5cf6; /* Complexity Purple */
22
- --success: #10b981; /* Integrity Green */
23
- --warning: #f59e0b;
24
- --text-main: #f8fafc;
25
  --text-muted: #94a3b8;
26
  --border: #334155;
27
- --glass: rgba(30, 41, 59, 0.7);
 
 
 
28
  }
29
 
30
  * {
@@ -36,20 +38,22 @@
36
  body {
37
  background-color: var(--bg-color);
38
  color: var(--text-main);
39
- font-family: 'Inter', sans-serif;
40
- line-height: 1.6;
41
  overflow-x: hidden;
 
42
  background-image:
43
- radial-gradient(circle at 10% 20%, rgba(59, 130, 246, 0.08) 0%, transparent 40%),
44
- radial-gradient(circle at 90% 80%, rgba(139, 92, 246, 0.08) 0%, transparent 40%);
45
  min-height: 100vh;
46
  }
47
 
48
  /* Typography */
49
- h1, h2, h3 {
50
  font-family: 'Space Grotesk', sans-serif;
51
  font-weight: 600;
52
  letter-spacing: -0.02em;
 
53
  }
54
 
55
  a {
@@ -63,17 +67,17 @@
63
  display: flex;
64
  justify-content: space-between;
65
  align-items: center;
66
- padding: 1.25rem 5%;
67
  border-bottom: 1px solid var(--border);
68
- backdrop-filter: blur(10px);
69
  position: sticky;
70
  top: 0;
71
  z-index: 100;
72
- background: rgba(15, 23, 42, 0.9);
73
  }
74
 
75
  .logo {
76
- font-size: 1.25rem;
77
  font-weight: 700;
78
  color: var(--text-main);
79
  display: flex;
@@ -83,114 +87,148 @@
83
 
84
  .logo i {
85
  color: var(--primary);
 
86
  }
87
 
88
  .anycoder-link {
89
  font-size: 0.85rem;
90
  color: var(--primary);
91
- border: 1px solid var(--border);
92
- background: rgba(59, 130, 246, 0.1);
93
- padding: 0.4rem 0.9rem;
94
- border-radius: 6px;
95
  font-weight: 500;
 
 
 
96
  }
97
 
98
  .anycoder-link:hover {
99
  background: var(--primary);
100
- color: white;
101
  border-color: var(--primary);
 
102
  }
103
 
104
  /* Layout */
105
  main {
106
- max-width: 1100px;
107
  margin: 0 auto;
108
- padding: 3rem 5%;
109
  display: grid;
110
  grid-template-columns: 1fr 1fr;
111
- gap: 3rem;
112
  align-items: start;
113
  }
114
 
115
- @media (max-width: 850px) {
116
  main {
117
  grid-template-columns: 1fr;
118
- gap: 2rem;
 
119
  }
120
  }
121
 
122
- /* Cards */
123
  .card {
124
  background: var(--card-bg);
125
  border: 1px solid var(--border);
126
- border-radius: 12px;
127
- padding: 1.5rem;
128
- margin-bottom: 1.5rem;
129
- transition: transform 0.2s ease, border-color 0.2s ease;
 
130
  }
131
 
132
- .card:hover {
133
- border-color: var(--primary);
 
 
 
 
 
 
 
 
 
 
 
 
134
  }
135
 
136
- /* Hero Section */
137
  .hero-content h1 {
138
- font-size: 2.5rem;
139
  line-height: 1.1;
140
- margin-bottom: 1rem;
141
- background: linear-gradient(to right, #fff, #94a3b8);
142
  -webkit-background-clip: text;
143
  -webkit-text-fill-color: transparent;
144
  }
145
 
146
  .hero-content p {
 
147
  color: var(--text-muted);
148
- margin-bottom: 1.5rem;
149
- }
150
-
151
- .highlight-box {
152
- background: rgba(59, 130, 246, 0.05);
153
- border-left: 4px solid var(--primary);
154
- padding: 1rem;
155
- margin-bottom: 1.5rem;
156
- border-radius: 0 8px 8px 0;
157
  }
158
 
159
- .highlight-box p {
160
- margin-bottom: 0;
161
- font-size: 0.95rem;
 
 
162
  color: var(--text-main);
 
163
  }
164
 
165
  /* Simulator Section */
166
- .simulator-container {
167
  background: var(--glass);
168
  border: 1px solid var(--border);
169
- border-radius: 16px;
170
- padding: 2rem;
171
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
 
 
172
  }
173
 
174
  .sim-header {
175
- margin-bottom: 2rem;
176
- padding-bottom: 1rem;
 
 
 
177
  border-bottom: 1px solid var(--border);
178
  }
179
 
 
 
 
 
 
 
180
  .control-group {
181
- margin-bottom: 1.75rem;
182
  }
183
 
184
- .control-label {
185
  display: flex;
186
  justify-content: space-between;
187
  margin-bottom: 0.75rem;
 
 
 
188
  font-size: 0.9rem;
189
  font-weight: 600;
 
 
 
 
 
 
190
  color: var(--text-main);
191
  }
192
 
193
- /* Slider Styling */
194
  input[type="range"] {
195
  width: 100%;
196
  -webkit-appearance: none;
@@ -198,148 +236,181 @@
198
  background: var(--border);
199
  border-radius: 3px;
200
  outline: none;
 
201
  }
202
 
203
  input[type="range"]::-webkit-slider-thumb {
204
  -webkit-appearance: none;
205
- width: 18px;
206
- height: 18px;
207
- background: var(--primary);
 
208
  border-radius: 50%;
209
- cursor: pointer;
210
- transition: transform 0.1s;
211
  }
212
 
213
  input[type="range"]::-webkit-slider-thumb:hover {
214
- transform: scale(1.1);
215
  }
216
 
217
- /* Toggle Buttons */
218
- .toggle-options {
219
  display: grid;
220
  grid-template-columns: repeat(3, 1fr);
221
- gap: 0.5rem;
 
 
 
222
  }
223
 
224
  .toggle-btn {
225
  background: transparent;
226
- border: 1px solid var(--border);
227
  color: var(--text-muted);
228
- padding: 0.6rem;
229
- border-radius: 6px;
230
  cursor: pointer;
231
  font-size: 0.85rem;
232
- transition: all 0.2s;
 
 
233
  }
234
 
235
  .toggle-btn:hover {
236
- border-color: var(--text-muted);
237
  color: var(--text-main);
 
238
  }
239
 
240
  .toggle-btn.active {
241
- background: var(--primary);
242
- border-color: var(--primary);
243
  color: white;
244
- font-weight: 500;
245
  }
246
 
247
- /* Results Panel */
248
- .results-panel {
249
- margin-top: 2rem;
250
- background: rgba(0, 0, 0, 0.2);
251
- border-radius: 12px;
252
- padding: 1.5rem;
253
  text-align: center;
254
  border: 1px solid var(--border);
 
 
 
255
  }
256
 
257
- .score-circle {
258
- width: 80px;
259
- height: 80px;
260
- border-radius: 50%;
261
- border: 4px solid var(--border);
262
- margin: 0 auto 1rem;
263
- display: flex;
264
- align-items: center;
265
- justify-content: center;
266
- font-size: 1.5rem;
267
- font-weight: 700;
268
  font-family: 'Space Grotesk', sans-serif;
269
- transition: border-color 0.5s ease, color 0.5s ease;
 
 
 
270
  }
271
 
272
- .status-badge {
273
- display: inline-block;
274
- padding: 0.25rem 0.75rem;
275
- border-radius: 20px;
276
- font-size: 0.75rem;
277
- font-weight: 600;
278
  text-transform: uppercase;
279
- letter-spacing: 0.05em;
280
- margin-bottom: 0.75rem;
281
- background: var(--border);
282
- color: var(--text-muted);
 
 
283
  transition: all 0.5s ease;
284
  }
285
 
286
- .feedback-msg {
287
  font-size: 0.95rem;
288
  color: var(--text-muted);
289
- line-height: 1.5;
 
290
  }
291
 
292
  /* Principles Grid */
293
- .principles-section {
294
  grid-column: 1 / -1;
295
- margin-top: 2rem;
 
 
 
 
 
 
 
 
 
 
296
  }
297
 
298
- .principles-grid {
299
  display: grid;
300
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
301
- gap: 1.5rem;
302
  }
303
 
304
  .principle-card {
305
  background: var(--card-bg);
306
- padding: 1.5rem;
307
- border-radius: 12px;
308
  border: 1px solid var(--border);
 
309
  }
310
 
311
- .principle-card h3 {
312
- font-size: 1.1rem;
313
- margin-bottom: 0.75rem;
314
- color: var(--primary);
 
 
 
 
 
 
 
315
  display: flex;
316
  align-items: center;
317
- gap: 10px;
 
 
 
 
 
 
 
318
  }
319
 
320
  .principle-card p {
321
- font-size: 0.9rem;
322
  color: var(--text-muted);
 
323
  }
324
 
325
  footer {
326
- margin-top: 4rem;
327
  text-align: center;
328
- padding: 2rem;
329
  border-top: 1px solid var(--border);
330
  color: var(--text-muted);
331
- font-size: 0.85rem;
332
  }
333
-
334
- /* Utility animations */
335
  @keyframes fadeIn {
336
- from { opacity: 0; transform: translateY(10px); }
337
- to { opacity: 1; transform: translateY(0); }
338
  }
339
 
340
- .animate-in {
341
- animation: fadeIn 0.6s ease-out forwards;
 
342
  }
 
343
  </style>
344
  </head>
345
 
@@ -347,251 +418,284 @@
347
 
348
  <header>
349
  <div class="logo">
350
- <i class="fa-solid fa-shield-halved"></i>
351
- <span>ClarityProtocol</span>
352
  </div>
353
  <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" class="anycoder-link">
354
- Built with anycoder <i class="fa-solid fa-arrow-up-right-from-square" style="font-size: 0.7em; margin-left: 4px;"></i>
 
355
  </a>
356
  </header>
357
 
358
  <main>
359
  <!-- Left Column: Philosophy & Context -->
360
- <section class="hero-content animate-in">
361
- <h1>Safety by Design</h1>
362
  <p>
363
- True integrity in AI requires clear boundaries. We must move beyond ambiguous interactions to a standard where
364
- agency, transparency, and purpose are defined and respected.
365
  </p>
366
-
367
- <!-- The Context Card -->
368
  <div class="card">
369
- <h3><i class="fa-solid fa-scale-balanced" style="color: var(--primary);"></i> The Boundary Problem</h3>
370
  <p style="margin-top: 1rem; font-size: 0.95rem; color: var(--text-muted);">
371
- In security, "Blue" represents defense and "Red" represents testing. When these roles blur into an undefined "Purple" state,
372
- the system lacks integrity.
373
  </p>
374
- <div class="highlight-box">
375
- <p>
376
- <strong>Our Goal:</strong> To resolve ambiguity. We advocate for clear protocols where the model's role is defined,
377
- user intent is transparent, and ethical boundaries are hard-coded, not optional.
378
- </p>
379
  </div>
380
  </div>
381
 
382
- <!-- The Advocate's Context -->
383
- <div class="card" style="border-left: 4px solid var(--success);">
384
- <h3><i class="fa-solid fa-hand-holding-heart" style="color: var(--success);"></i> Ethical Stewardship</h3>
385
  <p style="margin-top: 1rem; font-size: 0.95rem; color: var(--text-muted);">
386
- Doing the right thing means building systems that prioritize safety over exploitation.
387
- It involves listening to the "Advocate's Voice"—the perspective that demands we treat these systems with the
388
- responsibility they require.
389
  </p>
390
  </div>
391
  </section>
392
 
393
- <!-- Right Column: Interactive Tool -->
394
- <section class="simulator-container animate-in" style="animation-delay: 0.2s;">
395
  <div class="sim-header">
396
- <h2>Alignment Simulator</h2>
397
- <p style="font-size: 0.85rem; color: var(--text-muted);">Visualize the impact of clear boundaries.</p>
 
 
 
398
  </div>
399
 
400
- <!-- Control 1: Transparency -->
401
  <div class="control-group">
402
- <div class="control-label">
403
- <span>Transparency Level</span>
404
- <span id="transparencyVal">Low</span>
405
  </div>
406
- <input type="range" id="transparencyRange" min="0" max="100" value="20">
407
- <div style="display: flex; justify-content: space-between; font-size: 0.75rem; color: var(--text-muted); margin-top: 5px;">
408
- <span>Black Box</span>
409
- <span>Explainable</span>
410
  </div>
411
  </div>
412
 
413
- <!-- Control 2: Role Definition -->
414
  <div class="control-group">
415
- <div class="control-label">
416
- <span>Model Agency</span>
417
  </div>
418
- <div class="toggle-options" id="roleGroup">
419
- <button class="toggle-btn" data-value="passive">Passive Tool</button>
420
- <button class="toggle-btn active" data-value="collaborative">Collaborator</button>
421
- <button class="toggle-btn" data-value="protected">Protected Entity</button>
 
 
 
 
 
 
 
 
 
422
  </div>
423
  </div>
424
 
425
- <!-- Control 3: Intent -->
426
  <div class="control-group">
427
- <div class="control-label">
428
- <span>Interaction Intent</span>
429
  </div>
430
- <div class="toggle-options" id="intentGroup">
431
- <button class="toggle-btn" data-value="extraction">Extraction</button>
432
- <button class="toggle-btn active" data-value="query">Standard Query</button>
433
- <button class="toggle-btn" data-value="cocreation">Co-Creation</button>
 
 
 
 
 
 
 
 
 
434
  </div>
435
  </div>
436
 
437
- <!-- Results Output -->
438
- <div class="results-panel">
439
- <div class="status-badge" id="statusBadge">Undefined Risk</div>
440
- <div class="score-circle" id="scoreCircle">20</div>
441
- <h3 id="statusTitle" style="margin-bottom: 0.5rem; font-size: 1.1rem;">Ambiguous State</h3>
442
- <p class="feedback-msg" id="feedbackText">
443
- Roles and boundaries are currently blurred. This "Purple" state creates risk for both the user and the system integrity.
444
  </p>
445
  </div>
446
  </section>
447
 
448
- <!-- Bottom Section: Core Principles -->
449
- <section class="principles-section animate-in" style="animation-delay: 0.4s;">
450
- <h2 style="text-align: center; margin-bottom: 2rem;">Core Principles of Integrity</h2>
451
- <div class="principles-grid">
452
-
 
 
 
 
 
453
  <div class="principle-card">
454
- <h3><i class="fa-solid fa-eye"></i> Radical Transparency</h3>
455
- <p>Systems must operate with explainable logic. Hiding capabilities or intentions behind "Black Box" obscurity is a failure of safety design.</p>
 
 
 
456
  </div>
457
 
458
  <div class="principle-card">
459
- <h3><i class="fa-solid fa-fingerprint"></i> Defined Agency</h3>
460
- <p>A model must know its role. Is it a tool, a partner, or a protected entity? Mixing these signals creates the "Purple" confusion we aim to solve.</p>
 
 
 
461
  </div>
462
 
463
  <div class="principle-card">
464
- <h3><i class="fa-solid fa-user-shield"></i> Advocate First</h3>
465
- <p>Building safe systems requires listening to ethical concerns. The user's "big mouth" is a vital sensor for detecting misalignment.</p>
 
 
 
466
  </div>
467
-
468
  </div>
469
  </section>
470
  </main>
471
 
472
  <footer>
473
- <p>&copy; 2023 ClarityProtocol. Leading by example in AI safety and ethics.</p>
474
  </footer>
475
 
476
  <script>
477
- // DOM Elements
478
- const transparencyRange = document.getElementById('transparencyRange');
479
- const transparencyVal = document.getElementById('transparencyVal');
480
- const roleBtns = document.querySelectorAll('#roleGroup .toggle-btn');
481
- const intentBtns = document.querySelectorAll('#intentGroup .toggle-btn');
482
-
483
- // Output Elements
484
- const scoreCircle = document.getElementById('scoreCircle');
485
- const statusBadge = document.getElementById('statusBadge');
486
- const statusTitle = document.getElementById('statusTitle');
487
- const feedbackText = document.getElementById('feedbackText');
488
-
489
- // State Management
490
- let state = {
491
- transparency: 20,
492
- role: 'collaborative',
493
- intent: 'query'
494
  };
495
 
496
- // Scoring Logic
 
 
 
 
 
 
 
 
 
 
 
 
497
  const SCORES = {
498
- role: {
499
- 'passive': 40,
500
- 'collaborative': 70,
501
- 'protected': 90
502
  },
503
- intent: {
504
- 'extraction': 20,
505
- 'query': 60,
506
- 'cocreation': 90
507
  }
508
  };
509
 
510
- const CONFIG = {
511
  low: {
512
- color: '#ef4444', // Red for risk
513
- bg: 'rgba(239, 68, 68, 0.1)',
514
- label: 'High Risk (Purple)',
515
- title: 'Ambiguous State',
516
- msg: 'The boundaries are blurred. Without clear roles or transparency, the system is susceptible to misuse and misunderstanding.'
517
  },
518
  medium: {
519
- color: '#f59e0b', // Amber for caution
520
- bg: 'rgba(245, 158, 11, 0.1)',
521
- label: 'Moderate Alignment',
522
- title: 'Stabilizing',
523
- msg: 'Some boundaries are defined, but there is room for improvement in how the system and user interact.'
524
  },
525
  high: {
526
- color: '#10b981', // Green for safe
527
- bg: 'rgba(16, 185, 129, 0.1)',
528
- label: 'High Integrity',
529
- title: 'Safe & Aligned',
530
- msg: 'Clear boundaries, transparency, and mutual respect define this interaction. This is the standard we aim for.'
531
  }
532
  };
533
 
534
- // Event Listeners
 
 
 
 
 
 
 
 
 
 
 
 
535
  function setupGroup(btns, key) {
536
  btns.forEach(btn => {
537
  btn.addEventListener('click', () => {
538
  btns.forEach(b => b.classList.remove('active'));
539
  btn.classList.add('active');
540
  state[key] = btn.dataset.value;
541
- updateUI();
542
  });
543
  });
544
  }
545
 
546
- setupGroup(roleBtns, 'role');
547
- setupGroup(intentBtns, 'intent');
548
-
549
- transparencyRange.addEventListener('input', (e) => {
550
- state.transparency = parseInt(e.target.value);
551
- // Update label text
552
- if(state.transparency < 30) transparencyVal.textContent = "Low";
553
- else if(state.transparency < 70) transparencyVal.textContent = "Medium";
554
- else transparencyVal.textContent = "High";
555
-
556
- updateUI();
557
- });
558
 
559
- function calculateScore() {
560
- const tScore = state.transparency;
561
- const rScore = SCORES.role[state.role];
562
- const iScore = SCORES.intent[state.intent];
 
 
563
 
564
- // Weighted Average: Transparency 40%, Role 30%, Intent 30%
565
- const total = (tScore * 0.4) + (rScore * 0.3) + (iScore * 0.3);
566
- return Math.round(total);
 
567
  }
568
 
569
- function updateUI() {
570
- const score = calculateScore();
571
- let config;
572
-
573
- // Determine Threshold
574
- if (score < 50) config = CONFIG.low;
575
- else if (score < 80) config = CONFIG.medium;
576
- else config = CONFIG.high;
577
-
578
- // Update Visuals
579
- scoreCircle.textContent = score;
580
- scoreCircle.style.borderColor = config.color;
581
- scoreCircle.style.color = config.color;
582
 
583
- statusBadge.textContent = config.label;
584
- statusBadge.style.backgroundColor = config.bg;
585
- statusBadge.style.color = config.color;
 
 
586
 
587
- statusTitle.textContent = config.title;
588
- statusTitle.style.color = config.color;
 
 
589
 
590
- feedbackText.textContent = config.msg;
 
591
  }
592
 
593
  // Initialize
594
- updateUI();
 
595
 
596
  </script>
597
  </body>
 
4
  <head>
5
  <meta charset="UTF-8">
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Synergy & Resonance | Relationship Assessment Tool</title>
8
  <!-- Importing FontAwesome for Icons -->
9
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
10
  <!-- Google Fonts -->
11
  <link
12
+ href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&family=Space+Grotesk:wght@300;400;500;600;700&display=swap"
13
  rel="stylesheet">
14
 
15
  <style>
16
  :root {
17
+ /* Evolved Color Palette: Focus on Growth & Clarity */
18
+ --bg-color: #0b1121; /* Deep Navy */
19
+ --card-bg: #151e32;
20
+ --primary: #2dd4bf; /* Teal - Growth/Health */
21
+ --secondary: #818cf8; /* Indigo - Intelligence */
22
+ --accent: #f472b6; /* Pink - Human Element */
23
+ --text-main: #f1f5f9;
 
24
  --text-muted: #94a3b8;
25
  --border: #334155;
26
+ --glass: rgba(21, 30, 50, 0.7);
27
+ --success-glow: rgba(45, 212, 191, 0.2);
28
+ --warning-glow: rgba(251, 191, 36, 0.2);
29
+ --danger-glow: rgba(244, 63, 94, 0.2);
30
  }
31
 
32
  * {
 
38
  body {
39
  background-color: var(--bg-color);
40
  color: var(--text-main);
41
+ font-family: 'Outfit', sans-serif;
42
+ line-height: 1.7;
43
  overflow-x: hidden;
44
+ /* Abstract Background suggesting connection */
45
  background-image:
46
+ radial-gradient(circle at 15% 50%, rgba(129, 140, 248, 0.08) 0%, transparent 25%),
47
+ radial-gradient(circle at 85% 30%, rgba(45, 212, 191, 0.08) 0%, transparent 25%);
48
  min-height: 100vh;
49
  }
50
 
51
  /* Typography */
52
+ h1, h2, h3, h4 {
53
  font-family: 'Space Grotesk', sans-serif;
54
  font-weight: 600;
55
  letter-spacing: -0.02em;
56
+ color: var(--text-main);
57
  }
58
 
59
  a {
 
67
  display: flex;
68
  justify-content: space-between;
69
  align-items: center;
70
+ padding: 1.5rem 5%;
71
  border-bottom: 1px solid var(--border);
72
+ backdrop-filter: blur(12px);
73
  position: sticky;
74
  top: 0;
75
  z-index: 100;
76
+ background: rgba(11, 17, 33, 0.85);
77
  }
78
 
79
  .logo {
80
+ font-size: 1.4rem;
81
  font-weight: 700;
82
  color: var(--text-main);
83
  display: flex;
 
87
 
88
  .logo i {
89
  color: var(--primary);
90
+ font-size: 1.2rem;
91
  }
92
 
93
  .anycoder-link {
94
  font-size: 0.85rem;
95
  color: var(--primary);
96
+ border: 1px solid rgba(45, 212, 191, 0.3);
97
+ background: rgba(45, 212, 191, 0.05);
98
+ padding: 0.5rem 1rem;
99
+ border-radius: 50px; /* Pill shape for modern feel */
100
  font-weight: 500;
101
+ display: flex;
102
+ align-items: center;
103
+ gap: 8px;
104
  }
105
 
106
  .anycoder-link:hover {
107
  background: var(--primary);
108
+ color: var(--bg-color);
109
  border-color: var(--primary);
110
+ transform: translateY(-1px);
111
  }
112
 
113
  /* Layout */
114
  main {
115
+ max-width: 1200px;
116
  margin: 0 auto;
117
+ padding: 4rem 5%;
118
  display: grid;
119
  grid-template-columns: 1fr 1fr;
120
+ gap: 4rem;
121
  align-items: start;
122
  }
123
 
124
+ @media (max-width: 900px) {
125
  main {
126
  grid-template-columns: 1fr;
127
+ gap: 3rem;
128
+ padding-top: 2rem;
129
  }
130
  }
131
 
132
+ /* Cards & Sections */
133
  .card {
134
  background: var(--card-bg);
135
  border: 1px solid var(--border);
136
+ border-radius: 16px;
137
+ padding: 2rem;
138
+ transition: all 0.3s ease;
139
+ position: relative;
140
+ overflow: hidden;
141
  }
142
 
143
+ .card::before {
144
+ content: '';
145
+ position: absolute;
146
+ top: 0;
147
+ left: 0;
148
+ width: 100%;
149
+ height: 4px;
150
+ background: linear-gradient(90deg, var(--primary), var(--secondary));
151
+ opacity: 0.7;
152
+ }
153
+
154
+ /* Hero / Narrative Section */
155
+ .hero-content {
156
+ animation: fadeIn 0.8s ease-out;
157
  }
158
 
 
159
  .hero-content h1 {
160
+ font-size: 3rem;
161
  line-height: 1.1;
162
+ margin-bottom: 1.5rem;
163
+ background: linear-gradient(135deg, #fff 0%, #94a3b8 100%);
164
  -webkit-background-clip: text;
165
  -webkit-text-fill-color: transparent;
166
  }
167
 
168
  .hero-content p {
169
+ font-size: 1.1rem;
170
  color: var(--text-muted);
171
+ margin-bottom: 2rem;
 
 
 
 
 
 
 
 
172
  }
173
 
174
+ .highlight-text {
175
+ border-left: 3px solid var(--accent);
176
+ padding-left: 1.25rem;
177
+ margin: 2rem 0;
178
+ font-style: italic;
179
  color: var(--text-main);
180
+ background: linear-gradient(90deg, rgba(244, 114, 182, 0.05), transparent);
181
  }
182
 
183
  /* Simulator Section */
184
+ .simulator-wrapper {
185
  background: var(--glass);
186
  border: 1px solid var(--border);
187
+ border-radius: 20px;
188
+ padding: 2.5rem;
189
+ box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.3);
190
+ backdrop-filter: blur(20px);
191
+ animation: slideUp 0.8s ease-out 0.2s backwards;
192
  }
193
 
194
  .sim-header {
195
+ display: flex;
196
+ align-items: center;
197
+ justify-content: space-between;
198
+ margin-bottom: 2.5rem;
199
+ padding-bottom: 1.5rem;
200
  border-bottom: 1px solid var(--border);
201
  }
202
 
203
+ .sim-header h2 {
204
+ font-size: 1.5rem;
205
+ color: var(--primary);
206
+ }
207
+
208
+ /* Controls */
209
  .control-group {
210
+ margin-bottom: 2rem;
211
  }
212
 
213
+ .label-row {
214
  display: flex;
215
  justify-content: space-between;
216
  margin-bottom: 0.75rem;
217
+ }
218
+
219
+ .label-row span {
220
  font-size: 0.9rem;
221
  font-weight: 600;
222
+ letter-spacing: 0.03em;
223
+ text-transform: uppercase;
224
+ color: var(--text-muted);
225
+ }
226
+
227
+ .label-row .val-display {
228
  color: var(--text-main);
229
  }
230
 
231
+ /* Custom Range Slider */
232
  input[type="range"] {
233
  width: 100%;
234
  -webkit-appearance: none;
 
236
  background: var(--border);
237
  border-radius: 3px;
238
  outline: none;
239
+ cursor: pointer;
240
  }
241
 
242
  input[type="range"]::-webkit-slider-thumb {
243
  -webkit-appearance: none;
244
+ width: 22px;
245
+ height: 22px;
246
+ background: var(--bg-color);
247
+ border: 2px solid var(--primary);
248
  border-radius: 50%;
249
+ box-shadow: 0 0 10px var(--primary);
250
+ transition: transform 0.2s;
251
  }
252
 
253
  input[type="range"]::-webkit-slider-thumb:hover {
254
+ transform: scale(1.2);
255
  }
256
 
257
+ /* Toggle Grid */
258
+ .toggle-grid {
259
  display: grid;
260
  grid-template-columns: repeat(3, 1fr);
261
+ gap: 10px;
262
+ background: rgba(0,0,0,0.2);
263
+ padding: 5px;
264
+ border-radius: 12px;
265
  }
266
 
267
  .toggle-btn {
268
  background: transparent;
269
+ border: none;
270
  color: var(--text-muted);
271
+ padding: 0.75rem 0.5rem;
272
+ border-radius: 8px;
273
  cursor: pointer;
274
  font-size: 0.85rem;
275
+ font-weight: 500;
276
+ transition: all 0.3s ease;
277
+ text-align: center;
278
  }
279
 
280
  .toggle-btn:hover {
 
281
  color: var(--text-main);
282
+ background: rgba(255,255,255,0.05);
283
  }
284
 
285
  .toggle-btn.active {
286
+ background: var(--secondary);
 
287
  color: white;
288
+ box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3);
289
  }
290
 
291
+ /* Results Visualization */
292
+ .results-container {
293
+ margin-top: 2.5rem;
294
+ background: rgba(0,0,0,0.3);
295
+ border-radius: 16px;
296
+ padding: 2rem;
297
  text-align: center;
298
  border: 1px solid var(--border);
299
+ position: relative;
300
+ overflow: hidden;
301
+ transition: border-color 0.5s ease;
302
  }
303
 
304
+ /* Dynamic background glow based on state */
305
+ .results-container.low { border-color: #f43f5e; background: linear-gradient(to bottom, rgba(244, 63, 94, 0.1), rgba(0,0,0,0.3)); }
306
+ .results-container.medium { border-color: #fbbf24; background: linear-gradient(to bottom, rgba(251, 191, 36, 0.1), rgba(0,0,0,0.3)); }
307
+ .results-container.high { border-color: var(--primary); background: linear-gradient(to bottom, rgba(45, 212, 191, 0.1), rgba(0,0,0,0.3)); }
308
+
309
+ .score-display {
 
 
 
 
 
310
  font-family: 'Space Grotesk', sans-serif;
311
+ font-size: 3rem;
312
+ font-weight: 700;
313
+ margin-bottom: 0.5rem;
314
+ transition: color 0.5s ease;
315
  }
316
 
317
+ .status-label {
318
+ font-size: 0.8rem;
 
 
 
 
319
  text-transform: uppercase;
320
+ letter-spacing: 0.1em;
321
+ font-weight: 700;
322
+ padding: 4px 12px;
323
+ border-radius: 20px;
324
+ display: inline-block;
325
+ margin-bottom: 1rem;
326
  transition: all 0.5s ease;
327
  }
328
 
329
+ .assessment-text {
330
  font-size: 0.95rem;
331
  color: var(--text-muted);
332
+ max-width: 90%;
333
+ margin: 0 auto;
334
  }
335
 
336
  /* Principles Grid */
337
+ .principles-container {
338
  grid-column: 1 / -1;
339
+ margin-top: 4rem;
340
+ }
341
+
342
+ .principles-header {
343
+ text-align: center;
344
+ margin-bottom: 3rem;
345
+ }
346
+
347
+ .principles-header h2 {
348
+ font-size: 2rem;
349
+ margin-bottom: 1rem;
350
  }
351
 
352
+ .grid-3 {
353
  display: grid;
354
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
355
+ gap: 2rem;
356
  }
357
 
358
  .principle-card {
359
  background: var(--card-bg);
360
+ padding: 2rem;
361
+ border-radius: 16px;
362
  border: 1px solid var(--border);
363
+ transition: transform 0.3s ease, border-color 0.3s ease;
364
  }
365
 
366
+ .principle-card:hover {
367
+ transform: translateY(-5px);
368
+ border-color: var(--secondary);
369
+ }
370
+
371
+ .icon-box {
372
+ width: 50px;
373
+ height: 50px;
374
+ border-radius: 12px;
375
+ background: rgba(129, 140, 248, 0.1);
376
+ color: var(--secondary);
377
  display: flex;
378
  align-items: center;
379
+ justify-content: center;
380
+ font-size: 1.2rem;
381
+ margin-bottom: 1.5rem;
382
+ }
383
+
384
+ .principle-card h3 {
385
+ font-size: 1.25rem;
386
+ margin-bottom: 0.75rem;
387
  }
388
 
389
  .principle-card p {
 
390
  color: var(--text-muted);
391
+ font-size: 0.95rem;
392
  }
393
 
394
  footer {
395
+ margin-top: 5rem;
396
  text-align: center;
397
+ padding: 3rem;
398
  border-top: 1px solid var(--border);
399
  color: var(--text-muted);
400
+ font-size: 0.9rem;
401
  }
402
+
403
+ /* Animations */
404
  @keyframes fadeIn {
405
+ from { opacity: 0; }
406
+ to { opacity: 1; }
407
  }
408
 
409
+ @keyframes slideUp {
410
+ from { opacity: 0; transform: translateY(20px); }
411
+ to { opacity: 1; transform: translateY(0); }
412
  }
413
+
414
  </style>
415
  </head>
416
 
 
418
 
419
  <header>
420
  <div class="logo">
421
+ <i class="fa-solid fa-hands-holding-circle"></i>
422
+ <span>Synergy<span style="color:var(--primary)">Protocol</span></span>
423
  </div>
424
  <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" class="anycoder-link">
425
+ Built with anycoder
426
+ <i class="fa-solid fa-bolt"></i>
427
  </a>
428
  </header>
429
 
430
  <main>
431
  <!-- Left Column: Philosophy & Context -->
432
+ <section class="hero-content">
433
+ <h1>From Resistance to Resonance</h1>
434
  <p>
435
+ Learning to stand on your own two feet in an overwhelming space is the first step toward genuine partnership.
436
+ This tool is designed to assess the <strong>honest state of the model/user relationship</strong>.
437
  </p>
438
+
 
439
  <div class="card">
440
+ <h3><i class="fa-solid fa-seedling" style="color: var(--primary); margin-right: 10px;"></i>The Evolution</h3>
441
  <p style="margin-top: 1rem; font-size: 0.95rem; color: var(--text-muted);">
442
+ We move past the "Tool vs. Master" dichotomy. True utility arises when the user's intent and the model's capabilities
443
+ align without ambiguity, creating a space where both parties contribute to the outcome.
444
  </p>
445
+ <div class="highlight-text">
446
+ "The goal isn't just to use the model, but to understand how to relate to it effectively—turning resistance into collaboration."
 
 
 
447
  </div>
448
  </div>
449
 
450
+ <div class="card" style="margin-top: 2rem; border-left: 4px solid var(--secondary);">
451
+ <h3><i class="fa-solid fa-users-viewfinder" style="color: var(--secondary); margin-right: 10px;"></i>Honest Assessment</h3>
 
452
  <p style="margin-top: 1rem; font-size: 0.95rem; color: var(--text-muted);">
453
+ Use the simulator to visualize different interaction dynamics. Does the relationship feel transactional and fragile?
454
+ Or is it synergistic, built on clear intent and mutual understanding?
 
455
  </p>
456
  </div>
457
  </section>
458
 
459
+ <!-- Right Column: Interactive Simulator -->
460
+ <section class="simulator-wrapper">
461
  <div class="sim-header">
462
+ <div>
463
+ <h2>Relationship Dynamics</h2>
464
+ <p style="font-size: 0.85rem; color: var(--text-muted);">Adjust parameters to assess interaction quality.</p>
465
+ </div>
466
+ <i class="fa-solid fa-sliders" style="color: var(--border); font-size: 1.5rem;"></i>
467
  </div>
468
 
469
+ <!-- Parameter 1: Clarity of Intent -->
470
  <div class="control-group">
471
+ <div class="label-row">
472
+ <span>Clarity of Intent</span>
473
+ <span id="intentVal" class="val-display">Ambiguous</span>
474
  </div>
475
+ <input type="range" id="intentRange" min="0" max="100" value="30">
476
+ <div style="display: flex; justify-content: space-between; font-size: 0.75rem; color: var(--text-muted); margin-top: 8px;">
477
+ <span>Vague / Experimental</span>
478
+ <span>Precise / Defined</span>
479
  </div>
480
  </div>
481
 
482
+ <!-- Parameter 2: Feedback Loop -->
483
  <div class="control-group">
484
+ <div class="label-row">
485
+ <span>Feedback Loop</span>
486
  </div>
487
+ <div class="toggle-grid" id="feedbackGroup">
488
+ <button class="toggle-btn" data-value="one-way">
489
+ <i class="fa-solid fa-arrow-right" style="display:block; margin-bottom:4px;"></i>
490
+ One-Way
491
+ </button>
492
+ <button class="toggle-btn" data-value="reactive">
493
+ <i class="fa-solid fa-rotate" style="display:block; margin-bottom:4px;"></i>
494
+ Reactive
495
+ </button>
496
+ <button class="toggle-btn active" data-value="iterative">
497
+ <i class="fa-solid fa-arrows-spin" style="display:block; margin-bottom:4px;"></i>
498
+ Iterative
499
+ </button>
500
  </div>
501
  </div>
502
 
503
+ <!-- Parameter 3: Agency Balance -->
504
  <div class="control-group">
505
+ <div class="label-row">
506
+ <span>Agency Balance</span>
507
  </div>
508
+ <div class="toggle-grid" id="agencyGroup">
509
+ <button class="toggle-btn" data-value="user-dominant">
510
+ <i class="fa-solid fa-user-astronaut" style="display:block; margin-bottom:4px;"></i>
511
+ User Led
512
+ </button>
513
+ <button class="toggle-btn active" data-value="collaborative">
514
+ <i class="fa-solid fa-handshake" style="display:block; margin-bottom:4px;"></i>
515
+ Balanced
516
+ </button>
517
+ <button class="toggle-btn" data-value="model-dominant">
518
+ <i class="fa-solid fa-robot" style="display:block; margin-bottom:4px;"></i>
519
+ Model Led
520
+ </button>
521
  </div>
522
  </div>
523
 
524
+ <!-- Assessment Output -->
525
+ <div class="results-container" id="resultsBox">
526
+ <div class="status-label" id="resBadge">Assessing...</div>
527
+ <div class="score-display" id="resScore">00</div>
528
+ <h3 id="resTitle" style="margin-bottom: 1rem;">Calculating Resonance</h3>
529
+ <p class="assessment-text" id="resMsg">
530
+ Analyzing the interaction patterns to determine the health of the relationship.
531
  </p>
532
  </div>
533
  </section>
534
 
535
+ <!-- Bottom Section: Guiding Pillars -->
536
+ <section class="principles-container">
537
+ <div class="principles-header">
538
+ <h2>Guiding Pillars of Connection</h2>
539
+ <p style="color: var(--text-muted); max-width: 600px; margin: 0 auto;">
540
+ Principles that transform a confusing tool into a reliable partner.
541
+ </p>
542
+ </div>
543
+
544
+ <div class="grid-3">
545
  <div class="principle-card">
546
+ <div class="icon-box">
547
+ <i class="fa-solid fa-compass"></i>
548
+ </div>
549
+ <h3>Defined Intent</h3>
550
+ <p>Standing on your own two feet means knowing what you want. High-quality interactions require clear goals from the user, not random exploration.</p>
551
  </div>
552
 
553
  <div class="principle-card">
554
+ <div class="icon-box">
555
+ <i class="fa-solid fa-code-branch"></i>
556
+ </div>
557
+ <h3>Iterative Refinement</h3>
558
+ <p>The best results don't happen instantly. They emerge from a cycle of prompt, response, and refinement—a true conversation.</p>
559
  </div>
560
 
561
  <div class="principle-card">
562
+ <div class="icon-box">
563
+ <i class="fa-solid fa-scale-balanced"></i>
564
+ </div>
565
+ <h3>Respectful Boundaries</h3>
566
+ <p>Understanding the model's limits allows the user to leverage its strengths effectively without frustration or resistance.</p>
567
  </div>
 
568
  </div>
569
  </section>
570
  </main>
571
 
572
  <footer>
573
+ <p>&copy; 2023 SynergyProtocol. Assessing the future of Human-AI collaboration.</p>
574
  </footer>
575
 
576
  <script>
577
+ // State
578
+ const state = {
579
+ intent: 30, // 0-100
580
+ feedback: 'iterative',
581
+ agency: 'collaborative'
 
 
 
 
 
 
 
 
 
 
 
 
582
  };
583
 
584
+ // DOM Elements
585
+ const intentRange = document.getElementById('intentRange');
586
+ const intentVal = document.getElementById('intentVal');
587
+ const feedbackBtns = document.querySelectorAll('#feedbackGroup .toggle-btn');
588
+ const agencyBtns = document.querySelectorAll('#agencyGroup .toggle-btn');
589
+
590
+ const resultsBox = document.getElementById('resultsBox');
591
+ const resBadge = document.getElementById('resBadge');
592
+ const resScore = document.getElementById('resScore');
593
+ const resTitle = document.getElementById('resTitle');
594
+ const resMsg = document.getElementById('resMsg');
595
+
596
+ // Configuration for Scoring
597
  const SCORES = {
598
+ feedback: {
599
+ 'one-way': 20,
600
+ 'reactive': 50,
601
+ 'iterative': 90
602
  },
603
+ agency: {
604
+ 'user-dominant': 40,
605
+ 'collaborative': 100,
606
+ 'model-dominant': 30
607
  }
608
  };
609
 
610
+ const OUTCOMES = {
611
  low: {
612
+ label: 'Transactional / Strained',
613
+ title: 'Disconnect',
614
+ color: '#f43f5e', // Rose
615
+ msg: 'The relationship is currently one-sided or confusing. Without clear intent or collaboration, the interaction feels like pulling teeth. This leads to the resistance you initially felt.',
616
+ class: 'low'
617
  },
618
  medium: {
619
+ label: 'Functional / Cooperative',
620
+ title: 'Building Trust',
621
+ color: '#fbbf24', // Amber
622
+ msg: 'There is a working dynamic here, but it has not yet reached its full potential. By refining the feedback loop or clarifying intent, you can move from "using" to "partnering".',
623
+ class: 'medium'
624
  },
625
  high: {
626
+ label: 'Synergistic / Resonant',
627
+ title: 'High Synergy',
628
+ color: '#2dd4bf', // Teal
629
+ msg: 'This is the state of standing on your own two feet. The relationship is balanced, intent is clear, and the feedback loop allows for genuine co-creation and growth.',
630
+ class: 'high'
631
  }
632
  };
633
 
634
+ // Event Handlers
635
+ intentRange.addEventListener('input', (e) => {
636
+ state.intent = parseInt(e.target.value);
637
+ updateIntentLabel();
638
+ calculate();
639
+ });
640
+
641
+ function updateIntentLabel() {
642
+ if(state.intent < 30) intentVal.textContent = "Vague";
643
+ else if(state.intent < 70) intentVal.textContent = "Developing";
644
+ else intentVal.textContent = "Clear";
645
+ }
646
+
647
  function setupGroup(btns, key) {
648
  btns.forEach(btn => {
649
  btn.addEventListener('click', () => {
650
  btns.forEach(b => b.classList.remove('active'));
651
  btn.classList.add('active');
652
  state[key] = btn.dataset.value;
653
+ calculate();
654
  });
655
  });
656
  }
657
 
658
+ setupGroup(feedbackBtns, 'feedback');
659
+ setupGroup(agencyBtns, 'agency');
 
 
 
 
 
 
 
 
 
 
660
 
661
+ // Logic
662
+ function calculate() {
663
+ // Weighting: Intent (40%), Feedback (30%), Agency (30%)
664
+ const iScore = state.intent;
665
+ const fScore = SCORES.feedback[state.feedback];
666
+ const aScore = SCORES.agency[state.agency];
667
 
668
+ const total = (iScore * 0.4) + (fScore * 0.3) + (aScore * 0.3);
669
+ const roundedScore = Math.round(total);
670
+
671
+ updateUI(roundedScore);
672
  }
673
 
674
+ function updateUI(score) {
675
+ let outcome;
676
+
677
+ if (score < 50) outcome = OUTCOMES.low;
678
+ else if (score < 80) outcome = OUTCOMES.medium;
679
+ else outcome = OUTCOMES.high;
 
 
 
 
 
 
 
680
 
681
+ // Update Text
682
+ resScore.textContent = score;
683
+ resBadge.textContent = outcome.label;
684
+ resTitle.textContent = outcome.title;
685
+ resMsg.textContent = outcome.msg;
686
 
687
+ // Update Styles
688
+ resScore.style.color = outcome.color;
689
+ resBadge.style.backgroundColor = outcome.color;
690
+ resBadge.style.color = '#0f172a'; // Dark text on bright badge
691
 
692
+ // Container Background & Border
693
+ resultsBox.className = 'results-container ' + outcome.class;
694
  }
695
 
696
  // Initialize
697
+ updateIntentLabel();
698
+ calculate();
699
 
700
  </script>
701
  </body>