.model-progress{margin:20px 0;padding:20px;border:1px solid #d9dfe4;border-radius:16px;background:#f5f7f8;color:#18232b;text-align:left;overflow-wrap:anywhere}.progress-title{display:block;font-size:1.05rem}.model-progress .progress-note{margin:8px 0 18px;font-size:.92rem;line-height:1.6;color:#43515d}.model-progress ol{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0;padding:0}.model-progress li{display:flex;flex-direction:column;gap:8px;font-size:.85rem;line-height:1.4;color:#586570}.progress-marker{display:grid;place-items:center;width:32px;height:32px;border:1px solid #a8b3bb;border-radius:50%;background:white;font-weight:700}.model-progress .done .progress-marker{background:#186347;color:white;border-color:#186347}.model-progress .current{color:#17232c;font-weight:700}.model-progress .current .progress-marker{border:2px solid #18232b;box-shadow:0 0 0 4px #dde4e9}.model-progress[data-phase="upload"] .current .progress-marker,.model-progress[data-phase="slicing"] .current .progress-marker,.model-progress[data-phase="queued"] .current .progress-marker{animation:progress-pulse 1.6s ease-in-out infinite}@keyframes progress-pulse{50%{box-shadow:0 0 0 7px #dde4e980}}@media(prefers-reduced-motion:reduce){.model-progress .progress-marker{animation:none!important}}@media(max-width:600px){.model-progress ol{grid-template-columns:1fr}.model-progress li{flex-direction:row;align-items:center}.progress-marker{flex-shrink:0}.model-progress{padding:16px}}

.processing-card{padding:30px;background:#fff;border:1px solid #dae5e0;border-radius:20px;box-shadow:0 12px 35px #153c2910;text-align:left;color:#1c3027;margin:18px 0;overflow:hidden}.processing-title{display:block;font-size:19px;line-height:1.5;margin-bottom:24px}.processing-row{display:flex;gap:16px;align-items:center}.processing-spinner{width:30px;height:30px;flex-shrink:0;border:3px solid #e0eee6;border-top-color:#25865c;border-radius:50%;animation:processing-spin 1s linear infinite}.processing-status{font-size:15px;line-height:1.6;font-weight:600;overflow-wrap:anywhere}.processing-track{height:6px;border-radius:6px;background:#e7eee9;overflow:hidden;margin:24px 0 16px}.processing-track>span{display:block;width:35%;height:100%;border-radius:6px;background:#25865c;animation:processing-slide 2s ease-in-out infinite}.processing-card .processing-help{font-size:12px;line-height:1.7;margin:0;color:#64796d}.processing-card[hidden]{display:none!important}
.model-progress[data-phase=upload]{padding:0;border:0;background:none}.model-progress[data-phase=upload]>.progress-title,.model-progress[data-phase=upload]>.progress-note,.model-progress[data-phase=upload]>ol{display:none}.guided-order #model-progress[data-phase=upload]{display:block!important}.guided-order #model-progress[data-phase=upload] .processing-card{margin-bottom:0}
@keyframes processing-spin{to{transform:rotate(360deg)}}@keyframes processing-slide{from{transform:translateX(-110%)}to{transform:translateX(390%)}}@media(prefers-reduced-motion:reduce){.processing-spinner,.processing-track>span{animation:none}.processing-track>span{width:100%;opacity:.55}}@media(max-width:540px){.processing-card{padding:22px 18px}.processing-title{font-size:17px;margin-bottom:20px}.processing-row{gap:12px}.processing-status{font-size:13px}}

/* Replace the file picker with progress in the same upload area. */
:is(#upload-zone, #home-upload-zone).is-uploading > :not(#model-progress){display:none!important}
:is(#upload-zone, #home-upload-zone).is-uploading + #upload-status{display:none}
:is(#upload-zone, #home-upload-zone).is-uploading #model-progress{width:100%;margin:0}
:is(#upload-zone, #home-upload-zone).is-uploading .processing-card{margin:0;padding:0;border:0;border-radius:0;box-shadow:none;background:transparent;color:#243e52}
:is(#upload-zone, #home-upload-zone).is-uploading .processing-help{font-size:14px;color:#607282}
:is(#upload-zone, #home-upload-zone).is-uploading .processing-spinner{border-color:#dae4ed;border-top-color:#456e8a}
:is(#upload-zone, #home-upload-zone).is-uploading .processing-track{background:#dae4ed}
:is(#upload-zone, #home-upload-zone).is-uploading .processing-track>span{background:#456e8a}

#home-upload-zone.is-uploading ~ #home-upload-status{display:none}
