:root{--primary-color:#8b5cf6;--primary-hover:#7c3aed;--secondary-color:#06b6d4;--bg-color:#0f172a;--card-bg:#1e293bb3;--glass-bg:#ffffff0d;--border-color:#ffffff1a;--text-main:#f8fafc;--text-muted:#94a3b8;--success-color:#10b981;--error-color:#f43f5e;--font-main:"Inter", system-ui, -apple-system, sans-serif;--font-display:"Outfit", var(--font-main);--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -2px #0000000d;--shadow-glass:0 8px 32px 0 #0000005e}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-main);background-color:var(--bg-color);color:var(--text-main);background-image:radial-gradient(circle at 10% 20%,#8b5cf61a 0%,#0000 40%),radial-gradient(circle at 90% 80%,#06b6d41a 0%,#0000 40%);flex-direction:column;min-height:100vh;line-height:1.5;display:flex}#root{flex-direction:column;flex:1;display:flex}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.02em;font-weight:700}.container{width:100%;max-width:1000px;margin:0 auto;padding:2rem 1rem}.card{background:var(--card-bg);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-color);box-shadow:var(--shadow-glass);border-radius:1.5rem;margin-top:2rem;padding:2rem}.glass-panel{background:var(--glass-bg);border:1px solid var(--border-color);border-radius:1rem;padding:1.5rem}.btn{cursor:pointer;border:none;border-radius:.75rem;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;transition:all .2s cubic-bezier(.4,0,.2,1);display:inline-flex}.btn-primary{background:linear-gradient(135deg, var(--primary-color) 0%, #6366f1 100%);color:#fff;box-shadow:0 4px 14px #8b5cf663}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 20px #8b5cf673}.btn-secondary{background:var(--glass-bg);color:var(--text-main);border:1px solid var(--border-color)}.btn-secondary:hover{background:#ffffff1a}.upload-area{border:2px dashed var(--border-color);text-align:center;cursor:pointer;border-radius:1.5rem;padding:4rem 2rem;transition:all .2s;position:relative;overflow:hidden}.upload-area:hover,.upload-area.dragging{border-color:var(--primary-color);background:#8b5cf60d}.upload-icon{color:var(--primary-color);margin-bottom:1rem;font-size:3rem}.tabs{background:var(--glass-bg);border-radius:1rem;gap:1rem;width:fit-content;margin-bottom:2rem;padding:.5rem;display:flex}.tab{cursor:pointer;color:var(--text-muted);border-radius:.75rem;padding:.75rem 1.5rem;font-weight:600;transition:all .2s}.tab.active{background:var(--card-bg);color:var(--text-main);box-shadow:var(--shadow-lg)}.preview-table-container{border:1px solid var(--border-color);border-radius:.75rem;margin-top:1.5rem;overflow-x:auto}table{border-collapse:collapse;text-align:left;width:100%}th{background:var(--glass-bg);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;padding:1rem;font-size:.875rem;font-weight:600}td{border-top:1px solid var(--border-color);padding:1rem;font-size:.9375rem}tr:hover td{background:#ffffff05}.status-badge{border-radius:9999px;align-items:center;padding:.25rem .75rem;font-size:.75rem;font-weight:600;display:inline-flex}.status-valid{color:var(--success-color);background:#10b9811a}.status-error{color:var(--error-color);background:#f43f5e1a}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:.4s ease-out forwards fadeIn}.grid{gap:1.5rem;display:grid}.grid-cols-2{grid-template-columns:repeat(2,1fr)}@media (width<=768px){.grid-cols-2{grid-template-columns:1fr}}.mapping-controls{flex-direction:column;gap:1rem;margin-top:2rem;display:flex}.form-group{flex-direction:column;gap:.5rem;display:flex}label{color:var(--text-muted);font-size:.875rem;font-weight:600}select,input{background:var(--glass-bg);border:1px solid var(--border-color);color:var(--text-main);border-radius:.5rem;padding:.75rem;font-family:inherit}select:focus,input:focus{border-color:var(--primary-color);background:#ffffff14;outline:none}option{color:var(--text-main);background-color:#1e293b}.upload-area.dragging{border-color:var(--primary-color);background:#8b5cf61a;transform:scale(1.02)}
