diff --git a/frontend/dashboard.css b/frontend/dashboard.css index 54fb8bf..fbebfe3 100644 --- a/frontend/dashboard.css +++ b/frontend/dashboard.css @@ -1191,6 +1191,7 @@ textarea { resize: vertical; min-height: 120px; } @media (max-width: 600px) { body { padding-bottom:calc(66px + env(safe-area-inset-bottom)); } body.mobile-today-active { padding-bottom:calc(var(--mobile-today-clearance, 166px) + env(safe-area-inset-bottom)); } + body:has(.mobile-today-hud:not([hidden]):not([data-overlay-hidden="true"])) { padding-bottom:calc(var(--mobile-today-clearance, 166px) + env(safe-area-inset-bottom)); } header { min-height:56px; max-height:64px; padding:6px 10px; align-items:center; gap:8px; background:rgba(11,21,38,.98); } .app-brand .muted, #clock { display:none; } .app-live-status { margin-left:auto; } diff --git a/tests/test_mobile_today_command_bar.py b/tests/test_mobile_today_command_bar.py index 1f56b3f..769a810 100644 --- a/tests/test_mobile_today_command_bar.py +++ b/tests/test_mobile_today_command_bar.py @@ -129,6 +129,15 @@ process.stdout.write(JSON.stringify(values)); assert result == {"--mobile-today-clearance": "168px"} +def test_visible_mobile_today_hud_reserves_measured_scroll_clearance_without_timer_class(): + css = (FRONTEND / "dashboard.css").read_text() + + assert ( + 'body:has(.mobile-today-hud:not([hidden]):not([data-overlay-hidden="true"])) ' + "{ padding-bottom:calc(var(--mobile-today-clearance, 166px)" + ) in css + + def test_mobile_command_bar_keeps_primary_actions_visible_and_secondary_actions_modal(): html = (FRONTEND / "index.html").read_text() css = (FRONTEND / "dashboard.css").read_text()