/* Batch slot-selection recap panel. Card chrome comes from .lc-card and
   row chrome from .lc-row (molecules/row.css); this file adds only the
   panel's stack layout, the entry columns, and the state variants. */

.slot-batch-panel {
  display: grid;
  gap: var(--sp-3);
}

/* The grid gap owns the rhythm; .lc-card__head ships its own margin. */
.slot-batch-panel .lc-card__head {
  margin-bottom: 0;
}

.slot-batch-panel__count {
  margin: 0;
  font-family: var(--font-mono);
  font-size: var(--fs-13);
  color: var(--color-ink-muted);
}

.slot-batch-panel__empty {
  margin: 0;
  font-size: var(--fs-14);
  color: var(--color-ink-muted);
}

.slot-batch-panel__entries {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--sp-2);
}

/* Consumer pins its own columns on the .lc-row primitive. */
.slot-batch-entry {
  grid-template-columns: 1fr auto;
}

.slot-batch-entry__day {
  font-size: var(--fs-14);
  font-weight: var(--fw-medium);
  color: var(--color-ink);
}

.slot-batch-entry__meta {
  font-family: var(--font-mono);
  font-size: var(--fs-13);
  color: var(--color-ink-muted);
}

/* Compound (0,2,0) so the accent beats Pico's [type=button] paint. */
.slot-batch-entry .slot-batch-entry__remove {
  padding: var(--sp-1);
  color: var(--color-ink-muted);
}

.slot-batch-entry .slot-batch-entry__remove:hover {
  color: var(--color-danger);
}

.slot-batch-entry__remove-icon {
  display: block;
  width: 1.25em;
  height: 1.25em;
}

.slot-batch-entry__error {
  grid-column: 1 / -1;
  margin: 0;
  font-size: var(--fs-13);
  color: var(--color-danger);
}

/* State variants applied client-side: error = the batch failure stream
   flagged this slot key; flagged = the entry's grid cell became invalid
   after a week swap. */
.slot-batch-entry--error {
  background: var(--color-danger-soft);
  box-shadow: inset 0 0 0 2px var(--color-danger);
}

.slot-batch-entry--flagged {
  background: var(--color-warn-soft);
  box-shadow: inset 0 0 0 2px var(--color-warn);
}

.slot-batch-panel__cap {
  margin: 0;
  font-size: var(--fs-13);
  color: var(--color-warn);
}

/* Already-sent proposals listed below the in-progress batch. The wrapper
   stays in the DOM as a stream-update target even when empty; display:
   contents keeps the empty state from costing a panel grid gap. The inset
   left accent mirrors the grid's --proposed amber without moving rows. */
.slot-batch-panel__sent {
  display: contents;
}

.slot-batch-panel__sent-title {
  margin: 0;
  font-size: var(--fs-13);
  font-weight: var(--fw-medium);
  color: var(--color-ink-muted);
}

.slot-batch-entry--sent {
  box-shadow: inset 3px 0 0 0 var(--color-warn-soft);
}

.slot-batch-entry--sent form {
  margin: 0;
  display: flex;
}

.slot-batch-panel__footer {
  display: grid;
}

/* Separates the cancel-meeting section from the recap content; the panel's
   grid gap owns the vertical rhythm, so the rule itself carries no margin. */
.slot-batch-panel__divider {
  width: 100%;
  height: 0;
  margin: 0;
  border: 0;
  border-top: 1px solid var(--color-rule);
}
