, 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); })(); Karen Albert | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content

Mrs. Karen Albert

Lesson Instuctor (Voice)

Biography

Based in Grand Rapids, MI, mezzo-soprano Karen Albert frequently appears as a soloist with orchestras, concert series, and ensembles throughout the region. Recent performance highlights include Beethoven’s 9th Symphony, Handel’s Messiah, Elgar’s Sea Pictures, Mozart’s Requiem, Libbie Larsen’s Raspberry Island Dreaming, as well as various Bach cantatas and oratorios. Karen is also a member of Grand Rapids’ premier professional choral ensembles, Vox GR. Later in the 2025-26 season, Karen will present a recital of works by Gustav and Alma Mahler for the Music at Midday concert series at First Park Congregational Church in Grand Rapids. In addition to her work as a soloist and choral singer, Karen is also the Director of Music at Parkwood Presbyterian Church in Jenison, MI, and teaches voice at ÃÛÌÒapp.