/* Sources (sources/): a library catalogue.
   Letter "drawers" with guide-card tabs; each source a catalogue card with its citation count in the left
   column (a numeral and a bar against the most-cited source). Desktop: sticky rail with search, era, kind,
   order and an A–Z grid. Phones: tools on top, A–Z as a sticky strip that scrolls sideways. */

.t-sources{--lib-rail:16.5rem}
.lib{padding-block:28px 8px}
@media (min-width:1000px){.lib{display:grid;grid-template-columns:var(--lib-rail) minmax(0,1fr);gap:56px;align-items:start}}

/* ---------- rail */
.lib-rail{min-width:0}
@media (min-width:1000px){.lib-rail{position:sticky;top:calc(var(--head-h) + 20px);max-height:calc(100vh - var(--head-h) - 40px);overflow:auto;scrollbar-width:thin;padding:2px 6px 16px 2px;margin:-2px -6px 0 -2px}}
@media (max-width:999px){.lib{display:flex;flex-direction:column}.lib-rail{display:contents}.lib-tools + .lib-az{order:2}.lib-az + .lib-tools{order:1}.lib-list{order:3}}
.no-js .lib-tools{display:none}
.lib-q{display:block}
.lib-q .search{width:100%}
.lib-count{margin:10px 0 6px;font:400 var(--t-body)/1.3 var(--display);font-variant-numeric:lining-nums;color:var(--dim)}
.lib-f{border-top:1px solid var(--line)}
.lib-ft{display:none}
@media (max-width:999px){.js .tg[aria-expanded="false"] + .tg-p{display:none}}
.tg{align-items:center;gap:10px;width:100%;min-height:48px;padding:0;border:0;background:none;color:var(--ink);font:700 var(--t-sm) var(--body);cursor:pointer;text-align:left}
.tg::after{content:"";width:8px;height:8px;margin-left:auto;margin-right:6px;border-right:2px solid var(--dim);border-bottom:2px solid var(--dim);transform:rotate(45deg);transition:transform var(--d-2) var(--ease-out)}
.tg[aria-expanded="true"]::after{transform:rotate(-135deg)}
@media (max-width:999px){.js .lib-ft{display:flex}.lib-f{border-bottom:1px solid var(--line)}}
.rf{border:0;margin:0 0 14px;padding:0;min-width:0}
.rf legend{font:400 1.0625rem/1.3 var(--display);padding:10px 0 6px;color:var(--ink)}
.rf label{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;min-height:32px;padding:4px 10px;margin:0 -10px;border-radius:8px;font-size:var(--t-sm);color:var(--dim);cursor:pointer;line-height:1.3}
@media (pointer:coarse){.rf label{min-height:44px}}
.rf label:hover{color:var(--ink);background:var(--bg3)}
.rf input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.rf label:has(input:checked){color:var(--ink);background:var(--bg3);box-shadow:inset 3px 0 0 var(--blue)}
.rf label:has(input:focus-visible){outline:3px solid var(--blue);outline-offset:1px}
.rf .c{font:400 var(--t-sm) var(--display);font-variant-numeric:lining-nums tabular-nums}
.rf-sort label{grid-template-columns:1fr}
.lib-reset,.lib-empty button{min-height:44px;padding:0 16px;border:1px solid var(--line-strong);border-radius:999px;background:none;color:var(--ink);font:700 var(--t-sm) var(--body);cursor:pointer}
.lib-reset:hover,.lib-empty button:hover{border-color:var(--blue)}

