privateboard 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +120 -0
  3. package/dist/cli.js +10502 -0
  4. package/dist/cli.js.map +1 -0
  5. package/package.json +63 -0
  6. package/public/adjourn-overlay.css +253 -0
  7. package/public/agent-overlay.css +444 -0
  8. package/public/agent-overlay.js +604 -0
  9. package/public/agent-profile.css +3230 -0
  10. package/public/agent-profile.js +3329 -0
  11. package/public/app.js +6629 -0
  12. package/public/auto-hide-scroll.js +90 -0
  13. package/public/avatar-skill.js +793 -0
  14. package/public/avatars/chair.svg +98 -0
  15. package/public/avatars/first-principles.svg +122 -0
  16. package/public/avatars/long-horizon.svg +147 -0
  17. package/public/avatars/open_ai.png +0 -0
  18. package/public/avatars/phenomenologist.svg +130 -0
  19. package/public/avatars/socrates.svg +187 -0
  20. package/public/avatars/user-empathy.svg +117 -0
  21. package/public/avatars/value-investor.svg +117 -0
  22. package/public/favicon.svg +10 -0
  23. package/public/fonts/agent-Italic.woff2 +0 -0
  24. package/public/fonts/human-sans.woff2 +0 -0
  25. package/public/icons.css +103 -0
  26. package/public/models-cache.js +57 -0
  27. package/public/new-agent.css +1359 -0
  28. package/public/new-agent.js +675 -0
  29. package/public/onboarding.css +628 -0
  30. package/public/onboarding.js +782 -0
  31. package/public/prototype-dashboard.html +7596 -0
  32. package/public/report/spines/a16z-thesis.css +1055 -0
  33. package/public/report/spines/anthropic-essay.css +556 -0
  34. package/public/report/spines/boardroom-dark.css +1082 -0
  35. package/public/report/spines/gartner-note.css +538 -0
  36. package/public/report/spines/mckinsey-deck.css +523 -0
  37. package/public/report/spines/openai-paper.css +516 -0
  38. package/public/report.html +1417 -0
  39. package/public/room-settings.css +895 -0
  40. package/public/room-settings.js +1039 -0
  41. package/public/themes.css +338 -0
  42. package/public/user-settings.css +1236 -0
  43. package/public/user-settings.js +1291 -0
