/* ============================================================
   SITE-INNER  —  shared chrome + inner-page layout
   Loaded after the active theme sheet. Written entirely against
   the --c-* / --font-* tokens each theme declares, so swapping the
   theme re-skins the whole site. Generic element rules are scoped to
   non-home <main> so each theme's bespoke title page stays untouched.
   ============================================================ */

/* ---- chrome: header nav, wordmark, sub-nav ---- */
.site-header{padding:26px 32px 22px;text-align:center;}
.site-header nav{
  display:flex;justify-content:center;align-items:baseline;gap:22px;flex-wrap:wrap;
  max-width:var(--measure);margin:0 auto;
}
.site-header nav a{
  font-family:var(--font-label);font-weight:500;font-size:12.5px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--c-muted);text-decoration:none;border-bottom:0;
}
.site-header nav a:hover,.site-header nav a.active{color:var(--c-accent);border-bottom:0;}
.site-header .logo{
  display:inline-block;font-family:var(--font-label);font-weight:500;font-size:12px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--c-accent);text-decoration:none;border-bottom:0;margin-bottom:12px;
}
.sub-nav{display:flex;justify-content:center;gap:18px;flex-wrap:wrap;margin:12px auto 0;}
.sub-nav a{
  font-family:var(--font-label);font-weight:500;font-size:11px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--c-muted);text-decoration:none;border-bottom:0;
}
.sub-nav a:hover,.sub-nav a.active{color:var(--c-accent);}

/* ---- footer / colophon ---- */
footer{
  max-width:var(--measure);margin:0 auto;padding:30px 32px 56px;text-align:center;
  border-top:1px solid var(--c-rule-strong);color:var(--c-muted);font-family:var(--font-body);
}
footer em{font-style:italic;font-size:16px;color:var(--c-muted);}
.colophon-sep{margin:0 .5em;color:var(--c-rule);}
.copyright{
  display:block;margin-top:14px;font-family:var(--font-label);font-weight:500;font-size:11px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--c-accent);
}

/* discreet theme switcher (exploration tool — lives in the footer) */
.theme-switch{margin-top:22px;opacity:.5;transition:opacity .2s;}
.theme-switch:hover{opacity:1;}
.theme-switch label{font-family:var(--font-label);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--c-muted);margin-right:8px;}
.theme-switch select{font-family:var(--font-label);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--c-muted);background:transparent;border:1px solid var(--c-rule);padding:3px 6px;cursor:pointer;}

/* ---- reading column — the homepage carries its own .home column ---- */
main{max-width:var(--measure);margin:0 auto;padding:44px 32px 64px;}
main:has(.home){max-width:none;padding:0;}
main:not(:has(.home)){font-family:var(--font-body);}

/* --- titles, sections, prose (non-home only) ---
   These generic element defaults are wrapped in :where() so they carry ZERO
   specificity. Any component class on the element (.piece-tagline, .intro,
   .media-block h2, …) then wins automatically — no per-component overrides,
   no specificity arms race. Add new centered/inset paragraph components as a
   plain `.class` and they will just work. */
:where(main:not(:has(.home)) h1){
  font-family:var(--font-display);font-size:38px;font-weight:500;line-height:1.08;letter-spacing:.01em;
  text-align:center;margin:0 0 .5rem;
}
:where(main:not(:has(.home)) h2){
  font-family:var(--font-label);font-size:13px;letter-spacing:.22em;text-transform:uppercase;font-weight:600;
  color:var(--c-ink);text-align:left;margin:3.2rem 0 1.2rem;padding-top:1.2rem;position:relative;
}
:where(main:not(:has(.home)) h2)::before{content:"";position:absolute;top:0;left:0;width:52px;height:1px;background:var(--c-accent);}
:where(main:not(:has(.home)) h3){font-style:italic;font-weight:400;font-size:20px;color:var(--c-muted);margin:2rem 0 .6rem;}
:where(main:not(:has(.home)) p){margin:0 0 .95rem;}

