:root{--bg: #FAF9F5;--bg-secondary: #F5F1EB;--bg-card: #FFFFFF;--primary: #CC785C;--primary-light: #F5E8E0;--primary-border: #E5C8B5;--text: #3D3929;--text-secondary: #6B6557;--text-muted: #8B8473;--text-placeholder: #B8B0A0;--border: #EDE7DA;--border-strong: #E5DFD3;--success: #6B8E5A;--success-bg: #E8EFE0;--success-text: #4D6B3D;--warning: #B89B5E;--warning-bg: #F0EAD6;--warning-text: #6B5D2E;--danger: #B85450;--danger-bg: #F5E5E3;--danger-text: #B85450;--serif: "STIX Two Text", "Source Han Serif SC", "Noto Serif SC", Georgia, serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;overflow:hidden}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}input,textarea{font:inherit;color:inherit}input:focus,textarea:focus{outline:none}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.serif{font-family:var(--serif);letter-spacing:-.01em}.hidden{display:none!important}.app{height:100vh;height:100dvh;display:flex;flex-direction:column;max-width:480px;margin:0 auto;background:var(--bg);position:relative}.app-header{background:var(--bg-secondary);padding-top:env(safe-area-inset-top);border-bottom:.5px solid var(--border-strong);flex-shrink:0}.header-row{display:flex;align-items:center;justify-content:space-between;padding:8px 16px 6px}.icon-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:var(--text);border-radius:8px}.icon-btn:active{background:var(--border)}.app-title{font-family:var(--serif);font-size:18px;font-weight:500;color:var(--text)}.tabs{display:flex;padding:0 12px;gap:4px}.tab{flex:1;padding:11px 0;text-align:center;font-size:13px;color:var(--text-secondary);border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:500}.tab .badge{display:inline-block;background:var(--primary);color:#fff;font-size:10px;padding:1px 5px;border-radius:8px;margin-left:3px;vertical-align:top;min-width:16px}.main{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:80px}.main.no-bottom-nav{padding-bottom:0}.fab-bar{position:absolute;bottom:0;left:0;right:0;background:var(--bg-card);border-top:.5px solid var(--border);display:flex;align-items:center;padding:6px 16px calc(12px + env(safe-area-inset-bottom));z-index:10}.fab-tab{flex:1;text-align:center;font-size:11px;color:var(--text-muted);padding:4px 0;cursor:pointer}.fab-tab.active{color:var(--primary)}.fab-tab .icon{font-size:18px;display:block;margin-bottom:2px}.fab-add{width:50px;height:50px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:28px;margin:-22px 12px 0;box-shadow:0 3px 10px #cc785c59;flex-shrink:0}.fab-add:active{transform:scale(.95)}.search-bar{padding:12px 16px;display:flex;align-items:center;gap:8px;background:var(--bg)}.search-input{flex:1;background:var(--bg-card);border:.5px solid var(--border-strong);border-radius:18px;padding:8px 14px;font-size:13px;color:var(--text);display:flex;align-items:center;gap:6px}.search-input input{flex:1;background:transparent;border:none;font-size:13px}.search-input input::placeholder{color:var(--text-muted)}.section-label{font-size:11px;color:var(--text-muted);margin:4px 16px 6px;font-weight:500;letter-spacing:.04em;text-transform:uppercase}.list{padding:0 12px}.row-card{background:var(--bg-card);border-radius:12px;padding:12px 14px;margin-bottom:8px;border:.5px solid var(--border)}.row-main{display:flex;align-items:center;gap:10px;cursor:pointer}.expand-arrow{color:var(--primary);font-size:12px;width:14px;transition:transform .2s}.expand-arrow.collapsed{transform:rotate(-90deg)}.row-name{font-size:14px;flex:1;color:var(--text);font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-name.muted{color:var(--text-muted)}.row-qty{font-size:13px;color:var(--text-muted)}.status-btn{font-size:12px;padding:5px 13px;border-radius:14px;font-weight:500;flex-shrink:0}.status-btn.pending{background:var(--primary);color:#fff}.status-btn.bought{background:var(--success);color:#fff}.status-btn.outstock{background:var(--bg-secondary);color:var(--danger);border:.5px solid var(--danger-bg)}.detail-rows{margin-top:10px;padding-top:10px;border-top:.5px solid var(--border)}.detail-row{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:12px}.detail-customer{flex:1;color:var(--text)}.detail-qty{color:var(--text-muted)}.status-pill{font-size:11px;padding:3px 9px;border-radius:10px;font-weight:500;cursor:pointer}.s-pending{background:var(--bg-secondary);color:var(--text-secondary)}.s-bought{background:var(--success-bg);color:var(--success-text)}.s-out,.s-outstock{background:var(--danger-bg);color:var(--danger-text)}.s-replace,.s-replaced{background:var(--warning-bg);color:var(--warning-text)}.s-paid{background:var(--success-bg);color:var(--success-text)}.s-shipped{background:var(--warning-bg);color:var(--warning-text)}.empty{text-align:center;padding:80px 20px;color:var(--text-muted)}.empty-icon{font-size:48px;margin-bottom:12px;opacity:.5}.empty-text{font-size:14px;margin-bottom:6px}.empty-hint{font-size:12px;color:var(--text-placeholder)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#3d392966;z-index:100;display:flex;align-items:flex-end;justify-content:center}.modal-content{background:var(--bg);width:100%;max-width:480px;max-height:92vh;border-radius:20px 20px 0 0;display:flex;flex-direction:column;animation:slideUp .25s ease-out}.modal-content.full{max-height:100vh;height:100vh;border-radius:0}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-header{background:var(--bg-secondary);color:var(--text);padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top));display:flex;align-items:center;justify-content:space-between;border-bottom:.5px solid var(--border-strong);border-radius:20px 20px 0 0;flex-shrink:0}.modal-content.full .modal-header{border-radius:0}.modal-title{font-family:var(--serif);font-size:17px;font-weight:500}.modal-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}.field-row{background:var(--bg-card);padding:14px 16px;display:flex;align-items:center;gap:12px;border-bottom:.5px solid var(--border);min-height:52px}.field-label{font-size:13px;color:var(--text-muted);min-width:60px;flex-shrink:0}.field-input{flex:1;font-size:14px;color:var(--text);border:none;background:transparent;min-width:0}.field-input::placeholder{color:var(--text-placeholder)}.section-divider{padding:8px 16px;background:var(--bg);font-size:11px;color:var(--text-muted);font-weight:500;letter-spacing:.04em;text-transform:uppercase;border-bottom:.5px solid var(--border);border-top:.5px solid var(--border)}.camera-btn{width:36px;height:36px;border-radius:8px;background:var(--primary-light);color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;border:.5px solid var(--primary-border)}.camera-btn:active{background:var(--primary);color:#fff}.suggestions{background:var(--bg);padding:0 16px;border-bottom:.5px solid var(--border);max-height:200px;overflow-y:auto}.suggest-row{padding:10px 8px;border-bottom:.5px solid var(--border);font-size:13px;display:flex;align-items:center;gap:8px;cursor:pointer}.suggest-row:last-child{border-bottom:none}.suggest-row:active{background:var(--bg-secondary)}.suggest-row .icon{color:var(--text-muted);font-size:14px}.suggest-row .name{color:var(--text);flex:1}.suggest-row .meta{font-size:11px;color:var(--text-muted)}.suggest-row .price-meta{font-size:11px;color:var(--primary);font-weight:500}.qty-control{display:flex;align-items:center;border:.5px solid var(--border-strong);border-radius:6px;overflow:hidden;flex-shrink:0}.qty-btn{background:var(--primary);color:#fff;width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:18px}.qty-btn:active{background:#b86949}.qty-val{width:44px;text-align:center;font-size:14px;font-weight:500;color:var(--text)}.price-hint{background:var(--warning-bg);padding:9px 16px;font-size:11px;color:var(--warning-text);display:flex;align-items:center;gap:6px;border-bottom:.5px solid var(--border)}.price-hint.success{background:var(--success-bg);color:var(--success-text)}.price-hint.danger{background:var(--danger-bg);color:var(--danger-text)}.price-hint .icon{font-size:14px}.detail-toggle{text-align:center;padding:14px;font-size:13px;color:var(--text-muted);background:var(--bg-card);border-bottom:.5px solid var(--border);cursor:pointer}.actions{padding:12px 14px calc(12px + env(safe-area-inset-bottom));display:flex;gap:8px;background:var(--bg);border-top:.5px solid var(--border)}.btn-secondary{flex:1;background:var(--primary-light);color:var(--primary);padding:11px 0;border-radius:22px;font-size:12px;font-weight:500;text-align:center;border:.5px solid var(--primary-border)}.btn-secondary:active{background:var(--primary-border)}.btn-primary{flex:1.4;background:var(--primary);color:#fff;padding:11px 0;border-radius:22px;font-size:14px;font-weight:500;text-align:center}.btn-primary:active{background:#b86949}.btn-danger{background:var(--danger-bg);color:var(--danger);padding:11px 16px;border-radius:22px;font-size:13px;font-weight:500}.match-badge{background:var(--success-bg);color:var(--success-text);font-size:10px;padding:1px 6px;border-radius:3px;margin-left:6px;font-weight:500}.no-price-tag{background:var(--danger-bg);color:var(--danger-text);font-size:10px;padding:1px 6px;border-radius:3px;font-weight:500;margin-left:6px}.buyer-card{background:var(--bg-card);border-radius:12px;margin-bottom:10px;border:.5px solid var(--border);overflow:hidden}.buyer-header{display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:pointer}.buyer-name{flex:1;font-size:14px;font-weight:500;color:var(--text)}.buyer-name .meta{color:var(--text-muted);font-weight:400;font-size:12px;margin-left:4px}.buyer-items{padding:0 14px 8px;border-top:.5px solid var(--border)}.item-row{display:flex;justify-content:space-between;padding:8px 0;font-size:12px;border-bottom:.5px solid var(--border)}.item-row:last-child{border-bottom:none}.item-name{color:var(--text);flex:1;padding-right:8px}.item-price{color:var(--text-muted);white-space:nowrap}.summary-row{display:flex;justify-content:space-between;padding:10px 14px;border-top:.5px solid var(--border);background:var(--bg-secondary);font-size:13px}.summary-row .label{color:var(--text-secondary)}.summary-row .val{color:var(--primary);font-weight:500;font-size:14px}.action-buttons{display:flex;padding:8px 14px 12px;gap:8px}.action-btn{flex:1;padding:8px 0;border-radius:18px;font-size:12px;font-weight:500;text-align:center}.action-btn.btn-pay{background:var(--success-bg);color:var(--success-text)}.action-btn.btn-pay.done{background:var(--success);color:#fff}.action-btn.btn-ship{background:var(--warning-bg);color:var(--warning-text)}.action-btn.btn-ship.done{background:var(--warning);color:#fff}.action-btn.btn-archive{background:var(--primary);color:#fff}.filter-area{background:var(--bg);padding:12px 16px}.date-row{display:flex;align-items:center;gap:8px;margin-bottom:10px}.date-pill{flex:1;background:var(--bg-card);border:.5px solid var(--border-strong);border-radius:16px;padding:6px 12px;font-size:12px;text-align:center;color:var(--text)}.date-sep{color:var(--text-muted);font-size:12px}.export-icon{color:var(--primary);font-size:18px;cursor:pointer}.search-tag{background:var(--primary);color:#fff;font-size:11px;padding:4px 10px;border-radius:12px;font-weight:500;cursor:pointer}.search-tag.alt{background:var(--text-muted)}.record-card{background:var(--bg-card);border-radius:12px;margin-bottom:8px;padding:12px 14px;border:.5px solid var(--border)}.record-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.record-buyer{font-size:13px;font-weight:500;color:var(--text)}.record-date{font-size:11px;color:var(--text-muted)}.record-products{font-size:12px;color:var(--text-secondary);margin-bottom:8px;line-height:1.5}.record-stats{display:flex;gap:16px;padding-top:8px;border-top:.5px solid var(--border);font-size:11px}.stat-item{display:flex;flex-direction:column;gap:2px}.stat-item .lbl{color:var(--text-muted)}.stat-item.cost .v{color:var(--text-secondary);font-weight:500}.stat-item.income .v{color:var(--success-text);font-weight:500}.stat-item.profit .v{color:var(--primary);font-weight:500}.stat-bar{background:var(--text);padding:14px 16px calc(14px + env(safe-area-inset-bottom));color:#fff}.stat-bar-row{display:flex;justify-content:space-around;gap:8px;margin-bottom:8px}.stat-bar-item{text-align:center}.stat-bar-lbl{font-size:10px;opacity:.65;margin-bottom:2px}.stat-bar-val{font-size:14px;font-weight:500;font-family:var(--serif)}.profit-summary{text-align:center;padding-top:8px;border-top:.5px solid rgba(255,255,255,.15)}.profit-summary .label{font-size:11px;opacity:.7}.profit-summary .val{font-size:24px;font-weight:500;margin:2px 0;font-family:var(--serif);color:#e8b991}.profit-summary .rate{font-size:12px;color:#c4d4b0}.summary-row-pills{display:flex;gap:8px;padding:0 16px 12px}.summary-pill{flex:1;background:var(--bg-card);border:.5px solid var(--border);border-radius:8px;padding:8px 10px}.summary-pill .lbl{font-size:10px;color:var(--text-muted)}.summary-pill .val{font-size:14px;font-weight:500;color:var(--text);margin-top:2px}.product-card{background:var(--bg-card);border-radius:12px;margin-bottom:8px;padding:12px 14px;border:.5px solid var(--border);display:flex;gap:12px;align-items:flex-start;cursor:pointer}.product-thumb{width:44px;height:44px;border-radius:8px;background:var(--bg-secondary);display:flex;align-items:center;justify-content:center;color:var(--primary);font-size:20px;flex-shrink:0;overflow:hidden}.product-thumb img{width:100%;height:100%;object-fit:cover}.product-info{flex:1;min-width:0}.product-name{font-size:14px;font-weight:500;color:var(--text);margin-bottom:4px;display:flex;align-items:center;flex-wrap:wrap}.product-prices{display:flex;gap:12px;font-size:12px;margin-bottom:4px}.price-cost{color:var(--text-secondary)}.price-cost b{color:var(--text);font-weight:500}.price-sell{color:var(--primary);font-weight:500}.product-meta{font-size:11px;color:var(--text-muted)}.image-upload{background:var(--bg-card);padding:16px;border-bottom:.5px solid var(--border)}.image-upload-box{background:var(--bg);border:1px dashed var(--border-strong);border-radius:8px;padding:24px 16px;text-align:center;color:var(--text-muted);font-size:12px;position:relative;overflow:hidden;cursor:pointer}.image-upload-box .icon{font-size:28px;color:var(--primary);margin-bottom:6px;display:block}.image-upload-box img{max-width:100%;max-height:160px;border-radius:6px}.image-upload-box.has-image{padding:8px}.upload-hint{font-size:10px;margin-top:4px;color:var(--text-placeholder)}.recognizing{display:flex;align-items:center;justify-content:center;gap:6px;color:var(--primary);font-size:12px;padding:4px 0}.spinner{width:12px;height:12px;border:2px solid var(--primary-border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.profit-display{background:var(--warning-bg);padding:10px 16px;font-size:12px;color:var(--warning-text);display:flex;justify-content:space-between;align-items:center;border-bottom:.5px solid var(--border)}.profit-display b{font-family:var(--serif);font-size:14px}.side-menu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#3d392966;z-index:199;opacity:0;pointer-events:none;transition:opacity .25s}.side-menu-overlay.open{opacity:1;pointer-events:auto}.side-menu{position:fixed;top:0;left:0;bottom:0;width:80%;max-width:280px;background:var(--bg);z-index:200;transform:translate(-100%);transition:transform .25s;padding-top:env(safe-area-inset-top);display:flex;flex-direction:column}.side-menu.open{transform:translate(0)}.side-header{padding:24px 20px 20px;border-bottom:.5px solid var(--border)}.side-avatar{width:64px;height:64px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:28px;font-weight:500;margin-bottom:12px}.side-name{font-family:var(--serif);font-size:18px;font-weight:500}.side-meta{font-size:12px;color:var(--text-muted);margin-top:2px}.side-menu-list{flex:1;padding:12px 0}.side-menu-item{display:flex;align-items:center;gap:12px;padding:14px 20px;font-size:14px;color:var(--text);cursor:pointer}.side-menu-item:active{background:var(--bg-secondary)}.side-menu-item .icon{font-size:18px;color:var(--primary);width:20px}.toast{position:fixed;top:calc(60px + env(safe-area-inset-top));left:50%;transform:translate(-50%);background:#3d3929eb;color:#fff;padding:10px 18px;border-radius:22px;font-size:13px;z-index:1000;white-space:nowrap;animation:toastIn .2s;pointer-events:none}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,-10px)}to{opacity:1;transform:translate(-50%)}}.sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#3d392966;z-index:150;display:flex;align-items:flex-end}.sheet-content{background:var(--bg-card);width:100%;max-width:480px;margin:0 auto;border-radius:20px 20px 0 0;padding:8px 0 calc(8px + env(safe-area-inset-bottom));animation:slideUp .2s}.sheet-option{padding:14px 20px;font-size:15px;color:var(--text);border-bottom:.5px solid var(--border);display:flex;align-items:center;gap:12px;cursor:pointer}.sheet-option:last-child{border-bottom:none}.sheet-option:active{background:var(--bg-secondary)}.sheet-option.cancel{color:var(--text-muted);margin-top:6px;border-top:8px solid var(--bg);border-bottom:none;justify-content:center}.sheet-option .dot{width:10px;height:10px;border-radius:50%}.swipe-wrapper{position:relative;overflow:hidden}.swipe-actions{position:absolute;top:0;right:0;bottom:8px;display:flex;align-items:stretch}.swipe-action{display:flex;align-items:center;justify-content:center;padding:0 18px;font-size:13px;color:#fff;font-weight:500}.swipe-action.delete{background:var(--danger)}.swipe-action.edit{background:var(--text-muted)}.swipe-content{transition:transform .2s}.swipe-content.open{transform:translate(-140px)}
