@import"https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap";.upload-zone{border:2px dashed #c8d4d2;border-radius:8px;padding:28px 20px;text-align:center;cursor:pointer;transition:all .15s;background:#f8f9f9;-webkit-user-select:none;user-select:none}.upload-zone:hover,.upload-zone.drag-over{border-color:#4cac9f;background:#e8f6f5}.upload-zone.has-file{border-style:solid;border-color:#4cac9f;background:#e8f6f5}.upload-prompt{display:flex;flex-direction:column;align-items:center;gap:10px}.upload-icon{font-size:2rem;opacity:.4}.upload-text{color:#888;font-size:.875rem}.file-info{display:flex;align-items:center;justify-content:center;gap:12px}.file-icon{font-size:2rem}.file-name{font-weight:600;color:#3b465a}.file-size{font-size:.8rem;color:#888;margin-top:2px}.mapping-table-wrap{overflow-x:auto}.mapping-table{width:100%;border-collapse:collapse;font-size:.875rem}.mapping-table th{text-align:left;padding:8px 10px;background:#f8f9f9;border-bottom:2px solid #e4e8ed;font-size:.75rem;font-weight:600;color:#3b465a;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.mapping-table td{padding:6px 8px;border-bottom:1px solid #f0f2f4;vertical-align:middle}.mapping-table tr.unmapped-row td{background:#fffdf5}.mapping-table tr:last-child td{border-bottom:none}.field-input,.notes-input{width:100%;padding:5px 8px;border:1px solid #dde2ec;border-radius:5px;font-size:.875rem;font-family:inherit;background:#fff;color:#3b465a;transition:border-color .15s}.field-input:focus,.notes-input:focus{outline:none;border-color:#4cac9f}.field-name-locked{display:block;padding:5px 8px;font-size:.875rem;color:#3b465a;font-weight:500}.field-input.compound{font-family:SF Mono,Fira Code,monospace;font-size:.8rem}.notes-input{color:#888}.source-cell{display:flex;gap:4px;align-items:center}.source-select{flex:1;padding:5px 8px;border:1px solid #dde2ec;border-radius:5px;font-size:.875rem;font-family:inherit;background:#fff;color:#3b465a;max-width:220px}.source-select:focus{outline:none;border-color:#4cac9f}.field-type-select{padding:5px 8px;border:1px solid #dde2ec;border-radius:5px;font-size:.8rem;font-family:inherit;background:#fff;color:#3b465a;min-width:120px}.field-type-select:focus{outline:none;border-color:#4cac9f}.field-type-na{color:#ccc;font-size:.85rem;padding-left:8px}.confidence-col{width:18px;padding:0 4px 0 8px!important;text-align:center}.confidence-badge{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0;cursor:default}.compound-toggle{width:26px;height:26px;border:1px solid #dde2ec;border-radius:5px;background:#fff;font-size:.85rem;color:#888;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s}.compound-toggle:hover{background:#e8f6f5;border-color:#4cac9f;color:#4cac9f}.remove-btn{width:24px;height:24px;border:none;background:none;color:#ccc;font-size:1.1rem;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .15s}.remove-btn:hover{background:#fee;color:#c0392b}.add-row-btn{margin-top:10px;background:none;border:1px dashed #c8d4d2;color:#888;padding:6px 14px;border-radius:6px;font-size:.85rem;font-family:inherit;transition:all .15s}.add-row-btn:hover{border-color:#4cac9f;color:#4cac9f;background:#e8f6f5}.samples-empty{color:#ccc;font-size:.85rem}.samples-cell{position:relative;max-width:140px}.samples-trigger{display:flex;align-items:center;gap:5px;background:none;border:none;padding:0;cursor:pointer;font-family:inherit;max-width:100%;text-align:left}.samples-first{font-size:.78rem;color:#888;font-family:SF Mono,Fira Code,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:90px;display:block}.samples-count{font-size:.7rem;color:#fff;background:#aab;border-radius:10px;padding:1px 5px;white-space:nowrap;flex-shrink:0}.samples-trigger:hover .samples-first{color:#4cac9f}.samples-trigger:hover .samples-count{background:#4cac9f}.samples-popover{position:absolute;top:calc(100% + 4px);left:0;z-index:100;background:#fff;border:1px solid #dde2ec;border-radius:6px;box-shadow:0 4px 12px #0000001a;list-style:none;margin:0;padding:4px 0;min-width:160px;max-width:280px}.samples-popover li{font-size:.78rem;font-family:SF Mono,Fira Code,monospace;color:#3b465a;padding:4px 12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.samples-popover li:hover{background:#f4f9f9}.suggest-col{width:80px;text-align:center}.suggest-mapping-cb{display:block;margin:0 auto;cursor:pointer;accent-color:#4cac9f}.db-picker{position:relative;flex:1}.db-picker-input-row{display:flex;align-items:center;border:1px solid #dde2ec;border-radius:6px;background:#fff;cursor:text;overflow:hidden}.db-picker-input{flex:1;padding:8px 12px;border:none;outline:none;font-size:.875rem;font-family:inherit;color:#3b465a;background:transparent}.db-picker-selected{flex:1;padding:8px 12px;font-size:.875rem;color:#3b465a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.db-picker-chevron{padding:0 10px;background:none;border:none;color:#888;font-size:.65rem;cursor:pointer}.db-picker-list{position:absolute;top:calc(100% + 4px);left:0;right:0}.db-picker-list.drop-up{top:auto;bottom:calc(100% + 4px);background:#fff;border:1px solid #dde2ec;border-radius:6px;box-shadow:0 4px 12px #0000001a;max-height:240px;overflow-y:auto;z-index:100;list-style:none;margin:0;padding:4px 0}.db-picker-item{padding:8px 14px;font-size:.875rem;color:#3b465a;cursor:pointer}.db-picker-item:hover,.db-picker-item.selected{background:#f0faf9;color:#2a8c83}.db-picker-empty{padding:10px 14px;font-size:.875rem;color:#999}.db-picker-error{font-size:.875rem;color:#c62828;margin:0}.tab-row{display:flex;align-items:center;gap:4px;margin-bottom:12px;border-bottom:2px solid #e4e8ed;padding-bottom:0}.tab-btn{padding:7px 16px;border:none;background:none;font-size:.875rem;font-family:inherit;color:#888;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s}.tab-btn:hover{color:#3b465a}.tab-btn.active{color:#4cac9f;border-bottom-color:#4cac9f;font-weight:600}.tab-spacer{flex:1}.copy-btn{padding:5px 14px;border:1.5px solid #dde2ec;border-radius:6px;background:#fff;font-size:.85rem;font-family:inherit;color:#3b465a;transition:all .15s}.copy-btn:hover{border-color:#4cac9f;color:#4cac9f}.copy-btn.copied{background:#e8f6f5;border-color:#4cac9f;color:#3d9b8e;font-weight:600}.notion-panel{padding:16px 4px 4px;display:flex;flex-direction:column;gap:12px}.notion-instructions{font-size:.875rem;color:#666;margin:0}.notion-input-row{display:flex;gap:10px}.notion-url-input{flex:1;padding:8px 12px;border:1px solid #dde2ec;border-radius:6px;font-size:.875rem;font-family:inherit;color:#3b465a}.notion-url-input:focus{outline:none;border-color:#4cac9f}.notion-push-btn{white-space:nowrap}.csv-panel{padding:16px 4px;display:flex;flex-direction:column;gap:12px}.notion-connect{display:flex;flex-direction:column;gap:12px}.notion-connect-btn{display:inline-block;text-decoration:none;text-align:center;white-space:nowrap}.notion-user-row{display:flex;align-items:center;justify-content:space-between;font-size:.875rem}.notion-user{color:#3b465a}.notion-logout{font-size:.8rem;color:#888;text-decoration:none}.notion-logout:hover{color:#c62828;text-decoration:underline}.notion-success{font-size:.875rem;color:#2e7d32;background:#f0faf0;border:1px solid #c3e6cb;border-radius:6px;padding:10px 14px}.notion-error{font-size:.875rem;color:#c62828;background:#fff5f5;border:1px solid #f5c6cb;border-radius:6px;padding:10px 14px}.output-pre{background:#2b3447;color:#e8eaf6;border-radius:8px;padding:20px;overflow-x:auto;font-size:.825rem;line-height:1.6;white-space:pre;max-height:480px;overflow-y:auto}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{background:#3b465a;color:#fff;padding:20px 24px}.header-inner h1{font-size:1.5rem;font-weight:700}.header-inner p{margin-top:4px;opacity:.75;font-size:.875rem;font-weight:400}.app-main{max-width:1100px;width:100%;margin:0 auto;padding:24px 16px;display:flex;flex-direction:column;gap:20px}.card{background:#fff;border-radius:10px;padding:24px;box-shadow:0 1px 4px #3b465a14}.card h2{font-size:1rem;font-weight:600;margin-bottom:16px;color:#3b465a}.btn-primary{display:inline-flex;align-items:center;gap:8px;background:#4cac9f;color:#fff;border:none;padding:10px 22px;border-radius:7px;font-size:.9rem;font-weight:600;font-family:inherit;transition:background .15s}.btn-primary:hover:not(:disabled){background:#3d9b8e}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.analyze-btn{margin-top:16px}.addl-warning{font-size:.85rem;color:#c62828;margin-top:16px}.spinner-row{display:flex;align-items:center;gap:8px}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{margin-top:12px;background:#fff5f5;border:1px solid #fcc;border-radius:6px;padding:10px 14px;color:#c0392b;font-size:.875rem}.mapping-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.file-badge{background:#e8f6f5;color:#3d9b8e;font-size:.8rem;padding:3px 10px;border-radius:12px;font-weight:500}.ft-section{margin-bottom:24px}.ft-section:last-of-type{margin-bottom:0}.ft-label{display:flex;align-items:center;gap:10px;margin-bottom:8px}.ft-name{font-weight:600;font-size:.85rem;color:#4cac9f;font-family:SF Mono,Fira Code,monospace;background:#e8f6f5;padding:3px 10px;border-radius:5px}.ft-count{font-size:.8rem;color:#888}.no-mappings{color:#999;font-size:.9rem;padding:20px 0}.unmapped-details{margin-top:16px;font-size:.875rem}.unmapped-details summary{cursor:pointer;color:#3b465a;padding:6px 0}.unmapped-list{list-style:none;margin-top:8px;display:flex;flex-direction:column;gap:4px}.unmapped-list li{padding:4px 0}.unmapped-list code{background:#f0f2f4;padding:2px 6px;border-radius:4px;color:#3b465a}.suggestion{color:#888}.suggestion code{background:#e8f6f5;color:#3d9b8e}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Poppins,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f8f9f9;color:#3b465a;min-height:100vh}h1,h2,h3{line-height:1.2}button{cursor:pointer}input,select,textarea{font-family:inherit}code,pre{font-family:SF Mono,Fira Code,monospace}
