yakmesh 2.8.2 → 3.0.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 (232) hide show
  1. package/CHANGELOG.md +637 -0
  2. package/CONTRIBUTING.md +42 -0
  3. package/Caddyfile +77 -0
  4. package/README.md +119 -29
  5. package/adapters/adapter-mlv-bible/README.md +124 -0
  6. package/adapters/adapter-mlv-bible/index.js +400 -0
  7. package/adapters/chat-mod-adapter.js +532 -0
  8. package/adapters/content-adapter.js +273 -0
  9. package/content/api.js +50 -41
  10. package/content/index.js +2 -2
  11. package/content/store.js +355 -173
  12. package/dashboard/index.html +19 -3
  13. package/database/replication.js +117 -37
  14. package/docs/CRYPTO-AGILITY.md +204 -0
  15. package/docs/MTLS-RESEARCH.md +367 -0
  16. package/docs/NAMCHE-SPEC.md +681 -0
  17. package/docs/PEERQUANTA-YAKMESH-INTEGRATION.md +407 -0
  18. package/docs/PRECISION-DISCLOSURE.md +96 -0
  19. package/docs/README.md +76 -0
  20. package/docs/ROADMAP-2.4.0.md +447 -0
  21. package/docs/ROADMAP-2.5.0.md +244 -0
  22. package/docs/SECURITY-AUDIT-REPORT.md +306 -0
  23. package/docs/SST-INTEGRATION.md +712 -0
  24. package/docs/STEADYWATCH-IMPLEMENTATION.md +303 -0
  25. package/docs/TERNARY-AUDIT-REPORT.md +247 -0
  26. package/docs/TME-FAQ.md +221 -0
  27. package/docs/WHITEPAPER.md +623 -0
  28. package/docs/adapters.html +1001 -0
  29. package/docs/advanced-systems.html +1045 -0
  30. package/docs/annex.html +1046 -0
  31. package/docs/api.html +970 -0
  32. package/docs/business/response-templates.md +160 -0
  33. package/docs/c2c.html +1225 -0
  34. package/docs/cli.html +1332 -0
  35. package/docs/configuration.html +1248 -0
  36. package/docs/darshan.html +1085 -0
  37. package/docs/dharma.html +966 -0
  38. package/docs/docs-bundle.html +1075 -0
  39. package/docs/docs.css +3120 -0
  40. package/docs/docs.js +556 -0
  41. package/docs/doko.html +969 -0
  42. package/docs/geo-proof.html +858 -0
  43. package/docs/getting-started.html +840 -0
  44. package/docs/gumba-tutorial.html +1144 -0
  45. package/docs/gumba.html +1098 -0
  46. package/docs/index.html +914 -0
  47. package/docs/jhilke.html +1312 -0
  48. package/docs/karma.html +1100 -0
  49. package/docs/katha.html +1037 -0
  50. package/docs/lama.html +978 -0
  51. package/docs/mandala.html +1067 -0
  52. package/docs/mani.html +964 -0
  53. package/docs/mantra.html +967 -0
  54. package/docs/mesh.html +1409 -0
  55. package/docs/nakpak.html +869 -0
  56. package/docs/namche.html +928 -0
  57. package/docs/nav-order.json +53 -0
  58. package/docs/prahari.html +1043 -0
  59. package/docs/prism-bash.min.js +1 -0
  60. package/docs/prism-javascript.min.js +1 -0
  61. package/docs/prism-json.min.js +1 -0
  62. package/docs/prism-tomorrow.min.css +1 -0
  63. package/docs/prism.min.js +1 -0
  64. package/docs/privacy.html +699 -0
  65. package/docs/quick-reference.html +1181 -0
  66. package/docs/sakshi.html +1402 -0
  67. package/docs/sandboxing.md +386 -0
  68. package/docs/seva.html +911 -0
  69. package/docs/sherpa.html +871 -0
  70. package/docs/studio.html +860 -0
  71. package/docs/stupa.html +995 -0
  72. package/docs/tailwind.min.css +2 -0
  73. package/docs/tattva.html +1332 -0
  74. package/docs/terms.html +686 -0
  75. package/docs/time-server-deployment.md +166 -0
  76. package/docs/time-sources.html +1392 -0
  77. package/docs/tivra.html +1127 -0
  78. package/docs/trademark-policy.html +686 -0
  79. package/docs/tribhuj.html +1183 -0
  80. package/docs/trust-security.html +1029 -0
  81. package/docs/tutorials/backup-recovery.html +654 -0
  82. package/docs/tutorials/dashboard.html +604 -0
  83. package/docs/tutorials/domain-setup.html +605 -0
  84. package/docs/tutorials/host-website.html +456 -0
  85. package/docs/tutorials/mesh-network.html +505 -0
  86. package/docs/tutorials/mobile-access.html +445 -0
  87. package/docs/tutorials/privacy.html +467 -0
  88. package/docs/tutorials/raspberry-pi.html +600 -0
  89. package/docs/tutorials/security-basics.html +539 -0
  90. package/docs/tutorials/share-files.html +431 -0
  91. package/docs/tutorials/troubleshooting.html +637 -0
  92. package/docs/tutorials/trust-karma.html +419 -0
  93. package/docs/tutorials/yak-protocol.html +456 -0
  94. package/docs/tutorials.html +1034 -0
  95. package/docs/vani.html +1270 -0
  96. package/docs/webserver.html +809 -0
  97. package/docs/yak-protocol.html +940 -0
  98. package/docs/yak-timeserver-design.md +475 -0
  99. package/docs/yakapp.html +1015 -0
  100. package/docs/ypc27.html +1069 -0
  101. package/docs/yurt.html +1344 -0
  102. package/embedded-docs/bundle.js +334 -74
  103. package/gossip/protocol.js +247 -27
  104. package/identity/key-resolver.js +262 -0
  105. package/identity/machine-seed.js +632 -0
  106. package/identity/node-key.js +669 -368
  107. package/identity/tribhuj-ratchet.js +506 -0
  108. package/knowledge-base.js +37 -8
  109. package/launcher/yakmesh.bat +62 -0
  110. package/launcher/yakmesh.sh +70 -0
  111. package/mesh/annex.js +462 -108
  112. package/mesh/beacon-broadcast.js +113 -1
  113. package/mesh/darshan.js +1718 -0
  114. package/mesh/gumba.js +1567 -0
  115. package/mesh/jhilke.js +651 -0
  116. package/mesh/katha.js +1012 -0
  117. package/mesh/nakpak-routing.js +8 -5
  118. package/mesh/network.js +724 -34
  119. package/mesh/pulse-sync.js +4 -1
  120. package/mesh/rate-limiter.js +127 -15
  121. package/mesh/seva.js +526 -0
  122. package/mesh/sherpa-discovery.js +89 -8
  123. package/mesh/sybil-defense.js +19 -5
  124. package/mesh/temporal-encoder.js +4 -3
  125. package/mesh/vani.js +1364 -0
  126. package/mesh/yurt.js +1340 -0
  127. package/models/entropy-sentinel.onnx +0 -0
  128. package/models/karma-trust.onnx +0 -0
  129. package/models/manifest.json +43 -0
  130. package/models/sakshi-anomaly.onnx +0 -0
  131. package/oracle/code-proof-protocol.js +7 -6
  132. package/oracle/codebase-lock.js +257 -28
  133. package/oracle/index.js +74 -15
  134. package/oracle/ma902-snmp.js +678 -0
  135. package/oracle/module-sealer.js +5 -3
  136. package/oracle/network-identity.js +16 -0
  137. package/oracle/packet-checksum.js +201 -0
  138. package/oracle/sst.js +579 -0
  139. package/oracle/ternary-144t.js +714 -0
  140. package/oracle/ternary-ml.js +481 -0
  141. package/oracle/time-api.js +239 -0
  142. package/oracle/time-source.js +137 -47
  143. package/oracle/validation-oracle-hardened.js +1111 -1071
  144. package/oracle/validation-oracle.js +4 -2
  145. package/oracle/ypc27.js +211 -0
  146. package/package.json +20 -3
  147. package/protocol/yak-handler.js +35 -9
  148. package/protocol/yak-protocol.js +28 -13
  149. package/reference/cpp/yakmesh_mceliece_shard.cpp +168 -0
  150. package/reference/cpp/yakmesh_ypc27.cpp +179 -0
  151. package/sbom.json +87 -0
  152. package/scripts/security-audit.mjs +264 -0
  153. package/scripts/update-docs-nav.js +194 -0
  154. package/scripts/update-docs-sidebar.cjs +164 -0
  155. package/security/crypto-config.js +4 -3
  156. package/security/dharma-moderation.js +517 -0
  157. package/security/doko-identity.js +193 -143
  158. package/security/domain-consensus.js +86 -85
  159. package/security/fs-hardening.js +620 -0
  160. package/security/hardware-attestation.js +5 -3
  161. package/security/hybrid-trust.js +227 -87
  162. package/security/karma-rate-limiter.js +692 -0
  163. package/security/khata-protocol.js +22 -21
  164. package/security/khata-trust-integration.js +277 -150
  165. package/security/memory-safety.js +635 -0
  166. package/security/mesh-auth.js +11 -10
  167. package/security/mesh-revocation.js +373 -5
  168. package/security/namche-gateway.js +298 -69
  169. package/security/sakshi.js +460 -3
  170. package/security/sangha.js +770 -0
  171. package/security/secure-config.js +473 -0
  172. package/security/silicon-parity.js +13 -10
  173. package/security/steadywatch.js +1142 -0
  174. package/security/strike-system.js +32 -3
  175. package/security/temporal-signing.js +488 -0
  176. package/security/trit-commitment.js +464 -0
  177. package/server/crypto/annex.js +247 -0
  178. package/server/darshan-api.js +343 -0
  179. package/server/index.js +3259 -362
  180. package/server/komm-api.js +668 -0
  181. package/utils/accel.js +2273 -0
  182. package/utils/ternary-id.js +79 -0
  183. package/utils/verify-worker.js +57 -0
  184. package/webserver/index.js +95 -5
  185. package/assets/yakmesh-logo.png +0 -0
  186. package/assets/yakmesh-logo.svg +0 -80
  187. package/assets/yakmesh-logo2.png +0 -0
  188. package/assets/yakmesh-logo2sm.png +0 -0
  189. package/assets/ymsm.png +0 -0
  190. package/website/assets/silhouettes/adapters.svg +0 -107
  191. package/website/assets/silhouettes/api-endpoints.svg +0 -115
  192. package/website/assets/silhouettes/atomic-clock.svg +0 -83
  193. package/website/assets/silhouettes/base-camp.svg +0 -81
  194. package/website/assets/silhouettes/bridge.svg +0 -69
  195. package/website/assets/silhouettes/docs-bundle.svg +0 -113
  196. package/website/assets/silhouettes/doko-basket.svg +0 -70
  197. package/website/assets/silhouettes/fortress.svg +0 -93
  198. package/website/assets/silhouettes/gateway.svg +0 -54
  199. package/website/assets/silhouettes/gears.svg +0 -93
  200. package/website/assets/silhouettes/globe-satellite.svg +0 -67
  201. package/website/assets/silhouettes/karma-wheel.svg +0 -137
  202. package/website/assets/silhouettes/lama-council.svg +0 -141
  203. package/website/assets/silhouettes/mandala-network.svg +0 -169
  204. package/website/assets/silhouettes/mani-stones.svg +0 -149
  205. package/website/assets/silhouettes/mantra-wheel.svg +0 -116
  206. package/website/assets/silhouettes/mesh-nodes.svg +0 -113
  207. package/website/assets/silhouettes/nakpak.svg +0 -56
  208. package/website/assets/silhouettes/peak-lightning.svg +0 -73
  209. package/website/assets/silhouettes/sherpa.svg +0 -69
  210. package/website/assets/silhouettes/stupa-tower.svg +0 -119
  211. package/website/assets/silhouettes/tattva-eye.svg +0 -78
  212. package/website/assets/silhouettes/terminal.svg +0 -74
  213. package/website/assets/silhouettes/webserver.svg +0 -145
  214. package/website/assets/silhouettes/yak.svg +0 -78
  215. package/website/assets/yakmesh-logo.png +0 -0
  216. package/website/assets/yakmesh-logo.webp +0 -0
  217. package/website/assets/yakmesh-logo128x140.webp +0 -0
  218. package/website/assets/yakmesh-logo2.png +0 -0
  219. package/website/assets/yakmesh-logo2.svg +0 -51
  220. package/website/assets/yakmesh-logo40x44.webp +0 -0
  221. package/website/assets/yakmesh.gif +0 -0
  222. package/website/assets/yakmesh.ico +0 -0
  223. package/website/assets/yakmesh.jpg +0 -0
  224. package/website/assets/yakmesh.pdf +0 -0
  225. package/website/assets/yakmesh.png +0 -0
  226. package/website/assets/yakmesh.svg +0 -70
  227. package/website/assets/yakmesh128.webp +0 -0
  228. package/website/assets/yakmesh32.png +0 -0
  229. package/website/assets/yakmesh32.svg +0 -65
  230. package/website/assets/yakmesh32o.ico +0 -2
  231. package/website/assets/yakmesh32o.svg +0 -65
  232. package/website/assets/yakmesh32o.svgz +0 -0
