/* LibraryCraft member pages (/library…; builder D). Loaded after account.css through lib_head_assets().
 * Tokens only (paper/model themes), rem for layout, px only for pen weights and breakpoints.
 * No gradients, no shadows; hierarchy by line weight. */

/* ---------- Section bar ---------- */
.lib-subnav { border-bottom: var(--pen-1) solid var(--ink); background: var(--sheet-2); }
.lib-subnav-inner { display: flex; align-items: center; gap: 1.25rem; min-height: 3rem; overflow-x: auto; scrollbar-width: thin; }
.lib-subnav-home { font-weight: 700; font-stretch: 112%; color: var(--ink); text-decoration: none; white-space: nowrap; padding-block: .6rem;
  border-bottom: var(--pen-3) solid transparent; }
.lib-subnav ul { display: flex; gap: .25rem 1rem; list-style: none; margin: 0; padding: 0; }
.lib-subnav li a { display: block; padding: .7rem 0 calc(.7rem - var(--pen-3)); color: var(--ink-2); font-weight: 600; text-decoration: none;
  white-space: nowrap; border-bottom: var(--pen-3) solid transparent; }
.lib-subnav a:hover { color: var(--ink); }
.lib-subnav a[aria-current="page"] { color: var(--ink); border-bottom-color: var(--action); }
.lib-subnav .lib-count { color: var(--action); font-variant-numeric: tabular-nums; }
@media (min-width: 768px) { .lib-subnav ul { margin-left: auto; } }

/* ---------- Badges and tags ---------- */
.lic-badge { display: inline-block; padding: .05rem .45rem; border: var(--pen-1) solid currentColor; border-radius: var(--radius);
  font-size: var(--fs-sm); font-weight: 700; line-height: 1.4; white-space: nowrap; color: var(--layer-green); }
.lic-badge.lic-cc-by-sa-4-0 { color: var(--layer-cyan); }
.lic-badge.lic-maker-terms { color: var(--layer-ochre); }
.lic-badge.lic-team-only { color: var(--layer-violet); }
.lib-st { display: inline-block; padding: .05rem .45rem; border: var(--pen-1) solid var(--line); border-radius: var(--radius);
  font-size: var(--fs-sm); font-weight: 600; line-height: 1.4; white-space: nowrap; color: var(--ink-2); }
.lib-st-ok { border-color: var(--layer-green); color: var(--layer-green); }
.lib-st-warn { border-color: var(--layer-ochre); color: var(--layer-ochre); }
.lib-st-bad { border-color: var(--layer-red); color: var(--layer-red); }
.lib-following { font-weight: 700; color: var(--ink); margin-right: .5rem; white-space: nowrap; }
.lib-following .bi { color: var(--action); }

/* ---------- Home ---------- */
.lib-state p { margin-bottom: 1rem; }
.lib-state .btn-row { margin: 0; }
.lib-more { margin: 1.25rem 0 0; font-weight: 600; }
.lib-cats { list-style: none; margin: 0; padding: 0; display: grid; gap: 0 2rem; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); }
.lib-cats li { display: flex; justify-content: space-between; gap: 1rem; padding: .6rem 0; border-bottom: var(--pen-1) solid var(--line); }
.lib-cats a { font-weight: 600; }
.lib-links h3 a { color: var(--ink); }

/* ---------- Item cards (item-card.inc): drawing tile + mini title block + ruled meta strip, like app-sheet.inc ---------- */
.lib-cards { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.25rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); }
.lib-browse .lib-cards { gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 13rem), 1fr)); }   /* browse: 5 across at 1280 */
.lib-browse .lib-card-tb { padding: .55rem .7rem .6rem; }
.lib-browse .lib-card-meta { padding: .4rem .7rem .5rem; gap: .25rem .7rem; }
.lib-card-by { margin: 0; font-size: var(--fs-sm); color: var(--ink-2); }
.lib-card { position: relative; display: flex; flex-direction: column; background: var(--sheet-2); border: var(--pen-2) solid var(--ink);
  border-radius: var(--radius); min-width: 0; }