@@ -0,0 +1,187 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -4 48 56" shape-rendering="crispEdges">
2
+ <!-- 48×52 head-only · Socrates · rounded face (chamfered top corners
3
+ + tapered chin), bald scalp + laurel wreath + bushy gray brows
4
+ + cascading white beard + small neck stub.
5
+ Palettes:
6
+ skin #FFE5C5 · #FFCFA2 · #F2B585 · #D69570 · #A8704A · #5A3520
7
+ beard #FFFFFF · #F0EDE5 · #DAD5C8 · #B8B0A0 · #8E8675 · #4D4538
8
+ laurel #7CD850 · #5DBE3F · #4DA53D · #2F7A24 · #1A4818 · #0E2A0E
9
+ berry #FFE072 · #F2C037 · #C99826 · #7A5A14
10
+ -->
11
+
12
+ <!-- ═══ LAUREL WREATH ═══ -->
13
+ <!-- top leaves (rising) -->
14
+ <rect x="22" y="2" width="4" height="1" fill="#1A4818"/>
15
+ <rect x="22" y="3" width="4" height="1" fill="#2F7A24"/>
16
+ <rect x="23" y="4" width="2" height="1" fill="#5DBE3F"/>
17
+ <rect x="16" y="3" width="3" height="1" fill="#1A4818"/>
18
+ <rect x="15" y="4" width="4" height="1" fill="#2F7A24"/>
19
+ <rect x="16" y="5" width="3" height="1" fill="#4DA53D"/>
20
+ <rect x="29" y="3" width="3" height="1" fill="#1A4818"/>
21
+ <rect x="29" y="4" width="4" height="1" fill="#2F7A24"/>
22
+ <rect x="29" y="5" width="3" height="1" fill="#4DA53D"/>
23
+ <rect x="9" y="5" width="3" height="1" fill="#1A4818"/>
24
+ <rect x="9" y="6" width="4" height="1" fill="#2F7A24"/>
25
+ <rect x="10" y="7" width="3" height="1" fill="#4DA53D"/>
26
+ <rect x="36" y="5" width="3" height="1" fill="#1A4818"/>
27
+ <rect x="35" y="6" width="4" height="1" fill="#2F7A24"/>
28
+ <rect x="35" y="7" width="3" height="1" fill="#4DA53D"/>
29
+ <!-- laurel circlet band -->
30
+ <rect x="8" y="8" width="32" height="1" fill="#0E2A0E"/>
31
+ <rect x="7" y="9" width="34" height="1" fill="#1A4818"/>
32
+ <rect x="7" y="10" width="34" height="2" fill="#2F7A24"/>
33
+ <rect x="7" y="12" width="34" height="1" fill="#4DA53D"/>
34
+ <rect x="9" y="11" width="3" height="1" fill="#5DBE3F"/>
35
+ <rect x="14" y="11" width="3" height="1" fill="#7CD850"/>
36
+ <rect x="20" y="11" width="3" height="1" fill="#5DBE3F"/>
37
+ <rect x="26" y="11" width="3" height="1" fill="#7CD850"/>
38
+ <rect x="32" y="11" width="3" height="1" fill="#5DBE3F"/>
39
+ <!-- berries -->
40
+ <rect x="13" y="9" width="2" height="2" fill="#7A5A14"/>
41
+ <rect x="13" y="9" width="2" height="1" fill="#F2C037"/>
42
+ <rect x="13" y="9" width="1" height="1" fill="#FFE072"/>
43
+ <rect x="22" y="9" width="2" height="2" fill="#7A5A14"/>
44
+ <rect x="22" y="9" width="2" height="1" fill="#F2C037"/>
45
+ <rect x="22" y="9" width="1" height="1" fill="#FFE072"/>
46
+ <rect x="31" y="9" width="2" height="2" fill="#7A5A14"/>
47
+ <rect x="31" y="9" width="2" height="1" fill="#F2C037"/>
48
+ <rect x="31" y="9" width="1" height="1" fill="#FFE072"/>
49
+
50
+ <!-- ═══ HEAD · ROUNDED face shape ═══
51
+ Chamfered corners: top narrows to 24w, then 28w, then full 30w main,
52
+ then narrows back to 28w, 24w, 18w (chin tip). -->
53
+
54
+ <!-- Outline (silhouette pixels for the rounded shape) -->
55
+ <!-- top corner chamfers -->
56
+ <rect x="13" y="13" width="22" height="1" fill="#5A3520"/>
57
+ <rect x="11" y="14" width="2" height="1" fill="#5A3520"/>
58
+ <rect x="35" y="14" width="2" height="1" fill="#5A3520"/>
59
+ <rect x="9" y="15" width="2" height="1" fill="#5A3520"/>
60
+ <rect x="37" y="15" width="2" height="1" fill="#5A3520"/>
61
+ <!-- vertical sides (main face height) -->
62
+ <rect x="8" y="16" width="1" height="14" fill="#5A3520"/>
63
+ <rect x="39" y="16" width="1" height="14" fill="#5A3520"/>
64
+ <!-- bottom corner chamfers (chin taper) -->
65
+ <rect x="9" y="30" width="2" height="1" fill="#5A3520"/>
66
+ <rect x="37" y="30" width="2" height="1" fill="#5A3520"/>
67
+ <rect x="11" y="31" width="2" height="1" fill="#5A3520"/>
68
+ <rect x="35" y="31" width="2" height="1" fill="#5A3520"/>
69
+ <rect x="13" y="32" width="22" height="1" fill="#5A3520"/>
70
+
71
+ <!-- Skin fill (rounded interior) -->
72
+ <rect x="13" y="13" width="22" height="1" fill="#F2B585"/>
73
+ <rect x="11" y="14" width="26" height="1" fill="#F2B585"/>
74
+ <rect x="9" y="15" width="30" height="1" fill="#F2B585"/>
75
+ <rect x="9" y="16" width="30" height="14" fill="#F2B585"/>
76
+ <rect x="9" y="30" width="30" height="1" fill="#F2B585"/>
77
+ <rect x="11" y="31" width="26" height="1" fill="#F2B585"/>
78
+ <rect x="13" y="32" width="22" height="1" fill="#F2B585"/>
79
+
80
+ <!-- Forehead highlight -->
81
+ <rect x="13" y="13" width="22" height="2" fill="#FFCFA2"/>
82
+ <rect x="14" y="14" width="20" height="1" fill="#FFE5C5"/>
83
+ <rect x="15" y="13" width="18" height="1" fill="#FFE5C5"/>
84
+ <!-- forehead wisdom-furrow -->
85
+ <rect x="14" y="17" width="20" height="1" fill="#D69570"/>
86
+ <rect x="13" y="18" width="22" height="1" fill="#D69570" opacity="0.45"/>
87
+ <!-- temple shadow -->
88
+ <rect x="9" y="20" width="2" height="9" fill="#A8704A"/>
89
+ <rect x="37" y="20" width="2" height="9" fill="#A8704A"/>
90
+ <!-- cheekbone highlight -->
91
+ <rect x="11" y="22" width="3" height="3" fill="#FFCFA2"/>
92
+ <rect x="34" y="22" width="3" height="3" fill="#FFCFA2"/>
93
+ <!-- chin shadow before beard -->
94
+ <rect x="11" y="27" width="26" height="2" fill="#D69570"/>
95
+ <rect x="13" y="29" width="22" height="2" fill="#A8704A"/>
96
+
97
+ <!-- ═══ BUSHY GRAY EYEBROWS ═══ -->
98
+ <rect x="13" y="19" width="9" height="1" fill="#4D4538"/>
99
+ <rect x="26" y="19" width="9" height="1" fill="#4D4538"/>
100
+ <rect x="13" y="20" width="9" height="1" fill="#8E8675"/>
101
+ <rect x="26" y="20" width="9" height="1" fill="#8E8675"/>
102
+ <rect x="14" y="18" width="1" height="1" fill="#8E8675"/>
103
+ <rect x="20" y="18" width="1" height="1" fill="#8E8675"/>
104
+ <rect x="28" y="18" width="1" height="1" fill="#8E8675"/>
105
+ <rect x="33" y="18" width="1" height="1" fill="#8E8675"/>
106
+
107
+ <!-- ═══ EYES ═══ -->
108
+ <rect x="14" y="21" width="6" height="3" fill="#FFFFFF"/>
109
+ <rect x="15" y="21" width="4" height="3" fill="#1F1F1F"/>
110
+ <rect x="15" y="21" width="2" height="2" fill="#3E78C8"/>
111
+ <rect x="15" y="21" width="1" height="1" fill="#FFFFFF"/>
112
+ <rect x="14" y="20" width="6" height="1" fill="#5A3520"/>
113
+ <rect x="28" y="21" width="6" height="3" fill="#FFFFFF"/>
114
+ <rect x="29" y="21" width="4" height="3" fill="#1F1F1F"/>
115
+ <rect x="29" y="21" width="2" height="2" fill="#3E78C8"/>
116
+ <rect x="29" y="21" width="1" height="1" fill="#FFFFFF"/>
117
+ <rect x="28" y="20" width="6" height="1" fill="#5A3520"/>
118
+ <!-- crow's feet -->
119
+ <rect x="13" y="22" width="1" height="1" fill="#A8704A"/>
120
+ <rect x="34" y="22" width="1" height="1" fill="#A8704A"/>
121
+
122
+ <!-- ═══ NOSE ═══ -->
123
+ <rect x="22" y="20" width="4" height="6" fill="#F2B585"/>
124
+ <rect x="22" y="20" width="1" height="6" fill="#FFCFA2"/>
125
+ <rect x="22" y="20" width="1" height="3" fill="#FFE5C5"/>
126
+ <rect x="25" y="22" width="1" height="4" fill="#D69570"/>
127
+ <rect x="22" y="26" width="4" height="1" fill="#A8704A"/>
128
+ <rect x="21" y="26" width="1" height="1" fill="#A8704A"/>
129
+ <rect x="26" y="26" width="1" height="1" fill="#A8704A"/>
130
+ <rect x="23" y="26" width="1" height="1" fill="#5A3520"/>
131
+
132
+ <!-- ═══ MUSTACHE ═══ -->
133
+ <rect x="13" y="27" width="9" height="1" fill="#8E8675"/>
134
+ <rect x="26" y="27" width="9" height="1" fill="#8E8675"/>
135
+ <rect x="12" y="28" width="11" height="1" fill="#DAD5C8"/>
136
+ <rect x="25" y="28" width="11" height="1" fill="#DAD5C8"/>
137
+ <rect x="11" y="29" width="13" height="1" fill="#FFFFFF"/>
138
+ <rect x="24" y="29" width="13" height="1" fill="#FFFFFF"/>
139
+ <rect x="10" y="29" width="1" height="2" fill="#DAD5C8"/>
140
+ <rect x="37" y="29" width="1" height="2" fill="#DAD5C8"/>
141
+
142
+ <!-- ═══ BEARD · cascading from chin to bottom ═══ -->
143
+ <!-- beard outline -->
144
+ <rect x="9" y="30" width="1" height="14" fill="#4D4538"/>
145
+ <rect x="38" y="30" width="1" height="14" fill="#4D4538"/>
146
+ <!-- beard rounded bottom -->
147
+ <rect x="11" y="44" width="2" height="1" fill="#4D4538"/>
148
+ <rect x="35" y="44" width="2" height="1" fill="#4D4538"/>
149
+ <rect x="13" y="45" width="22" height="1" fill="#4D4538"/>
150
+ <!-- beard fill -->
151
+ <rect x="10" y="30" width="28" height="14" fill="#F0EDE5"/>
152
+ <rect x="13" y="44" width="22" height="1" fill="#F0EDE5"/>
153
+ <!-- beard top highlight -->
154
+ <rect x="11" y="30" width="26" height="2" fill="#FFFFFF"/>
155
+ <!-- mid shadow band -->
156
+ <rect x="10" y="38" width="28" height="2" fill="#DAD5C8"/>
157
+ <rect x="10" y="40" width="28" height="2" fill="#B8B0A0"/>
158
+ <rect x="10" y="42" width="28" height="2" fill="#8E8675"/>
159
+ <!-- individual beard strand clusters -->
160
+ <rect x="13" y="32" width="1" height="12" fill="#DAD5C8"/>
161
+ <rect x="17" y="33" width="1" height="11" fill="#B8B0A0"/>
162
+ <rect x="20" y="32" width="1" height="12" fill="#DAD5C8"/>
163
+ <rect x="24" y="33" width="1" height="11" fill="#B8B0A0"/>
164
+ <rect x="27" y="32" width="1" height="12" fill="#DAD5C8"/>
165
+ <rect x="31" y="33" width="1" height="11" fill="#B8B0A0"/>
166
+ <rect x="34" y="32" width="1" height="12" fill="#DAD5C8"/>
167
+ <!-- highlight strands (lighter wisps) -->
168
+ <rect x="15" y="31" width="1" height="3" fill="#FFFFFF"/>
169
+ <rect x="22" y="31" width="1" height="3" fill="#FFFFFF"/>
170
+ <rect x="29" y="31" width="1" height="3" fill="#FFFFFF"/>
171
+
172
+ <!-- ═══ NECK STUB · skin showing under beard at the very bottom ═══ -->
173
+ <rect x="20" y="46" width="8" height="3" fill="#F2B585"/>
174
+ <rect x="20" y="46" width="8" height="1" fill="#A8704A"/>
175
+ <rect x="20" y="46" width="1" height="3" fill="#A8704A"/>
176
+ <rect x="27" y="46" width="1" height="3" fill="#A8704A"/>
177
+ <!-- neck shadow -->
178
+ <rect x="21" y="48" width="6" height="1" fill="#D69570"/>
179
+
180
+ <!-- sparkles -->
181
+ <rect x="2" y="14" width="1" height="1" fill="#FFFFFF"/>
182
+ <rect x="3" y="13" width="1" height="1" fill="#FFFFFF"/>
183
+ <rect x="44" y="15" width="1" height="1" fill="#FFFFFF"/>
184
+ <rect x="45" y="14" width="1" height="1" fill="#FFFFFF"/>
185
+ <rect x="1" y="22" width="1" height="1" fill="#FFFFFF" opacity="0.7"/>
186
+ <rect x="46" y="26" width="1" height="1" fill="#FFFFFF" opacity="0.7"/>
187
+ </svg>
@@ -0,0 +1,117 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -4 48 56" shape-rendering="crispEdges">
2
+ <!-- 48×52 head-only · User Empathy · rounded face, auburn curls,
3
+ warm green eyes with lashes, big smile, neck stub.
4
+ skin #FFE5C5 · #FFCFA2 · #F2B585 · #D69570 · #A8704A · #5A3520
5
+ hair #F5904A · #E26336 · #D44820 · #A8482A · #8E2A12 · #5A1808
6
+ -->
7
+
8
+ <!-- ═══ AUBURN CURLY HAIR · top curl bumps ═══ -->
9
+ <rect x="11" y="2" width="3" height="1" fill="#5A1808"/>
10
+ <rect x="16" y="2" width="3" height="1" fill="#5A1808"/>
11
+ <rect x="22" y="2" width="3" height="1" fill="#5A1808"/>
12
+ <rect x="28" y="2" width="3" height="1" fill="#5A1808"/>
13
+ <rect x="33" y="2" width="3" height="1" fill="#5A1808"/>
14
+ <rect x="9" y="3" width="30" height="1" fill="#8E2A12"/>
15
+ <rect x="8" y="4" width="32" height="2" fill="#A8482A"/>
16
+ <rect x="7" y="6" width="34" height="3" fill="#D44820"/>
17
+ <rect x="7" y="9" width="34" height="2" fill="#E26336"/>
18
+ <!-- side curls flowing past head -->
19
+ <rect x="6" y="11" width="3" height="20" fill="#D44820"/>
20
+ <rect x="39" y="11" width="3" height="20" fill="#D44820"/>
21
+ <rect x="5" y="14" width="2" height="14" fill="#E26336"/>
22
+ <rect x="41" y="14" width="2" height="14" fill="#E26336"/>
23
+ <rect x="4" y="14" width="1" height="14" fill="#5A1808"/>
24
+ <rect x="43" y="14" width="1" height="14" fill="#5A1808"/>
25
+ <rect x="5" y="28" width="2" height="3" fill="#5A1808"/>
26
+ <rect x="41" y="28" width="2" height="3" fill="#5A1808"/>
27
+ <!-- curl bumps (texture along sides) -->
28
+ <rect x="5" y="17" width="1" height="2" fill="#F5904A"/>
29
+ <rect x="42" y="17" width="1" height="2" fill="#F5904A"/>
30
+ <rect x="5" y="22" width="1" height="2" fill="#F5904A"/>
31
+ <rect x="42" y="22" width="1" height="2" fill="#F5904A"/>
32
+ <!-- highlight strands -->
33
+ <rect x="13" y="5" width="3" height="1" fill="#F5904A"/>
34
+ <rect x="22" y="5" width="3" height="1" fill="#F5904A"/>
35
+ <rect x="32" y="5" width="3" height="1" fill="#F5904A"/>
36
+ <rect x="11" y="8" width="3" height="1" fill="#F5904A"/>
37
+
38
+ <!-- ═══ ROUNDED HEAD ═══ -->
39
+ <rect x="13" y="11" width="22" height="1" fill="#5A3520"/>
40
+ <rect x="11" y="12" width="2" height="1" fill="#5A3520"/>
41
+ <rect x="35" y="12" width="2" height="1" fill="#5A3520"/>
42
+ <rect x="9" y="13" width="2" height="1" fill="#5A3520"/>
43
+ <rect x="37" y="13" width="2" height="1" fill="#5A3520"/>
44
+ <rect x="8" y="14" width="1" height="16" fill="#5A3520"/>
45
+ <rect x="39" y="14" width="1" height="16" fill="#5A3520"/>
46
+ <rect x="9" y="30" width="2" height="1" fill="#5A3520"/>
47
+ <rect x="37" y="30" width="2" height="1" fill="#5A3520"/>
48
+ <rect x="11" y="31" width="2" height="1" fill="#5A3520"/>
49
+ <rect x="35" y="31" width="2" height="1" fill="#5A3520"/>
50
+ <rect x="13" y="32" width="22" height="1" fill="#5A3520"/>
51
+ <rect x="13" y="11" width="22" height="1" fill="#F2B585"/>
52
+ <rect x="11" y="12" width="26" height="1" fill="#F2B585"/>
53
+ <rect x="9" y="13" width="30" height="1" fill="#F2B585"/>
54
+ <rect x="9" y="14" width="30" height="16" fill="#F2B585"/>
55
+ <rect x="9" y="30" width="30" height="1" fill="#F2B585"/>
56
+ <rect x="11" y="31" width="26" height="1" fill="#F2B585"/>
57
+ <rect x="13" y="32" width="22" height="1" fill="#F2B585"/>
58
+ <rect x="13" y="12" width="22" height="2" fill="#FFCFA2"/>
59
+ <rect x="14" y="13" width="20" height="1" fill="#FFE5C5"/>
60
+ <rect x="11" y="22" width="4" height="3" fill="#F5A89A" opacity="0.85"/>
61
+ <rect x="33" y="22" width="4" height="3" fill="#F5A89A" opacity="0.85"/>
62
+ <rect x="11" y="27" width="26" height="2" fill="#D69570"/>
63
+ <rect x="13" y="29" width="22" height="2" fill="#A8704A"/>
64
+
65
+ <!-- SOFT EYEBROWS -->
66
+ <rect x="13" y="15" width="7" height="1" fill="#A8482A"/>
67
+ <rect x="28" y="15" width="7" height="1" fill="#A8482A"/>
68
+
69
+ <!-- ═══ EYES · warm green with lashes ═══ -->
70
+ <rect x="13" y="17" width="7" height="3" fill="#FFFFFF"/>
71
+ <rect x="28" y="17" width="7" height="3" fill="#FFFFFF"/>
72
+ <rect x="14" y="17" width="4" height="3" fill="#5A8A4D"/>
73
+ <rect x="29" y="17" width="4" height="3" fill="#5A8A4D"/>
74
+ <rect x="15" y="17" width="2" height="2" fill="#1F1F1F"/>
75
+ <rect x="30" y="17" width="2" height="2" fill="#1F1F1F"/>
76
+ <rect x="15" y="17" width="1" height="1" fill="#FFFFFF"/>
77
+ <rect x="30" y="17" width="1" height="1" fill="#FFFFFF"/>
78
+ <!-- LASHES -->
79
+ <rect x="12" y="16" width="1" height="1" fill="#5A2818"/>
80
+ <rect x="15" y="16" width="1" height="1" fill="#5A2818"/>
81
+ <rect x="18" y="16" width="1" height="1" fill="#5A2818"/>
82
+ <rect x="20" y="16" width="1" height="1" fill="#5A2818"/>
83
+ <rect x="27" y="16" width="1" height="1" fill="#5A2818"/>
84
+ <rect x="30" y="16" width="1" height="1" fill="#5A2818"/>
85
+ <rect x="33" y="16" width="1" height="1" fill="#5A2818"/>
86
+ <rect x="35" y="16" width="1" height="1" fill="#5A2818"/>
87
+ <rect x="13" y="20" width="7" height="1" fill="#A8704A"/>
88
+ <rect x="28" y="20" width="7" height="1" fill="#A8704A"/>
89
+
90
+ <!-- ═══ SMALL NOSE ═══ -->
91
+ <rect x="22" y="19" width="4" height="5" fill="#F2B585"/>
92
+ <rect x="22" y="19" width="1" height="5" fill="#FFCFA2"/>
93
+ <rect x="25" y="21" width="1" height="3" fill="#D69570"/>
94
+ <rect x="22" y="24" width="4" height="1" fill="#A8704A"/>
95
+
96
+ <!-- ═══ WARM SMILE ═══ -->
97
+ <rect x="14" y="25" width="1" height="1" fill="#A85040"/>
98
+ <rect x="33" y="25" width="1" height="1" fill="#A85040"/>
99
+ <rect x="15" y="26" width="18" height="1" fill="#A85040"/>
100
+ <rect x="16" y="27" width="16" height="1" fill="#D67F5C"/>
101
+ <rect x="22" y="26" width="4" height="1" fill="#FFFFFF"/>
102
+
103
+ <!-- ═══ NECK STUB ═══ -->
104
+ <rect x="19" y="33" width="10" height="6" fill="#F2B585"/>
105
+ <rect x="19" y="33" width="10" height="1" fill="#A8704A"/>
106
+ <rect x="19" y="33" width="1" height="6" fill="#A8704A"/>
107
+ <rect x="28" y="33" width="1" height="6" fill="#A8704A"/>
108
+ <rect x="20" y="34" width="8" height="1" fill="#FFCFA2"/>
109
+ <!-- collar shadow -->
110
+ <rect x="14" y="39" width="20" height="2" fill="#A8704A" opacity="0.6"/>
111
+ <rect x="13" y="41" width="22" height="3" fill="#5A3520" opacity="0.4"/>
112
+
113
+ <rect x="2" y="14" width="1" height="1" fill="#FFFFFF"/>
114
+ <rect x="44" y="15" width="1" height="1" fill="#FFFFFF"/>
115
+ <rect x="1" y="25" width="1" height="1" fill="#FFB0B8" opacity="0.7"/>
116
+ <rect x="46" y="28" width="1" height="1" fill="#FFB0B8" opacity="0.7"/>
117
+ </svg>
@@ -0,0 +1,117 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -4 48 56" shape-rendering="crispEdges">
2
+ <!-- 48×52 head-only · Value Investor · rounded face, salt-and-pepper hair,
3
+ tortoise-shell glasses, knowing eyes, neck stub.
4
+ skin #F2C8A2 · #E8B084 · #D69970 · #B58050 · #6E4830 · #3F2818
5
+ hair #FFFFFF · #C8C5BE · #9C9890 · #6E665F · #3A3A3A · #1A1A1A
6
+ glass #5A3825 · #3F2A1F · #2A1A12 · highlight #A88566
7
+ -->
8
+
9
+ <!-- ═══ HAIR · salt-and-pepper, neat side-parted ═══ -->
10
+ <rect x="11" y="3" width="26" height="1" fill="#1A1A1A"/>
11
+ <rect x="9" y="4" width="30" height="1" fill="#3A3A3A"/>
12
+ <rect x="9" y="5" width="30" height="1" fill="#6E665F"/>
13
+ <rect x="9" y="6" width="30" height="2" fill="#9C9890"/>
14
+ <rect x="9" y="8" width="30" height="2" fill="#C8C5BE"/>
15
+ <rect x="9" y="10" width="2" height="3" fill="#9C9890"/>
16
+ <rect x="37" y="10" width="2" height="3" fill="#9C9890"/>
17
+ <rect x="11" y="10" width="2" height="2" fill="#9C9890"/>
18
+ <rect x="35" y="10" width="2" height="2" fill="#9C9890"/>
19
+ <rect x="9" y="3" width="1" height="10" fill="#1A1A1A"/>
20
+ <rect x="38" y="3" width="1" height="10" fill="#1A1A1A"/>
21
+ <rect x="13" y="4" width="4" height="1" fill="#FFFFFF"/>
22
+ <rect x="22" y="4" width="5" height="1" fill="#FFFFFF"/>
23
+ <rect x="11" y="6" width="4" height="1" fill="#FFFFFF"/>
24
+ <rect x="32" y="5" width="3" height="1" fill="#FFFFFF"/>
25
+
26
+ <!-- ═══ ROUNDED HEAD ═══ -->
27
+ <rect x="13" y="10" width="22" height="1" fill="#3F2818"/>
28
+ <rect x="11" y="11" width="2" height="1" fill="#3F2818"/>
29
+ <rect x="35" y="11" width="2" height="1" fill="#3F2818"/>
30
+ <rect x="9" y="12" width="2" height="1" fill="#3F2818"/>
31
+ <rect x="37" y="12" width="2" height="1" fill="#3F2818"/>
32
+ <rect x="8" y="13" width="1" height="17" fill="#3F2818"/>
33
+ <rect x="39" y="13" width="1" height="17" fill="#3F2818"/>
34
+ <rect x="9" y="30" width="2" height="1" fill="#3F2818"/>
35
+ <rect x="37" y="30" width="2" height="1" fill="#3F2818"/>
36
+ <rect x="11" y="31" width="2" height="1" fill="#3F2818"/>
37
+ <rect x="35" y="31" width="2" height="1" fill="#3F2818"/>
38
+ <rect x="13" y="32" width="22" height="1" fill="#3F2818"/>
39
+ <rect x="13" y="10" width="22" height="1" fill="#D69970"/>
40
+ <rect x="11" y="11" width="26" height="1" fill="#D69970"/>
41
+ <rect x="9" y="12" width="30" height="1" fill="#D69970"/>
42
+ <rect x="9" y="13" width="30" height="17" fill="#D69970"/>
43
+ <rect x="9" y="30" width="30" height="1" fill="#D69970"/>
44
+ <rect x="11" y="31" width="26" height="1" fill="#D69970"/>
45
+ <rect x="13" y="32" width="22" height="1" fill="#D69970"/>
46
+ <rect x="13" y="11" width="22" height="2" fill="#E8B084"/>
47
+ <rect x="14" y="12" width="20" height="1" fill="#F2C8A2"/>
48
+ <rect x="13" y="14" width="22" height="1" fill="#B58050"/>
49
+ <rect x="9" y="18" width="2" height="9" fill="#6E4830"/>
50
+ <rect x="37" y="18" width="2" height="9" fill="#6E4830"/>
51
+ <rect x="11" y="27" width="26" height="2" fill="#B58050"/>
52
+ <rect x="13" y="29" width="22" height="2" fill="#6E4830"/>
53
+
54
+ <!-- KNOWING DARK BROWS -->
55
+ <rect x="13" y="14" width="9" height="1" fill="#1A1A1A"/>
56
+ <rect x="26" y="14" width="9" height="1" fill="#1A1A1A"/>
57
+ <rect x="13" y="15" width="3" height="1" fill="#3A3A3A"/>
58
+ <rect x="32" y="15" width="3" height="1" fill="#3A3A3A"/>
59
+
60
+ <!-- ═══ TORTOISE-SHELL GLASSES ═══ -->
61
+ <rect x="11" y="16" width="11" height="1" fill="#2A1A12"/>
62
+ <rect x="11" y="22" width="11" height="1" fill="#2A1A12"/>
63
+ <rect x="11" y="17" width="1" height="5" fill="#2A1A12"/>
64
+ <rect x="21" y="17" width="1" height="5" fill="#2A1A12"/>
65
+ <rect x="26" y="16" width="11" height="1" fill="#2A1A12"/>
66
+ <rect x="26" y="22" width="11" height="1" fill="#2A1A12"/>
67
+ <rect x="26" y="17" width="1" height="5" fill="#2A1A12"/>
68
+ <rect x="36" y="17" width="1" height="5" fill="#2A1A12"/>
69
+ <rect x="12" y="16" width="9" height="1" fill="#3F2A1F"/>
70
+ <rect x="27" y="16" width="9" height="1" fill="#3F2A1F"/>
71
+ <rect x="12" y="17" width="1" height="5" fill="#5A3825"/>
72
+ <rect x="20" y="17" width="1" height="5" fill="#5A3825"/>
73
+ <rect x="27" y="17" width="1" height="5" fill="#5A3825"/>
74
+ <rect x="35" y="17" width="1" height="5" fill="#5A3825"/>
75
+ <rect x="14" y="17" width="2" height="1" fill="#A88566"/>
76
+ <rect x="29" y="17" width="2" height="1" fill="#A88566"/>
77
+ <rect x="22" y="18" width="4" height="1" fill="#5A3825"/>
78
+ <rect x="9" y="18" width="2" height="1" fill="#2A1A12"/>
79
+ <rect x="37" y="18" width="2" height="1" fill="#2A1A12"/>
80
+ <rect x="14" y="18" width="6" height="3" fill="#FFFFFF"/>
81
+ <rect x="28" y="18" width="6" height="3" fill="#FFFFFF"/>
82
+ <rect x="15" y="19" width="3" height="2" fill="#1F1F1F"/>
83
+ <rect x="29" y="19" width="3" height="2" fill="#1F1F1F"/>
84
+ <rect x="16" y="19" width="1" height="1" fill="#FFFFFF"/>
85
+ <rect x="30" y="19" width="1" height="1" fill="#FFFFFF"/>
86
+ <rect x="13" y="22" width="9" height="1" fill="#A8704A" opacity="0.45"/>
87
+ <rect x="26" y="22" width="9" height="1" fill="#A8704A" opacity="0.45"/>
88
+
89
+ <!-- ═══ STRONG NOSE ═══ -->
90
+ <rect x="22" y="19" width="4" height="6" fill="#D69970"/>
91
+ <rect x="22" y="19" width="1" height="6" fill="#E8B084"/>
92
+ <rect x="22" y="19" width="1" height="3" fill="#F2C8A2"/>
93
+ <rect x="25" y="21" width="1" height="4" fill="#B58050"/>
94
+ <rect x="22" y="25" width="4" height="1" fill="#6E4830"/>
95
+ <rect x="21" y="25" width="1" height="1" fill="#6E4830"/>
96
+ <rect x="26" y="25" width="1" height="1" fill="#6E4830"/>
97
+
98
+ <!-- ═══ COMPOSED MOUTH (skeptical downturn) ═══ -->
99
+ <rect x="18" y="26" width="12" height="1" fill="#3F2818"/>
100
+ <rect x="17" y="27" width="1" height="1" fill="#3F2818"/>
101
+ <rect x="30" y="27" width="1" height="1" fill="#3F2818"/>
102
+
103
+ <!-- ═══ NECK STUB ═══ -->
104
+ <rect x="19" y="33" width="10" height="6" fill="#D69970"/>
105
+ <rect x="19" y="33" width="10" height="1" fill="#6E4830"/>
106
+ <rect x="19" y="33" width="1" height="6" fill="#6E4830"/>
107
+ <rect x="28" y="33" width="1" height="6" fill="#6E4830"/>
108
+ <rect x="20" y="34" width="8" height="1" fill="#E8B084"/>
109
+ <!-- collar shadow at bottom -->
110
+ <rect x="14" y="39" width="20" height="2" fill="#6E4830" opacity="0.5"/>
111
+ <rect x="13" y="41" width="22" height="3" fill="#3F2818" opacity="0.35"/>
112
+
113
+ <rect x="2" y="14" width="1" height="1" fill="#FFFFFF"/>
114
+ <rect x="44" y="15" width="1" height="1" fill="#FFFFFF"/>
115
+ <rect x="1" y="25" width="1" height="1" fill="#FFFFFF" opacity="0.7"/>
116
+ <rect x="46" y="28" width="1" height="1" fill="#FFFFFF" opacity="0.7"/>
117
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" shape-rendering="crispEdges">
2
+ <rect width="16" height="16" fill="#E8B547"/>
3
+ <rect x="3" y="2" width="2" height="2" fill="#0A0A0A"/>
4
+ <rect x="7" y="2" width="2" height="2" fill="#0A0A0A"/>
5
+ <rect x="11" y="2" width="2" height="2" fill="#0A0A0A"/>
6
+ <rect x="2" y="4" width="12" height="2" fill="#0A0A0A"/>
7
+ <rect x="1" y="7" width="14" height="2" fill="#0A0A0A"/>
8
+ <rect x="2" y="10" width="1" height="4" fill="#0A0A0A"/>
9
+ <rect x="13" y="10" width="1" height="4" fill="#0A0A0A"/>
10
+ </svg>
Binary file
Binary file
@@ -0,0 +1,103 @@
1
+ /* ═══════════════════════════════════════════
2
+ PIXEL-ART ICON LIBRARY
3
+ Chunky 8-bit silhouettes, solid fill.
4
+
5
+ Usage:
6
+ <i class="ic ic-settings"></i>
7
+ <i class="ic ic-pin lg"></i> (size variants: sm = 12, default = 16, lg = 20)
8
+ <span class="ic ic-rooms" style="color: var(--lime)"></span>
9
+
10
+ Color: inherits from parent's `color` via mask + currentColor.
11
+ All icons designed on a 16×16 grid, integer-pixel coordinates,
12
+ shape-rendering: crispEdges keeps them sharp at any scale.
13
+ ═══════════════════════════════════════════ */
14
+
15
+ .ic {
16
+ display: inline-block;
17
+ width: 16px;
18
+ height: 16px;
19
+ background-color: currentColor;
20
+ -webkit-mask: var(--icon, none) center / contain no-repeat;
21
+ mask: var(--icon, none) center / contain no-repeat;
22
+ vertical-align: -0.2em;
23
+ flex-shrink: 0;
24
+ pointer-events: none;
25
+ }
26
+ .ic.sm { width: 12px; height: 12px; }
27
+ .ic.lg { width: 20px; height: 20px; }
28
+ .ic.xl { width: 24px; height: 24px; }
29
+
30
+ /* Settings — three horizontal sliders with chunky knobs */
31
+ .ic-settings {
32
+ --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' shape-rendering='crispEdges'><rect y='3' width='16' height='2'/><rect x='1' y='1' width='3' height='6'/><rect y='7' width='16' height='2'/><rect x='10' y='5' width='3' height='6'/><rect y='11' width='16' height='2'/><rect x='6' y='9' width='3' height='6'/></svg>");
33
+ }
34
+
35
+ /* Collapse-right — chevron > pointing toward a vertical bar on the right */
36
+ .ic-collapse-right {
37
+ --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' shape-rendering='crispEdges'><rect x='13' width='2' height='16'/><rect x='4' y='3' width='2' height='2'/><rect x='5' y='4' width='2' height='2'/><rect x='6' y='5' width='2' height='2'/><rect x='7' y='6' width='2' height='4'/><rect x='6' y='9' width='2' height='2'/><rect x='5' y='10' width='2' height='2'/><rect x='4' y='11' width='2' height='2'/></svg>");
38
+ }
39
+
40
+ /* Expand-right — chevron < pointing away from a right-side bar */
41
+ .ic-expand-right {
42
+ --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' shape-rendering='crispEdges'><rect x='13' width='2' height='16'/><rect x='9' y='3' width='2' height='2'/><rect x='8' y='4' width='2' height='2'/><rect x='7' y='5' width='2' height='2'/><rect x='5' y='6' width='3' height='4'/><rect x='7' y='9' width='2' height='2'/><rect x='8' y='10' width='2' height='2'/><rect x='9' y='11' width='2' height='2'/></svg>");
43
+ }
44
+
45
+ /* Close (X) — two stepped diagonal strokes crossing */
46
+ .ic-close {
47
+ --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' shape-rendering='crispEdges'><rect x='2' y='2' width='2' height='2'/><rect x='3' y='3' width='2' height='2'/><rect x='4' y='4' width='2' height='2'/><rect x='5' y='5' width='2' height='2'/><rect x='6' y='6' width='2' height='2'/><rect x='7' y='7' width='2' height='2'/><rect x='8' y='8' width='2' height='2'/><rect x='9' y='9' width='2' height='2'/><rect x='10' y='10' width='2' height='2'/><rect x='11' y='11' width='2' height='2'/><rect x='12' y='12' width='2' height='2'/><rect x='12' y='2' width='2' height='2'/><rect x='11' y='3' width='2' height='2'/><rect x='10' y='4' width='2' height='2'/><rect x='9' y='5' width='2' height='2'/><rect x='7' y='7' width='2' height='2'/><rect x='6' y='8' width='2' height='2'/><rect x='5' y='9' width='2' height='2'/><rect x='4' y='10' width='2' height='2'/><rect x='3' y='11' width='2' height='2'/><rect x='2' y='12' width='2' height='2'/></svg>");
48
+ }
49
+
50
+ /* Plus — chunky cross */
51
+ .ic-plus {
52
+ --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' shape-rendering='crispEdges'><rect x='7' y='2' width='2' height='12'/><rect x='2' y='7' width='12' height='2'/></svg>");
53
+ }
54
+
55
+ /* Pin — push-pin from above (cap + flange + needle) */
56
+ .ic-pin {
57
+ --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' shape-rendering='crispEdges'><rect x='5' y='1' width='6' height='1'/><rect x='4' y='2' width='8' height='2'/><rect x='5' y='4' width='6' height='1'/><rect x='6' y='5' width='4' height='1'/><rect x='7' y='6' width='2' height='6'/><rect x='7' y='12' width='1' height='3'/></svg>");
58
+ }
59
+
60
+ /* Rooms — chat bubble with tail */
61
+ .ic-rooms {
62
+ --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' shape-rendering='crispEdges'><path fill-rule='evenodd' d='M1,1 h14 v9 h-14 z M3,3 h10 v5 h-10 z'/><polygon points='3,10 6,13 6,10'/></svg>");
63
+ }
64
+
65
+ /* Agents — pixel person silhouette */
66
+ .ic-agents {
67
+ --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' shape-rendering='crispEdges'><rect x='6' y='1' width='4' height='4'/><rect x='3' y='6' width='10' height='3'/><rect x='5' y='9' width='6' height='4'/><rect x='4' y='13' width='3' height='2'/><rect x='9' y='13' width='3' height='2'/></svg>");
68
+ }
69
+
70
+ /* Chevron-right — single chunky > */
71
+ .ic-chevron-right {
72
+ --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' shape-rendering='crispEdges'><rect x='5' y='3' width='2' height='2'/><rect x='6' y='4' width='2' height='2'/><rect x='7' y='5' width='2' height='2'/><rect x='8' y='6' width='2' height='4'/><rect x='7' y='9' width='2' height='2'/><rect x='6' y='10' width='2' height='2'/><rect x='5' y='11' width='2' height='2'/></svg>");
73
+ }
74
+
75
+ /* Chevron-down — single chunky v */
76
+ .ic-chevron-down {
77
+ --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' shape-rendering='crispEdges'><rect x='3' y='5' width='2' height='2'/><rect x='4' y='6' width='2' height='2'/><rect x='5' y='7' width='2' height='2'/><rect x='6' y='8' width='4' height='2'/><rect x='9' y='7' width='2' height='2'/><rect x='10' y='6' width='2' height='2'/><rect x='11' y='5' width='2' height='2'/></svg>");
78
+ }
79
+
80
+ /* Search — pixel magnifier with stepped handle */
81
+ .ic-search {
82
+ --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' shape-rendering='crispEdges'><path fill-rule='evenodd' d='M2,1 h6 v1 h1 v6 h-1 v1 h-6 v-1 h-1 v-6 h1 z M3,3 h4 v4 h-4 z'/><rect x='8' y='8' width='2' height='2'/><rect x='9' y='9' width='2' height='2'/><rect x='10' y='10' width='2' height='2'/><rect x='11' y='11' width='2' height='2'/><rect x='12' y='12' width='2' height='2'/></svg>");
83
+ }
84
+
85
+ /* Send — paper plane / arrow flying right */
86
+ .ic-send {
87
+ --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' shape-rendering='crispEdges'><polygon points='1,3 15,8 1,13 1,9 9,8 1,7'/></svg>");
88
+ }
89
+
90
+ /* Star — favorite */
91
+ .ic-star {
92
+ --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' shape-rendering='crispEdges'><polygon points='8,1 10,6 15,6 11,9 13,15 8,12 3,15 5,9 1,6 6,6'/></svg>");
93
+ }
94
+
95
+ /* Check — confirmation tick */
96
+ .ic-check {
97
+ --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' shape-rendering='crispEdges'><rect x='1' y='8' width='2' height='2'/><rect x='2' y='9' width='2' height='2'/><rect x='3' y='10' width='2' height='2'/><rect x='4' y='11' width='2' height='2'/><rect x='5' y='10' width='2' height='2'/><rect x='6' y='9' width='2' height='2'/><rect x='7' y='8' width='2' height='2'/><rect x='8' y='7' width='2' height='2'/><rect x='9' y='6' width='2' height='2'/><rect x='10' y='5' width='2' height='2'/><rect x='11' y='4' width='2' height='2'/><rect x='12' y='3' width='2' height='2'/></svg>");
98
+ }
99
+
100
+ /* Arrow-right — simple arrow with tail */
101
+ .ic-arrow-right {
102
+ --icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' shape-rendering='crispEdges'><rect x='1' y='7' width='11' height='2'/><rect x='9' y='4' width='2' height='2'/><rect x='10' y='5' width='2' height='2'/><rect x='11' y='6' width='2' height='4'/><rect x='10' y='9' width='2' height='2'/><rect x='9' y='10' width='2' height='2'/></svg>");
103
+ }