/* A–Z: a grid in the rail, a sticky strip on phones */
.lib-az{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.az-l{display:grid;place-items:center;min-height:36px;border-radius:8px;font:400 1.0625rem/1 var(--display);color:var(--ink);text-decoration:none}
.az-l[href]:hover{background:var(--bg3);color:var(--blue)}
.az-l.off{color:var(--dim);opacity:.45}
.az-l[aria-current="true"]{background:var(--ink);color:var(--bg)}
.az-l[aria-disabled="true"]{opacity:.35;pointer-events:none}
.az-l:nth-last-child(1){grid-column:span 2}
@media (max-width:999px){
  .lib-az{position:sticky;top:var(--head-h);z-index:6;display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;margin:14px -16px 0;padding:4px 16px;border-top:0;border-bottom:1px solid var(--line);
    background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:top var(--d-2) var(--ease-out)}
  .head-hidden .lib-az{top:env(safe-area-inset-top,0px)}
  .lib-az::-webkit-scrollbar{display:none}
  .az-l{flex:none;min-width:40px;min-height:44px}
  .az-l.off{display:none}
  .rf{columns:1}
}
.no-js .lib-az{position:static;border-top:0;margin-top:0;padding-top:0}

/* ---------- list */
.lib-list{min-width:0}
.lib-note{margin:0 0 8px;max-width:68ch;color:var(--dim);font-size:var(--t-sm)}
.drawer{padding-top:28px;scroll-margin-top:calc(var(--head-h) + 8px);content-visibility:auto;contain-intrinsic-size:auto 1600px}
@media (max-width:999px){.drawer{scroll-margin-top:calc(var(--head-h) + 56px)}}
/* guide card: a tab that stands up above the cards behind it */
.guide{display:flex;align-items:flex-end;gap:12px;margin:0;border-bottom:1px solid var(--line-strong)}
.guide span{display:inline-grid;place-items:center;min-width:3.25rem;padding:6px 14px 2px;border:1px solid var(--line-strong);border-bottom:0;border-radius:10px 10px 0 0;background:var(--bg2);
  font:400 2.25rem/1 var(--display);margin-bottom:-1px;box-shadow:0 1px 0 var(--bg2)}
.guide small{font:400 var(--t-sm)/1 var(--display);font-variant-numeric:lining-nums;color:var(--dim);padding-bottom:9px}
.lib-flat .guide span{font-size:1.5rem;padding-top:10px}

.lcs{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr)}
@media (min-width:1240px){.lcs{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:32px}}
.lc{display:grid;grid-template-columns:3.5rem minmax(0,1fr);gap:0 14px;padding:12px 0;border-bottom:1px solid var(--line)}
.lc[hidden]{display:none}
.lc-n{display:flex;flex-direction:column;align-items:flex-end;gap:6px;padding:2px 14px 0 0;border-right:1px solid var(--line-strong);align-self:stretch}
.lc-n b{font:400 1.625rem/1 var(--display);font-variant-numeric:lining-nums tabular-nums}
.lc-n i{display:block;height:3px;width:100%;background:linear-gradient(90deg,var(--blue) var(--w),var(--line) var(--w));border-radius:2px}
.lc-n.zero b{color:var(--dim)}
.lc-b{min-width:0}
.lc-t{display:inline-block;padding-block:2px;font:400 1.125rem/1.3 var(--display);color:var(--ink);text-decoration-color:var(--line-strong);overflow-wrap:anywhere}
.lc-t:hover{color:var(--blue);text-decoration-color:currentColor}
.lc-t:visited{color:color-mix(in srgb,var(--ink) 80%,var(--blue))}
.lc-m{margin:4px 0 0;display:flex;flex-wrap:wrap;gap:0 12px;font-size:var(--t-xs);line-height:1.5;color:var(--dim)}
.lc-host{font-weight:700;color:var(--ink);overflow-wrap:anywhere}
.lc-x{margin:2px 0 0;font-size:var(--t-xs);line-height:1.5;color:var(--dim)}
.lc-x span{color:var(--dim)}
.lc-x a{color:var(--ink);text-decoration-color:var(--line-strong);padding-block:3px}
.lc-x a:hover{color:var(--blue)}
.lib-empty{padding:32px 0;color:var(--dim);display:flex;flex-wrap:wrap;gap:12px;align-items:center}

/* ---------- print: the whole catalogue, plain */
@media print{
  .lib{display:block}
  .lib-rail,.lib-flat{display:none!important}
  .drawer{content-visibility:visible}
  .lc{break-inside:avoid;grid-template-columns:2.5rem 1fr}
  .lcs{grid-template-columns:1fr}
  .lc-x{display:none}
}
