/* Hallmark · app screen · 淘啡 · category and report ledgers · redesign: full */
/* The ledger opens beside its stock balance; date filters occupy the same rail on reports. */
.register-layout {
  display: grid;
  grid-template-columns: minmax(204px, .78fr) minmax(0, 2.5fr);
  align-items: start;
  gap: clamp(28px, 4.5vw, 72px);
}
.register-aside, .register-list { min-width: 0; }
.register-aside {
  border-top: 3px solid var(--accent);
  background: var(--sheet-tint);
  padding: 24px;
}
.register-total { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 12px; }
.register-total > span:first-child { flex-basis: 100%; font-size: .91rem; color: var(--muted); }
.register-total strong {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 4px 8px;
  min-width: 0;
  font-family: var(--tab-num);
  line-height: 1.13;
  font-variant-numeric: tabular-nums;
}
.register-total b { font-size: 2.55rem; font-weight: 550; overflow-wrap: anywhere; }
.register-total small { font-size: 1.08rem; font-weight: 450; }
.register-bags { padding-inline-start: .7rem; border-inline-start: 1px solid var(--rule); font-size: .9rem; }
.register-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-top: 24px;
}
.register-actions :is(.primary, .secondary) { min-height: 44px; width: 100%; padding: 8px 4px; }
.register-actions .secondary { background: var(--panel); border-color: var(--control-line); }
.register-actions .secondary:not(:disabled):hover { background: var(--hover); border-color: var(--rule); }
.register-tools {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  min-height: 48px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--ink);
}
.register-tools .tabs button { min-height: 44px; }
.register-tools .search {
  border: 1px solid var(--control-line);
  border-radius: 3px;
  color: var(--ink);
  background: var(--control-bg);
  width: min(100%, 225px);
  min-height: 44px;
  padding: 8px 12px;
}
.register-tools .search::placeholder { color: var(--muted); }
.stock-columns, .bean-entry > summary {
  display: grid;
  align-items: center;
  gap: 12px;
  grid-template-columns: minmax(0, 1fr) 9rem 15px;
}
.stock-register.roasted :is(.stock-columns, .bean-entry > summary) {
  grid-template-columns: minmax(0, 1fr) 9rem 6rem 15px;
}
.stock-columns { min-height: 42px; color: var(--muted); border-bottom: 1px solid var(--line); font-size: .85rem; }
.stock-columns span:not(:first-child), .bean-weight, .bean-bags { text-align: right; }
.bean-entry { border-bottom: 1px solid var(--line); }
.bean-entry > summary { min-height: 74px; padding: 12px 0; cursor: pointer; list-style: none; }
.bean-entry > summary::-webkit-details-marker, .lot-register > summary::-webkit-details-marker { display: none; }
.bean-entry > summary:hover, .lot-register > summary:hover { background: var(--hover); }
.bean-entry > summary:focus-visible, .lot-register > summary:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.bean-name { min-width: 0; }
.bean-name b { display: block; line-height: 1.5; font-size: 1.12rem; font-weight: 600; overflow-wrap: anywhere; }
.bean-meta { margin-top: 2px; display: flex; flex-wrap: wrap; gap: 0 8px; color: var(--muted); font-size: .86rem; }
.bean-meta > span { overflow-wrap: anywhere; }
.bean-weight, .bean-bags, .stock-register .pairs dd { font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.bean-weight { font: 550 1.05rem/1.4 var(--tab-num); }
.bean-bags { font-size: .9rem; color: var(--muted); }
.bean-entry > summary > .icon, .lot-count > .icon { width: 14px; height: 14px; color: var(--muted); }
.bean-entry[open] > summary > .icon, .lot-register[open] > summary .icon { transform: rotate(90deg); }
.bean-entry .bean-facts { margin: 0 0 16px; padding: 12px 20px 16px; border-inline-start: 2px solid var(--accent); background: var(--panel); }
.bean-facts > .pairs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; }
.bean-facts > .pairs > div { display: grid; grid-template-columns: 4.5em minmax(0,1fr); gap: 12px; padding-block: 8px; border: 0; }
.bean-facts .pairs dt { color: var(--muted); }
.bean-facts .pairs dd { overflow-wrap: anywhere; }
.lot-register { border-block-start: 1px solid var(--line); }
.lot-register > summary, .lot-count { display: flex; align-items: center; gap: 8px; }
.lot-register > summary { justify-content: space-between; min-height: 44px; padding: 8px 0; list-style: none; cursor: pointer; }
.lot-record-qty { display: inline-block; margin-inline-start: .75em; font-weight: 450; color: var(--muted); }
.register-filter.report-form { display: grid; align-items: start; gap: 16px; margin: 0; }
.register-filter .field { display: grid; gap: 4px; color: var(--muted); font-size: .9rem; }
.register-filter input[type="date"] {
  display: block;
  width: 100%;
  min-width: 0;
  min-height: 44px;
  padding: 8px 12px;
  font: 450 1rem/1.4 var(--tab-num);
  font-variant-numeric: tabular-nums;
  color: var(--ink);
  border: 1px solid var(--control-line);
  border-radius: 3px;
  background: var(--control-bg);
}
.register-filter .primary { width: 100%; min-height: 44px; }
.register-results.report-kpis { border-top: 1px solid var(--ink); border-bottom: 1px solid var(--line); margin: 0 0 32px; }
.register-results.report-kpis .kpi { padding: 12px 20px 20px; }
.register-results.report-kpis .kpi:first-child { padding-inline-start: 0; }
.register-results .big b { font-size: 2.65rem; }
@media (max-width: 820px) {
  .register-layout { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .register-aside { padding: 16px; }
  .register-actions { margin-top: 16px; }
  .register-total { gap: 1px 12px; }
  .register-total b { font-size: 2.05rem; }
  .register-filter.report-form { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; }
  .register-filter .primary { grid-column: 1/-1; }
  .register-results.report-kpis { margin-bottom: 24px; }
  .register-tools { padding-bottom: 8px; }
  .bean-entry > summary { min-height: 64px; }
}
@media (max-width: 520px) {
  .register-tools .search { width: 100%; }
  .register-results.report-kpis .kpi { padding: 8px 12px 12px; }
  .register-results .big b { font-size: 2rem; }
  .stock-columns, .bean-entry > summary { column-gap: 8px; grid-template-columns: minmax(0,1fr) 6.75rem 13px; }
  .stock-register.roasted :is(.stock-columns, .bean-entry > summary) {
    grid-template-columns: minmax(0,1fr) 6rem 4.5rem 13px;
  }
  .bean-facts > .pairs { grid-template-columns: minmax(0, 1fr); }
  .bean-entry .bean-facts { padding-inline: 12px; }
}
