Tonight · 7:30 PM · doors 6:30
Măcelaru conducts Enescu
Music Hall · 2 tickets, Orchestra A row F
Your evening begins here.
Tonight · 7:30 PM · doors 6:30
Music Hall · 2 tickets, Orchestra A row F
Sunday, October 18
2026–27 season
October
Tonight · 7:30 PM
Music Hall · Springer Auditorium
2 tickets · Orchestra A, row F
8:00 PM
Music Hall
Included in your subscription
November
7:30 PM
Music Hall
No tickets yet · from $35
7:30 PM
Music Hall
4 tickets · Balcony C rows 2–3 · 1 accessible seat
8:00 PM
Music Hall · General admission
Sold out · waitlist open
7:30 PM
Cathedral · seats assigned at door
Presale · subscribers until 3 Nov
Tonight · 7:30 PM
After the performance
We can send the program notes, the recordings referenced tonight, and the next three concerts in this series. Once, not weekly.
Or keep going: .
Tonight’s event
No signal? Your pass and ticket remain available offline.
Assumed capability. Entry by pass has not been confirmed against Tessitura or the venue scanners.
Member pass
Cameron Koczon
Held offline. Show this at the door; the code is rendered from the secure credential.
Assumed capability. Entry by pass has not been confirmed against Tessitura or the venue scanners.
2026–27 season · six-show
Member
Cameron KoczonHeld offline · updated just now
Harmony Pass member
Patron 1048 · since 2019
Classical six-show subscriber
Harmony Pass member since 2019
Your two seats in Orchestra A are held until 15 December. Pricing for 2027–28 is published on 3 November, and renewing keeps the same seats.
Verified once and stored, so the app stops asking until it expires.
Member mobile app
Member mobile app
Drawn with the tokens it documents, so the diagram cannot drift from the layout.
--doc-gap 16px · between items in a rack
--doc-col-gap 40px · between prose columns
Four columns, 20px gutters. The rail stops at the centre of the first and last column, which is calc((100% - 60px) / 8) from each edge: half a column, derived from the grid rather than guessed, so it lands on centre at any width.
Content surfaces carry no fill. Rows are parted by a hairline that runs the full width of the device while its text stays on the gutter. The filled surfaces left are controls and the member pass.
18px on the phone, and every rule that bleeds past it widens by exactly that much on both sides. A divider never stops short of the edge it is meant to reach.
color.text
#101010
Body copy and headings
color.text.subtle
#464646
Secondary text and captions
color.text.subtlest
oklch(0.58 0 0)
Eyebrows, inactive tab labels
color.text.inverse
#FFFFFF
Text sitting on burgundy or ink
color.text.brand
#390C0C
Current tab, brand emphasis
color.background
#FFFFFF
Screens and cards
color.background.raised
oklch(0.98 0 0 / 82%)
Blocks sitting on white
color.background.subtle
#EAEAEA
Tab bar and segmented tracks
color.background.brand
#390C0C
Primary action, full bleed sections
color.background.accent
#E1EFA3
Lemon. Legal on burgundy or ink only
color.border
oklch(0.90 0 0 / 90%)
The four structural rules in the build
space.050
4px
Icon to label
space.100
8px
Inside a chip
space.150
12px
Button padding block
space.200
16px
Between items in a rack
space.250
20px
Button padding inline
space.300
24px
Screen padding
space.400
32px
Between stacked groups
space.600
48px
Page gutter
space.800
64px
Between sections
radius.pill
999px
Every control: buttons, tab bar, chips, segmented control
radius.field
12px
Text inputs and icon plates
radius.card
8px
Navigation-map nodes
radius.chip
7px
Icon chips inside map nodes
radius.none
0
Cards, lists, the pass. Content stays square
radius.full
50%
Circular marks only. Dots, avatars, round buttons
alpha.1
.12
Hairlines and fills on a tinted ground
alpha.2
.24
Rules inside a dark surface
alpha.3
.40
Scrims behind a sheet
alpha.4
.60
Secondary text on media
alpha.5
.82
Primary text on media
Gradient ramps are exempt: a falloff needs intermediate stops, and forcing it onto five steps would band. Everything else answers to the ladder.
frost.tint
rgb(232 232 232 / .34)
The wash over a full-screen overlay
frost.blur
blur(34px) saturate(118%)
One blur for every overlay
safe.top
env, min 52px
Status bar. Every screen opens below it
safe.bottom
env, min 30px
Home indicator. The tab bar sits above it
font.family.display
Lorem ipsum
FT System Blank
Headings. 66 glyphs, trial cut
font.family.body
Lorem ipsum
Lab Grotesque
Everything a member reads
font.family.code
Lorem ipsum
Lab Grotesque Mono
Token names, values and code
font.heading.large
Lorem
72 / 1.12
Hero on the splash
font.heading.medium
Lorem
48 / 1.1
Section headings
font.body
Lorem ipsum
16 / 1.2
Default reading size
font.body.small
Lorem ipsum
14 / 1.2
Buttons and navigation
font.code
Lorem ipsum
10 / 1.4
Token names and values
space.0504pxspace.1008pxspace.20016pxspace.30024pxspace.60048px18px · 1.75 stroke Feather. Twenty-four in the set, and every one of them sits beside a label rather than standing in for it.
Member mobile app
Maestro is the audience-experience platform for cultural institutions, connecting ticketing, membership, giving, communication and attendance into one patron journey. Tessitura is the CRM underneath it, not the product. It is multi-tenant: MoMA, the Met, New York City Ballet, the Boston Symphony, the New York Philharmonic and the Oregon Symphony sit alongside the Cincinnati Symphony, which is the test case here and why CSO appears on the event catalogue numbers.
The direction is Beyond the Seat: the seat is the brand’s foundational unit, one patron alone and an audience, a venue or a dataset when repeated. The promise is everything beyond the seat working together, which is the argument for showing a member’s several relationships at once rather than filing each behind its own tab.
This is the member side of that platform: the app a subscriber opens between buying a ticket and walking into the hall. Of the five domains the positioning names, it serves four. Giving has no surface in it at all, which is the largest gap between what Maestro says it is and what this prototype shows.
The brief set four goals. Strengthen the relationship between an attendee and the orchestra. Make the night itself better. Open a direct line for the things that actually change an evening, which is parking and weather and a program substitution. And make tickets, subscriptions and account details simple to manage.
Two membership programs run alongside each other and the app has to hold both: the season subscription, and Harmony Pass, a monthly membership that gives free tickets to selected shows. They renew on different clocks and mean different things, so they sit as separate cards rather than as tiers of one thing.
Five questions, in the order a member asks them.
Every screen is answerable against that list. Home answers the first two, the access flow answers the third, the membership rail answers the fourth, and the fifth is why renewal and Harmony Pass claims surface without being asked for.
A subscriber, not a buyer. They renew every season, hold the same seats, and come to six or more performances a year. They were converted years ago, by the orchestra rather than by an app, and nothing on this surface needs to convert them again.
That removes the acquisition half of a ticketing app: no account creation, no conversion funnel, no persuading someone to care about an orchestra they already fund. It does not remove buying. A subscriber still adds single tickets outside their package, claims Harmony Pass shows, joins a presale and takes a waitlist place, which is why Events carries prices and an All events mode. The distinction is that the app sells to someone already inside the relationship rather than arguing them into one.
Older than the median app user, often attending with a spouse or a household member, and reading in a low-lit lobby minutes before a downbeat. That sets the type size, the contrast floor, and the decision to put seat and section in monospace so they can be read aloud when a scanner fails.
Donors, students, first-time attendees and non-subscribers. Each carries its own job in the brief: verified student pricing, a first-download incentive, an upsell for people who do not hold a subscription yet. None of them are served by this prototype, which is scoped to the person who already pays. They sit on the navigation map as roadmap, labeled, rather than pretended at.
The navigation map is drawn for them rather than for the subscriber, which is why unbuilt work sits on it, labeled, instead of quietly missing.
Ten screens. Four destinations: Home, Events, Tickets and Profile. A navigation map of the whole surface, where thirty four of fifty three places are built and the other nineteen are drawn and marked as not built. Every node with a screen behind it opens that screen.
The brief proposed five tabs, with Membership as its own destination. It is a rail on Home instead: a patron holds more than one relationship with the orchestra, and a rail shows all of them at once where a tab would have shown one and hidden the rest. The bottom bar stays at four, which is what the execution register requires.
Alongside the app, an identity system and a design system: type, color, spacing, motion, components, voice, and the token layer under all of it.
Two things stay unfinished and say so on the page. The typefaces are trial and desktop licenses, so two strings fall back mid word. The member pass shows no scannable code, because there is no credential system to draw one from.
Counts here are read off the register and the map, not kept by hand. If they drift, the source moved.
Identity system · 01
Season Mix sets headlines. Lab Grotesque sets body and all UI. Season Mix carries 501 glyphs and misses none of the accents, question marks or dashes that broke the previous display face inside names like Măcelaru, which is the test any face on this product has to pass. It is currently a trial cut and needs licensing before release.
Burgundy marks the primary action and the active tab. Lemon is legal on burgundy or off-black and nowhere else — on white it measures 1.23:1. The rest is gray.
A box means these things act together. Most lists are just lists.
Separation comes from a change of ground or a hairline. The one drop shadow in the build sits under the phone chassis; every other shadow is inset.
Ratios are WCAG 2.2, computed from the token values.
L≈0.235 against L≈0.234. Beyond the unreadable pairing, burgundy set beside ink reads as an off-black rather than a color. It needs white or lemon to register.
A 3px outline at 3px offset, on every control in the build.
Where the drawn control is smaller — the view switch at 36px, the subnav at 34px — the pressable box is grown with a pseudo-element so the target reaches 44 without moving anything visible.
padding-bottom: env(safe-area-inset-bottom) on the tab bar, so the labels are not sitting under the indicator on a real phone.
Eight outlined paths, 511 × 92, no live text — so it carries no font dependency. Inlined once as a <symbol> and referenced wherever it appears.
The fill is currentColor. Burgundy on light grounds, off-white on burgundy. Never recolored by hand.
18px in the prototype bar, 30px on the splash, 46px here. 18px is the floor — below that the stacked bars of the mark stop separating.
Half the lockup’s height on every side, measured from the bounding box. Nothing sets inside it.
#FFFFFF#EAEAEA#101010#E1EFA3#C2ACE8#390C0CThe board names three neutrals. These are the working roles derived from them — the values components actually reference.
--off-white#FFFFFF · screens, cards--raised0.98 / 82% · blocks on white--gray#EAEAEA · nav, tracks--quiet0.58 · eyebrows, inactive--muted#464646 · secondary text--ink#101010 · reading ink--display · FT System Blank
Maestro
--sans · Lab Grotesque
Member pass ready
Tonight · 7:30 PM · Music HallMotion blur carries the energy of live performance and reveals the layers of movement inside it — the complexity behind a performance that Maestro brings into focus.
pressTransform on tapcolorHover and statescreenEntry between screensambientSplash focus, letter driftcubic-bezier(.22, 1, .36, 1). It decelerates hard and settles, which suits a screen arriving. Nothing in the build uses a second easing.
Three keyframes: a screen entering, the splash pulling focus, and a letter drift. Each one tracks a state change.
Under prefers-reduced-motion: reduce every duration collapses to .01ms, including the ambient splash animations.
Doors open at 6:30.
Not “Your unforgettable evening awaits.” Say what the member needs.