/* intro lede — centered standfirst, inset from the body column */
.intro{font-style:italic;font-size:21px;line-height:1.5;text-align:center;margin:1.2rem 10% 2.8rem;color:var(--c-muted);}
main > .intro:first-child{margin-top:0;}

/* external-link arrow */
.ext::after{content:" \2197";font-size:.78em;color:var(--c-muted);border:0;vertical-align:.05em;}

/* plain list */
ul.plain{list-style:none;padding:0;margin:1rem 0;}
ul.plain li{padding:.3rem 0;}

/* works / catalog listing */
ul.works{list-style:none;margin:1.2rem 0 1.6rem;padding:0;}
ul.works li{display:grid;grid-template-columns:4.5rem 1fr;gap:1.4rem;align-items:baseline;padding:.6rem 0;border-bottom:1px solid var(--c-rule);}
ul.works li:first-child{border-top:1px solid var(--c-rule);}
ul.works .year{font-family:var(--font-label);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--c-muted);text-align:right;white-space:nowrap;}
ul.works em{font-style:italic;}

/* catalog table */
table.catalog{width:100%;border-collapse:collapse;margin-top:1.4rem;}
table.catalog th{font-family:var(--font-label);text-align:left;font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:600;padding:.7rem 1rem .7rem 0;border-bottom:1.5px solid var(--c-ink);color:var(--c-ink);}
table.catalog td{padding:.65rem 1rem .65rem 0;border-bottom:1px solid var(--c-rule);vertical-align:top;font-size:15px;}
table.catalog td.year{font-family:var(--font-label);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--c-muted);white-space:nowrap;width:4.5rem;}
table.catalog td.label{font-family:var(--font-label);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--c-muted);}

/* press quotes */
.press{margin:2rem 0 2.5rem;text-align:center;}
.press blockquote{font-family:var(--font-body);font-style:italic;font-size:26px;line-height:1.28;max-width:26ch;margin:1.8rem auto;color:var(--c-ink);border:0;padding:0;}
.press blockquote::before{content:"\201C";color:var(--c-rule);margin-right:.04em;}
.press blockquote::after{content:"\201D";color:var(--c-rule);margin-left:.04em;}
.press blockquote cite{display:block;font-family:var(--font-label);font-style:normal;font-size:12px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--c-muted);margin-top:.6rem;}

/* piece-page header */
.piece-meta{font-family:var(--font-label);font-size:12px;letter-spacing:.13em;text-transform:uppercase;text-align:center;color:var(--c-muted);margin-bottom:.35rem;}
.piece-premiere{font-size:12px;font-style:italic;text-align:center;color:var(--c-muted);margin-bottom:1.5rem;}
.piece-tagline{font-style:italic;font-size:21px;text-align:center;color:var(--c-ink);max-width:30ch;margin:.3rem auto .6rem;line-height:1.28;}
.piece-family{font-family:var(--font-label);font-size:12px;letter-spacing:.13em;text-transform:uppercase;text-align:center;color:var(--c-muted);margin:0 auto .9rem;}
.piece-family a{color:var(--c-muted);border-bottom:1px solid var(--c-rule);}
.piece-family a:hover{color:var(--c-accent);border-bottom-color:var(--c-accent);}
.piece-family em{font-style:italic;text-transform:none;letter-spacing:0;font-size:15px;font-family:var(--font-body);}
.piece .hero,.cover-image{display:block;width:100%;height:auto;margin:1.5rem auto 2rem;border:1px solid var(--c-rule);}
.cover-image{max-width:400px;}
.piece-body{margin:1.5rem 0 2rem;}
.piece-body p{margin-bottom:.9rem;}

