@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Outfit:wght@400;500;600;700;800&display=swap";:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:#1e3a8a;--bg-primary:#dbeafe;--bg-secondary:#eff6ff;--bg-card:#eff6ff;--bg-glass:#eff6ffeb;--border-glass:#2563eb33;--primary:#2563eb;--primary-hover:#1d4ed8;--primary-glow:#2563eb40;--success:#059669;--success-hover:#047857;--success-glow:#05966926;--warning:#d97706;--warning-hover:#b45309;--warning-glow:#d9770626;--danger:#dc2626;--danger-hover:#b91c1c;--danger-glow:#dc262626;--text-primary:#1e3a8a;--text-secondary:#1d4ed8;--text-muted:#475569;--shadow-sm:0 1px 3px 0 #2563eb14;--shadow-md:0 4px 6px -1px #2563eb1a, 0 2px 4px -1px #2563eb0f;--shadow-lg:0 10px 20px -3px #2563eb26, 0 4px 6px -2px #2563eb14;--shadow-glow:0 0 20px 0 var(--primary-glow);--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-xl:1rem;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#dbeafe;font-family:Inter,system-ui,-apple-system,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh;color:var(--text-primary);background:linear-gradient(135deg,#93c5fd 0%,#dbeafe 50%,#eff6ff 100%) fixed;margin:0;overflow-x:hidden}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{border-radius:var(--radius-sm);background:#93c5fd}::-webkit-scrollbar-thumb:hover{background:#0284c7}h1,h2,h3,h4,h5,h6{letter-spacing:-.02em;color:var(--text-primary);font-family:Outfit,sans-serif;font-weight:700}.app-container{flex-direction:column;width:100%;max-width:1600px;min-height:100vh;margin:0 auto;padding:1.5rem 1rem;display:flex}.app-header{border-bottom:1px solid var(--border-glass);justify-content:space-between;align-items:center;margin-bottom:2.5rem;padding-bottom:1.5rem;display:flex}.brand-section{align-items:center;gap:.75rem;display:flex}.logo-icon{background:linear-gradient(135deg, var(--primary), #0369a1);border-radius:var(--radius-md);width:2.5rem;height:2.5rem;box-shadow:var(--shadow-glow);color:#fff;justify-content:center;align-items:center;display:flex}.brand-title{background:linear-gradient(to right, #0c4a6e, var(--primary));-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:1.5rem;font-weight:800}.brand-subtitle{color:var(--text-secondary);font-size:.8rem}.tabs-navigation{background:var(--bg-glass);border-radius:var(--radius-lg);border:1px solid var(--border-glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);gap:.5rem;padding:.35rem;display:flex}.tab-btn{color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer;background:0 0;border:none;align-items:center;gap:.5rem;padding:.6rem 1.2rem;font-size:.9rem;font-weight:600;transition:all .2s;display:flex}.tab-btn:hover{color:var(--text-primary);background:#0284c71a}.tab-btn.active{color:#fff;background:var(--primary);box-shadow:0 4px 12px #0284c74d}.glass-card{background:var(--bg-card);border:1px solid var(--border-glass);border-radius:var(--radius-xl);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:var(--shadow-lg);padding:2rem;transition:transform .3s,box-shadow .3s}.grid-2{grid-template-columns:1fr;gap:1.5rem;display:grid}@media (width>=768px){.grid-2{grid-template-columns:1fr 1fr}}.grid-3{grid-template-columns:1fr;gap:1.5rem;display:grid}@media (width>=1024px){.grid-3{grid-template-columns:1fr 1fr 1fr}}.upload-zone{border-radius:var(--radius-xl);text-align:center;cursor:pointer;background:#e0f2fe99;border:2px dashed #7dd3fc;flex-direction:column;align-items:center;gap:1rem;padding:3rem 2rem;transition:all .3s;display:flex}.upload-zone:hover,.upload-zone.drag-active{border-color:var(--primary);box-shadow:var(--shadow-glow);background:#bae6fd}.upload-icon{width:3.5rem;height:3.5rem;color:var(--primary);background:#0284c71f;border-radius:50%;justify-content:center;align-items:center;margin-bottom:.5rem;transition:transform .2s;display:flex}.upload-zone:hover .upload-icon{transform:translateY(-4px)}.btn{border-radius:var(--radius-md);cursor:pointer;border:none;justify-content:center;align-items:center;gap:.5rem;padding:.6rem 1.2rem;font-size:.9rem;font-weight:600;transition:all .2s;display:inline-flex}.btn-primary{background:var(--primary);color:#fff;box-shadow:0 4px 12px #0284c740}.btn-primary:hover{background:var(--primary-hover);box-shadow:0 6px 16px #0284c759}.btn-secondary{color:#0c4a6e;background:#dbeafe;border:1px solid #93c5fd}.btn-secondary:hover{background:#bfdbfe}.btn-success{background:var(--success);color:#fff;box-shadow:0 4px 12px #05966933}.btn-success:hover{background:var(--success-hover)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:var(--danger-hover)}.btn-sm{padding:.4rem .8rem;font-size:.8rem}.badge{border-radius:9999px;align-items:center;gap:.25rem;padding:.25rem .6rem;font-size:.75rem;font-weight:700;display:inline-flex}.badge-success{color:#065f46;background:#d1fae5;border:1px solid #6ee7b7}.badge-danger{color:#991b1b;background:#fee2e2;border:1px solid #fca5a5}.badge-warning{color:#92400e;background:#fef3c7;border:1px solid #fcd34d}.form-group{flex-direction:column;gap:.5rem;margin-bottom:1.25rem;display:flex}.form-group label{color:#0c4a6e;font-size:.85rem;font-weight:600}.form-control{border-radius:var(--radius-md);color:#0c4a6e;background:#f0f9ff;border:1px solid #7dd3fc;width:100%;padding:.6rem .8rem;font-family:inherit;font-size:.9rem;font-weight:500;transition:all .2s}.form-control:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow);background:#fff;outline:none}.form-control::placeholder{color:#64748b}.form-row{grid-template-columns:1fr;gap:1rem;display:grid}@media (width>=640px){.form-row{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}}.table-container{border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);background:#eff6ff;border:1px solid #93c5fd;width:100%;margin-top:1rem;overflow-x:auto}.data-table{border-collapse:collapse;text-align:left;width:100%;font-size:.82rem}.data-table th{color:#1e3a8a;text-transform:uppercase;letter-spacing:.02em;white-space:nowrap;background:#bfdbfe;border-bottom:1px solid #93c5fd;padding:.6rem .5rem;font-size:.75rem;font-weight:700}.data-table td{color:#1e3a8a;border-bottom:1px solid #dbeafe;padding:.6rem .5rem;font-size:.82rem}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:#dbeafe}.data-table th:last-child,.data-table td:last-child{z-index:2;background:#eff6ff;position:sticky;right:0;box-shadow:-4px 0 8px -2px #2563eb26}.data-table th:last-child{background:#bfdbfe}.data-table tr:hover td:last-child{background:#dbeafe}.code-viewer-container{border-radius:var(--radius-lg);background:#f0f9ff;border:1px solid #7dd3fc;position:relative;overflow:hidden}.code-viewer-header{background:#bae6fd;border-bottom:1px solid #7dd3fc;justify-content:space-between;align-items:center;padding:.6rem 1rem;display:flex}.code-viewer-lang{color:#0369a1;font-family:monospace;font-size:.75rem;font-weight:700}.code-viewer-body{white-space:pre-wrap;word-break:break-all;color:#e4e4e7;background:#09090b;padding:1rem;font-family:Courier New,Courier,monospace;font-size:.85rem;overflow:auto}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0c4a6e66;justify-content:center;align-items:flex-start;padding:2rem 1rem;display:flex;position:fixed;inset:0;overflow-y:auto}.modal-content{border-radius:var(--radius-xl);color:#0c4a6e;background:#f0f9ff;border:1px solid #7dd3fc;flex-direction:column;gap:1.25rem;width:100%;max-width:600px;max-height:90vh;padding:1.5rem;display:flex;overflow-y:auto;box-shadow:0 20px 25px -5px #0284c740}.modal-header{border-bottom:1px solid #7dd3fc;justify-content:space-between;align-items:center;padding-bottom:.75rem;display:flex}.modal-body{flex-direction:column;gap:1rem;display:flex}.modal-footer{border-top:1px solid #7dd3fc;justify-content:flex-end;gap:.75rem;padding-top:.75rem;display:flex}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.25rem;margin-bottom:2rem;display:grid}.stat-card{border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);background:#f0f9ff;border:1px solid #7dd3fc;flex-direction:column;gap:.25rem;padding:1.25rem;display:flex}.stat-val{color:var(--text-primary);font-family:Outfit,sans-serif;font-size:1.75rem;font-weight:700}.stat-label{color:var(--text-secondary);font-size:.8rem;font-weight:500}.stat-icon{color:var(--primary);opacity:.9;margin-left:auto}.flex-between{justify-content:space-between;align-items:center;display:flex}.mapping-grid{border-radius:var(--radius-lg);background:#e0f2fe;border:1px solid #7dd3fc;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin:1.5rem 0;padding:1rem;display:grid}.mapping-item{border-radius:var(--radius-md);box-shadow:var(--shadow-sm);background:#f0f9ff;border:1px solid #7dd3fc;padding:1rem}.empty-state{text-align:center;color:var(--text-muted);flex-direction:column;align-items:center;gap:1rem;padding:3rem 1rem;display:flex}.empty-state-icon{width:3rem;height:3rem;color:var(--text-muted);opacity:.7}.alert-banner{border-radius:var(--radius-md);border-left:4px solid #0000;align-items:center;gap:.75rem;margin-bottom:1rem;padding:.75rem 1rem;font-size:.85rem;font-weight:600;display:flex}.alert-banner-info{color:#1e40af;background:#dbeafe;border-left-color:#2563eb}.alert-banner-warning{color:#92400e;background:#fef3c7;border-left-color:#f59e0b}.app-footer{border-top:1px solid var(--border-glass);text-align:center;color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-top:auto;padding-top:2rem;font-size:.8rem;display:flex}.app-footer a{color:var(--primary-hover);text-decoration:none}.app-footer a:hover{text-decoration:underline}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:.3s forwards fadeIn}@keyframes pulse-border{0%{box-shadow:0 0 #0284c766}70%{box-shadow:0 0 0 10px #0284c700}to{box-shadow:0 0 #0284c700}}.pulse-primary{animation:2s infinite pulse-border}
