/* Reusable upload dialog: shared by the explorer and LoRA manager. */
.lu-dialog { width:min(920px,calc(100vw - 24px)); max-height:92dvh; margin:auto; padding:0; color:var(--text,#1e293b); background:var(--bg,#fff); border:1px solid var(--border,#ddd); border-radius:16px; box-shadow:0 24px 90px #0005; }
.lu-dialog::backdrop { background:#0f172a99; backdrop-filter:blur(3px); }
.lu-dialog * { box-sizing:border-box; }
.lu-top,.lu-bottom { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 24px; }
.lu-top { border-bottom:1px solid var(--border,#ddd); }
.lu-top h2 { margin:0; font-size:1.25rem; }
.lu-dialog p { margin:6px 0; }
.lu-subtle { color:var(--text-light,var(--text-muted,#64748b)); font-size:.88rem; }
.lu-body { padding:20px 24px; }
.lu-dialog button { cursor:pointer; border:1px solid var(--border,#ddd); background:var(--bg-alt,var(--bg-card,#f1f5f9)); color:inherit; padding:9px 14px; border-radius:8px; font:inherit; font-size:.88rem; }
.lu-dialog button:disabled { opacity:.55; cursor:default; }
.lu-dialog button.lu-primary { background:var(--primary,#6366f1); color:white; border-color:transparent; }
.lu-drop { border:2px dashed var(--border,#ddd); border-radius:12px; text-align:center; padding:30px 18px; transition:border-color .15s,background .15s; }
.lu-drop.lu-over { border-color:var(--primary,#6366f1); background:var(--bg-alt,#f1f5f9); }
.lu-toolbar { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin:14px 0; }
.lu-toolbar select { flex:1; min-width:180px; }
.lu-summary { margin:16px 0; }
.lu-dialog progress { display:block; width:100%; height:8px; accent-color:var(--primary,#6366f1); border:0; border-radius:6px; overflow:hidden; }
.lu-dialog progress::-webkit-progress-bar { background:var(--border,#e2e8f0); }
.lu-dialog progress::-webkit-progress-value { background:var(--primary,#6366f1); }
.lu-card { border:1px solid var(--border,#ddd); border-radius:12px; margin:14px 0; overflow:hidden; }
.lu-file-head { display:flex; gap:12px; align-items:flex-start; padding:16px; background:var(--bg-alt,var(--bg-card,#f8fafc)); }
.lu-file-main { flex:1; min-width:0; }
.lu-file-name { font-weight:600; overflow-wrap:anywhere; }
.lu-stage { margin:5px 0 9px; font-size:.85rem; color:var(--text-light,var(--text-muted,#64748b)); }
.lu-steps { font-size:.78rem; margin-bottom:8px; opacity:.8; }
.lu-editor { padding:16px; display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.lu-field { display:flex; flex-direction:column; gap:5px; font-size:.86rem; font-weight:600; }
.lu-wide { grid-column:1/-1; }
.lu-dialog input:not([type=file]):not([type=checkbox]),.lu-dialog textarea,.lu-dialog select { width:100%; border:1px solid var(--border,#ddd); border-radius:7px; padding:9px 11px; background:var(--bg,var(--bg-input,#fff)); color:inherit; font:inherit; font-weight:400; }
.lu-dialog textarea { min-height:115px; resize:vertical; }
.lu-dialog :focus-visible { outline:3px solid var(--primary,#6366f1); outline-offset:2px; }
.lu-gallery { display:flex; gap:10px; flex-wrap:wrap; }
.lu-preview { margin:0; width:112px; }
.lu-preview img { width:112px; height:112px; object-fit:cover; border-radius:8px; border:1px solid var(--border,#ddd); }
.lu-preview button { width:100%; padding:5px; margin-top:4px; font-size:.78rem; }
.lu-error { color:#dc4444; font-size:.85rem; white-space:pre-wrap; overflow-wrap:anywhere; }
.lu-notice { border:1px solid var(--border,#ddd); border-left:4px solid var(--primary,#6366f1); padding:14px; margin:14px 0; border-radius:8px; background:var(--bg-alt,var(--bg-card,#f8fafc)); }
.lu-consent { display:flex; align-items:flex-start; gap:9px; font-size:.9rem; margin-top:12px; }
.lu-consent input { margin-top:4px; }
.lu-bottom { position:sticky; bottom:0; background:var(--bg,#fff); border-top:1px solid var(--border,#ddd); }
.lu-hidden { display:none!important; }
@media(max-width:580px) { .lu-top,.lu-body,.lu-bottom { padding:14px; } .lu-editor { grid-template-columns:1fr; } .lu-bottom { flex-wrap:wrap; } .lu-top h2 { font-size:1.1rem; } }

/* Each wizard step occupies the window; only the current file has an editor. */
.lu-dialog { width:min(720px,calc(100vw - 24px)); }
.lu-dialog [hidden] { display:none!important; }
.lu-dialog[data-step="edit"] .lu-steps,
.lu-dialog[data-step="edit"] .lu-stage,
.lu-dialog[data-step="edit"] .lu-file-head progress { display:none; }
.lu-dialog[data-step="edit"] .lu-file-head { padding:12px 16px; }
.lu-dialog[data-step="select"] .lu-bottom,
.lu-dialog[data-step="consent"] .lu-bottom { display:none; }
.lu-review-item { padding:16px 0; border-bottom:1px solid var(--border,#ddd); overflow-wrap:anywhere; }
.lu-bottom { flex-wrap:wrap; }
.lu-bottom #lu-footer { flex:1; min-width:160px; }

.lu-dialog[data-step="edit"] { width:min(1120px,calc(100vw - 24px)); }