.lib-card.is-withdrawn, .lib-card.is-pending, .lib-card.is-draft, .lib-card.is-rejected { border-style: dashed; }
.lib-card-tile { display: flex; align-items: center; justify-content: center; aspect-ratio: 4 / 3; background: var(--sheet-2);
  border-bottom: var(--pen-1) solid var(--ink); border-radius: var(--radius) var(--radius) 0 0; overflow: hidden; }
.lib-card-tile .lib-dwg { width: 100%; height: 100%; }
.lib-thumb-none { color: var(--ink-2); font-size: var(--fs-sm); }
.lib-card-tb { padding: .7rem .85rem .75rem; display: grid; gap: .2rem; align-content: start; flex: 1 1 auto; }
.lib-card-title { font-size: var(--fs-base); font-stretch: 105%; font-weight: 700; margin: 0; line-height: 1.3; overflow-wrap: break-word;
  hyphens: manual; text-wrap: balance; }
.lib-card-title a { color: var(--ink); text-decoration: none; }
.lib-card-title a::after { content: ""; position: absolute; inset: 0; }
.lib-card-title a:focus-visible { outline: none; }
.lib-card:has(.lib-card-title a:focus-visible) { outline: var(--pen-3) solid var(--action); outline-offset: .2rem; }
.lib-card:hover .lib-card-title a { text-decoration: underline; text-decoration-thickness: var(--pen-3); text-underline-offset: .2em; }
.lib-card-maker, .lib-card-cat { margin: 0; font-size: var(--fs-sm); color: var(--ink-2); font-weight: 600; }
.lib-card-maker { color: var(--ink); }
.lib-card-meta { border-top: var(--pen-1) solid var(--line); padding: .5rem .85rem .6rem; align-items: center; gap: .35rem .9rem; }
.lib-card-meta .lic-badge, .lib-card-meta .lib-st { position: relative; }
.lib-card-size { color: var(--ink); font-weight: 600; }
.lib-empty { margin: 0; }
.lib-empty > :last-child { margin-bottom: 0; }

/* Small drawing tiles in tables and lists (versions, mine, following, submission candidates). */
.lib-thumb { display: flex; align-items: center; justify-content: center; aspect-ratio: 4 / 3; background: var(--sheet-2);
  border: var(--pen-1) solid var(--line); border-radius: var(--radius); overflow: hidden; }
.lib-thumb .lib-dwg { width: 100%; height: 100%; }
.lib-mini { display: inline-flex; width: 4.5rem; flex: 0 0 auto; vertical-align: middle; }
.lib-row-item { display: flex; gap: .75rem; align-items: center; min-width: 0; }
.lib-row-item > div { min-width: 0; }

/* ---------- Browse ---------- */
/* browse (0.5 "fewer clicks"): a compact head, category chips, filter pills, More filters */
.lib-browse-sec { padding-top: 1.25rem; }
.lib-browse { display: grid; gap: .9rem; grid-template-columns: minmax(0, 1fr); }
.lib-filters { display: grid; gap: .6rem; }
.lib-filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1.25rem; padding-bottom: .75rem; border-bottom: var(--pen-2) solid var(--ink); }
.lib-browse-title { font-size: var(--fs-xl); margin: 0; line-height: 1.1; }
.lib-search { display: flex; gap: .4rem; flex: 1 1 18rem; max-width: 34rem; }
.lib-search input { flex: 1 1 auto; min-width: 0; }
.lib-count { margin: 0; color: var(--ink-2); white-space: nowrap; }
.lib-count .tabular { color: var(--ink); font-weight: 700; }
.lib-sort { display: flex; align-items: center; gap: .4rem; margin-left: auto; }
.lib-sort label { margin: 0; font-size: var(--fs-sm); color: var(--ink-2); }
.lib-sort .select-cc { width: auto; }
.lib-more > summary { cursor: pointer; font-size: var(--fs-sm); font-weight: 600; width: max-content; }
.lib-more-body { display: flex; flex-wrap: wrap; align-items: end; gap: .6rem 1rem; padding-top: .5rem; }
.lib-more-body > div { min-width: 12rem; }
.lib-filters.is-enhanced [data-js-hide] { display: none; }
.lib-chips ul { display: flex; flex-wrap: wrap; gap: .4rem; list-style: none; margin: 0; padding: 0; }
.lib-chips .lib-chips-sub { margin-top: .4rem; padding-left: .9rem; border-left: var(--pen-2) solid var(--line); }
.lib-chips a { display: inline-flex; align-items: baseline; gap: .4rem; padding: .3rem .7rem; border: var(--pen-1) solid var(--line); border-radius: var(--radius);
  color: var(--ink); text-decoration: none; font-size: var(--fs-sm); background: var(--sheet); }
