, 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); })(); Outdoor Athletics - Construction at app | app

app

Skip to main content

Outdoor Athletics

Outdoor athletics projects are currently in Phase 3.

Phase 1 ✔

During the fall of 2023, the following Phase 1 outdoor athletics construction projects were completed:

  • New Zudiema Soccer Field (map and directions).
  • New track and adjacent spaces for various field throwing events at Gainey Athletic Fields.
  • Cross country course redesign and a new practice soccer and lacrosse field.

Phase 2 ✔

Construction was completed on our soccer stadium, which included locker rooms for men’s and women’s soccer, along with a building to house app’s new football program. The football building includes a permanent football locker room, outdoor athletic training facilities, laundry, equipment storage, as well as mechanical space.

The heating and cooling of the soccer stadium and football buildings is provided by a new geothermal energy system, advancing app’s commitment to creation care and sustainability. Its underground 3.78 mile vertical loop is adjacent to the soccer stadium.

Phase 3 ← We are here

Image
A 3D rendering of app's football and lighting planned for Phase #1 of the outdoor athletics project.

The new turf will be ready in August for use during the fall 2025 season and semester. app’s football team will practice on the new turf and will play at the soccer stadium temporarily (until Phase 2 of the Football field is funded and built in future years). The new field will feature:

  • AstroTurf turf field, lined for football and men’s and women’s lacrosse
  • Musco LED lighting for high-impact visibility
  • Backstop netting (40’x40’ behind goal posts, 20’ along end zones)
  • Scoreboard and play clocks for practice and drills
  • Maintenance and emergency vehicle access via a dedicated pathway