/* Modal base */
.gem-modal { position: fixed; inset: 0; z-index: 10000; display: none; }
.gem-modal.is-open { display: block; }
.gem-modal-open { overflow: hidden; }
.gem-modal__backdrop { position:absolute; inset:0; background:rgba(15,15,20,.55); backdrop-filter:saturate(120%) blur(2px); }
.gem-modal__panel { position:relative; width:min(620px, 92vw); margin:8vh auto; background:#fff; border-radius:16px; box-shadow:0 10px 40px rgba(0,0,0,.18); overflow:hidden; }
.gem-modal__header { display:flex; align-items:center; justify-content:space-between; padding:18px 22px; border-bottom:1px solid #eee; }
.gem-modal__header h3 { margin:0; font-size:20px; }
.gem-modal__close { background:transparent; border:0; font-size:28px; line-height:1; cursor:pointer; }
.gem-modal__body { padding:22px; }
.gem-modal__footer { display:flex; justify-content:flex-end; gap:10px; padding:16px 22px; border-top:1px solid #eee; }

/* Dropzone */
.gem-dropzone { border:2px dashed #c7b4ff; border-radius:14px; padding:26px; text-align:center; transition:.15s ease; }
.gem-dropzone.is-over { background:#faf7ff; border-color:#9c6bff; }
.gem-dropzone__title { font-weight:600; margin:0 0 6px; }
.gem-dropzone__or { margin:0 0 10px; color:#777; }

/* Progress */
.gem-progress { position:relative; height:12px; background:#f2f2f5; border-radius:8px; margin-top:16px; overflow:hidden; }
.gem-progress__bar { position:absolute; left:0; top:0; bottom:0; width:0%; background:linear-gradient(90deg,#a98bff,#8f6cff); }
.gem-progress__label { margin-top:8px; font-size:12px; color:#555; text-align:right; }

/* Uploaded name */
.gem-uploaded { margin-top:14px; font-size:14px; }
.gem-uploaded__item { padding:8px 10px; background:#f8f8ff; border:1px solid #ecebfd; border-radius:10px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* Buttons scoped to modal (inherit theme styles; only ghost fallback) */
.gem-modal .gem-btn:disabled { opacity:.55; cursor:not-allowed; }
.gem-modal .gem-btn.gem-btn--ghost { background:#fff; border:1px solid #DDD; }