@font-face{font-family:Marcellus;src:url(/fonts/marcellus.woff2) format("woff2");font-display:swap}
@font-face{font-family:Spectral;src:url(/fonts/spectral.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:Spectral;src:url(/fonts/spectral-italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:Spectral;src:url(/fonts/spectral-600.woff2) format("woff2");font-weight:600;font-display:swap}
:root{--iv:#F4EFE3;--iv2:#EAE3D2;--eb:#0E0D0C;--eb2:#1D1B19;--felt:#8A2A23;--brass:#A88A55;--mut:#6B645A;--hair:#CFC6B4;--d:Marcellus,Georgia,serif;--s:Spectral,Georgia,serif}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:30px}
body{margin:0;background:var(--iv);color:var(--eb);font:400 18px/1.6 var(--s);padding-bottom:92px}
a{color:inherit;text-decoration-color:var(--felt);text-underline-offset:4px}a:hover{color:var(--felt)}button{font:inherit;color:inherit;cursor:pointer}
img{display:block;max-width:100%;height:auto}:focus-visible{outline:2px solid var(--felt);outline-offset:3px}
i{font-style:italic}.skip{position:absolute;left:-999px;top:6px;background:var(--eb);color:var(--iv);padding:8px 12px;z-index:99}.skip:focus{left:8px}
.w{width:min(1200px,100% - 40px);margin:0 auto}
/* header: a three-row concert bill */
.bill{text-align:center;padding:0 20px 18px;border-bottom:3px double var(--eb)}
.bill-top{display:flex;justify-content:space-between;gap:20px;margin:0 auto;max-width:1200px;padding:10px 0;border-bottom:1px solid var(--hair);font:400 13px/1.2 var(--d);letter-spacing:.18em;text-transform:uppercase;color:var(--mut)}
.bill-name{display:inline-flex;align-items:center;gap:14px;margin:22px 0 14px;text-decoration:none;font:400 clamp(28px,4vw,46px)/1 var(--d);letter-spacing:.06em;text-transform:uppercase}.lg{width:40px;height:40px}
.bill-nav{display:flex;justify-content:center;flex-wrap:wrap;gap:4px 30px;font:400 14px/1 var(--d);letter-spacing:.16em;text-transform:uppercase}
.bill-nav a{text-decoration:none;padding:6px 0}.bill-nav a[aria-current]{color:var(--felt);box-shadow:inset 0 -1px var(--felt)}
@media(max-width:720px){.bill-top span:nth-child(2){display:none}.bill-top{font-size:11px}.bill-nav{gap:2px 16px;font-size:12px}.bill-name{gap:10px}.lg{width:30px;height:30px}}
/* type */
.kicker{font:400 13px/1 var(--d);letter-spacing:.22em;text-transform:uppercase;color:var(--felt);margin:0 0 20px}
.h1{font:400 clamp(54px,9.5vw,150px)/.95 var(--d);letter-spacing:-.01em;margin:0 0 24px;text-align:center}.h1 i,.h2 i{font-family:var(--s);font-weight:400;color:var(--felt)}
.h1.sm{font-size:clamp(44px,6.4vw,96px);text-align:left}
.h2{font:400 clamp(34px,4.4vw,60px)/1.02 var(--d);margin:0 0 12px}
.lede{font-size:clamp(19px,1.7vw,23px);line-height:1.5;max-width:46ch;margin:0}.stage .lede,.stage .kicker{text-align:center;margin-left:auto;margin-right:auto}.sub{color:var(--mut)}
.btn{display:inline-flex;align-items:center;gap:10px;background:var(--eb);color:var(--iv);border:1px solid var(--eb);border-radius:0;padding:15px 26px;font:400 14px/1 var(--d);letter-spacing:.18em;text-transform:uppercase;text-decoration:none;transition:background .3s,color .3s}
.btn:hover{background:var(--felt);border-color:var(--felt);color:var(--iv)}.btn.ghost{background:none;color:var(--eb)}.btn.ghost:hover{background:var(--eb);color:var(--iv)}.btn.sm{padding:10px 16px;font-size:12px}
.acts{display:flex;flex-wrap:wrap;gap:14px;margin-top:28px}
/* brushed reveal (gouache-like) */
.br{-webkit-mask-image:linear-gradient(100deg,#000 40%,transparent 60%);mask-image:linear-gradient(100deg,#000 40%,transparent 60%);-webkit-mask-size:260% 100%;mask-size:260% 100%;-webkit-mask-position:100% 0;mask-position:100% 0}
.br.in{transition:-webkit-mask-position 1.6s cubic-bezier(.3,.1,.2,1),mask-position 1.6s cubic-bezier(.3,.1,.2,1);-webkit-mask-position:0 0;mask-position:0 0}
/* stage + keyboard */
.stage{padding:clamp(50px,7vw,100px) 0 0}
.kb-wrap{background:var(--eb);margin-top:56px;padding:34px 0 26px;border-top:6px solid var(--felt)}
.kb{position:relative;height:clamp(200px,26vw,320px);background:#000;padding:0 2px 6px;box-shadow:0 24px 40px -20px #000 inset}
.kb-w{display:flex;height:100%;gap:2px}
.k{position:relative;border:0;padding:0;text-align:left;cursor:pointer;transition:transform .12s,background .3s}
.k.w{flex:1 1 0;min-width:0;background:linear-gradient(#FFFDF7,#F1EBDD 88%,#E2D9C6);border-radius:0 0 5px 5px;box-shadow:inset 0 -6px 0 #D8CFBB}
.k.b{position:absolute;top:0;left:calc(var(--x) * (100% - 4px) / var(--n) + 2px);width:calc((100% - 4px) / var(--n) * .6);transform:translateX(-50%);height:60%;background:linear-gradient(#2A2724,#0E0D0C);border-radius:0 0 4px 4px;box-shadow:inset 0 -5px 0 #000,0 3px 6px rgba(0,0,0,.6);z-index:2}
.kb-b{position:absolute;inset:0 2px 6px 2px}.kb-b .k.b{left:calc(var(--x) * 100% / var(--n))}
.k:hover.w{background:linear-gradient(#FFFDF7,#EFE6D2)}.k.b:hover{background:linear-gradient(#3B3632,#1A1816)}
.k.dn,.k:active{transform:translateY(3px)}.k.b.dn,.k.b:active{transform:translate(-50%,3px)}
.k.on.w{background:linear-gradient(#F7E9D6,#E9CBB0);box-shadow:inset 0 -6px 0 var(--felt)}.k.on.b{background:linear-gradient(#5A1C17,#8A2A23)}
.k-t{position:absolute;left:6px;right:6px;bottom:22px;font:400 11px/1.15 var(--d);letter-spacing:.04em;color:var(--mut);opacity:0;transition:opacity .2s;overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical}
.k.w:hover .k-t,.k.w:focus-visible .k-t,.k.w.on .k-t{opacity:1}.k.b .k-t{display:none}
.k kbd{position:absolute;left:50%;bottom:6px;transform:translateX(-50%);font:400 10px/1 var(--d);color:#A69C89}
.kb-hint{color:#B5AC9B;font-size:15px;text-align:center;margin:18px 0 0}.kb-hint kbd{font:400 12px var(--d);border:1px solid #5B544B;padding:1px 5px;color:var(--iv)}
.kb-cap{color:var(--iv);text-align:center;margin:8px 0 0;font:400 20px var(--d)}.kb-cap span{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--brass);margin-right:8px}
@media(max-width:720px){.kb-wrap .w{width:100%;overflow-x:auto;padding:0 12px;scrollbar-width:thin}.kb{min-width:640px;height:220px}.k kbd,.kb-hint kbd{display:none}.kb-hint{padding:0 20px}}
/* recitals: stacking programme cards */
.recs{padding:clamp(70px,9vw,120px) 0}.sec-h{margin-bottom:34px}
.cards{list-style:none;margin:0;padding:0}
.card{position:sticky;top:calc(20px + var(--k) * 18px);margin-bottom:26px;background:var(--iv);border:1px solid var(--eb);outline:1px solid var(--eb);outline-offset:-8px;padding:40px clamp(24px,5vw,70px);display:grid;grid-template-columns:1fr auto;gap:20px 40px;box-shadow:0 -10px 30px -18px rgba(14,13,12,.4)}
.card:nth-child(even){background:var(--iv2)}
.card a{text-decoration:none;display:grid;grid-template-columns:1fr 1.1fr;gap:10px 40px}.card a:hover h3{color:var(--felt)}
.card-k{grid-column:1/-1;margin:0;font:400 12px var(--d);letter-spacing:.22em;text-transform:uppercase;color:var(--felt)}
.card h3{margin:0;font:400 clamp(28px,3.4vw,46px)/1.05 var(--d);transition:color .3s}.card-d{margin:0;grid-column:1;color:var(--mut)}
.card-l{grid-column:2;grid-row:2/4;list-style:none;margin:0;padding:0;font-size:16px}.card-l li{padding:4px 0;border-bottom:1px solid var(--hair)}.card-l span{display:inline-block;width:36px;font-family:var(--d);color:var(--felt)}.card-l .more{color:var(--mut);font-style:italic;border:0}
.card-p{align-self:end;background:var(--eb);color:var(--iv);border:0;padding:14px 18px;font:400 12px/1 var(--d);letter-spacing:.16em;text-transform:uppercase;white-space:nowrap}.card-p:hover{background:var(--felt)}
@media(max-width:860px){.card{grid-template-columns:1fr;position:relative;top:auto}.card a{grid-template-columns:1fr}.card-l{grid-column:1;grid-row:auto}.card-p{justify-self:start}}
/* programme lines with dot leaders */
.rep{padding:clamp(40px,6vw,90px) 0}.rep-g{display:grid;grid-template-columns:.8fr 1.4fr;gap:40px}@media(max-width:900px){.rep-g{grid-template-columns:1fr}}
.prog{list-style:none;margin:0;padding:0;border-top:1px solid var(--eb)}
.ln{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;border-bottom:1px solid var(--hair)}
.ln-p{display:grid;grid-template-columns:48px auto minmax(20px,1fr) auto 56px;align-items:baseline;gap:10px;background:none;border:0;padding:12px 0;text-align:left;min-width:0}
.ln-n{font:400 15px var(--d);color:var(--felt)}.ln-t{font:400 21px/1.25 var(--d);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46vw}
.ln-dots{height:1px;align-self:center;background-image:radial-gradient(circle,var(--mut) 1px,transparent 1.4px);background-size:7px 3px;height:3px;opacity:.7}
.ln-a{font-style:italic;color:var(--mut);font-size:15px;white-space:nowrap}.ln-d{font-size:15px;font-variant-numeric:tabular-nums;text-align:right}
.ln-p:hover .ln-t,.ln.on .ln-t{color:var(--felt)}.ln.on .ln-n::before{content:"▸ "}
.ln-dl{font:400 11px var(--d);letter-spacing:.16em;text-decoration:none;padding:6px 0 6px 16px;color:var(--mut)}.ln-dl:hover{color:var(--felt)}
.iv{text-align:center;padding:14px 0;border-bottom:1px solid var(--hair);font:400 12px var(--d);letter-spacing:.3em;text-transform:uppercase;color:var(--brass)}
@media(max-width:700px){.ln-p{grid-template-columns:34px minmax(0,1fr) 46px;row-gap:0}.ln-dots{display:none}.ln-a{grid-column:2;grid-row:2;font-size:13.5px;overflow:hidden;text-overflow:ellipsis}.ln-t{max-width:none;font-size:19px}.ln-d{grid-column:3;grid-row:1}}
.az{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:34px;font:400 18px var(--d)}.az a{text-decoration:none}.az-h{font:400 40px var(--d);color:var(--felt);margin:40px 0 8px}
.rec{margin-bottom:54px}.rec-h{display:flex;align-items:center;gap:20px;margin-bottom:14px}.rec-h img{width:72px;height:72px;object-fit:cover;aspect-ratio:1/1;flex:none}.rec-h h2{margin:0;font:400 30px/1.1 var(--d)}.rec-h p{margin:2px 0 0;color:var(--mut);font-size:15px}.rec-h .btn{margin-left:auto}
@media(max-width:600px){.rec-h{flex-wrap:wrap}.rec-h .btn{margin-left:0}}
/* faq */
.qa{padding:clamp(50px,7vw,100px) 0;border-top:1px solid var(--eb)}.qa-g{display:grid;grid-template-columns:.8fr 1.4fr;gap:40px}@media(max-width:900px){.qa-g{grid-template-columns:1fr}}
.faq details{border-bottom:1px solid var(--hair)}.faq summary{cursor:pointer;list-style:none;padding:18px 0;font:400 23px/1.3 var(--d)}.faq summary::-webkit-details-marker{display:none}.faq summary::after{content:"+";float:right;color:var(--felt)}.faq details[open] summary::after{content:"–"}.faq p{margin:0 0 20px;color:#3A352E}
.ph{padding:clamp(50px,7vw,100px) 0 20px}.prose p{margin:0 0 14px}.nf{min-height:56vh}
/* footer */
.ft{background:var(--eb);color:#D9D1C0;padding:70px 0 40px;margin-top:40px}.ft a:hover{color:#fff}
.ft-g{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:30px}.ft-k{font:400 12px var(--d);letter-spacing:.22em;text-transform:uppercase;color:var(--brass);margin:0 0 10px}.ft-big{font:400 clamp(34px,4vw,54px)/1.05 var(--d);margin:0}.ft-big i{font-family:var(--s);color:#D7A79B}
.ft h2{font:400 12px var(--d);letter-spacing:.22em;text-transform:uppercase;color:var(--brass);margin:6px 0 12px}.ft ul{list-style:none;margin:0;padding:0}.ft li{margin:6px 0;font-size:16px}
.fine{font-size:14px;opacity:.7;margin-top:40px}@media(max-width:860px){.ft-g{grid-template-columns:1fr 1fr}.ft-g>div:first-child{grid-column:1/-1}}
/* player: ebony fallboard with a brass line */
.pb{position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--eb);color:var(--iv);border-top:2px solid var(--brass)}
.pb-in{display:grid;grid-template-columns:52px minmax(0,1fr) auto auto 44px auto;gap:18px;align-items:center;max-width:1240px;margin:0 auto;padding:12px max(20px,env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left))}
.pb-pp{width:52px;height:52px;border:1px solid var(--brass);background:none;color:var(--iv);display:grid;place-items:center}.pb-pp:hover{background:var(--felt)}.pb-pp svg{width:16px;height:16px;fill:currentColor}
.pb-m{min-width:0}.pb-now{margin:0 0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pb-k{font:400 11px var(--d);letter-spacing:.22em;text-transform:uppercase;color:var(--brass)}.pb-now b{font:400 19px var(--d);margin:0 8px}.pb-s{font-style:italic;color:#A69C89;font-size:15px}
.pb-bar{position:relative;display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;font-size:13px;color:#A69C89;font-variant-numeric:tabular-nums}
.pb-line{grid-column:2;grid-row:1;height:2px;background:#3A3631;position:relative}.pb-line i{position:absolute;inset:0;background:var(--brass);transform-origin:left;transform:scaleX(0)}
.pb-seek{grid-column:2;grid-row:1;width:100%;height:20px;margin:0;opacity:0;cursor:pointer}
.pb-b{background:none;border:0;border-bottom:1px solid #5B544B;color:var(--iv);padding:6px 0;font:400 12px var(--d);letter-spacing:.18em;text-transform:uppercase;text-decoration:none}.pb-b:hover{color:#D7A79B;border-color:#D7A79B}
.pb-c{width:44px;height:44px;object-fit:cover;aspect-ratio:1/1}
@media(max-width:760px){.pb-in{grid-template-columns:46px minmax(0,1fr) auto;gap:12px}.pb-pp{width:46px;height:46px}.pb-b[data-pc=prev],.pb-c,.pb-b.dl,.pb-k,.pb-s{display:none}.pb-now b{margin:0;font-size:17px}}
.toast{position:fixed;left:50%;bottom:100px;transform:translate(-50%,12px);background:var(--eb);color:var(--iv);border:1px solid var(--brass);padding:12px 18px;font-size:15px;opacity:0;pointer-events:none;transition:.4s;z-index:60;max-width:calc(100% - 32px)}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.br{-webkit-mask:none;mask:none}html{scroll-behavior:auto}}
.ht{display:none}@media(hover:none){.hp{display:none}.ht{display:inline}}
@media(max-width:720px){.bill-name{font-size:24px;letter-spacing:.03em;margin:16px 0 12px}.kicker{letter-spacing:.16em;font-size:12px}}
.br{padding:.06em 0 .16em;margin-top:-.06em}.h1.br{margin-bottom:8px}
.kb-b{pointer-events:none}.kb-b .k{pointer-events:auto}
