, 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); })(); Group Fitness - Recreation & Outdoor Programs | Âé¶¹Çø

Âé¶¹Çø

Skip to main content

Group Fitness

Group Fitness at Calvin is available for all Calvin students, faculty, and staff. $20 for Unlimited Annual Group Fitness Pass. See link and QR code below.

FALL SCHEDULE 2025

Monday

Tuesday

Wednesday

Thursday

Friday

YOGA
4-4:45pm
Dance Studio
Hannah (Brenton)
Williams
ZUMBA
4-4:45pm
Dance Studio
Morgan Weirich
Ìý
WOMEN'S STRENGTH
7-7:45am
Ìý
Abbie Reinhart
Ìý
CYCLING 1*
4-4:30pm
Morren Fitness
Macy Gerig
WOMEN'S STRENGTH
7-7:45am
Ìý
Abbie Reinhart
Ìý
BARRE
4-4:45pm
Dance Loft
Macy Gerig
CYCLING 1*
7-7:30pm
Morren Fitness
Macy Gerig
YOGA
4-4:45pm
Dance Studio
Hannah (Brenton)
Williams
CYCLING 2*
4:45-5:15pm
Morren Fitness
Macy Gerig
YOGA
7-7:45pm
Dance Studio
Hannah (Brenton)
Williams
Ìý
CYCLING 2*
7:45-8:15pm
Morren Fitness
Macy Gerig
PILATES
7-7:45pm
Dance Loft
Bella Morgan
BARRE
7-7:45pm
Dance Loft
Macy Gerig
Ìý

*Pre-enrollment recommended to secure a spot for Cycling.

No Group Fitness classes offered during Fall Academic Advising/Break, Thanksgiving Break, or Exam Week.

To sign up and purchase a $20 Unlimited Annual Group Fitness Pass use this link or QR code:

https://commerce.cashnet.com/calvinCUS?itemcode=CUS-REC1Ìý

A qr code on a white background

AI-generated content may be incorrect.

Ìý

For more Group Fitness information contactÌý

Hannah (Brenton) Williams Ìýhannah.brenton@calvin.eduÌýÌý


CONTACT THE PROGRAM DIRECTOR:

Ryan Rooks
Campus Recreation and Outdoor Programs Director
Spoelhof Fieldhouse Complex 241
616-526-7541
ryan.rooks@calvin.edu

Ìý

Ìý

SUPPORT RECREATION AT CALVIN

Donate to support Calvin Outdoor Recreation and Campus Recreation Programs.


Contact Us

Ryan Rooks

Ryan Rooks

Director of Campus Recreation and Outdoor Programs
616-526-7541
Hannah Brenton Headshot

Hannah Brenton

Student Success Specialist
616-526-6595