:root{--bg: #0f172a;--bg-2: #1e293b;--card: #ffffff;--ink: #0f172a;--muted: #64748b;--line: #e2e8f0;--brand: #0f766e;--brand-2: #14b8a6;--danger: #b91c1c;--warn: #c2410c;--ok: #15803d;--shadow: 0 12px 40px rgba(15, 23, 42, .12);font-family:Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:linear-gradient(180deg,#0f172a,#134e4a 42%,#f1f5f9 42%);color:var(--ink)}.app{max-width:1280px;margin:0 auto;padding:32px 20px 64px}.hero{color:#fff;margin-bottom:24px}.hero h1{margin:0 0 8px;font-size:28px;letter-spacing:.04em}.hero p{margin:0;color:#ccfbf1;font-size:14px}.card{background:var(--card);border-radius:16px;box-shadow:var(--shadow);padding:24px;margin-bottom:20px}.dropzone{border:2px dashed #99f6e4;background:#f0fdfa;border-radius:12px;padding:36px 16px;text-align:center;cursor:pointer;transition:.15s ease}.dropzone:hover,.dropzone.drag{border-color:var(--brand);background:#ccfbf1}.dropzone strong{display:block;font-size:16px;margin-bottom:6px}.dropzone span{color:var(--muted);font-size:13px}input[type=file]{display:none}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.btn{border:0;border-radius:8px;padding:10px 16px;font-size:14px;cursor:pointer;background:var(--brand);color:#fff}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.ghost{background:#e2e8f0;color:var(--ink)}.btn.warn{background:#ea580c}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.kpi{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:14px 16px}.kpi .label{color:var(--muted);font-size:12px}.kpi .value{font-size:22px;font-weight:700;margin-top:4px}.kpi .sub{font-size:12px;color:var(--muted);margin-top:4px}.tabs{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 16px}.tab{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 14px;cursor:pointer;font-size:13px}.tab.on{background:var(--brand);color:#fff;border-color:var(--brand)}table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:10px 8px;border-bottom:1px solid var(--line);text-align:left}th{color:var(--muted);font-weight:600;cursor:pointer;white-space:nowrap}tr:hover td{background:#f8fafc}tr.expand td{background:#f0fdfa}table.nested{margin:8px 0 4px;background:#fff;border:1px solid var(--line);border-radius:8px}table.nested th{cursor:default}table.nested tr:hover td{background:#f8fafc}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px}.badge.none{background:#dcfce7;color:var(--ok)}.badge.mild{background:#ffedd5;color:var(--warn)}.badge.over{background:#fee2e2;color:var(--danger)}.badge.high{background:#d1fae5;color:#065f46}.badge.pending{background:#fee2e2;color:var(--danger)}.header-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 16px}.chip{background:#ecfeff;border:1px solid #99f6e4;color:#115e59;border-radius:999px;padding:4px 10px;font-size:12px}.map-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.map-item{border:1px solid var(--line);border-radius:12px;padding:12px}.map-item h3{margin:0 0 8px;font-size:14px}.map-item select{width:100%;padding:8px;border-radius:8px;border:1px solid var(--line)}.samples{color:var(--muted);font-size:12px;margin-top:8px;min-height:36px}.err{color:var(--danger);font-size:13px;margin-top:10px}.hint{color:var(--muted);font-size:13px}.dist{display:flex;gap:8px;flex-wrap:wrap;padding:8px 0 4px}.dist span{font-size:12px;color:var(--muted)}.split-editor{display:flex;flex-direction:column;gap:10px;margin:0 0 12px}.split-row{display:flex;flex-wrap:wrap;gap:12px;align-items:end}.split-index{font-size:12px;color:var(--muted);padding-bottom:10px;min-width:64px}.split-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.split-bar{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin:0}.split-bar label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)}.split-bar select{min-width:72px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:13px;color:var(--ink);background:#fff}.fold-toggle{display:flex;align-items:center;gap:8px;border:0;background:transparent;padding:0;cursor:pointer;text-align:left;color:inherit}.fold-toggle .caret{color:var(--muted);width:12px}.toolbar{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.search{padding:8px 12px;border-radius:8px;border:1px solid var(--line);min-width:220px}.footer-note{color:#64748b;font-size:12px;text-align:center;margin-top:12px}