.lib-chips a .tabular { color: var(--ink-2); }
.lib-chips a:hover { border-color: var(--ink); }
.lib-chips a[aria-current="true"] { border: var(--pen-2) solid var(--ink); background: var(--sheet-2); font-weight: 700; }
.lib-pills { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; list-style: none; margin: 0; padding: 0; }
.lib-pills a { display: inline-flex; align-items: center; gap: .35rem; padding: .2rem .55rem; border: var(--pen-1) solid var(--ink); border-radius: 1rem;
  color: var(--ink); text-decoration: none; font-size: var(--fs-sm); }
.lib-pills a:hover { background: var(--sheet-2); }
.lib-pills .lib-pills-clear a { border-color: transparent; text-decoration: underline; }
.lib-results-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .5rem 1rem; margin-bottom: 1rem; }
.lib-results-head p { margin: 0; color: var(--ink-2); }
.lib-results-head .btn-row { gap: .5rem 1rem; }
.lib-pager ul { display: flex; flex-wrap: wrap; gap: .4rem; list-style: none; margin: 1.5rem 0 0; padding: 0; }
.lib-pager a { display: inline-block; min-width: 2.5rem; padding: .45rem .7rem; text-align: center; border: var(--pen-1) solid var(--line);
  border-radius: var(--radius); text-decoration: none; font-weight: 600; }
.lib-pager a:hover { border-color: var(--ink); }
.lib-pager a[aria-current="page"] { border: var(--pen-2) solid var(--ink); color: var(--ink); }

/* ---------- Item page ---------- */
.lib-item { display: grid; gap: 1.5rem; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 992px) { .lib-item { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: 2.5rem; align-items: start; } }
.lib-preview { margin: 0; background: var(--sheet-2); border: var(--pen-2) solid var(--ink); border-radius: var(--radius); }
.lib-preview-frame { padding: clamp(.5rem, .25rem + 1vw, 1.25rem); border-bottom: var(--pen-1) solid var(--ink); }
.lib-preview-frame .lib-dwg { width: 100%; height: auto; aspect-ratio: 4 / 3; }
.lib-tb { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-bottom: var(--pen-1) solid var(--ink); }
.lib-tb-cell { padding: .4rem .7rem; border-right: var(--pen-1) solid var(--ink); border-bottom: var(--pen-1) solid var(--ink); min-width: 0; }
.lib-tb-cell:nth-child(2n) { border-right: 0; }
.lib-tb-cell:nth-last-child(-n+2):nth-child(2n+1), .lib-tb-cell:last-child { border-bottom: 0; }
.lib-tb-cell .k { display: block; font-size: var(--fs-sm); color: var(--ink-2); font-weight: 600; line-height: 1.3; }
.lib-tb-cell .v { display: block; font-weight: 700; font-stretch: 105%; line-height: 1.3; color: var(--ink); }
@media (min-width: 640px) {
  .lib-tb { grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); grid-auto-flow: column; }
  .lib-tb-cell { border-bottom: 0; border-right: var(--pen-1) solid var(--ink) !important; }
  .lib-tb-cell:last-child { border-right: 0 !important; }
}
.lib-preview-cap { margin: 0; padding: .6rem .8rem .7rem; color: var(--ink-2); font-size: var(--fs-sm); }
.lib-preview .lib-blocked { padding: 2rem 1rem; text-align: center; color: var(--ink-2); margin: 0; }
.lib-banner { border: var(--pen-2) solid var(--layer-ochre); border-left-width: .35rem; border-radius: var(--radius); background: var(--sheet-2);
  padding: .9rem 1.1rem; margin-bottom: 1.25rem; }
