:root{--brand: #0082ef;--brand-dark: #0067c4;--bg: #f5f6f7;--card: #ffffff;--text: #22272e;--muted: #8a919f;--line: #e8eaee;--green: #12b76a;--red: #ef4444;--amber: #f59e0b;--radius: 12px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:15px;-webkit-font-smoothing:antialiased}#app{max-width:560px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;padding:12px 14px;padding-top:calc(12px + env(safe-area-inset-top));background:var(--brand);color:#fff}.topbar .burger{display:flex;flex-direction:column;justify-content:center;gap:4px;width:34px;height:34px;border:none;background:transparent;cursor:pointer;padding:6px}.topbar .burger span{display:block;height:2.5px;width:100%;background:#fff;border-radius:2px}.topbar .title{flex:1;font-size:17px;font-weight:600}.topbar .me{font-size:13px;opacity:.9;text-decoration:none;color:#fff}.drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:30}.drawer{position:fixed;left:0;top:0;bottom:0;width:74%;max-width:300px;background:#fff;z-index:31;padding:18px 0;overflow-y:auto}.drawer .d-head{padding:0 18px 14px;border-bottom:1px solid var(--line);margin-bottom:8px}.drawer .d-head .name{font-size:17px;font-weight:600}.drawer .d-head .role{font-size:12px;color:var(--muted)}.drawer a.d-item,.drawer .d-item{display:flex;align-items:center;gap:10px;padding:13px 18px;color:var(--text);text-decoration:none;font-size:15px;border-left:3px solid transparent;cursor:pointer;background:none;border-top:none;border-right:none;border-bottom:none;width:100%;text-align:left}.drawer .d-item.active{border-left-color:var(--brand);color:var(--brand);background:#f0f7ff;font-weight:600}.drawer .d-sec{padding:10px 18px 4px;font-size:12px;color:var(--muted)}.main{flex:1;padding:14px 14px 28px}.card{background:var(--card);border-radius:var(--radius);padding:16px;margin-bottom:12px;box-shadow:0 1px 3px #0000000a}.card h3{margin:0 0 12px;font-size:16px}.section-title{font-size:13px;color:var(--muted);margin:18px 2px 8px}.btn{display:inline-block;width:100%;padding:12px;border:none;border-radius:10px;background:var(--brand);color:#fff;font-size:15px;cursor:pointer;margin-top:8px}.btn.small{width:auto;padding:7px 14px;font-size:13px;margin:0}.btn.ghost{background:#fff;color:var(--brand);border:1px solid var(--brand)}.btn.danger{background:var(--red)}.btn.muted{background:#eef0f3;color:var(--text)}.btn:disabled{opacity:.5}input,select,textarea{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;font-size:15px;background:#fff;margin:6px 0;font-family:inherit}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand)}label.f{display:block;font-size:13px;color:var(--muted);margin-top:10px}table.list{width:100%;border-collapse:collapse;font-size:13.5px}table.list th{text-align:left;color:var(--muted);font-weight:500;padding:6px 4px;border-bottom:1px solid var(--line)}table.list td{padding:9px 4px;border-bottom:1px solid var(--line);vertical-align:top}table.list tr:last-child td{border-bottom:none}.tag{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12px}.tag.pending{background:#fef4e6;color:#b54708}.tag.approved,.tag.redeemed,.tag.sent,.tag.simulated{background:#e7f8ef;color:var(--green)}.tag.rejected,.tag.failed{background:#fdeeee;color:var(--red)}.tag.skipped{background:#f0f1f3;color:var(--muted)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.kpi{display:flex;flex-direction:column;gap:2px}.kpi .num{font-size:28px;font-weight:700}.kpi .lbl{font-size:13px;color:var(--muted)}.rank-item{display:flex;align-items:center;gap:10px;padding:9px 2px;border-bottom:1px solid var(--line)}.rank-item:last-child{border-bottom:none}.rank-item .rk{width:24px;height:24px;border-radius:50%;background:#eef0f3;color:var(--muted);display:flex;align-items:center;justify-content:center;font-size:12px;flex:none}.rank-item:nth-child(1) .rk{background:#ffd75e;color:#8a6200}.rank-item:nth-child(2) .rk{background:#d8dde5;color:#4a5768}.rank-item:nth-child(3) .rk{background:#f3c99a;color:#7a4b12}.rank-item .nm{flex:1}.rank-item .sc{font-weight:700;color:var(--brand)}.gallery img{width:100%;border-radius:10px;display:block}.gallery .g-title{font-size:13px;color:var(--muted);margin-top:6px}.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.spacer{flex:1}.err{color:var(--red);font-size:13px;margin-top:6px}.ok-msg{color:var(--green);font-size:13px;margin-top:6px}.muted{color:var(--muted);font-size:13px}.hint{font-size:12px;color:var(--muted);margin-top:8px;line-height:1.5}.product{display:flex;gap:12px;padding:12px 2px;border-bottom:1px solid var(--line)}.product:last-child{border-bottom:none}.product .p-icon{width:44px;height:44px;border-radius:10px;background:#f0f7ff;display:flex;align-items:center;justify-content:center;font-size:22px;flex:none}.product .p-info{flex:1}.product .p-name{font-weight:600}.product .p-cost{color:var(--brand);font-weight:600}.tabs{display:flex;gap:6px;margin-bottom:12px;overflow-x:auto}.tabs button{flex:none;padding:8px 14px;border:none;border-radius:20px;background:#eef0f3;font-size:13.5px;cursor:pointer}.tabs button.active{background:var(--brand);color:#fff}.toast{position:fixed;left:50%;bottom:12%;transform:translate(-50%);background:#141920e0;color:#fff;padding:10px 20px;border-radius:10px;font-size:14px;z-index:99;max-width:80%}.code-chip{font-family:ui-monospace,Menlo,monospace;font-size:17px;font-weight:700;letter-spacing:2px;color:var(--brand);background:#f0f7ff;padding:5px 12px;border-radius:8px;display:inline-block}@media (min-width: 600px){body{background:#e9ebef}}.footer{padding:18px 16px 26px;text-align:center;font-size:12px;color:#93a0b4}
