:root{--indigo: #4650e0;--indigo-deep: #3a43c9;--indigo-soft: #eef0fd;--indigo-soft-border: #dde1fb;--indigo-soft-border-2: #cdd3f8;--text: #14192e;--body-text: #3c4257;--muted: #5d6478;--faint: #8b91a5;--ghost: #9aa1b5;--border: #e4e7f0;--border-strong: #d5d9e4;--hairline: #eef0f5;--green: #0e7a4d;--green-soft: #e5f5ec;--green-dot: #18a058;--amber: #9a6a12;--amber-soft: #fdf3e2;--red: #c2372f;--red-soft: #fdf1f0;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--card-shadow: 0 1px 3px rgba(20, 25, 46, .05)}*{box-sizing:border-box}body{margin:0;font-family:Instrument Sans,system-ui,-apple-system,sans-serif;background:linear-gradient(180deg,#f5f6fc,#f4f5fa 480px);color:var(--text);line-height:1.55}#root{min-height:100vh;position:relative;overflow-x:hidden}.container{max-width:940px;margin:0 auto;padding:0 24px}.backdrop-grid{position:absolute;top:0;left:0;right:0;height:440px;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(70,80,224,.06) 0px,rgba(70,80,224,.06) 1px,transparent 1px,transparent 40px),repeating-linear-gradient(90deg,rgba(70,80,224,.06) 0px,rgba(70,80,224,.06) 1px,transparent 1px,transparent 40px);-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.9) 0%,transparent 100%);mask-image:linear-gradient(180deg,rgba(0,0,0,.9) 0%,transparent 100%)}.backdrop-wash{position:absolute;top:-190px;left:50%;transform:translate(-50%) rotate(-6deg);width:1500px;height:420px;pointer-events:none;filter:blur(80px);opacity:.22;border-radius:100%;background:linear-gradient(100deg,#37b8f0,#4650e0 45%,#3a43c9)}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}.site-header{background:#fff;border-bottom:1px solid var(--border);position:relative;z-index:2}.site-header .container{max-width:none;display:flex;align-items:center;justify-content:space-between;height:58px;padding:0 32px}.logo{font-size:17px;font-weight:700;letter-spacing:-.01em;color:var(--text);text-decoration:none}.logo .accent{color:var(--indigo)}.logo .tld{color:var(--ghost);font-weight:500}.header-right{display:flex;gap:14px;align-items:center}.header-note{font-size:12.5px;color:var(--muted);font-weight:500}.pill-live{display:flex;align-items:center;gap:7px;background:var(--indigo-soft);border:1px solid var(--indigo-soft-border);color:var(--indigo-deep);font-size:12.5px;font-weight:600;padding:6px 12px;border-radius:99px}.pill-live .dot{width:7px;height:7px;border-radius:99px;background:var(--green-dot);display:inline-block}main{position:relative;z-index:1;padding-bottom:90px}.hero{text-align:center;padding:40px 0 0;margin-bottom:34px}.hero h1{font-size:38px;line-height:1.15;font-weight:700;letter-spacing:-.025em;margin:0 0 14px}.hero h1 .gradient{background:linear-gradient(92deg,#3a43c9,#2f7de0);-webkit-background-clip:text;background-clip:text;color:transparent}.hero p.sub{font-size:16.5px;color:var(--muted);margin:0 0 20px;line-height:1.55}.privacy-line{display:inline-flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--border);box-shadow:0 1px 2px #14192e0d;padding:9px 16px;border-radius:99px;font-size:13.5px;font-weight:500}.privacy-line .light{color:var(--muted);font-weight:400}.lock-icon{position:relative;width:12px;height:14px;display:inline-block;flex:none}.lock-icon .body{position:absolute;bottom:0;left:0;width:12px;height:9px;background:var(--indigo);border-radius:2.5px}.lock-icon .shackle{position:absolute;top:0;left:2px;width:8px;height:8px;border:2px solid var(--indigo);border-radius:99px 99px 0 0;border-bottom:none}.steps{display:flex;align-items:center;justify-content:center;margin:26px 0;flex-wrap:wrap}.step-item{display:flex;align-items:center}.step{display:flex;align-items:center;gap:9px;background:none;border:none;padding:0;font:inherit;cursor:default}.step.done{cursor:pointer}.step-num{width:26px;height:26px;border-radius:99px;display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:600;background:#fff;color:var(--faint);border:1.5px solid var(--border);transition:all .2s}.step.active .step-num{background:var(--indigo);color:#fff;border-color:var(--indigo)}.step.done .step-num{background:var(--indigo-soft);color:var(--indigo);border-color:var(--indigo-soft-border-2)}.step-label{font-size:14px;font-weight:600;color:var(--faint)}.step.active .step-label{color:var(--text)}.step.done .step-label{color:var(--body-text)}.step-connector{width:44px;height:2px;border-radius:2px;margin:0 16px;background:var(--border)}.step-connector.done{background:var(--indigo-soft-border-2)}.card{background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:var(--card-shadow);padding:20px 22px;margin-bottom:16px;animation:fadeUp .3s ease both}.dropzone{border:1.5px dashed #c9cede;border-radius:10px;padding:42px 24px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.dropzone:hover,.dropzone.drag{border-color:var(--indigo);background:#fafbff}.dz-icon{position:relative;width:46px;height:40px;margin:0 auto 14px}.dz-icon .back{position:absolute;left:0;top:6px;width:32px;height:34px;background:var(--indigo-soft);border:1.5px solid var(--indigo-soft-border-2);border-radius:6px}.dz-icon .front{position:absolute;right:0;top:0;width:32px;height:34px;background:#fff;border:1.5px solid var(--indigo);border-radius:6px}.dropzone h3{font-size:16.5px;font-weight:600;margin:0 0 6px}.dropzone p{margin:0;font-size:13.5px;color:var(--muted)}.file-list{list-style:none;padding:0;margin:0}.file-list li{display:flex;align-items:center;gap:12px;border:1px solid var(--border);border-radius:10px;padding:12px 16px;margin-top:10px;animation:fadeUp .3s ease both}.file-badge{width:34px;height:34px;border-radius:8px;background:var(--green-soft);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:10px;font-weight:700;color:var(--green);flex:none}.file-badge.csv{background:var(--indigo-soft);color:var(--indigo-deep)}.file-info{flex:1;min-width:0}.file-name{font-family:var(--mono);font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-meta{font-size:12.5px;color:var(--muted);margin-top:2px}.file-remove{font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;padding:6px 10px;border-radius:7px;transition:all .15s;background:none;border:none;font-family:inherit}.file-remove:hover{background:var(--red-soft);color:var(--red)}.file-error{color:var(--red);font-size:13px}.card-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:16px;padding-top:16px;border-top:1px solid var(--hairline)}.ai-toggle{display:flex;align-items:center;gap:10px;cursor:pointer;background:none;border:none;padding:0;font:inherit;text-align:left}.switch{width:34px;height:20px;border-radius:99px;background:#c9cede;position:relative;transition:background .15s;flex:none}.switch.on{background:var(--indigo)}.switch .knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:99px;background:#fff;box-shadow:0 1px 2px #00000040;transition:left .15s}.switch.on .knob{left:16px}.ai-toggle-label{font-size:13.5px;color:var(--body-text)}.ai-toggle-label .light{color:var(--ghost)}.btn{display:inline-flex;align-items:center;gap:9px;border:none;border-radius:9px;font-family:inherit;font-size:14.5px;font-weight:600;padding:11px 22px;cursor:pointer;transition:background .15s;white-space:nowrap}.btn-primary{background:var(--indigo);color:#fff;box-shadow:0 2px 8px #4650e047}.btn-primary:hover{background:var(--indigo-deep)}.btn-primary:disabled{background:#dde0ea;color:var(--ghost);cursor:default;box-shadow:none}.btn-secondary{background:#fff;border:1px solid var(--border-strong);color:var(--body-text);font-size:14px;padding:10px 18px}.btn-secondary:hover{background:#f4f5fa}.btn-link{background:none;border:none;color:var(--indigo);cursor:pointer;font-family:inherit;font-size:13.5px;font-weight:600;padding:6px 4px}.btn-link:hover{text-decoration:underline}.actions{display:flex;align-items:center;gap:14px;margin-top:18px;flex-wrap:wrap}.actions .spacer{flex:1}.spinner{width:14px;height:14px;border-radius:99px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;display:inline-block;animation:spin .7s linear infinite}.spinner.dark{border-color:var(--indigo-soft);border-top-color:var(--indigo);width:18px;height:18px}.loading-inline{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:14px;padding:26px 0;justify-content:center}.mapping-banner{display:flex;align-items:center;gap:11px;background:var(--indigo-soft);border:1px solid var(--indigo-soft-border);border-radius:10px;padding:12px 16px;font-size:13.5px;color:var(--indigo-deep);margin-bottom:18px;animation:fadeUp .3s ease both}.mapping-banner .diamond{width:8px;height:8px;background:var(--indigo);border-radius:2px;transform:rotate(45deg);flex:none}.mapping-banner.warn{background:var(--red-soft);border-color:#f6d9d6;color:var(--red)}.mapping-banner.warn .diamond{background:var(--red)}.mapping-banner.fuzzy{background:var(--amber-soft);border-color:#f3e3c0;color:var(--amber)}.mapping-banner.fuzzy .diamond{background:var(--amber)}.map-file-head{display:flex;align-items:baseline;gap:10px;margin-bottom:12px}.map-file-name{font-family:var(--mono);font-size:13.5px;font-weight:600}.map-file-meta{font-size:12.5px;color:var(--faint)}table.map-table{width:100%;border-collapse:collapse;table-layout:fixed}.map-table th{text-align:left;padding:0 14px 8px 0;font-size:10.5px;font-weight:600;letter-spacing:.07em;color:var(--ghost);text-transform:uppercase}.map-table td{padding:9px 14px 9px 0;border-top:1px solid var(--hairline);vertical-align:middle}.map-table .col-name{font-family:var(--mono);font-size:12.5px;font-weight:600}.map-table .samples{font-family:var(--mono);font-size:12px;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}select.map-select{font-family:inherit;font-size:13px;font-weight:500;color:var(--text);padding:7px 8px;border:1px solid var(--border-strong);border-radius:8px;background:#fff;cursor:pointer;width:100%}select.map-select.needs-decision{border-color:var(--red);background:var(--red-soft)}.badge{display:inline-block;padding:3px 10px;border-radius:99px;font-size:11.5px;font-weight:600}.badge.high{background:var(--green-soft);color:var(--green)}.badge.medium{background:var(--amber-soft);color:var(--amber)}.badge.low,.badge.needs{background:var(--red-soft);color:var(--red)}.badge.drop{background:#eef1f5;color:var(--muted)}.card h3.card-title{font-size:15px;font-weight:700;margin:0 0 3px}.card p.card-sub{font-size:13px;color:var(--muted);margin:0 0 12px}.rename-row{display:grid;grid-template-columns:260px 1fr;gap:16px;align-items:center;padding:6px 0;border-top:1px solid var(--hairline)}.rename-row input{font-family:var(--mono);font-size:12.5px;padding:8px 10px;border:1px solid var(--border-strong);border-radius:8px;color:var(--text);outline-color:var(--indigo)}.rename-hint{font-size:12.5px;color:var(--faint);font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cleanup-row{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:16px}.chip{display:flex;align-items:center;gap:7px;padding:7px 13px;border-radius:99px;border:1px solid var(--border-strong);background:#fff;color:var(--muted);font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s}.chip.on{border-color:var(--indigo-soft-border-2);background:var(--indigo-soft);color:var(--indigo-deep)}.chip .mark{font-size:11px;font-weight:700;width:11px;display:inline-block}.preview-wrap{border:1px solid var(--border);border-radius:10px;overflow:hidden}.preview-scroll{overflow:auto;max-height:480px}table.preview{border-collapse:collapse;width:100%}.preview th{position:sticky;top:0;z-index:1;text-align:left;padding:9px 12px;background:#f8f9fc;font-size:11px;font-weight:600;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap}.preview td{padding:8px 12px;border-bottom:1px solid var(--hairline);white-space:nowrap;font-family:var(--mono);font-size:12px;color:var(--body-text);max-width:260px;overflow:hidden;text-overflow:ellipsis}.preview td.source-col{color:var(--ghost)}.preview td.changed{background:var(--amber-soft)}.preview-note{font-size:12.5px;color:var(--faint);margin:10px 2px 0}.check-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;color:var(--body-text);background:none;border:none;padding:0;font-family:inherit}.checkbox{width:16px;height:16px;border-radius:4px;border:1.5px solid #c9cede;background:#fff;display:flex;align-items:center;justify-content:center;color:#fff;font-size:10.5px;font-weight:700;transition:all .15s;flex:none}.checkbox.on{background:var(--indigo);border-color:var(--indigo)}.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%);background:var(--text);color:#fff;font-size:13.5px;font-weight:500;padding:11px 18px;border-radius:10px;box-shadow:0 6px 20px #14192e40;animation:fadeUp .25s ease both;z-index:50;white-space:nowrap}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14192e80;display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}.modal{background:#fff;border-radius:14px;padding:28px;max-width:440px;width:100%;box-shadow:0 20px 50px #14192e4d}.modal h3{margin:0 0 10px;font-size:18px}.modal p{color:var(--muted);font-size:14px}.modal .actions{justify-content:flex-end}.section{padding:40px 0}.section h2{font-size:26px;font-weight:700;letter-spacing:-.02em;text-align:center;margin:0 0 24px}.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.feature{background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:var(--card-shadow);padding:20px}.feature h3{margin:0 0 8px;font-size:15px;font-weight:700}.feature p{margin:0;color:var(--muted);font-size:13.5px}.faq details{background:#fff;border:1px solid var(--border);border-radius:10px;padding:14px 18px;margin-bottom:10px}.faq summary{font-weight:600;cursor:pointer;font-size:14.5px}.faq p{color:var(--muted);font-size:13.5px;margin:10px 0 0}.site-footer{border-top:1px solid var(--border);padding:28px 0;text-align:center;color:var(--faint);font-size:13px;position:relative;z-index:1;background:#fff}@media(max-width:720px){.hero h1{font-size:30px}.step-connector{width:20px;margin:0 8px}.step-label{display:none}.step.active .step-label{display:block}}
