:root{--bg: #f5f6f8;--card: #ffffff;--line: #e8eaee;--text: #1f2329;--muted: #8a9099;--brand: #d4342c;--brand-soft: #fdecea;--ok: #17a67a;--radius: 10px;--safe-b: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}img{display:block;max-width:100%}button,input,select,textarea{font-family:inherit;font-size:14px;color:var(--text)}button{cursor:pointer;border:none;background:none}a{color:inherit;text-decoration:none}.hidden{display:none!important}.app{max-width:720px;margin:0 auto;min-height:100vh;background:var(--bg);display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;background:#fff;border-bottom:1px solid var(--line);height:48px;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:16px}.topbar .left,.topbar .right{position:absolute;top:0;height:48px;display:flex;align-items:center;font-size:13px;font-weight:400;color:var(--muted)}.topbar .left{left:12px}.topbar .right{right:12px}.page{flex:1;padding-bottom:calc(60px + var(--safe-b))}.demo-tip{background:#fff7e6;color:#a86a00;font-size:12px;padding:6px 12px;text-align:center;border-bottom:1px solid #ffe3a3}.shop-body{display:flex;min-height:calc(100vh - 108px)}.cat-bar{width:88px;flex:0 0 88px;background:#f0f1f4;overflow-y:auto;position:sticky;top:48px;height:calc(100vh - 108px)}.cat-item{display:block;width:100%;padding:14px 6px;text-align:center;font-size:13px;color:#5a6069;border:none;background:none;line-height:1.3}.cat-item.active{background:#fff;color:var(--brand);font-weight:600;position:relative}.cat-item.active:before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:3px;background:var(--brand);border-radius:0 2px 2px 0}.goods{flex:1;padding:10px;overflow:hidden}.goods-group-title{font-size:13px;color:var(--muted);margin:6px 2px 8px}.card{background:var(--card);border-radius:var(--radius);padding:10px;margin-bottom:10px}.goods-item{display:flex;gap:10px}.goods-item .thumb{width:84px;height:84px;flex:0 0 84px;border-radius:8px;object-fit:cover;background:#eee}.goods-info{flex:1;min-width:0}.goods-name{font-size:14px;font-weight:600;margin:0 0 4px;word-break:break-all}.price{color:var(--brand);font-weight:700}.price small{font-size:11px;font-weight:400}.sizes{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.size-chip{border:1px solid var(--line);border-radius:14px;padding:3px 10px;font-size:12px;background:#fafbfc;color:#5a6069}.size-chip.on{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}.size-rows{margin-top:8px;display:flex;flex-direction:column;gap:6px}.size-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.size-row span{font-size:12px;color:#5a6069}.stepper{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#fff}.stepper button{width:28px;height:26px;font-size:16px;color:#5a6069}.stepper button:disabled{color:#ccc}.stepper .num{min-width:28px;text-align:center;font-size:13px}.btn{border-radius:8px;padding:9px 14px;font-size:14px;font-weight:500;background:#f0f1f4;color:var(--text)}.btn-primary{background:var(--brand);color:#fff}.btn-line{border:1px solid var(--line);background:#fff}.btn-sm{padding:5px 10px;font-size:12px;border-radius:6px}.btn-block{display:block;width:100%;text-align:center}.btn:disabled{opacity:.5}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:30;max-width:720px;margin:0 auto;background:#fff;border-top:1px solid var(--line);display:flex;padding-bottom:var(--safe-b)}.tabbar button{flex:1;padding:8px 0 7px;font-size:11px;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:2px}.tabbar button.on{color:var(--brand)}.tabbar .ico{font-size:18px;line-height:1}.badge{position:absolute;transform:translate(12px,-4px);background:var(--brand);color:#fff;border-radius:9px;font-size:10px;min-width:16px;height:16px;line-height:16px;padding:0 4px;text-align:center}.list{padding:10px}.cart-item{display:flex;gap:10px;align-items:center}.cart-item .thumb{width:60px;height:60px;border-radius:6px;object-fit:cover;background:#eee}.row{display:flex;align-items:center;justify-content:space-between;gap:8px}.muted{color:var(--muted);font-size:12px}.empty{text-align:center;color:var(--muted);padding:60px 20px;font-size:13px}.form-item{display:flex;align-items:flex-start;padding:11px 0;border-bottom:1px solid var(--line)}.form-item:last-child{border-bottom:none}.form-item label{width:76px;flex:0 0 76px;font-size:14px;padding-top:2px}.form-item .req{color:var(--brand);margin-right:2px}.form-item input,.form-item select,.form-item textarea{flex:1;border:none;outline:none;background:transparent;padding:2px 0;width:100%}.form-item textarea{resize:vertical;min-height:44px}.field-3{display:flex;gap:6px;flex:1}.field-3>*{flex:1;min-width:0;border:1px solid var(--line);border-radius:6px;padding:6px 8px}.err{color:var(--brand);font-size:12px;padding:4px 12px}.bottom-bar{position:fixed;bottom:0;left:0;right:0;max-width:720px;margin:0 auto;z-index:30;background:#fff;border-top:1px solid var(--line);padding:8px 12px calc(8px + var(--safe-b));display:flex;align-items:center;gap:10px}.bottom-bar .total{flex:1;font-size:13px}.bottom-bar .total b{color:var(--brand);font-size:18px}.order-card{background:#fff;border-radius:var(--radius);padding:12px;margin-bottom:10px}.order-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted);margin-bottom:8px}.tag{display:inline-block;font-size:11px;padding:2px 7px;border-radius:4px;background:#eef1f5;color:#5a6069}.tag.red{background:var(--brand-soft);color:var(--brand)}.tag.green{background:#e6f7f0;color:var(--ok)}.order-goods{font-size:13px;padding:4px 0;border-top:1px dashed var(--line)}.kv{display:flex;font-size:12px;color:#5a6069;padding:2px 0}.kv b{font-weight:400;color:var(--muted);width:62px;flex:0 0 62px}.mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:60;display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:#fff;border-radius:14px;width:100%;max-width:340px;padding:20px 18px;text-align:center;max-height:86vh;overflow-y:auto}.modal.wide{max-width:420px;text-align:left}.modal h3{margin:0 0 10px;font-size:17px}.qr{width:200px;height:200px;margin:12px auto;border:1px solid var(--line);border-radius:8px;object-fit:contain;background:#fff}.notice{background:#fff7e6;border:1px solid #ffe3a3;color:#a86a00;font-size:12px;line-height:1.7;padding:10px;border-radius:8px;text-align:left}.toast{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);background:#000000c7;color:#fff;padding:10px 16px;border-radius:8px;font-size:13px;z-index:99}.admin-tabs{display:flex;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:48px;z-index:15}.admin-tabs button{flex:1;padding:11px 0;font-size:14px;color:var(--muted)}.admin-tabs button.on{color:var(--brand);font-weight:600;box-shadow:inset 0 -2px 0 var(--brand)}.filters{display:flex;gap:6px;padding:10px;flex-wrap:wrap}.filters select,.filters input{border:1px solid var(--line);border-radius:6px;padding:6px 8px;background:#fff;flex:1;min-width:90px}.p-row{display:flex;gap:10px;align-items:center;background:#fff;border-radius:var(--radius);padding:10px;margin-bottom:8px}.p-row .thumb{width:52px;height:52px;border-radius:6px;object-fit:cover;background:#eee}.p-row .ops{display:flex;gap:6px;flex-direction:column}.off{opacity:.55}.admin-order .acts{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}.admin-order .acts select,.admin-order .acts input{border:1px solid var(--line);border-radius:6px;padding:5px 7px;font-size:12px;background:#fff}.admin-order .acts input{flex:1;min-width:110px}#reader{width:100%;border-radius:8px;overflow:hidden}.login-box{max-width:320px;margin:60px auto;background:#fff;border-radius:12px;padding:24px 20px}.login-box input{width:100%;border:1px solid var(--line);border-radius:8px;padding:10px;margin:12px 0}
