diff --git a/frontend/src/CountdownPanel.test.ts b/frontend/src/CountdownPanel.test.ts
index de0d620..dfa12de 100644
--- a/frontend/src/CountdownPanel.test.ts
+++ b/frontend/src/CountdownPanel.test.ts
@@ -10,6 +10,28 @@ describe('countdown modal accessibility', () => {
expect(source).toContain('@keydown.esc="closeDialog"')
expect(source).toContain('ref="titleInput"')
expect(source).toContain('titleInput.value?.focus()')
- expect(source).toContain(':inert="open"')
+ expect(source).toContain(':inert="open || Boolean(detailItem)"')
+ })
+
+ it('uses a compact timeline and moves row actions into a detail sheet', () => {
+ expect(source).toContain('class="countdown-timeline"')
+ expect(source).toContain('class="countdown-row"')
+ expect(source).toContain('@click="openDetail(item)"')
+ expect(source).toContain('class="countdown-detail-sheet"')
+ expect(source).toContain('ref="detailCloseButton"')
+ expect(source).toContain('detailCloseButton.value?.focus()')
+ expect(source).not.toContain('class="countdown-actions"')
+ })
+
+ it('keeps advanced creation fields collapsed behind more settings', () => {
+ expect(source).toContain('class="countdown-advanced"')
+ expect(source).toContain('更多设置')
+ expect(source).toContain('@change="applyKindDefaults"')
+ expect(source).toContain(':disabled="form.ignore_year"')
+ })
+
+ it('keeps the empty state directly actionable', () => {
+ expect(source).toContain('添加第一个重要日子')
+ expect(source).toContain('@click="openFromEmpty"')
})
})
diff --git a/frontend/src/CountdownPanel.vue b/frontend/src/CountdownPanel.vue
index 3545076..6250284 100644
--- a/frontend/src/CountdownPanel.vue
+++ b/frontend/src/CountdownPanel.vue
@@ -1,6 +1,6 @@