/* media embeds */
.media-block{margin:2.5rem 0;}
.media-block h2{margin-top:0;}
.media-embed{position:relative;width:100%;margin:1rem 0;}
.media-embed.video{aspect-ratio:16/9;overflow:hidden;max-width:540px;margin-inline:auto;}
.media-embed.video iframe{position:absolute;inset:0;width:100%;height:100%;border:1px solid var(--c-rule);}
.media-embed.bandcamp iframe,.media-embed.soundcloud iframe{width:100%;border:1px solid var(--c-rule);}
.media-embed.bandcamp iframe{height:307px;max-width:400px;display:block;margin-inline:auto;}
.media-embed.soundcloud iframe{height:300px;}
.more-recordings{margin:1.6rem 0 0;}
.more-recordings h3,.media-subhead{font-family:var(--font-label);font-size:12px;font-style:normal;letter-spacing:.14em;text-transform:uppercase;font-weight:600;text-align:center;color:var(--c-muted);margin:1.3rem 0 .7rem;}
.more-recordings ul{list-style:none;margin:0;padding:0;}
.more-recordings li{padding:.35rem 0;text-align:center;font-size:15px;border-bottom:1px dotted var(--c-rule);}
.more-recordings li:last-child{border-bottom:0;}

/* featured quote */
.featured-quote{margin:2.4rem auto 2rem;padding:1.3rem 0 1.5rem;text-align:center;max-width:34ch;border-top:1px solid var(--c-rule);border-bottom:1px solid var(--c-rule);}
.featured-quote blockquote{font-family:var(--font-body);font-style:italic;font-size:26px;line-height:1.28;color:var(--c-ink);margin:0;padding:0;border:0;}
.featured-quote blockquote::before{content:"\201C";color:var(--c-rule);}
.featured-quote blockquote::after{content:"\201D";color:var(--c-rule);}
.featured-quote cite{display:block;font-family:var(--font-label);font-style:normal;font-size:12px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--c-muted);margin-top:.85rem;}

/* score & program strips */
.score-images-block,.program-books-block{margin:2.5rem 0;}
.score-strip,.program-strip{display:flex;gap:.8rem;overflow-x:auto;padding:.5rem 0 1rem;scroll-snap-type:x mandatory;}
.score-strip img{flex:0 0 auto;height:240px;width:auto;border:1px solid var(--c-rule);background:#fff;scroll-snap-align:start;}
.score-pdf-link{margin:.9rem 0 0;}
.score-pdf-link a{font-family:var(--font-label);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--c-accent);text-decoration:none;border-bottom:0;}
.score-pdf-link a::after{content:" \2193";}
.score-pdf-link a:hover{text-decoration:underline;}
.program-strip{gap:1rem;}
.program-card{flex:0 0 auto;width:180px;padding:1rem .9rem;border:1px solid var(--c-rule);background:var(--c-bg-deep);text-decoration:none;scroll-snap-align:start;display:block;text-align:center;transition:border-color .2s,transform .2s;}
.program-card:hover{border-color:var(--c-accent);transform:translateY(-2px);}
.program-card img{width:100%;height:180px;object-fit:cover;margin-bottom:.6rem;border:1px solid var(--c-rule);}
.program-card-meta{display:flex;flex-direction:column;gap:.18rem;}
.program-date{font-family:var(--font-label);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--c-muted);}
.program-venue{font-style:italic;font-size:18px;color:var(--c-ink);line-height:1.2;}
.program-location{font-size:12px;color:var(--c-muted);}

/* performance log */
.performances{margin:2.5rem 0;}
.perf-count{font-size:12px;font-style:italic;color:var(--c-muted);text-align:center;margin-bottom:1rem;}
ul.perf-log{list-style:none;margin:.5rem 0;padding:0;}
ul.perf-log li{display:grid;grid-template-columns:6rem 1fr;gap:1rem;align-items:baseline;padding:.4rem 0;border-bottom:1px solid var(--c-rule);font-size:15px;}
ul.perf-log li:first-child{border-top:1px solid var(--c-rule);}
.perf-date{font-family:var(--font-label);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--c-muted);white-space:nowrap;text-align:right;}
.perf-venue{color:var(--c-muted);font-size:12px;display:block;margin-top:.15rem;}

