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

app

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); })(); Events Calendar | app

app

Skip to main content

Events Calendar

Aug 20–Aug 27, 2025

Canadian Sea Kayaking Expedition

North Channel of Lake Huron
$699
Embark together on a self-supported sea kayak paddle expedition through the historic North Channel of northern Lake Huron.
Aug 20–Aug 27, 2025

Pictured Rocks Backpacking Expedition

Pictured Rocks National Lakeshore
$699
Backpack the entire Pictured Rocks coastline from Munising Falls to the AuSable Light Station.
Aug 20–Aug 27, 2025

Canadian Backpacking Expedition

Lake Superior Provincial Park, Ontario
$699
Backpack the “Coastal Trail,” one of the most scenic and challenging stretches of backpacking east of the Rockies.
Aug 25–Nov 07, 2025

Visiting Artist Marissa Voytenko

Center Art Gallery
Free
The Center Art Gallery’s inaugural Visiting Artist is Marissa Voytenko, a Michigan-based artist whose encaustic paintings and sculptural works explore the intersection of the physical and spiritual worlds through striking geometric abstraction.
Aug 27, 2025

Dual Enrollment Orientation

6:30 pm–8:00 pm
Covenant Fine Arts Center Recital Hall
New and returning dual enrollment students (and parents/guardians), are asked to join us for a brief orientation before classes begin. We want you to feel prepared!