:root{--primary: #1677ff;--primary-hover: #4096ff;--primary-bg: #e6f4ff;--success: #52c41a;--success-bg: #f6ffed;--warning: #faad14;--warning-bg: #fffbe6;--danger: #ff4d4f;--danger-bg: #fff2f0;--text-primary: #1f1f1f;--text-secondary: #666;--text-hint: #999;--border: #e8e8e8;--bg: #f5f7fa;--bg-card: #fff;--radius: 10px;--shadow: 0 2px 12px rgba(0,0,0,.06);--max-width: 640px}*{margin:0;padding:0;box-sizing:border-box}*{min-width:0}*{-webkit-tap-highlight-color:transparent}button,.btn,.select-option,.device-card,.upload-item,.sselect-trigger,.upload-input-native,.signature-box,a{touch-action:manipulation}p,span,div,td,th,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;word-break:break-word}html,body{width:100%;max-width:100vw;overflow-x:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:15px;color:var(--text-primary);background:var(--bg);-webkit-font-smoothing:antialiased;line-height:1.6}#root{min-height:100vh;width:100%;max-width:100vw;overflow-x:hidden}.page{max-width:var(--max-width);width:100%;margin:0 auto;padding:16px;min-height:100vh;min-height:100dvh;overflow-x:hidden}.card{background:var(--bg-card);border-radius:var(--radius);padding:20px;margin-bottom:12px;box-shadow:var(--shadow);max-width:100%;min-width:0;overflow-x:hidden}.card-title{font-size:17px;font-weight:600;margin-bottom:16px;color:var(--text-primary);padding-bottom:12px;border-bottom:1px solid var(--border)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:44px;padding:0 24px;border:none;border-radius:8px;font-size:15px;font-weight:500;cursor:pointer;transition:all .2s;outline:none;-webkit-user-select:none;user-select:none;white-space:nowrap}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-outline{background:#fff;color:var(--primary);border:1px solid var(--primary)}.btn-outline:hover:not(:disabled){background:var(--primary-bg)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:#f5f5f5}.btn-danger{background:var(--danger);color:#fff}.btn-block{width:100%}.btn-lg{height:50px;font-size:16px}.form-group{margin-bottom:18px}.form-label{display:flex;align-items:center;gap:6px;margin-bottom:6px;font-size:14px;font-weight:500;color:var(--text-primary)}.form-label .required{color:var(--danger);font-size:12px;margin-left:2px}.form-label .optional{color:var(--text-hint);font-size:12px;font-weight:400}.form-input,.form-select,.form-textarea{width:100%;max-width:100%;min-width:0;height:44px;padding:0 12px;border:1px solid var(--border);border-radius:8px;font-size:15px;color:var(--text-primary);background:#fff;outline:none;transition:border-color .2s,box-shadow .2s;-webkit-appearance:none}.form-textarea{height:auto;padding:10px 12px;resize:vertical;min-height:80px}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--primary);box-shadow:0 0 0 2px #1677ff1a}.form-input.error,.form-select.error,.form-textarea.error{border-color:var(--danger);box-shadow:0 0 0 2px #ff4d4f1a}.form-input.error:focus,.form-select.error:focus,.form-textarea.error:focus{box-shadow:0 0 0 2px #ff4d4f26}.form-hint{font-size:12px;color:var(--text-hint);margin-top:4px;line-height:1.5}.form-error{font-size:12px;color:var(--danger);margin-top:4px;display:flex;align-items:center;gap:4px}.field-rejected{border-color:var(--danger)!important;background:#fff2f0!important}.field-rejected .form-label{color:var(--danger)}.select-options{display:flex;flex-wrap:wrap;gap:8px}.select-option{flex:0 0 calc(50% - 4px);height:48px;display:flex;align-items:center;justify-content:center;border:2px solid var(--border);border-radius:8px;font-size:14px;cursor:pointer;transition:all .2s;background:#fff}.select-option:hover{border-color:var(--primary)}.select-option.active{border-color:var(--primary);background:var(--primary-bg);color:var(--primary);font-weight:600}.step-indicator{display:flex;align-items:center;justify-content:center;padding:20px 0 8px;gap:0}.step-dot{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;border:2px solid var(--border);color:var(--text-hint);background:#fff;transition:all .3s;flex-shrink:0}.step-dot.active{border-color:var(--primary);background:var(--primary);color:#fff}.step-dot.done{border-color:var(--success);background:var(--success);color:#fff}.step-line{width:28px;height:2px;background:var(--border);transition:background .3s;flex-shrink:0}.step-line.done{background:var(--success)}.step-line.active{background:var(--primary)}.upload-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.upload-item{position:relative;aspect-ratio:3/2;max-height:200px;border-radius:6px;overflow:hidden;border:1.5px dashed var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;background:#fafafa}.upload-item:hover{border-color:var(--primary);background:var(--primary-bg)}.upload-item.has-image{border-style:solid;border-color:var(--border)}.upload-item img{width:100%;height:100%;object-fit:cover}.upload-item .upload-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--text-hint);font-size:11px;text-align:center;line-height:1.4}.upload-item .upload-placeholder svg{width:22px;height:22px;opacity:.4}.upload-label-wrap{position:absolute;top:0;right:0;bottom:0;left:0;cursor:pointer;z-index:1;display:flex;align-items:center;justify-content:center}.upload-input-native{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.upload-item .upload-remove{position:absolute;top:4px;right:4px;height:22px;padding:0 8px;border-radius:11px;background:#00000080;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;font-size:11px}.upload-item .upload-example-badge{position:absolute;bottom:4px;left:4px;background:#1677ffd9;color:#fff;font-size:10px;padding:1px 6px;border-radius:10px;cursor:pointer}.upload-row{display:flex;gap:8px;align-items:stretch}.upload-item-half{flex:0 0 calc(50% - 4px);min-width:0;aspect-ratio:auto;max-height:200px}.upload-example-side{position:relative;flex:0 0 calc(50% - 4px);min-width:0;max-height:200px;border-radius:6px;overflow:hidden;border:1.5px dashed var(--border);cursor:pointer;background:#fafafa;transition:all .2s}.upload-example-side:hover{border-color:var(--primary)}.upload-example-side img{width:100%;height:100%;object-fit:cover}.upload-example-side .upload-example-badge{position:absolute;top:4px;left:4px;background:#1677ffd9;color:#fff;font-size:10px;padding:1px 6px;border-radius:3px;z-index:1}.image-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:9999;padding:20px;animation:fadeIn .2s}.image-modal-content{position:relative;max-width:100%;max-height:100%;display:flex;flex-direction:column;align-items:center}.image-modal-content img{max-width:100vw;max-height:80vh;object-fit:contain;border-radius:6px;box-shadow:0 4px 20px #0000004d}.image-modal-close{position:absolute;top:-36px;right:0;background:#ffffffe6;border:none;color:#333;font-size:13px;padding:6px 16px;border-radius:16px;cursor:pointer}.image-modal-hint{background:#0009;color:#fff;font-size:13px;padding:6px 20px;border-radius:16px;margin-top:10px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.upload-section-title{font-size:14px;font-weight:600;margin-bottom:12px;color:#333}.upload-section-divider{margin-top:8px;padding-top:14px;border-top:1px dashed #e8e8e8}.info-notice{margin-top:12px;padding:8px 10px;background:#f0f9ff;border-radius:6px;font-size:11px;color:#1677ff;line-height:1.6}.form-footer{position:fixed;bottom:0;left:0;right:0;background:#fff;padding:12px 16px;padding-bottom:max(12px,env(safe-area-inset-bottom));display:flex;gap:12px;box-shadow:0 -2px 12px #0000001a;max-width:var(--max-width);width:100%;margin:0 auto;z-index:1000}.form-footer .btn{flex:1}.summary-section{margin-bottom:16px}.summary-section .summary-label{font-size:11px;color:var(--text-hint);margin-bottom:4px}.summary-section .summary-value{font-size:14px;color:var(--text-primary);word-break:break-all}.summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.summary-grid img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:4px;border:1px solid var(--border)}.summary-no-photo{aspect-ratio:4/3;background:#f5f5f5;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:10px;color:#bbb;border:1px dashed #ddd}.summary-photo-label{font-size:9px;text-align:center;margin-top:2px;color:#888;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-card{text-align:center;padding:32px 20px}.status-icon{width:72px;height:72px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-size:36px}.status-icon.pending{background:var(--warning-bg);color:var(--warning)}.status-icon.approved{background:var(--success-bg);color:var(--success)}.status-icon.rejected{background:var(--danger-bg);color:var(--danger)}.status-icon.reviewing{background:var(--primary-bg);color:var(--primary)}.status-title{font-size:20px;font-weight:600;margin-bottom:8px}.status-desc{font-size:14px;color:var(--text-secondary);margin-bottom:8px;line-height:1.6}.status-time{font-size:12px;color:var(--text-hint)}.rejected-fields{margin-top:16px;text-align:left}.rejected-field{background:var(--danger-bg);border:1px solid #ffa39e;border-radius:8px;padding:12px;margin-bottom:8px}.rejected-field .field-name{font-weight:600;color:var(--danger);font-size:14px;margin-bottom:4px}.rejected-field .field-reason{font-size:13px;color:var(--text-secondary);line-height:1.6}.rejected-field .field-example{margin-top:8px}.rejected-field .field-example img{max-width:200px;border-radius:6px;border:2px solid var(--success)}.login-header{text-align:center;padding:40px 0 24px}.login-header img{width:64px;height:64px;border-radius:12px;margin-bottom:12px}.login-header h1{font-size:22px;font-weight:700;margin-bottom:4px}.login-header p{font-size:14px;color:var(--text-hint)}.sms-input-row{display:flex;gap:10px}.sms-input-row .form-input{flex:1}.sms-input-row .btn{flex-shrink:0;min-width:110px}.countdown-text{color:var(--text-hint);font-size:13px}.tips-banner{background:var(--primary-bg);border-radius:8px;padding:12px 16px;font-size:13px;color:var(--primary);line-height:1.6;margin-bottom:16px;display:flex;gap:8px}.tips-banner .tips-icon{font-size:14px;flex-shrink:0;width:18px;height:18px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-style:italic;line-height:1}.toast{position:fixed;top:20px;left:50%;transform:translate(-50%);background:#000c;color:#fff;padding:10px 20px;border-radius:8px;font-size:14px;z-index:9999;animation:toastIn .3s ease}.toast.success{background:var(--success)}.toast.error{background:var(--danger)}@keyframes toastIn{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.loading-spinner{display:flex;align-items:center;justify-content:center;padding:40px;color:var(--text-hint)}.device-card{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--border);border-radius:10px;margin-bottom:10px;transition:all .2s}.device-card:hover{border-color:var(--primary)}.device-card img{width:56px;height:56px;object-fit:cover;border-radius:8px;flex-shrink:0}.device-card .device-info{flex:1;min-width:0}.device-card .device-name{font-size:15px;font-weight:600;margin-bottom:2px}.device-card .device-price,.device-price{font-size:13px;font-weight:600;color:var(--danger)}.device-card .device-desc{font-size:12px;color:var(--text-hint);margin-top:2px}.device-card .device-exam{font-size:11px;color:var(--warning);margin-top:2px}.device-qty{display:flex;align-items:center;gap:8px;flex-shrink:0}.device-qty button{width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:#fff;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.device-qty button:hover{border-color:var(--primary);color:var(--primary)}.device-qty button:disabled{opacity:.3;cursor:not-allowed}.device-qty span{font-size:16px;font-weight:600;min-width:20px;text-align:center}.stock-sync-bar{display:flex;align-items:center;gap:6px;padding:6px 12px;margin-bottom:10px;background:#f6f8fa;border-radius:8px;font-size:12px;color:#8c8c8c}.stock-sync-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;transition:background .3s}.stock-sync-text{flex:1}.stock-sync-btn{background:none;border:1px solid #d9d9d9;border-radius:4px;padding:2px 10px;font-size:12px;color:#666;cursor:pointer;transition:all .2s}.stock-sync-btn:hover{border-color:var(--primary);color:var(--primary)}.stock-sync-btn:disabled{opacity:.5;cursor:default}.stock-badge{display:inline-block;font-size:11px;font-weight:500;padding:1px 8px;border-radius:10px;line-height:1.8}.stock-badge.stock-ok{background:#f6ffed;color:#52c41a;border:1px solid #b7eb8f}.stock-badge.stock-low{background:#fffbe6;color:#d48806;border:1px solid #ffe58f}.stock-badge.stock-out{background:#fff2f0;color:#ff4d4f;border:1px solid #ffccc7}.device-row--oos{pointer-events:auto}.device-row--oos .device-qty button{display:none}.device-qty--oos{font-size:18px;font-weight:700;color:#d9d9d9;min-width:20px;text-align:center}.stock-legend{display:flex;justify-content:center;gap:16px;margin-top:14px;font-size:11px;color:#999}.stock-legend-item{display:flex;align-items:center;gap:4px}.stock-legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.stock-legend-dot.stock-ok{background:#52c41a}.stock-legend-dot.stock-low{background:#faad14}.stock-legend-dot.stock-out{background:#ff4d4f}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:flex-end;justify-content:center;z-index:999}.modal-content{background:#fff;border-radius:16px 16px 0 0;width:100%;max-width:var(--max-width);max-height:70vh;overflow-y:auto;padding:8px 0 24px;padding-bottom:max(24px,env(safe-area-inset-bottom))}.modal-handle{width:36px;height:4px;background:#ddd;border-radius:2px;margin:8px auto 12px}.modal-title{font-size:17px;font-weight:600;text-align:center;margin-bottom:16px}@media (max-width: 480px){:root{--radius: 8px}.page{padding:12px}.card{padding:14px;margin-bottom:10px}.btn{height:40px;font-size:14px;padding:0 16px}.form-input,.form-select{height:40px;font-size:16px}.form-group{margin-bottom:14px}.form-label{font-size:13px}.form-footer{padding:10px 12px;gap:8px}.upload-item{aspect-ratio:4/3;max-height:160px}.upload-item-half,.upload-example-side{max-height:160px}.upload-grid{gap:8px}.summary-grid{grid-template-columns:repeat(3,1fr)}.select-option{flex:0 0 calc(50% - 4px);font-size:13px}.device-qty button{width:28px;height:28px;font-size:16px}.device-card{padding:10px}.step-indicator{padding:14px 0 6px}.step-dot{width:26px;height:26px;min-width:26px;font-size:11px}.step-line{width:20px;min-width:12px}}@media (max-width: 360px){.page{padding:8px}.card{padding:10px}.summary-grid{grid-template-columns:repeat(3,1fr);gap:4px}.upload-item{aspect-ratio:4/3;max-height:130px}.upload-item-half,.upload-example-side{max-height:130px}}.signature-box{position:relative;border:2px dashed #d9d9d9;border-radius:8px;height:120px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .2s,background .2s;overflow:hidden;background:#fafafa}.signature-box:active{background:#f0f0f0;border-color:#1677ff}.signature-placeholder{display:flex;flex-direction:column;align-items:center;gap:6px;color:#bbb;font-size:13px}.signature-tag{position:absolute;top:6px;right:8px;font-size:11px;padding:1px 6px;border-radius:4px;background:#f0f0f0;color:#999}.signature-tag.required{background:#fff1f0;color:#ff4d4f}.signature-preview{width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:relative}.signature-preview img{max-width:90%;max-height:90%;object-fit:contain}.signature-re-sign{position:absolute;bottom:4px;right:8px;font-size:10px;color:#1677ff;background:#ffffffd9;padding:1px 6px;border-radius:4px}.signature-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;background:#fff;display:flex;flex-direction:column;animation:fadeIn .15s}.signature-toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:#fff;border-bottom:1px solid #eee;flex-shrink:0}.signature-title{font-size:16px;font-weight:600;color:#333}.signature-btn{border:none;border-radius:6px;padding:6px 14px;font-size:14px;cursor:pointer;transition:opacity .15s}.signature-btn:active{opacity:.7}.signature-btn-back{background:#f5f5f5;color:#666}.signature-btn-clear{background:#fff1f0;color:#ff4d4f}.signature-btn-confirm{background:#1677ff;color:#fff}.signature-btn-confirm.disabled{opacity:.4;pointer-events:none}.signature-canvas-wrap{flex:1;position:relative;overflow:hidden;background:#fefefe;touch-action:none}.signature-canvas{display:block;width:100%;height:100%;cursor:crosshair}.signature-hint-text{position:absolute;bottom:20px;left:0;right:0;text-align:center;font-size:13px;color:#ccc;pointer-events:none}.sselect-wrap{position:relative;width:100%}.sselect-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;padding:11px 12px;border:1px solid var(--sselect-border, #ddd);border-radius:8px;background:#fff;font-size:15px;color:#333;cursor:pointer;outline:none;transition:border-color .2s,box-shadow .2s;gap:8px;box-sizing:border-box;min-height:44px;-webkit-tap-highlight-color:transparent}.sselect-trigger:focus-visible{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-bg)}.sselect-trigger.sselect-open{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-bg)}.sselect-trigger.sselect-error{border-color:#ff4d4f;background:#fff2f0}.sselect-trigger.sselect-disabled{background:#f5f5f5;color:#bbb;cursor:not-allowed}.sselect-value{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.4}.sselect-placeholder{color:#bbb}.sselect-arrow{flex-shrink:0;color:#999;transition:transform .22s ease;display:flex;align-items:center}.sselect-arrow-up{transform:rotate(180deg)}.sselect-dropdown{background:#fff;border:1px solid #e5e5ea;border-radius:10px;box-shadow:0 8px 32px #0000001f;overflow:hidden;animation:sselectIn .18s ease-out}@keyframes sselectIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.sselect-list{max-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:4px 0}.sselect-empty{padding:28px 12px;text-align:center;color:#999;font-size:14px}.sselect-option{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;cursor:pointer;background:#fff;color:#000;min-height:44px;font-size:15px;line-height:1.4;-webkit-tap-highlight-color:transparent}.sselect-option:hover{background:#f5f5f5}.sselect-option:active{background:#ebebeb}.sselect-option.sselect-selected{background:#e6f0ff;color:#1677ff;font-weight:500}.sselect-option-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sselect-check{color:var(--primary);flex-shrink:0}@media (max-width: 480px){.sselect-list{max-height:200px}.sselect-option{padding:12px 14px;font-size:16px}}@media (prefers-color-scheme: dark){.sselect-trigger{background:#fff;border-color:#ddd;color:#000}.sselect-dropdown{background:#fff;border-color:#ddd}.sselect-option{background:#fff;color:#000}.sselect-option:hover{background:#f5f5f5}}.image-picker-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9998;background:#00000073;display:flex;align-items:flex-end;justify-content:center;animation:pickerFadeIn .22s ease-out;-webkit-tap-highlight-color:transparent}@keyframes pickerFadeIn{0%{opacity:0}to{opacity:1}}.image-picker-panel{width:100%;max-width:500px;background:#f2f2f7;border-radius:14px 14px 0 0;animation:pickerSlideUp .28s cubic-bezier(.32,.72,0,1);overflow:hidden;box-shadow:0 -4px 20px #00000014}@keyframes pickerSlideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.image-picker-header{padding:18px 16px 8px;text-align:center}.image-picker-title{font-size:13px;font-weight:500;color:#8e8e93;letter-spacing:.5px;text-transform:uppercase}.image-picker-options{background:#fff;border-radius:14px;margin:0 8px;overflow:hidden}.image-picker-option{display:flex;align-items:center;width:100%;padding:16px 20px;border:none;background:#fff;cursor:pointer;transition:background .12s;font-size:17px;font-weight:400;color:#007aff;gap:14px;-webkit-tap-highlight-color:transparent;min-height:56px}.image-picker-option:active{background:#e5e5ea}.image-picker-option+.image-picker-option{border-top:1px solid #e5e5ea}.image-picker-option-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0}.image-picker-option-icon svg{width:24px;height:24px}.image-picker-option-text{font-size:17px;line-height:1.3;white-space:nowrap}.image-picker-cancel-wrap{padding:8px}.image-picker-cancel{display:block;width:100%;padding:16px;border:none;border-radius:14px;background:#fff;cursor:pointer;font-size:17px;font-weight:600;color:#007aff;text-align:center;transition:background .12s;-webkit-tap-highlight-color:transparent;min-height:56px}.image-picker-cancel:active{background:#e5e5ea}.image-picker-safe-area{height:env(safe-area-inset-bottom,8px);background:#f2f2f7}@media (prefers-color-scheme: dark){.image-picker-panel{background:#1c1c1e}.image-picker-options,.image-picker-cancel{background:#2c2c2e}.image-picker-option,.image-picker-cancel{color:#0a84ff;background:#2c2c2e}.image-picker-option:active,.image-picker-cancel:active{background:#3a3a3c}.image-picker-option+.image-picker-option{border-top-color:#3a3a3c}.image-picker-title{color:#98989d}}@media (max-width: 360px){.image-picker-option{padding:14px 16px;font-size:15px;min-height:50px}.image-picker-option-text{font-size:15px}.image-picker-cancel{padding:14px;font-size:15px;min-height:50px}}
