@@ -946,6 +949,20 @@ input {
letter-spacing: 0;
}
+/* Number inputs hold short numeric values. Capping the width keeps
+ them from stretching to the panel's full ~260px and aligns the
+ panel visually with the more compact slider controls. Inputs
+ inside a `.row` (two side-by-side labels) still split that row
+ evenly because their label parent is `flex: 1 1 0`. */
+input[type='number'] {
+ max-width: 96px;
+ font-variant-numeric: tabular-nums;
+}
+
+.row input[type='number'] {
+ max-width: none;
+}
+
.row {
display: flex;
gap: 8px;
diff --git a/src/components/ScriptFrameDialog.vue b/src/components/ScriptFrameDialog.vue
index 354e2ba..44a5038 100644
--- a/src/components/ScriptFrameDialog.vue
+++ b/src/components/ScriptFrameDialog.vue
@@ -6,6 +6,9 @@ import { t } from '@/i18n'
import { Modal } from '@/components/ui'
import ActionEditor from './ActionEditor.vue'
import type { Action } from '@/types/scene'
+import { useTimeFormat } from '@/composables/useTimeFormat'
+
+const { timeToInputValue, inputValueToSeconds, inputStep, unitLabel } = useTimeFormat()
const props = defineProps<{
modelValue: boolean
@@ -73,13 +76,13 @@ function removeFrame() {