
:root{
  --ink:#181510; --ink-soft:#3d382f; --muted:#79715f; --paper:#faf7f0; --card:#fffdf8;
  --line:#e8e1d3; --line-soft:#efe9dd; --head:#605a4b;
  --orange:#d4502a; --blue:#39749e; --green:#38735c; --gold:#a98b3f;
  --serif:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--sans);background:var(--paper);color:var(--ink);line-height:1.65;
  -webkit-font-smoothing:antialiased;font-size:16.5px}
.wrap{max-width:1100px;margin:0 auto;padding:0 28px}
a{color:inherit}
::selection{background:#f3d8cd}

/* reveal animation */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s cubic-bezier(.2,.6,.2,1),transform .7s cubic-bezier(.2,.6,.2,1)}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion: reduce){.reveal{opacity:1;transform:none;transition:none}}

/* header */
header{border-bottom:1px solid var(--line);background:rgba(250,247,240,.88);backdrop-filter:blur(10px);
  position:sticky;top:0;z-index:50}
/* the header is sticky, so in-page anchors need room to clear it */
#about,#events,#musicians,#contact,#visit{scroll-margin-top:116px}
@media(max-width:700px){#about,#events,#musicians,#contact,#visit{scroll-margin-top:88px}}
@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
.nav{display:flex;align-items:center;justify-content:space-between;padding:26px 0}
.brand{display:flex;align-items:center;gap:13px;text-decoration:none}
.brand img{height:46px;width:auto}
.brand span{font-family:"Bodoni Moda","Georgia",serif;font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-size:.9rem}
.nav-links{display:flex;gap:30px;font-size:.85rem;letter-spacing:.04em}
.nav-links a{text-decoration:none;color:var(--muted);transition:color .2s}
.nav-links a:hover{color:var(--orange)}
.burger{width:44px;height:20px;background:none;border:0;cursor:pointer;display:flex;
  flex-direction:column;justify-content:space-between;align-items:flex-end;padding:0}
.burger span{display:block;height:2px;width:32px;background:var(--ink);transition:transform .3s,opacity .3s}
body.menu-open .burger span:nth-child(1){transform:translateY(9px) rotate(45deg)}
body.menu-open .burger span:nth-child(2){opacity:0}
body.menu-open .burger span:nth-child(3){transform:translateY(-9px) rotate(-45deg)}
.menu-overlay{position:fixed;top:0;left:0;right:0;background:var(--paper);z-index:40;
  transform:translateY(-100%);transition:transform .4s cubic-bezier(.7,0,.3,1);
  border-bottom:1px solid var(--line);box-shadow:0 24px 48px rgba(24,21,16,.08)}
body.menu-open .menu-overlay{transform:translateY(0)}
body.menu-open header{background:var(--paper);backdrop-filter:none;border-bottom:0}
.menu-overlay nav{max-width:1100px;margin:0 auto;padding:128px 28px 46px;
  display:flex;flex-direction:column;align-items:flex-start;gap:21px}
.menu-overlay a{font-family:var(--sans);font-size:.95rem;font-weight:500;
  text-transform:uppercase;letter-spacing:.22em;text-decoration:none;color:var(--ink);
  line-height:1;transition:color .2s,letter-spacing .25s}
.menu-overlay a:hover{color:var(--orange);letter-spacing:.26em}

/* megarow — four two-line menu tiles under the hero */
.megarow{border-bottom:1px solid var(--line);background:var(--paper)}
.megarow .wrap{display:grid;grid-template-columns:repeat(6,1fr)}
.megarow a{display:block;padding:38px 26px;text-decoration:none;border-left:1px solid var(--line);
  transition:background .25s}
.megarow a:first-child{border-left:0}
.megarow a:hover{background:#f3eee3}
.megarow span{display:block;font-family:var(--sans);font-size:clamp(.95rem,1.34vw,1.22rem);
  font-weight:600;line-height:1.38;color:var(--head);letter-spacing:-.01em;white-space:nowrap;transition:color .2s}
.megarow .sub span{display:inline;line-height:inherit}
.megarow .sub .sp{font-size:.3em}
.megarow .sub .dsh{font-size:1.15em}
.megarow span.sub{color:var(--head);font-weight:600}
.megarow .sub .dsh{font-size:1.05em}
.megarow a:hover span{color:var(--orange)}
@media(max-width:900px){.megarow .wrap{grid-template-columns:1fr 1fr}
  .megarow a{border-left:0;border-top:1px solid var(--line);padding:26px 20px}
  .megarow a:nth-child(-n+2){border-top:0}
  .megarow a:nth-child(even){border-left:1px solid var(--line)}}

@media(max-width:560px){
  .nav{flex-wrap:wrap;justify-content:center;gap:6px 0;padding:12px 0}
  .brand span{font-size:.8rem;white-space:nowrap}
  .nav-links{gap:18px;font-size:.8rem;flex-wrap:wrap;justify-content:center}
}

/* hero — full-bleed Dingle Peninsula photograph */
.hero{position:relative;min-height:min(62vh,640px);display:flex;align-items:center;justify-content:center;
  text-align:center;overflow:hidden;background-color:var(--paper)}
.hero::before{content:"";position:absolute;inset:0;z-index:0;
  background-image:url("../img/dingle.jpg");background-size:cover;background-position:center 72%;
  opacity:.825;filter:saturate(.95)}
.hero::after{content:"";position:absolute;inset:0;z-index:1;
  background:
    radial-gradient(74% 58% at 50% 62%, rgba(10,16,24,.16) 0%, rgba(10,16,24,.08) 55%, rgba(10,16,24,0) 78%),
    linear-gradient(to bottom, rgba(12,18,26,.34) 0%, rgba(12,18,26,.12) 40%, rgba(12,18,26,.42) 100%)}
@media(max-width:700px){.hero::after{background:
    radial-gradient(96% 46% at 50% 40%, rgba(10,16,24,.18) 0%, rgba(10,16,24,.09) 58%, rgba(10,16,24,0) 82%),
    linear-gradient(to bottom, rgba(12,18,26,.34) 0%, rgba(12,18,26,.12) 40%, rgba(12,18,26,.42) 100%)}}
.hero > *{position:relative;z-index:2}
.hero .hero-inner{padding:60px 28px;transform:translateY(-36px)} /* laptop: text sits lower */
@media(max-width:700px){.hero{flex-direction:column;align-items:stretch;justify-content:flex-start}
  .hero .hero-inner{transform:none;padding:20px 24px 0}} /* phone: text rides higher */
.hero img.logo{position:absolute;right:7%;bottom:calc(9% + 48px);height:128px;margin:0;
  filter:drop-shadow(0 10px 30px rgba(0,0,0,.45))}
.hero .eyebrow{font-size:clamp(.72rem,1.1vw,.9rem);letter-spacing:.3em;text-transform:uppercase;color:#efe9dc;
  margin:20px 0 0;line-height:1.8;text-shadow:0 1px 14px rgba(0,0,0,.55)}
@media(max-width:600px){.hero .eyebrow{letter-spacing:.22em;margin-top:16px}}
.hero h1{font-family:"Bodoni Moda","Georgia",serif;font-size:clamp(2.2rem,4.8vw,3.8rem);font-weight:500;
  letter-spacing:.07em;line-height:1.08;color:#fefefe;text-shadow:0 2px 26px rgba(0,0,0,.5)}
.hero .year{color:#d6ab9e;font-style:italic;font-weight:500;letter-spacing:.02em}
@media(max-width:700px){.hero img.logo{position:static;height:96px;width:auto;display:block;
  align-self:flex-end;margin:56px 18px 0 0;filter:drop-shadow(0 8px 24px rgba(0,0,0,.4))}}
@media(max-width:700px) and (min-height:740px){.hero img.logo{margin-top:96px}}
.hero .scrollcue{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);
  color:#faf7f0;text-decoration:none;font-size:1.5rem;opacity:.85;animation:bob 2.2s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,8px)}}
@media (prefers-reduced-motion: reduce){.hero .scrollcue{animation:none}}

/* intro band under the hero */
.intro{position:relative;overflow:hidden;padding:58px 0 66px;text-align:center;
  border-bottom:1px solid var(--line);
  background:
    radial-gradient(55% 48% at 14% 8%, rgba(91,163,217,.12), transparent 70%),
    radial-gradient(45% 40% at 88% 12%, rgba(212,80,42,.09), transparent 70%),
    var(--paper)}
.intro-vid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 26%;
  opacity:.55;pointer-events:none;z-index:0}
.intro-scrim{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    radial-gradient(58% 118% at 50% 50%, rgba(250,247,240,.80) 0%, rgba(250,247,240,.52) 52%, rgba(250,247,240,.10) 100%),
    linear-gradient(to bottom, rgba(250,247,240,.30), rgba(250,247,240,0) 26%, rgba(250,247,240,0) 74%, rgba(250,247,240,.30))}
.intro .wrap{position:relative;z-index:2}
.sndbtn{position:absolute;right:20px;bottom:16px;z-index:3;display:inline-flex;align-items:center;gap:9px;
  font-family:var(--sans);font-size:.61rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;
  color:var(--head);background:rgba(250,247,240,.72);border:1px solid var(--line);border-radius:0;
  padding:8px 13px;cursor:pointer;line-height:1;
  transition:background .3s,color .3s,border-color .3s,letter-spacing .3s}
.sndbtn:hover{background:var(--ink);color:var(--paper);border-color:var(--ink);letter-spacing:.26em}
.sndbtn[hidden]{display:none}
.sndbtn svg{width:13px;height:13px;flex:0 0 13px;display:block}
@media(max-width:760px){.sndbtn{right:12px;bottom:12px;font-size:.58rem;padding:7px 11px}}
@keyframes bandpan{from{object-position:0% 50%}to{object-position:100% 50%}}
@media(max-width:699px){
  /* the clip is far wider than the band, so drift across it: the full sweep takes
     half the clip, then it eases back, arriving home exactly as the video loops */
  .intro-vid{object-position:0% 50%;animation:bandpan 30.1s ease-in-out infinite alternate;
    will-change:object-position}
  .intro-scrim{background:
    radial-gradient(80% 60% at 50% 50%, rgba(250,247,240,.78) 0%, rgba(250,247,240,.48) 62%, rgba(250,247,240,.06) 100%),
    linear-gradient(to bottom, rgba(250,247,240,.26), rgba(250,247,240,0) 24%, rgba(250,247,240,0) 76%, rgba(250,247,240,.26))}}
@media(prefers-reduced-motion:reduce){.intro-vid{display:none;animation:none}}
.intro p.tag{margin:0 auto;font-size:1.12rem;color:var(--ink-soft);max-width:36em}
.intro p.tag a{color:var(--blue);text-decoration:none;border-bottom:1px solid rgba(57,116,158,.35)}
.intro p.tag a:hover{color:var(--orange);border-color:var(--orange)}
.intro .dates{margin-top:30px;display:inline-block;font-size:.78rem;letter-spacing:.26em;
  text-transform:uppercase;color:var(--green);font-weight:600}

/* sections */
section{padding:76px 0}
.sec-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:38px;gap:16px;flex-wrap:wrap}
.sec-head h2{font-family:var(--sans);font-size:.95rem;font-weight:600;letter-spacing:.24em;
  text-transform:uppercase;color:var(--head)}
.sec-head .k{font-size:.74rem;letter-spacing:.24em;text-transform:uppercase;color:var(--muted)}

/* event cards */
.events{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:22px}
.event-card{position:relative;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:6px;
  padding:34px 30px 30px;text-decoration:none;overflow:hidden;
  transition:transform .3s cubic-bezier(.2,.6,.2,1),box-shadow .3s,border-color .3s}
.event-card:hover{transform:translateY(-3px);box-shadow:0 14px 30px rgba(24,21,16,.07);border-color:#d4cbb8}
.event-card .bignum{position:absolute;top:-6px;right:14px;font-family:var(--serif);font-style:italic;
  font-size:5.4rem;font-weight:500;color:var(--orange);opacity:.10;line-height:1;pointer-events:none}
.event-card .num{font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;color:var(--orange);font-weight:600}
.event-card h3{font-family:var(--serif);margin:12px 0 4px;font-size:1.65rem;font-weight:600;letter-spacing:-.01em}
.event-card .meta{color:var(--muted);font-size:.92rem;min-height:2.9em}
#visit .event-card h3,#venues .event-card h3{min-height:3.3em}
#visit .event-card .meta,#venues .event-card .meta{min-height:0}
.event-card .composers{margin-top:16px;font-size:.93rem;line-height:1.55;color:var(--ink-soft);flex:1}
.event-card .go{margin-top:auto;padding-top:20px;font-size:.86rem;font-weight:600;color:var(--blue)}
.event-card .go span{display:inline-block;transition:transform .25s}
.event-card:hover .go span{transform:translateX(5px)}
.badge{display:inline-block;align-self:flex-start;margin-top:18px;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--green);border:1px solid currentColor;border-radius:999px;padding:4px 12px}

/* musicians */
.musicians{display:grid;grid-template-columns:repeat(auto-fill,minmax(156px,1fr));gap:32px 22px}
.musician{display:block;text-align:center;text-decoration:none}
.musician .ph{position:relative;display:block;width:128px;height:128px;margin:0 auto 14px;border-radius:50%}
.musician img{width:128px;height:128px;border-radius:50%;object-fit:cover;display:block;margin:0 auto;
  border:1px solid var(--line);transition:transform .3s cubic-bezier(.2,.6,.2,1),box-shadow .3s}
.musician .ph::after{content:"";position:absolute;inset:-6px;border-radius:50%;border:1.5px solid var(--orange);
  opacity:0;transform:scale(.92);transition:opacity .3s,transform .3s}
.musician:hover img{transform:scale(1.045);box-shadow:0 14px 30px rgba(24,21,16,.16)}
.musician:hover .ph::after{opacity:.85;transform:scale(1)}
.musician .nm{font-family:var(--serif);font-weight:600;font-size:.95rem;letter-spacing:-.01em;color:var(--head);line-height:1.35}
.musician .in{color:var(--muted);font-size:.82rem;margin-top:2px}
.musician .ext{color:var(--blue);font-size:.75rem;margin-top:4px}
.note{font-size:.85rem;color:var(--muted);margin-top:24px}

/* event page hero */
.ehero{position:relative;padding:72px 0 48px;border-bottom:1px solid var(--line);
  background:
    radial-gradient(50% 60% at 90% 0%, rgba(91,163,217,.10), transparent 70%),
    radial-gradient(40% 50% at 5% 100%, rgba(56,115,92,.08), transparent 70%),
    var(--paper)}
.ehero .num{font-size:.74rem;letter-spacing:.26em;text-transform:uppercase;color:var(--orange);font-weight:600}
.ehero h1{font-family:var(--serif);font-size:clamp(1.5rem,3.3vw,2.18rem);font-weight:600;letter-spacing:-.022em;color:var(--head);margin:12px 0 8px;line-height:1.28}
.ehero .meta{color:var(--muted);font-size:1.04rem}
.ehero .blurb{max-width:46em;margin-top:20px;color:var(--ink-soft)}
.facts{display:flex;flex-wrap:wrap;gap:13px;margin-top:28px}
.fact{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:12px 18px;font-size:.9rem}
.fact b{display:block;font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:2px}
.fact a{color:var(--blue);text-decoration:none}
.fact a:hover{text-decoration:underline}

/* programme list */
.prog{border-top:1px solid var(--line)}
.prog-item{display:flex;align-items:baseline;gap:20px;padding:24px 10px;border-bottom:1px solid var(--line);
  text-decoration:none;transition:background .2s,padding-left .25s}
.prog-item:hover{background:#f4efe4;padding-left:18px}
.prog-item .cmp{flex:0 0 215px;font-family:var(--serif);font-weight:600;font-size:.95rem;letter-spacing:-.01em;color:var(--head)}
.prog-item .ttl{flex:1;font-size:.98rem;color:var(--ink-soft)}
.prog-item .arrow{color:var(--blue);font-size:.85rem;white-space:nowrap}
@media(max-width:640px){.prog-item{flex-direction:column;gap:4px}.prog-item .cmp{flex:none}}

/* piece page */
.piece{max-width:700px;margin:0 auto;padding:76px 28px}
.piece .k{font-size:.74rem;letter-spacing:.26em;text-transform:uppercase;color:var(--muted)}
.piece h1{font-family:var(--serif);font-size:clamp(1.28rem,2.93vw,1.76rem);font-weight:600;letter-spacing:-.022em;color:var(--head);margin:14px 0 6px;line-height:1.28}
.piece .cmp{font-size:1.05rem;font-weight:600;color:var(--head)}
.piece .cmp a{color:inherit;text-decoration:none;border-bottom:2px solid var(--orange);transition:color .2s}
.piece .cmp a:hover{color:var(--orange)}
.piece .dates{color:var(--muted);font-weight:400}
.piece .scoring{margin:18px 0 30px;font-size:.83rem;color:var(--green);
  border:1px solid currentColor;display:inline-block;border-radius:999px;padding:5px 15px}
.piece p.sum{font-size:1.1rem;line-height:1.85;color:var(--ink-soft)}
.piece p.sum::first-letter{font-family:var(--serif);font-size:3em;float:left;line-height:.86;
  padding:4px 12px 0 0;color:var(--orange);font-weight:600}
.piece .back{display:inline-block;margin-top:40px;font-size:.9rem;color:var(--blue);text-decoration:none}
.piece .back:hover{text-decoration:underline}
.pnav{display:flex;justify-content:space-between;gap:20px;margin-top:34px;padding-top:22px;
  border-top:1px solid var(--line);font-size:.88rem}
.pnav a{color:var(--muted);text-decoration:none;max-width:46%;transition:color .2s}
.pnav a:hover{color:var(--orange)}
.crumb{padding-top:30px;font-size:.85rem}
.crumb a{color:var(--muted);text-decoration:none}
.crumb a:hover{color:var(--ink)}

/* contact */
.contact-grid{display:grid;grid-template-columns:1fr 1.2fr;gap:44px;align-items:start}
@media(max-width:760px){.contact-grid{grid-template-columns:1fr}}
.contact-grid h3{font-family:var(--sans);font-size:1.22rem;font-weight:600;letter-spacing:-.01em;
  color:var(--head);line-height:1.38;margin-bottom:14px}
.contact-grid p{color:var(--ink-soft);font-size:.97rem}
form.contact{background:none;border:0;border-radius:0;padding:0}
form.contact label{display:block;font-size:.66rem;letter-spacing:.24em;text-transform:uppercase;
  color:var(--muted);font-weight:600;margin:30px 0 0}
form.contact label:first-child{margin-top:0}
form.contact input,form.contact textarea{width:100%;font-family:var(--sans);font-size:1rem;color:var(--ink);
  background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;
  padding:9px 0 8px;outline:none;transition:border-color .3s}
form.contact input::placeholder,form.contact textarea::placeholder{color:#b6ad9c}
form.contact input:focus,form.contact textarea:focus{border-bottom-color:var(--orange)}
form.contact textarea{min-height:76px;resize:vertical;line-height:1.7}
form.contact .row-check{display:flex;align-items:flex-start;gap:12px;margin-top:30px;
  font-size:.88rem;color:var(--ink-soft)}
form.contact .row-check input{width:15px;height:15px;flex:0 0 15px;margin-top:3px;
  accent-color:var(--orange);border-bottom:0}
form.contact button{margin-top:34px;font-family:var(--sans);font-weight:600;font-size:.72rem;
  letter-spacing:.24em;text-transform:uppercase;color:var(--ink);background:transparent;
  border:1px solid var(--ink);border-radius:0;padding:15px 40px;cursor:pointer;
  transition:background .3s,color .3s,letter-spacing .3s}
form.contact button:hover{background:var(--ink);color:var(--paper);letter-spacing:.28em}

/* footer */
footer{background:var(--ink);color:#cfc8ba;margin-top:60px;padding:64px 0 48px;font-size:.9rem}
.foot{display:grid;grid-template-columns:auto 1fr auto;gap:40px;align-items:center}
@media(max-width:720px){.foot{grid-template-columns:1fr;text-align:center;justify-items:center}}
.foot img{height:74px;filter:drop-shadow(0 4px 14px rgba(0,0,0,.4))}
.foot .fmid{line-height:1.9}
.foot .fmid b{color:#faf7f0;font-family:"Bodoni Moda","Georgia",serif;font-weight:600;letter-spacing:.12em;text-transform:uppercase;font-size:.95rem;display:block;margin-bottom:4px}
.foot a{color:#e8e1d3;text-decoration:none;border-bottom:1px solid rgba(232,225,211,.3)}
.fnav{display:inline-block;margin-top:6px;font-size:.82rem;line-height:2}
.fnav a{border-bottom:0;margin:0 2px}
.fnav a:hover{color:var(--orange)}
.foot a:hover{color:#fff;border-color:#fff}
.foot .fr{text-align:right;color:#938b78}
@media(max-width:720px){.foot .fr{text-align:center}}

/* piece extras */
.durchip{margin-left:8px;color:var(--muted)}
.dur{color:var(--muted);font-size:.85rem;white-space:nowrap}
.dur.new{color:var(--orange);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;font-weight:600}
.part-h{font-family:var(--serif);font-size:1.05rem;font-weight:600;letter-spacing:-.012em;color:var(--head);margin:34px 0 10px}
p.sum.nodrop::first-letter{font-size:inherit;float:none;padding:0;color:inherit;font-weight:inherit;font-family:inherit}
.listen{display:inline-block;margin-top:22px;font-family:var(--sans);border:0;cursor:pointer;font-weight:600;font-size:.95rem;color:#fff;background:var(--orange);
  border-radius:999px;padding:12px 26px;text-decoration:none;transition:background .25s,transform .2s}
.listen:hover{background:var(--ink);transform:translateY(-1px)}
.listen-credit{display:inline-block;margin-left:14px;font-size:.85rem;color:var(--muted)}
.deeper{display:inline-flex;align-items:baseline;gap:14px;font-family:var(--sans);font-size:.7rem;
  font-weight:600;letter-spacing:.26em;text-transform:uppercase;color:var(--head);text-decoration:none;
  padding-bottom:10px;border-bottom:1px solid var(--line);
  transition:color .35s,border-color .35s,letter-spacing .35s}
.deeper span{display:inline-block;font-size:1.3em;line-height:1;transform:translateY(.06em);
  transition:transform .35s cubic-bezier(.2,.6,.2,1)}
.deeper:hover{color:var(--orange);border-bottom-color:var(--orange);letter-spacing:.3em}
.deeper:hover span{transform:translate(7px,.06em)}
@media(max-width:600px){.deeper{font-size:.63rem;letter-spacing:.22em}}
/* click-to-play embeds */
.yt{position:relative;margin:22px 0 6px;max-width:620px;aspect-ratio:16/9;
  background:linear-gradient(130deg,#1b2b3d,#2f5f4d);
  border-radius:8px;overflow:hidden;cursor:pointer;box-shadow:0 14px 34px rgba(24,21,16,.16)}
.yt img{width:100%;height:100%;object-fit:cover;opacity:.88;transition:opacity .25s,transform .4s}
.yt:hover img{opacity:1;transform:scale(1.02)}
.yt .playbtn{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:64px;height:46px;
  background:var(--orange);border-radius:10px;transition:background .25s}
.yt .playbtn::after{content:"";position:absolute;top:50%;left:50%;transform:translate(-40%,-50%);
  border-style:solid;border-width:9px 0 9px 15px;border-color:transparent transparent transparent #fff}
.yt:hover .playbtn{background:var(--ink)}
.yt.nothumb{display:flex;align-items:center;justify-content:center;aspect-ratio:auto;min-height:88px;
  background:linear-gradient(120deg,#20334a,#38735c)}
.yt .yt-label{color:#faf7f0;font-weight:600;letter-spacing:.04em}
.yt iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.yt.nothumb.on{aspect-ratio:16/9}
.embed-cap{font-size:.85rem;color:var(--muted);margin:8px 0 4px}
.pullquote{margin:16px 0 24px;padding:0 2em 0 2.6em;border:0;text-align:left}
.pullquote blockquote{font-family:var(--serif);font-size:.95rem;font-weight:400;line-height:1.62;
  color:var(--ink-soft);letter-spacing:0;margin:0}
.pullquote figcaption{margin-top:12px;font-size:.6rem;letter-spacing:.24em;text-transform:uppercase;
  color:var(--muted);font-weight:600;line-height:2}
.pullquote figcaption a.src{color:inherit;text-decoration:none;border-bottom:1px solid rgba(121,113,95,.35);
  padding-bottom:2px;transition:color .3s,border-color .3s}
.pullquote figcaption a.src:hover{color:var(--orange);border-bottom-color:var(--orange)}
@media(max-width:600px){.pullquote{margin:14px 0 20px;padding:0 0 0 1.3em}
  .pullquote blockquote{font-size:.92rem}
  .pullquote figcaption{font-size:.55rem;letter-spacing:.18em}}

/* sessions: editorial columns */
.evrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:0}
.ev{position:relative;display:flex;flex-direction:column;padding:8px 34px 6px;
  border-left:1px solid var(--line);text-decoration:none;color:inherit;
  transition:background .35s ease}
.ev:first-child{border-left:0;padding-left:0}
.ev:hover{background:linear-gradient(180deg,rgba(212,80,42,.045),transparent 65%)}
.ev-cal{position:absolute;top:0;right:58px;width:66px;height:74px;color:var(--orange);
  opacity:.32;pointer-events:none;transition:opacity .35s,transform .5s cubic-bezier(.2,.6,.2,1)}
.ev:hover .ev-cal{opacity:.5;transform:translateY(-3px)}
.ev-label{font-size:.7rem;letter-spacing:.24em;text-transform:uppercase;color:var(--orange);font-weight:600}
.ev h3{font-family:var(--sans);font-size:1.22rem;font-weight:600;line-height:1.38;
  letter-spacing:-.01em;color:var(--head);margin:12px 0 0;padding-right:74px}
.ev-meta{margin-top:14px;font-size:.86rem;line-height:1.75;color:var(--muted)}
.ev-prog{margin-top:16px;font-size:.93rem;line-height:1.6;color:var(--ink-soft);flex:1}
.ev-free{margin-top:16px;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--green)}
.ev-go{margin-top:16px;font-size:.82rem;letter-spacing:.14em;text-transform:uppercase;
  font-weight:600;color:var(--blue);transition:color .2s}
.ev-go span{display:inline-block;transition:transform .28s}
.ev:hover .ev-go{color:var(--orange)}
.ev:hover .ev-go span{transform:translateX(6px)}
@media(min-width:761px) and (max-width:1010px){.ev-cal{right:10px}}
@media(max-width:760px){
  .ev{border-left:0;border-top:1px solid var(--line);padding:26px 0 8px}
  .ev:first-child{border-top:0;padding-top:8px}
  .ev-cal{top:12px;width:60px;height:68px}
}

/* venues: editorial columns, no card chrome */
.venues{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:0}
.venue{padding:6px 34px 4px;border-left:1px solid var(--line);display:flex;flex-direction:column}
.venue:first-child{border-left:0;padding-left:0}
.venue .vlabel{font-size:.7rem;letter-spacing:.24em;text-transform:uppercase;color:var(--orange);font-weight:600}
.venue h3{font-family:var(--sans);font-size:1.22rem;font-weight:600;letter-spacing:-.01em;
  color:var(--head);line-height:1.38;margin:11px 0 0}
.venue .vtext{margin-top:13px;color:var(--ink-soft);font-size:.93rem;line-height:1.7;flex:1}
.venue .vtext a{color:var(--ink-soft);text-decoration:none;border-bottom:1px solid rgba(57,116,158,.4)}
.venue .vtext a:hover{color:var(--orange);border-color:var(--orange)}
.venue .vgo{margin-top:20px;font-size:.82rem;letter-spacing:.14em;text-transform:uppercase;font-weight:600}
.venue .vgo a{color:var(--blue);text-decoration:none;transition:color .2s,letter-spacing .25s}
.venue .vgo a:hover{color:var(--orange);letter-spacing:.18em}
.venue .mapframe{margin-top:22px;height:170px;border-radius:2px}
@media(max-width:760px){
  .venue{border-left:0;border-top:1px solid var(--line);padding:26px 0 4px}
  .venue:first-child{border-top:0;padding-top:6px}
  .venue h3{min-height:0}
}
.mapframe{width:100%;height:200px;border:0;border-radius:6px;margin-top:16px;filter:saturate(.9)}
.work-embed{padding:6px 0 18px}
.work-embed .yt{margin-top:6px}

.nores{color:var(--green);font-size:.82rem;white-space:nowrap}
.readmore{display:block;margin-top:18px;font-size:.92rem;color:var(--blue);text-decoration:none}
.readmore:hover{text-decoration:underline}
.listen.inside{background:var(--blue);margin-top:12px}
.listen.inside:hover{background:var(--ink)}
.premiere{margin-top:22px;display:inline-block;font-size:.85rem;letter-spacing:.06em;color:var(--gold);
  border:1px solid currentColor;border-radius:999px;padding:9px 18px}
.perf{margin-top:34px;padding-top:22px;border-top:1px solid var(--line);font-size:.95rem;color:var(--ink-soft)}
.perf b{display:block;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.encores{margin-top:26px;font-size:.92rem;color:var(--muted);font-style:italic;text-align:center}

/* composer pages */
.cpage{max-width:820px;margin:0 auto;padding:76px 28px}
.cpage .k{font-size:.74rem;letter-spacing:.26em;text-transform:uppercase;color:var(--muted)}
.cpage h1{font-family:var(--serif);font-size:clamp(1.31rem,3vw,1.84rem);font-weight:600;letter-spacing:-.022em;color:var(--head);margin:14px 0 4px;line-height:1.28}
.cpage .cdates{color:var(--muted);font-size:1.05rem;margin-bottom:30px}
figure.facsimile{margin:28px 0 6px;max-width:520px}
figure.facsimile img{width:100%;display:block;border:1px solid var(--line);border-radius:3px;
  box-shadow:0 20px 46px rgba(24,21,16,.16)}
figure.facsimile figcaption{font-size:.76rem;color:var(--muted);margin-top:14px;line-height:1.65}
figure.promo{margin:26px 0 34px}
figure.promo video{width:100%;display:block;border-radius:10px;background:#0e141c;
  border:1px solid var(--line);box-shadow:0 18px 44px rgba(24,21,16,.16)}
figure.promo figcaption{font-size:.78rem;color:var(--muted);margin-top:10px}
.portrait{float:right;width:min(280px,42%);margin:6px 0 20px 34px}
.portrait img{width:100%;border-radius:14px;border:1px solid var(--line);box-shadow:0 14px 34px rgba(24,21,16,.14)}
.portrait figcaption{font-size:.72rem;color:var(--muted);margin-top:8px;line-height:1.5}
.portrait.noimg img{display:none}
.portrait.noimg figcaption{display:none}
.portrait.round img{border-radius:50%;border:none;box-shadow:0 14px 34px rgba(24,21,16,.18)}
.portrait.noimg::before{content:attr(data-initials);display:flex;align-items:center;justify-content:center;
  aspect-ratio:4/5;border-radius:14px;border:1px solid var(--line);
  background:radial-gradient(60% 60% at 30% 20%, rgba(91,163,217,.18), transparent),
             radial-gradient(70% 70% at 80% 90%, rgba(56,115,92,.16), transparent), var(--card);
  font-family:var(--serif);font-style:italic;font-size:4.2rem;color:var(--orange)}
.cpage p.essay{font-size:1.05rem;line-height:1.8;color:var(--ink-soft);margin-bottom:20px}
.cpage p.essay:first-of-type::first-letter{font-family:var(--serif);font-size:3em;float:left;line-height:.86;
  padding:4px 12px 0 0;color:var(--orange);font-weight:600}
.at-fest{clear:both;margin:36px 0;padding:24px 28px;background:var(--card);border:1px solid var(--line);
  border-left:3px solid var(--orange);border-radius:6px;font-size:1rem;line-height:1.75;color:var(--ink-soft)}
.at-fest b{display:block;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--orange);margin-bottom:8px}
.at-fest a{color:var(--blue);text-decoration:none;font-weight:600}
.at-fest a:hover{text-decoration:underline}
.works-head{font-family:var(--serif);font-size:1.08rem;font-weight:600;letter-spacing:-.012em;color:var(--head);margin:44px 0 6px}
.work-row{display:flex;align-items:center;gap:18px;padding:18px 6px;border-bottom:1px solid var(--line)}
.work-row:first-of-type{border-top:1px solid var(--line)}
.work-row .wt{flex:1}
.work-row .wt b{display:block;font-size:1rem;font-weight:600}
.work-row .wt span{font-size:.85rem;color:var(--muted)}
.listen.small{margin:0;padding:9px 18px;font-size:.82rem;white-space:nowrap}
.work-row .norec{font-size:.78rem;color:var(--gold);border:1px solid currentColor;border-radius:999px;
  padding:6px 13px;white-space:nowrap}
.about-cmp{margin-top:34px}
.about-cmp a{display:inline-block;margin-right:18px;font-family:var(--serif);font-size:1rem;font-weight:600;
  color:var(--head);text-decoration:none;border-bottom:2px solid var(--orange);padding-bottom:2px;transition:color .2s}
.about-cmp a:hover{color:var(--orange)}

/* composers index */
.cindex-head{padding:64px 0 10px;text-align:center}
.cindex-head h1{font-family:var(--serif);font-size:clamp(1.35rem,3.08vw,1.88rem);font-weight:600;letter-spacing:-.022em;color:var(--head)}
.cindex-head p{color:var(--muted);margin-top:10px}
.cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(195px,1fr));gap:22px;padding:44px 0 20px}
.ccard{background:var(--card);border:1px solid var(--line);border-radius:6px;overflow:hidden;
  display:flex;flex-direction:column;text-align:center;text-decoration:none;color:inherit;
  transition:transform .3s cubic-bezier(.2,.6,.2,1),box-shadow .3s}
.ccard:hover{transform:translateY(-4px);box-shadow:0 18px 38px rgba(24,21,16,.10)}
.ccard .cimg{height:200px;min-height:200px;max-height:200px;overflow:hidden;position:relative;background:
  radial-gradient(60% 60% at 30% 20%, rgba(91,163,217,.16), transparent),
  radial-gradient(70% 70% at 80% 90%, rgba(56,115,92,.14), transparent), var(--paper)}
.ccard .cimg img{position:absolute;inset:0;width:100%;height:100%;max-width:none;
  object-fit:cover;object-position:center 22%;display:block}
.ccard .cimg img.photo{object-position:center 30%}
.ccard .cimg.noimg img{display:none}
.ccard .cimg.noimg::before{content:attr(data-initials);position:absolute;inset:0;display:flex;
  align-items:center;justify-content:center;font-family:var(--serif);font-style:italic;
  font-size:3.4rem;color:var(--orange)}
.ccard .cbody{padding:16px 18px 18px;display:flex;flex-direction:column;flex:1;align-items:center}
.ccard h3{font-family:var(--serif);font-size:1.02rem;font-weight:600;letter-spacing:-.012em;color:var(--head);line-height:1.3}
.ccard .cyrs{color:var(--muted);font-size:.8rem;margin:3px 0 9px}
.ccard p{font-size:.85rem;line-height:1.55;color:var(--ink-soft);flex:1}
.ccard .more{margin-top:12px;font-size:.85rem;font-weight:600;color:var(--blue)}
.ccard .more span{display:inline-block;transition:transform .25s}
.ccard:hover .more{color:var(--orange)}
.ccard:hover .more span{transform:translateX(5px)}

@media(min-width:1040px){.musicians{grid-template-columns:repeat(7,1fr)}}
/* desktop: tighter rhythm (mobile keeps its roomier spacing) */
@media(min-width:900px){
  section{padding:54px 0}
  .intro{padding:40px 0 46px}
  .intro .dates{margin-top:26px}
  .sec-head{margin-bottom:26px}
  .events{gap:18px}
  .event-card{padding:26px 24px 24px}
  .ev{padding:8px 28px 6px}
  .musicians{gap:24px 16px}
  .musician .ph,.musician img{width:112px;height:112px}
  .musician .nm{font-size:.96rem}
  .cgrid{gap:18px;padding:30px 0 12px}
  .cindex-head{padding:44px 0 4px}
  .prog-item{padding:17px 8px}
  .works-head{margin:32px 0 4px}
  footer{margin-top:40px;padding:48px 0 38px}
  .contact-grid{gap:34px}
  .cpage,.piece{padding-top:52px}
  .encores{margin-top:20px}
}

/* 404 */
.notfound{max-width:640px;margin:0 auto;text-align:center;padding:110px 28px}
.notfound h1{font-family:var(--serif);font-size:3rem;font-weight:600;color:var(--orange);letter-spacing:-.024em}
.notfound p{margin:18px 0 30px;color:var(--ink-soft)}
.notfound a{display:inline-block;font-weight:600;color:#fff;background:var(--ink);border-radius:999px;
  padding:13px 30px;text-decoration:none;transition:background .25s}
.notfound a:hover{background:var(--orange)}
