sh3-core 0.15.4 → 0.16.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 (224) hide show
  1. package/dist/BrandSlot.svelte +9 -9
  2. package/dist/{Shell.svelte → Sh3.svelte} +65 -65
  3. package/dist/Sh3.svelte.d.ts +5 -0
  4. package/dist/__test__/render.js +1 -1
  5. package/dist/actions/ActionPanel.svelte +3 -3
  6. package/dist/actions/CommandPalette.svelte +2 -2
  7. package/dist/actions/MenuBar.svelte +1 -1
  8. package/dist/actions/MenuBar.test.js +1 -1
  9. package/dist/actions/MenuButton.svelte +3 -3
  10. package/dist/actions/dispatcher.svelte.js +1 -1
  11. package/dist/actions/listActive.js +1 -1
  12. package/dist/actions/listeners.js +6 -6
  13. package/dist/actions/selection.svelte.d.ts +2 -2
  14. package/dist/actions/selection.svelte.js +4 -4
  15. package/dist/actions/selection.test.js +1 -1
  16. package/dist/actions/{shellActions.test.js → sh3Actions.test.js} +14 -14
  17. package/dist/actions/state.svelte.d.ts +3 -3
  18. package/dist/actions/state.svelte.js +3 -3
  19. package/dist/actions/syncMountedViewIds.test.js +1 -1
  20. package/dist/actions/types.d.ts +1 -1
  21. package/dist/api.d.ts +5 -5
  22. package/dist/api.js +7 -7
  23. package/dist/app/admin/ApiKeysView.svelte +9 -9
  24. package/dist/app/admin/AuthSettingsView.svelte +6 -6
  25. package/dist/app/admin/SystemView.svelte +12 -12
  26. package/dist/app/admin/UsersView.svelte +8 -8
  27. package/dist/app/store/AppUpdateAvailableModal.svelte +14 -14
  28. package/dist/app/store/PermissionConfirmModal.svelte +20 -20
  29. package/dist/app/store/StoreView.svelte +51 -51
  30. package/dist/app/store/UninstallAppDialog.svelte +14 -14
  31. package/dist/app/store/storeShard.svelte.js +1 -1
  32. package/dist/app/store/verbs.js +1 -1
  33. package/dist/apps/lifecycle.d.ts +1 -1
  34. package/dist/apps/lifecycle.js +4 -4
  35. package/dist/apps/lifecycle.test.js +5 -5
  36. package/dist/apps/registry.svelte.d.ts +2 -2
  37. package/dist/apps/registry.svelte.js +3 -3
  38. package/dist/apps/types.d.ts +1 -1
  39. package/dist/auth/GuestBanner.svelte +19 -19
  40. package/dist/auth/SignInWall.svelte +17 -17
  41. package/dist/auth/auth.svelte.d.ts +1 -1
  42. package/dist/auth/auth.svelte.js +1 -1
  43. package/dist/boot/satellitePayload.js +1 -1
  44. package/dist/color/api.d.ts +1 -1
  45. package/dist/color/api.js +1 -1
  46. package/dist/color/{shell-api.js → sh3-api.js} +3 -3
  47. package/dist/conflicts/ConflictModal.svelte +1 -1
  48. package/dist/conflicts/ConflictModal.svelte.d.ts +1 -1
  49. package/dist/conflicts/DetailView.svelte +19 -19
  50. package/dist/conflicts/PromptView.svelte +9 -9
  51. package/dist/conflicts/adapter-documents.js +1 -1
  52. package/dist/conflicts/api.d.ts +1 -1
  53. package/dist/conflicts/api.js +2 -2
  54. package/dist/conflicts/renderer-registry.js +1 -1
  55. package/dist/conflicts/renderers/MetaOnlyRenderer.svelte +8 -8
  56. package/dist/conflicts/renderers/TextDiffRenderer.svelte +15 -15
  57. package/dist/conflicts/renderers/index.js +1 -1
  58. package/dist/conflicts/resolve-primitive.js +1 -1
  59. package/dist/conflicts/{shell-api.js → sh3-api.js} +2 -2
  60. package/dist/contributions/registry.js +1 -1
  61. package/dist/createShell.d.ts +2 -2
  62. package/dist/createShell.js +6 -6
  63. package/dist/host-entry.d.ts +1 -1
  64. package/dist/host-entry.js +2 -2
  65. package/dist/host.js +2 -2
  66. package/dist/index.d.ts +1 -1
  67. package/dist/index.js +2 -2
  68. package/dist/keys/ConsentDialog.svelte +15 -15
  69. package/dist/keys/consent.svelte.d.ts +2 -2
  70. package/dist/keys/consent.svelte.js +3 -3
  71. package/dist/keys/revocation-bus.svelte.d.ts +3 -3
  72. package/dist/keys/revocation-bus.svelte.js +3 -3
  73. package/dist/layout/DragPreview.svelte +9 -9
  74. package/dist/layout/LayoutRenderer.browser.test.js +2 -2
  75. package/dist/layout/LayoutRenderer.svelte +4 -4
  76. package/dist/layout/SlotContainer.svelte +12 -12
  77. package/dist/layout/SlotDropZone.svelte +2 -2
  78. package/dist/layout/inspection.d.ts +1 -1
  79. package/dist/layout/inspection.js +1 -1
  80. package/dist/layout/store.svelte.js +3 -3
  81. package/dist/layout/types.d.ts +1 -1
  82. package/dist/layouts-shard/LayoutSaveModal.svelte +20 -20
  83. package/dist/layouts-shard/LayoutsSection.svelte +11 -11
  84. package/dist/layouts-shard/filter.test.js +3 -3
  85. package/dist/layouts-shard/layoutsApi.test.js +3 -3
  86. package/dist/layouts-shard/layoutsShard.svelte.test.js +7 -7
  87. package/dist/migrations/mode-id-rename.js +2 -2
  88. package/dist/overlays/ConfirmDialog.svelte +8 -8
  89. package/dist/overlays/EntityAppearanceModal.svelte +19 -19
  90. package/dist/overlays/FloatFrame.svelte +20 -20
  91. package/dist/overlays/FloatLayer.svelte +1 -1
  92. package/dist/overlays/ModalFrame.svelte +5 -5
  93. package/dist/overlays/PopupFrame.svelte +4 -4
  94. package/dist/overlays/ToastItem.svelte +12 -12
  95. package/dist/overlays/float.d.ts +2 -2
  96. package/dist/overlays/float.js +3 -3
  97. package/dist/overlays/float.test.js +6 -6
  98. package/dist/overlays/modal.js +1 -1
  99. package/dist/overlays/modal.test.js +2 -2
  100. package/dist/overlays/parentHost.js +2 -2
  101. package/dist/overlays/parentHost.test.js +5 -5
  102. package/dist/overlays/popup.js +2 -2
  103. package/dist/overlays/popup.test.js +2 -2
  104. package/dist/overlays/roots.js +4 -4
  105. package/dist/overlays/toast.js +1 -1
  106. package/dist/overlays/types.js +3 -3
  107. package/dist/primitives/Button.svelte +16 -16
  108. package/dist/primitives/Collapsible.svelte +11 -11
  109. package/dist/primitives/ResizableSplitter.svelte +10 -10
  110. package/dist/primitives/TabbedPanel.svelte +19 -19
  111. package/dist/primitives/base.css +57 -57
  112. package/dist/primitives/widgets/ColorSwatch.svelte +15 -15
  113. package/dist/primitives/widgets/ColorSwatch.svelte.test.js +4 -4
  114. package/dist/primitives/widgets/Field.svelte +20 -20
  115. package/dist/primitives/widgets/FilePicker.svelte +13 -13
  116. package/dist/primitives/widgets/IconPicker.svelte +14 -14
  117. package/dist/primitives/widgets/IconToggleGroup.svelte +14 -14
  118. package/dist/primitives/widgets/NumberInput.svelte +17 -17
  119. package/dist/primitives/widgets/PickerList.svelte +17 -17
  120. package/dist/primitives/widgets/RangeSlider.svelte +16 -16
  121. package/dist/primitives/widgets/Segmented.svelte +16 -16
  122. package/dist/primitives/widgets/Select.svelte +14 -14
  123. package/dist/primitives/widgets/Select.svelte.test.js +2 -2
  124. package/dist/primitives/widgets/Slider.svelte +20 -20
  125. package/dist/primitives/widgets/SliderGroup.svelte +2 -2
  126. package/dist/primitives/widgets/Textarea.svelte +13 -13
  127. package/dist/primitives/widgets/_select-listbox.svelte +15 -15
  128. package/dist/projects/session-state.svelte.js +1 -1
  129. package/dist/projects-shard/DeleteProjectDialog.svelte +12 -12
  130. package/dist/projects-shard/ProjectManage.svelte +25 -25
  131. package/dist/projects-shard/ProjectsSection.svelte +12 -12
  132. package/dist/registry/installer.d.ts +2 -2
  133. package/dist/registry/installer.js +2 -2
  134. package/dist/registry/loader.js +1 -1
  135. package/dist/registry/permission-descriptions.js +2 -2
  136. package/dist/registry/permission-descriptions.test.js +1 -1
  137. package/dist/runtime/runVerb-shell.test.js +2 -2
  138. package/dist/runtime/runVerb.js +4 -4
  139. package/dist/runtime/runVerb.test.js +4 -4
  140. package/dist/satellite/SatelliteShell.svelte +2 -2
  141. package/dist/{shell → sh3}/views/KeysAndPeers.svelte +7 -7
  142. package/dist/sh3Api/headless.d.ts +4 -0
  143. package/dist/{shell-shard/shellApi.js → sh3Api/headless.js} +5 -5
  144. package/dist/{shell-shard/shellApi.svelte.test.js → sh3Api/headless.svelte.test.js} +11 -11
  145. package/dist/{shellApi → sh3Api}/window.js +2 -2
  146. package/dist/{shellApi → sh3Api}/window.test.js +1 -1
  147. package/dist/{shellRuntime.svelte.d.ts → sh3Runtime.svelte.d.ts} +11 -11
  148. package/dist/{shellRuntime.svelte.js → sh3Runtime.svelte.js} +10 -10
  149. package/dist/{shellRuntime.svelte.test.js → sh3Runtime.svelte.test.js} +10 -10
  150. package/dist/sh3core-shard/AppInfoView.svelte +19 -19
  151. package/dist/sh3core-shard/{ShellHome.svelte → Sh3Home.svelte} +82 -82
  152. package/dist/sh3core-shard/Sh3Home.svelte.d.ts +3 -0
  153. package/dist/sh3core-shard/{ShellTitle.svelte → Sh3Title.svelte} +11 -11
  154. package/dist/sh3core-shard/Sh3Title.svelte.d.ts +3 -0
  155. package/dist/sh3core-shard/appActions.js +3 -3
  156. package/dist/sh3core-shard/sh3coreShard.svelte.js +7 -7
  157. package/dist/shards/activate.svelte.d.ts +1 -1
  158. package/dist/shards/activate.svelte.js +6 -6
  159. package/dist/shards/types.d.ts +5 -5
  160. package/dist/shards/types.js +2 -2
  161. package/dist/shell-shard/CommandLine.svelte +7 -7
  162. package/dist/shell-shard/InputLine.svelte +3 -3
  163. package/dist/shell-shard/ScrollbackView.svelte +2 -2
  164. package/dist/shell-shard/Terminal.svelte +5 -5
  165. package/dist/shell-shard/Terminal.svelte.d.ts +2 -2
  166. package/dist/shell-shard/dispatch-custom.test.js +2 -2
  167. package/dist/shell-shard/dispatch-gating.test.js +2 -2
  168. package/dist/shell-shard/dispatch-invoke.test.js +2 -2
  169. package/dist/shell-shard/dispatch-to-terminal.js +1 -1
  170. package/dist/shell-shard/dispatch.d.ts +2 -2
  171. package/dist/shell-shard/dispatch.js +2 -2
  172. package/dist/shell-shard/entries/PromptEntry.svelte +4 -4
  173. package/dist/shell-shard/entries/StatusEntry.svelte +4 -4
  174. package/dist/shell-shard/entries/TextEntry.svelte +3 -3
  175. package/dist/shell-shard/locateSlot.test.js +9 -9
  176. package/dist/shell-shard/manifest.js +2 -2
  177. package/dist/shell-shard/registry.d.ts +2 -2
  178. package/dist/shell-shard/rich/AppCard.svelte +1 -1
  179. package/dist/shell-shard/rich/AppsTable.svelte +1 -1
  180. package/dist/shell-shard/rich/HelpTable.svelte +1 -1
  181. package/dist/shell-shard/rich/HistoryList.svelte +1 -1
  182. package/dist/shell-shard/rich/ViewsTable.svelte +1 -1
  183. package/dist/shell-shard/rich/ZoneTree.svelte +2 -2
  184. package/dist/shell-shard/shellShard.svelte.d.ts +1 -1
  185. package/dist/shell-shard/shellShard.svelte.js +8 -8
  186. package/dist/shell-shard/terminal-dispatch.test.js +2 -2
  187. package/dist/shell-shard/toolbar/Toolbar.svelte +4 -4
  188. package/dist/shell-shard/toolbar/Toolbar.svelte.d.ts +2 -2
  189. package/dist/shell-shard/toolbar/slots/BusySlot.svelte +2 -2
  190. package/dist/shell-shard/toolbar/slots/FocusLockSlot.svelte +2 -2
  191. package/dist/shell-shard/toolbar/slots/ModeSlot.svelte +1 -1
  192. package/dist/shell-shard/toolbar/slots/TargetShardSlot.svelte +1 -1
  193. package/dist/shell-shard/toolbar/slots.d.ts +3 -3
  194. package/dist/shell-shard/verbs/apps.js +3 -3
  195. package/dist/shell-shard/verbs/help.js +1 -1
  196. package/dist/shell-shard/verbs/help.svelte.test.js +1 -1
  197. package/dist/shell-shard/verbs/history.js +1 -1
  198. package/dist/shell-shard/verbs/mode.js +2 -2
  199. package/dist/shell-shard/verbs/mode.test.js +2 -2
  200. package/dist/shell-shard/verbs/shards.js +1 -1
  201. package/dist/shell-shard/verbs/views.js +8 -8
  202. package/dist/shell-shard/verbs/zones.js +2 -2
  203. package/dist/state/zones.svelte.d.ts +2 -2
  204. package/dist/state/zones.svelte.js +4 -4
  205. package/dist/theme.d.ts +3 -3
  206. package/dist/theme.js +5 -5
  207. package/dist/tokens.css +68 -68
  208. package/dist/verbs/types.d.ts +5 -5
  209. package/dist/verbs/types.js +1 -1
  210. package/dist/version.d.ts +1 -1
  211. package/dist/version.js +1 -1
  212. package/package.json +1 -1
  213. package/dist/Shell.svelte.d.ts +0 -5
  214. package/dist/sh3core-shard/ShellHome.svelte.d.ts +0 -3
  215. package/dist/sh3core-shard/ShellTitle.svelte.d.ts +0 -3
  216. package/dist/shell-shard/shellApi.d.ts +0 -4
  217. /package/dist/actions/{shellActions.test.d.ts → sh3Actions.test.d.ts} +0 -0
  218. /package/dist/color/{shell-api.d.ts → sh3-api.d.ts} +0 -0
  219. /package/dist/conflicts/{shell-api.d.ts → sh3-api.d.ts} +0 -0
  220. /package/dist/{shell → sh3}/views/KeysAndPeers.svelte.d.ts +0 -0
  221. /package/dist/{shell-shard/shellApi.svelte.test.d.ts → sh3Api/headless.svelte.test.d.ts} +0 -0
  222. /package/dist/{shellApi → sh3Api}/window.d.ts +0 -0
  223. /package/dist/{shellApi → sh3Api}/window.test.d.ts +0 -0
  224. /package/dist/{shellRuntime.svelte.test.d.ts → sh3Runtime.svelte.test.d.ts} +0 -0
