.stepper{display:flex;align-items:center;justify-content:center;max-width:600px;margin:0 auto;width:100%}.step{display:flex;flex-direction:column;align-items:center;gap:10px;flex-shrink:0}.step-num{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-family:var(--mono);font-size:13px;font-weight:600;background:var(--surface);border:1.5px solid var(--bd);color:var(--tx3);transition:all .25s}.step-label{font-size:12.5px;font-weight:500;color:var(--tx3);transition:color .25s;white-space:nowrap}.step.is-active .step-num{background:var(--brand);border-color:var(--brand);color:#fff}.step.is-active .step-label{color:var(--brand);font-weight:600}.step.is-done .step-num{background:var(--ok);border-color:var(--ok);color:#fff}.step.is-done .step-label{color:var(--ok-2)}.step-line{flex:1;height:1px;background:var(--bd);margin:0 14px;max-width:100px;position:relative;top:-16px}@media (max-width: 600px){.step-label{font-size:11.5px}.step-line{margin:0 8px;max-width:60px}}.upload-card{display:flex;flex-direction:column;gap:16px;max-width:580px;margin:0 auto;width:100%}.dropzone{border:1.5px dashed var(--bd2);border-radius:var(--r2);padding:50px 24px;text-align:center;cursor:pointer;transition:all .18s;background:var(--surf2)}.dropzone:hover,.dropzone.over{border-color:var(--brand);background:var(--brand-bg)}.dropzone:focus-visible{outline:2px solid var(--brand);outline-offset:3px}.dz-icon{width:38px;height:38px;color:var(--tx2);margin:0 auto 14px;display:block;transition:color .18s}.dropzone:hover .dz-icon,.dropzone.over .dz-icon{color:var(--brand)}.dz-title{font-weight:600;font-size:16px;color:var(--tx);margin-bottom:4px}.dz-sub{color:var(--tx2);font-size:13px}.file-meta{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--surf2);border:1px solid var(--bd);border-radius:var(--r2)}.fm-icon{width:22px;height:22px;color:var(--brand);flex-shrink:0}.fm-info{flex:1;min-width:0}.fm-name{font-family:var(--mono);font-size:13px;font-weight:500;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fm-size{color:var(--tx3);font-size:11.5px;font-family:var(--mono);margin-top:2px}.progress-card{max-width:580px;margin:0 auto;width:100%}.progress-head{display:flex;align-items:center;gap:16px}.spinner{width:28px;height:28px;border:2.5px solid var(--bd);border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.ph-title{font-weight:600;font-size:15px;color:var(--tx)}.ph-sub{color:var(--tx2);font-size:13px;margin-top:3px}.hint{color:var(--tx3);font-size:12.5px;margin-top:16px}.result-card{text-align:center;padding:36px 28px;max-width:580px;margin:0 auto;width:100%}.result-icon{width:56px;height:56px;border-radius:50%;background:var(--ok-bg);display:grid;place-items:center;margin:0 auto 16px;color:var(--ok)}.result-icon svg{width:28px;height:28px}.result-title{font-weight:700;font-size:19px;color:var(--brand);margin-bottom:6px}.result-sub{color:var(--tx2);font-size:14px;margin-bottom:22px}.result-actions{display:flex;flex-direction:column;gap:10px;align-items:stretch;max-width:320px;margin:0 auto}.error-card{border-left:4px solid var(--err);max-width:580px;margin:0 auto;width:100%}.error-title{font-weight:700;color:var(--err);margin-bottom:8px;font-size:15px}.error-msg{color:var(--tx2);font-size:13px;margin-bottom:18px;font-family:var(--mono);background:var(--err-bg);border:1px solid var(--err-bd);padding:10px 12px;border-radius:6px;word-break:break-word}.features{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;max-width:580px;margin:0 auto;width:100%}.feature{background:var(--surface);border:1px solid var(--bd);border-radius:12px;padding:22px 20px;transition:all .18s}.feature:hover{border-color:var(--bd2);box-shadow:var(--sh2)}.feature-icon{width:38px;height:38px;border-radius:9px;display:grid;place-items:center;margin-bottom:14px}.feature-icon svg{width:20px;height:20px}.icon-blue{background:var(--brand-bg);color:var(--brand)}.icon-green{background:var(--ok-bg);color:var(--ok-2)}.feature-title{font-weight:700;font-size:14.5px;color:var(--tx);margin-bottom:6px;letter-spacing:-.15px}.feature-desc{color:var(--tx2);font-size:13px;line-height:1.55}@media (max-width: 760px){.features{grid-template-columns:1fr;gap:12px}}.dropzone.is-filled .dz-title{font-family:var(--mono);font-size:14px}.dropzone.is-filled .dz-sub{font-family:var(--mono);font-size:11.5px;color:var(--tx3)}
