.mi-slip {
  display: grid;
  gap: var(--ds-s-5);
  min-width: 0;
  max-width: 100%;
  container: mi-slip / inline-size;
  color: var(--ds-ink);
  padding: var(--ds-s-4);
  background: var(--ds-surface);
  border: var(--ds-rule-hair) solid var(--ds-line);
  border-radius: var(--ds-r-lg);
}

.mi-slip-crumb,
.mi-slip-sub,
.mi-slip-muted,
.mi-slip-reason,
.mi-slip-result-label,
.mi-slip-total {
  margin: 0;
  color: var(--ds-ink-2);
  font-size: var(--ds-text-sm);
  line-height: var(--ds-lh-sm);
}

.mi-slip-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--ds-s-3);
  padding-bottom: var(--ds-s-4);
  border-bottom: 1px solid var(--ds-line);
}

.mi-slip-head > div {
  display: grid;
  gap: var(--ds-s-1);
  min-width: 0;
}

.mi-slip-title,
.mi-slip-lines-head,
.mi-slip-rail-head {
  margin: 0;
  color: var(--ds-ink);
  font-size: var(--ds-text-md);
  font-weight: var(--ds-w-semi);
}

.mi-slip-rail-head {
  padding: var(--ds-s-3) var(--ds-s-4);
  font-size: var(--ds-text-base);
}

.mi-slip-rail-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.mi-slip-status {
  display: grid;
  gap: var(--ds-s-2);
}

.mi-slip-status:empty {
  display: none;
}

.mi-slip-result {
  display: grid;
  gap: var(--ds-s-2);
  padding: var(--ds-s-3) var(--ds-s-4);
  border-radius: var(--ds-r-md);
  background: var(--ds-tint);
}

.mi-slip-fields {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--ds-s-4);
  padding-bottom: var(--ds-s-4);
  border-bottom: 1px solid var(--ds-line);
}

.mi-slip-cell {
  display: grid;
  align-content: start;
  gap: var(--ds-s-2);
  min-width: 0;
}

.mi-slip-wide {
  grid-column: 1 / -1;
}

.mi-slip-field {
  width: 100%;
  min-width: 0;
}

.mi-slip .mi-slip-field select {
  width: 100%;
  min-width: 0;
}

.mi-slip-input {
  box-sizing: border-box;
  width: 100%;
  min-height: var(--ds-control-h);
  padding: 0 var(--ds-s-3);
  border: 0;
  border-radius: var(--ds-r-md);
  background: var(--ds-surface);
  box-shadow: inset 0 0 0 1px var(--ds-field);
  color: var(--ds-ink);
  font: inherit;
  font-size: var(--ds-text-base);
  font-weight: var(--ds-w-regular);
}

.mi-slip-input:focus-visible {
  outline: var(--ds-focus-w) solid var(--ds-focus);
  outline-offset: var(--ds-focus-off);
}

.mi-slip-check {
  display: inline-flex;
  align-items: center;
  gap: var(--ds-s-2);
  min-height: var(--ds-control-h);
  color: var(--ds-ink);
  font-size: var(--ds-text-base);
  cursor: pointer;
}

.mi-slip .mi-segmented {
  display: flex;
  flex-wrap: wrap;
  width: fit-content;
  max-width: 100%;
}

.mi-slip-other {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: var(--ds-s-3);
}

.mi-slip-other .mi-slip-field {
  width: auto;
  min-width: 160px;
}

.mi-slip-photo {
  display: grid;
  justify-items: start;
  gap: var(--ds-s-2);
}

.mi-slip-photo > .mi-field-label {
  color: var(--ds-ink-2);
  font-size: var(--ds-text-sm);
  font-weight: var(--ds-w-medium);
}

.mi-slip-msg:empty {
  display: none;
}

.mi-slip-bad {
  margin: 0;
  font-size: var(--ds-text-sm);
}

.mi-slip-lines {
  display: grid;
  gap: var(--ds-s-3);
  min-width: 0;
}

.mi-slip-table {
  display: grid;
  min-width: 0;
}

.mi-slip-table .mi-list-header,
.mi-slip-line {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(96px, .7fr) minmax(0, .8fr) minmax(0, .8fr) minmax(0, 1.6fr);
  gap: var(--ds-s-3);
  align-items: start;
}

.mi-slip-table .mi-list-header {
  padding: 0 0 var(--ds-s-2);
  border-bottom: 1px solid var(--ds-line);
}

