Procházet zdrojové kódy

Fix dark mode color hierarchy for better visual distinction

- Increase border color from 25% to 32% lightness for visibility
- Increase muted/secondary/accent from 20% to 25% lightness
- Increase input background from 22% to 28% lightness
- Remove nested bg-card from inner containers (use border only)
- Use bg-muted/50 for info cards and stat displays
- Fix Alert component using bg-background (too dark inside cards)
- Fix Still Sands time period cards background
- Fix LED page effect preview boxes background

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
tuanchris před 2 týdny
rodič
revize
9287dfc1e4

+ 1 - 1
frontend/src/components/ui/alert.tsx

@@ -8,7 +8,7 @@ const alertVariants = cva(
   {
   {
     variants: {
     variants: {
       variant: {
       variant: {
-        default: "bg-background text-foreground",
+        default: "bg-muted/50 text-foreground",
         destructive:
         destructive:
           "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",
           "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",
       },
       },

+ 23 - 6
frontend/src/index.css

@@ -45,8 +45,9 @@
 
 
 /* Dark mode */
 /* Dark mode */
 .dark {
 .dark {
-  --color-border: hsl(0 0% 25%);
-  --color-input: hsl(0 0% 25%);
+  color-scheme: dark;
+  --color-border: hsl(0 0% 32%);
+  --color-input: hsl(0 0% 32%);
   --color-ring: hsl(207 90% 50%);
   --color-ring: hsl(207 90% 50%);
   --color-background: hsl(0 0% 10%);
   --color-background: hsl(0 0% 10%);
   --color-foreground: hsl(210 40% 98%);
   --color-foreground: hsl(210 40% 98%);
@@ -54,21 +55,23 @@
   --color-primary: hsl(207 90% 50%);
   --color-primary: hsl(207 90% 50%);
   --color-primary-foreground: hsl(210 40% 98%);
   --color-primary-foreground: hsl(210 40% 98%);
 
 
-  --color-secondary: hsl(0 0% 20%);
+  --color-secondary: hsl(0 0% 25%);
   --color-secondary-foreground: hsl(210 40% 98%);
   --color-secondary-foreground: hsl(210 40% 98%);
 
 
-  --color-muted: hsl(0 0% 20%);
+  --color-muted: hsl(0 0% 25%);
   --color-muted-foreground: hsl(215 20.2% 65.1%);
   --color-muted-foreground: hsl(215 20.2% 65.1%);
 
 
-  --color-accent: hsl(0 0% 20%);
+  --color-accent: hsl(0 0% 25%);
   --color-accent-foreground: hsl(210 40% 98%);
   --color-accent-foreground: hsl(210 40% 98%);
 
 
   --color-destructive: hsl(0 62.8% 50.6%);
   --color-destructive: hsl(0 62.8% 50.6%);
   --color-destructive-foreground: hsl(210 40% 98%);
   --color-destructive-foreground: hsl(210 40% 98%);
 
 
-  --color-card: hsl(0 0% 15%);
+  --color-card: hsl(0 0% 18%);
   --color-card-foreground: hsl(210 40% 98%);
   --color-card-foreground: hsl(210 40% 98%);
 
 
+  --color-input-background: hsl(0 0% 28%);
+
   --color-popover: hsl(0 0% 15%);
   --color-popover: hsl(0 0% 15%);
   --color-popover-foreground: hsl(210 40% 98%);
   --color-popover-foreground: hsl(210 40% 98%);
 }
 }
@@ -78,6 +81,20 @@
   border-color: var(--color-border);
   border-color: var(--color-border);
 }
 }
 
 
+/* Form label spacing - adds margin below labels for better readability */
+label {
+  display: block;
+  margin-bottom: 0.5rem;
+}
+
+/* Form input background - lighter than card for visibility */
+.dark input:not([type="checkbox"]):not([type="radio"]),
+.dark select,
+.dark textarea,
+.dark [role="combobox"] {
+  background-color: var(--color-input-background);
+}
+
 body {
 body {
   background-color: var(--color-background);
   background-color: var(--color-background);
   color: var(--color-foreground);
   color: var(--color-foreground);

+ 6 - 6
frontend/src/pages/LEDPage.tsx

@@ -508,7 +508,7 @@ export function LEDPage() {
 
 
               {/* Speed and Intensity in styled boxes */}
               {/* Speed and Intensity in styled boxes */}
               <div className="grid grid-cols-2 gap-4">
               <div className="grid grid-cols-2 gap-4">
-                <div className="p-4 bg-muted/50 rounded-lg space-y-3">
+                <div className="p-4 rounded-lg border space-y-3">
                   <div className="flex justify-between items-center">
                   <div className="flex justify-between items-center">
                     <Label className="flex items-center gap-2">
                     <Label className="flex items-center gap-2">
                       <span className="material-icons-outlined text-base text-muted-foreground">speed</span>
                       <span className="material-icons-outlined text-base text-muted-foreground">speed</span>
@@ -524,7 +524,7 @@ export function LEDPage() {
                     step={1}
                     step={1}
                   />
                   />
                 </div>
                 </div>
-                <div className="p-4 bg-muted/50 rounded-lg space-y-3">
+                <div className="p-4 rounded-lg border space-y-3">
                   <div className="flex justify-between items-center">
                   <div className="flex justify-between items-center">
                     <Label className="flex items-center gap-2">
                     <Label className="flex items-center gap-2">
                       <span className="material-icons-outlined text-base text-muted-foreground">tungsten</span>
                       <span className="material-icons-outlined text-base text-muted-foreground">tungsten</span>
@@ -633,14 +633,14 @@ export function LEDPage() {
         <CardContent>
         <CardContent>
           <div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
           <div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
             {/* Playing Effect */}
             {/* Playing Effect */}
-            <div className="p-4 bg-muted/50 rounded-lg space-y-3">
+            <div className="p-4 rounded-lg border space-y-3">
               <div className="flex items-center justify-between">
               <div className="flex items-center justify-between">
                 <div className="flex items-center gap-2">
                 <div className="flex items-center gap-2">
                   <span className="material-icons text-green-600">play_circle</span>
                   <span className="material-icons text-green-600">play_circle</span>
                   <span className="font-medium">While Playing</span>
                   <span className="font-medium">While Playing</span>
                 </div>
                 </div>
               </div>
               </div>
-              <div className="text-xs text-muted-foreground p-2 bg-background rounded border min-h-[40px]">
+              <div className="text-xs text-muted-foreground p-2 bg-muted/50 rounded border min-h-[40px]">
                 {formatEffectSettings(playingEffect)}
                 {formatEffectSettings(playingEffect)}
               </div>
               </div>
               <div className="flex gap-2">
               <div className="flex gap-2">
@@ -663,14 +663,14 @@ export function LEDPage() {
             </div>
             </div>
 
 
             {/* Idle Effect */}
             {/* Idle Effect */}
-            <div className="p-4 bg-muted/50 rounded-lg space-y-3">
+            <div className="p-4 rounded-lg border space-y-3">
               <div className="flex items-center justify-between">
               <div className="flex items-center justify-between">
                 <div className="flex items-center gap-2">
                 <div className="flex items-center gap-2">
                   <span className="material-icons text-blue-600">bedtime</span>
                   <span className="material-icons text-blue-600">bedtime</span>
                   <span className="font-medium">When Idle</span>
                   <span className="font-medium">When Idle</span>
                 </div>
                 </div>
               </div>
               </div>
-              <div className="text-xs text-muted-foreground p-2 bg-background rounded border min-h-[40px]">
+              <div className="text-xs text-muted-foreground p-2 bg-muted/50 rounded border min-h-[40px]">
                 {formatEffectSettings(idleEffect)}
                 {formatEffectSettings(idleEffect)}
               </div>
               </div>
               <div className="flex gap-2">
               <div className="flex gap-2">

+ 47 - 45
frontend/src/pages/SettingsPage.tsx

@@ -728,10 +728,10 @@ export function SettingsPage() {
         type="multiple"
         type="multiple"
         value={openSections}
         value={openSections}
         onValueChange={handleAccordionChange}
         onValueChange={handleAccordionChange}
-        className="space-y-4"
+        className="space-y-3"
       >
       >
         {/* Device Connection */}
         {/* Device Connection */}
-        <AccordionItem value="connection" id="section-connection" className="border rounded-lg px-4 overflow-visible">
+        <AccordionItem value="connection" id="section-connection" className="border rounded-lg px-4 overflow-visible bg-card">
           <AccordionTrigger className="hover:no-underline">
           <AccordionTrigger className="hover:no-underline">
             <div className="flex items-center gap-3">
             <div className="flex items-center gap-3">
               <span className="material-icons-outlined text-muted-foreground">
               <span className="material-icons-outlined text-muted-foreground">
@@ -747,7 +747,7 @@ export function SettingsPage() {
           </AccordionTrigger>
           </AccordionTrigger>
           <AccordionContent className="pt-4 pb-6 space-y-6">
           <AccordionContent className="pt-4 pb-6 space-y-6">
             {/* Connection Status */}
             {/* Connection Status */}
-            <div className="flex items-center justify-between p-4 bg-muted/50 rounded-lg">
+            <div className="flex items-center justify-between p-4 rounded-lg border">
               <div className="flex items-center gap-3">
               <div className="flex items-center gap-3">
                 <div className={`p-2 rounded-lg ${isConnected ? 'bg-green-100 dark:bg-green-900' : 'bg-muted'}`}>
                 <div className={`p-2 rounded-lg ${isConnected ? 'bg-green-100 dark:bg-green-900' : 'bg-muted'}`}>
                   <span className={`material-icons ${isConnected ? 'text-green-600' : 'text-muted-foreground'}`}>
                   <span className={`material-icons ${isConnected ? 'text-green-600' : 'text-muted-foreground'}`}>
@@ -858,7 +858,7 @@ export function SettingsPage() {
         </AccordionItem>
         </AccordionItem>
 
 
         {/* Machine Settings */}
         {/* Machine Settings */}
-        <AccordionItem value="machine" id="section-machine" className="border rounded-lg px-4 overflow-visible">
+        <AccordionItem value="machine" id="section-machine" className="border rounded-lg px-4 overflow-visible bg-card">
           <AccordionTrigger className="hover:no-underline">
           <AccordionTrigger className="hover:no-underline">
             <div className="flex items-center gap-3">
             <div className="flex items-center gap-3">
               <span className="material-icons-outlined text-muted-foreground">
               <span className="material-icons-outlined text-muted-foreground">
@@ -875,19 +875,19 @@ export function SettingsPage() {
           <AccordionContent className="pt-4 pb-6 space-y-6">
           <AccordionContent className="pt-4 pb-6 space-y-6">
             {/* Hardware Parameters */}
             {/* Hardware Parameters */}
             <div className="grid grid-cols-2 md:grid-cols-4 gap-3">
             <div className="grid grid-cols-2 md:grid-cols-4 gap-3">
-              <div className="p-3 bg-muted/50 rounded-lg">
+              <div className="p-3 rounded-lg bg-muted/50">
                 <p className="text-xs text-muted-foreground">Detected Type</p>
                 <p className="text-xs text-muted-foreground">Detected Type</p>
                 <p className="font-medium text-sm">{settings.detected_table_type || 'Unknown'}</p>
                 <p className="font-medium text-sm">{settings.detected_table_type || 'Unknown'}</p>
               </div>
               </div>
-              <div className="p-3 bg-muted/50 rounded-lg">
+              <div className="p-3 rounded-lg bg-muted/50">
                 <p className="text-xs text-muted-foreground">Gear Ratio</p>
                 <p className="text-xs text-muted-foreground">Gear Ratio</p>
                 <p className="font-medium text-sm">{settings.gear_ratio ?? '—'}</p>
                 <p className="font-medium text-sm">{settings.gear_ratio ?? '—'}</p>
               </div>
               </div>
-              <div className="p-3 bg-muted/50 rounded-lg">
+              <div className="p-3 rounded-lg bg-muted/50">
                 <p className="text-xs text-muted-foreground">X Steps/mm</p>
                 <p className="text-xs text-muted-foreground">X Steps/mm</p>
                 <p className="font-medium text-sm">{settings.x_steps_per_mm ?? '—'}</p>
                 <p className="font-medium text-sm">{settings.x_steps_per_mm ?? '—'}</p>
               </div>
               </div>
-              <div className="p-3 bg-muted/50 rounded-lg">
+              <div className="p-3 rounded-lg bg-muted/50">
                 <p className="text-xs text-muted-foreground">Y Steps/mm</p>
                 <p className="text-xs text-muted-foreground">Y Steps/mm</p>
                 <p className="font-medium text-sm">{settings.y_steps_per_mm ?? '—'}</p>
                 <p className="font-medium text-sm">{settings.y_steps_per_mm ?? '—'}</p>
               </div>
               </div>
@@ -944,7 +944,7 @@ export function SettingsPage() {
         </AccordionItem>
         </AccordionItem>
 
 
         {/* Homing Configuration */}
         {/* Homing Configuration */}
-        <AccordionItem value="homing" id="section-homing" className="border rounded-lg px-4 overflow-visible">
+        <AccordionItem value="homing" id="section-homing" className="border rounded-lg px-4 overflow-visible bg-card">
           <AccordionTrigger className="hover:no-underline">
           <AccordionTrigger className="hover:no-underline">
             <div className="flex items-center gap-3">
             <div className="flex items-center gap-3">
               <span className="material-icons-outlined text-muted-foreground">
               <span className="material-icons-outlined text-muted-foreground">
@@ -1020,7 +1020,7 @@ export function SettingsPage() {
             )}
             )}
 
 
             {/* Auto-Home During Playlists */}
             {/* Auto-Home During Playlists */}
-            <div className="p-4 bg-muted/50 rounded-lg space-y-4">
+            <div className="p-4 rounded-lg border space-y-3">
               <div className="flex items-center justify-between">
               <div className="flex items-center justify-between">
                 <div>
                 <div>
                   <p className="font-medium flex items-center gap-2">
                   <p className="font-medium flex items-center gap-2">
@@ -1078,7 +1078,7 @@ export function SettingsPage() {
         </AccordionItem>
         </AccordionItem>
 
 
         {/* Application Settings */}
         {/* Application Settings */}
-        <AccordionItem value="application" id="section-application" className="border rounded-lg px-4 overflow-visible">
+        <AccordionItem value="application" id="section-application" className="border rounded-lg px-4 overflow-visible bg-card">
           <AccordionTrigger className="hover:no-underline">
           <AccordionTrigger className="hover:no-underline">
             <div className="flex items-center gap-3">
             <div className="flex items-center gap-3">
               <span className="material-icons-outlined text-muted-foreground">
               <span className="material-icons-outlined text-muted-foreground">
@@ -1096,7 +1096,7 @@ export function SettingsPage() {
             {/* Custom Logo */}
             {/* Custom Logo */}
             <div className="space-y-3">
             <div className="space-y-3">
               <Label>Custom Logo</Label>
               <Label>Custom Logo</Label>
-              <div className="flex items-center gap-4 p-4 bg-muted/50 rounded-lg">
+              <div className="flex items-center gap-4 p-4 rounded-lg border">
                 <div className="w-16 h-16 rounded-full overflow-hidden border bg-background flex items-center justify-center shrink-0">
                 <div className="w-16 h-16 rounded-full overflow-hidden border bg-background flex items-center justify-center shrink-0">
                   {settings.custom_logo ? (
                   {settings.custom_logo ? (
                     <img
                     <img
@@ -1205,7 +1205,7 @@ export function SettingsPage() {
         </AccordionItem>
         </AccordionItem>
 
 
         {/* Pattern Clearing */}
         {/* Pattern Clearing */}
-        <AccordionItem value="clearing" id="section-clearing" className="border rounded-lg px-4 overflow-visible">
+        <AccordionItem value="clearing" id="section-clearing" className="border rounded-lg px-4 overflow-visible bg-card">
           <AccordionTrigger className="hover:no-underline">
           <AccordionTrigger className="hover:no-underline">
             <div className="flex items-center gap-3">
             <div className="flex items-center gap-3">
               <span className="material-icons-outlined text-muted-foreground">
               <span className="material-icons-outlined text-muted-foreground">
@@ -1225,7 +1225,7 @@ export function SettingsPage() {
             </p>
             </p>
 
 
             {/* Clearing Speed */}
             {/* Clearing Speed */}
-            <div className="p-4 bg-muted/50 rounded-lg space-y-4">
+            <div className="p-4 rounded-lg border space-y-3">
               <h4 className="font-medium">Clearing Speed</h4>
               <h4 className="font-medium">Clearing Speed</h4>
               <p className="text-sm text-muted-foreground">
               <p className="text-sm text-muted-foreground">
                 Set a custom speed for clearing patterns. Leave empty to use the default pattern speed.
                 Set a custom speed for clearing patterns. Leave empty to use the default pattern speed.
@@ -1251,7 +1251,7 @@ export function SettingsPage() {
             </div>
             </div>
 
 
             {/* Custom Clear Patterns */}
             {/* Custom Clear Patterns */}
-            <div className="p-4 bg-muted/50 rounded-lg space-y-4">
+            <div className="p-4 rounded-lg border space-y-3">
               <h4 className="font-medium">Custom Clear Patterns</h4>
               <h4 className="font-medium">Custom Clear Patterns</h4>
               <p className="text-sm text-muted-foreground">
               <p className="text-sm text-muted-foreground">
                 Choose specific patterns to use when clearing. Leave empty for default behavior.
                 Choose specific patterns to use when clearing. Leave empty for default behavior.
@@ -1316,7 +1316,7 @@ export function SettingsPage() {
         </AccordionItem>
         </AccordionItem>
 
 
         {/* LED Controller Configuration */}
         {/* LED Controller Configuration */}
-        <AccordionItem value="led" id="section-led" className="border rounded-lg px-4 overflow-visible">
+        <AccordionItem value="led" id="section-led" className="border rounded-lg px-4 overflow-visible bg-card">
           <AccordionTrigger className="hover:no-underline">
           <AccordionTrigger className="hover:no-underline">
             <div className="flex items-center gap-3">
             <div className="flex items-center gap-3">
               <span className="material-icons-outlined text-muted-foreground">
               <span className="material-icons-outlined text-muted-foreground">
@@ -1358,7 +1358,7 @@ export function SettingsPage() {
 
 
             {/* WLED Config */}
             {/* WLED Config */}
             {ledConfig.provider === 'wled' && (
             {ledConfig.provider === 'wled' && (
-              <div className="space-y-3 p-4 bg-muted/50 rounded-lg">
+              <div className="space-y-3 p-4 rounded-lg border">
                 <Label htmlFor="wledIp">WLED IP Address</Label>
                 <Label htmlFor="wledIp">WLED IP Address</Label>
                 <Input
                 <Input
                   id="wledIp"
                   id="wledIp"
@@ -1376,7 +1376,7 @@ export function SettingsPage() {
 
 
             {/* DW LEDs Config */}
             {/* DW LEDs Config */}
             {ledConfig.provider === 'dw_leds' && (
             {ledConfig.provider === 'dw_leds' && (
-              <div className="space-y-4 p-4 bg-muted/50 rounded-lg">
+              <div className="space-y-3 p-4 rounded-lg border">
                 <Alert className="flex items-start">
                 <Alert className="flex items-start">
                   <span className="material-icons-outlined text-base mr-2 shrink-0">info</span>
                   <span className="material-icons-outlined text-base mr-2 shrink-0">info</span>
                   <AlertDescription>
                   <AlertDescription>
@@ -1457,7 +1457,7 @@ export function SettingsPage() {
         </AccordionItem>
         </AccordionItem>
 
 
         {/* Home Assistant Integration */}
         {/* Home Assistant Integration */}
-        <AccordionItem value="mqtt" id="section-mqtt" className="border rounded-lg px-4 overflow-visible">
+        <AccordionItem value="mqtt" id="section-mqtt" className="border rounded-lg px-4 overflow-visible bg-card">
           <AccordionTrigger className="hover:no-underline">
           <AccordionTrigger className="hover:no-underline">
             <div className="flex items-center gap-3">
             <div className="flex items-center gap-3">
               <span className="material-icons-outlined text-muted-foreground">
               <span className="material-icons-outlined text-muted-foreground">
@@ -1473,7 +1473,7 @@ export function SettingsPage() {
           </AccordionTrigger>
           </AccordionTrigger>
           <AccordionContent className="pt-4 pb-6 space-y-6">
           <AccordionContent className="pt-4 pb-6 space-y-6">
             {/* Enable Toggle */}
             {/* Enable Toggle */}
-            <div className="flex items-center justify-between p-4 bg-muted/50 rounded-lg">
+            <div className="flex items-center justify-between p-4 rounded-lg border">
               <div>
               <div>
                 <p className="font-medium">Enable MQTT</p>
                 <p className="font-medium">Enable MQTT</p>
                 <p className="text-sm text-muted-foreground">
                 <p className="text-sm text-muted-foreground">
@@ -1489,7 +1489,7 @@ export function SettingsPage() {
             </div>
             </div>
 
 
             {mqttConfig.enabled && (
             {mqttConfig.enabled && (
-              <div className="space-y-4">
+              <div className="space-y-3">
                 {/* Broker Settings */}
                 {/* Broker Settings */}
                 <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
                 <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
                   <div className="space-y-3">
                   <div className="space-y-3">
@@ -1614,7 +1614,7 @@ export function SettingsPage() {
         </AccordionItem>
         </AccordionItem>
 
 
         {/* Auto-play on Boot */}
         {/* Auto-play on Boot */}
-        <AccordionItem value="autoplay" id="section-autoplay" className="border rounded-lg px-4 overflow-visible">
+        <AccordionItem value="autoplay" id="section-autoplay" className="border rounded-lg px-4 overflow-visible bg-card">
           <AccordionTrigger className="hover:no-underline">
           <AccordionTrigger className="hover:no-underline">
             <div className="flex items-center gap-3">
             <div className="flex items-center gap-3">
               <span className="material-icons-outlined text-muted-foreground">
               <span className="material-icons-outlined text-muted-foreground">
@@ -1629,7 +1629,7 @@ export function SettingsPage() {
             </div>
             </div>
           </AccordionTrigger>
           </AccordionTrigger>
           <AccordionContent className="pt-4 pb-6 space-y-6">
           <AccordionContent className="pt-4 pb-6 space-y-6">
-            <div className="flex items-center justify-between p-4 bg-muted/50 rounded-lg">
+            <div className="flex items-center justify-between p-4 rounded-lg border">
               <div>
               <div>
                 <p className="font-medium">Enable Auto-play</p>
                 <p className="font-medium">Enable Auto-play</p>
                 <p className="text-sm text-muted-foreground">
                 <p className="text-sm text-muted-foreground">
@@ -1645,7 +1645,7 @@ export function SettingsPage() {
             </div>
             </div>
 
 
             {autoPlaySettings.enabled && (
             {autoPlaySettings.enabled && (
-              <div className="space-y-4 p-4 bg-muted/50 rounded-lg">
+              <div className="space-y-3 p-4 rounded-lg border">
                 <div className="space-y-3">
                 <div className="space-y-3">
                   <Label>Startup Playlist</Label>
                   <Label>Startup Playlist</Label>
                   <Select
                   <Select
@@ -1784,7 +1784,7 @@ export function SettingsPage() {
         </AccordionItem>
         </AccordionItem>
 
 
         {/* Still Sands */}
         {/* Still Sands */}
-        <AccordionItem value="stillsands" id="section-stillsands" className="border rounded-lg px-4 overflow-visible">
+        <AccordionItem value="stillsands" id="section-stillsands" className="border rounded-lg px-4 overflow-visible bg-card">
           <AccordionTrigger className="hover:no-underline">
           <AccordionTrigger className="hover:no-underline">
             <div className="flex items-center gap-3">
             <div className="flex items-center gap-3">
               <span className="material-icons-outlined text-muted-foreground">
               <span className="material-icons-outlined text-muted-foreground">
@@ -1799,7 +1799,7 @@ export function SettingsPage() {
             </div>
             </div>
           </AccordionTrigger>
           </AccordionTrigger>
           <AccordionContent className="pt-4 pb-6 space-y-6">
           <AccordionContent className="pt-4 pb-6 space-y-6">
-            <div className="flex items-center justify-between p-4 bg-muted/50 rounded-lg">
+            <div className="flex items-center justify-between p-4 rounded-lg border">
               <div>
               <div>
                 <p className="font-medium">Enable Still Sands</p>
                 <p className="font-medium">Enable Still Sands</p>
                 <p className="text-sm text-muted-foreground">
                 <p className="text-sm text-muted-foreground">
@@ -1815,9 +1815,9 @@ export function SettingsPage() {
             </div>
             </div>
 
 
             {stillSandsSettings.enabled && (
             {stillSandsSettings.enabled && (
-              <div className="space-y-4">
+              <div className="space-y-3">
                 {/* Options */}
                 {/* Options */}
-                <div className="p-4 bg-muted/50 rounded-lg space-y-4">
+                <div className="p-4 rounded-lg border space-y-3">
                   <div className="flex items-center justify-between">
                   <div className="flex items-center justify-between">
                     <div className="flex items-center gap-2">
                     <div className="flex items-center gap-2">
                       <span className="material-icons-outlined text-base text-muted-foreground">
                       <span className="material-icons-outlined text-base text-muted-foreground">
@@ -1861,7 +1861,7 @@ export function SettingsPage() {
                   </div>
                   </div>
 
 
                   {/* Timezone */}
                   {/* Timezone */}
-                  <div className="flex items-center justify-between pt-3 border-t">
+                  <div className="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 pt-3 border-t">
                     <div className="flex items-center gap-3">
                     <div className="flex items-center gap-3">
                       <span className="material-icons-outlined text-muted-foreground">
                       <span className="material-icons-outlined text-muted-foreground">
                         schedule
                         schedule
@@ -1881,7 +1881,7 @@ export function SettingsPage() {
                           setStillSandsSettings({ ...stillSandsSettings, timezone: e.target.value })
                           setStillSandsSettings({ ...stillSandsSettings, timezone: e.target.value })
                         }
                         }
                         placeholder="System Default"
                         placeholder="System Default"
-                        className="w-[200px]"
+                        className="w-full sm:w-[200px]"
                       />
                       />
                       <datalist id="timezone-options">
                       <datalist id="timezone-options">
                         {/* UTC Offsets */}
                         {/* UTC Offsets */}
@@ -1931,7 +1931,7 @@ export function SettingsPage() {
                 </div>
                 </div>
 
 
                 {/* Time Slots */}
                 {/* Time Slots */}
-                <div className="p-4 bg-muted/50 rounded-lg space-y-4">
+                <div className="p-4 rounded-lg border space-y-3">
                   <div className="flex items-center justify-between">
                   <div className="flex items-center justify-between">
                     <h4 className="font-medium">Still Periods</h4>
                     <h4 className="font-medium">Still Periods</h4>
                     <Button onClick={addTimeSlot} size="sm" variant="outline" className="gap-1">
                     <Button onClick={addTimeSlot} size="sm" variant="outline" className="gap-1">
@@ -1955,22 +1955,22 @@ export function SettingsPage() {
                       {stillSandsSettings.time_slots.map((slot, index) => (
                       {stillSandsSettings.time_slots.map((slot, index) => (
                         <div
                         <div
                           key={index}
                           key={index}
-                          className="p-3 border rounded-lg bg-background space-y-3"
+                          className="p-3 border rounded-lg bg-muted/50 space-y-3 overflow-hidden"
                         >
                         >
-                          <div className="flex items-center justify-between">
+                          <div className="flex items-center justify-between -mr-1">
                             <span className="text-sm font-medium">Period {index + 1}</span>
                             <span className="text-sm font-medium">Period {index + 1}</span>
                             <Button
                             <Button
                               variant="ghost"
                               variant="ghost"
-                              size="sm"
+                              size="icon"
                               onClick={() => removeTimeSlot(index)}
                               onClick={() => removeTimeSlot(index)}
-                              className="h-8 w-8 p-0 text-destructive hover:text-destructive"
+                              className="h-7 w-7 text-destructive hover:text-destructive"
                             >
                             >
-                              <span className="material-icons text-base">delete</span>
+                              <span className="material-icons text-lg">delete</span>
                             </Button>
                             </Button>
                           </div>
                           </div>
 
 
                           <div className="grid grid-cols-2 gap-3">
                           <div className="grid grid-cols-2 gap-3">
-                            <div className="space-y-1">
+                            <div className="space-y-1.5 min-w-0">
                               <Label className="text-xs">Start Time</Label>
                               <Label className="text-xs">Start Time</Label>
                               <Input
                               <Input
                                 type="time"
                                 type="time"
@@ -1978,9 +1978,10 @@ export function SettingsPage() {
                                 onChange={(e) =>
                                 onChange={(e) =>
                                   updateTimeSlot(index, { start_time: e.target.value })
                                   updateTimeSlot(index, { start_time: e.target.value })
                                 }
                                 }
+                                className="text-xs"
                               />
                               />
                             </div>
                             </div>
-                            <div className="space-y-1">
+                            <div className="space-y-1.5 min-w-0">
                               <Label className="text-xs">End Time</Label>
                               <Label className="text-xs">End Time</Label>
                               <Input
                               <Input
                                 type="time"
                                 type="time"
@@ -1988,11 +1989,12 @@ export function SettingsPage() {
                                 onChange={(e) =>
                                 onChange={(e) =>
                                   updateTimeSlot(index, { end_time: e.target.value })
                                   updateTimeSlot(index, { end_time: e.target.value })
                                 }
                                 }
+                                className="text-xs"
                               />
                               />
                             </div>
                             </div>
                           </div>
                           </div>
 
 
-                          <div className="space-y-1">
+                          <div className="space-y-1.5">
                             <Label className="text-xs">Days</Label>
                             <Label className="text-xs">Days</Label>
                             <Select
                             <Select
                               value={slot.days}
                               value={slot.days}
@@ -2046,7 +2048,7 @@ export function SettingsPage() {
         </AccordionItem>
         </AccordionItem>
 
 
         {/* Software Version */}
         {/* Software Version */}
-        <AccordionItem value="version" id="section-version" className="border rounded-lg px-4 overflow-visible">
+        <AccordionItem value="version" id="section-version" className="border rounded-lg px-4 overflow-visible bg-card">
           <AccordionTrigger className="hover:no-underline">
           <AccordionTrigger className="hover:no-underline">
             <div className="flex items-center gap-3">
             <div className="flex items-center gap-3">
               <span className="material-icons-outlined text-muted-foreground">
               <span className="material-icons-outlined text-muted-foreground">
@@ -2060,9 +2062,9 @@ export function SettingsPage() {
               </div>
               </div>
             </div>
             </div>
           </AccordionTrigger>
           </AccordionTrigger>
-          <AccordionContent className="pt-4 pb-6 space-y-4">
-            <div className="flex items-center gap-4 p-4 bg-muted/50 rounded-lg">
-              <div className="p-2 bg-muted rounded-lg">
+          <AccordionContent className="pt-4 pb-6 space-y-3">
+            <div className="flex items-center gap-4 p-4 rounded-lg bg-muted/50">
+              <div className="p-2 bg-background rounded-lg">
                 <span className="material-icons text-muted-foreground">terminal</span>
                 <span className="material-icons text-muted-foreground">terminal</span>
               </div>
               </div>
               <div className="flex-1">
               <div className="flex-1">
@@ -2073,8 +2075,8 @@ export function SettingsPage() {
               </div>
               </div>
             </div>
             </div>
 
 
-            <div className="flex items-center gap-4 p-4 bg-muted/50 rounded-lg">
-              <div className="p-2 bg-muted rounded-lg">
+            <div className="flex items-center gap-4 p-4 rounded-lg bg-muted/50">
+              <div className="p-2 bg-background rounded-lg">
                 <span className="material-icons text-muted-foreground">system_update</span>
                 <span className="material-icons text-muted-foreground">system_update</span>
               </div>
               </div>
               <div className="flex-1">
               <div className="flex-1">