, 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); })(); Gear Rental and Bike Shop | °ÄÃÅÁùºÏ²Ê¿ª½±¼Ç¼×ÊÁÏ

°ÄÃÅÁùºÏ²Ê¿ª½±¼Ç¼×ÊÁÏ

Skip to main content

Gear Rental and Bike Shop

Whatever your adventuring needs are, we've got you covered. From road bikes to tents to sleeping bags, canoes and more, we'll get you on your way toward an epic journey.

Be sure to read through our before making a request so that you know what you'll be accountable for.

Outdoor Equipment Rental and Outfitting

May 14-August 1: By Reservation through Brandon Price (bpp5@calvin.edu or 815-666-0240)

*Due to °ÄÃÅÁùºÏ²Ê¿ª½±¼Ç¼×ÊÁÏ Programming, Outdoor Equipment is not available during August.

Hours of operation

Monday: 4-5pm (Weekend Gear Return)
Tuesday: 4-5pm bike maintenance
Wednesday: 4-5pm bike maintenance
Thursday: 4-5pm (Weekend Gear Pickup)

Rental options

Shelter and tents

Name/typeWeekend priceFull week price
2-person tents$5.00$10.00
3-±è±ð°ù²õ´Ç²ÔÌý³Ù±ð²Ô³Ù²õ$5.00$10.00
4-person tents$5.00$10.00
Nylon Tarps$3.00$5.00

Travel and sleep

Name/typeWeekend priceFull week price
Backpacks (70 – 80 Liters)$5.00$10.00
Ridgerest

 Sleeping Pads

$2.00$4.00
20-degree Sleeping Bags$5.00$10.00
0-degree Down Sleeping Bags$7.00$12.00

Cooking kitchen

Name/typeWeekend priceFull week price
MSR

 Pocket Rocket Stove (fuel not included)

$8.00$14.00
Double Burner Stove (fuel not included)$8.00$14.00
Single Pot w/ Lid$1.00$2.00
Pot Set (2 pots, utensils, cutting board, measuring cup, pot grips)$5.00$10.00
Water Dromedary$3.00$5.00

Outdoor adventure

Name/typeWeekend priceFull week price
Road Bikes$30.00N/A
Boulder Pads$10.00$15.00

Bike shop

Due to liability restrictions, maintainence on bicycles is currently limited to inflating tires, simple flat repair (when we have tubes/tires in stock) and drivetrain lubing ONLY.