, 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); })(); Canadian Sea Kayaking Expedition: Wed, Aug 20 - Wed, Aug 27 2025, All day | Âé¶¹Çø

Âé¶¹Çø

Skip to main content

Events Calendar

S M T W T F S
27
 
28
 
29
 
30
 
31
 
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
 
1
 
2
 
3
 
4
 
5
 
6
 

Canadian Sea Kayaking Expedition

  • Wed, Aug 20–Wed, Aug 27, 2025
$699

North Channel of Lake Huron


Image
Canadian_Sea_Kayak_&_Climb
Embark together on a self-supported sea kayak paddle expedition through the historic North Channel of northern Lake Huron. Wilderness Trips are for new students starting Fall 2025.
Register Now

Location: North Channel of Lake Huron

Adventure activities: Sea Kayaking, Rock Climbing, and Rappelling

Adventure difficulty level: Moderate to Challenging (i.e. based on wind, sometime challenging kayak conditions)

Dates: August 20-27

Cost: $699

Using 17’ kayaks, you'll live out of boats as you journey from island to island. You'll enjoy manageable paddling distances, plenty of water play, and time for island exploration.

Along the way, you will camp on granite islands and peninsulas, climb and rappel a rock face that drops 60 feet to the water below, and gain the skills needed to safely travel and live out of their sea kayak for a week. A North Channel sea kayaking expedition is a once-in-a-lifetime opportunity. Passport or enhanced driver’s license required.

Students on this trip will receive a PER 138 course credit exemption.

See more Wilderness Trip options and FAQ

Contact: