diff --git a/frontend/src/components/modals/GroupRectModal.module.css b/frontend/src/components/modals/GroupRectModal.module.css
new file mode 100644
index 0000000..65194c0
--- /dev/null
+++ b/frontend/src/components/modals/GroupRectModal.module.css
@@ -0,0 +1,41 @@
+/* Slider container: strip native chrome so custom track/thumb align cleanly */
+.slider-thumb {
+ -webkit-appearance: none;
+ appearance: none;
+ background: transparent;
+ height: 13px; /* match thumb height so vertical centering is the input's box center */
+}
+.slider-thumb:focus {
+ outline: none;
+}
+
+/* Track */
+.slider-accent::-webkit-slider-runnable-track {
+ height: 4px;
+ background: #00d4ff;
+ border-radius: 2px;
+}
+.slider-accent::-moz-range-track {
+ height: 4px;
+ background: #00d4ff;
+ border-radius: 2px;
+}
+
+/* Thumb — must offset on webkit so it centers on the 4px track */
+.slider-thumb::-webkit-slider-thumb {
+ -webkit-appearance: none;
+ appearance: none;
+ width: 13px;
+ height: 13px;
+ border-radius: 50%;
+ background: #00d4ff;
+ border: 2px solid #21262d;
+ margin-top: -4.5px; /* (13 - 4) / 2 */
+}
+.slider-thumb::-moz-range-thumb {
+ width: 13px;
+ height: 13px;
+ border-radius: 50%;
+ background: #00d4ff;
+ border: 2px solid #21262d;
+}
diff --git a/frontend/src/components/modals/GroupRectModal.tsx b/frontend/src/components/modals/GroupRectModal.tsx
index 209b57b..051a936 100644
--- a/frontend/src/components/modals/GroupRectModal.tsx
+++ b/frontend/src/components/modals/GroupRectModal.tsx
@@ -7,6 +7,7 @@ import { Label } from '@/components/ui/label'
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'
import type { TextPosition } from '@/types'
import { hexToRgba, rgbaToHex8 } from '@/utils/colorUtils'
+import styles from './GroupRectModal.module.css'
export type BorderStyle = 'solid' | 'dashed' | 'dotted' | 'double' | 'none'
@@ -88,6 +89,8 @@ const TEXT_POSITIONS: { value: TextPosition; label: string }[] = [
{ value: 'bottom-right', label: '↘' },
]
+const getFontLabel = (value: string) => FONTS.find((f) => f.value === value)?.label ?? value
+
interface GroupRectModalProps {
open: boolean
onClose: () => void
@@ -138,8 +141,10 @@ export function GroupRectModal({ open, onClose, onSubmit, onDelete, initial, tit