, 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); })(); CPI opens possibilities - News & Stories | »Æ´óÏɸßÊÖÂÛ̳

»Æ´óÏɸßÊÖÂÛ̳

Skip to main content

Spark

CPI opens possibilities

Mon, Apr 01, 2019

I would like to express my appreciation to you for accepting me into the Calvin Prison Initiative (CPI) program. Today, I received the one-year certificate for this program, and something occurred to me. I have grown more in the last year, both spiritually and as a person, than I have in the decade of my incarceration prior to this program. You have provided me,as well as the rest of the CPI student body, with a range of priceless gifts that are rarely found within a prison setting community: compassion, education, leadership, and a sense of belonging, to name only a few.

One of the things I have learned since being in CPI is the importance of allowing God to use me in ways that before I might not have imagined possible. One talent God has given me is creativity, and it was a joy to put this skill to work in building a chess set for Calvin. Despite the obvious connection to the Calvin Knight mascot, the game of chess is a demonstration of the multitude of ways we can move throughout life. Some of the moves we make are losing moves, but for me, the CPI program is like pushing my last pawn in order to recapture my queen; thus, restoring my strength. In this way and others, CPI has opened up possibilities in my life that I might not have thought possible in the past.

Thank you again for giving me such an amazing opportunity. I hope that each time you see this board, or play the game, that you will remember what a great impact you are having on so many lives.

— Robert S. Horton ’22
Ionia, Michigan