Status: ✅ Complete
Planning Completed: January 2026
Implementation: January 18, 2026
Prerequisites: Phase 3 Complete (Discussion Boards)Related Documents:
- ../README.md — Phase Index
- ../../development/DESIGN-GUIDELINES.md — Design standards (§8 Mobile-First Polish, §10 Image Variant Sizing)
Phase 4 delivered a comprehensive mobile-first polish pass across the Champion Portal. All high-priority and medium-priority issues identified in the 43-screenshot mobile audit have been addressed.
pb-20 sm:pb-0 patternresize_to_fill calls audited and fixed to match display sizesscroll_to_selected_controller.js, _back_link.html.erb partial| Issue | Status | Notes |
|---|---|---|
| Bottom nav overlap | ✅ Done | Added pb-20 sm:pb-0 padding globally |
| Profile wizard buttons | ✅ Done | Fixed button overlap with bottom nav on steps 3-6 |
| Quick Actions → hamburger | ✅ Done | Moved from Dashboard to hamburger menu |
| Card margin inconsistencies | ✅ Done | Standardized across views |
| Back link inconsistencies | ✅ Done | Created shared partial, standardized chevron pattern |
| Hero section heights | ✅ Done | Reduced to acceptable levels |
| Event detail duplicate back link | ✅ Done | Removed bottom back link |
| Leadership member cards | ✅ Done | Improved mobile layout |
| Message bubble width | ✅ Done | Capped at reasonable width |
| Long text truncation | ✅ Done | Fixed awkward line breaks |
| Form section spacing | ✅ Done | Tightened accordion sections |
| Profile edit pill navigation | ✅ Done | Replaced dropdown with scrollable pills |
| Settings pill navigation | ✅ Done | Replaced dropdown with scrollable pills |
| Auto-scroll selected pill | ✅ Done | Created scroll_to_selected_controller.js |
| Header logo breakpoint | ✅ Done | Stacked logo until 1024px |
| Profile/Directory education text | ✅ Done | Increased text and icon sizes |
| Save button full-width | ✅ Done | Applied w-full sm:w-auto pattern |
| Privacy step spacing | ✅ Done | Stacked layout with description above |
| Connected Accounts padding | ✅ Done | Responsive padding added |
| Notifications padding | ✅ Done | Responsive padding + button |
| Event list card redesign | ✅ Done | Mobile: 8:5 full-width; Desktop: w-48 thumbnail right |
| Mobile column ordering | ✅ Done | Dashboard: Events/District column shows first on mobile |
| Directory filters collapsible | ✅ Done | Filters hidden on mobile with “Filters (X)” toggle button |
| Image variant sizing audit | ✅ Done | Fixed 7 files with variant/display size mismatches |
| Issue | Priority | Notes |
|---|---|---|
| Profile wizard header tweaks | 🟢 Low | Minor refinements to step headers |
| Message reactions sizing | 🟢 Low | Reactions may be slightly small on mobile |
The following files had variant sizes corrected to match display dimensions:
| File | Before | After | Issue |
|---|---|---|---|
_champion_card.html.erb |
64×64 | 56×56 | Matches w-14 |
directory/show.html.erb |
128×128 | 112×112 | Matches sm:w-28 |
events/show.html.erb |
800×500 | 800×450 | aspect-video is 16:9 |
_step_photo.html.erb |
200×200 | 160×160 | Matches w-40 |
_discussion_card_compact.html.erb |
112×112 | 128×96/80×80 | Rectangular displays |
_event_card_compact.html.erb |
112×112 | 128×112/128×96 | Rectangular displays |
_news_card_compact.html.erb |
112×112 | 128×96/80×80 | Rectangular displays |
All 454 Champion Portal controller tests pass.
Files: app/views/cp/discussions/_reactions.html.erb (or similar)
Phase 4 is a polish pass across all Champion Portal views to ensure mobile-first consistency, visual cohesion, and adherence to design guidelines before MVP launch.
| Focus | Description |
|---|---|
| Mobile Consistency | Ensure all views work well on phone-sized screens |
| Design Alignment | Apply DESIGN-GUIDELINES.md patterns consistently |
| Pattern Standardization | Fix inconsistencies identified in screenshot audit |
| UX Polish | Loading states, error handling, transitions |
| Performance | Optimize images, lazy loading, pagination |
This is NOT a redesign — it’s a consistency pass. The goal is to ensure everything built in Phases 1-3 works together cohesively on mobile devices before beta users arrive.
Features built across Phases 1-3 were developed incrementally. While each feature was tested individually, the holistic experience has inconsistencies:
Champions will primarily use the portal on mobile devices:
A desktop-first experience retrofitted to mobile creates friction. This phase establishes mobile as a first-class experience.
January 2026: Review of 43 mobile screenshots identified the following issues:
| Category | Issue Count | Priority |
|---|---|---|
| Bottom nav overlap | ~20 views + wizard + forms | 🔴 High |
| Profile wizard buttons hidden | 4 steps (3-6) | 🔴 CRITICAL |
| Mobile column ordering | Dashboard, 2-column layouts | 🔴 HIGH |
| Card margins inconsistent | ~10 views | 🔴 High |
| Quick Actions placement | 1 view | 🔴 High |
| Section padding varies | ~8 views | 🔴 High |
| Wizard hero images | 3 steps (3-5) | 🟡 Medium |
| Back link inconsistency | ~4 views (invite, event, others) | 🟡 Medium |
| Duplicate back links | 1 view (event detail) | 🟡 Medium |
| Hero section too tall | ~4 views | 🟡 Medium |
| Discussion image handling | ~3 views | 🟡 Medium |
| Text truncation issues | ~3 views | 🟡 Medium |
| Filter UX cumbersome | 1 view | 🟡 Medium |
| Leadership member card layout | 1 view | 🟡 Medium |
| Notifications dropdown z-index | 1 component | 🟡 Medium |
| Rich text toolbar touch targets | 1 view | 🟡 Medium |
| Settings text wrapping | 1 view | 🟡 Medium |
| Message bubble width | 1 view | 🟢 Low |
| Event date badges | 2 views | 🟢 Low |
| Metric placeholders | 1 view | 🟢 Low |
| Form spacing | 1 view | 🟢 Low |
| Auth pages | 0 issues | ✅ Clean |
| Boards index | 0 issues | ✅ Clean |
| Support threads | 0 issues | ✅ Clean |
| Contact form | 0 issues | ✅ Clean |
| Settings - Connected Accounts | 0 issues | ✅ Clean |
Several views are very long on mobile (Settings - Notifications, Settings - Account, Profile Wizard steps). Screenshots only captured the top portions. During implementation, scroll through entire pages to verify:
Pages requiring full scroll review:
cp/dashboard/show.html.erb)| Item | Status | Notes | |——|——–|——-| | Hero gradient | ✅ Good | Responsive, warm design | | Next Steps card | ⚠️ Review | Inconsistent padding | | Community snapshot | ⚠️ Review | Photo grid on small screens | | Quick Actions row | 🔴 Fix | Move to hamburger menu — takes too much space, duplicates menu functionality | | Bottom nav overlap | 🔴 Fix | Content extends behind fixed nav |
cp/directory/index.html.erb)| Item | Status | Notes | |——|——–|——-| | Search/filter bar | 🔴 Fix | Make filters collapsible — takes too much vertical space | | Champion cards | ✅ Good | Card layout responsive | | Card margins | 🔴 Fix | Inconsistent horizontal margins | | Pagination | ✅ Good | “Load more” pattern | | Empty state | ⚠️ Review | Verify copy per DESIGN-GUIDELINES |
cp/profile/show.html.erb)| Item | Status | Notes | |——|——–|——-| | Hero section | 🟡 Review | Takes 40-50% viewport — reduce padding | | Hero overlap | ✅ Good | Phase 1.9.3 refresh applied | | Section cards | ⚠️ Review | Inconsistent shadow/spacing | | Education display | ✅ Good | College icons, truncation | | Actions (Edit/View Public) | 🟡 Review | Consider moving outside hero on mobile |
cp/communities/index.html.erb)Note: There is no separate “explore” view — index handles all community browsing.
| Item | Status | Notes |
|---|---|---|
| Tab navigation | ⚠️ Review | Works on small screens? |
| Community cards | ✅ Good | Activity scores visible |
| Long names | 🟡 Fix | “College of Lib. Arts & S…” truncates mid-word |
| Join/Leave actions | ⚠️ Review | Button consistency |
| Card margins | 🔴 Fix | Inconsistent horizontal margins |
cp/communities/show.html.erb)| Item | Status | Notes | |——|——–|——-| | Hero section | 🟡 Review | Too tall on mobile | | Back link | 🟡 Fix | Uses different pattern than other views | | Action buttons | ✅ Good | Manage/Leave buttons |
cp/messages/index.html.erb)| Item | Status | Notes | |——|——–|——-| | Thread list | ✅ Good | Simple, scannable | | Unread indicators | ✅ Good | Badge styling | | Bottom nav overlap | 🔴 Fix | May hide last thread | | Empty state | ⚠️ Review | Per DESIGN-GUIDELINES |
cp/messages/show.html.erb)| Item | Status | Notes | |——|——–|——-| | Message bubbles | 🟢 Polish | Cap width at 75% | | Input area | ⚠️ Review | Doesn’t overlap bottom nav? | | Back link | 🟡 Fix | Inconsistent pattern |
cp/news/index.html.erb)| Item | Status | Notes | |——|——–|——-| | Card grid | ✅ Good | Responsive stacking | | Card margins | 🔴 Fix | Inconsistent horizontal margins | | Image handling | ⚠️ Review | Aspect ratios consistent | | Pagination | ✅ Good | Standard pattern |
cp/events/index.html.erb)| Item | Status | Notes | |——|——–|——-| | Time filter tabs | ⚠️ Review | Tab styling mobile | | Event cards | 🟢 Polish | Date badge proportions | | RSVP actions | ⚠️ Review | Button placement | | Filter dropdowns | 🟡 Fix | Consider collapsible |
cp/discussions/index.html.erb)| Item | Status | Notes |
|——|——–|——-|
| “Hot Discussions” card | ✅ Good | Featured with large image |
| List items | 🟡 Review | Establish thumbnail vs. feature pattern |
| Card margins | 🔴 Fix | Inconsistent |
| Back link | 🟡 Fix | Uses ← instead of chevron |
cp/discussions/show.html.erb)| Item | Status | Notes | |——|——–|——-| | Post content | ✅ Good | Images display well | | Comment area | ⚠️ Review | Touch targets for toolbar | | Back link | 🟡 Fix | Inconsistent with other views |
cp/leadership/index.html.erb)| Item | Status | Notes | |——|——–|——-| | Metric cards | ✅ Good | 2×2 grid works | | Placeholder text | 🟢 Polish | “Events (Phase 2)” too long | | Recent members | ⚠️ Review | Name truncation |
cp/settings/show.html.erb)| Item | Status | Notes | |——|——–|——-| | Section navigation | ⚠️ Review | Works on mobile? | | Form inputs | ⚠️ Review | Touch-friendly sizing | | Action buttons | ⚠️ Review | Consistent styling |
cp/profile/edit.html.erb)| Item | Status | Notes | |——|——–|——-| | Accordion sections | 🟢 Polish | Tighten content spacing | | Form fields | ✅ Good | Single column | | Back link | ⚠️ Review | Consistent pattern |
cp/profile_wizard/show.html.erb)All 7 steps reviewed (Jan 2026 screenshots)
| Step | Item | Status | Notes |
|---|---|---|---|
| All | Bottom nav overlap | 🔴 CRITICAL | Steps 3-6 show action buttons hidden behind nav |
| All | Back/Skip/Continue layout | 🟡 Fix | Horizontal arrangement too cramped on mobile |
| 1 | Education confirmation | ✅ Good | Card layout clean |
| 1 | Error banner | ⚠️ Bug | “Invalid wizard step” showing in dev |
| 2 | Location step | ✅ Good | Two-button pattern works |
| 2 | Info box | 🟡 Review | “Local connections matter” — consider collapsible |
| 3-5 | Hero image | 🔴 Fix | Takes ~100px — remove from wizard steps |
| 3 | Champion Role card | ✅ Good | Role selection clear |
| 4 | Profession form | ✅ Good | Form fields standard |
| 5 | Photo upload | ✅ Good | Photo tips helpful |
| 6 | Affinities search | ✅ Good | Category dropdown + checkboxes |
| 6 | Selected items | ✅ Good | Pill display with ✕ |
| 7 | Privacy settings | ✅ Good | Dropdowns accessible |
| 7 | Celebration box | ✅ Good | “You’re almost done!” motivating |
Critical Issue: Steps 3, 4, 5, and 6 clearly show the “Skip for now” text and buttons being cut off by the fixed bottom navigation. The pb-20 fix is essential here.
Recommendation: Remove decorative hero image from wizard steps 3-5 to maximize vertical content space on mobile. The wizard is already branded with the header — the hero adds no functional value.
cp/events/show.html.erb)| Item | Status | Notes |
|---|---|---|
| Hero image | ✅ Good | Appropriately sized, nice overlay |
| College tags | ✅ Good | Pills format works |
| Date/time/location | ✅ Good | Clear with icons |
| RSVP button | ✅ Good | Prominent, accessible |
| Views/clicks stats | ✅ Good | Subtle, informative |
| Back link (TOP) | 🟡 Fix | “← All Events” uses arrow, should be chevron |
| Back link (BOTTOM) | 🟡 Fix | Has BOTH top and bottom — pick one location |
| Bottom nav overlap | 🔴 Fix | Long descriptions may extend behind nav |
Recommendation: Remove bottom “← Back to All Events” link — the top link is sufficient. Reduces redundancy and frees space.
cp/sessions/new.html.erb, cp/registrations/new.html.erb)| Item | Status | Notes |
|---|---|---|
| Hero section | ✅ Good | Subtle, appropriate height |
| Google OAuth button | ✅ Good | Clear, well-styled |
| Form fields | ✅ Good | Touch-friendly sizing |
| “What happens next?” | ✅ Good | Helpful onboarding copy |
| Buttons (Sign In/Create) | ✅ Good | Full-width, accessible |
| No bottom nav | ✅ Correct | Unauthenticated pages correctly omit it |
Remember Me Interstitial: | Item | Status | Notes | |——|——–|——-| | Two-button layout | ✅ Good | Clear primary/secondary | | Explanation box | ✅ Good | Helpful security context | | Security note | ✅ Good | Appropriate warning |
✅ Auth pages are clean — no significant mobile issues!
cp/invites/new.html.erb)| Item | Status | Notes |
|---|---|---|
| Hero section | ✅ Good | Icon + title appropriate size |
| Two options layout | ✅ Good | Clear separation between link/email |
| Copy button | ✅ Good | Accessible and functional |
| Email form | ✅ Good | Standard inputs, textarea |
| Personal note field | ✅ Good | Appropriate height |
| Send button | ✅ Good | Full-width |
| Back link | 🟡 Fix | “← Back to Dashboard” uses arrow, should be chevron |
| Bottom nav overlap | 🔴 Verify | May hide content at bottom |
| Item | Status | Notes |
|---|---|---|
| Dropdown positioning | ⚠️ Issue | Text from page behind bleeds through (z-index?) |
| Notification items | ✅ Good | Clear icon + text + timestamp layout |
| Text truncation | ✅ Good | Long text truncates with ellipsis |
| Touch targets | ✅ Good | Items are adequate tappable height |
| Icon differentiation | ✅ Good | Bell vs calendar icons distinguish types |
cp/leadership/moderation/queue.html.erb)| Item | Status | Notes |
|---|---|---|
| Back link | ✅ Good | Uses chevron < correctly |
| Page title | ✅ Good | Icon + title + subtitle clear |
| Flagged Posts section | ✅ Good | Empty state with checkmark |
| Flagged Comments section | ✅ Good | Card layout with flag details |
| Action buttons | ✅ Good | View/Hide/Escalate accessible |
| Recent Actions list | 🔴 Fix | Long list extends behind bottom nav |
| Action badges | ✅ Good | Color-coded (Hide, Lock, Unlock) |
| Moderation Tips | ✅ Good | Helpful guidance box |
| Bottom nav overlap | 🔴 Fix | Tips section may be partially hidden |
cp/leadership/members.html.erb)| Item | Status | Notes |
|---|---|---|
| Breadcrumb navigation | ✅ Good | My Leadership > Community > Members |
| Tab navigation | ✅ Good | All Members / Active This Week / New This Month |
| Stats summary | ✅ Good | “4 total members · 4 active this week” |
| Member cards | 🟡 Fix | Layout awkward — badges + buttons crowded |
| “Active this week” badge | ✅ Good | Green badge visible |
| “New” badge | ✅ Good | Blue badge visible |
| Text wrapping | 🟡 Fix | Details breaking oddly (“Nashville TN”, “Ministry ‘10”) |
| View Profile / Welcome buttons | ⚠️ Review | Crowded on same line as location |
| Bottom nav overlap | 🔴 Fix | Member list extends behind nav |
Recommendation: Restructure member cards to stack information more cleanly on mobile:
[Avatar] Name
Badges (Active, New)
Location · Major · Joined date
[View Profile] [Welcome]
cp/boards/index.html.erb)| Item | Status | Notes |
|---|---|---|
| Back link | ✅ Good | Uses chevron < correctly |
| Hero section | ✅ Good | Appropriate height with icon |
| New post button | ✅ Good | + button accessible |
| “Hot Discussions” featured | ✅ Good | Image + text card layout works |
| Title truncation | ✅ Good | “What’s the bes…” truncates properly |
| Metadata display | ✅ Good | Author, time, comments |
| “All Discussions” section | ✅ Good | Clear section divider |
cp/boards/new.html.erb or cp/discussions/new.html.erb)| Item | Status | Notes |
|---|---|---|
| Back link | ✅ Good | Uses chevron < correctly |
| Page title | ✅ Good | Icon + “Start a Discussion” |
| Form fields | ✅ Good | Touch-friendly sizing |
| Rich text toolbar | ⚠️ Review | Small icons — verify 44px touch targets |
| Textarea | ✅ Good | Appropriate default height |
| Image upload | ✅ Good | Clear dropzone with file type info |
| Guidelines callout | ✅ Good | Blue info box, prominent |
| Post/Cancel buttons | 🔴 Fix | May be hidden behind bottom nav |
| Bottom nav overlap | 🔴 Fix | Buttons at risk |
cp/settings/show.html.erb section: account)| Item | Status | Notes |
|---|---|---|
| Section dropdown | ✅ Good | Works for navigation between settings sections |
| Email change form | 🟡 Review | Helper text wrapping is awkward (“We will send a confirmation…”) |
| Password section | ✅ Good | Clear change password form |
| Blocked Users | ✅ Good | Clear list with unblock actions |
| Request Deletion | ✅ Good | Red destructive button prominent |
| Page length | ⚠️ Long | Very long scrolling page |
| Bottom nav overlap | 🔴 Verify | Content may extend behind nav |
cp/settings/show.html.erb section: connected_accounts)| Item | Status | Notes |
|---|---|---|
| Hero section | ✅ Good | Blue gradient with section title |
| Section dropdown | ✅ Good | Easy section switching |
| Google connection | ✅ Good | Clear connected status display |
| “More options” note | ✅ Good | Expectation setting for future providers |
| Card layout | ✅ Good | Clean and simple |
cp/settings/show.html.erb section: notifications)| Item | Status | Notes |
|---|---|---|
| Section organization | ✅ Good | Clear grouping by notification type |
| Toggle switches | ✅ Good | Touch-friendly In-App/Email toggles |
| Frequency dropdowns | ✅ Good | Clear options for email frequency |
| Page length | ⚠️ Very Long | Extensive scrolling required |
| Save Preferences button | 🔴 Fix | At bottom of very long page, may overlap nav |
| Bottom nav overlap | 🔴 Fix | Save button at high risk |
cp/support_threads/index.html.erb)| Item | Status | Notes |
|---|---|---|
| Back link | ✅ Good | Uses chevron < correctly |
| “New Message” button | ✅ Good | Prominent position and color |
| Section tabs | ✅ Good | Active/Resolved clear segmentation |
| Thread cards | ✅ Good | Shows subject, timestamp, status badge |
| Status badges | ✅ Good | “In Progress”, “Resolved” color-coded |
| Empty state | ✅ Verify | Ensure encouraging message if no threads |
| Bottom nav overlap | 🔴 Visible | Thread list extends behind bottom nav |
cp/support_threads/new.html.erb)| Item | Status | Notes |
|---|---|---|
| Back link | ✅ Good | Uses chevron < correctly (“Back to Support”) |
| Page title | ✅ Good | Clear heading with icon |
| Form fields | ✅ Good | Subject and message fields appropriate |
| Tips box | ✅ Good | Helpful guidance for users |
| Cancel/Send buttons | 🔴 Verify | May overlap with bottom nav |
| Touch targets | ✅ Good | Form elements adequately sized |
Issue: The bottom navigation bar is position: fixed, but pages don’t account for this, causing content to be hidden behind the nav.
Affected Views: All Champion Portal pages (~15 views)
Fix: Add consistent pb-20 sm:pb-0 (80px mobile, 0 desktop) padding to main content containers.
Implementation:
<%# In app/views/layouts/champions.html.erb or individual views %>
<main class="pb-20 sm:pb-0">
<%# Content %>
</main>
Issue: Cards have varying horizontal margins — some edge-to-edge, some with mx-3, some with mx-4.
Affected Views: Dashboard, Communities, News, Events, Discussions (~10 views)
Fix: Standardize to mx-4 sm:mx-0 (16px mobile, 0 desktop in grids).
Pattern:
<div class="mx-4 sm:mx-0">
<div class="bg-white rounded-xl shadow-sm p-4 sm:p-6">
<%# Card content %>
</div>
</div>
Issue: The Quick Actions 2×2 grid (Edit Profile, Find Alumni, Invite Friends, Help) on the Dashboard:
Decision: Move Quick Actions to hamburger menu.
Rationale:
Implementation:
Issue: Card internal padding varies (p-4 vs p-6 vs p-5) creating visual inconsistency.
Affected Views: Most card-based views (~8 views)
Pattern to Establish:
| Breakpoint | Card Internal Padding | Section Spacing |
|---|---|---|
| Mobile (< 640px) | p-4 (16px) |
space-y-4 |
| Desktop (≥ 640px) | p-6 (24px) |
space-y-6 |
Issue: “Back to X” links use different patterns:
←<Affected Views: Discussion detail, Event detail, Profile, News detail, Community show (~6 views)
Pattern to Establish:
<%# app/views/shared/_back_link.html.erb %>
<%= link_to path, class: "inline-flex items-center gap-1 text-gray-600 hover:text-belmontblue text-sm mb-4" do %>
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"/>
</svg>
Back to <%= section_name %>
<% end %>
Rules:
<)text-gray-600 with hover:text-belmontblueSpecial Case — Event Detail: Event detail currently has BOTH “← All Events” at top AND “← Back to All Events” at bottom. Remove the bottom link — it’s redundant and wastes space.
Issue: Hero sections (Profile, Community Show) consume 40-50% of initial viewport, pushing content below the fold.
Affected Views: Profile show, Community show, Leadership Dashboard (~4 views)
Fix: Reduce hero padding on mobile while maintaining brand presence.
| Element | Mobile | Desktop |
|---|---|---|
| Hero padding | py-4 or py-5 |
py-8 |
| Profile photo | w-20 h-20 |
w-24 h-24 |
| Action buttons | Below hero, full-width | Inside hero |
Principle: Heroes should help users know where they are (~35% max viewport), but content is king.
Issue: Discussion cards have inconsistent image treatment.
Pattern to Establish:
| Context | Image Treatment |
|---|---|
| “Hot Discussions” / Featured | Large image above text, full card width, h-40 |
| List items with image | Small thumbnail on right, w-20 h-20 max |
| List items without image | No placeholder needed |
Issue: Long names truncate awkwardly mid-word (e.g., “College of Lib. Arts & S…”)
Affected Views: Communities index, Directory cards, Event cards (~3 views)
Pattern:
| Content Type | Strategy | Tailwind Class |
|---|---|---|
| Community names | Allow 2-line wrap | line-clamp-2 |
| Person names | Single line truncate | truncate |
| Descriptions | 2-line clamp | line-clamp-2 |
Issue: Filter section (District, College, Graduation Year, Group/Organization) takes significant vertical space, pushing results far down.
Fix: Make filters collapsible on mobile with applied filter count.
Pattern:
┌─────────────────────────────────┐
│ 🔍 Search by name... [Search] │
├─────────────────────────────────┤
│ Filters (2 applied) [▼] │
│ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
│ (collapsed by default on mobile)│
├─────────────────────────────────┤
│ 17 champions found Sort: A-Z ▼ │
└─────────────────────────────────┘
Implementation:
collapsible_filters_controller.js Stimulus controllerIssue: Member cards on Leadership Members page have awkward mobile layout:
Affected Views: cp/leadership/members.html.erb
Current Layout (problematic):
[Avatar] Name
Active this week Nashville, TN [View Profile] [Welcome]
Ministry '10
Joined Jan 2026
Recommended Layout:
[Avatar] Name
[Active] [New] ← Badges on own line
Nashville, TN · Ministry '10 · Joined Jan 2026
[View Profile] [Welcome] ← Buttons on own line
Fix: Stack elements vertically on mobile, allow horizontal on desktop.
Issue: Message bubbles may be too wide on larger phones.
Fix: Cap at max-w-[75%] of container.
Issue: Date badges take significant horizontal space.
Fix: On mobile, make date badge smaller (w-12 instead of w-16).
Issue: “Events (Phase 2)” placeholder text is too long.
Fix: Show “—” with short label: <div>—</div><div class="text-xs">Events</div>
Issue: Profile edit accordion sections have excess whitespace between header and content.
Fix: Tighten to pt-4 from pt-6.
Issue: The 7-step Profile Wizard has several mobile-specific issues:
Affected Files: app/views/cp/profile_wizard/show.html.erb, step partials
Fixes:
| Issue | Solution |
|---|---|
| Bottom nav overlap | Apply pb-20 sm:pb-0 to wizard container |
| Hero images | Remove from mobile (hidden sm:block) or remove entirely from wizard steps |
| Button layout | Consider stacking Skip/Continue on mobile with wider spacing |
Implementation:
<%# Wizard footer - improved mobile layout %>
<div class="flex flex-col sm:flex-row items-center gap-3 pb-24 sm:pb-6">
<%= link_to "Back", ..., class: "text-gray-600 hover:text-belmontblue" %>
<div class="flex items-center gap-4">
<%= link_to "Skip for now", ..., class: "text-sm text-gray-500" %>
<%= button_tag "Continue", class: "bg-belmontblue text-white px-6 py-2 rounded-lg" %>
</div>
</div>
Issue: On desktop, many pages use a 2-column layout:
On mobile, these collapse to single-column. By default with flex-col, left column content appears first. However, some right-column content (like upcoming events) may be more important on mobile than some left-column content.
Current Behavior: Right column content appears AFTER left column content.
Affected Views:
cp/dashboard/show.html.erb) — Events section may need higher visibility on mobilecp/communities/show.html.erb) — Upcoming events vs other contentConsideration: Content priority may differ between mobile and desktop users:
Potential Solutions:
order- classes:
```erb
<%# Desktop: sidebar on right, Mobile: events card first %>
2. **CSS Grid with named areas:**
```css
@media (max-width: 1024px) {
.dashboard-grid {
grid-template-areas:
"events"
"messages"
"community"
"profile";
}
}
Recommendation: Use Tailwind order- classes. Review each 2-column layout to determine mobile content priority.
Mobile Content Priority (based on JTBD analysis):
| Content Block | Mobile Priority | JTBD Rationale |
|---|---|---|
| Upcoming Events | 🔴 HIGH | Job C3 (Host Gathering) + C5 (Stay in Loop) — “What’s happening?” is a primary mobile use case |
| Community Snapshot | 🔶 MEDIUM-HIGH | Job C1 (Find My Tribe) + C9 (Feel Like I Belong) — Connection to local community |
| News/Posts | 🔶 MEDIUM | Job C5 (Stay in Loop) — Fresh content for return visits |
| Messages | 🟡 MEDIUM | Already accessible via bottom nav + notifications bell; don’t need duplicate prominence |
| Profile Summary | 🔽 LOW | User already knows their own profile |
| Quick Actions | 🔽 LOWEST | Moving to hamburger menu anyway |
Note: Messages de-prioritized because Champions have multiple access points (bottom nav icon, notifications dropdown). Events have no other prominent entry point on the Dashboard.
Goal: Fix issues affecting all or most views.
Status: Complete
Deliverables:
pb-20 sm:pb-0 to champions layout for bottom nav paddingmx-4 sm:mx-0)p-4 sm:p-6)Files:
app/views/layouts/champions.html.erbapp/views/cp/dashboard/show.html.erbapp/views/shared/_mobile_nav.html.erb (or equivalent menu)Goal: Create/update shared components for consistency.
Status: Mostly Complete
Deliverables:
app/views/shared/_back_link.html.erb partialcollapsible_filters_controller.js Stimulus controller ← REMAININGFiles:
app/views/shared/_back_link.html.erb ✅app/javascript/controllers/collapsible_filters_controller.js (needed)app/views/cp/directory/index.html.erbGoal: Reduce hero heights on mobile while maintaining brand presence.
Status: Complete (mostly)
Deliverables:
Files:
app/views/cp/profile/show.html.erbapp/views/cp/communities/show.html.erbapp/views/cp/leadership/show.html.erbGoal: Fix critical issues in the 7-step profile wizard flow.
Status: Complete (minor header tweaks possible)
Deliverables:
pb-24 sm:pb-6 padding to wizard container for bottom nav clearancehidden sm:block)Files:
app/views/cp/profile_wizard/show.html.erbapp/views/cp/profile_wizard/_step_*.html.erbGoal: Address medium/low priority issues in specific views.
Status: Mostly Complete
Deliverables:
line-clamp-2)Goal: Verify all views render correctly at mobile breakpoints.
Status: Complete
Test Breakpoints: | Breakpoint | Device | Width | |————|——–|——-| | XS | Small phone | 320px | | SM | Standard phone | 375px | | MD | Large phone | 414px | | LG | Tablet | 768px+ |
Deliverables:
Goal: Ensure all interactive elements meet minimum touch target size.
Status: Complete (minor reaction size review possible)
Requirements per WCAG/Apple HIG:
Deliverables:
Goal: Optimize loading performance on mobile networks.
Deliverables:
Goal: Apply final visual polish per DESIGN-GUIDELINES.md.
Deliverables:
mx-4 sm:mx-0)p-4 sm:p-6)After completing Phase 4:
roadmap_controller.rb with Phase 4 status| File | Purpose |
|——|———|
| app/views/shared/_back_link.html.erb | Consistent back navigation |
| app/javascript/controllers/collapsible_filters_controller.js | Toggle filter visibility |
| File | Changes |
|——|———|
| app/views/layouts/champions.html.erb | Add pb-20 sm:pb-0 to main |
| app/views/cp/dashboard/show.html.erb | Remove Quick Actions section |
| app/views/shared/_mobile_nav.html.erb | Add Quick Action items |
| app/views/cp/directory/index.html.erb | Collapsible filters |
| app/views/cp/profile/show.html.erb | Reduce hero, move buttons |
| app/views/cp/communities/show.html.erb | Reduce hero height |
| app/views/cp/messages/show.html.erb | Cap bubble max-width |
| Multiple views | Update back links to use partial |
| Multiple views | Standardize card margins/padding |
| Question | Decision |
|---|---|
| Bottom nav is fixed or scrolling? | Fixed — need pb-20 padding on all pages |
| Quick Actions placement? | Move to hamburger menu — accessible on all pages |
| Filter UX on mobile? | Collapsible with filter count badge |
| Hero section aggressiveness? | Reduce but maintain brand presence (~35% max viewport) |
| Document | Purpose |
|---|---|
| ../../development/DESIGN-GUIDELINES.md | Visual standards |
| ../../JOBS-TO-BE-DONE.md | User context |
| ../phase-1/1.9-pre-beta-polish.md | Previous polish work |
This phase ensures the Champion Portal is ready for mobile-first beta users.