arcane-os 0.1.0-dev.5

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 (248) hide show
  1. package/CHANGELOG.md +154 -0
  2. package/COMMERCIAL-LICENSE.md +13 -0
  3. package/LICENSE +661 -0
  4. package/NOTICE +70 -0
  5. package/README.md +448 -0
  6. package/bin/arcane-test.mjs +741 -0
  7. package/bin/arcane.mjs +5 -0
  8. package/docs/architecture.md +234 -0
  9. package/docs/compatibility.md +36 -0
  10. package/docs/event-manager.md +166 -0
  11. package/docs/platform-targets.md +108 -0
  12. package/docs/publishing.md +203 -0
  13. package/docs/reference/README.md +117 -0
  14. package/docs/reference/arcane-ollama.md +288 -0
  15. package/docs/reference/availability-and-normalization.md +123 -0
  16. package/docs/reference/behavioral-testing.md +86 -0
  17. package/docs/reference/cli.md +569 -0
  18. package/docs/reference/core/README.md +62 -0
  19. package/docs/reference/core/arcane-ai-contracts.md +873 -0
  20. package/docs/reference/core/arcane-api.md +601 -0
  21. package/docs/reference/core/arcane-entities.md +65 -0
  22. package/docs/reference/core/arcane-events.md +134 -0
  23. package/docs/reference/core/ollama-module.md +181 -0
  24. package/docs/reference/core/reference/arcane-api/ai-and-ollama.md +1909 -0
  25. package/docs/reference/core/reference/arcane-api/applications-terminal-capabilities.md +1057 -0
  26. package/docs/reference/core/reference/arcane-api/core-and-events.md +320 -0
  27. package/docs/reference/core/reference/arcane-api/filesystem-storage-preferences-appearance.md +610 -0
  28. package/docs/reference/core/reference/arcane-api/namespaces.md +1157 -0
  29. package/docs/reference/core/reference/arcane-api/platform-installation-users-system.md +1423 -0
  30. package/docs/reference/core/reference/arcane-api/session-provisioning-diagnostics-development.md +315 -0
  31. package/docs/reference/event-manager.md +957 -0
  32. package/docs/reference/inventory/package-api.json +2632 -0
  33. package/docs/reference/inventory/runtime-components.json +934 -0
  34. package/docs/reference/inventory/runtime-entities.json +26 -0
  35. package/docs/reference/inventory/runtime-modules.json +1249 -0
  36. package/docs/reference/protocols.md +242 -0
  37. package/docs/reference/runtime-components.md +1098 -0
  38. package/docs/reference/runtime-entities.md +303 -0
  39. package/docs/reference/runtime-modules.md +2010 -0
  40. package/docs/reference/sdk-api.md +4901 -0
  41. package/docs/roadmap.md +79 -0
  42. package/docs/work-amplification.md +124 -0
  43. package/node_modules/event-pubsub/CHANGELOG.md +55 -0
  44. package/node_modules/event-pubsub/MIGRATION.md +70 -0
  45. package/node_modules/event-pubsub/README.md +363 -0
  46. package/node_modules/event-pubsub/SECURITY.md +37 -0
  47. package/node_modules/event-pubsub/index.js +141 -0
  48. package/node_modules/event-pubsub/licence +21 -0
  49. package/node_modules/event-pubsub/package.json +59 -0
  50. package/node_modules/strong-type/README.md +408 -0
  51. package/node_modules/strong-type/assets/strong-type-header.png +0 -0
  52. package/node_modules/strong-type/index.js +1151 -0
  53. package/node_modules/strong-type/licence +21 -0
  54. package/node_modules/strong-type/node.js +125 -0
  55. package/node_modules/strong-type/package.json +61 -0
  56. package/package.json +95 -0
  57. package/runtime/ARCANE_RUNTIME_RELEASE.json +791 -0
  58. package/runtime/arcane/components/app-bar.html +468 -0
  59. package/runtime/arcane/components/assistant-panel.html +715 -0
  60. package/runtime/arcane/components/calculator.html +8 -0
  61. package/runtime/arcane/components/chart.html +655 -0
  62. package/runtime/arcane/components/chat.html +1225 -0
  63. package/runtime/arcane/components/conversation-view.html +13 -0
  64. package/runtime/arcane/components/dashboard-config.html +341 -0
  65. package/runtime/arcane/components/data-maintenance.html +112 -0
  66. package/runtime/arcane/components/data-view.html +92 -0
  67. package/runtime/arcane/components/directory-picker.html +197 -0
  68. package/runtime/arcane/components/document-inspector.html +252 -0
  69. package/runtime/arcane/components/file-drop.html +264 -0
  70. package/runtime/arcane/components/file-inspector.html +293 -0
  71. package/runtime/arcane/components/file-manager.html +1715 -0
  72. package/runtime/arcane/components/header.html +142 -0
  73. package/runtime/arcane/components/integration-settings.html +14 -0
  74. package/runtime/arcane/components/local-ai-status.html +360 -0
  75. package/runtime/arcane/components/markdown-document.html +1048 -0
  76. package/runtime/arcane/components/markdown-editor.html +360 -0
  77. package/runtime/arcane/components/media-embed.html +8 -0
  78. package/runtime/arcane/components/modal.html +402 -0
  79. package/runtime/arcane/components/output-panel.html +259 -0
  80. package/runtime/arcane/components/preferences-form.html +135 -0
  81. package/runtime/arcane/components/record-timeline.html +105 -0
  82. package/runtime/arcane/components/relationship-board.html +116 -0
  83. package/runtime/arcane/components/screen-capture.html +8 -0
  84. package/runtime/arcane/components/source-code-viewer.html +441 -0
  85. package/runtime/arcane/components/source-explanation.html +124 -0
  86. package/runtime/arcane/components/speech.html +365 -0
  87. package/runtime/arcane/components/summary-strip.html +177 -0
  88. package/runtime/arcane/components/table.html +77 -0
  89. package/runtime/arcane/components/task-progress.html +282 -0
  90. package/runtime/arcane/components/terminal-workspace.html +65 -0
  91. package/runtime/arcane/components/theme-editor.html +41 -0
  92. package/runtime/arcane/components/theme-switcher.html +46 -0
  93. package/runtime/arcane/components/unified-inbox.html +20 -0
  94. package/runtime/arcane/components/voice-transcription.html +476 -0
  95. package/runtime/arcane/components/weather-widget.html +8 -0
  96. package/runtime/arcane/components/web-navigator.html +239 -0
  97. package/runtime/arcane/css/communications.css +1 -0
  98. package/runtime/arcane/css/dashboard-config.css +45 -0
  99. package/runtime/arcane/css/document-site.css +981 -0
  100. package/runtime/arcane/css/layout.css +438 -0
  101. package/runtime/arcane/css/primitives.css +321 -0
  102. package/runtime/arcane/css/theme.css +112 -0
  103. package/runtime/arcane/css/utility-workspace.css +1 -0
  104. package/runtime/arcane/entities/ApiModelRecord.js +20 -0
  105. package/runtime/arcane/entities/Calculation.js +13 -0
  106. package/runtime/arcane/entities/Chat.js +581 -0
  107. package/runtime/arcane/entities/CommunicationMessage.js +29 -0
  108. package/runtime/arcane/entities/CommunicationThread.js +21 -0
  109. package/runtime/arcane/entities/Document.js +10 -0
  110. package/runtime/arcane/entities/File.js +143 -0
  111. package/runtime/arcane/entities/Image.js +135 -0
  112. package/runtime/arcane/entities/IntentEnvelope.js +834 -0
  113. package/runtime/arcane/entities/Preference.js +83 -0
  114. package/runtime/arcane/entities/TWiNPolicyDecision.js +1092 -0
  115. package/runtime/arcane/entities/TerminalSession.js +46 -0
  116. package/runtime/arcane/entities/Theme.js +107 -0
  117. package/runtime/arcane/entities/User.js +1046 -0
  118. package/runtime/arcane/entities/Weather.js +23 -0
  119. package/runtime/arcane/img/arcane-os-everywhere.png +0 -0
  120. package/runtime/arcane/img/arrow-left.png +0 -0
  121. package/runtime/arcane/img/arrow-right.png +0 -0
  122. package/runtime/arcane/img/doc.svg +5 -0
  123. package/runtime/arcane/img/folder.svg +4 -0
  124. package/runtime/arcane/img/image.svg +5 -0
  125. package/runtime/arcane/img/refresh.png +0 -0
  126. package/runtime/arcane/img/send.svg +9 -0
  127. package/runtime/arcane/img/trash.svg +5 -0
  128. package/runtime/arcane/img/upload.svg +5 -0
  129. package/runtime/arcane/modules/AI.js +2048 -0
  130. package/runtime/arcane/modules/AIPreferenceRuntime.js +32 -0
  131. package/runtime/arcane/modules/AIPreferenceTuple.js +92 -0
  132. package/runtime/arcane/modules/AIResponseLength.js +42 -0
  133. package/runtime/arcane/modules/AIResponseURLPolicy.js +626 -0
  134. package/runtime/arcane/modules/AnsiText.js +53 -0
  135. package/runtime/arcane/modules/ApiModelDatabase.js +25 -0
  136. package/runtime/arcane/modules/AppDataScope.js +245 -0
  137. package/runtime/arcane/modules/AppearancePreferences.js +28 -0
  138. package/runtime/arcane/modules/ArcaneCommunicationBridge.js +22 -0
  139. package/runtime/arcane/modules/ArcaneNavigationPolicy.js +135 -0
  140. package/runtime/arcane/modules/ArcaneNetworkPolicy.js +255 -0
  141. package/runtime/arcane/modules/AsyncBoundary.js +161 -0
  142. package/runtime/arcane/modules/BrowserTestSuite.js +326 -0
  143. package/runtime/arcane/modules/CalculatorEngine.js +20 -0
  144. package/runtime/arcane/modules/CaseEvidenceIndexer.js +134 -0
  145. package/runtime/arcane/modules/ChartLibrary.js +35 -0
  146. package/runtime/arcane/modules/ChatRecords.js +13 -0
  147. package/runtime/arcane/modules/CommunicationAppController.js +43 -0
  148. package/runtime/arcane/modules/CommunicationHub.js +16 -0
  149. package/runtime/arcane/modules/CommunicationPreferences.js +13 -0
  150. package/runtime/arcane/modules/CommunicationProviderRegistry.js +16 -0
  151. package/runtime/arcane/modules/ComponentContracts.js +586 -0
  152. package/runtime/arcane/modules/ConfiguredAIChatSession.js +288 -0
  153. package/runtime/arcane/modules/ConversationActionItems.js +488 -0
  154. package/runtime/arcane/modules/ConversationClosingReport.js +274 -0
  155. package/runtime/arcane/modules/ConversationTimebox.js +527 -0
  156. package/runtime/arcane/modules/CoreLocalModelCatalog.js +255 -0
  157. package/runtime/arcane/modules/DBLS.js +171 -0
  158. package/runtime/arcane/modules/DBOPFS.js +1154 -0
  159. package/runtime/arcane/modules/DBOPFSWorker.js +116 -0
  160. package/runtime/arcane/modules/DataMaintenance.js +91 -0
  161. package/runtime/arcane/modules/DevelopmentWorkspace.js +74 -0
  162. package/runtime/arcane/modules/DirectoryPicker.js +109 -0
  163. package/runtime/arcane/modules/DocumentNavigation.js +223 -0
  164. package/runtime/arcane/modules/Errors.js +1025 -0
  165. package/runtime/arcane/modules/GifEncoder.js +29 -0
  166. package/runtime/arcane/modules/HTMLImport.js +114 -0
  167. package/runtime/arcane/modules/InMemoryCommunicationProvider.js +14 -0
  168. package/runtime/arcane/modules/IsolatedModelQuestionRunner.js +275 -0
  169. package/runtime/arcane/modules/LocalAIReadiness.js +870 -0
  170. package/runtime/arcane/modules/LocalAIReadinessController.js +156 -0
  171. package/runtime/arcane/modules/MD.js +111 -0
  172. package/runtime/arcane/modules/Mail.js +352 -0
  173. package/runtime/arcane/modules/MailTransport.mjs +180 -0
  174. package/runtime/arcane/modules/Marked.min.js +71 -0
  175. package/runtime/arcane/modules/MemoryRecords.js +44 -0
  176. package/runtime/arcane/modules/MessageAdvisory.js +38 -0
  177. package/runtime/arcane/modules/ModelDefinition.js +189 -0
  178. package/runtime/arcane/modules/Ollama.js +74 -0
  179. package/runtime/arcane/modules/OllamaModelIdentifier.js +21 -0
  180. package/runtime/arcane/modules/OllamaSettings.js +24 -0
  181. package/runtime/arcane/modules/OpenMeteoWeatherProvider.js +14 -0
  182. package/runtime/arcane/modules/PreferenceStore.js +109 -0
  183. package/runtime/arcane/modules/QRCode.min.js +1 -0
  184. package/runtime/arcane/modules/Questionnaire.js +61 -0
  185. package/runtime/arcane/modules/RecordLinkIndex.js +24 -0
  186. package/runtime/arcane/modules/RecordPassageIndex.js +222 -0
  187. package/runtime/arcane/modules/RecordReviewStore.js +94 -0
  188. package/runtime/arcane/modules/RevocableProjectionLedger.js +1623 -0
  189. package/runtime/arcane/modules/RiskSignalAnalyzer.js +37 -0
  190. package/runtime/arcane/modules/ScamRiskPolicy.js +62 -0
  191. package/runtime/arcane/modules/ScopedOPFSCache.js +183 -0
  192. package/runtime/arcane/modules/ScreenCapture.js +20 -0
  193. package/runtime/arcane/modules/SpeechPlayback.js +581 -0
  194. package/runtime/arcane/modules/StaticDocumentCatalog.js +1248 -0
  195. package/runtime/arcane/modules/SystemAppearance.js +20 -0
  196. package/runtime/arcane/modules/SystemPlatformPresentation.js +51 -0
  197. package/runtime/arcane/modules/SystemToolRegistry.js +28 -0
  198. package/runtime/arcane/modules/TerminalClient.js +52 -0
  199. package/runtime/arcane/modules/TerminalCommandRegistry.js +50 -0
  200. package/runtime/arcane/modules/ThemeBootstrap.js +26 -0
  201. package/runtime/arcane/modules/ThemeManager.js +131 -0
  202. package/runtime/arcane/modules/TimeGuard.js +149 -0
  203. package/runtime/arcane/modules/ToolCallRouter.js +83 -0
  204. package/runtime/arcane/modules/WaitForComponent.js +102 -0
  205. package/runtime/arcane/modules/YouTubeMedia.js +16 -0
  206. package/runtime/arcane/modules/uPlot.LICENSE.txt +21 -0
  207. package/runtime/arcane/modules/uPlot.iife.min.js +2 -0
  208. package/runtime/arcane/modules/uPlot.min.css +1 -0
  209. package/runtime/arcane/security/arcane-network-policy.json +6 -0
  210. package/runtime/strong-type/index.js +352 -0
  211. package/runtime/strong-type/licence +21 -0
  212. package/runtime/strong-type/package.json +45 -0
  213. package/schemas/arcane-app-bundle.schema.json +125 -0
  214. package/schemas/arcane-app.schema.json +329 -0
  215. package/schemas/arcane-lock.schema.json +86 -0
  216. package/schemas/arcane-package.schema.json +224 -0
  217. package/schemas/cli-event.schema.json +122 -0
  218. package/schemas/event-stack.schema.json +152 -0
  219. package/schemas/native-build-plan.schema.json +176 -0
  220. package/schemas/target-adapter.schema.json +117 -0
  221. package/src/app-descriptor.mjs +500 -0
  222. package/src/cli/main.mjs +561 -0
  223. package/src/constants.mjs +31 -0
  224. package/src/dev-server.mjs +718 -0
  225. package/src/doctor.mjs +315 -0
  226. package/src/dom-event-instrumentation.mjs +594 -0
  227. package/src/errors.mjs +75 -0
  228. package/src/event-manager.mjs +1342 -0
  229. package/src/event-queue.mjs +138 -0
  230. package/src/events.mjs +219 -0
  231. package/src/index.mjs +177 -0
  232. package/src/integrated-provider-loader.mjs +432 -0
  233. package/src/native-plan.mjs +698 -0
  234. package/src/native-provider-loader.mjs +1126 -0
  235. package/src/packager/core.mjs +2691 -0
  236. package/src/process.mjs +353 -0
  237. package/src/release-bundle.mjs +2523 -0
  238. package/src/repository.mjs +90 -0
  239. package/src/runtime.mjs +452 -0
  240. package/src/scaffold.mjs +380 -0
  241. package/src/targets/index.mjs +436 -0
  242. package/src/templates/assets/app-icon.png +0 -0
  243. package/src/templates/workspace-template.mjs +388 -0
  244. package/src/testing-loader.mjs +9 -0
  245. package/src/testing.mjs +427 -0
  246. package/src/toolchain.mjs +1335 -0
  247. package/src/update-check.mjs +307 -0
  248. package/src/workspace.mjs +449 -0
