@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800;900&display=swap";:root{--bg: #0f0f14;--bg-card: #1a1a24;--bg-card-alt: #14141e;--bg-hover: #22223a;--border: #2a2a3e;--border-light: #333350;--brand-50: #eff6ff;--brand-100: #dbeafe;--brand-200: #bfdbfe;--brand-400: #60a5fa;--brand-500: #3b82f6;--brand-600: #2563eb;--brand-700: #1d4ed8;--brand-900: #1e3a8a;--green-400: #4ade80;--green-500: #22c55e;--green-bg: #0a2a1a;--red-400: #f87171;--red-500: #ef4444;--red-bg: #2a0a0a;--text: #e8e8f0;--text-muted: #8888a4;--text-dim: #55557a;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 20px;--radius-xl: 28px;--shadow: 0 4px 24px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 48px rgba(0, 0, 0, .6)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased}.app{max-width:840px;margin:0 auto;padding:24px 20px 60px;min-height:100vh;display:flex;flex-direction:column}.app-main{flex:1}.mobile-fixed-footer{display:none}.fixed-top-section{position:relative}.app-header{display:flex;align-items:center;justify-content:space-between;padding:16px 0 32px}.header-left{display:flex;align-items:center;gap:14px}.logo{width:42px;height:42px;background:var(--brand-600);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0;box-shadow:0 4px 20px #2563eb4d}.app-title{font-size:18px;font-weight:900;letter-spacing:-.02em;color:var(--text)}.app-subtitle{font-size:11px;font-weight:700;color:var(--text-muted);margin-top:2px}.lang-toggle{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);padding:8px 14px;font-size:12px;font-weight:700;cursor:pointer;transition:all .2s}.lang-toggle:hover{background:var(--bg-hover);color:var(--text)}.progress-bar{display:flex;justify-content:space-between;align-items:flex-start;padding:0 12px 40px;position:relative}.progress-step{display:flex;flex-direction:column;align-items:center;gap:8px;z-index:1;min-width:60px}.progress-dot{width:32px;height:32px;border-radius:50%;background:var(--bg-card);border:2px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:900;color:var(--text-dim);transition:all .3s}.progress-step.active .progress-dot{border-color:var(--brand-600);color:var(--brand-400)}.progress-step.current .progress-dot{background:var(--brand-600);border-color:var(--brand-600);color:#fff;box-shadow:0 0 20px #2563eb66}.progress-label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}.progress-step.active .progress-label{color:var(--text-muted)}.progress-step.current .progress-label{color:var(--brand-400)}.progress-line{position:absolute;top:15px;left:40px;right:40px;height:2px;background:var(--border);z-index:0}.progress-fill{height:100%;background:var(--brand-600);transition:width .4s ease;border-radius:2px}.step-container{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-xl);padding:36px 32px;animation:fadeUp .3s ease}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.step-title{font-size:22px;font-weight:900;margin-bottom:8px;letter-spacing:-.02em}.step-desc{font-size:13px;color:var(--text-muted);font-weight:600;margin-bottom:28px;line-height:1.6}.upload-zone{border:2px dashed var(--border-light);border-radius:var(--radius-lg);padding:56px 32px;text-align:center;cursor:pointer;transition:all .25s;background:var(--bg-card-alt)}.upload-zone:hover,.upload-zone.dragging{border-color:var(--brand-500);background:#2563eb0f}.upload-zone.loading{pointer-events:none;opacity:.7}.upload-icon{color:var(--brand-400);margin-bottom:16px}.spinner{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.upload-cta{font-size:14px;font-weight:800;color:var(--text);margin-bottom:6px}.upload-hint{font-size:11px;font-weight:600;color:var(--text-dim)}.mapping-table{margin-bottom:28px}.mapping-header{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:10px 16px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--text-dim);border-bottom:1px solid var(--border)}.mapping-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:12px 16px;align-items:center;border-bottom:1px solid rgba(42,42,62,.5);transition:background .15s}.mapping-row:hover{background:var(--bg-hover)}.mapping-row.missing{background:var(--red-bg)}.mapping-label{display:flex;align-items:center;gap:10px}.col-name{font-size:13px;font-weight:700;font-family:Courier New,monospace;color:var(--text)}.badge{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;padding:2px 8px;border-radius:20px}.badge.required{background:#2563eb26;color:var(--brand-400)}.badge.optional{background:#8888a41a;color:var(--text-dim)}.mapping-select-wrapper{display:flex;flex-direction:column;gap:4px}.mapping-select{width:100%;padding:8px 12px;background:var(--bg-card-alt);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:12px;font-weight:700;cursor:pointer;outline:none;transition:border-color .2s;-webkit-appearance:none;-moz-appearance:none;appearance:none}.mapping-select:focus{border-color:var(--brand-500)}.mapping-select.unmapped{color:var(--text-dim)}.auto-badge{font-size:9px;font-weight:700;color:var(--green-400);text-transform:uppercase;letter-spacing:.06em}.normalize-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px;margin-bottom:28px}.normalize-card{background:var(--bg-card-alt);border:1px solid var(--border);border-radius:var(--radius-md);padding:20px 16px;text-align:center;transition:transform .2s}.normalize-card:hover{transform:translateY(-2px)}.normalize-icon{font-size:24px;margin-bottom:8px}.normalize-value{font-size:28px;font-weight:900;color:var(--brand-400);margin-bottom:4px}.normalize-label{font-size:11px;font-weight:700;color:var(--text-muted)}.preview-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:24px}.stat-card{background:var(--bg-card-alt);border:1px solid var(--border);border-radius:var(--radius-md);padding:20px;text-align:center}.stat-card.success{border-color:var(--green-500);background:var(--green-bg)}.stat-card.error{border-color:var(--red-500);background:var(--red-bg)}.stat-value{font-size:32px;font-weight:900;margin-bottom:4px}.stat-card.success .stat-value{color:var(--green-400)}.stat-card.error .stat-value{color:var(--red-400)}.stat-label{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.error-banner{background:var(--red-bg);border:1px solid var(--red-500);border-radius:var(--radius-md);padding:14px 18px;color:var(--red-400);font-size:13px;font-weight:700;margin-bottom:20px}.reject-banner{font-size:14px;font-weight:800;text-align:center;padding:20px}.error-section{margin-bottom:28px}.error-heading{font-size:14px;font-weight:800;color:var(--red-400);margin-bottom:12px}.error-table-container{overflow-x:auto;border-radius:var(--radius-md);border:1px solid var(--border)}.error-table{width:100%;border-collapse:collapse;font-size:12px}.error-table th{text-align:left;padding:10px 14px;background:var(--bg-card-alt);font-weight:800;text-transform:uppercase;letter-spacing:.06em;font-size:10px;color:var(--text-dim);border-bottom:1px solid var(--border)}.error-table td{padding:8px 14px;border-bottom:1px solid rgba(42,42,62,.4);font-weight:600;color:var(--text-muted)}.error-row-num{font-weight:800;color:var(--red-400);font-family:monospace}.error-col-name{font-family:Courier New,monospace;color:var(--brand-400)}.fix-hint{margin-top:14px;font-size:12px;font-weight:700;color:var(--text-dim);font-style:italic}.data-preview-section{margin-bottom:28px}.preview-heading{font-size:14px;font-weight:800;margin-bottom:12px;color:var(--text-muted)}.data-table-container{overflow-x:auto;border-radius:var(--radius-md);border:1px solid var(--border);max-height:400px;overflow-y:auto}.data-table{width:100%;border-collapse:collapse;font-size:11px;white-space:nowrap}.data-table th{position:sticky;top:0;padding:10px 12px;background:var(--bg-card-alt);font-weight:800;text-transform:uppercase;letter-spacing:.05em;font-size:9px;color:var(--brand-400);border-bottom:1px solid var(--border);text-align:left}.data-table td{padding:7px 12px;border-bottom:1px solid rgba(42,42,62,.3);font-weight:600;color:var(--text-muted);max-width:180px;overflow:hidden;text-overflow:ellipsis}.data-table tr:hover td{background:var(--bg-hover)}.download-step{text-align:center;padding:48px 32px}.success-icon{color:var(--green-400);margin-bottom:20px;animation:popIn .4s ease}@keyframes popIn{0%{transform:scale(0)}70%{transform:scale(1.15)}to{transform:scale(1)}}.download-info{font-size:16px;color:var(--text-muted);font-weight:700;margin-bottom:28px}.download-info strong{color:var(--green-400);font-weight:900}.btn-download{font-size:15px!important;padding:16px 40px!important;gap:10px;display:inline-flex;align-items:center}.download-filename{margin-top:12px;font-size:12px;font-weight:700;color:var(--text-dim);font-family:monospace}.step-actions{display:flex;justify-content:space-between;gap:12px;margin-top:8px}.btn-primary{background:var(--brand-600);color:#fff;border:none;border-radius:var(--radius-md);padding:12px 28px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;cursor:pointer;transition:all .2s}.btn-primary:hover{background:var(--brand-700);transform:translateY(-1px)}.btn-primary:active{transform:scale(.98)}.btn-primary:disabled{opacity:.3;cursor:not-allowed;transform:none;filter:grayscale(1)}.btn-secondary{background:var(--bg-card-alt);color:var(--text-muted);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 28px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;cursor:pointer;transition:all .2s}.btn-secondary:hover{background:var(--bg-hover);color:var(--text)}.btn-ghost{background:none;border:none;color:var(--text-dim);font-size:13px;font-weight:700;cursor:pointer;padding:12px;margin-top:16px;transition:color .2s}.btn-ghost:hover{color:var(--brand-400)}.btn-generate{background:linear-gradient(135deg,var(--brand-600),var(--brand-700));box-shadow:0 4px 20px #2563eb4d}.privacy-notice{display:flex;align-items:center;gap:8px;margin-top:24px;padding:12px 16px;background:#2a2a3e4d;border-radius:var(--radius-sm);font-size:11px;font-weight:600;color:var(--text-dim)}.privacy-notice svg{flex-shrink:0;color:var(--green-400)}.platform-group{margin-bottom:32px}.platform-group-title{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--text-dim);margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid rgba(42,42,62,.4)}.platform-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.platform-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 16px;background:var(--bg-card-alt);border:2px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:all .25s;position:relative;text-align:center}.platform-card:hover{border-color:var(--brand-500);background:#2563eb0f;transform:translateY(-2px)}.platform-card.selected{border-color:var(--brand-500);background:#2563eb1f;box-shadow:0 0 24px #2563eb33}.platform-card.coming_soon{opacity:.65}.platform-card.coming_soon:hover{opacity:.85}.platform-icon{font-size:28px;line-height:1}.platform-name{font-size:13px;font-weight:800;color:var(--text);letter-spacing:-.01em}.platform-badge{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;padding:3px 10px;border-radius:20px}.platform-badge.supported{background:#22c55e26;color:var(--green-400)}.platform-badge.coming-soon{background:#fbbf241f;color:#fbbf24}.platform-badge.manual{background:#8888a41f;color:var(--text-muted)}.platform-request{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:24px;padding:16px;background:#2a2a3e4d;border-radius:var(--radius-sm)}.platform-request-text{font-size:12px;font-weight:600;color:var(--text-dim)}.platform-request-link{font-size:12px;font-weight:800;color:var(--brand-400);text-decoration:none;transition:color .2s}.platform-request-link:hover{color:var(--brand-200)}.detection-banner{padding:14px 18px;border-radius:var(--radius-md);font-size:13px;font-weight:700;margin-bottom:16px;animation:fadeUp .3s ease}.detection-banner strong{font-weight:900}.detection-banner.success{background:var(--green-bg);border:1px solid var(--green-500);color:var(--green-400)}.detection-banner.warning{background:#fbbf2414;border:1px solid rgba(251,191,36,.4);color:#fbbf24}.detection-banner.info{background:#60a5fa14;border:1px solid rgba(96,165,250,.3);color:#60a5fa}@media (max-width: 640px){.app{padding:0}.fixed-top-section{position:fixed;top:0;left:0;right:0;background:var(--bg);z-index:100;padding:16px 16px 0}.app-header{padding:0 0 16px;margin-bottom:0}.progress-bar{padding:0 8px 16px}.app-main{padding:140px 16px 100px}.step-title {margin-top: 10px;}.detection-banner {margin-top: 14px}.success-icon {margin-top: 20px;}.step-container{background:transparent;border:none;padding:0;border-radius:0;animation:none}.step-title{font-size:24px;margin-bottom:12px}.mobile-fixed-footer{position:fixed;bottom:0;left:0;right:0;background:var(--bg-card);border-top:1px solid var(--border);padding:0px 20px env(safe-area-inset-bottom,16px);display:flex;gap:12px;z-index:100;box-shadow:0 -10px 30px #0000004d}.mobile-fixed-footer .btn-primary,.mobile-fixed-footer .btn-secondary{flex:1;display:flex;align-items:center;justify-content:center;font-size:14px;border-radius:10px;margin:14px 0}.progress-step{min-width:0;flex:1}.progress-label{display:none}.progress-dot{width:28px;height:28px;font-size:11px}.step-actions{display:none}.upload-zone{padding:40px 20px}.platform-grid{grid-template-columns:repeat(2,1fr);gap:10px}.platform-card{padding:16px 10px}.platform-request{flex-direction:column;text-align:center;padding:16px}}
