/* The Gerald Larner Programme Note Archive — styles */
:root{
  --paper:#faf7f0; --raised:#ffffff; --ink:#23201c; --ink-soft:#5f574b;
  --ink-faint:#8b8170; --accent:#7c2d3a; --accent-ink:#90323f;
  --rule:#e6dfce; --rule-soft:#efe9da; --tag:#f0ead9; --tag-ink:#6a5a3a;
  --mark:#f6e08a; --shadow:0 1px 2px rgba(40,30,20,.06),0 6px 22px rgba(40,30,20,.07);
  --focus:#1d6fb8;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --serif:Georgia,"Iowan Old Style","Palatino Linotype",Palatino,"Times New Roman",serif;
}
html[data-theme="dark"]{
  --paper:#1a1815; --raised:#232019; --ink:#ece6da; --ink-soft:#b3aa99;
  --ink-faint:#8a8170; --accent:#e7a3ad; --accent-ink:#eeb1ba;
  --rule:#39342a; --rule-soft:#2c2820; --tag:#322c20; --tag-ink:#c9bb97;
  --mark:#6b5a1e; --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 26px rgba(0,0,0,.34);
  --focus:#7fb6e6;
}
@media (prefers-color-scheme:dark){
  html[data-theme="auto"]{
    --paper:#1a1815; --raised:#232019; --ink:#ece6da; --ink-soft:#b3aa99;
    --ink-faint:#8a8170; --accent:#e7a3ad; --accent-ink:#eeb1ba;
    --rule:#39342a; --rule-soft:#2c2820; --tag:#322c20; --tag-ink:#c9bb97;
    --mark:#6b5a1e; --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 26px rgba(0,0,0,.34);
    --focus:#7fb6e6;
  }
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);
  font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
a{color:var(--accent-ink);text-decoration-thickness:1px;text-underline-offset:2px}
a:hover{text-decoration-color:var(--accent)}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:3px}
button{font-family:inherit;font-size:inherit;cursor:pointer}
mark{background:var(--mark);color:inherit;padding:0 .05em;border-radius:2px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:absolute;left:-999px;top:0;background:var(--accent);color:#fff;
  padding:.6em 1em;z-index:50;border-radius:0 0 6px 0}
.skip:focus{left:0}

/* header */
.site-head{position:sticky;top:0;z-index:20;background:var(--paper);border-bottom:1px solid var(--rule)}
.head-row{max-width:1080px;margin:0 auto;display:flex;align-items:center;gap:18px;
  padding:11px 22px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink);
  font-family:var(--serif);font-weight:700;font-size:1.12rem;white-space:nowrap}
