/* Public catalogue components. Keep management grids and the reader independent. */
.library-explore-page{grid-template-columns:minmax(0,1fr)}
.library-score-grid{--gallery-columns:2;--gallery-gap:12px;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,max(8.25rem,calc((100% - (var(--gallery-columns) - 1)*var(--gallery-gap))/var(--gallery-columns)))),1fr));gap:var(--gallery-gap);align-items:stretch}
.library-score-grid>*,.library-score-card{min-width:0}
.library-score-grid>div:not(.library-card){display:flex;flex-direction:column;gap:12px}
.library-score-grid>div>.library-card{flex:1;height:auto}
.library-score-grid>.library-explore-invite{grid-column:1/-1}
.library-score-card.library-card{display:flex;flex-direction:column;height:100%;border-radius:12px;box-shadow:none;transition:border-color .15s,box-shadow .15s}
.library-score-card:hover{border-color:var(--lib-muted);box-shadow:0 5px 18px #101d3510}
.library-score-card .library-card-cover{aspect-ratio:3/4;width:100%;height:auto;min-height:0;padding:12px;background:#edf0f4;border-bottom:1px solid var(--lib-line);display:grid;place-items:center;isolation:isolate}
[data-theme=dark] .library-score-card .library-card-cover{background:#243248}
.library-score-card .library-card-cover img{position:absolute;inset:12px;width:calc(100% - 24px);height:calc(100% - 24px);object-fit:contain;background:white;box-shadow:0 2px 8px #0c1a3520;z-index:1}
.library-cover-placeholder{display:flex;flex-direction:column;align-items:center;gap:12px;color:#59697e;font-size:.8rem;text-align:center}
[data-theme=dark] .library-cover-placeholder{color:#c1ccdc}
.library-score-card .library-card-body{padding:12px;display:flex;flex-direction:column;flex:1;min-width:0}
.library-card-notation{font-size:.6875rem;line-height:1.4;font-weight:700;color:var(--lib-muted);margin:0 0 7px}
.library-score-card h2{font-size:1rem;line-height:1.4;margin:0 0 5px;letter-spacing:-.015em;overflow-wrap:anywhere}
.library-score-card h2 a,.library-score-card .library-composer{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.library-score-card h2 a:focus-visible,.library-score-card .library-composer:focus-visible{display:block;overflow:visible}
.library-score-card .library-composer{font-size:.8125rem;line-height:1.45;text-decoration:none;overflow-wrap:anywhere}
.library-score-card .library-composer:hover{text-decoration:underline}
.library-score-card .library-card-meta{margin:7px 0 0;font-size:.75rem;line-height:1.5;color:var(--lib-muted);overflow-wrap:anywhere}
.library-card-access{display:flex;flex-direction:column;gap:4px;margin:12px 0 0;font-size:.75rem;line-height:1.5;overflow-wrap:anywhere}
.library-card-price{font-weight:750;color:var(--lib-ink)}
.library-card-subscription{color:var(--lib-muted)}
.library-score-card .library-card-actions{padding-top:12px;gap:4px;flex-wrap:wrap;margin-top:auto;align-items:center}
.library-score-card .library-card-actions .button{min-height:44px;padding:8px 6px;font-size:.8125rem;gap:4px;box-shadow:none;transform:none}
.library-score-card .library-listen-action{flex:1;border-color:var(--lib-line);background:var(--lib-tint);color:var(--lib-ink)}
.library-score-card .library-card-actions .library-share-action{margin-left:auto;flex:0 0 44px}
.library-score-card .library-card-actions .library-icon-action{width:44px;min-width:44px;border:0;background:transparent;color:var(--lib-muted)}
.library-score-card .library-icon-action>span{display:none}
.library-score-card .library-icon-action:hover{background:var(--lib-tint);color:var(--lib-ink)}
.library-score-card noscript summary{font-size:.75rem;overflow-wrap:anywhere}
.library-score-card:has(noscript details) .library-share-action{max-width:100%}
.library-score-grid .library-actions{gap:10px;font-size:.875rem;overflow-wrap:anywhere}

.library-explore-shell{padding-top:16px}
.library-explore-shell .library-nav{gap:10px;padding-bottom:14px;align-items:center}
.library-explore-shell .library-wordmark{font-size:1rem}
.library-explore-shell .library-nav>div{gap:4px 16px;font-size:.8125rem;align-items:center}
.library-explore-shell .library-nav a{display:inline-flex;align-items:center;min-height:36px}
.library-explore-heading{padding:26px 0 20px}
.library-explore-heading h1{font-size:clamp(1.65rem,3vw,2.6rem);line-height:1.15;letter-spacing:-.04em;margin:0 0 10px;max-width:36ch;overflow-wrap:anywhere}
.library-explore-heading p{margin:0;color:var(--lib-muted);font-size:.9375rem;line-height:1.5}
.library-explore-search.library-search{padding:0;margin:0;max-width:none;background:none;border:0;border-radius:0;position:relative;z-index:3}
.library-explore-search .library-search-row{flex-direction:row;align-items:center;gap:8px;border:1px solid var(--control-border,var(--lib-muted));padding:6px;border-radius:13px;background:var(--lib-paper)}
.library-explore-search .library-search-row>svg{margin-left:10px;flex-shrink:0;color:var(--lib-muted)}
.library-explore-search .library-search-row:focus-within{border-color:#2557d6;box-shadow:0 0 0 2px #2557d61a}
.library-explore-search .library-search-row input{border:0;background:transparent;padding:10px 2px;min-height:44px;font-size:1rem}
.library-explore-search input::placeholder,.library-filter-fields input::placeholder{color:var(--lib-muted);opacity:1;font-weight:400}
.library-explore-search .button{min-height:44px;padding:10px 18px;border-radius:9px;box-shadow:none;transform:none}
.library-explore-search .library-suggestions{position:absolute;top:100%;left:0;right:0;max-height:min(26rem,55dvh);overflow:auto;box-shadow:0 12px 30px #101d3526;margin-top:6px}
.library-explore-tabs{display:flex;gap:24px;border-bottom:1px solid var(--lib-line);margin-top:14px}
.library-filter-control{display:inline-flex;margin:0;max-width:100%}
.library-filter-control button{font:inherit;cursor:pointer;background:var(--lib-paper);color:inherit}
.library-filter-control button:focus-visible{outline:3px solid var(--lib-ink);outline-offset:3px}
.library-explore-tabs :is(a,button){display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:10px 2px;color:var(--lib-muted);font-size:.875rem;font-weight:650;border:0;border-bottom:3px solid transparent;text-decoration:none;text-align:center;background:none}
.library-explore-tabs :is(a[aria-current],button[aria-pressed=true]){border-color:#2557d6;color:var(--lib-ink)}
[data-theme=dark] .library-explore-tabs :is(a[aria-current],button[aria-pressed=true]){border-color:#91b8ff}
.library-explore-toolbar{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap;padding-top:18px}
.library-result-count{font-size:.875rem;line-height:1.5!important;margin:0;color:var(--lib-muted)}
.library-result-count strong{color:var(--lib-ink);font-weight:700}
.library-result-count [data-library-order]{font-size:inherit}
.library-explore-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.library-explore-controls .button{min-height:44px;padding:8px 12px;border-color:var(--lib-line);background:var(--lib-paper);color:var(--lib-ink);box-shadow:none;font-size:.875rem;gap:7px;transform:none}
.library-explore-controls label{margin:0}
.library-explore-controls select{min-height:44px;padding:8px 28px 8px 12px;font-size:.875rem;max-width:100%}
.library-explore-controls .button,.library-explore-controls select{border-color:var(--control-border,var(--lib-muted))}
.library-filter-count{border-radius:50%;background:var(--lib-tint);min-width:22px;padding:2px;font-size:.75rem;text-align:center}
.library-discovery-chips{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 0}
.library-discovery-chips :is(a,button){display:inline-flex;align-items:center;min-height:44px;border:1px solid var(--lib-line);border-radius:24px;padding:8px 13px;font-size:.8125rem;text-decoration:none;color:var(--lib-muted);gap:5px}
.library-discovery-chips :is(a:hover,a[aria-current],button:hover,button[aria-pressed=true]){background:var(--lib-tint);color:var(--lib-ink);border-color:var(--lib-muted)}
.library-active-filters.library-filter-chips{margin:10px 0 0;gap:6px;align-items:center}
.library-active-filters :is(a,button){font-size:.8125rem;max-width:100%;overflow-wrap:anywhere;padding:8px 12px}
.library-active-filters button{display:flex;align-items:center;gap:12px;min-height:44px;border:1px solid var(--lib-line);border-radius:30px;background:var(--lib-paper)}
.library-active-filters a:last-child{border:0;background:none;text-decoration:underline;padding:8px}
.library-explore-status{font-size:.875rem;color:var(--lib-muted);margin:0;min-height:20px;line-height:20px!important}
.library-explore-error.library-alert{padding:18px;margin:12px 0}
.library-explore-error p{margin-top:0}
.library-explore-error a{text-decoration:underline;cursor:pointer}
.library-explore-invite{display:flex;gap:20px;align-items:center;justify-content:space-between;border:1px solid var(--lib-line);background:var(--lib-tint);border-radius:13px;padding:22px;margin:8px 0}
.library-explore-invite h2{font-size:1.15rem;margin:0 0 6px}
.library-explore-invite p{font-size:.875rem;color:var(--lib-muted);margin:0;max-width:58ch;line-height:1.55}
.library-explore-invite .button{white-space:normal;min-height:44px;font-size:.875rem;box-shadow:none;border:1px solid var(--lib-line);background:var(--lib-paper);color:var(--lib-ink);flex-shrink:0;transform:none}
.library-explore-recent{margin:20px 0 0}
.library-explore-recent .library-results-heading{margin:0 0 10px}
.library-explore-recent h2{font-size:1rem;margin:0}
.library-explore-recent .library-results-heading>a{font-size:.8125rem}
.library-explore-recent>div:last-child{gap:10px}
.library-explore-recent>div:last-child>a{padding:12px;font-size:.8125rem;border-radius:10px;min-width:0}
.library-explore-recent strong{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.library-explore-recent span{font-size:.75rem}

/* The same filter fields work inline without script and in a native modal with it. */
.library-explore-filters{margin:12px 0}
.library-filter-dialog{padding:0;max-width:620px;width:calc(100% - 32px);max-height:calc(100dvh - 48px);border:1px solid var(--lib-line);border-radius:18px;background:var(--lib-paper);color:var(--lib-ink);overflow:hidden;box-shadow:0 20px 70px #0004}
.library-filter-dialog::backdrop{background:#08132680}
.library-filter-dialog .library-filter-panel{display:flex;flex-direction:column;max-height:calc(100dvh - 50px)}
.library-filter-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:22px 24px 16px;flex-shrink:0}
.library-filter-heading h2{margin:0;font-size:1.3rem}
.library-filter-heading p{margin:5px 0 0;font-size:.875rem;color:var(--lib-muted)}
.library-filter-heading .button{min-height:44px;min-width:44px;padding:6px;font-size:1.5rem;flex-shrink:0;box-shadow:none;background:var(--lib-paper);color:var(--lib-ink);border-color:var(--lib-line)}
.library-filter-fields{padding:0 24px 12px;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.library-filter-fields fieldset{border:0;padding:16px 0;margin:0;min-width:0;border-top:1px solid var(--lib-line)}
.library-filter-fields legend{font-size:.875rem;font-weight:750;padding:0 8px 0 0}
.library-filter-fields .library-filter-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,max(9rem,calc((100% - 12px)/2))),1fr));gap:12px;padding-top:0}
.library-filter-fields label{font-size:.8125rem;margin:0;min-width:0;gap:6px}
.library-filter-fields input,.library-filter-fields select{font-size:1rem;font-weight:400;min-width:0;border-color:var(--control-border,var(--lib-muted))}
.library-filter-fields .library-checkbox{margin-top:16px}
.library-filter-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;flex-shrink:0;padding:16px 24px;border-top:1px solid var(--lib-line);background:var(--lib-paper)}
.library-filter-footer .button{min-height:46px;padding:10px 24px;box-shadow:none;transform:none}
.library-filter-footer .library-text-button{min-height:44px;text-align:left;padding:8px 0}
.library-filter-dialog-open{overflow:hidden}

.library-pagination{margin-top:28px}
.library-pager .library-pager-row{display:flex;gap:12px;align-items:center;justify-content:center;margin:0;flex-wrap:wrap}
.library-pager .library-page-step{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:8px 12px;border:1px solid var(--lib-line);border-radius:9px;text-decoration:none;font-size:.875rem}
.library-page-step[aria-disabled]{color:var(--lib-muted);opacity:.6}
.library-pager .library-page-numbers{display:flex;align-items:center;gap:4px;list-style:none;padding:0;margin:0}
.library-pager .library-page-numbers a,.library-pager .library-page-numbers span{display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:8px;border-radius:8px;text-decoration:none;font-size:.875rem}
.library-pager .library-page-numbers [aria-current]{background:#2557d6;color:#fff}
.library-pager a:hover{background:var(--lib-tint)}
.library-pager .library-page-position{display:none;font-size:.8125rem;color:var(--lib-muted);text-align:center}
.library-page-jump{margin:10px auto 0;text-align:center}
.library-page-jump summary{font-size:.8125rem;font-weight:500;min-height:44px}
.library-page-jump form{display:flex;align-items:end;justify-content:center;gap:10px;padding:8px}
.library-page-jump label{margin:0;font-size:.8125rem;text-align:left;max-width:9rem}
.library-page-jump .button{min-height:46px;box-shadow:none}
@media(min-width:640px){.library-score-grid{--gallery-columns:3;--gallery-gap:18px}.library-score-card .library-card-cover{aspect-ratio:4/5}.library-score-card .library-card-body{padding:16px}.library-score-card .library-card-actions{gap:8px}}
@media(min-width:960px){.library-score-grid{--gallery-columns:4;--gallery-gap:20px}.library-score-card .library-card-cover{padding:18px}.library-score-card .library-card-cover img{inset:18px;width:calc(100% - 36px);height:calc(100% - 36px)}}
@media(max-width:639px){
 .library-explore-page .marketing-header{height:auto;min-height:var(--header-height);padding:8px 0}.library-explore-page .header-inner{flex-wrap:wrap;min-width:0}.library-explore-page .header-actions{flex-wrap:wrap}.library-explore-page .nav-toggle{flex-shrink:0}
 .library-explore-shell{padding:10px 16px 40px}.library-explore-heading{padding:20px 0 16px}.library-explore-heading p{font-size:.875rem}
 .library-explore-shell .library-nav .library-wordmark{display:none}.library-explore-shell .library-nav>div{justify-content:space-between;width:100%;gap:0 12px}.library-explore-shell .library-nav{padding-bottom:8px}
 .library-explore-search .library-search-row{gap:6px;padding:5px}.library-explore-search .library-search-row>svg{display:none}.library-explore-search .library-search-row input{padding-left:8px}.library-explore-search .button{padding:8px 12px;font-size:.875rem}
 .library-explore-tabs{gap:0;justify-content:space-between;margin-top:10px}.library-explore-tabs :is(a,button){font-size:.8125rem;padding:8px 2px}
 .library-explore-toolbar{padding-top:14px}.library-result-count{flex-basis:100%;font-size:.8125rem}.library-explore-controls{width:100%;justify-content:space-between}
 .library-discovery-chips{margin-top:8px;gap:6px}.library-discovery-chips :is(a,button){padding:8px 11px;font-size:.75rem}
 .library-score-card h2{font-size:.9375rem}.library-score-card .library-card-body{padding:10px}.library-score-card .library-card-cover img{inset:10px;width:calc(100% - 20px);height:calc(100% - 20px)}
 .library-explore-invite{align-items:flex-start;flex-direction:column;gap:14px;padding:18px}.library-explore-invite h2{font-size:1.0625rem}.library-explore-invite .button{padding:10px 16px}
 .library-filter-dialog{width:100%;max-width:none;max-height:90dvh;margin:auto 0 0;border-radius:18px 18px 0 0;border-bottom:0}.library-filter-dialog .library-filter-panel{max-height:90dvh}
 .library-filter-heading{padding:18px 18px 14px}.library-filter-fields{padding:0 18px 8px}.library-filter-footer{padding:12px 18px max(12px,env(safe-area-inset-bottom))}.library-filter-footer .button{padding:10px 18px}
 .library-pager .library-page-numbers{display:none}.library-pager .library-page-position{display:block}.library-pager .library-pager-row{gap:6px;justify-content:space-between}.library-pager .library-page-step{gap:5px;padding:8px;font-size:.8125rem}
}
@media(max-width:359px){.library-explore-shell{padding-left:12px;padding-right:12px}.library-score-grid{--gallery-gap:10px}.library-score-card .library-card-body{padding:8px}.library-score-card .library-composer{font-size:.75rem}.library-filter-fields .library-filter-grid{grid-template-columns:1fr}.library-score-card .library-card-actions .button{padding:6px 3px}}
@media(prefers-reduced-motion:reduce){.library-score-card.library-card{transition:none}}
@media print{.library-filter-dialog,.library-explore-controls,.library-discovery-chips,.library-pagination,.library-explore-invite{display:none}}
