*{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:#f7f7f9;color:#1f2937;-webkit-font-smoothing:antialiased}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#fff7f0,#f7f7f9 45%,#f2f3f5);padding:24px}.login-card{width:100%;max-width:420px;background:#fff;border:1px solid #ececee;border-radius:16px;padding:40px 40px 32px;box-shadow:0 2px 4px #12121409,0 8px 28px #1212140d}.login-brand{text-align:center;margin-bottom:32px}.login-logo{width:56px;height:56px;display:block;margin:0 auto 16px;object-fit:contain}.login-title{font-size:22px;font-weight:600;color:#1f2937;margin:0 0 6px}.login-sub{font-size:13px;color:#9ca3af;margin:0}.admin-layout{min-height:100vh}.admin-sider{border-right:1px solid #ececee}.admin-logo{height:64px;display:flex;align-items:center;gap:10px;padding:0 20px;border-bottom:1px solid #ececee;font-size:16px;font-weight:600;color:#1f2937;white-space:nowrap;overflow:hidden}.admin-logo-mark{width:30px;height:30px;display:block;object-fit:contain;flex:0 0 auto}.admin-header{height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;border-bottom:1px solid #ececee;background:#fff}.admin-header-left{display:flex;align-items:center;gap:16px}.admin-header-right{display:flex;align-items:center;gap:14px}.admin-user{display:flex;align-items:center;gap:8px;font-size:13px;color:#6b7280}.admin-content{padding:24px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px;gap:16px;flex-wrap:wrap}.page-title{font-size:20px;font-weight:600;margin:0 0 4px;color:#1f2937}.page-desc{font-size:13px;color:#9ca3af;margin:0}.card-panel{background:#fff;border:1px solid #ececee;border-radius:12px;padding:20px}.form-section{font-size:14px;font-weight:600;color:#1f2937;margin:20px 0 12px;padding-left:10px;position:relative}.form-section:before{content:"";position:absolute;left:0;top:3px;bottom:3px;width:3px;border-radius:2px;background:#ff7a1a}.form-section:first-child{margin-top:0}.rule-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}.rule-row-label{font-size:13px;color:#6b7280;white-space:nowrap}.thumb{width:44px;height:44px;border-radius:8px;object-fit:cover;border:1px solid #ececee;background:#fafafa}.thumb-empty{width:44px;height:44px;border-radius:8px;border:1px dashed #e0e0e3;background:#fafafa;display:flex;align-items:center;justify-content:center;color:#c4c4c8;font-size:16px}.stock-cell{display:inline-flex;align-items:center;padding:2px 6px;margin-left:-6px;border-radius:6px;transition:background .15s}.stock-cell:hover{background:#fff4ec}.gallery-item{position:relative;width:88px;height:88px;border-radius:10px;overflow:hidden;border:1px solid #ececee;background:#fafafa}.gallery-item img{width:100%;height:100%;object-fit:cover;display:block}.gallery-cover-tag{position:absolute;left:0;bottom:0;margin:0;font-size:11px;line-height:18px;border-radius:0 8px 0 0}.gallery-del{position:absolute;top:2px;right:2px;background:#ffffffe6!important;border-radius:6px;padding:2px 4px;height:auto}.gallery-add{width:88px;height:88px;border:1px dashed #d9d9d9;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#9ca3af;cursor:pointer;transition:all .15s;background:#fafafa}.gallery-add:hover{border-color:#ff7a1a;color:#ff7a1a;background:#fff4ec}.edit-form .ant-form-item{margin-bottom:18px}.child-cat-list{padding:4px 0 4px 24px}.child-cat-row{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:8px;background:#fafafa;margin-bottom:6px}.child-cat-row:last-child{margin-bottom:0}.child-cat-main{display:flex;align-items:center;gap:8px}.child-cat-empty{color:#9ca3af;font-size:12px}.child-cat-meta{display:flex;align-items:center;gap:4px}.child-cat-sort{color:#9ca3af;font-size:12px;margin-right:8px}.filter-bar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:16px}.asset-box{padding:12px 16px;border-radius:10px;background:#fafafa;border:1px solid #ececee;min-height:92px}.asset-label{font-size:12px;color:#9ca3af;margin-bottom:6px}.asset-value{font-size:24px;font-weight:700;line-height:1.25;color:#1f2937}.asset-sub{font-size:12px;color:#9ca3af;margin-top:4px}.balance-preview{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;margin-bottom:16px;border-radius:10px;background:#fff9f4;border:1px solid #ffe3cc}.balance-preview-item{flex:1 1 0;text-align:center}.balance-preview-label{font-size:12px;color:#9ca3af;margin-bottom:4px}.balance-preview-value{font-size:20px;font-weight:700;color:#1f2937;line-height:1.2}.balance-preview-op{flex:0 0 auto;padding:18px 8px 0;font-size:16px;color:#c4c4c8}.items-editor{border:1px solid #ececee;border-radius:10px;padding:12px;background:#fafafa}.items-editor-head{font-size:12px;color:#9ca3af;padding:0 0 8px;border-bottom:1px solid #ececee;margin-bottom:10px}.items-editor-row{margin-bottom:8px}.items-editor-summary{margin-top:12px;padding-top:12px;border-top:1px dashed #e0e0e3;font-size:13px;color:#6b7280}.card-panel+.card-panel{margin-top:16px}.cashier-page{display:flex;flex-direction:column;height:100%;min-height:0}.cashier-topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;row-gap:10px;margin-bottom:12px}.cashier-topbar-left,.cashier-topbar-right{display:flex;align-items:center;flex-wrap:wrap;row-gap:8px}.cashier-topbar-left>*,.cashier-topbar-right>*{margin-right:10px}.cashier-topbar-right>*:last-child,.cashier-topbar-left>*:last-child{margin-right:0}.shift-pill{display:inline-flex;align-items:center;height:30px;padding:0 12px;border-radius:15px;font-size:13px;background:#f2f2f4;color:#6b7280;border:1px solid #ececee}.shift-pill.is-open{background:#fff4ec;border-color:#ffe3cc;color:#e86a0a;font-weight:500}.shift-pill-dot{width:6px;height:6px;border-radius:50%;background:#9ca3af;margin-right:7px}.shift-pill.is-open .shift-pill-dot{background:#ff7a1a}.cashier-body{display:flex;align-items:stretch;flex:1 1 auto;min-height:0;margin:0 -8px}.cashier-col-left,.cashier-col-right{display:flex;flex-direction:column;margin:0 8px;min-height:0;background:#fff;border:1px solid #ececee;border-radius:12px;overflow:hidden}.cashier-col-left{flex:1 1 62%;min-width:0}.cashier-col-right{flex:0 0 38%;min-width:340px;max-width:460px}.cashier-col-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #ececee;flex:0 0 auto}.cashier-col-title{font-size:14px;font-weight:600;color:#1f2937}.cashier-col-title-sub{font-size:12px;font-weight:400;color:#9ca3af;margin-left:6px}.cashier-col-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:12px 16px}.scan-row{display:flex;align-items:center;margin-bottom:10px}.scan-row>*{margin-right:8px}.scan-row>*:last-child{margin-right:0}.scan-row .scan-input{flex:1 1 auto;min-width:0}.scan-row .scan-input .ant-input-affix-wrapper,.scan-row .scan-input .ant-input{border-color:#ffd9bb;background:#fffdfb}.scan-row .scan-input .ant-input-affix-wrapper-focused,.scan-row .scan-input .ant-input-affix-wrapper:focus-within{border-color:#ff7a1a;box-shadow:0 0 0 2px #ff7a1a1f}.cat-chips{display:flex;flex-wrap:wrap;align-items:center;margin:0 -4px 6px}.cat-chips>*{margin:0 4px 8px}.cat-chip{cursor:pointer;-webkit-user-select:none;user-select:none;height:30px;line-height:28px;padding:0 14px;border-radius:15px;font-size:13px;border:1px solid #ececee;background:#fff;color:#6b7280;transition:all .15s}.cat-chip:hover{border-color:#ffd9bb;color:#e86a0a}.cat-chip.is-active{border-color:#ff7a1a;color:#e86a0a;background:#fff4ec;font-weight:500}.cat-chip-sub{font-size:12px;height:26px;line-height:24px;padding:0 11px;color:#9ca3af}.cat-chip-sub.is-active{color:#e86a0a;border-color:#ffcfa8;background:#fffaf6}.item-grid{display:flex;flex-wrap:wrap;margin:0 -5px}.item-card{flex:0 0 auto;width:calc(25% - 10px);margin:0 5px 10px;padding:10px 12px;border:1px solid #ececee;border-radius:10px;background:#fff;cursor:pointer;transition:all .15s;min-height:76px;display:flex;flex-direction:column;justify-content:space-between}.item-card:hover{border-color:#ffcfa8;background:#fffdfb;box-shadow:0 2px 8px #1212140d}.item-card:active{transform:translateY(1px)}.item-card.is-disabled{cursor:not-allowed;background:#fafafa;opacity:.55}.item-card-name{font-size:13px;color:#1f2937;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all}.item-card-foot{display:flex;align-items:baseline;justify-content:space-between;margin-top:8px;padding-top:6px;border-top:1px dashed #f2f2f4}.item-card-price{font-size:14px;font-weight:600;color:#e86a0a;line-height:1.1}.item-card-stock{font-size:11px;color:#9ca3af}.item-card-stock.is-low{color:#d4380d}.item-card-meta{font-size:11px;color:#9ca3af;margin-top:2px}.member-picker{padding:12px 16px;border-bottom:1px solid #ececee;flex:0 0 auto;background:#fcfcfd}.member-search-row{display:flex;align-items:center;margin:0 -4px}.member-search-row>*{margin:0 4px}.member-card{margin-top:10px;padding:10px 12px;border-radius:10px;background:#fff9f4;border:1px solid #ffe3cc}.member-card-head{display:flex;align-items:center;flex-wrap:wrap;row-gap:4px}.member-card-name{font-size:14px;font-weight:600;color:#1f2937;margin-right:8px}.member-card-phone{font-size:12px;color:#9ca3af;margin-right:8px}.member-assets{display:flex;flex-wrap:wrap;margin:10px -3px 0}.member-asset{flex:1 1 0;min-width:66px;margin:0 3px 6px;text-align:center;padding:7px 4px;background:#fff;border:1px solid #ffe3cc;border-radius:8px}.member-asset-label{font-size:11px;color:#9ca3af;line-height:1.3}.member-asset-value{font-size:15px;font-weight:600;color:#1f2937;line-height:1.4}.member-asset-value.is-money{color:#e86a0a}.cart-empty{padding:48px 0;text-align:center;color:#c4c4c8;font-size:13px}.cart-row{display:flex;align-items:flex-start;padding:9px 0;border-bottom:1px solid #f2f2f4}.cart-row:last-child{border-bottom:none}.cart-row-main{flex:1 1 auto;min-width:0;padding-right:8px}.cart-row-name{font-size:13px;color:#1f2937;line-height:1.4;word-break:break-all}.cart-row-sub{font-size:11px;color:#9ca3af;margin-top:3px;line-height:1.5}.cart-row-changed{color:#e86a0a;font-weight:500}.cart-row-old-price{text-decoration:line-through;color:#c4c4c8;margin-left:4px}.cart-row-member{color:#e86a0a;font-weight:600}.cart-row-member-tag{display:inline-block;margin-left:6px;padding:0 5px;font-size:10px;line-height:16px;color:#e86a0a;background:#fff3e8;border:1px solid #ffd8b0;border-radius:3px;vertical-align:1px}.member-save-tip{margin:0 0 10px;padding:6px 10px;font-size:12px;color:#9a4b00;background:#fff7ef;border:1px solid #ffe0c2;border-radius:6px}.member-save-tip b{color:#e86a0a}.cart-row-right{flex:0 0 auto;text-align:right;min-width:86px}.cart-row-subtotal{font-size:14px;font-weight:600;color:#1f2937;line-height:1.2}.cart-row-ops{display:flex;align-items:center;justify-content:flex-end;margin-top:4px}.cart-row-ops>*{margin-left:4px}.cart-qty{display:inline-flex;align-items:center;border:1px solid #ececee;border-radius:6px;overflow:hidden;height:24px}.cart-qty-btn{width:24px;height:22px;line-height:22px;text-align:center;font-size:13px;color:#6b7280;cursor:pointer;background:#fafafa;-webkit-user-select:none;user-select:none}.cart-qty-btn:hover{background:#f2f2f4;color:#1f2937}.cart-qty-num{width:30px;text-align:center;font-size:12px;color:#1f2937;border-left:1px solid #ececee;border-right:1px solid #ececee;line-height:22px}.cashier-checkout{flex:0 0 auto;border-top:1px solid #ececee;background:#fcfcfd;padding:12px 16px 16px}.amount-line{display:flex;align-items:baseline;justify-content:space-between;font-size:13px;color:#6b7280;line-height:24px}.amount-line-value{color:#1f2937;font-variant-numeric:tabular-nums}.amount-line-value.is-minus{color:#e86a0a}.amount-line.is-discount{padding-left:10px;font-size:12px;color:#9ca3af;line-height:22px}.amount-line.is-discount .amount-line-value{color:#6b7280}.amount-divider{height:1px;background:#ececee;margin:9px 0}.pay-total{display:flex;align-items:baseline;justify-content:space-between}.pay-total-label{font-size:14px;color:#1f2937;font-weight:500}.pay-total-value{font-size:26px;font-weight:700;color:#e86a0a;line-height:1.1;font-variant-numeric:tabular-nums}.pay-total-value .yuan-mark{font-size:15px;font-weight:600;margin-right:2px}.pay-remaining{display:flex;align-items:center;justify-content:space-between;margin-top:8px;padding:8px 10px;border-radius:8px;font-size:13px}.pay-remaining.is-short{background:#fff2f0;border:1px solid #ffccc7;color:#cf1322}.pay-remaining.is-over{background:#fffbe6;border:1px solid #ffe58f;color:#ad6800}.pay-remaining.is-ok{background:#f6ffed;border:1px solid #b7eb8f;color:#389e0d}.pay-remaining-value{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums}.pay-methods{margin-top:10px}.pay-method-row{display:flex;align-items:center;margin-bottom:7px}.pay-method-name{flex:0 0 74px;font-size:13px;color:#1f2937}.pay-method-name .anticon{margin-right:5px;color:#9ca3af}.pay-method-input{flex:1 1 auto;min-width:0}.pay-method-input .ant-input-number{width:100%}.pay-method-tc{flex:1 1 auto;min-width:0;font-size:12px;color:#6b7280;line-height:1.5}.checkout-actions{display:flex;margin:12px -4px 0}.checkout-actions>*{margin:0 4px}.checkout-actions .btn-checkout{flex:1 1 auto;height:44px;font-size:16px;font-weight:600;border-radius:10px}.checkout-actions .btn-hold{flex:0 0 auto;height:44px;border-radius:10px}.hold-row{display:flex;align-items:center;padding:12px 0;border-bottom:1px solid #f2f2f4}.hold-row:last-child{border-bottom:none}.hold-row-main{flex:1 1 auto;min-width:0;padding-right:10px}.hold-row-no{font-size:13px;font-weight:600;color:#1f2937}.hold-row-meta{font-size:12px;color:#9ca3af;margin-top:4px;line-height:1.6}.hold-row-amount{font-size:15px;font-weight:600;color:#e86a0a}.hold-row-ops{flex:0 0 auto;margin-left:12px}.pay-result{text-align:center;padding:6px 0 2px}.pay-result-icon{font-size:46px;color:#52c41a;line-height:1}.pay-result-title{font-size:17px;font-weight:600;color:#1f2937;margin:12px 0 4px}.pay-result-amount{font-size:30px;font-weight:700;color:#e86a0a;line-height:1.2;font-variant-numeric:tabular-nums}.pay-result-meta{margin-top:14px;padding:12px 14px;border-radius:10px;background:#fafafa;border:1px solid #ececee;text-align:left}.pay-result-meta-row{display:flex;align-items:baseline;justify-content:space-between;font-size:12px;color:#6b7280;line-height:22px}.pay-result-meta-row .v{color:#1f2937}.shift-summary{display:flex;flex-wrap:wrap;margin:0 -4px}.shift-stat{flex:1 1 0;min-width:88px;margin:0 4px 8px;padding:10px 8px;text-align:center;border-radius:10px;background:#fafafa;border:1px solid #ececee}.shift-stat-label{font-size:12px;color:#9ca3af;line-height:1.3}.shift-stat-value{font-size:17px;font-weight:700;color:#1f2937;line-height:1.4;font-variant-numeric:tabular-nums}.shift-stat-sub{font-size:11px;color:#c4c4c8;line-height:1.3}.shift-stat.is-total{background:#fff9f4;border-color:#ffe3cc}.shift-stat.is-total .shift-stat-value{color:#e86a0a}.cash-diff{display:flex;align-items:center;justify-content:space-between;margin-top:10px;padding:9px 12px;border-radius:10px;font-size:13px}.cash-diff.is-even{background:#f6ffed;border:1px solid #b7eb8f;color:#389e0d}.cash-diff.is-short{background:#fff2f0;border:1px solid #ffccc7;color:#cf1322}.cash-diff.is-over{background:#fffbe6;border:1px solid #ffe58f;color:#ad6800}@media (max-width: 1200px){.cashier-col-right{flex:0 0 42%;min-width:320px}}@media (max-width: 1024px){.cashier-body{flex-wrap:wrap}.cashier-col-left,.cashier-col-right{flex:1 1 100%;max-width:none;margin-bottom:12px}.cashier-col-left{min-height:420px}.cashier-col-right{min-height:460px}}.stock-alert-bell{position:relative;display:inline-flex;align-items:center;cursor:pointer;font-size:17px;padding:0 2px}.stock-alert-count{position:absolute;top:-6px;right:-10px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#ef4444;color:#fff;font-size:11px;line-height:16px;text-align:center;font-weight:600}.order-stats{display:flex;flex-wrap:wrap;margin:0 -6px 16px}.order-stat{flex:1 1 160px;margin:6px;background:#fff;border:1px solid #ECECEE;border-radius:12px;padding:14px 16px}.order-stat.is-total{background:#fff9f4;border-color:#ffe3cc}.order-stat-label{font-size:12px;color:#9ca3af;margin-bottom:6px}.order-stat-value{font-size:22px;font-weight:600;color:#1f2937;line-height:1.25}.order-stat-value.is-refund{color:#ef4444}.order-stat-sub{font-size:12px;color:#9ca3af;margin-top:4px}.order-summary-bar{display:flex;flex-wrap:wrap;align-items:center;font-size:13px;color:#6b7280;background:#fafafa;border:1px solid #F1F1F3;border-radius:8px;padding:8px 14px;margin-bottom:12px}.order-summary-bar .sep{width:1px;height:12px;background:#e0e0e3;margin:0 14px}.order-money{display:flex;flex-wrap:wrap;margin:0 -4px}.order-money-item{flex:1 1 110px;margin:4px;background:#fafafa;border:1px solid #F1F1F3;border-radius:8px;padding:10px 12px;display:flex;flex-direction:column}.order-money-item .k{font-size:12px;color:#9ca3af;margin-bottom:4px}.order-money-item .v{font-size:16px;font-weight:600;color:#1f2937}.order-money-item .v.is-off{color:#ef4444}.order-money-item.is-total{background:#fff9f4;border-color:#ffe3cc}.order-money-item.is-total .v{color:#ff7a1a}.order-log-list{border:1px solid #ECECEE;border-radius:8px;overflow:hidden}.order-log-row{padding:10px 14px;border-bottom:1px solid #F4F4F6}.order-log-row:last-child{border-bottom:none}.order-log-head{display:flex;align-items:center;flex-wrap:wrap}.order-log-detail{margin-top:6px;display:flex;flex-wrap:wrap;gap:4px 16px}.order-log-kv{font-size:12px;color:#6b7280}.order-log-kv .k{color:#9ca3af;margin-right:4px}.order-log-kv .v{color:#1f2937}.inv-stats{display:flex;flex-wrap:wrap;margin:0 -6px 16px}.inv-stat{flex:1 1 170px;margin:6px;background:#fff;border:1px solid #ECECEE;border-radius:12px;padding:14px 16px}.inv-stat.is-warn{background:#fff7f5;border-color:#ffd9cf}.inv-stat-label{font-size:12px;color:#9ca3af;margin-bottom:6px}.inv-stat-value{font-size:22px;font-weight:600;color:#1f2937;line-height:1.25}.inv-stat.is-warn .inv-stat-value{color:#ef4444}.inv-stat-sub{font-size:12px;color:#9ca3af;margin-top:4px}.ticket-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:16px}.scan-flash>td{background:#fff7ed!important}