.brand .gl{display:inline-grid;place-items:center;width:30px;height:30px;flex:none;
  background:var(--accent);color:#fff;border-radius:50%;font-size:.82rem;letter-spacing:.5px}
.brand small{font-family:var(--sans);font-weight:500;color:var(--ink-faint);
  font-size:.74rem;letter-spacing:.6px;text-transform:uppercase;display:block}
form.search{flex:1;min-width:210px;position:relative;display:flex}
form.search input{width:100%;font-size:.97rem;padding:9px 13px 9px 36px;
  border:1px solid var(--rule);background:var(--raised);color:var(--ink);border-radius:8px}
form.search input:focus{border-color:var(--accent)}
form.search .ico{position:absolute;left:11px;top:50%;transform:translateY(-50%);
  color:var(--ink-faint);pointer-events:none}
nav.top{display:flex;gap:4px;align-items:center}
nav.top a{padding:7px 11px;border-radius:7px;text-decoration:none;color:var(--ink-soft);
  font-size:.92rem;font-weight:500}
nav.top a:hover{background:var(--rule-soft);color:var(--ink)}
nav.top a[aria-current="page"]{color:var(--accent-ink);background:var(--tag)}
.theme-btn{background:none;border:1px solid var(--rule);color:var(--ink-soft);
  width:36px;height:36px;border-radius:7px;display:grid;place-items:center}
.theme-btn:hover{background:var(--rule-soft)}

main{max-width:1080px;margin:0 auto;padding:30px 22px 70px;min-height:60vh}
main[aria-busy="true"]{opacity:.55;transition:opacity .15s ease}
h1,h2,h3{font-family:var(--serif);line-height:1.25;color:var(--ink)}
.crumb{font-size:.85rem;color:var(--ink-faint);margin:0 0 14px}
.crumb a{color:var(--ink-soft)}

/* home */
.hero{text-align:center;padding:26px 0 8px;border-bottom:1px solid var(--rule);margin-bottom:30px}
.hero h1{font-size:2.35rem;margin:.1em 0 .15em}
.hero .lede{max-width:640px;margin:.4em auto 1.1em;color:var(--ink-soft);font-size:1.06rem}
form.hero-search{max-width:540px;margin:0 auto}
form.hero-search input{padding:13px 15px 13px 42px;font-size:1.05rem;border-radius:10px}
form.hero-search .ico{left:14px}
.stat-line{margin:16px 0 2px;color:var(--ink-faint);font-size:.9rem;
  display:flex;gap:7px;justify-content:center;flex-wrap:wrap}
.stat-line b{color:var(--accent-ink)}
.pilot-flag{display:inline-block;margin-top:12px;font-size:.78rem;background:var(--tag);
  color:var(--tag-ink);padding:5px 11px;border-radius:20px}
.sec-title{font-size:.82rem;text-transform:uppercase;letter-spacing:1.4px;
  color:var(--ink-faint);margin:34px 0 14px;font-family:var(--sans);font-weight:700}

/* composer cards */
.comp-grid{display:grid;gap:13px;grid-template-columns:repeat(auto-fill,minmax(252px,1fr))}
.comp-card{display:block;text-decoration:none;color:inherit;background:var(--raised);
  border:1px solid var(--rule);border-radius:11px;padding:16px 17px;box-shadow:var(--shadow);
  transition:transform .12s ease,border-color .12s ease}
.comp-card:hover{transform:translateY(-2px);border-color:var(--accent)}
.comp-card .nm{font-family:var(--serif);font-size:1.18rem;font-weight:700}
.comp-card .dt{color:var(--ink-faint);font-size:.86rem;margin-top:1px}
.comp-card .meta{margin-top:9px;display:flex;gap:7px;flex-wrap:wrap}
.comp-card .cnt{margin-top:10px;font-size:.85rem;color:var(--ink-soft)}
.chip{display:inline-block;background:var(--tag);color:var(--tag-ink);font-size:.74rem;
  font-weight:600;padding:3px 9px;border-radius:20px;white-space:nowrap}

/* composer page */
.comp-head{border-bottom:1px solid var(--rule);padding-bottom:20px;margin-bottom:22px}
.comp-head h1{font-size:2.1rem;margin:.1em 0 .12em}
.comp-head .sub{color:var(--ink-faint);font-size:1rem}
.comp-head .bio{margin:13px 0 0;max-width:680px;color:var(--ink-soft);
  font-family:var(--serif);font-size:1.02rem;line-height:1.62}
.comp-head .badges{margin-top:13px;display:flex;gap:7px;flex-wrap:wrap}
.section-block{margin:26px 0}
.section-block>h2{font-size:1.16rem;margin:0 0 4px}
.section-block .sec-note{font-size:.88rem;color:var(--ink-faint);margin:0 0 8px;max-width:640px}
.listing-page h1{font-size:2rem}
.res-count{color:var(--ink-faint);font-size:.92rem;margin:2px 0 18px}

/* item rows */
.work-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule-soft)}
.work-list li{border-bottom:1px solid var(--rule-soft)}
.work-row{display:flex;gap:14px;align-items:baseline;padding:12px 6px;
  text-decoration:none;color:inherit}
.work-row:hover{background:var(--rule-soft)}
.work-row .tt{font-family:var(--serif);font-size:1.07rem;flex:1;min-width:0}
.work-row .rt{display:flex;gap:7px;align-items:baseline;flex:none}
.cat-tag{font-size:.78rem;color:var(--ink-faint);white-space:nowrap}
.note-count{font-size:.74rem;background:var(--tag);color:var(--tag-ink);
  padding:2px 8px;border-radius:20px;font-weight:600;white-space:nowrap}