@@ -32,7 +32,7 @@ function notifyActiveChange() {
32
32
  /**
33
33
  * Subscribe to any change that could affect the set of currently-active
34
34
  * actions or their resolved shortcuts (app/view/focus/selection/bindings
35
- * transitions). Call sites outside this module (e.g., the shell
35
+ * transitions). Call sites outside this module (e.g., the sh3
36
36
  * assembling registry-change notifications) dispatch via
37
37
  * {@link __notifyActiveChange}.
38
38
  */
@@ -40,7 +40,7 @@ export function onActiveChange(cb) {
40
40
  activeChangeListeners.add(cb);
41
41
  return () => { activeChangeListeners.delete(cb); };
42
42
  }
43
- /** Internal — fired by the shell runtime when the action registry mutates. */
43
+ /** Internal — fired by the sh3 runtime when the action registry mutates. */
44
44
  export function __notifyActiveChange() {
45
45
  notifyActiveChange();
46
46
  }
@@ -63,7 +63,7 @@ export function setMountedViewIds(ids) {
63
63
  * One-shot snapshot: walk the active layout tree and update
64
64
  * `mountedViewIds` to match. Non-reactive — call from an `$effect` that
65
65
  * reads `layoutStore.tree` to keep the set in sync as the tree mutates.
66
- * Shell.svelte owns that effect during boot.
66
+ * Sh3.svelte owns that effect during boot.
67
67
  */
68
68
  export function syncMountedViewIdsFromLayout() {
69
69
  const refs = collectTreeSlotRefs(layoutStore.tree);
@@ -59,7 +59,7 @@ describe('syncMountedViewIdsFromLayout', () => {
59
59
  ],
60
60
  }));
61
61
  await launchApp('sync-app-float');
62
- // Bind the float manager to the live tree (Shell.svelte does this at boot).
62
+ // Bind the float manager to the live tree (Sh3.svelte does this at boot).
63
63
  bindFloatStore(layoutStore.floats, () => ({ w: 1024, h: 768 }));
64
64
  // Popout the anchor → creates a float with view:anchor inside.
65
65
  popoutView('anchor');
@@ -118,7 +118,7 @@ export interface ResolvedAction {
118
118
  export type BindingSource = 'default' | 'user' | 'disabled' | 'none';
119
119
  /**
120
120
  * Read-only snapshot describing one action that is currently active.
121
- * Produced by `shell.actions.listActive()`. One descriptor per action id,
121
+ * Produced by `sh3.actions.listActive()`. One descriptor per action id,
122
122
  * reporting the innermost active scope (same tier order as keyboard
123
123
  * dispatch: element > focus > view > app > home).
124
124
  */
package/dist/api.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { shell } from './shellRuntime.svelte';
2
- export type { Shell } from './shellRuntime.svelte';
1
+ export { sh3 } from './sh3Runtime.svelte';
2
+ export type { Sh3 } from './sh3Runtime.svelte';
3
3
  export type { Shard, ShardManifest, SourceShard, SourceShardManifest, ShardContext, ViewDeclaration, ViewFactory, ViewHandle, MountContext, } from './shards/types';
4
4
  export type { LayoutNode, SplitNode, TabsNode, SlotNode, TabEntry, SplitDirection, SizeMode, LayoutTree, FloatEntry, LayoutPreset, CanonicalPreset, TreeRootRef as SlotLocation, } from './layout/types';
5
5
  export type { ActionDescriptor, ActiveActionDescriptor, BindingSource, AtomicScope, ActionScope, } from './actions/types';
@@ -18,8 +18,8 @@ export { listRegisteredApps, getActiveApp } from './apps/registry.svelte';
18
18
  export { launchApp, returnToHome, unregisterApp } from './apps/lifecycle';
19
19
  export { pushNavEntry } from './navigation';
20
20
  export type { NavEntry, NavEntryHandle } from './navigation';
21
- export { spawnSatellite } from './shellApi/window';
22
- export type { SpawnSatelliteOptions } from './shellApi/window';
21
+ export { spawnSatellite } from './sh3Api/window';
22
+ export type { SpawnSatelliteOptions } from './sh3Api/window';
23
23
  export type { SatellitePayload } from './boot/satellitePayload';
24
24
  export { inspectActiveLayout, spliceIntoActiveLayout, dockIntoActiveLayout, focusTab, focusView, collapseChild, expandChild, closeTab, popoutView, dockFloat, locateSlot, } from './layout/inspection';
25
25
  export type { DocumentHandle, DocumentHandleOptions, DocumentFormat, DocumentMeta, DocumentChange, AutosaveController, } from './documents/types';
@@ -49,7 +49,7 @@ export declare const capabilities: {
49
49
  readonly hotInstall: boolean;
50
50
  };
51
51
  export type { ServerShard, ServerShardContext, TenantDocumentAPI } from './server-shard/types';
52
- export type { Verb, VerbContext, ShellApi, VerbSchema, PortableJSONSchema, DispatchToTerminalResult, } from './verbs/types';
52
+ export type { Verb, VerbContext, Sh3Api, VerbSchema, PortableJSONSchema, DispatchToTerminalResult, } from './verbs/types';
53
53
  export type { Scrollback } from './shell-shard/scrollback.svelte';
54
54
  export type { SessionClient } from './shell-shard/session-client.svelte';
55
55
  export { listVerbs } from './shards/registry';
package/dist/api.js CHANGED
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * What belongs here:
7
7
  * - Types that shards and apps consume (Shard, App, ShardContext, etc.)
8
- * - The `shell` runtime singleton (modal/popup/toast)
8
+ * - The `sh3` runtime singleton (modal/popup/toast)
9
9
  * - Layout inspection/mutation helpers for advanced shards (added in
10
10
  * Task 12)
11
11
  * - Host actions callable from inside views (launchApp, returnToHome,
@@ -22,15 +22,15 @@
22
22
  * now the convention is documented and honored by hand.
23
23
  */
24
24
  // Runtime singleton.
25
- export { shell } from './shellRuntime.svelte';
25
+ export { sh3 } from './sh3Runtime.svelte';
26
26
  export { PERMISSION_STATE_MANAGE } from './state/types';
27
- // Host actions callable from inside views (shell home, status bar, etc.).
27
+ // Host actions callable from inside views (sh3 home, status bar, etc.).
28
28
  export { listRegisteredApps, getActiveApp } from './apps/registry.svelte';
29
29
  export { launchApp, returnToHome, unregisterApp } from './apps/lifecycle';
30
30
  // Navigation — apps push in-app nav entries; framework drives back/forward.
31
31
  export { pushNavEntry } from './navigation';
32
- // Multi-window — spawn a satellite native window from the host shell.
33
- export { spawnSatellite } from './shellApi/window';
32
+ // Multi-window — spawn a satellite native window from the host sh3.
33
+ export { spawnSatellite } from './sh3Api/window';
34
34
  // Layout inspection / mutation for advanced shards (diagnostic, etc.).
35
35
  export { inspectActiveLayout, spliceIntoActiveLayout, dockIntoActiveLayout, focusTab, focusView, collapseChild, expandChild, closeTab, popoutView, dockFloat, locateSlot, } from './layout/inspection';
36
36
  export { PERMISSION_DOCUMENTS_BROWSE, PERMISSION_DOCUMENTS_READ, PERMISSION_DOCUMENTS_WRITE, } from './documents/types';
@@ -62,7 +62,7 @@ export { listVerbs } from './shards/registry';
62
62
  // advanced use cases like cross-tab dispatch wrappers; most consumers
63
63
  // should call ctx.runVerb).
64
64
  export { runVerbProgrammatic } from './runtime';
65
- // Shell mode contributions (external shards extend the shell with new modes).
65
+ // Sh3 mode contributions (external shards extend the sh3 with new modes).
66
66
  export { registerShellMode } from './shell-shard/registerShellMode';
67
67
  export { SHELL_MODE_CONTRIBUTION_POINT } from './shell-shard/contract';
68
68
  // Package version.
@@ -75,7 +75,7 @@ export const FRAMEWORK_SHARD_IDS = [
75
75
  'sh3-store',
76
76
  'sh3-admin',
77
77
  ];
78
- // Theme token override API (shell-level theming support).
78
+ // Theme token override API (sh3-level theming support).
79
79
  export { setTokenOverrides, clearTokenOverrides, getTokenOverrides, } from './theme';
80
80
  // UI primitives for shards and apps. Must live on the public shim surface
81
81
  // (api.ts) — not just index.ts — so dynamically loaded bundles can resolve
@@ -137,22 +137,22 @@
137
137
  </div>
138
138
 
139
139
  <style>
140
- .admin-keys { padding: 24px; font-family: system-ui, sans-serif; color: var(--shell-fg); }
140
+ .admin-keys { padding: 24px; font-family: system-ui, sans-serif; color: var(--sh3-fg); }
141
141
  .admin-keys-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
142
142
  .admin-keys-header h2 { margin: 0; font-size: 18px; }
143
143
  .admin-create-form { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; max-width: 400px; }
144
- .admin-input { padding: 8px 12px; background: var(--shell-bg, #1a1a2e); color: var(--shell-fg); border: 1px solid var(--shell-border, #3a3a5c); border-radius: var(--shell-radius, 6px); font-size: 13px; }
144
+ .admin-input { padding: 8px 12px; background: var(--sh3-bg, #1a1a2e); color: var(--sh3-fg); border: 1px solid var(--sh3-border, #3a3a5c); border-radius: var(--sh3-radius, 6px); font-size: 13px; }
145
145
  .admin-btn { font-weight: 600; font-size: 13px; }
146
146
  .admin-btn:disabled { opacity: 0.6; cursor: not-allowed; }
147
- .admin-btn-secondary { background: transparent; color: var(--shell-fg-subtle); border: 1px solid var(--shell-border); font-size: 12px; }
148
- .admin-btn-danger { background: transparent; color: var(--shell-error, #d32f2f); border: 1px solid var(--shell-error, #d32f2f); font-size: 12px; }
147
+ .admin-btn-secondary { background: transparent; color: var(--sh3-fg-subtle); border: 1px solid var(--sh3-border); font-size: 12px; }
148
+ .admin-btn-danger { background: transparent; color: var(--sh3-error, #d32f2f); border: 1px solid var(--sh3-error, #d32f2f); font-size: 12px; }
149
149
  .admin-key-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
150
- .admin-key-item { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; background: var(--shell-bg-elevated, #252540); border: 1px solid var(--shell-border, #3a3a5c); border-radius: var(--shell-radius, 6px); }
150
+ .admin-key-item { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; background: var(--sh3-bg-elevated, #252540); border: 1px solid var(--sh3-border, #3a3a5c); border-radius: var(--sh3-radius, 6px); }
151
151
  .admin-key-info { display: flex; flex-direction: column; gap: 2px; }
152
152
  .admin-key-label { font-weight: 600; }
153
- .admin-key-meta { font-size: 11px; color: var(--shell-fg-subtle); }
154
- .admin-key-value { font-size: 12px; color: var(--shell-fg-muted); background: var(--shell-bg, #1a1a2e); padding: 2px 6px; border-radius: 3px; margin-top: 2px; word-break: break-all; }
153
+ .admin-key-meta { font-size: 11px; color: var(--sh3-fg-subtle); }
154
+ .admin-key-value { font-size: 12px; color: var(--sh3-fg-muted); background: var(--sh3-bg, #1a1a2e); padding: 2px 6px; border-radius: 3px; margin-top: 2px; word-break: break-all; }
155
155
  .admin-key-actions { display: flex; gap: 6px; flex-shrink: 0; }
156
- .admin-muted { color: var(--shell-fg-muted); font-style: italic; }
157
- .admin-error { color: var(--shell-error, #d32f2f); font-size: 13px; }
156
+ .admin-muted { color: var(--sh3-fg-muted); font-style: italic; }
157
+ .admin-error { color: var(--sh3-error, #d32f2f); font-size: 13px; }
158
158
  </style>
@@ -88,18 +88,18 @@
88
88
  </div>
89
89
 
90
90
  <style>
91
- .admin-auth { padding: 24px; font-family: system-ui, sans-serif; color: var(--shell-fg); }
91
+ .admin-auth { padding: 24px; font-family: system-ui, sans-serif; color: var(--sh3-fg); }
92
92
  .admin-auth h2 { margin: 0 0 16px; font-size: 18px; }
93
93
  .admin-auth-fields { display: flex; flex-direction: column; gap: 16px; max-width: 480px; }
94
94
  .admin-toggle { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; cursor: pointer; }
95
- .admin-toggle input { accent-color: var(--shell-accent, #7c7cf0); }
96
- .admin-hint { flex-basis: 100%; font-size: 11px; color: var(--shell-fg-muted); margin-left: 24px; }
95
+ .admin-toggle input { accent-color: var(--sh3-accent, #7c7cf0); }
96
+ .admin-hint { flex-basis: 100%; font-size: 11px; color: var(--sh3-fg-muted); margin-left: 24px; }
97
97
  .admin-field { display: flex; flex-direction: column; gap: 4px; }
98
98
  .admin-field span { font-size: 13px; }
99
- .admin-input { padding: 8px 12px; background: var(--shell-bg); color: var(--shell-fg); border: 1px solid var(--shell-border); border-radius: var(--shell-radius, 6px); font-size: 13px; }
99
+ .admin-input { padding: 8px 12px; background: var(--sh3-bg); color: var(--sh3-fg); border: 1px solid var(--sh3-border); border-radius: var(--sh3-radius, 6px); font-size: 13px; }
100
100
  .admin-input-sm { max-width: 120px; }
101
101
  .admin-btn { padding: 8px 16px; font-weight: 600; align-self: flex-start; }
102
102
  .admin-btn:disabled { opacity: 0.6; cursor: not-allowed; }
103
- .admin-error { margin-top: 8px; color: var(--shell-error, #d32f2f); font-size: 13px; }
104
- .admin-muted { color: var(--shell-fg-muted); font-style: italic; }
103
+ .admin-error { margin-top: 8px; color: var(--sh3-error, #d32f2f); font-size: 13px; }
104
+ .admin-muted { color: var(--sh3-fg-muted); font-style: italic; }
105
105
  </style>
@@ -185,27 +185,27 @@
185
185
  </div>
186
186
 
187
187
  <style>
188
- .admin-system { padding: 24px; font-family: system-ui, sans-serif; color: var(--shell-fg); }
188
+ .admin-system { padding: 24px; font-family: system-ui, sans-serif; color: var(--sh3-fg); }
189
189
  .admin-system h2 { margin: 0 0 16px; font-size: 18px; }
190
- .admin-system h3 { margin: 0 0 8px; font-size: 14px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--shell-fg-subtle); }
190
+ .admin-system h3 { margin: 0 0 8px; font-size: 14px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--sh3-fg-subtle); }
191
191
  .admin-system-info { margin-bottom: 24px; }
192
- .admin-system-row { display: flex; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--shell-border, #3a3a5c); font-size: 13px; }
193
- .admin-system-label { color: var(--shell-fg-subtle); min-width: 140px; }
194
- .admin-system-section { margin-bottom: 24px; padding-bottom: 16px; border-bottom: 1px solid var(--shell-border, #3a3a5c); }
192
+ .admin-system-row { display: flex; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--sh3-border, #3a3a5c); font-size: 13px; }
193
+ .admin-system-label { color: var(--sh3-fg-subtle); min-width: 140px; }
194
+ .admin-system-section { margin-bottom: 24px; padding-bottom: 16px; border-bottom: 1px solid var(--sh3-border, #3a3a5c); }
195
195
  .admin-system-section:last-child { border-bottom: none; }
196
- .admin-system-hint { font-size: 13px; color: var(--shell-fg-subtle); margin: 0 0 12px; }
196
+ .admin-system-hint { font-size: 13px; color: var(--sh3-fg-subtle); margin: 0 0 12px; }
197
197
  .admin-system-readout { font-size: 13px; margin: 8px 0 12px; }
198
198
  .admin-system-snaps { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
199
- .admin-snap { padding: 4px 10px; font-size: 12px; background: transparent; border: 1px solid var(--shell-border, #3a3a5c); color: var(--shell-fg); cursor: pointer; border-radius: var(--shell-radius-sm, 3px); }
200
- .admin-snap.active { background: var(--shell-accent, #4a7bd4); color: var(--shell-bg); border-color: var(--shell-accent, #4a7bd4); }
199
+ .admin-snap { padding: 4px 10px; font-size: 12px; background: transparent; border: 1px solid var(--sh3-border, #3a3a5c); color: var(--sh3-fg); cursor: pointer; border-radius: var(--sh3-radius-sm, 3px); }
200
+ .admin-snap.active { background: var(--sh3-accent, #4a7bd4); color: var(--sh3-bg); border-color: var(--sh3-accent, #4a7bd4); }
201
201
  .admin-snap:disabled { opacity: 0.5; cursor: not-allowed; }
202
202
  .admin-system-actions { display: flex; flex-direction: row; gap: 8px; align-items: center; flex-wrap: wrap; }
203
- .admin-btn { padding: 8px 16px; background: var(--shell-accent, #4a7bd4); color: var(--shell-bg); border: 1px solid var(--shell-accent, #4a7bd4); font-weight: 600; cursor: pointer; border-radius: var(--shell-radius-sm, 3px); }
203
+ .admin-btn { padding: 8px 16px; background: var(--sh3-accent, #4a7bd4); color: var(--sh3-bg); border: 1px solid var(--sh3-accent, #4a7bd4); font-weight: 600; cursor: pointer; border-radius: var(--sh3-radius-sm, 3px); }
204
204
  .admin-btn:disabled { opacity: 0.5; cursor: not-allowed; }
205
- .admin-btn-ghost { padding: 8px 16px; background: transparent; color: var(--shell-fg); border: 1px solid var(--shell-border, #3a3a5c); cursor: pointer; border-radius: var(--shell-radius-sm, 3px); }
205
+ .admin-btn-ghost { padding: 8px 16px; background: transparent; color: var(--sh3-fg); border: 1px solid var(--sh3-border, #3a3a5c); cursor: pointer; border-radius: var(--sh3-radius-sm, 3px); }
206
206
  .admin-btn-ghost:disabled { opacity: 0.5; cursor: not-allowed; }
207
- .admin-btn-danger { padding: 8px 16px; background: transparent; color: var(--shell-error, #d32f2f); border: 1px solid var(--shell-error, #d32f2f); font-weight: 600; cursor: pointer; border-radius: var(--shell-radius-sm, 3px); }
207
+ .admin-btn-danger { padding: 8px 16px; background: transparent; color: var(--sh3-error, #d32f2f); border: 1px solid var(--sh3-error, #d32f2f); font-weight: 600; cursor: pointer; border-radius: var(--sh3-radius-sm, 3px); }
208
208
  .admin-btn-danger:disabled { opacity: 0.6; cursor: not-allowed; }
209
- .admin-error { color: var(--shell-error, #d32f2f); font-size: 13px; }
209
+ .admin-error { color: var(--sh3-error, #d32f2f); font-size: 13px; }
210
210
  input[type="range"] { width: 100%; max-width: 480px; }
211
211
  </style>
@@ -167,22 +167,22 @@
167
167
  </div>
168
168
 
169
169
  <style>
170
- .admin-users { padding: 24px; font-family: system-ui, sans-serif; color: var(--shell-fg); }
170
+ .admin-users { padding: 24px; font-family: system-ui, sans-serif; color: var(--sh3-fg); }
171
171
  .admin-users-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
172
172
  .admin-users-header h2 { margin: 0; font-size: 18px; }
173
173
  .admin-create-form, .admin-edit-form { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; max-width: 400px; }
174
- .admin-input { padding: 8px 12px; background: var(--shell-bg, #1a1a2e); color: var(--shell-fg); border: 1px solid var(--shell-border, #3a3a5c); border-radius: var(--shell-radius, 6px); font-size: 13px; }
174
+ .admin-input { padding: 8px 12px; background: var(--sh3-bg, #1a1a2e); color: var(--sh3-fg); border: 1px solid var(--sh3-border, #3a3a5c); border-radius: var(--sh3-radius, 6px); font-size: 13px; }
175
175
  .admin-btn { font-weight: 600; font-size: 13px; }
176
176
  .admin-btn:disabled { opacity: 0.6; cursor: not-allowed; }
177
- .admin-btn-secondary { background: transparent; color: var(--shell-fg-subtle); border: 1px solid var(--shell-border); font-size: 12px; }
178
- .admin-btn-danger { background: transparent; color: var(--shell-error, #d32f2f); border: 1px solid var(--shell-error, #d32f2f); font-size: 12px; }
177
+ .admin-btn-secondary { background: transparent; color: var(--sh3-fg-subtle); border: 1px solid var(--sh3-border); font-size: 12px; }
178
+ .admin-btn-danger { background: transparent; color: var(--sh3-error, #d32f2f); border: 1px solid var(--sh3-error, #d32f2f); font-size: 12px; }
179
179
  .admin-user-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
180
- .admin-user-item { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; background: var(--shell-bg-elevated, #252540); border: 1px solid var(--shell-border, #3a3a5c); border-radius: var(--shell-radius, 6px); }
180
+ .admin-user-item { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; background: var(--sh3-bg-elevated, #252540); border: 1px solid var(--sh3-border, #3a3a5c); border-radius: var(--sh3-radius, 6px); }
181
181
  .admin-user-info { display: flex; flex-direction: column; gap: 2px; }
182
182
  .admin-user-name { font-weight: 600; }
183
- .admin-user-meta { font-size: 11px; color: var(--shell-fg-subtle); }
183
+ .admin-user-meta { font-size: 11px; color: var(--sh3-fg-subtle); }
184
184
  .admin-user-actions { display: flex; gap: 6px; }
185
185
  .admin-edit-actions { display: flex; gap: 6px; }
186
- .admin-error { color: var(--shell-error, #d32f2f); font-size: 13px; }
187
- .admin-muted { color: var(--shell-fg-muted); font-style: italic; }
186
+ .admin-error { color: var(--sh3-error, #d32f2f); font-size: 13px; }
187
+ .admin-muted { color: var(--sh3-fg-muted); font-style: italic; }
188
188
  </style>
@@ -55,33 +55,33 @@
55
55
  .app-update-modal {
56
56
  padding: 16px 20px;
57
57
  max-width: 460px;
58
- color: var(--shell-fg);
59
- background: var(--shell-bg);
58
+ color: var(--sh3-fg);
59
+ background: var(--sh3-bg);
60
60
  font: inherit;
61
61
  }
62
62
  h2 { margin: 0 0 8px; font-size: 16px; }
63
63
  p { margin: 4px 0; font-size: 13px; }
64
- .hint { color: var(--shell-fg-muted); font-size: 12px; }
65
- .error { color: var(--shell-error, #c33); }
64
+ .hint { color: var(--sh3-fg-muted); font-size: 12px; }
65
+ .error { color: var(--sh3-error, #c33); }
66
66
  code {
67
- font-family: var(--shell-font-mono, monospace);
68
- background: var(--shell-bg-elevated);
67
+ font-family: var(--sh3-font-mono, monospace);
68
+ background: var(--sh3-bg-elevated);
69
69
  padding: 0 4px;
70
- border-radius: var(--shell-radius-sm, 3px);
70
+ border-radius: var(--sh3-radius-sm, 3px);
71
71
  }
72
72
  .actions { display: flex; gap: 8px; margin-top: 16px; }
73
73
  .actions button {
74
- background: var(--shell-bg-elevated);
75
- color: var(--shell-fg);
76
- border: 1px solid var(--shell-border);
77
- border-radius: var(--shell-radius-sm, 3px);
74
+ background: var(--sh3-bg-elevated);
75
+ color: var(--sh3-fg);
76
+ border: 1px solid var(--sh3-border);
77
+ border-radius: var(--sh3-radius-sm, 3px);
78
78
  padding: 6px 14px; font: inherit; cursor: pointer;
79
79
  }
80
80
  .actions button.primary {
81
- background: var(--shell-accent);
81
+ background: var(--sh3-accent);
82
82
  color: #fff;
83
- border-color: var(--shell-accent);
83
+ border-color: var(--sh3-accent);
84
84
  }
85
- .actions button:hover { border-color: var(--shell-accent); }
85
+ .actions button:hover { border-color: var(--sh3-accent); }
86
86
  .actions button:disabled { opacity: 0.5; cursor: not-allowed; }
87
87
  </style>
@@ -131,21 +131,21 @@
131
131
  z-index: 1000;
132
132
  }
133
133
  .perm-modal-panel {
134
- background: var(--shell-bg, #1e1e1e);
135
- color: var(--shell-fg, #e0e0e0);
136
- border: 1px solid var(--shell-border, #444);
137
- border-radius: var(--shell-radius-md);
134
+ background: var(--sh3-bg, #1e1e1e);
135
+ color: var(--sh3-fg, #e0e0e0);
136
+ border: 1px solid var(--sh3-border, #444);
137
+ border-radius: var(--sh3-radius-md);
138
138
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
139
139
  min-width: 360px;
140
140
  max-width: 520px;
141
141
  max-height: 80vh;
142
142
  display: flex;
143
143
  flex-direction: column;
144
- font-family: var(--shell-font-ui);
144
+ font-family: var(--sh3-font-ui);
145
145
  }
146
146
  .perm-modal-header {
147
147
  padding: 16px 20px 12px;
148
- border-bottom: 1px solid var(--shell-border, #444);
148
+ border-bottom: 1px solid var(--sh3-border, #444);
149
149
  }
150
150
  .perm-modal-header h3 {
151
151
  margin: 0 0 4px 0;
@@ -154,7 +154,7 @@
154
154
  }
155
155
  .perm-modal-subtitle {
156
156
  font-size: 0.8125rem;
157
- color: var(--shell-fg-muted, #888);
157
+ color: var(--sh3-fg-muted, #888);
158
158
  }
159
159
  .perm-modal-author {
160
160
  margin-left: 8px;
@@ -171,7 +171,7 @@
171
171
  .perm-modal-empty {
172
172
  margin: 0;
173
173
  font-size: 0.875rem;
174
- color: var(--shell-fg-muted, #888);
174
+ color: var(--sh3-fg-muted, #888);
175
175
  font-style: italic;
176
176
  }
177
177
  .perm-modal-list {
@@ -184,9 +184,9 @@
184
184
  }
185
185
  .perm-modal-item {
186
186
  padding: 8px 10px;
187
- background: var(--shell-input-bg, #2a2a2a);
188
- border: 1px solid var(--shell-border, #444);
189
- border-radius: var(--shell-radius-sm);
187
+ background: var(--sh3-input-bg, #2a2a2a);
188
+ border: 1px solid var(--sh3-border, #444);
189
+ border-radius: var(--sh3-radius-sm);
190
190
  }
191
191
  .perm-modal-item-title {
192
192
  font-size: 0.875rem;
@@ -194,18 +194,18 @@
194
194
  }
195
195
  .perm-modal-item-desc {
196
196
  font-size: 0.75rem;
197
- color: var(--shell-fg-muted, #888);
197
+ color: var(--sh3-fg-muted, #888);
198
198
  margin-top: 2px;
199
199
  }
200
200
  .perm-modal-added .perm-modal-item {
201
- border-color: color-mix(in srgb, var(--shell-warning, #ff9800) 60%, var(--shell-border, #444));
201
+ border-color: color-mix(in srgb, var(--sh3-warning, #ff9800) 60%, var(--sh3-border, #444));
202
202
  }
203
203
  .perm-modal-removed .perm-modal-item {
204
204
  opacity: 0.75;
205
205
  }
206
206
  .perm-modal-footer {
207
207
  padding: 12px 20px;
208
- border-top: 1px solid var(--shell-border, #444);
208
+ border-top: 1px solid var(--sh3-border, #444);
209
209
  display: flex;
210
210
  justify-content: flex-end;
211
211
  gap: 8px;
@@ -213,18 +213,18 @@
213
213
  .perm-modal-cancel {
214
214
  padding: 6px 14px;
215
215
  background: transparent;
216
- color: var(--shell-fg, #e0e0e0);
217
- border: 1px solid var(--shell-border, #444);
218
- border-radius: var(--shell-radius);
216
+ color: var(--sh3-fg, #e0e0e0);
217
+ border: 1px solid var(--sh3-border, #444);
218
+ border-radius: var(--sh3-radius);
219
219
  font-size: 0.8125rem;
220
220
  cursor: pointer;
221
221
  }
222
222
  .perm-modal-confirm {
223
223
  padding: 6px 14px;
224
- background: var(--shell-accent, #007acc);
224
+ background: var(--sh3-accent, #007acc);
225
225
  color: #fff;
226
- border: 1px solid var(--shell-accent, #007acc);
227
- border-radius: var(--shell-radius);
226
+ border: 1px solid var(--sh3-accent, #007acc);
227
+ border-radius: var(--sh3-radius);
228
228
  font-size: 0.8125rem;
229
229
  cursor: pointer;
230
230
  font-weight: 600;
@@ -423,9 +423,9 @@
423
423
 
424
424
  <style>
425
425
  .store-view {
426
- font-family: var(--shell-font-ui);
427
- color: var(--shell-fg, #e0e0e0);
428
- background: var(--shell-bg, #1e1e1e);
426
+ font-family: var(--sh3-font-ui);
427
+ color: var(--sh3-fg, #e0e0e0);
428
+ background: var(--sh3-bg, #1e1e1e);
429
429
  padding: 16px;
430
430
  height: 100%;
431
431
  overflow-y: auto;
@@ -448,22 +448,22 @@
448
448
  flex: 1;
449
449
  min-width: 160px;
450
450
  padding: 6px 10px;
451
- background: var(--shell-input-bg, #2a2a2a);
452
- color: var(--shell-fg, #e0e0e0);
453
- border: 1px solid var(--shell-border, #444);
454
- border-radius: var(--shell-radius);
451
+ background: var(--sh3-input-bg, #2a2a2a);
452
+ color: var(--sh3-fg, #e0e0e0);
453
+ border: 1px solid var(--sh3-border, #444);
454
+ border-radius: var(--sh3-radius);
455
455
  font-family: inherit;
456
456
  font-size: 0.875rem;
457
457
  }
458
458
  .store-search::placeholder {
459
- color: var(--shell-fg-muted, #888);
459
+ color: var(--sh3-fg-muted, #888);
460
460
  }
461
461
  .store-filter {
462
462
  padding: 6px 10px;
463
- background: var(--shell-input-bg, #2a2a2a);
464
- color: var(--shell-fg, #e0e0e0);
465
- border: 1px solid var(--shell-border, #444);
466
- border-radius: var(--shell-radius);
463
+ background: var(--sh3-input-bg, #2a2a2a);
464
+ color: var(--sh3-fg, #e0e0e0);
465
+ border: 1px solid var(--sh3-border, #444);
466
+ border-radius: var(--sh3-radius);
467
467
  font-family: inherit;
468
468
  font-size: 0.875rem;
469
469
  }
@@ -474,10 +474,10 @@
474
474
  .store-error {
475
475
  padding: 8px 12px;
476
476
  margin-bottom: 12px;
477
- background: color-mix(in srgb, var(--shell-error, #d32f2f) 15%, transparent);
478
- color: var(--shell-error, #d32f2f);
479
- border: 1px solid var(--shell-error, #d32f2f);
480
- border-radius: var(--shell-radius);
477
+ background: color-mix(in srgb, var(--sh3-error, #d32f2f) 15%, transparent);
478
+ color: var(--sh3-error, #d32f2f);
479
+ border: 1px solid var(--sh3-error, #d32f2f);
480
+ border-radius: var(--sh3-radius);
481
481
  font-size: 0.8125rem;
482
482
  }
483
483
  .store-grid {
@@ -486,16 +486,16 @@
486
486
  gap: 12px;
487
487
  }
488
488
  .store-card {
489
- background: var(--shell-input-bg, #2a2a2a);
490
- border: 1px solid var(--shell-border, #444);
491
- border-radius: var(--shell-radius-md);
489
+ background: var(--sh3-input-bg, #2a2a2a);
490
+ border: 1px solid var(--sh3-border, #444);
491
+ border-radius: var(--sh3-radius-md);
492
492
  padding: 14px;
493
493
  display: flex;
494
494
  flex-direction: column;
495
495
  gap: 8px;
496
496
  }
497
497
  .store-card:hover {
498
- border-color: var(--shell-accent, #007acc);
498
+ border-color: var(--sh3-accent, #007acc);
499
499
  }
500
500
  .store-card-header {
501
501
  display: flex;
@@ -513,7 +513,7 @@
513
513
  .store-icon-img {
514
514
  width: 36px;
515
515
  height: 36px;
516
- border-radius: var(--shell-radius);
516
+ border-radius: var(--sh3-radius);
517
517
  object-fit: cover;
518
518
  }
519
519
  .store-icon-placeholder {
@@ -522,9 +522,9 @@
522
522
  display: flex;
523
523
  align-items: center;
524
524
  justify-content: center;
525
- background: var(--shell-accent, #007acc);
525
+ background: var(--sh3-accent, #007acc);
526
526
  color: #fff;
527
- border-radius: var(--shell-radius);
527
+ border-radius: var(--sh3-radius);
528
528
  font-weight: 700;
529
529
  font-size: 1rem;
530
530
  }
@@ -541,39 +541,39 @@
541
541
  .store-card-badge {
542
542
  font-size: 0.6875rem;
543
543
  padding: 1px 6px;
544
- border-radius: var(--shell-radius-sm);
544
+ border-radius: var(--sh3-radius-sm);
545
545
  text-transform: uppercase;
546
546
  font-weight: 600;
547
547
  letter-spacing: 0.04em;
548
548
  }
549
549
  .badge-shard {
550
- background: color-mix(in srgb, var(--shell-accent, #007acc) 25%, transparent);
551
- color: var(--shell-accent, #007acc);
550
+ background: color-mix(in srgb, var(--sh3-accent, #007acc) 25%, transparent);
551
+ color: var(--sh3-accent, #007acc);
552
552
  }
553
553
  .badge-app {
554
- background: color-mix(in srgb, var(--shell-success, #4caf50) 25%, transparent);
555
- color: var(--shell-success, #4caf50);
554
+ background: color-mix(in srgb, var(--sh3-success, #4caf50) 25%, transparent);
555
+ color: var(--sh3-success, #4caf50);
556
556
  }
557
557
  .store-card-version {
558
558
  font-size: 0.75rem;
559
- color: var(--shell-fg-muted, #888);
559
+ color: var(--sh3-fg-muted, #888);
560
560
  }
561
561
  .store-card-desc {
562
562
  margin: 0;
563
563
  font-size: 0.8125rem;
564
- color: var(--shell-fg-muted, #888);
564
+ color: var(--sh3-fg-muted, #888);
565
565
  line-height: 1.4;
566
566
  }
567
567
  .store-card-author {
568
568
  font-size: 0.75rem;
569
- color: var(--shell-fg-muted, #888);
569
+ color: var(--sh3-fg-muted, #888);
570
570
  }
571
571
  .store-card-warning {
572
572
  font-size: 0.75rem;
573
- color: var(--shell-warning, #ff9800);
573
+ color: var(--sh3-warning, #ff9800);
574
574
  padding: 4px 8px;
575
- background: color-mix(in srgb, var(--shell-warning, #ff9800) 10%, transparent);
576
- border-radius: var(--shell-radius-sm);
575
+ background: color-mix(in srgb, var(--sh3-warning, #ff9800) 10%, transparent);
576
+ border-radius: var(--sh3-radius-sm);
577
577
  }
578
578
  .store-card-actions {
579
579
  margin-top: auto;
@@ -590,7 +590,7 @@
590
590
  }
591
591
  .store-installed-label {
592
592
  font-size: 0.8125rem;
593
- color: var(--shell-success, #4caf50);
593
+ color: var(--sh3-success, #4caf50);
594
594
  font-weight: 600;
595
595
  }
596
596
  .store-install-wrap {
@@ -601,12 +601,12 @@
601
601
  }
602
602
  .store-card-missing {
603
603
  font-size: 0.75rem;
604
- color: var(--shell-warning, #ff9800);
604
+ color: var(--sh3-warning, #ff9800);
605
605
  }
606
606
  .store-update-btn {
607
607
  padding: 5px 14px;
608
- background: var(--shell-warning, #fbbf24);
609
- color: var(--shell-fg-on-warning, #1a1b1e);
608
+ background: var(--sh3-warning, #fbbf24);
609
+ color: var(--sh3-fg-on-warning, #1a1b1e);
610
610
  font-size: 0.8125rem;
611
611
  }
612
612
  .store-update-btn:hover:not(:disabled) {
@@ -619,7 +619,7 @@
619
619
  .store-empty {
620
620
  text-align: center;
621
621
  padding: 32px 16px;
622
- color: var(--shell-fg-muted, #888);
622
+ color: var(--sh3-fg-muted, #888);
623
623
  font-size: 0.875rem;
624
624
  }
625
625
  .store-registries {
@@ -633,23 +633,23 @@
633
633
  align-items: center;
634
634
  justify-content: space-between;
635
635
  padding: 4px 8px;
636
- background: var(--shell-input-bg, #2a2a2a);
637
- border: 1px solid var(--shell-border, #444);
638
- border-radius: var(--shell-radius);
636
+ background: var(--sh3-input-bg, #2a2a2a);
637
+ border: 1px solid var(--sh3-border, #444);
638
+ border-radius: var(--sh3-radius);
639
639
  font-size: 0.8125rem;
640
640
  }
641
641
  .store-registry-url {
642
642
  overflow: hidden;
643
643
  text-overflow: ellipsis;
644
644
  white-space: nowrap;
645
- color: var(--shell-fg-muted, #888);
645
+ color: var(--sh3-fg-muted, #888);
646
646
  }
647
647
  .store-registry-remove {
648
648
  padding: 2px 8px;
649
649
  background: transparent;
650
- color: var(--shell-error, #d32f2f);
651
- border: 1px solid var(--shell-error, #d32f2f);
652
- border-radius: var(--shell-radius-sm);
650
+ color: var(--sh3-error, #d32f2f);
651
+ border: 1px solid var(--sh3-error, #d32f2f);
652
+ border-radius: var(--sh3-radius-sm);
653
653
  font-size: 0.75rem;
654
654
  flex-shrink: 0;
655
655
  margin-left: 8px;
@@ -662,15 +662,15 @@
662
662
  .store-registry-input {
663
663
  flex: 1;
664
664
  padding: 6px 10px;
665
- background: var(--shell-input-bg, #2a2a2a);
666
- color: var(--shell-fg, #e0e0e0);
667
- border: 1px solid var(--shell-border, #444);
668
- border-radius: var(--shell-radius);
665
+ background: var(--sh3-input-bg, #2a2a2a);
666
+ color: var(--sh3-fg, #e0e0e0);
667
+ border: 1px solid var(--sh3-border, #444);
668
+ border-radius: var(--sh3-radius);
669
669
  font-family: inherit;
670
670
  font-size: 0.8125rem;
671
671
  }
672
672
  .store-registry-input::placeholder {
673
- color: var(--shell-fg-muted, #888);
673
+ color: var(--sh3-fg-muted, #888);
674
674
  }
675
675
  .store-add-btn {
676
676
  font-size: 0.8125rem;