.jh-library{box-sizing:content-box;max-width:1040px;margin:0 auto;padding:8px 16px 64px}.jh-library__intro{color:var(--ink-2);max-width:40em;margin:0 0 20px}.jh-library__stats{flex-wrap:wrap;gap:8px 32px;margin:0 0 28px;padding:0;display:flex}.jh-library__stats div{flex-direction:column-reverse;margin:0;display:flex}.jh-library__stats dt{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0;font-size:.72rem;font-weight:600}.jh-library__stats dd{font-family:var(--serif);font-variant-numeric:lining-nums tabular-nums;margin:0;font-size:2rem;font-weight:600;line-height:1.1}.jh-library__controls{background:var(--card);box-shadow:var(--ring), var(--shadow-sm);border-radius:14px;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 8px;padding:16px;display:grid}.jh-library__field{flex-direction:column;gap:4px;min-width:0;margin:0;display:flex}.jh-library__field>span{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.72rem;font-weight:600}.jh-library__field--search,.jh-library__field--rating{grid-column:1/-1}.jh-library__controls input,.jh-library__controls select{box-sizing:border-box;border:1px solid var(--line);background:var(--page);width:100%;min-width:0;max-width:100%;color:var(--ink);border-radius:9px;margin:0;padding:9px 12px;font-size:16px;line-height:1.3}.jh-library__controls select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);background-position:calc(100% - 17px) 55%,calc(100% - 12px) 55%;background-repeat:no-repeat;background-size:5px 5px;padding-right:32px}.jh-library__controls input:focus-visible,.jh-library__controls select:focus-visible{outline:3px solid var(--red);outline-offset:1px}@media (width>=760px){.jh-library__controls{z-index:5;grid-template-columns:2fr 1fr 1fr 1fr;align-items:end;position:sticky;top:8px}.jh-library__field--search,.jh-library__field--rating{grid-column:auto}}.jh-library__status{color:var(--muted);min-height:1.4em;margin:0 0 8px;font-size:.85rem}.jh-library__empty{text-align:center;color:var(--muted);padding:40px 0}.jh-library__group+.jh-library__group{margin-top:12px}.jh-library__year{border-bottom:1px solid var(--line);align-items:baseline;gap:12px;margin:20px 0 4px;padding-bottom:8px;font-size:1.6rem;display:flex}.jh-library__year span{font-family:var(--sans);color:var(--muted);font-size:.8rem;font-weight:400}.jh-library__group[data-group=all] .jh-library__year{display:none}.jh-library__books{grid-template-columns:1fr;column-gap:32px;margin:0;padding:0;list-style:none;display:grid}@media (width>=860px){.jh-library__books{grid-template-columns:1fr 1fr}}.jh-book{border-bottom:1px solid var(--line);grid-template-columns:56px 1fr;align-items:start;gap:14px;margin:0;padding:14px 0;display:grid}.jh-book[hidden]{display:none}.jh-book__cover{aspect-ratio:2/3;background:var(--warm);border-radius:3px;place-items:center;width:56px;display:grid;overflow:hidden;box-shadow:0 0 0 1px #16141314,0 2px 6px -2px #16141340}.jh-book__cover img{object-fit:cover;width:100%;height:100%;display:block}.jh-book__cover span{font-family:var(--serif);color:var(--muted);font-size:1.4rem}.jh-book__body{min-width:0}.jh-book__title{overflow-wrap:anywhere;margin:0;font-size:1.02rem;line-height:1.3}.jh-book__sub{font-family:var(--sans);color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:2px;font-size:.8rem;font-weight:400;line-height:1.35;display:-webkit-box;overflow:hidden}.jh-book__author{color:var(--ink-2);margin:3px 0 0;font-size:.88rem}.jh-book__meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 12px;margin:6px 0 0;font-size:.78rem;display:flex}.jh-book__meta time{font-variant-numeric:tabular-nums}.jh-stars{gap:1px;line-height:1;display:inline-flex}.jh-stars i{background:var(--line);width:14px;height:14px;-webkit-mask:var(--star) center / contain no-repeat;-webkit-mask:var(--star) center / contain no-repeat;mask:var(--star) center / contain no-repeat;--star:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2.5l2.9 6.1 6.6.8-4.9 4.6 1.3 6.6L12 17.3l-5.9 3.3 1.3-6.6-4.9-4.6 6.6-.8z'/%3E%3C/svg%3E");display:block}.jh-stars i.full{background:var(--red)}.jh-stars i.half{background:linear-gradient(90deg, var(--red) 50%, var(--line) 50%)}.jh-stars--none{font-style:italic}