package/docs/docs.css ADDED
@@ -0,0 +1,3120 @@
1
+ /**
2
+ * YAKMESH Documentation - Shared Styles & Theme System
3
+ *
4
+ * The Himalayan Journey Documentation Theme
5
+ * Each module represents a waypoint on the trek to post-quantum enlightenment.
6
+ */
7
+
8
+ /* ============================================
9
+ BASE STYLES
10
+ ============================================ */
11
+
12
+ :root {
13
+ /* Mountain Base Colors */
14
+ --mountain-100: #f1f5f9;
15
+ --mountain-200: #e2e8f0;
16
+ --mountain-300: #88b4a6;
17
+ --mountain-400: #6a9a8a;
18
+ --mountain-700: #2e4c43;
19
+ --mountain-800: #1f332d;
20
+ --mountain-900: #101a16;
21
+
22
+ /* Default Yakmesh Green */
23
+ --yakmesh-400: #10b981;
24
+ --yakmesh-500: #059669;
25
+ --yakmesh-600: #047857;
26
+ --yakmesh-700: #065f46;
27
+ --yakmesh-900: #022c22;
28
+
29
+ /* Sidebar */
30
+ --sidebar-width: 16rem;
31
+ }
32
+
33
+ /* Background on html so body::after silhouettes render above it */
34
+ html {
35
+ background-color: var(--mountain-900);
36
+ }
37
+
38
+ /* ============================================
39
+ SKIP-LINK — keyboard / screen reader a11y
40
+ Hidden until focused, then overlays top-left.
41
+ ============================================ */
42
+
43
+ .skip-link {
44
+ position: absolute;
45
+ top: -100%;
46
+ left: 0;
47
+ z-index: 9999;
48
+ padding: 0.75rem 1.5rem;
49
+ background: var(--theme-accent, #60a5fa);
50
+ color: #fff;
51
+ font-weight: 600;
52
+ font-size: 0.95rem;
53
+ text-decoration: none;
54
+ border-radius: 0 0 0.5rem 0;
55
+ transition: top 0.2s;
56
+ }
57
+
58
+ .skip-link:focus {
59
+ top: 0;
60
+ outline: 2px solid #fff;
61
+ outline-offset: 2px;
62
+ }
63
+
64
+ body {
65
+ font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
66
+ background: transparent;
67
+ color: #fff;
68
+ min-height: 100vh;
69
+ position: relative;
70
+ z-index: 0;
71
+ /* Create stacking context so body::after (-1) renders above html bg */
72
+ }
73
+
74
+ /* Override utility class on body to keep it transparent */
75
+ body.bg-mountain-900 {
76
+ background: transparent;
77
+ }
78
+
79
+ /* ============================================
80
+ THEMED SILHOUETTE BACKGROUNDS
81
+ Grand atmospheric scenes filling the viewport
82
+ ============================================ */
83
+
84
+ /* Base silhouette styling - aligned to content area (not behind sidebar) */
85
+ body::after {
86
+ content: '';
87
+ position: fixed;
88
+ top: 0;
89
+ left: var(--sidebar-width);
90
+ right: 0;
91
+ bottom: 0;
92
+ height: 100vh;
93
+ background-repeat: no-repeat;
94
+ background-position: center bottom;
95
+ background-size: cover;
96
+ pointer-events: none;
97
+ z-index: -1;
98
+ opacity: 0.85;
99
+ }
100
+
101
+ /* Collapsed sidebar: narrow inset */
102
+ body.sidebar-narrow::after {
103
+ left: var(--sidebar-collapsed-width);
104
+ }
105
+
106
+ /* Getting Started - Base Camp with tents */
107
+ [data-theme="getting-started"] body::after {
108
+ background-image: url('assets/silhouettes/base-camp.svg');
109
+ }
110
+
111
+ /* NAMCHE Gateway - Stone arch */
112
+ [data-theme="namche"] body::after {
113
+ background-image: url('assets/silhouettes/gateway.svg');
114
+ }
115
+
116
+ /* DOKO Identity - Woven basket */
117
+ [data-theme="doko"] body::after {
118
+ background-image: url('assets/silhouettes/doko-basket.svg');
119
+ }
120
+
121
+ /* SHERPA Discovery - Mountain guide */
122
+ [data-theme="sherpa"] body::after {
123
+ background-image: url('assets/silhouettes/sherpa.svg');
124
+ }
125
+
126
+ /* NAKPAK Routing - Layered backpack */
127
+ [data-theme="nakpak"] body::after {
128
+ background-image: url('assets/silhouettes/nakpak.svg');
129
+ }
130
+
131
+ /* ANNEX P2P - Rope bridge */
132
+ [data-theme="annex"] body::after {
133
+ background-image: url('assets/silhouettes/bridge.svg');
134
+ }
135
+
136
+ /* JHILKE - Cricket in Himalayan night meadow */
137
+ [data-theme="jhilke"] body::after {
138
+ background-image: url('assets/silhouettes/jhilke-cricket.svg');
139
+ }
140
+
141
+ /* YAK Protocol - The yak */
142
+ [data-theme="yak-protocol"] body::after {
143
+ background-image: url('assets/silhouettes/yak.svg');
144
+ }
145
+
146
+ /* Geographic Proof - Globe with satellites */
147
+ [data-theme="geo-proof"] body::after {
148
+ background-image: url('assets/silhouettes/globe-satellite.svg');
149
+ }
150
+
151
+ /* Trust & Security - Fortress */
152
+ [data-theme="trust-security"] body::after {
153
+ background-image: url('assets/silhouettes/fortress.svg');
154
+ }
155
+
156
+ /* Advanced Systems - Peak with lightning */
157
+ [data-theme="advanced-systems"] body::after {
158
+ background-image: url('assets/silhouettes/peak-lightning.svg');
159
+ }
160
+
161
+ /* CLI Commands - Terminal */
162
+ [data-theme="cli"] body::after {
163
+ background-image: url('assets/silhouettes/terminal.svg');
164
+ }
165
+
166
+ /* Time Sources - Atomic clock */
167
+ [data-theme="time-sources"] body::after {
168
+ background-image: url('assets/silhouettes/atomic-clock.svg');
169
+ }
170
+
171
+ /* TATTVA System - All-seeing truth */
172
+ [data-theme="tattva"] body::after {
173
+ background-image: url('assets/silhouettes/tattva-eye.svg');
174
+ }
175
+
176
+ /* Mesh Network - Interconnected nodes */
177
+ [data-theme="mesh"] body::after {
178
+ background-image: url('assets/silhouettes/mesh-nodes.svg');
179
+ }
180
+
181
+ /* Configuration - Gears */
182
+ [data-theme="configuration"] body::after {
183
+ background-image: url('assets/silhouettes/gears.svg');
184
+ }
185
+
186
+ /* Adapters - Puzzle pieces */
187
+ [data-theme="adapters"] body::after {
188
+ background-image: url('assets/silhouettes/adapters.svg');
189
+ }
190
+
191
+ /* Web Server - Globe and server */
192
+ [data-theme="webserver"] body::after {
193
+ background-image: url('assets/silhouettes/webserver.svg');
194
+ }
195
+
196
+ /* API Reference - Endpoints */
197
+ [data-theme="api"] body::after {
198
+ background-image: url('assets/silhouettes/api-endpoints.svg');
199
+ }
200
+
201
+ /* MANTRA Protocol - Prayer wheel spreading messages */
202
+ [data-theme="mantra"] body::after {
203
+ background-image: url('assets/silhouettes/mantra-wheel.svg');
204
+ }
205
+
206
+ /* STUPA Broadcast - Sacred tower broadcasting signals */
207
+ [data-theme="stupa"] body::after {
208
+ background-image: url('assets/silhouettes/stupa-tower.svg');
209
+ }
210
+
211
+ /* Index/Overview - Base camp (default) */
212
+ [data-theme="index"] body::after {
213
+ background-image: url('assets/silhouettes/base-camp.svg');
214
+ }
215
+
216
+ /* TRIBHUJ - Three peaks (balanced ternary) */
217
+ [data-theme="tribhuj"] body::after {
218
+ background-image: url('assets/silhouettes/three-peaks.svg');
219
+ }
220
+
221
+ /* YPC-27 - Prayer bead mala (27 trits) */
222
+ [data-theme="ypc27"] body::after {
223
+ background-image: url('assets/silhouettes/mala-beads.svg');
224
+ }
225
+
226
+ /* SAKSHI - All-seeing witness eye */
227
+ [data-theme="sakshi"] body::after {
228
+ background-image: url('assets/silhouettes/witness-eye.svg');
229
+ }
230
+
231
+ /* GUMBA - Monastery with role hierarchy gates */
232
+ [data-theme="gumba"] body::after {
233
+ background-image: url('assets/silhouettes/gumba-monastery.svg');
234
+ }
235
+
236
+ /* YURT - Nomadic tents representing room discovery */
237
+ [data-theme="yurt"] body::after {
238
+ background-image: url('assets/silhouettes/yurt-tents.svg');
239
+ }
240
+
241
+ /* KATHA - Storytelling scene with chat elements */
242
+ [data-theme="katha"] body::after {
243
+ background-image: url('assets/silhouettes/katha-storytelling.svg');
244
+ }
245
+
246
+ /* VANI - Voice/video calls with conch shell */
247
+ [data-theme="vani"] body::after {
248
+ background-image: url('assets/silhouettes/vani-voice.svg');
249
+ }
250
+
251
+ /* DARSHAN - Viewing eye (view-not-copy paradigm) */
252
+ [data-theme="darshan"] body::after {
253
+ background-image: url('assets/silhouettes/darshan-eye.svg');
254
+ }
255
+
256
+ /* TIVRA - Lightning bolt, swift hardware acceleration */
257
+ [data-theme="tivra"] body::after {
258
+ background-image: url('assets/silhouettes/tivra-lightning.svg');
259
+ }
260
+
261
+ /* PRAHARI - Sentinel at the pass, quantum entropy watchman */
262
+ [data-theme="prahari"] body::after {
263
+ background-image: url('assets/silhouettes/prahari-sentinel.svg');
264
+ }
265
+
266
+ /* DHARMA - Balance scales, righteous content moderation */
267
+ [data-theme="dharma"] body::after {
268
+ background-image: url('assets/silhouettes/dharma-scales.svg');
269
+ }
270
+
271
+ /* SEVA - Offering hands, selfless compute sharing */
272
+ [data-theme="seva"] body::after {
273
+ background-image: url('assets/silhouettes/seva-hands.svg');
274
+ }
275
+
276
+ /* YakApp - P2P chat messenger with yak mascot and chat bubbles */
277
+ [data-theme="yakapp"] body::after {
278
+ background-image: url('assets/silhouettes/yakapp-chat.svg');
279
+ }
280
+
281
+ /* C2C - Core to Cosmos, space strategy with rocket and planet */
282
+ [data-theme="c2c"] body::after {
283
+ background-image: url('assets/silhouettes/c2c-cosmos.svg');
284
+ }
285
+
286
+ /* Studio - Creative modes with film reels and manga panels */
287
+ [data-theme="studio"] body::after {
288
+ background-image: url('assets/silhouettes/studio.svg');
289
+ }
290
+
291
+ /* THANGKA - Visual storytelling scroll with chat modes */
292
+ [data-theme="thangka"] body::after {
293
+ background-image: url('assets/silhouettes/thangka-scroll.svg');
294
+ }
295
+
296
+ /* Tutorials - Open book with numbered learning steps */
297
+ [data-theme="tutorials"] body::after {
298
+ background-image: url('assets/silhouettes/tutorials-book.svg');
299
+ }
300
+
301
+ /* Quick Reference - Clipboard with checklist */
302
+ [data-theme="reference"] body::after {
303
+ background-image: url('assets/silhouettes/reference-clipboard.svg');
304
+ }
305
+
306
+ code,
307
+ pre {
308
+ font-family: 'Cascadia Code', 'Fira Code', Consolas, monospace;
309
+ }
310
+
311
+ pre[class*="language-"] {
312
+ border-radius: 0.5rem;
313
+ }
314
+
315
+ /* ============================================
316
+ MODULE THEME COLORS
317
+ ============================================ */
318
+
319
+ /* Getting Started - Warm amber sunrise, beginning of journey */
320
+ [data-theme="getting-started"] {
321
+ --theme-primary: #f59e0b;
322
+ --theme-secondary: #d97706;
323
+ --theme-accent: #fbbf24;
324
+ --theme-bg: #451a03;
325
+ --theme-glow: rgba(245, 158, 11, 0.1);
326
+ }
327
+
328
+ /* NAMCHE Gateway - Gold/amber, ancient stone arches */
329
+ [data-theme="namche"] {
330
+ --theme-primary: #eab308;
331
+ --theme-secondary: #ca8a04;
332
+ --theme-accent: #fde047;
333
+ --theme-bg: #422006;
334
+ --theme-glow: rgba(234, 179, 8, 0.1);
335
+ }
336
+
337
+ /* DOKO Identity - Earth brown/tan, woven basket patterns */
338
+ [data-theme="doko"] {
339
+ --theme-primary: #a16207;
340
+ --theme-secondary: #854d0e;
341
+ --theme-accent: #fbbf24;
342
+ --theme-bg: #1c1917;
343
+ --theme-glow: rgba(161, 98, 7, 0.1);
344
+ }
345
+
346
+ /* SHERPA Discovery - Ice blue/cyan, mountain guide */
347
+ [data-theme="sherpa"] {
348
+ --theme-primary: #06b6d4;
349
+ --theme-secondary: #0891b2;
350
+ --theme-accent: #22d3ee;
351
+ --theme-bg: #083344;
352
+ --theme-glow: rgba(6, 182, 212, 0.1);
353
+ }
354
+
355
+ /* NAKPAK Routing - Deep purple/indigo, layered mystery */
356
+ [data-theme="nakpak"] {
357
+ --theme-primary: #8b5cf6;
358
+ --theme-secondary: #7c3aed;
359
+ --theme-accent: #a78bfa;
360
+ --theme-bg: #1e1b4b;
361
+ --theme-glow: rgba(139, 92, 246, 0.1);
362
+ }
363
+
364
+ /* ANNEX P2P - Bridge blue, connection across chasms */
365
+ [data-theme="annex"] {
366
+ --theme-primary: #3b82f6;
367
+ --theme-secondary: #2563eb;
368
+ --theme-accent: #60a5fa;
369
+ --theme-bg: #172554;
370
+ --theme-glow: rgba(59, 130, 246, 0.1);
371
+ }
372
+
373
+ /* JHILKE - Cricket green, night meadow steganography */
374
+ [data-theme="jhilke"] {
375
+ --theme-primary: #22c55e;
376
+ --theme-secondary: #16a34a;
377
+ --theme-accent: #4ade80;
378
+ --theme-bg: #052e16;
379
+ --theme-glow: rgba(34, 197, 94, 0.1);
380
+ }
381
+
382
+ /* YAK Protocol - Warm brown, the yak itself */
383
+ [data-theme="yak-protocol"] {
384
+ --theme-primary: #b45309;
385
+ --theme-secondary: #92400e;
386
+ --theme-accent: #f59e0b;
387
+ --theme-bg: #1c1917;
388
+ --theme-glow: rgba(180, 83, 9, 0.1);
389
+ }
390
+
391
+ /* Geographic Proof - Earth green, satellite/physics */
392
+ [data-theme="geo-proof"] {
393
+ --theme-primary: #10b981;
394
+ --theme-secondary: #059669;
395
+ --theme-accent: #34d399;
396
+ --theme-bg: #022c22;
397
+ --theme-glow: rgba(16, 185, 129, 0.1);
398
+ }
399
+
400
+ /* Trust & Security - Forest green/stone, fortress walls */
401
+ [data-theme="trust-security"] {
402
+ --theme-primary: #047857;
403
+ --theme-secondary: #065f46;
404
+ --theme-accent: #10b981;
405
+ --theme-bg: #022c22;
406
+ --theme-glow: rgba(4, 120, 87, 0.1);
407
+ }
408
+
409
+ /* Advanced Systems - Electric cyan/purple, peak tech */
410
+ [data-theme="advanced-systems"] {
411
+ --theme-primary: #06b6d4;
412
+ --theme-secondary: #8b5cf6;
413
+ --theme-accent: #22d3ee;
414
+ --theme-bg: #0f172a;
415
+ --theme-glow: rgba(6, 182, 212, 0.15);
416
+ }
417
+
418
+ /* API Reference - Neutral slate, clean technical */
419
+ [data-theme="api"] {
420
+ --theme-primary: #64748b;
421
+ --theme-secondary: #475569;
422
+ --theme-accent: #94a3b8;
423
+ --theme-bg: #0f172a;
424
+ --theme-glow: rgba(100, 116, 139, 0.1);
425
+ }
426
+
427
+ /* Adapters - Connector orange, puzzle pieces */
428
+ [data-theme="adapters"] {
429
+ --theme-primary: #f97316;
430
+ --theme-secondary: #ea580c;
431
+ --theme-accent: #fb923c;
432
+ --theme-bg: #431407;
433
+ --theme-glow: rgba(249, 115, 22, 0.1);
434
+ }
435
+
436
+ /* Web Server - Web blue */
437
+ [data-theme="webserver"] {
438
+ --theme-primary: #0ea5e9;
439
+ --theme-secondary: #0284c7;
440
+ --theme-accent: #38bdf8;
441
+ --theme-bg: #0c4a6e;
442
+ --theme-glow: rgba(14, 165, 233, 0.1);
443
+ }
444
+
445
+ /* CLI - Terminal green, command line */
446
+ [data-theme="cli"] {
447
+ --theme-primary: #22c55e;
448
+ --theme-secondary: #16a34a;
449
+ --theme-accent: #4ade80;
450
+ --theme-bg: #052e16;
451
+ --theme-glow: rgba(34, 197, 94, 0.1);
452
+ }
453
+
454
+ /* Time Sources - Precision gold, atomic clocks */
455
+ [data-theme="time-sources"] {
456
+ --theme-primary: #fbbf24;
457
+ --theme-secondary: #d97706;
458
+ --theme-accent: #fcd34d;
459
+ --theme-bg: #451a03;
460
+ --theme-glow: rgba(251, 191, 36, 0.1);
461
+ }
462
+
463
+ /* TATTVA - Deep violet, self-verifying truth */
464
+ [data-theme="tattva"] {
465
+ --theme-primary: #a855f7;
466
+ --theme-secondary: #9333ea;
467
+ --theme-accent: #c084fc;
468
+ --theme-bg: #2e1065;
469
+ --theme-glow: rgba(168, 85, 247, 0.1);
470
+ }
471
+
472
+ /* Mesh - Network cyan, interconnected web */
473
+ [data-theme="mesh"] {
474
+ --theme-primary: #14b8a6;
475
+ --theme-secondary: #0d9488;
476
+ --theme-accent: #2dd4bf;
477
+ --theme-bg: #042f2e;
478
+ --theme-glow: rgba(20, 184, 166, 0.1);
479
+ }
480
+
481
+ /* Configuration - Settings gray, config files */
482
+ [data-theme="configuration"] {
483
+ --theme-primary: #a1a1aa;
484
+ --theme-secondary: #71717a;
485
+ --theme-accent: #d4d4d8;
486
+ --theme-bg: #18181b;
487
+ --theme-glow: rgba(161, 161, 170, 0.1);
488
+ }
489
+
490
+ /* MANTRA - Saffron/gold, prayer wheels and sacred messages */
491
+ [data-theme="mantra"] {
492
+ --theme-primary: #f97316;
493
+ --theme-secondary: #ea580c;
494
+ --theme-accent: #fdba74;
495
+ --theme-bg: #431407;
496
+ --theme-glow: rgba(249, 115, 22, 0.15);
497
+ }
498
+
499
+ /* STUPA - Golden amber, sacred broadcasting towers */
500
+ [data-theme="stupa"] {
501
+ --theme-primary: #fbbf24;
502
+ --theme-secondary: #f59e0b;
503
+ --theme-accent: #fde68a;
504
+ --theme-bg: #451a03;
505
+ --theme-glow: rgba(251, 191, 36, 0.15);
506
+ }
507
+
508
+ /* LAMA - Deep purple/violet, wise teachers in contemplation */
509
+ [data-theme="lama"] {
510
+ --theme-primary: #a855f7;
511
+ --theme-secondary: #9333ea;
512
+ --theme-accent: #c084fc;
513
+ --theme-bg: #2e1065;
514
+ --theme-glow: rgba(168, 85, 247, 0.15);
515
+ }
516
+
517
+ [data-theme="lama"] body::after {
518
+ background-image: url('assets/silhouettes/lama-council.svg');
519
+ }
520
+
521
+ /* MANI - Gold/precision, sacred time-keeping stones */
522
+ [data-theme="mani"] {
523
+ --theme-primary: #eab308;
524
+ --theme-secondary: #ca8a04;
525
+ --theme-accent: #facc15;
526
+ --theme-bg: #422006;
527
+ --theme-glow: rgba(234, 179, 8, 0.15);
528
+ }
529
+
530
+ [data-theme="mani"] body::after {
531
+ background-image: url('assets/silhouettes/mani-stones.svg');
532
+ }
533
+
534
+ /* KARMA - Red/purple, cause and effect wheel */
535
+ [data-theme="karma"] {
536
+ --theme-primary: #e11d48;
537
+ --theme-secondary: #be123c;
538
+ --theme-accent: #fb7185;
539
+ --theme-bg: #4c0519;
540
+ --theme-glow: rgba(225, 29, 72, 0.15);
541
+ }
542
+
543
+ [data-theme="karma"] body::after {
544
+ background-image: url('assets/silhouettes/karma-wheel.svg');
545
+ }
546
+
547
+ /* MANDALA - Teal/cyan, sacred geometric network patterns */
548
+ [data-theme="mandala"] {
549
+ --theme-primary: #14b8a6;
550
+ --theme-secondary: #0d9488;
551
+ --theme-accent: #2dd4bf;
552
+ --theme-bg: #042f2e;
553
+ --theme-glow: rgba(20, 184, 166, 0.15);
554
+ }
555
+
556
+ [data-theme="mandala"] body::after {
557
+ background-image: url('assets/silhouettes/mandala-network.svg');
558
+ }
559
+
560
+ /* DOCS BUNDLE - Package amber/gold, bundled shipment */
561
+ [data-theme="docs-bundle"] {
562
+ --theme-primary: #f59e0b;
563
+ --theme-secondary: #d97706;
564
+ --theme-accent: #fbbf24;
565
+ --theme-bg: #451a03;
566
+ --theme-glow: rgba(245, 158, 11, 0.15);
567
+ }
568
+
569
+ [data-theme="docs-bundle"] body::after {
570
+ background-image: url('assets/silhouettes/docs-bundle.svg');
571
+ }
572
+
573
+ /* TIVRA - Cyan lightning, swift hardware acceleration */
574
+ [data-theme="tivra"] {
575
+ --theme-primary: #06b6d4;
576
+ --theme-secondary: #0891b2;
577
+ --theme-accent: #22d3ee;
578
+ --theme-bg: #083344;
579
+ --theme-glow: rgba(34, 211, 238, 0.15);
580
+ }
581
+
582
+ /* PRAHARI - Purple sentinel, quantum entropy watchman */
583
+ [data-theme="prahari"] {
584
+ --theme-primary: #7c3aed;
585
+ --theme-secondary: #6d28d9;
586
+ --theme-accent: #a78bfa;
587
+ --theme-bg: #1e1b4b;
588
+ --theme-glow: rgba(167, 139, 250, 0.15);
589
+ }
590
+
591
+ /* DHARMA - Amber scales, righteous content moderation */
592
+ [data-theme="dharma"] {
593
+ --theme-primary: #d97706;
594
+ --theme-secondary: #b45309;
595
+ --theme-accent: #fbbf24;
596
+ --theme-bg: #451a03;
597
+ --theme-glow: rgba(251, 191, 36, 0.15);
598
+ }
599
+
600
+ /* SEVA - Emerald hands, selfless compute sharing */
601
+ [data-theme="seva"] {
602
+ --theme-primary: #059669;
603
+ --theme-secondary: #047857;
604
+ --theme-accent: #34d399;
605
+ --theme-bg: #022c22;
606
+ --theme-glow: rgba(52, 211, 153, 0.15);
607
+ }
608
+
609
+ /* Documentation Index - Yakmesh green */
610
+ [data-theme="index"] {
611
+ --theme-primary: #10b981;
612
+ --theme-secondary: #059669;
613
+ --theme-accent: #34d399;
614
+ --theme-bg: #022c22;
615
+ --theme-glow: rgba(16, 185, 129, 0.1);
616
+ }
617
+
618
+ /* YakApp - Cyan/teal, P2P chat messenger */
619
+ [data-theme="yakapp"] {
620
+ --theme-primary: #0891b2;
621
+ --theme-secondary: #0e7490;
622
+ --theme-accent: #22d3ee;
623
+ --theme-bg: #0c1a22;
624
+ --theme-glow: rgba(34, 211, 238, 0.1);
625
+ }
626
+
627
+ /* C2C - Warm orange, space strategy game */
628
+ [data-theme="c2c"] {
629
+ --theme-primary: #ea580c;
630
+ --theme-secondary: #c2410c;
631
+ --theme-accent: #fb923c;
632
+ --theme-bg: #1a0f08;
633
+ --theme-glow: rgba(251, 146, 60, 0.1);
634
+ }
635
+
636
+ /* Studio - Pink/magenta, creative modes */
637
+ [data-theme="studio"] {
638
+ --theme-primary: #db2777;
639
+ --theme-secondary: #be185d;
640
+ --theme-accent: #f472b6;
641
+ --theme-bg: #1a1028;
642
+ --theme-glow: rgba(244, 114, 182, 0.1);
643
+ }
644
+
645
+ /* THANGKA - Purple/violet, visual storytelling scroll */
646
+ [data-theme="thangka"] {
647
+ --theme-primary: #8b5cf6;
648
+ --theme-secondary: #7c3aed;
649
+ --theme-accent: #a78bfa;
650
+ --theme-bg: #1e1b4b;
651
+ --theme-glow: rgba(167, 139, 250, 0.15);
652
+ }
653
+
654
+ /* Tutorials - Green, learning & guidance */
655
+ [data-theme="tutorials"] {
656
+ --theme-primary: #10b981;
657
+ --theme-secondary: #059669;
658
+ --theme-accent: #34d399;
659
+ --theme-bg: #022c22;
660
+ --theme-glow: rgba(16, 185, 129, 0.1);
661
+ }
662
+
663
+ /* Quick Reference - Amber, checklist & lookup */
664
+ [data-theme="reference"] {
665
+ --theme-primary: #f59e0b;
666
+ --theme-secondary: #d97706;
667
+ --theme-accent: #fbbf24;
668
+ --theme-bg: #451a03;
669
+ --theme-glow: rgba(245, 158, 11, 0.1);
670
+ }
671
+
672
+ /* GUMBA - Incense gold/warm amber, monastery hierarchy */
673
+ [data-theme="gumba"] {
674
+ --theme-primary: #d97706;
675
+ --theme-secondary: #b45309;
676
+ --theme-accent: #fbbf24;
677
+ --theme-bg: #451a03;
678
+ --theme-glow: rgba(251, 191, 36, 0.15);
679
+ }
680
+
681
+ /* YURT - Campfire orange/red, nomadic discovery */
682
+ [data-theme="yurt"] {
683
+ --theme-primary: #ea580c;
684
+ --theme-secondary: #c2410c;
685
+ --theme-accent: #fb923c;
686
+ --theme-bg: #431407;
687
+ --theme-glow: rgba(251, 146, 60, 0.15);
688
+ }
689
+
690
+ /* KATHA - Parchment gold, storytelling chat */
691
+ [data-theme="katha"] {
692
+ --theme-primary: #eab308;
693
+ --theme-secondary: #ca8a04;
694
+ --theme-accent: #facc15;
695
+ --theme-bg: #422006;
696
+ --theme-glow: rgba(250, 204, 21, 0.15);
697
+ }
698
+
699
+ /* VANI - Conch pink/coral, voice & video calls */
700
+ [data-theme="vani"] {
701
+ --theme-primary: #ec4899;
702
+ --theme-secondary: #db2777;
703
+ --theme-accent: #f472b6;
704
+ --theme-bg: #500724;
705
+ --theme-glow: rgba(244, 114, 182, 0.15);
706
+ }
707
+
708
+ /* DARSHAN - Lens violet, view-not-copy paradigm */
709
+ [data-theme="darshan"] {
710
+ --theme-primary: #a78bfa;
711
+ --theme-secondary: #8b5cf6;
712
+ --theme-accent: #c4b5fd;
713
+ --theme-bg: #1e1b4b;
714
+ --theme-glow: rgba(196, 181, 253, 0.15);
715
+ }
716
+
717
+ /* TRIBHUJ - Ternary teal, three-peak balanced */
718
+ [data-theme="tribhuj"] {
719
+ --theme-primary: #14b8a6;
720
+ --theme-secondary: #0d9488;
721
+ --theme-accent: #2dd4bf;
722
+ --theme-bg: #042f2e;
723
+ --theme-glow: rgba(45, 212, 191, 0.15);
724
+ }
725
+
726
+ /* YPC-27 - Matrix green, prayer bead mala encoding */
727
+ [data-theme="ypc27"] {
728
+ --theme-primary: #22c55e;
729
+ --theme-secondary: #16a34a;
730
+ --theme-accent: #4ade80;
731
+ --theme-bg: #052e16;
732
+ --theme-glow: rgba(74, 222, 128, 0.15);
733
+ }
734
+
735
+ /* SAKSHI - Witness silver/ice, all-seeing observer */
736
+ [data-theme="sakshi"] {
737
+ --theme-primary: #94a3b8;
738
+ --theme-secondary: #64748b;
739
+ --theme-accent: #cbd5e1;
740
+ --theme-bg: #0f172a;
741
+ --theme-glow: rgba(203, 213, 225, 0.15);
742
+ }
743
+
744
+ /* ============================================
745
+ SIDEBAR STYLES
746
+ ============================================ */
747
+
748
+ .docs-sidebar {
749
+ position: fixed;
750
+ left: 0;
751
+ top: 0;
752
+ width: var(--sidebar-width);
753
+ height: 100%;
754
+ background: var(--mountain-800);
755
+ border-right: 1px solid var(--mountain-700);
756
+ padding: 1.5rem;
757
+ overflow-y: auto;
758
+ overflow-x: hidden;
759
+ z-index: 50;
760
+ transition: width 0.3s ease, transform 0.3s ease;
761
+ scrollbar-width: thin;
762
+ scrollbar-color: var(--glacier-500) transparent;
763
+ }
764
+
765
+ .docs-sidebar::-webkit-scrollbar {
766
+ width: 4px;
767
+ }
768
+
769
+ .docs-sidebar::-webkit-scrollbar-track {
770
+ background: transparent;
771
+ }
772
+
773
+ .docs-sidebar::-webkit-scrollbar-thumb {
774
+ background: var(--glacier-600);
775
+ border-radius: 4px;
776
+ }
777
+
778
+ .docs-sidebar::-webkit-scrollbar-thumb:hover {
779
+ background: var(--glacier-500);
780
+ }
781
+
782
+ /* Dashboard Link - quick access from docs */
783
+ .sidebar-dashboard-link {
784
+ display: flex;
785
+ align-items: center;
786
+ justify-content: center;
787
+ gap: 0.5rem;
788
+ padding: 0.5rem 0.75rem;
789
+ margin-bottom: 1rem;
790
+ border-radius: 0.375rem;
791
+ background: linear-gradient(135deg, var(--yakmesh-600), var(--yakmesh-700));
792
+ color: #fff;
793
+ text-decoration: none;
794
+ font-weight: 500;
795
+ font-size: 0.875rem;
796
+ transition: background 0.15s, transform 0.15s;
797
+ border: 1px solid var(--yakmesh-500);
798
+ }
799
+
800
+ .sidebar-dashboard-link:hover {
801
+ background: linear-gradient(135deg, var(--yakmesh-500), var(--yakmesh-600));
802
+ transform: translateY(-1px);
803
+ }
804
+
805
+ .docs-sidebar.icon-only .sidebar-dashboard-link span:last-child {
806
+ display: none;
807
+ }
808
+
809
+ /* Sidebar Logo */
810
+ .sidebar-logo {
811
+ display: flex;
812
+ align-items: center;
813
+ gap: 0.75rem;
814
+ margin-bottom: 1.5rem;
815
+ text-decoration: none;
816
+ color: #fff;
817
+ font-weight: 600;
818
+ font-size: 1.25rem;
819
+ }
820
+
821
+ .sidebar-logo .logo-icon {
822
+ font-size: 1.5rem;
823
+ flex-shrink: 0;
824
+ }
825
+
826
+ .sidebar-logo .logo-text {
827
+ transition: opacity 0.2s ease, width 0.2s ease;
828
+ white-space: nowrap;
829
+ overflow: hidden;
830
+ }
831
+
832
+ /* Sidebar Navigation */
833
+ .sidebar-nav {
834
+ list-style: none;
835
+ padding: 0;
836
+ margin: 0;
837
+ display: flex;
838
+ flex-direction: column;
839
+ gap: 0.25rem;
840
+ }
841
+
842
+ .sidebar-nav li {
843
+ list-style: none;
844
+ }
845
+
846
+ .sidebar-nav li.sidebar-section {
847
+ padding: 0.75rem 0.75rem 0.25rem;
848
+ font-size: 0.6875rem;
849
+ text-transform: uppercase;
850
+ color: var(--mountain-500);
851
+ font-weight: 600;
852
+ letter-spacing: 0.05em;
853
+ border-top: 1px solid var(--mountain-700);
854
+ margin-top: 0.5rem;
855
+ pointer-events: none;
856
+ user-select: none;
857
+ }
858
+
859
+ .sidebar-nav li.sidebar-section:first-child {
860
+ border-top: none;
861
+ margin-top: 0;
862
+ padding-top: 0;
863
+ }
864
+
865
+ .sidebar-nav li.sidebar-section span {
866
+ display: flex;
867
+ align-items: center;
868
+ gap: 0.375rem;
869
+ }
870
+
871
+ .docs-sidebar.icon-only .sidebar-nav li.sidebar-section {
872
+ padding: 0.5rem 0;
873
+ text-align: center;
874
+ font-size: 0;
875
+ }
876
+
877
+ .docs-sidebar.icon-only .sidebar-nav li.sidebar-section span {
878
+ font-size: 0;
879
+ justify-content: center;
880
+ border-top: 1px solid var(--mountain-700);
881
+ padding-top: 0.5rem;
882
+ }
883
+
884
+ .sidebar-nav a {
885
+ display: flex;
886
+ align-items: center;
887
+ gap: 0.5rem;
888
+ padding: 0.5rem 0.75rem;
889
+ border-radius: 0.375rem;
890
+ color: var(--mountain-300);
891
+ text-decoration: none;
892
+ transition: background-color 0.15s, color 0.15s;
893
+ white-space: nowrap;
894
+ overflow: hidden;
895
+ }
896
+
897
+ .sidebar-nav a:hover {
898
+ background: var(--mountain-700);
899
+ color: #fff;
900
+ }
901
+
902
+ .sidebar-nav a.active {
903
+ background: rgba(16, 185, 129, 0.2);
904
+ color: #6ee7b7;
905
+ }
906
+
907
+ .docs-sidebar-logo {
908
+ display: flex;
909
+ align-items: center;
910
+ gap: 0.75rem;
911
+ margin-bottom: 2rem;
912
+ }
913
+
914
+ .docs-sidebar-logo img {
915
+ height: 4rem;
916
+ width: 4rem;
917
+ }
918
+
919
+ .docs-sidebar nav {
920
+ display: flex;
921
+ flex-direction: column;
922
+ gap: 1.5rem;
923
+ }
924
+
925
+ .docs-sidebar h3 {
926
+ font-size: 0.75rem;
927
+ text-transform: uppercase;
928
+ color: var(--mountain-400);
929
+ font-weight: 600;
930
+ margin-bottom: 0.5rem;
931
+ letter-spacing: 0.05em;
932
+ }
933
+
934
+ .docs-sidebar ul {
935
+ display: flex;
936
+ flex-direction: column;
937
+ gap: 0.25rem;
938
+ }
939
+
940
+ .docs-sidebar a {
941
+ display: block;
942
+ padding: 0.25rem 0.75rem;
943
+ border-radius: 0.375rem;
944
+ color: var(--mountain-300);
945
+ text-decoration: none;
946
+ transition: background-color 0.15s, color 0.15s;
947
+ }
948
+
949
+ .docs-sidebar a:hover {
950
+ background: var(--mountain-700);
951
+ color: #fff;
952
+ }
953
+
954
+ .docs-sidebar a.active {
955
+ background: rgba(16, 185, 129, 0.2);
956
+ color: #6ee7b7;
957
+ }
958
+
959
+ /* ============================================
960
+ SIDEBAR TOGGLE - Icon-only collapse
961
+ ============================================ */
962
+
963
+ .sidebar-toggle {
964
+ display: flex;
965
+ align-items: center;
966
+ justify-content: center;
967
+ position: fixed;
968
+ top: 4rem;
969
+ left: calc(var(--sidebar-width) - 1rem);
970
+ z-index: 110;
971
+ background: var(--mountain-700);
972
+ border: 1px solid var(--mountain-600);
973
+ border-radius: 0.5rem;
974
+ width: 2rem;
975
+ height: 2rem;
976
+ color: var(--mountain-300);
977
+ cursor: pointer;
978
+ transition: left 0.3s ease, background-color 0.15s;
979
+ }
980
+
981
+ .sidebar-toggle:hover {
982
+ background: var(--mountain-600);
983
+ color: #fff;
984
+ }
985
+
986
+ .sidebar-toggle svg {
987
+ width: 1rem;
988
+ height: 1rem;
989
+ transition: transform 0.3s ease;
990
+ }
991
+
992
+ /* ============================================
993
+ ICON-ONLY COLLAPSED MODE
994
+ ============================================ */
995
+
996
+ :root {
997
+ --sidebar-collapsed-width: 5rem;
998
+ }
999
+
1000
+ /* Collapsed sidebar state */
1001
+ .docs-sidebar.icon-only {
1002
+ width: var(--sidebar-collapsed-width);
1003
+ padding: 1rem 0.5rem;
1004
+ overflow-x: hidden;
1005
+ overflow-y: auto;
1006
+ }
1007
+
1008
+ .docs-sidebar.icon-only .sidebar-logo {
1009
+ justify-content: center;
1010
+ }
1011
+
1012
+ .docs-sidebar.icon-only .sidebar-logo .logo-text {
1013
+ display: none;
1014
+ }
1015
+
1016
+ .docs-sidebar.icon-only .sidebar-logo .logo-icon {
1017
+ font-size: 1.75rem;
1018
+ }
1019
+
1020
+ .docs-sidebar.icon-only .sidebar-nav a {
1021
+ display: flex;
1022
+ justify-content: center;
1023
+ align-items: center;
1024
+ padding: 0.75rem 0.5rem;
1025
+ }
1026
+
1027
+ /* Hide text in nav links when collapsed */
1028
+ .docs-sidebar.icon-only .sidebar-nav a span:last-child {
1029
+ display: none;
1030
+ }
1031
+
1032
+ /* Emoji icons in collapsed mode */
1033
+ .docs-sidebar.icon-only .sidebar-nav a span:first-child {
1034
+ font-size: 1.5rem;
1035
+ }
1036
+
1037
+ /* First span (emoji) styling - normal mode */
1038
+ .sidebar-nav a span:first-child {
1039
+ font-size: 1.1rem;
1040
+ flex-shrink: 0;
1041
+ }
1042
+
1043
+ /* Toggle button moves with sidebar */
1044
+ .docs-sidebar.icon-only~.sidebar-toggle,
1045
+ .sidebar-toggle.collapsed {
1046
+ left: calc(var(--sidebar-collapsed-width) - 1rem);
1047
+ }
1048
+
1049
+ .sidebar-toggle.collapsed svg {
1050
+ transform: rotate(180deg);
1051
+ }
1052
+
1053
+ /* Main content adjusts */
1054
+ .docs-main {
1055
+ transition: margin-left 0.3s ease;
1056
+ }
1057
+
1058
+ .docs-main.sidebar-collapsed {
1059
+ margin-left: var(--sidebar-collapsed-width);
1060
+ }
1061
+
1062
+ /* ============================================
1063
+ MAIN CONTENT
1064
+ ============================================ */
1065
+
1066
+ .docs-main {
1067
+ margin-left: var(--sidebar-width);
1068
+ padding: 2rem 3rem;
1069
+ min-height: 100vh;
1070
+ position: relative;
1071
+ z-index: 1;
1072
+ }
1073
+
1074
+ .docs-content {
1075
+ max-width: 56rem;
1076
+ margin: 0 auto;
1077
+ position: relative;
1078
+ z-index: 1;
1079
+ }
1080
+
1081
+ .docs-content h1 {
1082
+ font-size: 2.25rem;
1083
+ margin-bottom: 0.5rem;
1084
+ color: #fff;
1085
+ }
1086
+
1087
+ .docs-content .subtitle {
1088
+ font-size: 1.1rem;
1089
+ color: var(--mountain-300);
1090
+ margin-bottom: 2rem;
1091
+ }
1092
+
1093
+ .docs-content h2 {
1094
+ font-size: 1.5rem;
1095
+ margin-top: 2.5rem;
1096
+ margin-bottom: 1rem;
1097
+ color: var(--theme-accent, #6ee7b7);
1098
+ }
1099
+
1100
+ .docs-content h3 {
1101
+ font-size: 1.25rem;
1102
+ margin-top: 2rem;
1103
+ margin-bottom: 0.75rem;
1104
+ color: var(--theme-primary, #10b981);
1105
+ }
1106
+
1107
+ .docs-content p {
1108
+ line-height: 1.7;
1109
+ margin-bottom: 1rem;
1110
+ color: var(--mountain-200);
1111
+ }
1112
+
1113
+ .docs-content pre {
1114
+ background: var(--mountain-800);
1115
+ border: 1px solid var(--mountain-700);
1116
+ border-radius: 0.5rem;
1117
+ padding: 1rem;
1118
+ overflow-x: auto;
1119
+ margin: 1rem 0;
1120
+ }
1121
+
1122
+ .docs-content code {
1123
+ font-size: 0.875rem;
1124
+ color: var(--theme-accent, #6ee7b7);
1125
+ }
1126
+
1127
+ .docs-content pre code {
1128
+ color: var(--mountain-200);
1129
+ }
1130
+
1131
+ /* ============================================
1132
+ FOOTER
1133
+ ============================================ */
1134
+
1135
+ .docs-footer {
1136
+ margin-left: var(--sidebar-width);
1137
+ padding: 2rem 3rem;
1138
+ text-align: center;
1139
+ color: var(--mountain-400);
1140
+ border-top: 1px solid var(--mountain-700);
1141
+ transition: margin-left 0.3s ease;
1142
+ }
1143
+
1144
+ .docs-footer p {
1145
+ margin: 0;
1146
+ font-size: 0.875rem;
1147
+ }
1148
+
1149
+ /* Footer adjusts with collapsed sidebar */
1150
+ .sidebar-collapsed~.docs-footer,
1151
+ body:has(.docs-sidebar.icon-only) .docs-footer {
1152
+ margin-left: var(--sidebar-collapsed-width);
1153
+ }
1154
+
1155
+ /* ============================================
1156
+ RESPONSIVE / MOBILE
1157
+ ============================================ */
1158
+
1159
+ /* Narrow screens - hide sidebar, show hamburger menu */
1160
+ @media (max-width: 900px) {
1161
+
1162
+ /* Silhouette spans full viewport when sidebar is hidden */
1163
+ body::after {
1164
+ left: 0;
1165
+ }
1166
+
1167
+ .docs-sidebar {
1168
+ display: none !important;
1169
+ position: fixed;
1170
+ left: 0;
1171
+ top: 0;
1172
+ width: 280px;
1173
+ max-width: 85vw;
1174
+ height: 100%;
1175
+ padding: 1.5rem;
1176
+ z-index: 90;
1177
+ box-shadow: 4px 0 20px rgba(0, 0, 0, 0.3);
1178
+ transform: translateX(-100%);
1179
+ transition: transform 0.3s ease;
1180
+ }
1181
+
1182
+ .docs-sidebar.open {
1183
+ display: block !important;
1184
+ transform: translateX(0);
1185
+ }
1186
+
1187
+ /* Reset icon-only mode on mobile */
1188
+ .docs-sidebar.open.icon-only {
1189
+ width: 280px;
1190
+ max-width: 85vw;
1191
+ padding: 1.5rem;
1192
+ }
1193
+
1194
+ .docs-sidebar.open.icon-only .sidebar-logo .logo-text,
1195
+ .docs-sidebar.open.icon-only .sidebar-nav a span:last-child {
1196
+ display: inline !important;
1197
+ }
1198
+
1199
+ .docs-sidebar.open.icon-only .sidebar-nav a {
1200
+ justify-content: flex-start;
1201
+ padding: 0.5rem 0.75rem;
1202
+ }
1203
+
1204
+ .sidebar-toggle {
1205
+ display: flex !important;
1206
+ position: fixed;
1207
+ left: 0.75rem;
1208
+ top: 0.75rem;
1209
+ z-index: 100;
1210
+ background: var(--mountain-700);
1211
+ border: 1px solid var(--mountain-600);
1212
+ width: 2.5rem;
1213
+ height: 2.5rem;
1214
+ }
1215
+
1216
+ .sidebar-toggle svg {
1217
+ width: 1.25rem;
1218
+ height: 1.25rem;
1219
+ }
1220
+
1221
+ .sidebar-overlay {
1222
+ display: none;
1223
+ position: fixed;
1224
+ top: 0;
1225
+ left: 0;
1226
+ right: 0;
1227
+ bottom: 0;
1228
+ background: rgba(0, 0, 0, 0.5);
1229
+ z-index: 80;
1230
+ opacity: 0;
1231
+ transition: opacity 0.3s ease;
1232
+ }
1233
+
1234
+ .sidebar-overlay.open {
1235
+ display: block;
1236
+ opacity: 1;
1237
+ }
1238
+
1239
+ .docs-main {
1240
+ margin-left: 0 !important;
1241
+ padding: 1rem;
1242
+ padding-top: 4rem;
1243
+ }
1244
+
1245
+ .docs-footer {
1246
+ margin-left: 0 !important;
1247
+ }
1248
+
1249
+ /* Cards single column on mobile */
1250
+ .grid.md\\:grid-cols-2 {
1251
+ grid-template-columns: 1fr !important;
1252
+ }
1253
+
1254
+ .flex {
1255
+ flex-wrap: wrap;
1256
+ }
1257
+
1258
+ pre {
1259
+ padding: 0.75rem !important;
1260
+ font-size: 0.8rem;
1261
+ overflow-x: auto;
1262
+ }
1263
+
1264
+ /* Prevent body scroll when sidebar is open */
1265
+ body.sidebar-mobile-open {
1266
+ overflow: hidden;
1267
+ }
1268
+ }
1269
+
1270
+ /* ============================================
1271
+ THEME-AWARE ELEMENTS
1272
+ ============================================ */
1273
+
1274
+ .theme-badge {
1275
+ display: inline-block;
1276
+ font-size: 0.75rem;
1277
+ padding: 0.25rem 0.5rem;
1278
+ border-radius: 0.25rem;
1279
+ background: var(--theme-glow, rgba(16, 185, 129, 0.2));
1280
+ color: var(--theme-primary, #10b981);
1281
+ }
1282
+
1283
+ .theme-heading {
1284
+ color: var(--theme-primary, #10b981);
1285
+ }
1286
+
1287
+ .theme-link {
1288
+ color: var(--theme-primary, #10b981);
1289
+ text-decoration: none;
1290
+ }
1291
+
1292
+ .theme-link:hover {
1293
+ color: var(--theme-accent, #34d399);
1294
+ }
1295
+
1296
+ .theme-card {
1297
+ background: var(--mountain-800);
1298
+ border: 1px solid var(--theme-primary, var(--mountain-700));
1299
+ border-radius: 0.75rem;
1300
+ padding: 1.5rem;
1301
+ transition: border-color 0.15s;
1302
+ }
1303
+
1304
+ .theme-card:hover {
1305
+ border-color: var(--theme-accent, var(--mountain-400));
1306
+ }
1307
+
1308
+ .theme-callout {
1309
+ background: var(--theme-glow, rgba(16, 185, 129, 0.1));
1310
+ border: 1px solid var(--theme-primary, var(--mountain-700));
1311
+ border-radius: 0.75rem;
1312
+ padding: 1.5rem;
1313
+ }
1314
+
1315
+ /* ============================================
1316
+ STUPA PRIORITY TIERS
1317
+ ============================================ */
1318
+
1319
+ .priority-tiers {
1320
+ display: flex;
1321
+ flex-direction: column;
1322
+ gap: 0.75rem;
1323
+ margin: 1.5rem 0;
1324
+ }
1325
+
1326
+ .tier {
1327
+ display: flex;
1328
+ align-items: center;
1329
+ gap: 1rem;
1330
+ padding: 1rem 1.25rem;
1331
+ border-radius: 0.5rem;
1332
+ background: var(--mountain-800);
1333
+ border-left: 4px solid;
1334
+ }
1335
+
1336
+ .tier-header {
1337
+ display: flex;
1338
+ align-items: center;
1339
+ gap: 0.75rem;
1340
+ min-width: 140px;
1341
+ }
1342
+
1343
+ .tier-level {
1344
+ display: flex;
1345
+ align-items: center;
1346
+ justify-content: center;
1347
+ width: 2rem;
1348
+ height: 2rem;
1349
+ border-radius: 50%;
1350
+ font-weight: 700;
1351
+ font-size: 0.875rem;
1352
+ }
1353
+
1354
+ .tier h4 {
1355
+ margin: 0;
1356
+ font-size: 0.875rem;
1357
+ font-weight: 600;
1358
+ letter-spacing: 0.05em;
1359
+ }
1360
+
1361
+ .tier p {
1362
+ margin: 0;
1363
+ color: var(--mountain-300);
1364
+ font-size: 0.875rem;
1365
+ }
1366
+
1367
+ .tier-critical {
1368
+ border-left-color: #ef4444;
1369
+ background: rgba(239, 68, 68, 0.1);
1370
+ }
1371
+
1372
+ .tier-critical .tier-level {
1373
+ background: #ef4444;
1374
+ color: #fff;
1375
+ }
1376
+
1377
+ .tier-critical h4 {
1378
+ color: #f87171;
1379
+ }
1380
+
1381
+ .tier-flash {
1382
+ border-left-color: #f97316;
1383
+ background: rgba(249, 115, 22, 0.1);
1384
+ }
1385
+
1386
+ .tier-flash .tier-level {
1387
+ background: #f97316;
1388
+ color: #fff;
1389
+ }
1390
+
1391
+ .tier-flash h4 {
1392
+ color: #fb923c;
1393
+ }
1394
+
1395
+ .tier-immediate {
1396
+ border-left-color: #fbbf24;
1397
+ background: rgba(251, 191, 36, 0.1);
1398
+ }
1399
+
1400
+ .tier-immediate .tier-level {
1401
+ background: #fbbf24;
1402
+ color: #1a2a22;
1403
+ }
1404
+
1405
+ .tier-immediate h4 {
1406
+ color: #fcd34d;
1407
+ }
1408
+
1409
+ .tier-priority {
1410
+ border-left-color: #34d399;
1411
+ background: rgba(52, 211, 153, 0.1);
1412
+ }
1413
+
1414
+ .tier-priority .tier-level {
1415
+ background: #34d399;
1416
+ color: #1a2a22;
1417
+ }
1418
+
1419
+ .tier-priority h4 {
1420
+ color: #6ee7b7;
1421
+ }
1422
+
1423
+ .tier-routine {
1424
+ border-left-color: #60a5fa;
1425
+ background: rgba(96, 165, 250, 0.1);
1426
+ }
1427
+
1428
+ .tier-routine .tier-level {
1429
+ background: #60a5fa;
1430
+ color: #1a2a22;
1431
+ }
1432
+
1433
+ .tier-routine h4 {
1434
+ color: #93c5fd;
1435
+ }
1436
+
1437
+ /* Flow Diagram */
1438
+ .flow-diagram {
1439
+ display: flex;
1440
+ align-items: center;
1441
+ justify-content: center;
1442
+ gap: 0.5rem;
1443
+ margin: 2rem 0;
1444
+ flex-wrap: wrap;
1445
+ }
1446
+
1447
+ .flow-step {
1448
+ text-align: center;
1449
+ padding: 1rem;
1450
+ background: var(--mountain-800);
1451
+ border-radius: 0.75rem;
1452
+ border: 1px solid var(--mountain-700);
1453
+ min-width: 120px;
1454
+ }
1455
+
1456
+ .flow-icon {
1457
+ font-size: 2rem;
1458
+ margin-bottom: 0.5rem;
1459
+ }
1460
+
1461
+ .flow-label {
1462
+ font-weight: 600;
1463
+ color: var(--theme-primary, #fbbf24);
1464
+ margin-bottom: 0.25rem;
1465
+ }
1466
+
1467
+ .flow-step p {
1468
+ margin: 0;
1469
+ font-size: 0.75rem;
1470
+ color: var(--mountain-400);
1471
+ }
1472
+
1473
+ .flow-arrow {
1474
+ color: var(--mountain-500);
1475
+ font-size: 1.5rem;
1476
+ }
1477
+
1478
+ /* Security List */
1479
+ .security-list {
1480
+ list-style: none;
1481
+ padding: 0;
1482
+ }
1483
+
1484
+ .security-list li {
1485
+ padding: 0.75rem 0;
1486
+ border-bottom: 1px solid var(--mountain-700);
1487
+ color: var(--mountain-200);
1488
+ }
1489
+
1490
+ .security-list li:last-child {
1491
+ border-bottom: none;
1492
+ }
1493
+
1494
+ /* Integration Grid */
1495
+ .integration-grid {
1496
+ display: grid;
1497
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
1498
+ gap: 1rem;
1499
+ margin: 1.5rem 0;
1500
+ }
1501
+
1502
+ .integration-card {
1503
+ background: var(--mountain-800);
1504
+ border: 1px solid var(--mountain-700);
1505
+ border-radius: 0.75rem;
1506
+ padding: 1.25rem;
1507
+ }
1508
+
1509
+ .integration-card h4 {
1510
+ margin: 0 0 0.5rem 0;
1511
+ color: var(--theme-primary, #10b981);
1512
+ }
1513
+
1514
+ .integration-card p {
1515
+ margin: 0;
1516
+ font-size: 0.875rem;
1517
+ color: var(--mountain-300);
1518
+ }
1519
+
1520
+ /* API Table */
1521
+ .api-table {
1522
+ width: 100%;
1523
+ border-collapse: collapse;
1524
+ margin: 1rem 0;
1525
+ }
1526
+
1527
+ .api-table th,
1528
+ .api-table td {
1529
+ padding: 0.75rem;
1530
+ text-align: left;
1531
+ border-bottom: 1px solid var(--mountain-700);
1532
+ }
1533
+
1534
+ .api-table th {
1535
+ background: var(--mountain-800);
1536
+ color: var(--mountain-200);
1537
+ font-weight: 600;
1538
+ }
1539
+
1540
+ .api-table td {
1541
+ color: var(--mountain-300);
1542
+ }
1543
+
1544
+ .api-table code {
1545
+ background: var(--mountain-900);
1546
+ padding: 0.125rem 0.375rem;
1547
+ border-radius: 0.25rem;
1548
+ font-size: 0.875rem;
1549
+ }
1550
+
1551
+ /* ============================================
1552
+ LAMA DHARMIC STATES
1553
+ ============================================ */
1554
+
1555
+ .dharmic-states {
1556
+ display: flex;
1557
+ flex-direction: column;
1558
+ gap: 0.75rem;
1559
+ margin: 1.5rem 0;
1560
+ }
1561
+
1562
+ .state {
1563
+ display: flex;
1564
+ align-items: center;
1565
+ gap: 1rem;
1566
+ padding: 1rem 1.25rem;
1567
+ border-radius: 0.5rem;
1568
+ background: var(--mountain-800);
1569
+ border-left: 4px solid;
1570
+ }
1571
+
1572
+ .state-header {
1573
+ display: flex;
1574
+ align-items: center;
1575
+ gap: 0.75rem;
1576
+ min-width: 140px;
1577
+ }
1578
+
1579
+ .state-icon {
1580
+ font-size: 1.25rem;
1581
+ }
1582
+
1583
+ .state h4 {
1584
+ margin: 0;
1585
+ font-size: 0.875rem;
1586
+ font-weight: 600;
1587
+ letter-spacing: 0.05em;
1588
+ }
1589
+
1590
+ .state p {
1591
+ margin: 0;
1592
+ color: var(--mountain-300);
1593
+ font-size: 0.875rem;
1594
+ }
1595
+
1596
+ .state-pending {
1597
+ border-left-color: #6b7280;
1598
+ background: rgba(107, 114, 128, 0.1);
1599
+ }
1600
+
1601
+ .state-pending h4 {
1602
+ color: #9ca3af;
1603
+ }
1604
+
1605
+ .state-validated {
1606
+ border-left-color: #a855f7;
1607
+ background: rgba(168, 85, 247, 0.1);
1608
+ }
1609
+
1610
+ .state-validated h4 {
1611
+ color: #c084fc;
1612
+ }
1613
+
1614
+ .state-consensus {
1615
+ border-left-color: #10b981;
1616
+ background: rgba(16, 185, 129, 0.1);
1617
+ }
1618
+
1619
+ .state-consensus h4 {
1620
+ color: #34d399;
1621
+ }
1622
+
1623
+ .state-rejected {
1624
+ border-left-color: #ef4444;
1625
+ background: rgba(239, 68, 68, 0.1);
1626
+ }
1627
+
1628
+ .state-rejected h4 {
1629
+ color: #f87171;
1630
+ }
1631
+
1632
+ .state-conflict {
1633
+ border-left-color: #f59e0b;
1634
+ background: rgba(245, 158, 11, 0.1);
1635
+ }
1636
+
1637
+ .state-conflict h4 {
1638
+ color: #fbbf24;
1639
+ }
1640
+
1641
+ /* Conflict Flow */
1642
+ .conflict-flow {
1643
+ display: flex;
1644
+ align-items: center;
1645
+ justify-content: center;
1646
+ gap: 0.5rem;
1647
+ margin: 2rem 0;
1648
+ flex-wrap: wrap;
1649
+ }
1650
+
1651
+ .conflict-step {
1652
+ text-align: center;
1653
+ padding: 1rem;
1654
+ background: var(--mountain-800);
1655
+ border-radius: 0.75rem;
1656
+ border: 1px solid var(--mountain-700);
1657
+ min-width: 140px;
1658
+ max-width: 180px;
1659
+ }
1660
+
1661
+ .conflict-step h4 {
1662
+ margin: 0 0 0.5rem 0;
1663
+ color: var(--theme-primary, #a855f7);
1664
+ }
1665
+
1666
+ .conflict-step p {
1667
+ margin: 0;
1668
+ font-size: 0.75rem;
1669
+ color: var(--mountain-400);
1670
+ }
1671
+
1672
+ .conflict-arrow {
1673
+ color: var(--mountain-500);
1674
+ font-size: 1.5rem;
1675
+ }
1676
+
1677
+ /* ============================================
1678
+ MANI TRUST LEVELS
1679
+ ============================================ */
1680
+
1681
+ .trust-levels {
1682
+ display: flex;
1683
+ flex-direction: column;
1684
+ gap: 0.75rem;
1685
+ margin: 1.5rem 0;
1686
+ }
1687
+
1688
+ .trust-level {
1689
+ display: flex;
1690
+ align-items: center;
1691
+ gap: 1rem;
1692
+ padding: 1rem 1.25rem;
1693
+ border-radius: 0.5rem;
1694
+ background: var(--mountain-800);
1695
+ border-left: 4px solid;
1696
+ }
1697
+
1698
+ .level-header {
1699
+ display: flex;
1700
+ align-items: center;
1701
+ gap: 0.75rem;
1702
+ min-width: 180px;
1703
+ }
1704
+
1705
+ .level-icon {
1706
+ font-size: 1.25rem;
1707
+ }
1708
+
1709
+ .trust-level h4 {
1710
+ margin: 0;
1711
+ font-size: 0.875rem;
1712
+ font-weight: 600;
1713
+ letter-spacing: 0.05em;
1714
+ flex: 1;
1715
+ }
1716
+
1717
+ .level-tolerance {
1718
+ font-size: 0.75rem;
1719
+ font-family: monospace;
1720
+ padding: 0.125rem 0.375rem;
1721
+ background: var(--mountain-900);
1722
+ border-radius: 0.25rem;
1723
+ }
1724
+
1725
+ .trust-level p {
1726
+ margin: 0;
1727
+ color: var(--mountain-300);
1728
+ font-size: 0.875rem;
1729
+ flex: 1;
1730
+ }
1731
+
1732
+ .level-quantum {
1733
+ border-left-color: #a855f7;
1734
+ background: rgba(168, 85, 247, 0.1);
1735
+ }
1736
+
1737
+ .level-quantum h4 {
1738
+ color: #c084fc;
1739
+ }
1740
+
1741
+ .level-quantum .level-tolerance {
1742
+ color: #c084fc;
1743
+ }
1744
+
1745
+ .level-atomic {
1746
+ border-left-color: #eab308;
1747
+ background: rgba(234, 179, 8, 0.1);
1748
+ }
1749
+
1750
+ .level-atomic h4 {
1751
+ color: #facc15;
1752
+ }
1753
+
1754
+ .level-atomic .level-tolerance {
1755
+ color: #facc15;
1756
+ }
1757
+
1758
+ .level-gps {
1759
+ border-left-color: #84cc16;
1760
+ background: rgba(132, 204, 22, 0.1);
1761
+ }
1762
+
1763
+ .level-gps h4 {
1764
+ color: #a3e635;
1765
+ }
1766
+
1767
+ .level-gps .level-tolerance {
1768
+ color: #a3e635;
1769
+ }
1770
+
1771
+ .level-ptp {
1772
+ border-left-color: #0ea5e9;
1773
+ background: rgba(14, 165, 233, 0.1);
1774
+ }
1775
+
1776
+ .level-ptp h4 {
1777
+ color: #38bdf8;
1778
+ }
1779
+
1780
+ .level-ptp .level-tolerance {
1781
+ color: #38bdf8;
1782
+ }
1783
+
1784
+ .level-ntp {
1785
+ border-left-color: #60a5fa;
1786
+ background: rgba(96, 165, 250, 0.1);
1787
+ }
1788
+
1789
+ .level-ntp h4 {
1790
+ color: #93c5fd;
1791
+ }
1792
+
1793
+ .level-ntp .level-tolerance {
1794
+ color: #93c5fd;
1795
+ }
1796
+
1797
+ .level-unsync {
1798
+ border-left-color: #6b7280;
1799
+ background: rgba(107, 114, 128, 0.1);
1800
+ }
1801
+
1802
+ .level-unsync h4 {
1803
+ color: #9ca3af;
1804
+ }
1805
+
1806
+ .level-unsync .level-tolerance {
1807
+ color: #9ca3af;
1808
+ }
1809
+
1810
+ /* ============================================
1811
+ KARMA LEVELS
1812
+ ============================================ */
1813
+
1814
+ .karma-levels {
1815
+ display: flex;
1816
+ flex-direction: column;
1817
+ gap: 1rem;
1818
+ margin: 1.5rem 0;
1819
+ }
1820
+
1821
+ .karma-level {
1822
+ background: var(--mountain-800);
1823
+ border-radius: 0.75rem;
1824
+ border-left: 4px solid;
1825
+ overflow: hidden;
1826
+ }
1827
+
1828
+ .karma-header {
1829
+ display: flex;
1830
+ align-items: center;
1831
+ gap: 0.75rem;
1832
+ padding: 1rem 1.25rem;
1833
+ background: var(--mountain-900);
1834
+ }
1835
+
1836
+ .karma-icon {
1837
+ font-size: 1.5rem;
1838
+ }
1839
+
1840
+ .karma-header h4 {
1841
+ margin: 0;
1842
+ font-size: 1rem;
1843
+ font-weight: 600;
1844
+ letter-spacing: 0.05em;
1845
+ flex: 1;
1846
+ }
1847
+
1848
+ .karma-number {
1849
+ font-size: 0.75rem;
1850
+ font-family: monospace;
1851
+ padding: 0.25rem 0.5rem;
1852
+ background: var(--mountain-800);
1853
+ border-radius: 0.25rem;
1854
+ }
1855
+
1856
+ .karma-body {
1857
+ padding: 1rem 1.25rem;
1858
+ }
1859
+
1860
+ .karma-desc {
1861
+ margin: 0 0 0.75rem 0;
1862
+ color: var(--mountain-300);
1863
+ font-style: italic;
1864
+ }
1865
+
1866
+ .karma-requirements {
1867
+ margin: 0;
1868
+ padding-left: 1.25rem;
1869
+ color: var(--mountain-400);
1870
+ font-size: 0.875rem;
1871
+ }
1872
+
1873
+ .karma-requirements li {
1874
+ margin-bottom: 0.25rem;
1875
+ }
1876
+
1877
+ /* KARMA levels - Nepali expedition roles */
1878
+ .level-sirdar {
1879
+ border-left-color: #f59e0b;
1880
+ /* Amber gold - expedition leader */
1881
+ }
1882
+
1883
+ .level-sirdar .karma-header h4 {
1884
+ color: #fbbf24;
1885
+ }
1886
+
1887
+ .level-sirdar .karma-number {
1888
+ color: #f59e0b;
1889
+ background: rgba(245, 158, 11, 0.2);
1890
+ }
1891
+
1892
+ .level-sathi {
1893
+ border-left-color: #a855f7;
1894
+ /* Purple - trusted companion */
1895
+ }
1896
+
1897
+ .level-sathi .karma-header h4 {
1898
+ color: #c084fc;
1899
+ }
1900
+
1901
+ .level-sathi .karma-number {
1902
+ color: #a855f7;
1903
+ background: rgba(168, 85, 247, 0.2);
1904
+ }
1905
+
1906
+ .level-pathik {
1907
+ border-left-color: #eab308;
1908
+ /* Yellow - traveler */
1909
+ }
1910
+
1911
+ .level-pathik .karma-header h4 {
1912
+ color: #facc15;
1913
+ }
1914
+
1915
+ .level-pathik .karma-number {
1916
+ color: #eab308;
1917
+ background: rgba(234, 179, 8, 0.2);
1918
+ }
1919
+
1920
+ .level-yatri {
1921
+ border-left-color: #6b7280;
1922
+ /* Gray - pilgrim */
1923
+ }
1924
+
1925
+ .level-yatri .karma-header h4 {
1926
+ color: #9ca3af;
1927
+ }
1928
+
1929
+ .level-yatri .karma-number {
1930
+ color: #6b7280;
1931
+ background: rgba(107, 114, 128, 0.2);
1932
+ }
1933
+
1934
+ .level-naya {
1935
+ border-left-color: #22c55e;
1936
+ /* Green - newcomer */
1937
+ }
1938
+
1939
+ .level-naya .karma-header h4 {
1940
+ color: #4ade80;
1941
+ }
1942
+
1943
+ .level-naya .karma-number {
1944
+ color: #22c55e;
1945
+ background: rgba(34, 197, 94, 0.2);
1946
+ }
1947
+
1948
+ /* Legacy level names (keep for backwards compatibility) */
1949
+ .level-enlightened {
1950
+ border-left-color: #E5E4E2;
1951
+ }
1952
+
1953
+ .level-enlightened .karma-header h4 {
1954
+ color: #f5f5f4;
1955
+ }
1956
+
1957
+ .level-enlightened .karma-number {
1958
+ color: #E5E4E2;
1959
+ }
1960
+
1961
+ .level-awakened {
1962
+ border-left-color: #FFD700;
1963
+ }
1964
+
1965
+ .level-awakened .karma-header h4 {
1966
+ color: #fde047;
1967
+ }
1968
+
1969
+ .level-awakened .karma-number {
1970
+ color: #FFD700;
1971
+ }
1972
+
1973
+ .level-seeking {
1974
+ border-left-color: #CD7F32;
1975
+ }
1976
+
1977
+ .level-seeking .karma-header h4 {
1978
+ color: #d97706;
1979
+ }
1980
+
1981
+ .level-seeking .karma-number {
1982
+ color: #CD7F32;
1983
+ }
1984
+
1985
+ .level-untrusted {
1986
+ border-left-color: #ef4444;
1987
+ }
1988
+
1989
+ .level-untrusted .karma-header h4 {
1990
+ color: #f87171;
1991
+ }
1992
+
1993
+ .level-untrusted .karma-number {
1994
+ color: #ef4444;
1995
+ }
1996
+
1997
+ /* ============================================
1998
+ MANDALA MESSAGE TYPES
1999
+ ============================================ */
2000
+
2001
+ .message-types {
2002
+ display: grid;
2003
+ gap: 1rem;
2004
+ margin: 1.5rem 0;
2005
+ }
2006
+
2007
+ .message-type {
2008
+ background: var(--mountain-800);
2009
+ border-radius: 0.5rem;
2010
+ border-left: 4px solid var(--mountain-600);
2011
+ overflow: hidden;
2012
+ }
2013
+
2014
+ .message-header {
2015
+ display: flex;
2016
+ align-items: center;
2017
+ gap: 0.75rem;
2018
+ padding: 0.75rem 1rem;
2019
+ background: var(--mountain-750);
2020
+ }
2021
+
2022
+ .message-icon {
2023
+ font-size: 1.25rem;
2024
+ }
2025
+
2026
+ .message-header h4 {
2027
+ margin: 0;
2028
+ font-size: 0.875rem;
2029
+ font-weight: 600;
2030
+ letter-spacing: 0.05em;
2031
+ }
2032
+
2033
+ .message-body {
2034
+ padding: 0.75rem 1rem;
2035
+ }
2036
+
2037
+ .message-body p {
2038
+ margin: 0 0 0.5rem 0;
2039
+ color: var(--mountain-300);
2040
+ font-size: 0.875rem;
2041
+ }
2042
+
2043
+ .message-body code {
2044
+ font-size: 0.75rem;
2045
+ color: #2dd4bf;
2046
+ }
2047
+
2048
+ .type-hello {
2049
+ border-left-color: #10b981;
2050
+ }
2051
+
2052
+ .type-hello .message-header h4 {
2053
+ color: #6ee7b7;
2054
+ }
2055
+
2056
+ .type-welcome {
2057
+ border-left-color: #14b8a6;
2058
+ }
2059
+
2060
+ .type-welcome .message-header h4 {
2061
+ color: #5eead4;
2062
+ }
2063
+
2064
+ .type-gossip {
2065
+ border-left-color: #f59e0b;
2066
+ }
2067
+
2068
+ .type-gossip .message-header h4 {
2069
+ color: #fcd34d;
2070
+ }
2071
+
2072
+ .type-sync {
2073
+ border-left-color: #3b82f6;
2074
+ }
2075
+
2076
+ .type-sync .message-header h4 {
2077
+ color: #93c5fd;
2078
+ }
2079
+
2080
+ .type-ping {
2081
+ border-left-color: #8b5cf6;
2082
+ }
2083
+
2084
+ .type-ping .message-header h4 {
2085
+ color: #c4b5fd;
2086
+ }
2087
+
2088
+ .type-bye {
2089
+ border-left-color: #ef4444;
2090
+ }
2091
+
2092
+ .type-bye .message-header h4 {
2093
+ color: #fca5a5;
2094
+ }
2095
+
2096
+ /* ============================================
2097
+ MANDALA CONNECTION LIFECYCLE
2098
+ ============================================ */
2099
+
2100
+ .lifecycle-flow {
2101
+ display: flex;
2102
+ align-items: center;
2103
+ flex-wrap: wrap;
2104
+ gap: 0.5rem;
2105
+ margin: 1.5rem 0;
2106
+ padding: 1.5rem;
2107
+ background: var(--mountain-800);
2108
+ border-radius: 0.5rem;
2109
+ }
2110
+
2111
+ .lifecycle-step {
2112
+ display: flex;
2113
+ flex-direction: column;
2114
+ align-items: center;
2115
+ gap: 0.25rem;
2116
+ padding: 0.75rem 1rem;
2117
+ background: var(--mountain-750);
2118
+ border-radius: 0.5rem;
2119
+ border: 1px solid var(--mountain-600);
2120
+ min-width: 100px;
2121
+ }
2122
+
2123
+ .step-num {
2124
+ font-size: 0.75rem;
2125
+ font-weight: bold;
2126
+ color: #14b8a6;
2127
+ font-family: monospace;
2128
+ }
2129
+
2130
+ .step-label {
2131
+ font-size: 0.875rem;
2132
+ font-weight: 600;
2133
+ color: #5eead4;
2134
+ }
2135
+
2136
+ .step-desc {
2137
+ font-size: 0.7rem;
2138
+ color: var(--mountain-400);
2139
+ text-align: center;
2140
+ }
2141
+
2142
+ .lifecycle-arrow {
2143
+ color: var(--mountain-500);
2144
+ font-size: 1.25rem;
2145
+ font-weight: bold;
2146
+ }
2147
+
2148
+ /* ============================================
2149
+ MANDALA CONNECTION STATES
2150
+ ============================================ */
2151
+
2152
+ .connection-states {
2153
+ display: grid;
2154
+ gap: 0.75rem;
2155
+ margin: 1.5rem 0;
2156
+ }
2157
+
2158
+ .conn-state {
2159
+ display: flex;
2160
+ align-items: center;
2161
+ gap: 1rem;
2162
+ padding: 0.75rem 1rem;
2163
+ background: var(--mountain-800);
2164
+ border-radius: 0.5rem;
2165
+ border-left: 3px solid var(--mountain-600);
2166
+ }
2167
+
2168
+ .state-icon {
2169
+ font-size: 1.25rem;
2170
+ }
2171
+
2172
+ .state-name {
2173
+ font-size: 0.875rem;
2174
+ font-weight: 600;
2175
+ font-family: monospace;
2176
+ min-width: 120px;
2177
+ }
2178
+
2179
+ .state-desc {
2180
+ font-size: 0.875rem;
2181
+ color: var(--mountain-400);
2182
+ }
2183
+
2184
+ .state-connecting {
2185
+ border-left-color: #f59e0b;
2186
+ }
2187
+
2188
+ .state-connecting .state-name {
2189
+ color: #fcd34d;
2190
+ }
2191
+
2192
+ .state-handshaking {
2193
+ border-left-color: #3b82f6;
2194
+ }
2195
+
2196
+ .state-handshaking .state-name {
2197
+ color: #93c5fd;
2198
+ }
2199
+
2200
+ .state-active {
2201
+ border-left-color: #10b981;
2202
+ }
2203
+
2204
+ .state-active .state-name {
2205
+ color: #6ee7b7;
2206
+ }
2207
+
2208
+ .state-draining {
2209
+ border-left-color: #8b5cf6;
2210
+ }
2211
+
2212
+ .state-draining .state-name {
2213
+ color: #c4b5fd;
2214
+ }
2215
+
2216
+ .state-closed {
2217
+ border-left-color: #ef4444;
2218
+ }
2219
+
2220
+ .state-closed .state-name {
2221
+ color: #fca5a5;
2222
+ }
2223
+
2224
+ /* ============================================
2225
+ TOPOLOGY DIAGRAM
2226
+ ============================================ */
2227
+
2228
+ .topology-diagram {
2229
+ margin: 1.5rem 0;
2230
+ padding: 1.5rem;
2231
+ background: var(--mountain-800);
2232
+ border-radius: 0.5rem;
2233
+ overflow-x: auto;
2234
+ }
2235
+
2236
+ .ascii-art {
2237
+ font-family: monospace;
2238
+ font-size: 0.8rem;
2239
+ line-height: 1.4;
2240
+ color: #5eead4;
2241
+ margin: 0;
2242
+ white-space: pre;
2243
+ }
2244
+
2245
+ /* ============================================
2246
+ INTEGRATION TABLE
2247
+ ============================================ */
2248
+
2249
+ .integration-table {
2250
+ width: 100%;
2251
+ margin: 1.5rem 0;
2252
+ border-collapse: collapse;
2253
+ }
2254
+
2255
+ .integration-table th,
2256
+ .integration-table td {
2257
+ padding: 0.75rem 1rem;
2258
+ text-align: left;
2259
+ border-bottom: 1px solid var(--mountain-700);
2260
+ }
2261
+
2262
+ .integration-table th {
2263
+ background: var(--mountain-800);
2264
+ color: #5eead4;
2265
+ font-weight: 600;
2266
+ }
2267
+
2268
+ .integration-table td:first-child {
2269
+ font-weight: 500;
2270
+ white-space: nowrap;
2271
+ }
2272
+
2273
+ /* ============================================
2274
+ UTILITY CLASSES
2275
+ ============================================ */
2276
+
2277
+ .text-mountain-300 {
2278
+ color: var(--mountain-300);
2279
+ }
2280
+
2281
+ .text-mountain-400 {
2282
+ color: var(--mountain-400);
2283
+ }
2284
+
2285
+ .bg-mountain-800 {
2286
+ background-color: var(--mountain-800);
2287
+ }
2288
+
2289
+ .bg-mountain-900 {
2290
+ background-color: var(--mountain-900);
2291
+ }
2292
+
2293
+ .border-mountain-700 {
2294
+ border-color: var(--mountain-700);
2295
+ }
2296
+
2297
+ /* ============================================
2298
+ ADDITIONAL RESPONSIVE FIXES
2299
+ ============================================ */
2300
+
2301
+ /* Cryptographic chains and horizontal flows should wrap */
2302
+ @media (max-width: 800px) {
2303
+
2304
+ /* Make horizontal flex chains wrap */
2305
+ .bg-mountain-800 .flex.items-center.gap-2,
2306
+ .flex.items-center.gap-2:has(span.bg-mountain-700) {
2307
+ flex-wrap: wrap;
2308
+ gap: 0.5rem;
2309
+ }
2310
+
2311
+ /* Hide arrows on wrap */
2312
+ .flex.items-center.gap-2>span:not(.bg-mountain-700):not([class]) {
2313
+ display: none;
2314
+ }
2315
+
2316
+ /* Journey navigation cards stack vertically */
2317
+ .flex.flex-col.sm\\:flex-row {
2318
+ flex-direction: column !important;
2319
+ }
2320
+
2321
+ /* Reduce main content padding */
2322
+ .docs-main {
2323
+ padding: 1rem 0.75rem;
2324
+ }
2325
+
2326
+ .docs-content {
2327
+ padding: 0;
2328
+ }
2329
+
2330
+ /* Tables become scrollable */
2331
+ table {
2332
+ display: block;
2333
+ overflow-x: auto;
2334
+ white-space: nowrap;
2335
+ }
2336
+
2337
+ /* Reduce heading sizes */
2338
+ h1 {
2339
+ font-size: 1.75rem;
2340
+ }
2341
+
2342
+ h2 {
2343
+ font-size: 1.5rem;
2344
+ }
2345
+
2346
+ h3 {
2347
+ font-size: 1.25rem;
2348
+ }
2349
+ }
2350
+
2351
+ /* Very small screens */
2352
+ @media (max-width: 480px) {
2353
+ .docs-main {
2354
+ padding: 0.75rem 0.5rem;
2355
+ padding-top: 3.5rem;
2356
+ }
2357
+
2358
+ /* Stack items that have flex-1 */
2359
+ .flex>.flex-1 {
2360
+ min-width: 100%;
2361
+ }
2362
+
2363
+ /* Reduce badge and tag sizes */
2364
+ .theme-badge,
2365
+ span.bg-mountain-700 {
2366
+ font-size: 0.7rem;
2367
+ padding: 0.25rem 0.5rem;
2368
+ }
2369
+
2370
+ /* Make code blocks scrollable */
2371
+ pre {
2372
+ max-width: 100%;
2373
+ overflow-x: auto;
2374
+ }
2375
+
2376
+ pre code {
2377
+ font-size: 0.75rem;
2378
+ }
2379
+ }
2380
+
2381
+ /* ============================================
2382
+ TOUCH TARGETS — WCAG 2.5.5 minimum 44px
2383
+ Only applied on coarse pointer (touch) devices.
2384
+ ============================================ */
2385
+
2386
+ @media (pointer: coarse) {
2387
+ .sidebar-nav a {
2388
+ min-height: 44px;
2389
+ padding-top: 0.5rem;
2390
+ padding-bottom: 0.5rem;
2391
+ display: flex;
2392
+ align-items: center;
2393
+ }
2394
+
2395
+ .docs-nav-footer a,
2396
+ .border-t a.flex-1 {
2397
+ min-height: 44px;
2398
+ }
2399
+
2400
+ button,
2401
+ [role="button"],
2402
+ .sidebar-toggle {
2403
+ min-height: 44px;
2404
+ min-width: 44px;
2405
+ }
2406
+ }
2407
+
2408
+ /* ============================================
2409
+ YAK ICON - Yakmesh logo (local SVG)
2410
+ ============================================ */
2411
+
2412
+ .yak-icon {
2413
+ display: inline-block;
2414
+ width: 1.3em;
2415
+ height: 1.5em;
2416
+ vertical-align: -0.4em;
2417
+ margin-right: 0.03em;
2418
+ background-image: url("yak-icon.svg");
2419
+ background-size: contain;
2420
+ background-repeat: no-repeat;
2421
+ background-position: center;
2422
+ }
2423
+
2424
+ .docs-sidebar.icon-only .sidebar-nav .yak-icon {
2425
+ width: 1.5em;
2426
+ height: 1.5em;
2427
+ }
2428
+
2429
+ /* ============================================
2430
+ DOC-ICON — Inline SVG icon system
2431
+ Replaces emoji with theme-colorable SVG icons.
2432
+ Uses <svg class="doc-icon"><use href="..."/></svg>
2433
+ ============================================ */
2434
+
2435
+ .doc-icon {
2436
+ display: inline-block;
2437
+ width: 1.2em;
2438
+ height: 1.2em;
2439
+ vertical-align: -0.15em;
2440
+ fill: none;
2441
+ stroke: currentColor;
2442
+ stroke-width: 2;
2443
+ stroke-linecap: round;
2444
+ stroke-linejoin: round;
2445
+ flex-shrink: 0;
2446
+ }
2447
+
2448
+ /* Sidebar context: slightly larger, theme-tinted */
2449
+ .sidebar-nav .doc-icon {
2450
+ width: 1.3em;
2451
+ height: 1.3em;
2452
+ vertical-align: -0.2em;
2453
+ margin-right: 0.15em;
2454
+ opacity: 0.8;
2455
+ transition: opacity 0.2s, color 0.2s;
2456
+ }
2457
+
2458
+ .sidebar-nav a:hover .doc-icon,
2459
+ .sidebar-nav a.active .doc-icon {
2460
+ opacity: 1;
2461
+ color: var(--theme-accent, #60a5fa);
2462
+ }
2463
+
2464
+ /* Icon-only collapsed sidebar */
2465
+ .docs-sidebar.icon-only .sidebar-nav .doc-icon {
2466
+ width: 1.5em;
2467
+ height: 1.5em;
2468
+ margin-right: 0;
2469
+ }
2470
+
2471
+ /* Page header hero icon (large) */
2472
+ .hero-icon {
2473
+ width: 3rem;
2474
+ height: 3rem;
2475
+ color: var(--theme-accent, #60a5fa);
2476
+ filter: drop-shadow(0 0 8px var(--theme-glow, rgba(96, 165, 250, 0.3)));
2477
+ }
2478
+
2479
+ /* Journey nav card icon */
2480
+ .journey-icon {
2481
+ width: 1.5rem;
2482
+ height: 1.5rem;
2483
+ }
2484
+
2485
+ /* Inline body-text icon (Related Documentation, cross-references) */
2486
+ .inline-icon {
2487
+ width: 1.15em;
2488
+ height: 1.15em;
2489
+ vertical-align: -0.15em;
2490
+ opacity: 0.85;
2491
+ color: var(--theme-accent, #60a5fa);
2492
+ }
2493
+
2494
+ /* Module card header icon (replaces text-2xl emoji) */
2495
+ .card-icon {
2496
+ width: 2rem;
2497
+ height: 2rem;
2498
+ color: var(--theme-accent, #60a5fa);
2499
+ filter: drop-shadow(0 0 4px var(--theme-glow, rgba(96, 165, 250, 0.2)));
2500
+ }
2501
+
2502
+ /* ============================================
2503
+ PARTICLE ANIMATION SYSTEM
2504
+ Unique themed floating particles per module.
2505
+ Spawned dynamically by docs.js initParticles().
2506
+ ============================================ */
2507
+
2508
+ /* --- Base Particle --- */
2509
+ .ym-particle {
2510
+ position: fixed;
2511
+ pointer-events: none;
2512
+ z-index: 1;
2513
+ border-radius: 50%;
2514
+ will-change: transform, opacity;
2515
+ }
2516
+
2517
+ /* Inner glow dot */
2518
+ .ym-particle .ym-dot {
2519
+ display: block;
2520
+ border-radius: 50%;
2521
+ width: var(--p-size, 6px);
2522
+ height: var(--p-size, 6px);
2523
+ background: var(--p-color, var(--theme-accent, #4ade80));
2524
+ box-shadow: 0 0 8px 3px var(--p-color, var(--theme-accent)),
2525
+ 0 0 20px 6px var(--p-glow, rgba(74, 222, 128, 0.3)),
2526
+ 0 0 40px 12px var(--p-glow-far, rgba(74, 222, 128, 0.08));
2527
+ animation: ym-pulse var(--p-pulse, 3s) ease-in-out infinite;
2528
+ }
2529
+
2530
+ /* Soft halo around dot */
2531
+ .ym-particle .ym-halo {
2532
+ position: absolute;
2533
+ top: 50%;
2534
+ left: 50%;
2535
+ transform: translate(-50%, -50%);
2536
+ width: calc(var(--p-size, 6px) * 6);
2537
+ height: calc(var(--p-size, 6px) * 6);
2538
+ border-radius: 50%;
2539
+ background: radial-gradient(circle, var(--p-glow, rgba(74, 222, 128, 0.08)) 0%, transparent 70%);
2540
+ animation: ym-pulse var(--p-pulse, 3s) ease-in-out infinite;
2541
+ pointer-events: none;
2542
+ }
2543
+
2544
+ /* --- Shape Variants --- */
2545
+
2546
+ /* Snowflake: 6-ray rotated star */
2547
+ .ym-particle.ym-snowflake .ym-dot {
2548
+ border-radius: 0;
2549
+ background: transparent;
2550
+ width: var(--p-size, 8px);
2551
+ height: var(--p-size, 8px);
2552
+ box-shadow: none;
2553
+ position: relative;
2554
+ }
2555
+
2556
+ .ym-particle.ym-snowflake .ym-dot::before,
2557
+ .ym-particle.ym-snowflake .ym-dot::after {
2558
+ content: '';
2559
+ position: absolute;
2560
+ top: 50%;
2561
+ left: 50%;
2562
+ width: 120%;
2563
+ height: 2px;
2564
+ background: var(--p-color, #22d3ee);
2565
+ box-shadow: 0 0 6px var(--p-color, #22d3ee);
2566
+ transform-origin: center;
2567
+ }
2568
+
2569
+ .ym-particle.ym-snowflake .ym-dot::before {
2570
+ transform: translate(-50%, -50%) rotate(0deg);
2571
+ }
2572
+
2573
+ .ym-particle.ym-snowflake .ym-dot::after {
2574
+ transform: translate(-50%, -50%) rotate(60deg);
2575
+ }
2576
+
2577
+ .ym-particle.ym-snowflake .ym-dot {
2578
+ animation: ym-spin 12s linear infinite, ym-pulse var(--p-pulse, 4s) ease-in-out infinite;
2579
+ }
2580
+
2581
+ /* Ring: expanding circle */
2582
+ .ym-particle.ym-ring .ym-dot {
2583
+ background: transparent;
2584
+ border: 1.5px solid var(--p-color, #a78bfa);
2585
+ box-shadow: 0 0 6px var(--p-color, #a78bfa), inset 0 0 4px var(--p-glow, rgba(167, 139, 250, 0.3));
2586
+ animation: ym-ring-expand var(--p-pulse, 4s) ease-out infinite;
2587
+ }
2588
+
2589
+ /* Ember: flickering warm dot */
2590
+ .ym-particle.ym-ember .ym-dot {
2591
+ animation: ym-ember-flicker var(--p-pulse, 2s) ease-in-out infinite;
2592
+ }
2593
+
2594
+ /* Smoke: fading translucent blob */
2595
+ .ym-particle.ym-smoke .ym-dot {
2596
+ background: var(--p-color, rgba(200, 200, 200, 0.5));
2597
+ box-shadow: 0 0 12px 4px var(--p-glow, rgba(200, 200, 200, 0.2));
2598
+ filter: blur(4px);
2599
+ animation: ym-smoke-fade var(--p-pulse, 6s) ease-in-out infinite;
2600
+ }
2601
+
2602
+ .ym-particle.ym-smoke .ym-halo {
2603
+ display: none;
2604
+ }
2605
+
2606
+ /* Leaf: asymmetric sway */
2607
+ .ym-particle.ym-leaf .ym-dot {
2608
+ border-radius: 50% 0 50% 0;
2609
+ animation: ym-leaf-tumble var(--p-pulse, 5s) ease-in-out infinite,
2610
+ ym-pulse var(--p-pulse, 5s) ease-in-out infinite;
2611
+ }
2612
+
2613
+ /* Spark: bright flash dot */
2614
+ .ym-particle.ym-spark .ym-dot {
2615
+ animation: ym-spark-flash var(--p-pulse, 1.5s) ease-in-out infinite;
2616
+ }
2617
+
2618
+ /* Hex: hexagonal glow */
2619
+ .ym-particle.ym-hex .ym-dot {
2620
+ clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
2621
+ animation: ym-hex-glow var(--p-pulse, 3s) ease-in-out infinite;
2622
+ }
2623
+
2624
+ /* Triangle: rotating prism */
2625
+ .ym-particle.ym-triangle .ym-dot {
2626
+ border-radius: 0;
2627
+ clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
2628
+ animation: ym-spin 10s linear infinite, ym-pulse var(--p-pulse, 3s) ease-in-out infinite;
2629
+ }
2630
+
2631
+ /* --- Animation Keyframes --- */
2632
+
2633
+ @keyframes ym-pulse {
2634
+
2635
+ 0%,
2636
+ 100% {
2637
+ opacity: var(--p-max, 0.9);
2638
+ }
2639
+
2640
+ 40% {
2641
+ opacity: 0;
2642
+ }
2643
+
2644
+ 50% {
2645
+ opacity: 0;
2646
+ }
2647
+
2648
+ 60% {
2649
+ opacity: var(--p-max, 0.9);
2650
+ }
2651
+ }
2652
+
2653
+ @keyframes ym-ring-expand {
2654
+ 0% {
2655
+ transform: scale(0.5);
2656
+ opacity: 0.8;
2657
+ }
2658
+
2659
+ 100% {
2660
+ transform: scale(2.5);
2661
+ opacity: 0;
2662
+ }
2663
+ }
2664
+
2665
+ @keyframes ym-spin {
2666
+ 0% {
2667
+ transform: rotate(0deg);
2668
+ }
2669
+
2670
+ 100% {
2671
+ transform: rotate(360deg);
2672
+ }
2673
+ }
2674
+
2675
+ @keyframes ym-ember-flicker {
2676
+
2677
+ 0%,
2678
+ 100% {
2679
+ opacity: 0.7;
2680
+ transform: scale(1);
2681
+ }
2682
+
2683
+ 20% {
2684
+ opacity: 1;
2685
+ transform: scale(1.3);
2686
+ }
2687
+
2688
+ 40% {
2689
+ opacity: 0.4;
2690
+ transform: scale(0.8);
2691
+ }
2692
+
2693
+ 60% {
2694
+ opacity: 0.9;
2695
+ transform: scale(1.1);
2696
+ }
2697
+
2698
+ 80% {
2699
+ opacity: 0.3;
2700
+ transform: scale(0.7);
2701
+ }
2702
+ }
2703
+
2704
+ @keyframes ym-smoke-fade {
2705
+ 0% {
2706
+ opacity: 0;
2707
+ transform: scale(0.8) translateY(0);
2708
+ }
2709
+
2710
+ 20% {
2711
+ opacity: 0.5;
2712
+ }
2713
+
2714
+ 50% {
2715
+ opacity: 0.35;
2716
+ transform: scale(1.5) translateY(-30px);
2717
+ }
2718
+
2719
+ 80% {
2720
+ opacity: 0.15;
2721
+ transform: scale(2.0) translateY(-60px);
2722
+ }
2723
+
2724
+ 100% {
2725
+ opacity: 0;
2726
+ transform: scale(2.4) translateY(-90px);
2727
+ }
2728
+ }
2729
+
2730
+ @keyframes ym-leaf-tumble {
2731
+
2732
+ 0%,
2733
+ 100% {
2734
+ transform: rotate(0deg) scaleX(1);
2735
+ }
2736
+
2737
+ 25% {
2738
+ transform: rotate(15deg) scaleX(0.8);
2739
+ }
2740
+
2741
+ 50% {
2742
+ transform: rotate(-10deg) scaleX(1);
2743
+ }
2744
+
2745
+ 75% {
2746
+ transform: rotate(20deg) scaleX(0.7);
2747
+ }
2748
+ }
2749
+
2750
+ @keyframes ym-spark-flash {
2751
+
2752
+ 0%,
2753
+ 100% {
2754
+ opacity: 0;
2755
+ transform: scale(0.5);
2756
+ }
2757
+
2758
+ 10% {
2759
+ opacity: 1;
2760
+ transform: scale(1.5);
2761
+ }
2762
+
2763
+ 30% {
2764
+ opacity: 0.8;
2765
+ transform: scale(1);
2766
+ }
2767
+
2768
+ 50% {
2769
+ opacity: 0;
2770
+ transform: scale(0.5);
2771
+ }
2772
+ }
2773
+
2774
+ @keyframes ym-hex-glow {
2775
+
2776
+ 0%,
2777
+ 100% {
2778
+ opacity: 0.6;
2779
+ box-shadow: 0 0 4px var(--p-color);
2780
+ }
2781
+
2782
+ 50% {
2783
+ opacity: 1;
2784
+ box-shadow: 0 0 16px var(--p-color), 0 0 30px var(--p-glow);
2785
+ }
2786
+ }
2787
+
2788
+ /* --- Drift Paths (gentle wandering) --- */
2789
+ @keyframes ym-drift-1 {
2790
+
2791
+ 0%,
2792
+ 100% {
2793
+ transform: translate(0, 0);
2794
+ }
2795
+
2796
+ 25% {
2797
+ transform: translate(30px, -60px);
2798
+ }
2799
+
2800
+ 50% {
2801
+ transform: translate(-20px, -100px);
2802
+ }
2803
+
2804
+ 75% {
2805
+ transform: translate(50px, -40px);
2806
+ }
2807
+ }
2808
+
2809
+ @keyframes ym-drift-2 {
2810
+
2811
+ 0%,
2812
+ 100% {
2813
+ transform: translate(0, 0);
2814
+ }
2815
+
2816
+ 25% {
2817
+ transform: translate(-40px, -80px);
2818
+ }
2819
+
2820
+ 50% {
2821
+ transform: translate(20px, -120px);
2822
+ }
2823
+
2824
+ 75% {
2825
+ transform: translate(-30px, -50px);
2826
+ }
2827
+ }
2828
+
2829
+ @keyframes ym-drift-3 {
2830
+
2831
+ 0%,
2832
+ 100% {
2833
+ transform: translate(0, 0);
2834
+ }
2835
+
2836
+ 25% {
2837
+ transform: translate(50px, -40px);
2838
+ }
2839
+
2840
+ 50% {
2841
+ transform: translate(-10px, -90px);
2842
+ }
2843
+
2844
+ 75% {
2845
+ transform: translate(40px, -70px);
2846
+ }
2847
+ }
2848
+
2849
+ @keyframes ym-drift-4 {
2850
+
2851
+ 0%,
2852
+ 100% {
2853
+ transform: translate(0, 0);
2854
+ }
2855
+
2856
+ 25% {
2857
+ transform: translate(-20px, -110px);
2858
+ }
2859
+
2860
+ 50% {
2861
+ transform: translate(35px, -60px);
2862
+ }
2863
+
2864
+ 75% {
2865
+ transform: translate(-45px, -90px);
2866
+ }
2867
+ }
2868
+
2869
+ @keyframes ym-drift-5 {
2870
+
2871
+ 0%,
2872
+ 100% {
2873
+ transform: translate(0, 0);
2874
+ }
2875
+
2876
+ 25% {
2877
+ transform: translate(60px, -30px);
2878
+ }
2879
+
2880
+ 50% {
2881
+ transform: translate(-25px, -80px);
2882
+ }
2883
+
2884
+ 75% {
2885
+ transform: translate(15px, -55px);
2886
+ }
2887
+ }
2888
+
2889
+ @keyframes ym-drift-6 {
2890
+
2891
+ 0%,
2892
+ 100% {
2893
+ transform: translate(0, 0);
2894
+ }
2895
+
2896
+ 25% {
2897
+ transform: translate(-35px, -70px);
2898
+ }
2899
+
2900
+ 50% {
2901
+ transform: translate(45px, -110px);
2902
+ }
2903
+
2904
+ 75% {
2905
+ transform: translate(-10px, -45px);
2906
+ }
2907
+ }
2908
+
2909
+ @keyframes ym-drift-7 {
2910
+
2911
+ 0%,
2912
+ 100% {
2913
+ transform: translate(0, 0);
2914
+ }
2915
+
2916
+ 25% {
2917
+ transform: translate(25px, -95px);
2918
+ }
2919
+
2920
+ 50% {
2921
+ transform: translate(-40px, -50px);
2922
+ }
2923
+
2924
+ 75% {
2925
+ transform: translate(55px, -75px);
2926
+ }
2927
+ }
2928
+
2929
+ @keyframes ym-drift-8 {
2930
+
2931
+ 0%,
2932
+ 100% {
2933
+ transform: translate(0, 0);
2934
+ }
2935
+
2936
+ 25% {
2937
+ transform: translate(-50px, -45px);
2938
+ }
2939
+
2940
+ 50% {
2941
+ transform: translate(30px, -85px);
2942
+ }
2943
+
2944
+ 75% {
2945
+ transform: translate(-15px, -65px);
2946
+ }
2947
+ }
2948
+
2949
+ /* --- Directional Paths --- */
2950
+ @keyframes ym-fall-1 {
2951
+ 0% {
2952
+ transform: translateY(-10vh) translateX(0);
2953
+ opacity: 0;
2954
+ }
2955
+
2956
+ 10% {
2957
+ opacity: var(--p-max, 0.8);
2958
+ }
2959
+
2960
+ 90% {
2961
+ opacity: var(--p-max, 0.8);
2962
+ }
2963
+
2964
+ 100% {
2965
+ transform: translateY(110vh) translateX(30px);
2966
+ opacity: 0;
2967
+ }
2968
+ }
2969
+
2970
+ @keyframes ym-fall-2 {
2971
+ 0% {
2972
+ transform: translateY(-10vh) translateX(0);
2973
+ opacity: 0;
2974
+ }
2975
+
2976
+ 10% {
2977
+ opacity: var(--p-max, 0.7);
2978
+ }
2979
+
2980
+ 90% {
2981
+ opacity: var(--p-max, 0.7);
2982
+ }
2983
+
2984
+ 100% {
2985
+ transform: translateY(110vh) translateX(-20px);
2986
+ opacity: 0;
2987
+ }
2988
+ }
2989
+
2990
+ @keyframes ym-fall-3 {
2991
+ 0% {
2992
+ transform: translateY(-10vh) translateX(0);
2993
+ opacity: 0;
2994
+ }
2995
+
2996
+ 10% {
2997
+ opacity: var(--p-max, 0.6);
2998
+ }
2999
+
3000
+ 90% {
3001
+ opacity: var(--p-max, 0.6);
3002
+ }
3003
+
3004
+ 100% {
3005
+ transform: translateY(110vh) translateX(15px);
3006
+ opacity: 0;
3007
+ }
3008
+ }
3009
+
3010
+ @keyframes ym-rise-1 {
3011
+ 0% {
3012
+ transform: translateY(10vh);
3013
+ opacity: 0;
3014
+ }
3015
+
3016
+ 15% {
3017
+ opacity: var(--p-max, 0.7);
3018
+ }
3019
+
3020
+ 85% {
3021
+ opacity: var(--p-max, 0.7);
3022
+ }
3023
+
3024
+ 100% {
3025
+ transform: translateY(-110vh);
3026
+ opacity: 0;
3027
+ }
3028
+ }
3029
+
3030
+ @keyframes ym-rise-2 {
3031
+ 0% {
3032
+ transform: translateY(10vh);
3033
+ opacity: 0;
3034
+ }
3035
+
3036
+ 15% {
3037
+ opacity: var(--p-max, 0.6);
3038
+ }
3039
+
3040
+ 85% {
3041
+ opacity: var(--p-max, 0.6);
3042
+ }
3043
+
3044
+ 100% {
3045
+ transform: translateY(-110vh);
3046
+ opacity: 0;
3047
+ }
3048
+ }
3049
+
3050
+ @keyframes ym-rise-3 {
3051
+ 0% {
3052
+ transform: translateY(10vh);
3053
+ opacity: 0;
3054
+ }
3055
+
3056
+ 15% {
3057
+ opacity: var(--p-max, 0.5);
3058
+ }
3059
+
3060
+ 85% {
3061
+ opacity: var(--p-max, 0.5);
3062
+ }
3063
+
3064
+ 100% {
3065
+ transform: translateY(-110vh);
3066
+ opacity: 0;
3067
+ }
3068
+ }
3069
+
3070
+ /* --- Orbit Path --- */
3071
+ @keyframes ym-orbit {
3072
+ 0% {
3073
+ transform: rotate(0deg) translateX(60px) rotate(0deg);
3074
+ }
3075
+
3076
+ 100% {
3077
+ transform: rotate(360deg) translateX(60px) rotate(-360deg);
3078
+ }
3079
+ }
3080
+
3081
+ /* --- Themed Dividers --- */
3082
+ .themed-divider {
3083
+ height: 2px;
3084
+ margin: 2rem 0;
3085
+ border: none;
3086
+ background: linear-gradient(90deg,
3087
+ transparent 0%,
3088
+ var(--theme-accent, #4ade80) 20%,
3089
+ var(--theme-primary, #22c55e) 50%,
3090
+ var(--theme-accent, #4ade80) 80%,
3091
+ transparent 100%);
3092
+ opacity: 0.4;
3093
+ box-shadow: 0 0 8px var(--theme-glow, rgba(34, 197, 94, 0.1));
3094
+ }
3095
+
3096
+ /* --- Accessibility: respect prefers-reduced-motion --- */
3097
+ @media (prefers-reduced-motion: reduce) {
3098
+ .ym-particle {
3099
+ display: none !important;
3100
+ }
3101
+
3102
+ .themed-divider {
3103
+ animation: none !important;
3104
+ }
3105
+ }
3106
+
3107
+ /* --- Mobile: fewer, smaller particles --- */
3108
+ @media (max-width: 768px) {
3109
+ .ym-particle:nth-child(n+7) {
3110
+ display: none;
3111
+ }
3112
+
3113
+ .ym-particle .ym-dot {
3114
+ transform: scale(0.7);
3115
+ }
3116
+
3117
+ .ym-particle .ym-halo {
3118
+ display: none;
3119
+ }
3120
+ }