:root{--bg: #f6f6f4;--card: #ffffff;--text: #1a1a1a;--text-sub: #8a8a86;--border: #ececea;--accent: #1a1a1a;--ok: #2e8b57;--danger: #c75450;--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;font-size:15px;-webkit-tap-highlight-color:transparent}#root{min-height:100vh}.loading{display:flex;align-items:center;justify-content:center;min-height:60vh;color:var(--text-sub)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--bg)}.login-card{width:100%;max-width:340px;display:flex;flex-direction:column;gap:14px;text-align:center}.login-logo{width:60px;height:60px;margin:0 auto 6px;border-radius:18px;background:var(--card);color:var(--text);border:1px solid var(--border);font-size:26px;font-weight:700;display:flex;align-items:center;justify-content:center}.login-card h1{font-size:22px;letter-spacing:1px}.login-sub{color:var(--text-sub);font-size:13px;margin-top:-8px}.login-card input{height:48px;border:1px solid var(--border);border-radius:14px;background:var(--card);padding:0 16px;font-size:16px;outline:none;text-align:center}.login-card input:focus{border-color:#c9c9c5}.error-text{color:var(--danger);font-size:13px}.app{display:flex;flex-direction:column;min-height:100vh}.topbar{position:sticky;top:0;z-index:10;height:46px;background:#f6f6f4eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:space-between;padding:0 18px}.topbar-title{font-size:15px;font-weight:700;letter-spacing:.5px}.content{flex:1;padding:8px 14px calc(64px + var(--safe-bottom));max-width:560px;width:100%;margin:0 auto;display:flex;flex-direction:column}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:10;height:calc(54px + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:#fffffff2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--border);display:flex}.tabbar button{flex:1;border:none;background:none;font-size:11px;color:var(--text-sub);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.tabbar button.active{color:var(--text);font-weight:600}.tab-icon{font-size:19px;line-height:1}.page{display:flex;flex-direction:column;gap:12px;padding-top:8px}.primary-btn{height:46px;border:none;border-radius:14px;background:var(--accent);color:#fff;font-size:15px;font-weight:600}.primary-btn:active{opacity:.85}.primary-btn:disabled{opacity:.4}.primary-btn.small{height:40px;padding:0 20px}.secondary-btn{height:44px;border:1px solid var(--border);border-radius:14px;background:var(--card);color:var(--text);font-size:14px;font-weight:600}.secondary-btn:disabled{opacity:.4}.link-btn{border:none;background:none;color:var(--text-sub);font-size:14px;padding:4px 0}.hint{color:var(--text-sub);font-size:12px;line-height:1.5}.muted{color:var(--text-sub)}.quote-page{flex:1;display:flex;flex-direction:column;gap:12px}.quote-page:not(.has-result){justify-content:center;min-height:62vh}.hero{text-align:center;padding-bottom:26px}.hero-mark{font-size:34px;font-weight:800;letter-spacing:1px;color:var(--text)}.hero-sub{color:var(--text-sub);font-size:13px;margin-top:6px;letter-spacing:2px}.input-shell{background:var(--card);border:1px solid var(--border);border-radius:22px;padding:12px 12px 8px;box-shadow:0 2px 12px #0000000a}.input-box{width:100%;border:none;outline:none;resize:none;background:transparent;font-size:15px;line-height:1.6;font-family:inherit;color:var(--text)}.input-box::placeholder{color:#b9b9b5}.input-toolbar{display:flex;align-items:center;justify-content:space-between;padding-top:8px}.pill{border:1px solid var(--border);border-radius:999px;padding:5px 12px;font-size:12px;color:var(--text-sub);background:var(--bg)}.send-btn{width:36px;height:36px;border:none;border-radius:50%;background:var(--accent);color:#fff;font-size:18px;line-height:1}.send-btn:disabled{opacity:.4}.results{display:flex;flex-direction:column;gap:10px}.summary-bar{position:sticky;top:46px;z-index:5;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:10px 14px;display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--text-sub)}.summary-bar strong{color:var(--text);font-size:17px}.result-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:13px 15px;display:flex;flex-direction:column;gap:7px}.result-card.not-found{background:#fbf7f7}.result-card.pending{border-style:dashed}.card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.mlfb{font-family:SF Mono,Consolas,monospace;font-weight:700;font-size:15px;word-break:break-all}.raw-line{font-size:14px;color:var(--text);word-break:break-all}.badge{flex-shrink:0;background:var(--bg);color:var(--text-sub);border-radius:999px;padding:2px 10px;font-size:11px;font-weight:600}.badge-miss{color:var(--danger)}.badge-soft{color:var(--ok)}.desc{color:var(--text-sub);font-size:13px;line-height:1.5}.price-line{display:flex;align-items:baseline;justify-content:space-between;font-size:12px}.price-line.main{font-size:14px}.price-line.main strong{font-size:17px}.cand-btn{display:flex;flex-direction:column;gap:3px;text-align:left;border:1px solid var(--border);border-radius:12px;background:var(--bg);padding:10px 12px;font-family:inherit}.cand-btn:active{background:#ededeb}.cand-mlfb{font-family:SF Mono,Consolas,monospace;font-weight:700;font-size:14px;color:var(--text)}.cand-desc{font-size:12px;color:var(--text-sub);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.cand-price{font-size:12px;color:var(--text);font-weight:600}.add-btn{flex-shrink:0;width:30px;height:30px;border:1px solid var(--border);border-radius:50%;background:var(--card);color:var(--text);font-size:16px;line-height:1}.add-btn:active{background:#ededeb}.cand-row{display:flex;align-items:center;gap:8px}.cand-row .cand-btn{flex:1;min-width:0}.quote-page.has-dock{padding-bottom:58px}.dock-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:19;background:#00000040}.dock{position:fixed;left:0;right:0;bottom:calc(54px + var(--safe-bottom));z-index:20}.dock-bar{height:52px;background:#fffffff7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--border);display:flex;align-items:center;gap:10px;padding:0 14px}.dock-toggle{flex:1;min-width:0;border:none;background:none;text-align:left;font-size:14px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:6px}.dock-arrow{color:var(--text-sub);font-size:11px}.dock-list{background:var(--card);border:1px solid var(--border);border-bottom:none;border-radius:18px 18px 0 0;max-height:55vh;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:10px}.dock-item{border:1px solid var(--border);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}.dock-item .desc{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.dock-item-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.dock-del{border:none;background:none;color:var(--text-sub);font-size:20px;line-height:1;padding:0 2px}.dock-item-ctrl{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--text-sub)}.dock-item-ctrl label{display:flex;align-items:center;gap:4px}.dock-item-ctrl input{width:56px;height:30px;border:1px solid var(--border);border-radius:8px;background:var(--bg);text-align:center;font-size:13px;outline:none;color:var(--text)}.dock-item-ctrl input:focus{border-color:#c9c9c5;background:var(--card)}.dock-sub{margin-left:auto;color:var(--text)}.dock-sub strong{font-size:14px}.dock-clear{text-align:center}.form-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:14px 15px;display:flex;flex-direction:column;gap:10px}.form-card h2{font-size:15px}.form-card label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--text-sub)}.form-card input{height:42px;border:1px solid var(--border);border-radius:10px;background:var(--bg);padding:0 12px;font-size:14px;outline:none;color:var(--text)}.form-card input:focus{border-color:#c9c9c5;background:var(--card)}.test-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:13px}.test-row>span:first-child{color:var(--text-sub);flex-shrink:0}.test-ok{color:var(--ok);font-size:12px;text-align:right;word-break:break-all}.test-fail{color:var(--danger);font-size:12px;text-align:right;word-break:break-all}.data-stats{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--text-sub);margin-bottom:10px}.job-status{margin-top:10px;font-size:13px;line-height:1.6;word-break:break-all}.job-status.job-running{color:var(--text-sub)}.job-status.job-done{color:var(--ok)}.job-status.job-error{color:var(--danger)}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#00000059;display:flex;align-items:center;justify-content:center;padding:24px}.modal{width:100%;max-width:340px;background:var(--card);border-radius:18px;padding:20px 18px;display:flex;flex-direction:column;gap:14px}.modal h3{font-size:16px}.modal input{height:44px;border:1px solid var(--border);border-radius:12px;padding:0 14px;font-size:15px;outline:none}.modal input:focus{border-color:#c9c9c5}.modal-actions{display:flex;align-items:center;justify-content:flex-end;gap:16px}.toast{position:fixed;left:50%;bottom:calc(78px + var(--safe-bottom));transform:translate(-50%);background:#1a1a1ae6;color:#fff;border-radius:999px;padding:9px 18px;font-size:13px;z-index:100;max-width:80vw}
