:root{--brand: #1e9e4a;--brand-d: #16863d;--brand-dark: #0f6b30;--lime: #8cc63e;--lime-d: #6fae2e;--bg: #eef4ee;--panel: #ffffff;--panel2: #f3f8f3;--ink: #15321f;--muted: #5f7a68;--line: #d9e6dd;--ok: #1e9e4a;--ok-d: #16863d;--err: #e23b4e;--warn: #e0a92e;--grad: linear-gradient(135deg, #1e9e4a 0%, #8cc63e 100%)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:17px}#app{max-width:540px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--grad);color:#fff;position:sticky;top:0;z-index:5;box-shadow:0 2px 12px #106b3040}.topbar .logo{height:26px;width:auto;filter:brightness(0) invert(1);opacity:.96}.topbar .title{font-weight:700;font-size:18px}.topbar .sp{flex:1}.topbar button{background:#ffffff2e;border:1px solid rgba(255,255,255,.35);color:#fff;border-radius:10px;padding:8px 12px;font-size:15px;font-weight:600}.topbar button:active{background:#ffffff4d}.content{flex:1;padding:16px;display:flex;flex-direction:column;gap:14px}h2{margin:4px 0 6px;font-size:20px;color:var(--brand-dark)}.muted{color:var(--muted);font-size:14px}label{display:block;font-size:14px;color:var(--muted);margin-bottom:6px;font-weight:600}input,select{width:100%;padding:14px;font-size:18px;border-radius:12px;border:1.5px solid var(--line);background:#fff;color:var(--ink);outline:none}input:focus,select:focus{border-color:var(--brand);box-shadow:0 0 0 3px #1e9e4a26}.btn{width:100%;padding:16px;font-size:18px;font-weight:700;border:none;border-radius:14px;background:var(--brand);color:#fff;margin-top:4px;box-shadow:0 4px 14px #1e9e4a4d;transition:transform .05s}.btn:active{background:var(--brand-d);transform:translateY(1px)}.btn.ok{background:var(--lime-d);box-shadow:0 4px 14px #6fae2e4d}.btn.ok:active{background:#5c9626}.btn.ghost{background:#fff;border:1.5px solid var(--line);color:var(--brand-dark);box-shadow:none}.btn.sm{padding:10px 12px;font-size:15px;width:auto}.btn:disabled{opacity:.5}.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.tile{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:22px 14px;text-align:center;font-weight:700;font-size:16px;color:var(--brand-dark);display:flex;flex-direction:column;gap:10px;align-items:center;min-height:104px;justify-content:center;box-shadow:0 2px 10px #106b3012}.tile:active{transform:translateY(1px);border-color:var(--brand)}.tile .ic{font-size:26px;width:52px;height:52px;display:flex;align-items:center;justify-content:center;background:var(--grad);border-radius:14px;color:#fff}.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:0 2px 10px #106b300f}.row{display:flex;gap:8px;align-items:center}.row>*{flex:1}.kv{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--panel2);gap:10px}.kv:last-child{border-bottom:none}.kv b{font-weight:700;color:var(--brand-dark)}.list .item{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:10px;box-shadow:0 2px 8px #106b300d}.list .item:active{border-color:var(--brand)}.badge{font-size:12px;padding:4px 10px;border-radius:20px;background:var(--panel2);border:1px solid var(--line);color:var(--muted);font-weight:600}.badge.ok{background:#1e9e4a1f;color:var(--brand-d);border-color:var(--brand)}.badge.warn{background:#e0a92e26;color:#a6791a;border-color:var(--warn)}.badge.err{background:#e23b4e1f;color:#b0293a;border-color:var(--err)}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%);padding:14px 22px;border-radius:14px;font-weight:700;color:#fff;z-index:50;max-width:90%;text-align:center;box-shadow:0 8px 28px #00000040}.toast.ok{background:var(--brand)}.toast.err{background:var(--err)}.flash{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:40;opacity:0}.flash.ok{background:var(--brand);animation:f .4s}.flash.err{background:var(--err);animation:f .4s}@keyframes f{0%{opacity:.4}to{opacity:0}}.center{text-align:center}.scan-hint{font-size:13px;color:var(--muted);margin-top:4px}.login-card{background:var(--panel);border:1px solid var(--line);border-radius:22px;padding:30px 24px;box-shadow:0 10px 40px #106b301f;margin-top:8vh}.login-logo{display:block;margin:0 auto 18px;height:64px;width:auto}.brand-strip{height:6px;background:var(--grad)}.doc-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.doc-head h2{margin:0;font-size:19px}.wh-flow{display:flex;align-items:stretch;gap:8px;margin-bottom:14px}.wh-box{flex:1;background:var(--panel2);border:1px solid var(--line);border-radius:14px;padding:10px 12px;min-width:0}.wh-cap{font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.03em}.wh-code{font-size:18px;font-weight:800;color:var(--brand-dark);line-height:1.2}.wh-name{font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wh-arrow{display:flex;align-items:center;color:var(--brand);font-size:22px;font-weight:700}.info-row{display:flex;gap:10px;align-items:center;padding:8px 0}.info-ic{width:34px;height:34px;border-radius:10px;background:#1e9e4a1a;display:flex;align-items:center;justify-content:center;font-size:16px;flex:0 0 auto}.info-lbl{font-size:12px;color:var(--muted)}.info-val{font-size:15px;font-weight:600;color:var(--ink)}.sec-title{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:14px 0 8px}.appr{display:flex;gap:10px;align-items:center;padding:7px 0}.appr-dot{width:24px;height:24px;border-radius:50%;background:#1e9e4a26;color:var(--brand-d);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;flex:0 0 auto}.line{display:flex;align-items:center;gap:10px;background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:8px}.line-main{flex:1;min-width:0}.line-name{font-size:15px;font-weight:600;color:var(--ink)}.line-code{font-size:12px;color:var(--muted)}.line-qty{font-size:18px;font-weight:800;color:var(--brand-dark);flex:0 0 auto}.divider{height:1px;background:var(--line);margin:14px 0;border:none}
