/* Fixed footer — always at viewport bottom (not mid-content sticky) */
.ds-table-edit-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 40;
  margin: 0;
  padding: 0.55rem 1rem calc(0.55rem + env(safe-area-inset-bottom, 0px));
  background: color-mix(in srgb, var(--ds-surface) 94%, transparent);
  backdrop-filter: blur(10px);
  border-top: 1px solid var(--ds-border-subtle);
  box-shadow: 0 -4px 16px rgb(15 23 42 / 0.06);
}
.ds-table-edit-bar.hidden { display: none !important; }
body.portfolio-table-edit-bar-open {
  padding-bottom: calc(3.25rem + env(safe-area-inset-bottom, 0px));
}
.ds-table-edit-bar-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem 1rem;
  max-width: 72rem;
  margin: 0 auto;
}
.ds-table-edit-bar-status {
  margin: 0;
  font-size: var(--ds-text-caption);
  font-weight: var(--ds-weight-semibold);
  color: var(--ds-brand-hero);
  letter-spacing: 0.01em;
}
.ds-table-edit-bar-actions {
  display: flex;
  gap: var(--ds-space-2);
  flex-wrap: wrap;
  margin-left: auto;
}
.ds-table-edit-bar-actions.hidden { display: none !important; }
/* Desktop: primary Cancel/Review in header; mobile: in footer only */
@media (min-width: 641px) {
  .ds-table-edit-bar-actions--mobile {
    display: none !important;
  }
}
@media (max-width: 640px) {
  /* Mobile: Cancel/Review in footer; keep date in header (picker still needs top space) */
  .ds-table-edit-header-actions .ds-snapshot-action-btn--cancel,
  .ds-table-edit-header-actions .ds-snapshot-action-btn--review {
    display: none !important;
  }
}
