diff --git a/ui/src/app/app.html b/ui/src/app/skins/7like/app.html
similarity index 100%
rename from ui/src/app/app.html
rename to ui/src/app/skins/7like/app.html
diff --git a/ui/src/app/app.ts b/ui/src/app/skins/7like/app.ts
similarity index 100%
rename from ui/src/app/app.ts
rename to ui/src/app/skins/7like/app.ts
diff --git a/ui/src/app/connection-manager/connection-manager.html b/ui/src/app/skins/7like/connection-manager/connection-manager.html
similarity index 100%
rename from ui/src/app/connection-manager/connection-manager.html
rename to ui/src/app/skins/7like/connection-manager/connection-manager.html
diff --git a/ui/src/app/connection-manager/connection-manager.ts b/ui/src/app/skins/7like/connection-manager/connection-manager.ts
similarity index 100%
rename from ui/src/app/connection-manager/connection-manager.ts
rename to ui/src/app/skins/7like/connection-manager/connection-manager.ts
diff --git a/ui/src/app/context-menu.ts b/ui/src/app/skins/7like/context-menu.ts
similarity index 100%
rename from ui/src/app/context-menu.ts
rename to ui/src/app/skins/7like/context-menu.ts
diff --git a/ui/src/app/dialogs/chmod-dialog.ts b/ui/src/app/skins/7like/dialogs/chmod-dialog.ts
similarity index 100%
rename from ui/src/app/dialogs/chmod-dialog.ts
rename to ui/src/app/skins/7like/dialogs/chmod-dialog.ts
diff --git a/ui/src/app/dialogs/confirm-dialog.ts b/ui/src/app/skins/7like/dialogs/confirm-dialog.ts
similarity index 100%
rename from ui/src/app/dialogs/confirm-dialog.ts
rename to ui/src/app/skins/7like/dialogs/confirm-dialog.ts
diff --git a/ui/src/app/dialogs/overwrite-dialog.ts b/ui/src/app/skins/7like/dialogs/overwrite-dialog.ts
similarity index 100%
rename from ui/src/app/dialogs/overwrite-dialog.ts
rename to ui/src/app/skins/7like/dialogs/overwrite-dialog.ts
diff --git a/ui/src/app/dialogs/prompt-dialog.ts b/ui/src/app/skins/7like/dialogs/prompt-dialog.ts
similarity index 100%
rename from ui/src/app/dialogs/prompt-dialog.ts
rename to ui/src/app/skins/7like/dialogs/prompt-dialog.ts
diff --git a/ui/src/app/editor-window/editor-window.html b/ui/src/app/skins/7like/editor-window/editor-window.html
similarity index 100%
rename from ui/src/app/editor-window/editor-window.html
rename to ui/src/app/skins/7like/editor-window/editor-window.html
diff --git a/ui/src/app/editor-window/editor-window.ts b/ui/src/app/skins/7like/editor-window/editor-window.ts
similarity index 100%
rename from ui/src/app/editor-window/editor-window.ts
rename to ui/src/app/skins/7like/editor-window/editor-window.ts
diff --git a/ui/src/app/file-panel/file-panel.html b/ui/src/app/skins/7like/file-panel/file-panel.html
similarity index 100%
rename from ui/src/app/file-panel/file-panel.html
rename to ui/src/app/skins/7like/file-panel/file-panel.html
diff --git a/ui/src/app/file-panel/file-panel.ts b/ui/src/app/skins/7like/file-panel/file-panel.ts
similarity index 100%
rename from ui/src/app/file-panel/file-panel.ts
rename to ui/src/app/skins/7like/file-panel/file-panel.ts
diff --git a/ui/src/app/skins/7like/index.ts b/ui/src/app/skins/7like/index.ts
new file mode 100644
index 0000000..9bab375
--- /dev/null
+++ b/ui/src/app/skins/7like/index.ts
@@ -0,0 +1,17 @@
+import { App } from './app';
+import { ConnectionManager } from './connection-manager/connection-manager';
+import { EditorWindow } from './editor-window/editor-window';
+
+/**
+ * The three window roots of the Windows 7 skin, keyed by APP_MODE.
+ *
+ * Every skin exports this same shape, so main.ts selects a tree by skin and
+ * then a root by mode without knowing anything about either skin's internals.
+ * All three roots declare `selector: 'app-root'` — the single in
+ * index.html hosts whichever one gets bootstrapped.
+ */
+export const SEVEN_ROOTS = {
+ main: App,
+ manager: ConnectionManager,
+ editor: EditorWindow,
+} as const;
diff --git a/ui/src/app/status-bar/status-bar.ts b/ui/src/app/skins/7like/status-bar/status-bar.ts
similarity index 100%
rename from ui/src/app/status-bar/status-bar.ts
rename to ui/src/app/skins/7like/status-bar/status-bar.ts
diff --git a/ui/src/app/tab-bar/tab-bar.ts b/ui/src/app/skins/7like/tab-bar/tab-bar.ts
similarity index 100%
rename from ui/src/app/tab-bar/tab-bar.ts
rename to ui/src/app/skins/7like/tab-bar/tab-bar.ts
diff --git a/ui/src/app/title-bar/title-bar.ts b/ui/src/app/skins/7like/title-bar/title-bar.ts
similarity index 100%
rename from ui/src/app/title-bar/title-bar.ts
rename to ui/src/app/skins/7like/title-bar/title-bar.ts
diff --git a/ui/src/app/toasts/toasts.ts b/ui/src/app/skins/7like/toasts/toasts.ts
similarity index 100%
rename from ui/src/app/toasts/toasts.ts
rename to ui/src/app/skins/7like/toasts/toasts.ts
diff --git a/ui/src/app/transfer-bar/transfer-bar.html b/ui/src/app/skins/7like/transfer-bar/transfer-bar.html
similarity index 100%
rename from ui/src/app/transfer-bar/transfer-bar.html
rename to ui/src/app/skins/7like/transfer-bar/transfer-bar.html
diff --git a/ui/src/app/transfer-bar/transfer-bar.ts b/ui/src/app/skins/7like/transfer-bar/transfer-bar.ts
similarity index 100%
rename from ui/src/app/transfer-bar/transfer-bar.ts
rename to ui/src/app/skins/7like/transfer-bar/transfer-bar.ts
diff --git a/ui/src/main.ts b/ui/src/main.ts
index aa52a98..cf8180e 100644
--- a/ui/src/main.ts
+++ b/ui/src/main.ts
@@ -1,10 +1,10 @@
import { bootstrapApplication } from '@angular/platform-browser';
import { appConfig } from '@core/app.config';
-import { App } from './app/app';
-import { ConnectionManager } from './app/connection-manager/connection-manager';
-import { EditorWindow } from './app/editor-window/editor-window';
import { APP_MODE } from '@core/platform';
+import { SEVEN_ROOTS } from './app/skins/7like';
// One bundle, three window kinds: the preload global picks the root component.
-const root = APP_MODE === 'editor' ? EditorWindow : APP_MODE === 'manager' ? ConnectionManager : App;
+// A second axis (skin) joins APP_MODE here once the shadlike tree lands.
+const tree = SEVEN_ROOTS;
+const root = APP_MODE === 'editor' ? tree.editor : APP_MODE === 'manager' ? tree.manager : tree.main;
bootstrapApplication(root, appConfig).catch((err) => console.error(err));