, 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); })(); Watch the January Series Online The January Series | »Æ´óÏɸßÊÖÂÛ̳

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

Skip to main content

Watch the January Series Online

The January Series lectures are available to watch live or on-demand the day of the event.

Join our mailing list to receive reminders. We send email reminders daily throughout the course of the series. 

Sign up to receive reminders

How to watch

  1. Visit the January Series homepage on the day of the event. Click the "Watch Now" button at the top of the page. 
  2. Or, if you signed up to receive email reminders, click the link in that day's email.
  3. Fill out the form to receive access to the livestream page. Due to contract agreements with our speakers, we’re required to have online viewers fill out a new form each day. 

You can watch the lecture on your computer, tablet, or mobile device that supports the following web browsers: Google Chrome, Mozilla Firefox, Safari, Microsoft Edge. 

Watch Live

Watch the January Series live online from your device. You can access the livestream beginning at noon each day of the series. The lectures will last from 12:30–1:30 p.m. EST.

Watch On-Demand

Beginning at 2 p.m. EST, you’ll be able to access the recording of the day's lecture. It available to access until midnight that day.

Watch on a Later Date

Some of the lectures will be recorded and available to watch later. Due to contract restrictions, some will only be available for a limited time. You can access available past recordings on .