I always found it difficult to navigate the Activity Completion report since there are no static headers/column. The addition of the Alphabet filter for student names helps a little to reduce what's on the screen, but horizontal scrolling is still necessary in big courses and I find that awkward (compared to vertical scrolling).
So I swapped the Student names column with the Activity name Headers on Activity Completion Report 3.9 and it feels more natural when looking for an activity to manually mark complete, so I wanted to share... I use a custom theme but the idea might be the same on others.
/* Activity Completion Report Transpose Headers */
#page-report-progress-index table#completion-progress {display: flex; flex-flow; row;}
#page-report-progress-index thead tr {display: flex; flex-flow: column;}
#page-report-progress-index thead th {border-bottom: 1px solid #dee2e6;}
#page-report-progress-index tbody {display: flex; flex-flow: row;}
#page-report-progress-index tbody tr {display: flex; flex-flow: column;}
#page-report-progress-index tbody td {height: 25px; border-top: 0; border-bottom: 1px solid #dee2e6;}
#page-report-progress-index .completion-header {text-align: left;}
#page-report-progress-index .completion-header a {display: flex; flex-direction: row;}
#page-report-progress-index .completion-header .completion-expected {display: none;}
#page-report-progress-index .rotated-text-container {width: fit-contents;}
#page-report-progress-index .rotated-text:after {margin-top: unset;}
#page-report-progress-index .rotated-text {transform: translate(0,0%) rotate(0deg);}
#page-report-progress-index tbody th {white-space: nowrap;}
#page-report-progress-index #completion-progress th {width: 220px; height: 25px; text-align: center;}
#page-report-progress-index .modicon {padding-top: 5px; margin-left: -36px;}