.lib-banner.is-bad { border-color: var(--layer-red); }
.lib-banner p { margin: 0; }
.lib-banner p + p { margin-top: .4rem; }
.lib-facts .dl-cc { margin-bottom: 1.25rem; }
.lib-license { display: grid; gap: .6rem; }
.lib-license p { margin: 0; color: var(--ink-2); }
.lib-attrib textarea { width: 100%; min-height: 4.5rem; resize: vertical; font: inherit; font-size: var(--fs-sm); color: var(--ink);
  background: var(--sheet); border: var(--pen-1) solid var(--line); border-radius: var(--radius); padding: .6rem .7rem; }
.lib-attrib .btn-row { margin-top: .5rem; }
.lib-copied { color: var(--layer-green); font-weight: 600; font-size: var(--fs-sm); }
.lib-actions { display: flex; flex-wrap: wrap; gap: .6rem .75rem; align-items: center; margin: 0 0 1.25rem; }
.lib-sections { display: grid; gap: 1.5rem; margin-top: 2rem; }
.lib-sections details > summary { cursor: pointer; font-weight: 700; padding: .25rem 0; }
.lib-sections details[open] > summary { margin-bottom: .75rem; }
.lib-sections .set-sec .form-cc { max-width: 40rem; }
.lib-kv td:first-child { color: var(--ink-2); font-weight: 600; width: 40%; }
.lib-kv td { overflow-wrap: anywhere; }
.lib-changelog { color: var(--ink-2); display: block; }
.lib-note { color: var(--ink-2); font-size: var(--fs-sm); margin: .5rem 0 0; }

/* ---------- Rights fields (upload, commit, fork) ---------- */
.lib-choices { display: grid; gap: .5rem; }
.lib-choices .check { align-items: flex-start; }
.lib-choices .check.is-off { opacity: .6; }
.lib-fieldset { border: 0; margin: 0; padding: 0; display: grid; gap: 1.1rem; min-width: 0; }
.lib-fieldset > legend { font-size: var(--fs-md); font-weight: 700; font-stretch: 112%; margin-bottom: .25rem; }
.lib-form-wide { max-width: 46rem; }
.lib-form-wide.form-cc { gap: 1.75rem; }
.lib-attest { border: var(--pen-2) solid var(--ink); }
input[type="file"].lib-file { display: block; width: 100%; padding: .75rem; border: var(--pen-1) dashed var(--ink); border-radius: var(--radius);
  background: var(--sheet-2); color: var(--ink); font: inherit; }

/* ---------- Submission ---------- */
.lib-cands { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; }
.lib-cand { display: grid; gap: .75rem; grid-template-columns: 2rem minmax(0, 1fr); background: var(--sheet-2); border: var(--pen-1) solid var(--line);
  border-radius: var(--radius); padding: .75rem; align-items: start; }
.lib-cand:has(input.lib-pick:checked) { border-color: var(--ink); outline: var(--pen-1) solid var(--ink); }
.lib-cand.has-error { border-color: var(--layer-red); }
.lib-cand .lib-pick { width: 1.35rem; height: 1.35rem; margin-top: .3rem; accent-color: var(--action); }
.lib-cand-main { display: grid; gap: .75rem; min-width: 0; }
@media (min-width: 640px) { .lib-cand-main { grid-template-columns: 9rem minmax(0, 1fr); } }
.lib-cand .lib-thumb { border: var(--pen-1) solid var(--line); aspect-ratio: 4 / 3; }
.lib-cand-fields { display: grid; gap: .6rem; min-width: 0; }
.lib-cand-fields .row-2 { display: grid; gap: .6rem; }
@media (min-width: 768px) { .lib-cand-fields .row-2 { grid-template-columns: 1fr 1fr; } }
.lib-cand-fields label { font-size: var(--fs-sm); margin-bottom: .2rem !important; }
.lib-cand-sub { margin: 0; color: var(--ink-2); font-size: var(--fs-sm); }
.lib-cand-sub code { font-size: inherit; color: var(--ink); overflow-wrap: anywhere; }
.lib-tools { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: center; margin-bottom: .75rem; }
.lib-tools input[type="search"] { max-width: 18rem; }
.lib-notes { margin: .5rem 0 0; padding-left: 1.2rem; color: var(--ink-2); }