@@ -0,0 +1,438 @@
1
+ /* layout.css */
2
+
3
+ /* Base styles with default variables */
4
+ :root {
5
+ color-scheme:light;
6
+ --background:#E8EBF0;
7
+ --modal-background:#F8F9FB;
8
+ --text-color:#1F2937;
9
+ --primary-color:#52677F;
10
+ --secondary-color:#D8E1EB;
11
+ --accent-color:#305F8D;
12
+ --border-color:#C6CED8;
13
+ --platinum:#52606F;
14
+ --button-text-color:#FFFFFF;
15
+ --focus-color:#2878B8;
16
+ --success-color:#24804D;
17
+ --danger-color:#B43C3C;
18
+ --shadow-color:rgba(30,41,59,.18);
19
+ --icon-filter:none;
20
+ --file-icon-filter:hue-rotate(-8deg) saturate(.65) brightness(.88);
21
+ }
22
+
23
+ /* Warm Theme */
24
+ :root:not([data-color-scheme]):not([data-arcane-skin]) body.warm {
25
+ --background:#F8EFE5;
26
+ --modal-background:#FFF9F3;
27
+ --text-color:#352A24;
28
+ --primary-color:#AF5822;
29
+ --secondary-color:#F2D0AF;
30
+ --accent-color:#8D4318;
31
+ --border-color:#D8B99B;
32
+ --platinum:#725848;
33
+ --focus-color:#A64E19;
34
+ --file-icon-filter:hue-rotate(160deg) saturate(.85) brightness(.9);
35
+ }
36
+
37
+ /* Curious Theme */
38
+ :root:not([data-color-scheme]):not([data-arcane-skin]) body.curious {
39
+ --background:#EAF5EE;
40
+ --modal-background:#F8FCF9;
41
+ --text-color:#1E3327;
42
+ --primary-color:#287A4E;
43
+ --secondary-color:#CDE8D8;
44
+ --accent-color:#1E6A42;
45
+ --border-color:#AACDB8;
46
+ --platinum:#4D6B5A;
47
+ --focus-color:#1F7548;
48
+ --file-icon-filter:hue-rotate(285deg) saturate(.65) brightness(.82);
49
+ }
50
+
51
+ /* Hopeful Theme */
52
+ :root:not([data-color-scheme]):not([data-arcane-skin]) body.hopeful {
53
+ --background:#EAF3F9;
54
+ --modal-background:#F8FCFF;
55
+ --text-color:#203247;
56
+ --primary-color:#2F6F9F;
57
+ --secondary-color:#CFE4F3;
58
+ --accent-color:#245F8B;
59
+ --border-color:#B5CEDF;
60
+ --platinum:#526C7F;
61
+ --focus-color:#246A9D;
62
+ --file-icon-filter:hue-rotate(345deg) saturate(.65) brightness(.95);
63
+ }
64
+
65
+ /* Harmony Theme */
66
+ :root:not([data-color-scheme]):not([data-arcane-skin]) body.harmony {
67
+ --background:#F2F0E5;
68
+ --modal-background:#FCFAF4;
69
+ --text-color:#303328;
70
+ --primary-color:#90602F;
71
+ --secondary-color:#DCE5C8;
72
+ --accent-color:#386B4F;
73
+ --border-color:#C9C6A9;
74
+ --platinum:#646650;
75
+ --focus-color:#4D7259;
76
+ --file-icon-filter:hue-rotate(150deg) saturate(.55) brightness(.78);
77
+ }
78
+
79
+ /* Warrior Spirit Theme (light)
80
+ Source cues: steel/gunmetal, ember heart, flame orange
81
+ Design intent: calm, confident neutrals with a hopeful flame CTA
82
+ */
83
+ :root:not([data-color-scheme]):not([data-arcane-skin]) body.warrior {
84
+ /* Surfaces */
85
+ --background: #F5F7FA; /* cool off‑white “steel light” */
86
+ --modal-background: #EFF2F6; /* panel on the main surface */
87
+
88
+ /* Text */
89
+ --text-color: #1D232A; /* gunmetal charcoal for body text */
90
+
91
+ /* Brand actions */
92
+ --primary-color: #FF7A1A; /* flame orange (buttons, key actions) */
93
+ --secondary-color: #FFD166; /* ember glow for hovers / highlights */
94
+ --accent-color: #8C1D18; /* deep heart red for accents */
95
+
96
+ /* Lines & neutrals */
97
+ --border-color: #C7CDD6; /* cool steel border */
98
+ --platinum: #A7A9AC; /* neutral “platinum” metal */
99
+
100
+ /* Accessibility: keep button text dark on bright orange/gold */
101
+ --button-text-color: #1D232A; /* ensures AA contrast on primary/hover */
102
+ --file-icon-filter:hue-rotate(160deg) saturate(1.2) brightness(1.03);
103
+ }
104
+
105
+ /* General styles for the page layout */
106
+ html {
107
+ font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
108
+ background: var(--background);
109
+ color: var(--text-color);
110
+ }
111
+
112
+ body {
113
+ display: grid;
114
+ grid-template-columns:11em minmax(0,1fr); /* Sidebar and content split */
115
+ transition:background-color 250ms,color 250ms;
116
+ grid-template-rows: auto 1fr; /* Header and main content */
117
+ height: 100vh;
118
+ margin: 0;
119
+ background: var(--background);
120
+ color:var(--text-color);
121
+ }
122
+
123
+ .header {
124
+ grid-column: 1 / -1; /* Header spans full width */
125
+ }
126
+
127
+ .nav {
128
+ grid-row: 2 / -2; /* Sidebar spans full height, below header */
129
+ }
130
+
131
+ main {
132
+ grid-row: 2 / -1; /* Main content below header */
133
+ background: var(--modal-background);
134
+ border-radius: 0.5em 0 0 0;
135
+ overflow: auto;
136
+ padding: 1em;
137
+ transition:background-color 250ms;
138
+ }
139
+
140
+ main.data-chat{
141
+ display:grid;
142
+ gap:1em;
143
+ grid-template-rows:auto minmax(0,1fr);
144
+ overflow:hidden;
145
+ }
146
+
147
+ .data-workspace{
148
+ height:100%;
149
+ min-height:0;
150
+ }
151
+
152
+ /* Typography */
153
+ h1, h2, h3, h4, h5, h6, p {
154
+ margin: 0.5em 0;
155
+ padding: 0;
156
+ color: var(--text-color);
157
+ font-weight: 400;
158
+ }
159
+
160
+ strong {
161
+ color:var(--accent-color);
162
+ font-weight: bold;
163
+ }
164
+
165
+ a{
166
+ color:var(--accent-color);
167
+ text-underline-offset:.18em;
168
+ }
169
+
170
+ /* Form inputs and buttons */
171
+ input, textarea {
172
+ box-sizing:border-box;
173
+ font:inherit;
174
+ padding: 1em;
175
+ border: 1px solid var(--border-color);
176
+ border-radius: 0.5em;
177
+ background-color: var(--modal-background);
178
+ color: var(--text-color);
179
+ margin: 0.5em 0;
180
+ transition:border-color 180ms,box-shadow 180ms;
181
+ }
182
+
183
+ input::placeholder,
184
+ textarea::placeholder{
185
+ color:var(--platinum);
186
+ opacity:.78;
187
+ }
188
+
189
+ button {
190
+ font:inherit;
191
+ padding: 0.5em 1em;
192
+ margin: 10px auto;
193
+ border-radius: 0.5em;
194
+ border: 1px solid var(--border-color);
195
+ background-color: var(--primary-color);
196
+ color: var(--button-text-color, var(--text-color));
197
+ box-shadow:0 .12em .35em var(--shadow-color);
198
+ transition:background-color 180ms,border-color 180ms,box-shadow 180ms,transform 120ms;
199
+ cursor: pointer;
200
+ }
201
+
202
+ button:hover {
203
+ background-color: var(--secondary-color);
204
+ color:var(--text-color);
205
+ box-shadow:0 .2em .55em var(--shadow-color);
206
+ }
207
+
208
+ button:active:not(:disabled){
209
+ transform:translateY(1px);
210
+ }
211
+
212
+ button:disabled {
213
+ opacity: 0.5;
214
+ background-color: var(--border-color);
215
+ cursor: not-allowed;
216
+ }
217
+
218
+ select {
219
+ font:inherit;
220
+ padding: 0.5em;
221
+ border: 1px solid var(--border-color);
222
+ border-radius: 0.5em;
223
+ background-color: var(--modal-background);
224
+ color: var(--text-color);
225
+ appearance: none;
226
+ transition:border-color 180ms,box-shadow 180ms;
227
+ }
228
+
229
+ input:hover,
230
+ textarea:hover,
231
+ select:hover{
232
+ border-color:var(--platinum);
233
+ }
234
+
235
+ button:focus-visible,
236
+ input:focus-visible,
237
+ textarea:focus-visible,
238
+ select:focus-visible,
239
+ a:focus-visible{
240
+ outline:.18em solid var(--focus-color);
241
+ outline-offset:.14em;
242
+ }
243
+
244
+ ::selection{
245
+ background:var(--secondary-color);
246
+ color:var(--text-color);
247
+ }
248
+
249
+ html{
250
+ scrollbar-color:var(--platinum) var(--background);
251
+ }
252
+
253
+ code{
254
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
255
+ font-size: 0.92em;
256
+ line-height: 1.5;
257
+ text-align: left;
258
+ }
259
+
260
+ /* Inline code */
261
+ :not(pre) > code{
262
+ padding: 0.15em 0.35em;
263
+ border-radius: 0.35em;
264
+ background: var(--modal-background);
265
+ color: var(--accent-color);
266
+ white-space: break-spaces;
267
+ }
268
+
269
+
270
+
271
+ /* Code blocks */
272
+ pre{
273
+ margin: 1em 0;
274
+ padding: 1em;
275
+ border-radius: 0.65em;
276
+ background: var(--background);
277
+ color: var(--text-color);
278
+ overflow-x: auto;
279
+ border: 1px solid var(--border-color);
280
+ white-space: pre-wrap;
281
+ overflow-wrap: anywhere;
282
+ text-align: left;
283
+ }
284
+
285
+ /* Code inside pre */
286
+ pre code{
287
+ display: block;
288
+ padding: 0;
289
+ background: transparent;
290
+ color: inherit;
291
+ white-space: pre;
292
+ overflow-wrap: normal;
293
+ tab-size: 4;
294
+ }
295
+
296
+ /* Visibility classes */
297
+ .visible {
298
+ display: block !important;
299
+ }
300
+
301
+ .hidden {
302
+ display: none !important;
303
+ }
304
+
305
+ /* Drag region */
306
+ .block-input {
307
+ -webkit-app-region: drag;
308
+ }
309
+
310
+ /* Media Queries for responsiveness */
311
+ @media (max-width: 48em) {
312
+ body {
313
+ grid-template-columns:3.25em minmax(0,1fr);
314
+ }
315
+
316
+ button {
317
+ font-size:1em;
318
+ }
319
+
320
+ textarea, input {
321
+ width: 100%;
322
+ }
323
+
324
+ main{
325
+ padding:.75em;
326
+ }
327
+ }
328
+
329
+ @media (prefers-reduced-motion:reduce){
330
+ *,
331
+ *::before,
332
+ *::after{
333
+ animation-duration:.01ms !important;
334
+ animation-iteration-count:1 !important;
335
+ scroll-behavior:auto !important;
336
+ transition-duration:.01ms !important;
337
+ }
338
+ }
339
+
340
+ @media (prefers-color-scheme: dark) {
341
+ /* Base Dark Mode Variables */
342
+ :root:not([data-color-scheme]) {
343
+ color-scheme:dark;
344
+ --background:#0F1220;
345
+ --modal-background:#191D31;
346
+ --text-color:#EBEDF5;
347
+ --primary-color:#D94C94;
348
+ --secondary-color:#43B8AD;
349
+ --accent-color:#A58ADF;
350
+ --border-color:#3A4262;
351
+ --platinum:#AEB5CA;
352
+ --button-text-color:#161724;
353
+ --focus-color:#65D8CE;
354
+ --success-color:#61C98B;
355
+ --danger-color:#F07D7D;
356
+ --shadow-color:rgba(0,0,0,.42);
357
+ --icon-filter:brightness(0) invert(.78);
358
+ --file-icon-filter:hue-rotate(95deg) saturate(.8) brightness(1.12);
359
+ }
360
+
361
+ /* Dark Mode - Warm Theme */
362
+ :root:not([data-color-scheme]):not([data-arcane-skin]) body.warm {
363
+ --background:#1D1613;
364
+ --modal-background:#2B211C;
365
+ --text-color:#F1E6DD;
366
+ --primary-color:#DF7C3B;
367
+ --secondary-color:#F1AA72;
368
+ --accent-color:#F0B783;
369
+ --border-color:#6A4939;
370
+ --platinum:#C9AB99;
371
+ --button-text-color:#24160E;
372
+ --focus-color:#FFB27A;
373
+ }
374
+
375
+ /* Dark Mode - Curious Theme */
376
+ :root:not([data-color-scheme]):not([data-arcane-skin]) body.curious {
377
+ --background:#101B16;
378
+ --modal-background:#1B2A22;
379
+ --text-color:#DFF1E6;
380
+ --primary-color:#4FAE78;
381
+ --secondary-color:#79C89B;
382
+ --accent-color:#86D1A7;
383
+ --border-color:#386247;
384
+ --platinum:#A6C4B0;
385
+ --button-text-color:#102117;
386
+ --focus-color:#8ED7AE;
387
+ }
388
+
389
+ /* Dark Mode - Hopeful Theme */
390
+ :root:not([data-color-scheme]):not([data-arcane-skin]) body.hopeful {
391
+ --background:#111821;
392
+ --modal-background:#1D2935;
393
+ --text-color:#E1EBF4;
394
+ --primary-color:#67A9D6;
395
+ --secondary-color:#96C7E8;
396
+ --accent-color:#A6D4F1;
397
+ --border-color:#3A5A72;
398
+ --platinum:#A8BAC9;
399
+ --button-text-color:#11202B;
400
+ --focus-color:#9CD2F5;
401
+ }
402
+
403
+ /* Dark Mode - Harmony Theme */
404
+ :root:not([data-color-scheme]):not([data-arcane-skin]) body.harmony {
405
+ --background:#191A14;
406
+ --modal-background:#282A21;
407
+ --text-color:#ECEBDB;
408
+ --primary-color:#D48A4B;
409
+ --secondary-color:#87B58E;
410
+ --accent-color:#E0AA70;
411
+ --border-color:#5C604A;
412
+ --platinum:#B9B9A3;
413
+ --button-text-color:#211A12;
414
+ --focus-color:#A7CEA9;
415
+ }
416
+
417
+ /* Warrior Spirit — Dark */
418
+ :root:not([data-color-scheme]):not([data-arcane-skin]) body.warrior {
419
+ --background: #0E1216; /* night steel */
420
+ --modal-background: #151A20; /* panel against night steel */
421
+ --text-color: #E9EEF3; /* soft steel-white for text */
422
+
423
+ /* Keep flame as the action color; hover warms slightly */
424
+ --primary-color: #FF7A1A; /* flame orange (unchanged) */
425
+ --secondary-color: #FFB24A; /* warm hover on dark */
426
+ --accent-color: #E04F3D; /* ember red that reads on dark */
427
+ --border-color: #26313B; /* subdued steel line */
428
+ --platinum:#A9B3BD;
429
+ --focus-color:#FFB24A;
430
+
431
+ /* Critical for contrast: dark text on bright buttons */
432
+ --button-text-color: #1D232A;
433
+ }
434
+
435
+ a{
436
+ color: var(--secondary-color);
437
+ }
438
+ }