*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0a0a0a;color:#fff;overflow:hidden}#root{width:100vw;height:100vh;display:flex;flex-direction:column}.app{display:flex;flex-direction:column;height:100vh;background:linear-gradient(135deg,#0a0a0a,#1a1a1a)}.header{background:#000c;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid rgba(255,255,255,.1);padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;z-index:100}.main-content{flex:1;display:flex;overflow:hidden}.sidebar{width:300px;background:#0009;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-right:1px solid rgba(255,255,255,.1);padding:1rem;overflow-y:auto}.canvas-container{flex:1;position:relative;background:#000;overflow:visible}.heatmap-canvas{width:100%;height:100%;cursor:crosshair}.controls{display:flex;flex-direction:column;gap:1rem}.control-group{display:flex;flex-direction:column;gap:.5rem}.control-group label{font-size:.875rem;font-weight:500;color:#a0a0a0}.control-group input,.control-group select{padding:.5rem;border:1px solid rgba(255,255,255,.2);border-radius:4px;background:#ffffff0d;color:#fff;font-size:.875rem}.control-group input:focus,.control-group select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f633}.btn{padding:.5rem 1rem;border:none;border-radius:4px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:.5rem}.btn-primary{background:#3b82f6;color:#fff}.btn-primary:hover{background:#2563eb}.btn-secondary{background:#ffffff1a;color:#fff;border:1px solid rgba(255,255,255,.2)}.btn-secondary:hover{background:#fff3}.btn-danger{background:#ef4444;color:#fff}.btn-danger:hover{background:#dc2626}.btn-success{background:#10b981;color:#fff}.btn-success:hover{background:#059669}.btn:disabled{opacity:.5;cursor:not-allowed}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:1rem}.metric{background:#ffffff0d;padding:.75rem;border-radius:4px;border:1px solid rgba(255,255,255,.1)}.metric-label{font-size:.75rem;color:#a0a0a0;margin-bottom:.25rem}.metric-value{font-size:1.125rem;font-weight:600;color:#fff}.novel-substances{margin-top:1rem}.novel-substances h3{font-size:1rem;margin-bottom:.5rem;color:#fff}.substance-list{display:flex;flex-direction:column;gap:.5rem}.substance-item{background:#ffffff0d;padding:.75rem;border-radius:4px;border:1px solid rgba(255,255,255,.1);cursor:pointer;transition:all .2s}.substance-item:hover{background:#ffffff1a;border-color:#3b82f6}.substance-id{font-size:.75rem;color:#a0a0a0;margin-bottom:.25rem}.substance-props{font-size:.875rem;color:#fff}.graph-preview{margin-top:1rem}.graph-preview h3{font-size:1rem;margin-bottom:.5rem;color:#fff}.graph-svg{width:100%;height:200px;background:#ffffff0d;border-radius:4px;border:1px solid rgba(255,255,255,.1)}.graph-preview .export-buttons{display:flex;gap:.5rem;margin-top:.75rem}.graph-preview .export-btn{display:flex;align-items:center;gap:.25rem;padding:.25rem .5rem;border:none;border-radius:4px;font-size:.75rem;font-weight:500;cursor:pointer;transition:all .2s ease;text-decoration:none}.graph-preview .export-btn:hover{transform:translateY(-1px);box-shadow:0 2px 4px #0003}.graph-preview .export-btn.png{background:#3b82f6;color:#fff}.graph-preview .export-btn.png:hover{background:#2563eb}.graph-preview .export-btn.jpg{background:#10b981;color:#fff}.graph-preview .export-btn.jpg:hover{background:#059669}.status{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.status-indicator{width:8px;height:8px;border-radius:50%;background:#ef4444}.status-indicator.running{background:#10b981}.status-indicator.paused{background:#f59e0b}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#ffffff1a}::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#ffffff80}.legend-footer{background:#000c;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid rgba(255,255,255,.1);padding:1rem 2rem;z-index:100}.legend{max-width:100%;overflow-x:auto}.legend-grid{display:flex;gap:2rem;min-width:max-content}.legend-column{flex:0 0 auto;min-width:200px}.legend-column h4{font-size:.875rem;font-weight:600;color:#fff;margin-bottom:.5rem;border-bottom:1px solid rgba(255,255,255,.2);padding-bottom:.25rem}.legend-item{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.legend-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.legend-info{font-size:.75rem;color:#a0a0a0;margin-bottom:.25rem;line-height:1.4}.legend-info strong{color:#fff;font-weight:600}@media(max-width:768px){.sidebar{width:250px}.metrics{grid-template-columns:1fr}.legend-grid{flex-direction:column;gap:1rem}.legend-column{min-width:auto}}.auth-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.auth-container{position:relative;width:100%;max-width:440px;background:#14141ef2;border:1px solid rgba(255,255,255,.1);border-radius:24px;box-shadow:0 20px 60px #00000080,0 0 0 1px #ffffff0d inset,0 0 100px #3b82f61a;overflow:hidden;animation:slideUp .4s cubic-bezier(.16,1,.3,1)}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.auth-close-btn{position:absolute;top:16px;right:16px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:8px;color:#ffffffb3;cursor:pointer;transition:all .2s ease;z-index:10}.auth-close-btn:hover{background:#ffffff1a;border-color:#fff3;color:#fff;transform:scale(1.05)}.auth-background{position:absolute;top:0;left:0;right:0;bottom:0;overflow:hidden;pointer-events:none}.auth-gradient-1{position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(59,130,246,.15) 0%,transparent 70%);animation:rotate 20s linear infinite}.auth-gradient-2{position:absolute;top:-30%;right:-30%;width:150%;height:150%;background:radial-gradient(circle,rgba(139,92,246,.1) 0%,transparent 70%);animation:rotate 25s linear infinite reverse}.auth-gradient-3{position:absolute;bottom:-40%;left:-20%;width:180%;height:180%;background:radial-gradient(circle,rgba(16,185,129,.08) 0%,transparent 70%);animation:rotate 30s linear infinite}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.auth-content{position:relative;padding:48px 40px 40px;z-index:1}.auth-header{text-align:center;margin-bottom:32px}.auth-icon-wrapper{position:relative;display:inline-flex;align-items:center;justify-content:center;width:80px;height:80px;margin-bottom:20px;background:linear-gradient(135deg,#3b82f633,#8b5cf633);border:2px solid rgba(255,255,255,.1);border-radius:20px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.auth-icon{width:36px;height:36px;color:#60a5fa;z-index:2}.auth-sparkle{position:absolute;width:12px;height:12px;color:#fbbf24;opacity:.8;animation:sparkle 2s ease-in-out infinite}.auth-sparkle-1{top:8px;right:8px;animation-delay:0s}.auth-sparkle-2{bottom:8px;left:8px;animation-delay:1s}@keyframes sparkle{0%,to{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}.auth-title{font-size:28px;font-weight:700;color:#fff;margin:0 0 8px;letter-spacing:-.5px}.auth-subtitle{font-size:15px;color:#fff9;margin:0;line-height:1.5}.auth-error{display:flex;align-items:center;gap:10px;padding:14px 16px;margin-bottom:24px;background:#ef444426;border:1px solid rgba(239,68,68,.3);border-radius:12px;color:#fca5a5;font-size:14px;animation:shake .4s ease}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-8px)}75%{transform:translate(8px)}}.auth-error-icon{font-size:18px;flex-shrink:0}.auth-form{display:flex;flex-direction:column;gap:20px}.auth-field{display:flex;flex-direction:column;gap:8px}.auth-label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#fffc;text-transform:uppercase;letter-spacing:.5px}.auth-label svg{width:14px;height:14px;color:#ffffff80}.auth-input{width:100%;padding:14px 16px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;color:#fff;font-size:15px;transition:all .2s ease;outline:none}.auth-input::placeholder{color:#ffffff4d}.auth-input:hover{border-color:#fff3;background:#ffffff14}.auth-input:focus{border-color:#3b82f6;background:#ffffff14;box-shadow:0 0 0 3px #3b82f61a,0 0 20px #3b82f61a}.auth-input:disabled{opacity:.5;cursor:not-allowed}.auth-password-wrapper{position:relative;display:flex;align-items:center}.auth-password-wrapper .auth-input{padding-right:48px}.auth-password-toggle{position:absolute;right:12px;background:none;border:none;color:#ffffff80;cursor:pointer;padding:4px;font-size:18px;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.auth-password-toggle:hover{color:#fffc;transform:scale(1.1)}.auth-password-toggle:disabled{opacity:.5;cursor:not-allowed}.auth-select{width:100%;padding:14px 40px 14px 16px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;color:#fff;font-size:15px;cursor:pointer;transition:all .2s ease;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23ffffff' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center;background-size:12px}.auth-select:hover{border-color:#fff3;background-color:#ffffff14}.auth-select:focus{border-color:#3b82f6;background-color:#ffffff14;box-shadow:0 0 0 3px #3b82f61a,0 0 20px #3b82f61a}.auth-select:disabled{opacity:.5;cursor:not-allowed}.auth-select option{background:#1a1a2e;color:#fff}.auth-submit-btn{width:100%;padding:16px;margin-top:8px;background:linear-gradient(135deg,#3b82f6,#8b5cf6);border:none;border-radius:12px;color:#fff;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:0 4px 12px #3b82f64d,0 0 #3b82f600;position:relative;overflow:hidden}.auth-submit-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s ease}.auth-submit-btn:hover:before{left:100%}.auth-submit-btn:hover{transform:translateY(-2px);box-shadow:0 8px 20px #3b82f666,0 0 0 4px #3b82f61a}.auth-submit-btn:active{transform:translateY(0)}.auth-submit-btn:disabled{opacity:.7;cursor:not-allowed;transform:none}.auth-spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.auth-switch{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:24px;padding-top:24px;border-top:1px solid rgba(255,255,255,.1)}.auth-switch-text{font-size:14px;color:#ffffff80}.auth-switch-btn{background:none;border:none;color:#60a5fa;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease;text-decoration:underline;text-underline-offset:4px}.auth-switch-btn:hover{color:#93c5fd;text-decoration:none}.auth-switch-btn:disabled{opacity:.5;cursor:not-allowed}@media(max-width:480px){.auth-container{max-width:calc(100% - 32px);border-radius:20px}.auth-content{padding:36px 24px 32px}.auth-title{font-size:24px}.auth-icon-wrapper{width:64px;height:64px}.auth-icon{width:28px;height:28px}}.shadcn-card{border-radius:.5rem;border:1px solid rgba(255,255,255,.1);background:#ffffff0d;box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f;color:#fff}.shadcn-card-header{display:flex;flex-direction:column;gap:.375rem;padding:1.5rem}.shadcn-card-title{font-size:1.5rem;font-weight:600;line-height:1;letter-spacing:-.025em;color:#fff;margin:0}.shadcn-card-description{font-size:.875rem;color:#fff9;margin:0}.shadcn-card-content{padding:1.5rem;padding-top:0}.shadcn-card-footer{display:flex;align-items:center;padding:1.5rem;padding-top:0}.text-muted-foreground{color:#fff9}.bg-primary{background:#3b82f6}.text-primary-foreground{color:#fff}.hover\:bg-primary\/90:hover{background:#3b82f6e6}.bg-background{background:#ffffff0d}.border-input{border:1px solid rgba(255,255,255,.1)}.hover\:bg-accent:hover{background:#ffffff1a}.hover\:text-accent-foreground:hover{color:#fff}.bg-muted{background:#ffffff0d}.hover\:bg-muted\/80:hover{background:#ffffff14}.dashboard-container{flex:1;display:flex;flex-direction:column;gap:1rem;padding:1rem 2rem;overflow-y:auto;min-height:0}.dashboard-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.dashboard-header h2{font-size:1.875rem;font-weight:700;letter-spacing:-.025em;display:flex;align-items:center;gap:.75rem;color:#fff;margin:0 0 .5rem}.dashboard-header p{color:#fff9;margin:0}.dashboard-actions{display:flex;align-items:center;gap:.5rem}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem;margin-bottom:1rem}.dashboard-grid-2col{display:grid;grid-template-columns:2fr 1fr;gap:1rem;margin-bottom:1rem}@media(max-width:768px){.dashboard-grid-2col{grid-template-columns:1fr}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.lp-page{min-height:100%;overflow-y:auto;overflow-x:hidden;background:radial-gradient(1200px 500px at 10% -10%,rgba(56,189,248,.15),transparent 60%),radial-gradient(1000px 500px at 90% 10%,rgba(16,185,129,.12),transparent 60%),linear-gradient(160deg,#070b12,#0d111b 60%,#111827);color:#e5e7eb;padding:3rem clamp(1rem,3vw,3rem)}.lp-hero{max-width:1280px;margin:0 auto 2rem}.lp-hero-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:2rem;align-items:center}.lp-kicker{letter-spacing:.14em;font-size:.78rem;color:#67e8f9;margin-bottom:.85rem;font-weight:600}.lp-hero h1{font-size:clamp(2rem,5vw,3.6rem);line-height:1.05;font-weight:800;letter-spacing:-.02em;margin-bottom:1rem;color:#f8fafc}.lp-hero h1 span{display:block;color:#22d3ee;margin-top:.2rem}.lp-subtitle{max-width:62ch;color:#cbd5e1;line-height:1.6;margin-bottom:1.4rem}.lp-actions{display:flex;gap:.8rem;flex-wrap:wrap;margin-bottom:1rem}.lp-badges{display:flex;flex-wrap:wrap;gap:.6rem}.lp-badges span{display:inline-flex;align-items:center;gap:.4rem;font-size:.78rem;color:#d1d5db;border:1px solid rgba(255,255,255,.16);background:#ffffff0a;border-radius:999px;padding:.36rem .68rem}.lp-hero-media{border-radius:20px;overflow:hidden;border:1px solid rgba(255,255,255,.16);box-shadow:0 25px 55px #02061773}.lp-hero-media img{width:100%;height:100%;object-fit:cover;display:block}.lp-section{max-width:1280px;margin:0 auto 1.2rem;border:1px solid rgba(255,255,255,.1);background:#02061780;border-radius:20px;padding:1.5rem}.lp-section h2{font-size:1.45rem;margin-bottom:.4rem;color:#f8fafc}.lp-section-subtitle{color:#cbd5e1;margin-bottom:1rem}.lp-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem}.lp-card{border:1px solid rgba(255,255,255,.12);background:#ffffff08;border-radius:14px;padding:1rem}.lp-card h3{display:flex;gap:.5rem;align-items:center;margin-bottom:.5rem;font-size:.98rem;color:#f0f9ff}.lp-card p{color:#d1d5db;line-height:1.55;font-size:.92rem}.lp-section-compact{padding-bottom:1rem}.lp-links{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:.8rem}.lp-links a{display:inline-flex;align-items:center;color:#67e8f9;text-decoration:none;border:1px solid rgba(103,232,249,.4);background:#082f4966;border-radius:999px;padding:.45rem .75rem;font-size:.88rem}.lp-links a:hover{color:#cffafe;border-color:#67e8f9bf}.lp-footer{max-width:1280px;margin:0 auto;display:flex;align-items:center;gap:.7rem;color:#9ca3af;font-size:.88rem;padding:.4rem 0 .8rem}.lp-footer img{width:26px;height:26px;border-radius:6px;object-fit:cover}@media(max-width:980px){.lp-hero-grid,.lp-cards{grid-template-columns:1fr}}@media(max-width:640px){.lp-page,.lp-section{padding:1rem}.lp-links a{width:100%;justify-content:center}}
