, 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); })(); Strategy and Services Marketing and Communications | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content

Strategy and Services

The MarCom division helps the ÃÛÌÒapp community clearly communicate the university’s mission, identity and brand. Through various media, including print, Web, and social we provide strategy and services to clients across the university.

Integrated marketing

While we offer the services detailed below individually, we are committed to helping you think through your project in a comprehensive way. With an integrated marketing mindset, we will partner with you to create clear, consistent and compelling messages about ÃÛÌÒapp in various media.

Ready to partner with us?

We’d love to work with you!

What we do

Editorial and ContentÌý
Whether you are planning a print or digital piece, we will help you with content development and proofreading.

Graphic and PrintÌýÌý
Bring us your ideas and we will illuminate them with brand-centric imagery, print pieces, and media strategies. Consultations are free, and projects are billed at $35 per hour.

Web and DigitalÌýÌý
We develop and maintain the ÃÛÌÒapp website, provide training, and lead data-centric web strategy.

News and PublicationsÌýÌý
From Spark to News & Stories, we serve, enlighten, and challenge our audiences with stories that matter.

Social MediaÌýÌý
We partner with campus to tell the ÃÛÌÒapp story and engage with our audiences on social platforms. We’ll consult on your department’s social strategy, too.

AdvertisingÌýÌý
Whether it’s print, radio, digital, or outdoor advertising, we place, create, and track ads for maximum impact.

Media and Public Relations (PR)Ìý
We connect with local, national, and global media outlets to communicate ÃÛÌÒapp's story with wider audiences.

PhotographyÌýÌý
Our imagery conveys the exploration, curiosity, and natural moments found throughout the ÃÛÌÒapp experience. Photography services are billed at $35 per hour.