:root,[data-theme=light]{--bg:#f6f7f6;--card:#fff;--border:#e5e8e6;--text:#1a2e2a;--muted:#5f6f6b;--primary:#0d9488;--primary-hover:#0f766e;--primary-soft:rgba(13,148,136,.12);--primary-text:#fff;--success:#34c759;--success-soft:rgba(52,199,89,.12);--warning:#ff9f0a;--warning-soft:rgba(255,159,10,.12);--danger:#ff3b30;--danger-soft:rgba(255,59,48,.1);--info:#0a84ff;--info-soft:rgba(10,132,255,.1);--radius-sm:8px;--radius-md:14px;--radius-lg:20px;--radius-pill:999px;--font-sans:-apple-system,"SF Pro Text","Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;--font-display:-apple-system,"SF Pro Display","Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;color-scheme:light}[data-theme=dark]{--bg:#000;--card:#1c1c1e;--border:#2c2c2e;--text:#f2f4f3;--muted:#9aa5a1;--primary:#2dd4bf;--primary-hover:#5eead4;--primary-soft:rgba(45,212,191,.14);--primary-text:#06201c;--success:#30d158;--success-soft:rgba(48,209,88,.14);--warning:#ffd60a;--warning-soft:rgba(255,214,10,.14);--danger:#ff453a;--danger-soft:rgba(255,69,58,.14);--info:#64d2ff;--info-soft:rgba(100,210,255,.14);color-scheme:dark}:root{--primary-dark:#0f766e}[data-theme=dark]{--primary-dark:#5eead4}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{margin:0;padding:0}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);font-size:17px;line-height:1.5;min-height:100vh;min-height:100dvh;-webkit-font-smoothing:antialiased}.m-page{padding:16px 16px calc(88px + env(safe-area-inset-bottom));max-width:560px;margin:0 auto}.m-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:16px;margin-bottom:12px}.m-btn{display:block;width:100%;padding:16px;font-size:18px;font-weight:600;border:none;border-radius:14px;background:var(--primary);color:#fff;cursor:pointer;text-align:center;min-height:56px}.m-btn:active{background:var(--primary-dark)}.m-btn:disabled{opacity:.5}.m-btn-secondary{background:var(--card);color:var(--text);border:1px solid var(--border)}.m-btn-danger{background:var(--danger)}.m-input,.m-select{width:100%;padding:14px;font-size:17px;border:1px solid var(--border);border-radius:12px;background:var(--bg);color:var(--text);margin-bottom:12px;min-height:52px}.m-label{font-size:14px;color:var(--muted);margin-bottom:6px;display:block}.m-title{font-size:24px;font-weight:700;margin:0 0 16px}.m-h2{font-size:19px;font-weight:600;margin:0 0 12px}.m-muted{color:var(--muted);font-size:14px}.m-row{justify-content:space-between}.m-row,.m-task{display:flex;align-items:center;gap:12px}.m-task{padding:16px;background:var(--card);border:1px solid var(--border);border-radius:16px;margin-bottom:12px;text-decoration:none;color:var(--text)}.m-task:active{opacity:.7}.m-badge{display:inline-block;padding:4px 10px;border-radius:999px;font-size:13px;font-weight:600}.m-badge-pending{background:var(--warning-soft);color:var(--warning)}.m-badge-progress{background:var(--info-soft);color:var(--info)}.m-badge-done{background:var(--success-soft);color:var(--success)}.m-tabbar{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--bg);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);z-index:50}.m-tab{flex:1 1;padding:10px 4px 8px;text-align:center;font-size:11px;color:var(--muted);text-decoration:none;display:flex;flex-direction:column;align-items:center;gap:2px}.m-tab.active{color:var(--primary)}.m-tab-icon{display:flex;align-items:center;justify-content:center;height:26px}.m-scan-box{aspect-ratio:4/3;background:#000;border-radius:16px;overflow:hidden;position:relative;margin-bottom:12px}.m-scan-box video{width:100%;height:100%;object-fit:cover}.m-scan-hint{position:absolute;bottom:12px;left:0;right:0;text-align:center;color:#fff;font-size:14px;text-shadow:0 1px 4px rgba(0,0,0,.8)}.m-step{gap:8px;margin-bottom:16px}.m-step,.m-step-dot{display:flex;align-items:center}.m-step-dot{width:32px;height:32px;border-radius:50%;justify-content:center;font-weight:700;font-size:15px;background:var(--border);color:var(--muted);flex-shrink:0}.m-step-dot.done{background:var(--success);color:#fff}.m-step-dot.now{background:var(--primary);color:#fff}.m-big-num{font-size:48px;font-weight:800;text-align:center;margin:16px 0}.m-qty-ctl{display:flex;align-items:center;justify-content:center;gap:16px;margin:16px 0}.m-qty-btn{width:64px;height:64px;border-radius:50%;font-size:28px;border:1px solid var(--border);background:var(--card);color:var(--text);cursor:pointer}