.mi-slip-line {
  padding: var(--ds-s-3) 0;
  border-bottom: 1px solid var(--ds-line);
  font-size: var(--ds-text-base);
}

.mi-slip-cell-part,
.mi-slip-cell-cat {
  display: grid;
  justify-items: start;
  gap: var(--ds-s-1);
  min-width: 0;
  overflow-wrap: anywhere;
}

.mi-slip-sub2 {
  color: var(--ds-ink-2);
  font-size: var(--ds-text-sm);
}

.mi-slip-cell-num,
.mi-slip-qty-fixed,
.mi-slip-total {
  font-variant-numeric: tabular-nums;
}

.mi-slip-cell-qty .mi-field-label {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.mi-slip-choices {
  display: grid;
  gap: var(--ds-s-1);
}

.mi-slip-choice {
  display: flex;
  align-items: center;
  gap: var(--ds-s-2);
  min-height: var(--ds-control-h);
  color: var(--ds-ink-2);
  font-size: var(--ds-text-sm);
}

.mi-slip-add {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 2fr) minmax(0, 1fr) minmax(0, .6fr) minmax(0, .8fr) auto;
  gap: var(--ds-s-3);
  align-items: end;
  padding: var(--ds-s-3) 0;
}

.mi-slip-keyed {
  margin: 0;
  padding-left: var(--ds-s-5);
  color: var(--ds-ink-2);
  font-size: var(--ds-text-sm);
}

.mi-slip-actions {
  display: flex;
  gap: var(--ds-s-3);
}

@media (max-width: 759px) {
  .mi-slip {
    gap: var(--ds-s-4);
  }

  .mi-slip-crumb,
  .mi-slip-sub,
  .mi-slip-muted,
  .mi-slip-reason,
  .mi-slip-result-label,
  .mi-slip-total,
  .mi-slip-sub2,
  .mi-slip-bad,
  .mi-slip-keyed,
  .mi-slip-choice {
    font-size: var(--ds-text-p-meta);
  }

  .mi-slip-fields {
    grid-template-columns: minmax(0, 1fr);
  }

  .mi-slip .mi-slip-input,
  .mi-slip .mi-slip-field select {
    min-height: var(--ds-touch-h);
    font-size: var(--ds-text-p-body);
  }

  .mi-slip .mi-slip-check,
  .mi-slip .mi-slip-choice {
    min-height: var(--ds-touch-h);
    font-size: var(--ds-text-p-body);
  }

  .mi-slip-table .mi-list-header {
    display: none;
  }

  .mi-slip-line {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--ds-s-2) var(--ds-s-3);
    font-size: var(--ds-text-p-body);
  }

  .mi-slip-cell-part,
  .mi-slip-cell-cat {
    grid-column: 1 / -1;
  }

  .mi-slip-add {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }

  .mi-slip-add .mi-slip-field:nth-child(-n+3),
  .mi-slip-add-action {
    grid-column: 1 / -1;
  }

  .mi-slip-other .mi-slip-field {
    width: 100%;
  }
}

/* The form follows the width it is given, not the window: the shell's side list and panes
   can leave far less room than the viewport suggests, so lines and "Add line" wrap instead of clipping. */
.mi-slip input,
.mi-slip select,
.mi-slip .mi-slip-field {
  min-width: 0;
  max-width: 100%;
}

@container mi-slip (max-width: 899px) {
  .mi-slip-fields {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .mi-slip-table .mi-list-header {
    display: none;
  }

  .mi-slip-line {
    grid-template-columns: minmax(0, 1fr) auto auto;
    gap: var(--ds-s-2) var(--ds-s-3);
  }

  .mi-slip-cell-part,
  .mi-slip-cell-cat {
    grid-column: 1 / -1;
  }

  .mi-slip-add {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .mi-slip-add .mi-slip-field:nth-child(2),
  .mi-slip-add-action {
    grid-column: 1 / -1;
  }
}

@container mi-slip (max-width: 559px) {
  .mi-slip-fields,
  .mi-slip-add {
    grid-template-columns: minmax(0, 1fr);
  }

  .mi-slip-line {
    grid-template-columns: minmax(0, 1fr) auto;
  }
}

.mi .mi-slip-save {
  display: flex;
  justify-content: flex-end;
  padding-top: var(--ds-s-3);
  border-top: var(--ds-rule-hair) solid var(--ds-line);
}

.mi.is-narrow .mi-slip-save .mi-button {
  min-height: var(--ds-touch-h);
}

.mi .mi-slip .mi-pill {
  padding: 0;
  background: transparent;
  color: var(--ds-ink-2);
}
