diff --git a/CHANGELOG.de.md b/CHANGELOG.de.md
index 29ddc8f..f552e29 100644
--- a/CHANGELOG.de.md
+++ b/CHANGELOG.de.md
@@ -1,5 +1,23 @@
# Changelog
+## [0.9.15] – 2026-05-21
+
+### Fixes (Issue #29)
+- **UI im OrcaSlicer-Device-Tab kaputt:** OrcaSlicers eingebetteter Webview lädt
+ nur das nackte HTML und ignoriert externe `',
+ "")
+ except OSError:
+ pass
+
+ return web.Response(text=page, content_type="text/html",
headers={"Cache-Control": "no-store, no-cache, must-revalidate"})
async def handle_api_light(self, request):
diff --git a/web/themes/default/app.js b/web/themes/default/app.js
index d661eb0..5a73457 100644
--- a/web/themes/default/app.js
+++ b/web/themes/default/app.js
@@ -1577,6 +1577,10 @@ function formatDur(sec){
var _storeFileId=null;
var _storeFilename=null;
var _filamentDialogMode='store'; // 'store' oder 'banner'
+// GCode-Store-Dateiliste. MUSS deklariert sein – sonst ReferenceError, wenn
+// "Slots wählen" im Banner geklickt wird, bevor der Browser-Tab je geladen
+// wurde (Issue #29 / Theme-Auslagerung PR #27).
+var storeFiles=[];
var _gcodeFilaments=[];
diff --git a/web/themes/default/style.css b/web/themes/default/style.css
index faea4a5..4c77d83 100644
--- a/web/themes/default/style.css
+++ b/web/themes/default/style.css
@@ -1,4 +1,5 @@
:root{
+ color-scheme:dark; /* native Form-Controls (select) im Webview dunkel rendern */
--bg:#1a1a1f;--card:#24242c;--raised:#2e2e3a;--border:#3a3a4a;
--txt:#f0f0f5;--txt2:#8888aa;--accent:#00c8ff;--accent2:#ff6b35;
--ok:#4cde80;--err:#ff4d6d;--warn:#ffb020;
@@ -6,12 +7,17 @@
--mono:"JetBrains Mono","Fira Code",monospace;
}
[data-theme=light]{
+ color-scheme:light;
--bg:#f0f0f5;--card:#fff;--raised:#e8e8f0;--border:#d0d0e0;
--txt:#1a1a2e;--txt2:#666680;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--txt);font-family:var(--font);font-size:14px;min-height:100vh;display:flex;flex-direction:column}
a{color:var(--accent);text-decoration:none}
+/* select/option-Farben explizit setzen — OrcaSlicers Device-Tab-Webview erbt
+ sie sonst nicht und rendert weiße Schrift auf weißem Grund (Issue #29). */
+select{background:var(--raised)!important;color:var(--txt)!important}
+select option{background:var(--card)!important;color:var(--txt)!important}
/* ── HEADER ── */
header{background:var(--card);border-bottom:1px solid var(--border);