:root{--brand: #3F1D6E;--deep: #552D8A;--mid: #6B3FA0;--soft: #8B5FBF;--mist: #F5F2FB;--mist2: #EBE4F7;--line: #E4DCF0;--ink: #1A1430;--muted: #5C5470;--ok: #027A48;--warn: #B54708;--danger: #B42318;--card: #fff;--nav-h: 58px;--safe-b: env(safe-area-inset-bottom, 0px);font-family:PingFang SC,Noto Sans SC,Microsoft YaHei,sans-serif;color:var(--ink);background:#f3f1f8;line-height:1.5}*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%}a{color:inherit;text-decoration:none}button,input{font:inherit}.app-shell{max-width:480px;margin:0 auto;min-height:100vh;background:radial-gradient(600px 240px at 0% 0%,#EBE4F7,transparent 60%),#f3f1f8;padding-bottom:calc(var(--nav-h) + var(--safe-b) + 12px)}.topbar{position:sticky;top:0;z-index:20;padding:14px 16px 12px;background:linear-gradient(135deg,#3f1d6e,#552d8a 55%,#5b8fd4);color:#fff}.topbar h1{margin:0;font-size:18px;font-weight:700}.topbar p{margin:4px 0 0;font-size:12px;opacity:.9}.page{padding:14px 14px 8px}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:12px;box-shadow:0 8px 24px #3f1d6e0f}.card h2{margin:0 0 8px;font-size:15px;color:var(--brand)}.muted{color:var(--muted);font-size:12px}.row{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.row:last-child{border-bottom:0}.sku{font-weight:700;font-size:13px}.sub{font-size:12px;color:var(--muted)}.tag{display:inline-flex;align-items:center;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.tag.hot{background:#fee4e2;color:var(--danger)}.tag.warm{background:#fef0c7;color:var(--warn)}.tag.cold{background:#f2f4f7;color:#475467}.tag.ghost{background:#f9fafb;color:#98a2b3;border:1px dashed #D0D5DD}.tag.mvp{background:#ecfdf3;color:var(--ok)}.tag.cut{background:#f2f4f7;color:#667085}.tag.auto{background:#eff8ff;color:#175cd3}.tag.manual{background:#fff4ed;color:#c4320a}.btn{border:0;border-radius:12px;padding:11px 14px;background:var(--brand);color:#fff;font-weight:650;cursor:pointer;width:100%}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.secondary{background:#fff;color:var(--brand);border:1px solid var(--line)}.btn.ghost{background:var(--mist);color:var(--brand)}.btn-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.kpi{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.kpi .k{background:var(--mist);border-radius:12px;padding:12px 8px;text-align:center}.kpi strong{display:block;font-size:20px;color:var(--brand)}.kpi span{font-size:11px;color:var(--muted)}.search{width:100%;border:1px solid var(--line);border-radius:12px;padding:11px 12px;background:#fff;margin-bottom:10px}.bottom-nav{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:min(480px,100%);height:calc(var(--nav-h) + var(--safe-b));padding-bottom:var(--safe-b);background:#fffffff5;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:30}.bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10px;color:var(--muted)}.bottom-nav a.active{color:var(--brand);font-weight:700}.bottom-nav .ico{font-size:16px;line-height:1}.log{max-height:140px;overflow:auto;background:#1a1430;color:#e8e2f5;border-radius:12px;padding:10px;font-size:11px;font-family:ui-monospace,Menlo,Consolas,monospace}.log div{margin:3px 0}.log .ok{color:#6ce9a6}.log .auto{color:#84caff}.log .man{color:#fdb022}.table{width:100%;border-collapse:collapse;font-size:11px}.table th,.table td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line);vertical-align:top}.table th{color:var(--brand);background:var(--mist)}.pill-line{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.step-dot{display:flex;gap:8px;align-items:flex-start;padding:8px 0;border-bottom:1px dashed var(--line)}.step-dot:last-child{border-bottom:0}.dot{width:22px;height:22px;border-radius:8px;flex:0 0 auto;display:grid;place-items:center;font-size:11px;font-weight:700;background:var(--mist2);color:var(--brand)}.dot.on{background:var(--brand);color:#fff}.dot.done{background:var(--ok);color:#fff}
