/* Library catalog and filters; the field guide uses these same patterns. */
.recipe-import-shell { max-width: 1100px; padding-block: var(--s-4) var(--s-6); }
#recipe-import-workspace { scroll-margin-top: 80px; }
.recipe-import-header { margin-block: var(--s-4) var(--s-5); }
.recipe-import-header h1 { font: 600 32px/1.2 var(--font-serif); margin: var(--s-2) 0; }
.recipe-import-header p, .recipe-import-help, .recipe-import-field small { color: var(--recipe-muted); }
.recipe-import-eyebrow { font: 600 12px/1.4 var(--font-sans); letter-spacing: .06em; text-transform: uppercase; margin: 0; }
.recipe-import-start { max-width: 760px; border-top: 1px solid var(--recipe-line); padding-top: var(--s-4); }
.recipe-import-field { display: flex; flex-direction: column; gap: var(--s-2); min-width: 0; margin-bottom: var(--s-4); }
.recipe-import-field[hidden] { display: none; }
.recipe-import-field label, .recipe-import-yield legend { font-weight: 600; }
.recipe-import-field input, .recipe-import-field select, .recipe-import-field textarea { width: 100%; min-width: 0; box-sizing: border-box; }
.recipe-import-field textarea { resize: vertical; line-height: 1.6; }
.recipe-import-field small, .recipe-import-help { font-size: var(--recipe-font-control); line-height: 1.5; }
.recipe-import-actions, .recipe-import-review-heading { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3); margin-block: var(--s-3); }
.recipe-import-review-heading { justify-content: space-between; align-items: flex-start; border-top: 1px solid var(--recipe-line); padding-top: var(--s-4); }
.recipe-import-review-heading h2 { font: 600 24px/1.3 var(--font-serif); margin-top: var(--s-2); overflow-wrap: anywhere; }
.recipe-import-save-bar { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--s-4); align-items: start; padding-block: var(--s-3); }
.recipe-import-save-bar > button { margin-top: var(--s-5); }
.recipe-import-overview { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 230px); gap: var(--s-5); }
.recipe-import-overview:not(:has(figure)) { grid-template-columns: 1fr; }
.recipe-import-photo { margin: 0 0 var(--s-4); }
.recipe-import-photo img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--recipe-radius-small); }
.recipe-import-photo figcaption { margin-top: var(--s-2); font-size: var(--recipe-font-control); }
.recipe-import-columns { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-5); }
.recipe-import-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--s-3); }
.recipe-import-yield { border: 0; border-top: 1px solid var(--recipe-line); padding: var(--s-4) 0; margin: var(--s-4) 0 0; }
.recipe-import-yield legend { float: none; width: auto; font-size: var(--recipe-font-body); padding-right: var(--s-3); }
.recipe-import-notice, .recipe-import-diagnostics { padding: var(--s-3); background: var(--recipe-surface); border: 1px solid var(--recipe-line); margin-block: var(--s-3); overflow-wrap: anywhere; }
.recipe-import-warning, .recipe-import-review .errorlist { border-left: 3px solid var(--recipe-accent); padding-left: var(--s-3); overflow-wrap: anywhere; }
.recipe-import-choice { display: block; padding-block: var(--s-3); }
.recipe-import-choice span { color: var(--recipe-muted); margin-left: var(--s-2); }
.recipe-import-loading { color: var(--recipe-muted); }
.recipe-import-review.htmx-request button { opacity: .65; }
@media (max-width: 700px) {
  .recipe-import-columns, .recipe-import-overview, .recipe-import-save-bar { grid-template-columns: 1fr; gap: var(--s-2); }
  .recipe-import-grid { grid-template-columns: 1fr 1fr; }
  .recipe-import-save-bar > button { margin: 0 0 var(--s-4); }
  .recipe-import-photo { max-width: 280px; }
  .recipe-import-field input, .recipe-import-field select, .recipe-import-actions button { min-height: 44px; }
}
.library-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.page-library { --library-nav-offset: 60px; --library-sidebar-offset: 134px; }
.library-page-header {
  display: grid;
  grid-template-columns: 15rem minmax(0, 1fr);
  column-gap: var(--s-3);
  align-items: stretch;
  position: sticky;
  top: var(--library-nav-offset);
  z-index: 50;
  background: var(--recipe-canvas);
}
.library-hero {
  grid-column: 1;
  grid-row: 1;
  padding: var(--s-2);
  border-bottom: 1px solid var(--recipe-line-soft);
}
.library-toolbar {
  grid-column: 2;
  grid-row: 1;
  display: flex;
  align-items: center;
  padding: var(--s-1) var(--s-4) var(--s-2);
  border-bottom: 1px solid var(--recipe-line-soft);
}
.library-heading h1 { margin: 0; font: 600 var(--recipe-font-display)/1.15 var(--font-serif); }
.library-heading > .btn { margin-bottom: var(--s-4); }
.library-heading p, .library-explainer {
  margin: var(--s-1) 0 var(--s-2);
  color: var(--recipe-muted);
  font: var(--recipe-font-working)/1.5 var(--font-sans);
}
.library-search-shell { display: flex; flex-wrap: wrap; align-items: center; width: 100%; gap: var(--s-3); }
.library-search-main { display: flex; flex: 1 1 24rem; gap: var(--s-2); }
.library-search-field { flex: 1; min-width: 0; margin: 0; }
.library-search-input, .library-filter-select, .library-filter-input {
  width: 100%;
  min-height: var(--recipe-control-touch);
  padding: var(--s-2) var(--s-3);
  border: 1px solid var(--recipe-line-strong);
  border-radius: var(--recipe-radius-small);
  background: var(--recipe-surface);
  color: var(--recipe-ink);
  font: var(--recipe-font-control)/1.4 var(--font-sans);
  box-sizing: border-box;
}
.library-search-input::placeholder, .library-filter-input::placeholder { color: var(--recipe-muted); opacity: 1; }
.library-search-submit, .library-filter-open, .library-import-link, .library-tool-btn { min-height: var(--recipe-control-touch); font-size: var(--recipe-font-control); }
.library-filter-open { white-space: nowrap; }
.library-filter-open[hidden], .library-filter-count[hidden] { display: none; }
.library-filter-count { margin-left: var(--s-1); }
.library-import-link { display: inline-flex; align-items: center; justify-content: center; white-space: nowrap; }
.library-search-tools { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2); }
.library-tool-btn { padding: var(--s-2) var(--s-3); box-shadow: none; }
.library-tool-btn::before, .library-search-submit::before { display: none; }
.library-filter-summary, .library-active-filters { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2); }
.library-filter-summary { margin-top: var(--s-2); }
.library-active-filter {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-2);
  max-width: 100%;
  min-height: var(--recipe-control-touch);
  padding: var(--s-2) var(--s-3);
  border: 1px solid var(--recipe-line-strong);
  border-radius: var(--recipe-radius-small);
  background: var(--recipe-accent-wash);
  color: var(--recipe-ink);
  font: var(--recipe-font-control)/1.3 var(--font-sans);
  overflow-wrap: anywhere;
  cursor: pointer;
}
.library-clear {
  min-height: var(--recipe-control-touch);
  padding: var(--s-2);
  border: 0;
  background: transparent;
  color: var(--recipe-ink);
  font: var(--recipe-font-control)/1.3 var(--font-sans);
  text-decoration: underline;
  text-underline-offset: 0.2em;
  cursor: pointer;
}
.library-results-shell { padding-bottom: var(--s-6); }
.library-catalog.library-widget {
  display: grid;
  grid-template-columns: 15rem minmax(0, 1fr);
  gap: var(--s-3);
  align-items: start;
  padding: 0;
  border: 0;
  background: transparent;
}
.library-sidebar {
  position: sticky;
  top: var(--library-sidebar-offset);
  z-index: 40;
  min-width: 0;
  max-height: calc(100dvh - var(--library-sidebar-offset) - var(--s-3));
  padding: var(--s-2);
  overflow-y: auto;
  border: 0;
  background: var(--recipe-canvas);
}
.library-sidebar__heading {
  margin: var(--s-2) var(--s-3);
  color: var(--recipe-muted);
  font: 700 var(--recipe-font-metadata)/1.3 var(--font-sans);
  letter-spacing: .06em;
  text-transform: uppercase;
}
.library-sidebar__group { min-width: 0; }
.library-sidebar__group--personal {
  margin-top: var(--s-4);
  padding-top: var(--s-3);
  border-top: 1px solid var(--recipe-line);
}
.library-sidebar .library-import-link {
  box-sizing: border-box;
  width: 100%;
  margin-top: var(--s-2);
  padding: var(--s-2) var(--s-3);
  border: 1px solid var(--recipe-line-strong);
  border-radius: var(--recipe-radius-small);
  background: var(--recipe-surface);
  color: var(--recipe-ink);
  font-weight: 650;
  text-decoration: none;
}
.library-sidebar .library-import-link:hover { background: var(--recipe-accent-wash); }
.library-panel { min-width: 0; padding: var(--s-2) var(--s-4); }
.library-display-preference { display: flex; align-items: center; justify-content: flex-end; flex: 0 0 auto; }
.library-display-preference[hidden] { display: none; }
.library-display-toggle {
  position: relative; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  width: 7.25rem; padding: 1px; border: 1px solid var(--recipe-line);
  border-radius: var(--recipe-radius-status); background: var(--recipe-surface-muted);
}
.library-display-toggle::before {
  content: ''; position: absolute; inset: 1px auto 1px 1px;
  width: calc(50% - 1px); border: 1px solid var(--recipe-line-strong);
  border-radius: var(--recipe-radius-status); background: var(--recipe-surface);
  box-shadow: none; transition: transform var(--recipe-motion-fast);
}
.library-display-toggle[data-display-unit="yield"]::before { transform: translateX(100%); }
.library-display-toggle button {
  position: relative; z-index: 1; min-height: 2rem;
  padding: 0 var(--s-1); border: 0; border-radius: var(--recipe-radius-status);
  background: transparent; color: var(--recipe-muted);
  font: 650 var(--recipe-font-metadata)/1.2 var(--font-sans); cursor: pointer;
}
.library-display-toggle button[aria-pressed="true"] { color: var(--recipe-ink); }
.library-month-browser { margin: 0 0 var(--s-3); padding: 0 0 var(--s-3); border-bottom: 1px solid var(--recipe-line); }
.library-month-browser__header { display: block; }
.library-month-browser__intro { min-width: 0; }
.library-month-browser__intro h2 { margin: 0; font: 700 var(--recipe-font-control)/1.3 var(--font-sans); color: var(--recipe-ink); }
.library-month-browser__months { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--s-1); margin-top: var(--s-2); }
.library-month-browser__button[data-library-browse-month=""] { grid-column: 1 / -1; }
.library-month-browser__button {
  position: relative; display: inline-flex; align-items: center; justify-content: center; gap: var(--s-1);
  box-sizing: border-box; min-width: 0; min-height: var(--recipe-control-touch); padding: var(--s-1);
  border: 1px solid var(--recipe-line-strong); border-radius: var(--recipe-radius-status);
  background: var(--recipe-surface); color: var(--recipe-muted);
  font: 600 var(--recipe-font-metadata)/1.2 var(--font-sans); cursor: pointer;
}
.library-month-browser__button:hover { border-color: var(--recipe-ink); color: var(--recipe-ink); }
.library-month-browser__button[aria-pressed="true"] { border-color: var(--recipe-ink); background: var(--recipe-accent-wash); color: var(--recipe-ink); }
.library-month-browser__count { color: inherit; font-variant-numeric: tabular-nums; opacity: .78; }
.library-refine { display: grid; gap: var(--s-2); padding: 0; border: 0; }
.library-refine__label { margin: 0; color: var(--recipe-muted); font: 650 var(--recipe-font-metadata)/1.3 var(--font-sans); letter-spacing: .01em; }
.library-refine__filters { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: end; gap: var(--s-3); min-width: 0; }
.library-inline-diet { grid-column: 1 / -1; min-width: 0; margin: 0; padding: 0; border: 0; }
.library-inline-diet legend, .library-inline-filter > span { display: block; margin-bottom: var(--s-1); color: var(--recipe-muted); font: 550 var(--recipe-font-metadata)/1.2 var(--font-sans); letter-spacing: .01em; text-transform: none; }
.library-inline-diet__choices { display: flex; flex-wrap: wrap; gap: var(--s-1); }
.library-inline-diet__choices label {
  display: inline-flex; align-items: center; gap: var(--s-1); min-height: var(--recipe-control-touch);
  box-sizing: border-box; padding: var(--s-1) var(--s-2); border: 1px solid var(--recipe-line-strong);
  border-radius: var(--recipe-radius-status); background: var(--recipe-surface);
  color: var(--recipe-ink); font: 500 var(--recipe-font-metadata)/1.2 var(--font-sans); text-transform: none; letter-spacing: normal; cursor: pointer;
}
.library-inline-diet__choices label:has(input:checked) { background: var(--recipe-accent-wash); border-color: var(--recipe-ink); }
.library-inline-diet__choices input { margin: 0; accent-color: var(--recipe-ink); }
.library-inline-filter { display: grid; align-content: end; min-width: 0; }
.library-inline-filter input:not([type="range"]), .library-inline-filter select {
  box-sizing: border-box; width: 100%; min-height: var(--recipe-control-touch); padding: var(--s-2);
  border: 1px solid var(--recipe-line-strong); border-radius: var(--recipe-radius-small);
  background: var(--recipe-surface); color: var(--recipe-ink); font: var(--recipe-font-control)/1.2 var(--font-sans);
}
.library-inline-score > span { display: flex; justify-content: space-between; gap: var(--s-1); }
.library-inline-score { grid-column: 1 / -1; }
.library-inline-citation { grid-column: 1 / -1; }
.library-inline-score output { color: var(--recipe-ink); font-variant-numeric: tabular-nums; }
.library-inline-score input { box-sizing: border-box; width: 100%; min-height: var(--recipe-control-touch); margin: 0; accent-color: var(--recipe-ink); }
.library-filters-dialog:not([open]) { display: none; }
.library-filters-dialog[open] {
  box-sizing: border-box; display: flex; flex-direction: column;
  width: min(44rem, calc(100vw - 1.5rem)); max-width: none;
  max-height: calc(100dvh - 1.5rem); margin: auto; padding: 0;
  border: 1px solid var(--recipe-line-strong); border-radius: var(--recipe-radius-small);
  background: var(--recipe-surface); color: var(--recipe-ink);
  box-shadow: var(--recipe-library-dialog-shadow);
}
.library-filters-dialog::backdrop { background: var(--recipe-library-dialog-backdrop); }
body.library-filter-modal-open { overflow: hidden; }
.library-filters-dialog__header, .library-filters-dialog__footer { display: flex; align-items: center; justify-content: space-between; gap: var(--s-2); padding: var(--s-3) var(--s-4); }
.library-filters-dialog__header { border-bottom: 1px solid var(--recipe-line); }
.library-filters-dialog__header h2 { margin: 0; font: 600 var(--recipe-font-heading)/1.2 var(--font-serif); }
.library-filters-dialog__close { min-width: var(--recipe-control-touch); min-height: var(--recipe-control-touch); border: 1px solid var(--recipe-line-strong); border-radius: var(--recipe-radius-small); background: var(--recipe-surface); color: var(--recipe-ink); font: 1.4rem/1 var(--font-sans); cursor: pointer; }
.library-filters-dialog__body { min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: var(--s-4); }
.library-display-filter {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  margin: 0 0 var(--s-3);
  padding: 0 0 var(--s-3);
  border-bottom: 1px solid var(--recipe-line);
}
.library-display-filter h2 { margin: 0; font: 700 var(--recipe-font-control)/1.3 var(--font-sans); color: var(--recipe-ink); }
.library-display-filter p { max-width: 36ch; margin: var(--s-1) 0 0; color: var(--recipe-muted); font: var(--recipe-font-metadata)/1.4 var(--font-sans); }
.library-display-filter .library-display-toggle { width: 9rem; }
.library-display-filter .library-display-toggle button { min-height: var(--recipe-control-touch); }
.library-filters-dialog__body .library-refine { border: 0; padding: 0; }
.library-filters-dialog__body .library-refine__label { display: none; }
.library-filters-dialog__footer { border-top: 1px solid var(--recipe-line); }
.library-filters-dialog__footer .btn { min-height: var(--recipe-control-touch); }
.library-month-match { margin: var(--s-2) 0 0; color: var(--recipe-muted); font: var(--recipe-font-metadata)/1.4 var(--font-sans); }
.library-catalog .lib-tabs {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  padding: 0;
  margin: 0;
}
.library-catalog .tab-btn {
  min-height: var(--recipe-control-touch);
  width: 100%;
  padding: var(--s-2) var(--s-3);
  margin: 0;
  border: 0;
  border-left: 3px solid transparent;
  border-radius: var(--recipe-radius-small);
  background: transparent;
  color: var(--recipe-muted);
  font-size: var(--recipe-font-control);
  font-weight: 600;
  text-align: left;
  box-shadow: none;
}
.library-catalog .tab-btn:hover { background: var(--recipe-accent-wash); color: var(--recipe-ink); }
.library-catalog .tab-btn.active, .library-catalog .tab-btn[aria-pressed="true"] {
  background: var(--recipe-accent-wash);
  color: var(--recipe-ink);
  border-left-color: var(--recipe-ink);
}
.library-catalog .lib-list { gap: 0; }
.library-catalog .lib-item, .library-catalog .lib-item:hover {
  padding: var(--s-4) 0;
  border: 0; border-bottom: 1px solid var(--recipe-line);
  border-radius: 0;
  background: transparent;
  box-shadow: none; transform: none; overflow: visible;
}
.library-catalog .lib-item::before, .library-catalog .lib-item::after { display: none; }
.library-catalog .recipe-card { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--s-4); }
.library-catalog .recipe-card--with-image { grid-template-columns: 6rem minmax(0, 1fr); }
.library-catalog .recipe-card .thumb-container { width: 6rem; height: 6rem; }
.library-catalog .thumb-container img { width: 100%; height: 100%; object-fit: cover; border-radius: var(--recipe-radius-small); }
.library-catalog .lib-body { min-width: 0; display: grid; gap: var(--s-2); }
body.page-library .library-catalog .recipe-card .lib-card-title-row {
  display: flex; align-items: flex-start; justify-content: space-between; gap: var(--s-2);
}
body.page-library .library-catalog .recipe-card .lib-card-title-row .lib-title { flex: 1 1 auto; min-width: 0; }
body.page-library .library-catalog .recipe-card .lib-card-title-row .library-add-to-menu-btn {
  display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto;
  min-height: var(--recipe-control-touch); padding: var(--s-2) var(--s-3);
  border: 1px solid var(--recipe-accent); border-radius: var(--recipe-radius-small);
  background: var(--recipe-accent-wash); color: var(--recipe-ink);
  font: 650 var(--recipe-font-control)/1.2 var(--font-sans); white-space: nowrap;
  box-shadow: none; transform: none;
}
body.page-library .library-catalog .recipe-card .lib-card-title-row .library-add-to-menu-btn:hover {
  border-color: var(--recipe-accent-strong); background: var(--recipe-accent-wash);
  text-decoration: none; transform: none;
}
.library-catalog .concept-library-card,
.library-catalog .concept-library-card:hover {
  margin-block: var(--s-3);
  padding: var(--s-3) var(--s-4);
  border: 1px solid var(--recipe-line);
  border-left: 3px solid var(--recipe-concept-line);
  border-radius: var(--recipe-radius-small);
  background: color-mix(in srgb, var(--recipe-concept-wash) 22%, var(--recipe-surface));
  box-shadow: none;
  transform: none;
  transition: none;
}
.library-catalog .concept-library-card--with-image,
.library-catalog .concept-library-card--with-image:hover {
  display: grid;
  grid-template-columns: 6rem minmax(0, 1fr);
  align-items: start;
  gap: var(--s-4);
}
.library-catalog .concept-library-card__thumb {
  width: 6rem;
  height: 6rem;
}
.library-catalog .concept-library-card__heading {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: var(--s-2);
}
.library-catalog .concept-library-card__heading .lib-title {
  flex: 0 1 auto;
  min-width: 0;
  color: var(--recipe-ink);
}
.library-catalog .concept-library-card__count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  min-width: 1.5rem;
  min-height: 1.5rem;
  padding-inline: var(--s-1);
  border: 1px solid var(--recipe-concept-line);
  border-radius: var(--recipe-radius-status);
  background: color-mix(in srgb, var(--recipe-concept-line) 16%, var(--recipe-surface));
  color: var(--recipe-concept-ink);
  font: 700 var(--recipe-font-metadata)/1 var(--font-sans);
  font-variant-numeric: tabular-nums;
}
.library-catalog .library-mode-intro__eyebrow {
  justify-self: start;
  margin: 0;
  padding: 0;
  background: transparent;
  color: var(--recipe-concept-ink);
  font-size: var(--recipe-font-metadata);
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.concept-library-card__members { margin: 0; color: var(--recipe-muted); font-size: var(--recipe-font-control); line-height: 1.45; }
.concept-library-card__members span { color: var(--recipe-ink); font-weight: 700; }
.library-mode-intro { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--s-4); margin: var(--s-4) 0; padding: var(--s-4); border: 1px solid var(--recipe-line); border-radius: var(--recipe-radius-small); background: var(--recipe-surface); }
.library-mode-intro h2 { margin: var(--s-1) 0; font-size: var(--recipe-font-title); }
.library-mode-intro .library-explainer { margin: 0; }
.library-mode-actions { display: flex; flex: 0 0 auto; gap: var(--s-2); }
.library-filter-intro { margin: var(--s-1) 0 0; color: var(--recipe-muted); font-size: var(--recipe-font-control); }
.library-catalog .lib-title { margin: 0; font-size: var(--recipe-font-title); line-height: 1.2; overflow-wrap: anywhere; }
.library-catalog a.lib-title:hover { text-decoration: underline; text-underline-offset: 0.15em; }
.library-catalog .lib-desc { max-width: 70ch; margin: 0; color: var(--recipe-muted); }
.library-catalog .lib-meta { gap: var(--s-1) var(--s-3); align-items: flex-start; }
.library-catalog .lib-meta-cluster {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-1);
  min-width: 0;
}
.library-catalog .lib-meta-cluster--measures { margin-inline-start: auto; }
.library-catalog .lib-meta-cluster:not(:has(.lib-meta-item, .lib-chip)) { display: none; }
.library-catalog .lib-chip:not(.lib-meta-pill), .library-catalog .lib-chip:not(.lib-meta-pill):hover {
  max-width: 100%; padding: 0; border: 0; border-radius: 0;
  background: transparent; color: var(--recipe-muted);
  font: var(--recipe-font-control)/1.5 var(--font-sans);
  transform: none; overflow-wrap: anywhere;
}
.library-catalog .lib-chip.lib-meta-pill {
  --pill-ink: var(--recipe-pill-stone-ink);
  --pill-line: var(--recipe-pill-stone-line);
  --pill-wash: var(--recipe-pill-stone-wash);
  max-width: 100%;
  min-height: 2rem;
  padding: 0.3rem 0.65rem;
  border: 1px solid var(--pill-line);
  border-radius: var(--recipe-radius-status);
  background: var(--pill-wash);
  color: var(--pill-ink);
  box-shadow: none;
  font: 650 var(--recipe-font-compact)/1.2 var(--font-sans);
  font-variant-numeric: tabular-nums;
  text-align: left;
  transform: none;
  transition: background var(--recipe-motion-fast), border-color var(--recipe-motion-fast);
}
.library-catalog .lib-chip.lib-meta-pill:is(:hover, :focus-visible) {
  border-color: var(--pill-ink);
  background: var(--pill-wash);
  transform: none;
}
.library-catalog .lib-chip.lib-meta-pill:focus-visible {
  outline: var(--recipe-focus-ring);
  outline-offset: var(--recipe-focus-offset);
}
.library-catalog .lib-meta-pill.concept {
  --pill-ink: var(--recipe-concept-ink);
  --pill-line: var(--recipe-concept-line);
  --pill-wash: var(--recipe-concept-wash);
}
.library-catalog .lib-meta-pill.yield {
  --pill-ink: var(--recipe-pill-quantity-ink);
  --pill-line: var(--recipe-pill-quantity-line);
  --pill-wash: var(--recipe-pill-quantity-wash);
}
.library-catalog .lib-meta-pill.score {
  --pill-ink: var(--recipe-pill-score-ink);
  --pill-line: var(--recipe-pill-score-line);
  --pill-wash: var(--recipe-pill-score-wash);
}
.library-catalog .lib-meta-pill.score.score--high {
  --pill-ink: var(--recipe-pill-score-high-ink);
  --pill-line: var(--recipe-pill-score-high-line);
  --pill-wash: var(--recipe-pill-score-high-wash);
}
.library-catalog .lib-meta-pill.score.score--mid {
  --pill-ink: var(--recipe-pill-score-mid-ink);
  --pill-line: var(--recipe-pill-score-mid-line);
  --pill-wash: var(--recipe-pill-score-mid-wash);
}
.library-catalog .lib-meta-pill.score.score--low {
  --pill-ink: var(--recipe-pill-score-low-ink);
  --pill-line: var(--recipe-pill-score-low-line);
  --pill-wash: var(--recipe-pill-score-low-wash);
}
.library-catalog .lib-meta-pill.cost {
  --pill-ink: var(--recipe-pill-cost-ink);
  --pill-line: var(--recipe-pill-cost-line);
  --pill-wash: var(--recipe-pill-cost-wash);
}
.library-catalog .lib-meta-pill.citation {
  --pill-ink: var(--recipe-pill-citation-ink);
  --pill-line: var(--recipe-pill-citation-line);
  --pill-wash: var(--recipe-pill-citation-wash);
}
.library-catalog .lib-meta-pill.cost.cost-scale-0 { --pill-ink: var(--recipe-cost-0-ink); --pill-line: color-mix(in srgb, var(--recipe-cost-0-line) 45%, var(--recipe-pill-heat-line-base)); --pill-wash: color-mix(in srgb, var(--recipe-cost-0-wash) 55%, var(--recipe-surface)); }
.library-catalog .lib-meta-pill.cost.cost-scale-1 { --pill-ink: var(--recipe-cost-1-ink); --pill-line: color-mix(in srgb, var(--recipe-cost-1-line) 45%, var(--recipe-pill-heat-line-base)); --pill-wash: color-mix(in srgb, var(--recipe-cost-1-wash) 55%, var(--recipe-surface)); }
.library-catalog .lib-meta-pill.cost.cost-scale-2 { --pill-ink: var(--recipe-cost-2-ink); --pill-line: color-mix(in srgb, var(--recipe-cost-2-line) 45%, var(--recipe-pill-heat-line-base)); --pill-wash: color-mix(in srgb, var(--recipe-cost-2-wash) 55%, var(--recipe-surface)); }
.library-catalog .lib-meta-pill.cost.cost-scale-3 { --pill-ink: var(--recipe-cost-3-ink); --pill-line: color-mix(in srgb, var(--recipe-cost-3-line) 45%, var(--recipe-pill-heat-line-base)); --pill-wash: color-mix(in srgb, var(--recipe-cost-3-wash) 55%, var(--recipe-surface)); }
.library-catalog .lib-meta-pill.cost.cost-scale-4 { --pill-ink: var(--recipe-cost-4-ink); --pill-line: color-mix(in srgb, var(--recipe-cost-4-line) 45%, var(--recipe-pill-heat-line-base)); --pill-wash: color-mix(in srgb, var(--recipe-cost-4-wash) 55%, var(--recipe-surface)); }
.library-catalog .lib-meta-pill.cost.cost-scale-5 { --pill-ink: var(--recipe-cost-5-ink); --pill-line: color-mix(in srgb, var(--recipe-cost-5-line) 45%, var(--recipe-pill-heat-line-base)); --pill-wash: color-mix(in srgb, var(--recipe-cost-5-wash) 55%, var(--recipe-surface)); }
.library-catalog .lib-meta-pill.cost.cost-scale-6 { --pill-ink: var(--recipe-cost-6-ink); --pill-line: color-mix(in srgb, var(--recipe-cost-6-line) 45%, var(--recipe-pill-heat-line-base)); --pill-wash: color-mix(in srgb, var(--recipe-cost-6-wash) 55%, var(--recipe-surface)); }
.library-catalog .lib-meta-pill.cost.cost-scale-7 { --pill-ink: var(--recipe-cost-7-ink); --pill-line: color-mix(in srgb, var(--recipe-cost-7-line) 45%, var(--recipe-pill-heat-line-base)); --pill-wash: color-mix(in srgb, var(--recipe-cost-7-wash) 55%, var(--recipe-surface)); }
.library-catalog .lib-meta-pill.cost.cost-scale-8 { --pill-ink: var(--recipe-cost-8-ink); --pill-line: color-mix(in srgb, var(--recipe-cost-8-line) 45%, var(--recipe-pill-heat-line-base)); --pill-wash: color-mix(in srgb, var(--recipe-cost-8-wash) 55%, var(--recipe-surface)); }
.library-catalog .lib-meta-pill.planned {
  --pill-ink: var(--recipe-pill-date-ink);
  --pill-line: var(--recipe-pill-date-line);
  --pill-wash: var(--recipe-pill-date-wash);
}
.library-catalog .lib-actions { margin: 0; padding: 0; border: 0; gap: var(--s-3); }
.library-catalog .lib-action {
  min-height: var(--recipe-control-touch);
  padding: var(--s-2) 0; border: 0; border-radius: var(--recipe-radius-small);
  background: transparent; color: var(--recipe-muted);
  box-shadow: none; font-size: var(--recipe-font-control); box-sizing: border-box;
}
.library-catalog .lib-action-primary { color: var(--recipe-ink); font-weight: 650; }
.library-catalog .lib-action:hover { background: transparent; box-shadow: none; text-decoration: underline; transform: none; }
.library-catalog .recipe-card .lib-actions {
  gap: var(--s-1);
  margin-top: var(--s-1);
  padding-top: var(--s-2);
  border-top: 1px solid var(--recipe-line-soft);
}
.library-catalog .recipe-card .lib-actions .lib-action:not(.d-none) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--recipe-control-default);
  padding: var(--s-2) var(--s-3);
  border: 1px solid var(--recipe-line);
  background: var(--recipe-surface);
  color: var(--recipe-muted);
  font-weight: 600;
  line-height: 1.2;
  text-decoration: none;
  white-space: nowrap;
}
.library-catalog .recipe-card .lib-actions .lib-action:not(.d-none):hover {
  background: var(--recipe-surface-muted);
  border-color: var(--recipe-line-strong);
  color: var(--recipe-ink);
  text-decoration: none;
}
.library-catalog .recipe-card .lib-actions .lib-action.view-details-link.subrecipe-detail-link {
  border-color: var(--recipe-line-strong);
  color: var(--recipe-ink);
}
.library-catalog .recipe-card .lib-actions .lib-action.library-add-to-menu-btn {
  border-color: var(--recipe-accent);
  background: var(--recipe-accent-wash);
  color: var(--recipe-ink);
}
.library-catalog .recipe-card .lib-actions .lib-action.library-add-to-menu-btn:hover {
  border-color: var(--recipe-accent-strong);
  background: var(--recipe-accent-wash);
}
.library-catalog .recipe-card .lib-actions .lib-action.lib-action-delete {
  margin-left: auto;
  border-color: transparent;
  background: transparent;
}
.library-catalog .recipe-card .lib-actions .lib-action.lib-action-delete:hover {
  border-color: var(--recipe-danger);
  background: var(--recipe-danger-wash);
  color: var(--recipe-danger);
}
.library-catalog .empty-state { padding: var(--s-6) var(--s-3); border: 0; background: transparent; box-shadow: none; }
.library-catalog .empty-hint { color: var(--recipe-muted); }