/* item page */
.work-head{border-bottom:2px solid var(--accent);padding-bottom:16px;margin-bottom:6px}
.work-head h1{font-size:1.95rem;margin:.06em 0 .12em}
.work-head .by{font-size:1rem;color:var(--ink-soft)}
.work-head .by a{font-weight:600}
.work-head .yrs{color:var(--ink-faint)}
.work-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:13px}
.work-meta .chip{font-size:.8rem;padding:4px 11px}
.type-pill{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.6px;
  padding:3px 9px;border-radius:5px;background:var(--accent);color:#fff;white-space:nowrap}
.type-pill.essay{background:#3a5a78}
.type-pill.source{background:#6a5a3a}
html[data-theme="dark"] .type-pill.essay{background:#9bc0e0;color:#10202c}
html[data-theme="dark"] .type-pill.source{background:#d8c08a;color:#241e0e}
.info-box{background:var(--tag);border-radius:10px;padding:13px 17px;margin:18px 0 4px;
  font-size:.92rem;color:var(--tag-ink);line-height:1.6}
.vintro{color:var(--ink-faint);font-size:.92rem;margin:20px 0 0}
.versions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:10px 0 6px}
.versions .vlabel{font-size:.8rem;text-transform:uppercase;letter-spacing:.8px;
  color:var(--ink-faint);font-weight:700;margin-right:3px}
.vbtn{background:var(--raised);border:1px solid var(--rule);color:var(--ink-soft);
  padding:6px 13px;border-radius:20px;font-size:.86rem;font-weight:600}
.vbtn:hover{border-color:var(--accent)}
.vbtn[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}

.note-stack{margin-top:16px}
.note-card{background:var(--raised);border:1px solid var(--rule);border-radius:12px;
  box-shadow:var(--shadow);overflow:hidden}
.note-card[hidden]{display:none}
.note-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;
  padding:11px 16px;border-bottom:1px solid var(--rule-soft);background:var(--rule-soft)}
.note-bar .nb-label{font-size:.84rem;font-weight:700;color:var(--ink-soft);flex:1}
.note-bar button{background:var(--raised);border:1px solid var(--rule);color:var(--ink-soft);
  padding:5px 11px;border-radius:7px;font-size:.82rem}
.note-bar button:hover{border-color:var(--accent);color:var(--accent-ink)}
.note-body{padding:24px 28px 28px;font-family:var(--serif);font-size:1.085rem;line-height:1.72}
.note-body .prose{max-width:none}
.note-body p{margin:0 0 1.05em}
.note-body p:first-child{margin-top:0}
.note-prov{font-size:.78rem;color:var(--ink-faint);padding:0 16px 13px;
  font-style:italic;margin:0}
.note-body .movements{margin:0 0 1.4em;padding-bottom:.5em;
  border-bottom:1px solid var(--rule-soft)}
.note-body .mv-cap{font-family:var(--sans);font-size:.68rem;font-weight:700;
  text-transform:uppercase;letter-spacing:1.2px;color:var(--ink-faint);
  margin:0 0 .35em}
.note-body .movements p{margin:.12em 0;color:var(--ink-soft);font-size:1rem}

/* search */
.search-page h1{font-size:1.55rem}
.res-list{list-style:none;margin:0;padding:0}
.res{border-bottom:1px solid var(--rule-soft);padding:14px 4px}
.res .rtop{display:flex;gap:9px;align-items:baseline;flex-wrap:wrap}
.res a.rtt{font-family:var(--serif);font-size:1.12rem;font-weight:700;text-decoration:none}
.res a.rtt:hover{text-decoration:underline}
.res .rby{font-size:.86rem;color:var(--ink-soft);margin:1px 0 5px}
.res .snip{font-family:var(--serif);color:var(--ink-soft);font-size:.97rem;line-height:1.6}
.empty{padding:40px 10px;text-align:center;color:var(--ink-faint)}
.pager{display:flex;gap:12px;align-items:center;justify-content:center;margin:26px 0 6px}
.pg-btn{background:var(--raised);border:1px solid var(--rule);color:var(--ink-soft);
  padding:7px 15px;border-radius:8px;font-size:.9rem;font-weight:600}
.pg-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent-ink)}
.pg-btn:disabled{opacity:.4;cursor:default}
.pg-info{font-size:.88rem;color:var(--ink-faint)}

/* prose pages */
.prose-page{font-family:var(--serif);font-size:1.06rem;line-height:1.7;
  max-width:680px;margin-left:auto;margin-right:auto}
.prose-page h1{font-size:2rem;margin-bottom:.1em}
.prose-page h2{font-size:1.25rem;margin:1.5em 0 .4em}
.prose-page p{margin:0 0 1.05em}
.prose-page .note-box{background:var(--tag);border-radius:10px;padding:14px 18px;
  font-family:var(--sans);font-size:.93rem;color:var(--tag-ink);line-height:1.6}
.gl-portrait{float:right;width:240px;margin:4px 0 14px 24px}
.gl-portrait img{width:100%;height:auto;border-radius:8px;border:1px solid var(--rule);display:block}
.gl-portrait figcaption{font-size:.8rem;color:var(--ink-faint);margin-top:7px;
  text-align:center;font-family:var(--sans)}
@media (max-width:620px){.gl-portrait{float:none;width:200px;margin:0 auto 16px}}

/* footer */
.site-foot{border-top:1px solid var(--rule);margin-top:40px}
.foot-support{max-width:680px;margin:24px auto 4px;padding:22px 26px;text-align:center;
  background:var(--tag);border-radius:12px}
.fs-title{font-family:var(--serif);font-size:1.2rem;color:var(--ink);margin:0 0 .3em}
.fs-text{font-family:var(--serif);font-size:1rem;line-height:1.6;color:var(--tag-ink);
  margin:0 auto 16px;max-width:54ch}
.site-foot .fs-btn{display:inline-block;background:var(--accent);color:#fff;text-decoration:none;
  font-family:var(--serif);font-weight:600;font-size:1rem;letter-spacing:.2px;
  padding:11px 26px;border-radius:8px;box-shadow:var(--shadow);
  transition:transform .15s ease,box-shadow .15s ease}
.site-foot .fs-btn:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(40,30,20,.16);
  text-decoration:none}