/* ---------- Inbox, lists ---------- */
.lib-inbox { list-style: none; margin: 0; padding: 0; border-top: var(--pen-1) solid var(--ink); }
.lib-inbox > li { display: grid; gap: .5rem 1rem; grid-template-columns: minmax(0, 1fr); padding: .9rem 0; border-bottom: var(--pen-1) solid var(--line); }
@media (min-width: 640px) { .lib-inbox > li { grid-template-columns: minmax(0, 1fr) auto; align-items: start; } }
.lib-inbox .lib-in-title { font-weight: 600; margin: 0; }
.lib-inbox .is-unread .lib-in-title { font-weight: 800; }
.lib-inbox .is-unread { border-left: var(--pen-3) solid var(--action); padding-left: .75rem; }
.lib-inbox .lib-in-body { margin: .2rem 0 0; color: var(--ink-2); }
.lib-inbox .meta-items { margin-top: .3rem; }
.lib-urgent { color: var(--layer-red); font-weight: 700; }

/* ---------- Rules and format ---------- */
.lib-doc { max-width: 52rem; }
.lib-doc h2 { font-size: var(--fs-lg); margin-top: 2.25rem; scroll-margin-top: 8rem; }
.lib-doc h2:first-child { margin-top: 0; }
.lib-doc h3 { font-size: var(--fs-md); margin-top: 1.5rem; }
.lib-doc pre { background: var(--sheet-2); border: var(--pen-1) solid var(--line); border-radius: var(--radius); padding: .9rem 1rem;
  font-size: .875rem; line-height: 1.5; overflow-x: auto; color: var(--ink); }
.lib-doc code { color: var(--ink); overflow-wrap: anywhere; }
.lib-doc .table-cc { margin-bottom: 1.25rem; }
.lib-toc { list-style: none; margin: 0 0 2rem; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem 1.25rem; }
.lib-toc a { font-weight: 600; }
.lib-yes { color: var(--layer-green); font-weight: 700; }
.lib-no { color: var(--ink-2); }

/* ---------- Narrow screens ---------- */
@media (max-width: 559px) {
  .lib-actions .btn-plot, .lib-actions .btn-line { flex: 1 1 auto; }
  .lib-results-head { align-items: flex-start; }
}

/* The attestation is one ruled box: the checkbox label inside it carries no second border. */
.lib-attest .check, .lib-attest .check:has(input:checked) { border: 0; padding: 0; background: transparent; }

/* Phones: the section bar wraps (every link visible, no sideways scrolling). */
@media (max-width: 767px) {
  .lib-subnav-inner { flex-wrap: wrap; gap: 0 1rem; overflow-x: visible; padding-block: .25rem; }
  .lib-subnav ul { flex-wrap: wrap; gap: 0 .9rem; }
  .lib-subnav-home { padding-block: .5rem; }
  .lib-subnav li a { padding-block: .45rem calc(.45rem - var(--pen-3)); }
}
.lib-license + .lib-actions, .lib-facts > .lib-actions { margin-top: 1.25rem; }

.table-cc .lib-col-dwg { width: 5.5rem; padding-right: 0; }
@media (max-width: 759px) { .table-cc.stack td.lib-col-dwg { width: auto; } .table-cc.stack td.lib-col-dwg::before { display: none; } }
