, 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); })(); Hannah Cohen: Sat, Sep 13 2025, 8 - 11pm | Âé¶¹Çø

Âé¶¹Çø

Skip to main content

Events Calendar

S M T W T F S
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
 
1
 
2
 
3
 
4
 

SAO Concert: Hannah Cohen

  • Sat, Sep 13, 2025
  • 8:00 pm–11:00 pm
Image
Hannah Cohen
Join us for a wonderful concert with Hannah Cohen Doors at 7:30, concert starts at 8

Hannah Cohen's new album is called Earthstar Mountain.
Earthstar Mountain is an ode to curiosity. It asks what it means to live a life: how do we decide which direction to take? How do we stay there? And what happens when the rug is pulled from under our feet? Once again working with her partner and collaborator Sam Evian at their recording studio Flying Cloud, Hannah Cohen’s fourth full-length album Earthstar Mountain, is a keepsake of Cohen's time in the Catskills, built over the course of 2020-2024, as blurred, shimmering memories come into focus to produce a collage of echoes and sonic souvenirs. Featuring contributions from Sufjan Stevens, Clairo, Sean Mullins, Liam Kazar, Oliver Hill and more, Earthstar Mountain is a love letter to the Catskills and in the interconnectedness of all things: in her past, present, future and alternative selves, in her friends––here and gone––and in the mountain that peers through her windows.