html[data-theme="dark"] .site-foot .fs-btn{color:#2b1418}
@media(prefers-color-scheme:dark){html[data-theme="auto"] .site-foot .fs-btn{color:#2b1418}}
.foot-row{max-width:1080px;margin:0 auto;padding:22px;color:var(--ink-faint);
  font-size:.84rem;display:flex;gap:16px;justify-content:space-between;flex-wrap:wrap}
.site-foot a{color:var(--ink-soft)}

/* homepage A–Z composer browse */
.browse{margin-top:6px}
.cfilter{position:relative;max-width:430px;margin:0 0 4px}
.cfilter .ico{position:absolute;left:12px;top:50%;transform:translateY(-50%);
  color:var(--ink-faint);pointer-events:none}
.cfilter input{width:100%;font-size:.97rem;padding:9px 13px 9px 36px;
  border:1px solid var(--rule);background:var(--raised);color:var(--ink);border-radius:8px}
.cfilter input:focus{border-color:var(--accent)}
.cfilter-empty{color:var(--ink-faint);font-size:.96rem;padding:22px 2px}
.az-g{margin:0}
.az-l{font-family:var(--sans);font-size:.9rem;font-weight:700;letter-spacing:.5px;
  color:var(--accent-ink);margin:22px 0 0;padding:0 8px 5px;
  border-bottom:1px solid var(--rule)}
.cc{display:flex;gap:14px;align-items:baseline;padding:11px 8px;
  text-decoration:none;color:inherit;border-bottom:1px solid var(--rule-soft)}
.cc:hover{background:var(--rule-soft)}
.cc[hidden]{display:none}
.cc-nm{font-family:var(--serif);font-size:1.1rem;font-weight:700;flex:1;min-width:0}
.cc-rt{display:flex;gap:10px;align-items:baseline;flex:none;flex-wrap:wrap;
  justify-content:flex-end}
.cc-dt{color:var(--ink-faint);font-size:.85rem;white-space:nowrap}
.cc-c{color:var(--ink-soft);font-size:.82rem;white-space:nowrap}
.corrupt-note{color:var(--ink-faint)}

/* sticky A–Z jump bar (built by app.js) */
.az-bar{position:sticky;top:56px;z-index:15;display:flex;gap:2px;
  background:var(--paper);border-bottom:1px solid var(--rule);
  margin:0 0 4px;padding:5px 0}
.az-bar-l{flex:1 1 0;min-width:0;text-align:center;text-decoration:none;
  font-family:var(--sans);font-size:.78rem;font-weight:600;
  color:var(--ink-faint);padding:6px 0;border-radius:5px}
.az-bar-l:hover{background:var(--rule-soft);color:var(--ink)}
.az-bar-l.on{background:var(--accent);color:#fff}
@media (max-width:620px){
  .az-bar{gap:0}
  .az-bar-l{font-size:.7rem;padding:8px 0}
}

/* search — composer matches shown above the works */
.res-sec{font-size:.82rem;text-transform:uppercase;letter-spacing:1.2px;
  color:var(--ink-faint);font-family:var(--sans);font-weight:700;margin:0 0 6px}
.res-composers{margin:0 0 24px;padding-bottom:4px;border-bottom:1px solid var(--rule)}
.comp-hit{display:block;font-family:var(--serif);font-size:1.12rem;font-weight:700;
  text-decoration:none;padding:9px 6px;border-bottom:1px solid var(--rule-soft)}
.comp-hit:hover{background:var(--rule-soft)}
.comp-hit .ch-sub{font-family:var(--sans);font-weight:400;font-size:.83rem;
  color:var(--ink-faint);margin-left:9px}

@media print{
  .site-head,.site-foot,.versions,.vintro,.note-bar,.crumb,.theme-btn{display:none!important}
  body{background:#fff;font-size:12pt}
  .note-card{border:none;box-shadow:none}
  .note-body{padding:0}
  .note-card[hidden]{display:block!important}
  a{color:#000;text-decoration:none}
}
@media (max-width:620px){
  .hero h1{font-size:1.85rem}
  .head-row{padding:9px 14px;gap:10px}
  main{padding:22px 15px 60px}
  .brand small{display:none}
  .note-body{padding:18px 17px 22px}
  .cc{flex-wrap:wrap;gap:3px 12px}
  .cc-rt{justify-content:flex-start}
}
