diff --git a/src/components/demo/DemoControlsPanel.jsx b/src/components/demo/DemoControlsPanel.jsx
new file mode 100644
index 0000000..56fac84
--- /dev/null
+++ b/src/components/demo/DemoControlsPanel.jsx
@@ -0,0 +1,124 @@
+import React, { useState } from "react";
+import { motion, AnimatePresence } from "framer-motion";
+import { FlaskConical, X, RotateCcw, ChevronUp, ChevronDown } from "lucide-react";
+import { useDemoControls } from "./useDemoControls";
+
+function Toggle({ label, description, value, onChange }) {
+ return (
+
+
+
{label}
+
{description}
+
+
+
+ );
+}
+
+export default function DemoControlsPanel() {
+ const [open, setOpen] = useState(false);
+ const { controls, update, reset } = useDemoControls();
+
+ return (
+ <>
+ {/* Floating trigger button */}
+
+
+
+
+ {/* Panel */}
+
+ {open && (
+
+ {/* Header */}
+
+
+
+ Demo Controls
+
+
+
+
+ {/* Subtitle */}
+
+
+ For demo & presentation use only — simulates edge case scenarios
+
+
+
+ {/* Toggles */}
+
+ update("userActivated", v)}
+ />
+ update("activationCodeValid", v)}
+ />
+
+
+ {/* Status summary */}
+
+
+
Active Simulations
+
+ {!controls.userActivated && (
+ Unverified User
+ )}
+ {!controls.activationCodeValid && (
+ Invalid Code
+ )}
+ {controls.userActivated && controls.activationCodeValid && (
+ Normal flow — no simulations active
+ )}
+
+
+
+
+ {/* Reset button */}
+
+
+
+
+ )}
+
+ >
+ );
+}
\ No newline at end of file