/* ── Interactive cropper modal (SP3-2) ──────────────────────────────── */
.s-cropper-overlay {
  position: fixed; inset: 0; z-index: 2000;
  background: rgba(0, 0, 0, .55);
  display: flex; align-items: center; justify-content: center;
  backdrop-filter: blur(2px);
}
.s-cropper-modal {
  background: var(--bs-body-bg, #fff); color: var(--bs-body-color, #1d1d1f);
  border-radius: 14px; box-shadow: 0 20px 60px rgba(0, 0, 0, .35);
  width: min(760px, 92vw); max-height: 90vh; display: flex; flex-direction: column; overflow: hidden;
}
.s-cropper-stage { padding: 14px; background: var(--bs-tertiary-bg, #f2f2f4); }
.s-cropper-stage .s-cropper-img { display: block; max-width: 100%; max-height: 64vh; }
.s-cropper-footer { display: flex; justify-content: flex-end; gap: 10px; padding: 12px 16px; border-top: 1px solid var(--bs-border-color, rgba(0,0,0,.1)); }
.s-cropper-cancel, .s-cropper-ok {
  border: 1px solid var(--bs-border-color, rgba(0,0,0,.15)); border-radius: 8px;
  padding: 8px 16px; cursor: pointer; font-weight: 600;
}
.s-cropper-cancel { background: var(--bs-tertiary-bg, #f2f2f4); color: var(--bs-body-color, #1d1d1f); }
.s-cropper-ok { background: var(--bs-primary, #1d1d1f); color: #fff; border-color: transparent; }
