, but this code // executes before the first paint, when

Â鶹Çø

is not yet present. The // classes are added to so styling immediately reflects the current // toolbar state. The classes are removed after the toolbar completes // initialization. const classesToAdd = ['toolbar-loading', 'toolbar-anti-flicker']; if (toolbarState) { const { orientation, hasActiveTab, isFixed, activeTray, activeTabId, isOriented, userButtonMinWidth } = toolbarState; classesToAdd.push( orientation ? `toolbar-` + orientation + `` : 'toolbar-horizontal', ); if (hasActiveTab !== false) { classesToAdd.push('toolbar-tray-open'); } if (isFixed) { classesToAdd.push('toolbar-fixed'); } if (isOriented) { classesToAdd.push('toolbar-oriented'); } if (activeTray) { // These styles are added so the active tab/tray styles are present // immediately instead of "flickering" on as the toolbar initializes. In // instances where a tray is lazy loaded, these styles facilitate the // lazy loaded tray appearing gracefully and without reflow. const styleContent = ` .toolbar-loading #` + activeTabId + ` { background-image: linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%); } .toolbar-loading #` + activeTabId + `-tray { display: block; box-shadow: -1px 0 5px 2px rgb(0 0 0 / 33%); border-right: 1px solid #aaa; background-color: #f5f5f5; z-index: 0; } .toolbar-loading.toolbar-vertical.toolbar-tray-open #` + activeTabId + `-tray { width: 15rem; height: 100vh; } .toolbar-loading.toolbar-horizontal :not(#` + activeTray + `) > .toolbar-lining {opacity: 0}`; const style = document.createElement('style'); style.textContent = styleContent; style.setAttribute('data-toolbar-anti-flicker-loading', true); document.querySelector('head').appendChild(style); if (userButtonMinWidth) { const userButtonStyle = document.createElement('style'); userButtonStyle.textContent = `#toolbar-item-user {min-width: ` + userButtonMinWidth +`px;}` document.querySelector('head').appendChild(userButtonStyle); } } } document.querySelector('html').classList.add(...classesToAdd); })(); The Rivalry at LMCU Ballpark | Â鶹Çø

Â鶹Çø

Skip to main content

Events Calendar

The Rivalry at LMCU Ballpark

S M T W T F S
27
 
28
 
29
 
30
 
1
 
2
 
3
 
4
 
5
 
6
 
7
 
8
 
9
 
10
 
11
 
12
 
13
 
14
 
15
 
16
 
17
 
18
 
19
 
20
 
21
 
22
 
23
 
24
 
25
 
26
 
27
 
28
 
29
 
30
 
31
 

The Rivalry at LMCU Ballpark

  • Thu, May 01, 2025
  • 7:00 pm–9:30 pm
Image
Calvin vs. Hope Baseball at LMCU Ballpark
Let's play ball!

Grab your family and friends for a night out at LMCU Ballpark as Calvin Knights baseball takes on Hope! This one-night-only experience is on Thursday, May 1 at 7 p.m. Come hungry—concessions will be open for food and drink!

Tickets

No advance RSVP is necessary. Tickets are purchased at the door: $5 for adults, free for kids 12 and under! LMCU Ballpark is cashless, so come prepared to pay with card. All tickets will be general admission—sit wherever you'd like!

If you are a member of the William Spoelhof Society, .

Alumni Programming

Stop by our alumni tent on the third base terrace for giveaways, special photo opportunities, and more!

Stadium & Parking

The stadium opens at 6 p.m. with first pitch at 7:05 p.m. Parking is free, and accessible spots are available in all lots. 

Rain Plan

This event is not rain or shine. If it rains, we're out of luck. We will be sure to announce any cancellations on our social media ( and ). 

Address

4500 W River Dr NE
Comstock Park, MI 49321
United States

43.040186614829, -85.6595603