.library-hero :focus-visible, .library-toolbar :focus-visible, .library-catalog :focus-visible {
  outline: var(--recipe-focus-ring); outline-offset: var(--recipe-focus-offset);
}
.library-toolbar [hidden] { display: none; }

/* Recipe collections: a compact catalog plus a focused publication lane. */
.library-collection-intro,
.collection-card__heading,
.collection-card__footer,
.collection-detail-header,
.collection-detail-kicker,
.collection-detail-actions,
.collection-publication-lane,
.collection-lane-actions,
.collection-section-heading,
.collection-form-actions {
  display: flex;
  align-items: center;
  gap: var(--s-3);
}
.library-collection-intro { justify-content: space-between; margin-bottom: var(--s-4); }
.library-collection-intro .library-explainer { margin: 0; }
.collection-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-4); }
.collection-card {
  display: grid;
  gap: var(--s-3);
  min-width: 0;
  padding: var(--s-4);
  border: 1px solid var(--recipe-line);
  background: var(--recipe-surface);
}
.collection-card--default { border-top: 3px solid var(--recipe-accent); }
.collection-card__heading { align-items: flex-start; justify-content: space-between; }
.collection-card h2 { margin: var(--s-2) 0 0; font-size: var(--recipe-font-title); }
.collection-card h2 a { color: var(--recipe-ink); text-decoration: none; }
.collection-card h2 a:hover { text-decoration: underline; text-underline-offset: .15em; }
.collection-card p { margin: 0; color: var(--recipe-muted); }
.collection-card__count { flex: 0 0 auto; color: var(--recipe-muted); font-size: var(--recipe-font-control); }
.collection-card__source { font-size: var(--recipe-font-control); }
.collection-card__footer { flex-wrap: wrap; margin-top: auto; padding-top: var(--s-3); border-top: 1px solid var(--recipe-line); color: var(--recipe-muted); font-size: var(--recipe-font-control); }
.collection-card__footer .lib-action { margin-left: auto; }