/* tracklist & personnel */
.tracklist{list-style:none;margin:1rem 0;padding:0;}
.tracklist li{display:grid;grid-template-columns:2.5rem 1fr 4rem;gap:1rem;align-items:baseline;padding:.35rem 0;border-bottom:1px dotted var(--c-rule);font-size:15px;}
.track-num,.track-duration{font-family:var(--font-label);font-size:12px;color:var(--c-muted);text-align:right;}
.tracklist em{font-style:italic;}
.personnel-list{list-style:none;margin:1rem 0;padding:0;}
.personnel-list li{padding:.2rem 0;font-size:15px;}
.person-name{font-weight:500;}
.person-role{color:var(--c-muted);font-style:italic;margin-left:.25rem;}

/* streaming chips */
.streaming-links{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;margin:1rem 0;}
.streaming-links a{display:inline-block;padding:.35rem .8rem;font-family:var(--font-label);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--c-ink);text-decoration:none;border:1px solid var(--c-ink);transition:background .2s,color .2s;}
.streaming-links a:hover{background:var(--c-ink);color:var(--c-bg);}

/* CTA */
.cta-block{text-align:center;margin:2rem 0;}
.cta-button{display:inline-block;padding:.7rem 1.6rem;font-family:var(--font-label);font-size:12px;letter-spacing:.13em;text-transform:uppercase;color:var(--c-bg);background:var(--c-ink);text-decoration:none;border:0;transition:background .2s;}
.cta-button:hover{background:var(--c-accent);}
.tech-line{font-family:var(--font-label);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--c-muted);text-align:center;margin-bottom:1.5rem;}

/* related */
.related-block{margin:2.5rem 0;}
.related-block ul{list-style:none;margin:.5rem 0;padding:0;}
.related-block li{padding:.3rem 0;font-size:15px;}

/* concept / family pages */
.concept-body{margin:1.5rem 0 2rem;}
.family-pieces{margin:2rem 0;}

/* libretto */
.libretto{max-width:34rem;margin:0 auto;}
.libretto h1{margin-bottom:.1em;}
.libretto-label{margin:0 0 2.75rem;text-align:center;letter-spacing:.16em;text-transform:uppercase;color:var(--c-muted);}
.libretto-mvt{font-style:italic;font-weight:500;font-size:24px;text-align:center;margin:3rem 0 1.4rem;}
.libretto-stanza{margin:0 0 1.5rem;line-height:1.75;}
.libretto-refrain{margin:1.8rem 0;text-align:center;font-style:italic;color:var(--c-accent);line-height:1.75;}
.libretto-link{margin:1.75rem 0 .5rem;letter-spacing:.05em;text-transform:uppercase;font-size:14px;}
.libretto-back{letter-spacing:.06em;text-transform:uppercase;font-size:14px;}
.libretto-back a{color:var(--c-muted);}
.libretto-back.end{margin-top:3rem;padding-top:1.25rem;border-top:1px solid var(--c-rule);}

/* documentary plates */
.doc-figure{margin:2.5rem 0;}
.doc-figure img{display:block;width:100%;height:auto;border:1px solid var(--c-rule);filter:grayscale(1) sepia(.42) saturate(.75) brightness(1.04) contrast(.92);}
.doc-figure figcaption{font-family:var(--font-label);margin-top:.6rem;letter-spacing:.05em;text-transform:uppercase;font-size:13px;color:var(--c-muted);}
.doc-gallery{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;margin:2.5rem 0 .7rem;}
.doc-gallery img{display:block;width:100%;height:auto;border:1px solid var(--c-rule);filter:grayscale(1) sepia(.42) saturate(.75) brightness(1.04) contrast(.92);}
.doc-gallery-cap{font-family:var(--font-label);letter-spacing:.05em;text-transform:uppercase;font-size:13px;color:var(--c-muted);margin:0 0 2.5rem;}

/* responsive */
@media (max-width:640px){
  main{padding:32px 22px 48px;}
  main:not(:has(.home)) h1{font-size:30px;}
  ul.works li{grid-template-columns:3.5rem 1fr;gap:1rem;}
  ul.perf-log li{grid-template-columns:5rem 1fr;gap:.8rem;}
}
@media (max-width:420px){
  ul.works li{grid-template-columns:1fr;gap:.15rem;}
  ul.works .year{text-align:left;}
}
