/* ============================================================
   BOOKING — DONE STATES, NOTICE, TOAST
   ============================================================ */

/* ---- Success notice ----
   The toast self-destructs after a few seconds. On its own, the only lasting
   evidence that a batch succeeded is the selected orders quietly disappearing
   from the list below, which reads as a bug rather than as a result. This
   persists until dismissed. */
.bk-notice {
  display: none;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 14px;
  padding: 13px 14px;
  border-radius: var(--r-md, 12px);
  background: color-mix(in srgb, var(--success, #22c55e) 13%, transparent);
  border: 1px solid color-mix(in srgb, var(--success, #22c55e) 34%, transparent);
  color: var(--success-dark);
}
.bk-notice.is-show { display: flex; }
.bk-notice b { display: block; font-size: 12.5px; }
.bk-notice span { display: block; font-size: 11.5px; opacity: .88; margin-top: 3px; line-height: 1.5; }
.bk-notice > div { flex: 1 1 auto; min-width: 0; }
/* Prefixed so `.view button`'s width/height cannot shrink the dismiss glyph. */
.booking-view .bk-notice-x {
  flex: 0 0 auto;
  width: 24px; height: 24px;
  display: grid;
  place-items: center;
  border: 0;
  background: transparent;
  color: inherit;
  opacity: .6;
  cursor: pointer;
  padding: 0;
  border-radius: 6px;
  line-height: 0;
}
.bk-notice-x:hover { opacity: 1; }
.bk-notice-x:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; opacity: 1; }

/* ---- Toast ----
   Must stack above the modal overlays (z-index 20-ish) or a toast fired from
   inside a dialog renders behind it and looks like nothing happened. */
.bk-toast {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 400;
  display: flex;
  align-items: center;
  gap: 9px;
  max-width: 360px;
  padding: 12px 15px;
  border-radius: 12px;
  /* Inverted against the page: the toast sits on top of content, so it has to
     stay readable in either theme. `background: var(--card)` with hardcoded
     `#fff` text looked correct in dark and was white-on-white in light.
     Swapping the two text-ish tokens gives a solid contrasting surface
     automatically — near-black on light, near-white on dark. */
  background: var(--text);
  color: var(--bg);
  border: 1px solid color-mix(in srgb, var(--text) 80%, var(--bg));
  font-size: 12px;
  line-height: 1.45;
  box-shadow: 0 12px 30px rgba(0, 0, 0, .32);
  opacity: 0;
  transform: translateY(8px);
  pointer-events: none;
  transition: opacity .22s ease, transform .22s ease;
}
/* The tick inherited from the markup would vanish on a light surface. */
.bk-toast .i { color: currentColor; }
.bk-toast.is-error {
  background: var(--danger);
  color: #fff;
  border-color: transparent;
}
.bk-toast.is-show {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

/* ---- Done card ----
   The end state keeps its existing EcomOS structure; these rules only tighten
   the batch variant so the two done states feel like one family. */
.card.done .dh { display: flex; align-items: center; gap: 14px; }
.card.done h2 { margin: 0 0 5px; font-size: 19px; letter-spacing: -.4px; }
.card.done .dk {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 16px 0;
}
.card.done .dk > div {
  padding: 12px 13px;
  border-radius: var(--r-md, 11px);
  background: var(--elev);
  border: 1px solid var(--line);
}
.card.done .dk span { display: block; font-size: 10.5px; color: var(--muted); }
.card.done .dk b { display: block; font-size: 17px; margin-top: 5px; letter-spacing: -.3px; }
.card.done .dk .cps { display: flex; align-items: center; gap: 4px; font-size: 13px; }

@media (max-width: 760px) {
  .card.done .dk { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bk-toast { left: 14px; right: 14px; max-width: none; }
}