.collection-detail-shell,
.collection-form-shell { padding-block: var(--s-5) var(--s-8); }
.collection-detail-header { align-items: flex-start; justify-content: space-between; margin-top: var(--s-4); padding-bottom: var(--s-5); border-bottom: 1px solid var(--recipe-line); }
.collection-detail-copy { max-width: 52rem; }
.collection-detail-copy h1,
.collection-form-heading h1 { margin: var(--s-2) 0; font-size: var(--recipe-font-display); line-height: 1.15; }
.collection-detail-copy > p,
.collection-form-heading > p { max-width: 68ch; margin: 0; color: var(--recipe-muted); }
.collection-detail-kicker { flex-wrap: wrap; color: var(--recipe-muted); font-size: var(--recipe-font-control); }
.collection-detail-copy > .collection-detail-source { margin-top: var(--s-3); }
.collection-detail-actions { flex: 0 0 auto; }
.collection-publication-lane { align-items: flex-end; justify-content: space-between; margin-block: var(--s-5); padding: var(--s-4); border-left: 3px solid var(--recipe-accent); background: var(--recipe-surface-muted); }
.collection-publication-lane h2,
.collection-recipe-section h2 { margin: 0; font-size: var(--recipe-font-title); }
.collection-publication-lane p { margin: var(--s-1) 0 0; color: var(--recipe-muted); }
.collection-publication-lane .collection-eyebrow,
.collection-section-heading .collection-eyebrow,
.collection-form-heading .collection-eyebrow { margin: 0 0 var(--s-1); }
.collection-eyebrow { color: var(--recipe-muted); font-size: var(--recipe-font-metadata); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.collection-lane-actions { flex-wrap: wrap; justify-content: flex-end; }
.collection-recipe-section { margin-top: var(--s-5); }
.collection-section-heading { justify-content: space-between; margin-bottom: var(--s-3); }
.collection-form-heading { max-width: 52rem; margin: var(--s-5) 0 var(--s-4); }
.collection-form { display: grid; gap: var(--s-2); width: min(42rem, 100%); padding: var(--s-5); }
.collection-form label { margin-top: var(--s-2); font-weight: 650; }
.collection-form input,
.collection-form textarea { width: 100%; box-sizing: border-box; }
.collection-form-actions { flex-wrap: wrap; margin-top: var(--s-3); }

@media (min-width: 641px) and (max-width: 1100px) {
  .library-catalog .recipe-card .lib-actions .lib-action-delete { display: none; }
  .library-catalog .recipe-card .lib-actions .lib-action:not(.d-none) { padding-inline: var(--s-2); }
}

@media (max-width: 840px) {
  .library-page-header { grid-template-columns: minmax(0, 1fr); column-gap: 0; }
  .library-hero { grid-column: 1; grid-row: 1; border-bottom: 0; }
  .library-toolbar { grid-column: 1; grid-row: 2; padding-inline: 0; }
  .library-catalog.library-widget { grid-template-columns: minmax(0, 1fr); }
  .library-sidebar { max-height: none; overflow: hidden; }
  .library-sidebar__heading { margin-bottom: var(--s-1); }
  .library-sidebar__group--personal { margin-top: var(--s-2); padding-top: var(--s-2); }
  .library-sidebar .library-import-link { width: auto; min-height: 44px; margin: var(--s-2) var(--s-3) 0; }
  .library-panel { padding: var(--s-2); }
  .library-catalog .lib-tabs {
    flex-direction: row;
    gap: var(--s-1);
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scroll-snap-type: inline proximity;
    scrollbar-width: none;
  }
  .library-catalog .lib-tabs::-webkit-scrollbar { display: none; }
  .library-catalog .lib-tabs .tab-btn { width: auto; flex: 0 0 auto; min-height: 44px; scroll-snap-align: start; white-space: nowrap; border-left-color: transparent; border-bottom: 3px solid transparent; }
  .library-catalog .tab-btn.active, .library-catalog .tab-btn[aria-pressed="true"] { border-bottom-color: var(--recipe-ink); }
  .library-heading h1 { font-size: var(--recipe-font-title); }
  .library-search-main { flex-basis: 100%; }
  .library-catalog .recipe-card--with-image { grid-template-columns: 5rem minmax(0, 1fr); gap: var(--s-3); }
  .library-catalog .recipe-card .thumb-container { width: 5rem; height: 5rem; }
  .library-catalog .concept-library-card--with-image { grid-template-columns: 5rem minmax(0, 1fr); gap: var(--s-3); }
  .library-catalog .concept-library-card__thumb { width: 5rem; height: 5rem; }
  .library-catalog .lib-title { font-size: var(--recipe-font-heading); }
  .library-catalog .library-mobile-hidden { display: none; }
  .library-catalog .recipe-card .lib-actions > :not(a.view-details-link):not(.pick-sub-recipe-btn):not(.load-into-builder-btn) { display: none; }
  .library-catalog .recipe-card .lib-actions .lib-action:not(.d-none) { min-height: var(--recipe-control-touch); }
  .collection-grid { grid-template-columns: minmax(0, 1fr); }
  .collection-detail-header,
  .collection-publication-lane { align-items: stretch; flex-direction: column; }
  .collection-detail-actions,
  .collection-lane-actions { justify-content: flex-start; }
}
@media (max-width: 640px) {
  .library-hero { padding-top: var(--s-2); }
  .library-heading p { margin-bottom: var(--s-2); }
  .library-search-main { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--s-2); }
  .library-search-field--query { grid-column: 1 / -1; }
  .library-search-main:has(.library-filter-open[hidden]) .library-search-submit { grid-column: 1 / -1; }
  .library-search-tools { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; gap: var(--s-2); }
  .library-search-tools .library-tool-btn { min-width: 0; min-height: 44px; padding-inline: var(--s-2); }
  .library-filters-dialog .library-month-browser__months { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .library-display-filter { align-items: stretch; flex-direction: column; }
  .library-display-filter .library-display-preference { justify-content: flex-start; }
  .library-display-filter .library-display-toggle { width: min(100%, 12rem); }
  .library-refine__filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .library-inline-diet { grid-column: 1 / -1; }
  .library-inline-diet__choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .library-catalog.library-widget { padding: 0; }
  .library-sidebar { padding: var(--s-1); }
  .library-catalog .lib-tabs { width: 100%; margin: 0; padding: 0; }
  .library-catalog .lib-meta { gap: var(--s-1); }
  .library-catalog .lib-meta-cluster--measures { margin-inline-start: 0; }
  .library-mode-intro { align-items: stretch; flex-direction: column; padding: var(--s-3); }
  .library-mode-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .library-collection-intro,
  .collection-card__heading { align-items: flex-start; flex-direction: column; }
  .collection-card__footer .lib-action { width: 100%; margin-left: 0; }
  .collection-detail-actions .btn,
  .collection-lane-actions form,
  .collection-lane-actions .btn,
  .collection-form-actions .btn { width: 100%; }
  .collection-form { padding: var(--s-4); }
}
@media (max-width: 420px) {
  .library-catalog .concept-library-card,
  .library-catalog .concept-library-card:hover { padding: var(--s-3); }
}
