/* BioTools 样式：由 apps/BioTools/app.css 作用域化生成，改样式改源文件再跑 node tools/build-biotools.mjs */
#btapp{
  --bg:#f7f8fa;--card:#ffffff;--ink:#1a2233;--muted:#64748b;--line:#e2e8f0;
  --brand:#2563eb;--brand-dark:#1d4ed8;--green:#059669;--green-bg:#ecfdf5;--green-line:#a7f3d0;
  --amber:#b45309;--amber-bg:#fffbeb;--amber-line:#fde68a;--red:#dc2626;
  --radius:12px;--shadow:0 1px 3px rgba(15,23,42,.08),0 4px 14px rgba(15,23,42,.05);
}
#btapp, #btapp *, #btapp *::before, #btapp *::after{box-sizing:border-box;margin:0;padding:0}
#btapp{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--ink);line-height:1.6}
#btapp header.site{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:12px 28px;gap:16px;flex-wrap:wrap}
#btapp .brand{font-size:19px;font-weight:700;letter-spacing:.2px}
#btapp .brand em{font-style:normal;color:var(--brand)}
#btapp .brand small{font-weight:400;color:var(--muted);font-size:13px;margin-left:8px}
#btapp .privacy-pill{font-size:13px;color:var(--green);background:var(--green-bg);border:1px solid var(--green-line);border-radius:999px;padding:4px 14px;font-weight:500}
#btapp .hero{max-width:1180px;margin:34px auto 10px;padding:0 24px}
#btapp .hero h1{font-size:30px;font-weight:700;letter-spacing:-.3px}
#btapp .hero p{color:var(--muted);margin-top:10px;max-width:820px;font-size:15px}
#btapp .hero .stats{display:flex;gap:22px;margin-top:18px;flex-wrap:wrap}
#btapp .hero .stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px 18px;min-width:130px;box-shadow:var(--shadow)}
#btapp .hero .stat b{display:block;font-size:22px;color:var(--brand)}
#btapp .hero .stat span{font-size:12.5px;color:var(--muted)}
#btapp nav.chips{max-width:1180px;margin:26px auto 6px;padding:0 24px;display:flex;gap:8px;flex-wrap:wrap}
#btapp nav.chips button{border:1px solid var(--line);background:var(--card);color:var(--muted);border-radius:999px;padding:6px 16px;font-size:13.5px;cursor:pointer;transition:.15s}
#btapp nav.chips button:hover{border-color:var(--brand);color:var(--brand)}
#btapp nav.chips button.active{background:var(--brand);border-color:var(--brand);color:#fff}
#btapp .bt-main{max-width:1180px;margin:14px auto 60px;padding:0 24px}
#btapp .cat-title{font-size:17px;font-weight:700;margin:30px 0 4px;display:flex;align-items:center;gap:10px}
#btapp .cat-title .tag{font-size:11.5px;font-weight:500;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:1px 10px}
#btapp .cat-desc{font-size:13px;color:var(--muted);margin-bottom:14px}
#btapp .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:14px}
#btapp .card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 16px 14px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:8px;transition:.15s;position:relative}
#btapp a.card, #btapp .card.clickable{cursor:pointer}
#btapp .card.clickable:hover{border-color:var(--brand);transform:translateY(-2px)}
#btapp .card h3{font-size:15px;font-weight:650}
#btapp .card p{font-size:12.8px;color:var(--muted);flex:1}
#btapp .badge{display:inline-block;font-size:11px;font-weight:600;border-radius:5px;padding:1.5px 8px;width:max-content}
#btapp .badge.web{color:var(--green);background:var(--green-bg);border:1px solid var(--green-line)}
#btapp .badge.cloud{color:var(--amber);background:var(--amber-bg);border:1px solid var(--amber-line)}
#btapp .card .open-hint{font-size:12px;color:var(--brand);font-weight:500}
#btapp .card.cloud-card{background:linear-gradient(180deg,#fffdf5,#fff);opacity:.96}
#btapp .card.cloud-card .price-note{font-size:11.5px;color:var(--amber)}
#btapp footer{border-top:1px solid var(--line);background:var(--card);padding:26px 24px;text-align:center;color:var(--muted);font-size:13px}
#btapp footer b{color:var(--ink)}
#btapp .back{font-size:12.5px;color:var(--muted);text-decoration:none;border:1px solid var(--line);border-radius:999px;padding:3px 10px;vertical-align:2px;transition:.15s}
#btapp .back:hover{border-color:var(--brand);color:var(--brand)}
#btapp .modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:100;display:none;align-items:flex-start;justify-content:center;padding:30px 14px;overflow:auto}
#btapp .modal-backdrop.open{display:flex}
#btapp .modal{background:var(--card);border-radius:14px;width:min(980px,100%);box-shadow:0 20px 60px rgba(15,23,42,.25);overflow:hidden}
#btapp .modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 22px;border-bottom:1px solid var(--line)}
#btapp .modal-head h3{font-size:17px}
#btapp .modal-head .close{border:none;background:none;font-size:22px;color:var(--muted);cursor:pointer;line-height:1}
#btapp .modal-body{padding:20px 22px 28px;display:flex;flex-direction:column;gap:16px}
#btapp .sec-label{font-size:13px;font-weight:650;color:var(--ink);display:flex;align-items:center;gap:8px;margin-bottom:8px}
#btapp .sec-label::after{content:"";flex:1;height:1px;background:var(--line)}
#btapp .io-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
#btapp .io-row input[type=file]{font-size:13px;color:var(--muted);max-width:320px}
#btapp textarea#dataArea{width:100%;min-height:150px;font-family:ui-monospace,SFMono-Regular,Consolas,"Courier New",monospace;font-size:12.5px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;resize:vertical;background:#fbfcfe;color:var(--ink)}
#btapp textarea#dataArea:focus{outline:2px solid #bfdbfe;border-color:var(--brand)}
#btapp .hint{font-size:12.5px;color:var(--muted);margin-top:6px}
#btapp .hint.err{color:var(--red)}
#btapp button.primary{background:var(--brand);color:#fff;border:none;border-radius:8px;padding:10px 26px;font-size:14.5px;font-weight:600;cursor:pointer;width:max-content}
#btapp button.primary:hover{background:var(--brand-dark)}
#btapp button.primary:disabled{background:#94a3b8;cursor:not-allowed}
#btapp button.ghost{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:7px 14px;font-size:13px;color:var(--ink);cursor:pointer}
#btapp button.ghost:hover{border-color:var(--brand);color:var(--brand)}
#btapp button.dl{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:3px 12px;font-size:12.5px;color:var(--brand);cursor:pointer}
#btapp button.dl:hover{border-color:var(--brand)}
#btapp #paramForm{display:flex;flex-wrap:wrap;gap:14px 22px}
#btapp .field{display:flex;flex-direction:column;gap:4px;min-width:200px}
#btapp .field label{font-size:12.5px;font-weight:600;color:#334155}
#btapp .field .help{font-size:11.5px;color:var(--muted)}
#btapp .field select, #btapp .field input[type=text], #btapp .field input[type=number]{border:1px solid var(--line);border-radius:7px;padding:7px 9px;font-size:13px;background:#fff;color:var(--ink);max-width:260px}
#btapp .field select[multiple]{min-width:220px}
#btapp .field input[type=checkbox]{width:16px;height:16px;accent-color:var(--brand)}
#btapp .field.inline{flex-direction:row;align-items:center;gap:8px}
#btapp .result-card{border:1px solid var(--line);border-radius:10px;padding:14px 16px;background:#fbfcfe}
#btapp .result-card .rc-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
#btapp .result-card h4{font-size:14px}
#btapp .rc-actions{display:flex;gap:6px}
#btapp .tbl-wrap{overflow:auto;max-height:380px;border:1px solid var(--line);border-radius:8px}
#btapp table.result{border-collapse:collapse;font-size:12.5px;width:100%;background:#fff}
#btapp table.result th, #btapp table.result td{padding:6px 12px;border-bottom:1px solid var(--line);border-right:1px solid #f1f5f9;white-space:nowrap;text-align:right}
#btapp table.result th:first-child, #btapp table.result td:first-child{text-align:left}
#btapp table.result th{background:#f1f5f9;position:sticky;top:0;font-weight:600;z-index:1}
#btapp table.result tr:hover td{background:#f8fafc}
#btapp pre.text-out{font-family:ui-monospace,Consolas,monospace;font-size:12.5px;white-space:pre-wrap;word-break:break-all;background:#0f172a;color:#e2e8f0;border-radius:8px;padding:14px}
#btapp .chart-box{background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px;overflow:auto}
#btapp .chart-box svg{display:block;margin:auto;font-family:inherit}
#btapp .run-error{background:#fef2f2;border:1px solid #fecaca;color:var(--red);border-radius:8px;padding:10px 14px;font-size:13px}
#btapp .cloud-banner{max-width:1180px;margin:8px auto 0;padding:0 24px}
#btapp .cloud-banner .inner{background:linear-gradient(135deg,#fffbeb,#fff8e6);border:1px solid var(--amber-line);border-radius:var(--radius);padding:16px 22px;font-size:13.5px;color:#78350f}
#btapp .cloud-banner b{color:var(--amber)}
@media (max-width:640px) {#btapp .hero h1{font-size:24px}#btapp .modal-body{padding:14px}}
