.scanner-page{background:var(--bg-dark);min-height:100vh;color:var(--text-primary);padding-top:72px}.scanner-hero{text-align:center;padding:60px 40px 40px;position:relative;overflow:hidden}.scanner-hero:before{content:"";pointer-events:none;background:radial-gradient(circle,#6366f11a 0%,#0000 70%);width:600px;height:600px;position:absolute;top:0;left:50%;transform:translate(-50%)}.scanner-hero-content{z-index:1;position:relative}.scanner-title{margin-bottom:20px;font-size:3.5rem;font-weight:700;line-height:1.2}.gradient-text{background:linear-gradient(135deg,#6366f1 0%,#22d3ee 50%,#a78bfa 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.scanner-subtitle{color:var(--text-secondary);max-width:600px;margin:0 auto;font-size:1.2rem}.scanner-container{max-width:1400px;margin:0 auto;padding:0 40px 80px}.scanner-tabs{border-bottom:2px solid #ffffff0f;gap:16px;margin-bottom:32px;display:flex}.tab-button{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-bottom:3px solid #0000;align-items:center;gap:8px;margin-bottom:-2px;padding:16px 32px;font-size:1rem;font-weight:600;transition:all .3s;display:flex;position:relative}.tab-button:hover{color:var(--text-primary);background:#6366f10d}.tab-button.active{color:var(--primary);border-bottom-color:var(--primary)}.tab-button svg{flex-shrink:0}.scanner-content{grid-template-columns:1fr 1fr;gap:32px;min-height:600px;display:grid}.scanner-panel{background:#14142380;border:1px solid #ffffff0f;border-radius:16px;flex-direction:column;display:flex;overflow:hidden}.panel-header{border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:center;padding:24px;display:flex}.panel-header h2{margin:0;font-size:1.3rem;font-weight:600}.panel-actions{gap:8px;display:flex}.action-btn{color:var(--primary);cursor:pointer;background:#6366f11a;border:1px solid #6366f14d;border-radius:6px;justify-content:center;align-items:center;padding:8px;transition:all .2s;display:flex}.action-btn:hover{background:#6366f133;border-color:#6366f180}.code-editor-container{flex-direction:column;flex:1;display:flex}.code-editor{width:100%;color:var(--text-primary);resize:none;background:#0a0a0fcc;border:none;outline:none;flex:1;padding:24px;font-family:Fira Code,Courier New,monospace;font-size:.9rem;line-height:1.6}.code-editor::placeholder{color:var(--text-muted)}.editor-info{color:var(--text-muted);background:#0a0a0f99;border-top:1px solid #ffffff0f;gap:24px;padding:12px 24px;font-size:.85rem;display:flex}.info-item{gap:6px;display:flex}.info-label{font-weight:600}.demo-contracts-list{flex-direction:column;flex:1;gap:16px;padding:24px;display:flex;overflow-y:auto}.demo-contract-card{cursor:pointer;background:#0a0a0f99;border:2px solid #ffffff0f;border-radius:12px;align-items:flex-start;gap:16px;padding:20px;transition:all .3s;display:flex;position:relative}.demo-contract-card:hover{background:#0a0a0fcc;border-color:#6366f14d;transform:translateY(-2px)}.demo-contract-card.selected{border-color:var(--primary);background:#6366f11a}.demo-contract-icon{width:48px;height:48px;color:var(--primary);background:#6366f126;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.demo-contract-info{flex:1}.demo-contract-info h3{color:var(--text-primary);margin:0 0 8px;font-size:1.1rem;font-weight:600}.demo-contract-info p{color:var(--text-secondary);margin:0 0 8px;font-size:.9rem;line-height:1.5}.demo-contract-language{text-transform:uppercase;letter-spacing:.5px;border-radius:6px;padding:4px 10px;font-size:.75rem;font-weight:600;display:inline-block}.demo-contracts-list .demo-contract-card[data-language=move] .demo-contract-language,.demo-contract-language[data-language=move]{color:#22d3ee;background:#22d3ee26;border:1px solid #22d3ee4d}.demo-contracts-list .demo-contract-card[data-language=solidity] .demo-contract-language,.demo-contract-language[data-language=solidity]{color:#6366f1;background:#6366f126;border:1px solid #6366f14d}.demo-contracts-list .demo-contract-card[data-language=rust] .demo-contract-language,.demo-contract-language[data-language=rust]{color:#f97316;background:#f9731626;border:1px solid #f973164d}.selected-checkmark{background:var(--primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;display:flex;position:absolute;top:16px;right:16px}.panel-footer{border-top:1px solid #ffffff0f;padding:24px}.analyze-button{color:#fff;cursor:pointer;background:linear-gradient(135deg,#6366f1 0%,#8b5cf6 50%,#22d3ee 100%) 0 0/200% 200%;border:none;border-radius:12px;justify-content:center;align-items:center;gap:12px;width:100%;padding:16px 32px;font-size:1.1rem;font-weight:600;transition:all .3s;display:flex;box-shadow:0 4px 20px #6366f14d}.analyze-button:hover:not(:disabled){animation:3s infinite gradientFlow;transform:translateY(-2px);box-shadow:0 6px 30px #6366f180}.analyze-button:disabled{opacity:.6;cursor:not-allowed}.scanning-spinner{border:3px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:20px;height:20px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.scanning-animation{justify-content:center;align-items:center;height:100%;padding:40px;display:flex}.scan-visualization{width:100%;max-width:500px}.code-preview-scan{background:#0a0a0fcc;border:1px solid #ffffff1a;border-radius:12px;margin-bottom:32px;padding:20px;position:relative;overflow:hidden}.scan-lines{font-family:Fira Code,monospace;font-size:.85rem;line-height:1.8}.scan-line-item{opacity:.4;gap:16px;padding:2px 0;transition:all .4s cubic-bezier(.4,0,.2,1);display:flex;position:relative}.scan-line-item:before{content:"";opacity:0;background:linear-gradient(#0000,#6366f180,#0000);width:2px;height:100%;transition:opacity .3s;position:absolute;top:0;left:-24px}.scan-line-item.scanning{opacity:1;background:linear-gradient(90deg,#6366f11a 0%,#22d3ee26 50%,#ec48991a 100%);transform:translate(4px);box-shadow:0 0 20px #6366f14d}.scan-line-item.scanning:before{opacity:1}.scan-line-item.scanned{opacity:.7}.line-number{color:var(--text-muted);text-align:right;min-width:30px;font-weight:600;transition:color .3s}.scan-line-item.scanning .line-number{color:#22d3ee;text-shadow:0 0 10px #22d3ee80}.line-code{color:var(--text-secondary);white-space:pre;text-overflow:ellipsis;flex:1;transition:color .3s;overflow:hidden}.scan-line-item.scanning .line-code{color:var(--text-primary)}.scan-beam{background:linear-gradient(90deg,#0000 0%,#6366f1 20%,#22d3ee 50%,#ec4899 80%,#0000 100%);width:100%;height:3px;animation:2s ease-in-out infinite scanBeam;position:absolute;top:0;left:0;box-shadow:0 0 20px #6366f1cc,0 0 40px #22d3ee80}@keyframes scanBeam{0%,to{opacity:0;transform:translateY(0)}10%{opacity:1}90%{opacity:1}to{opacity:0;transform:translateY(400px)}}.scan-status{text-align:center}.status-dots{justify-content:center;gap:8px;margin-bottom:16px;display:flex}.status-dots .dot{background:var(--primary);border-radius:50%;width:10px;height:10px;animation:1.5s ease-in-out infinite dotPulse}.status-dots .dot:nth-child(2){animation-delay:.2s}.status-dots .dot:nth-child(3){animation-delay:.4s}@keyframes dotPulse{0%,to{opacity:.5;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}.scan-status p{color:var(--text-secondary);margin-bottom:20px;font-size:1rem}.progress-bar{background:#ffffff1a;border-radius:10px;width:100%;height:6px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#6366f1,#22d3ee,#a78bfa) 0 0/200% 100%;border-radius:10px;height:100%;transition:width .3s;animation:2s infinite progressGlow}@keyframes progressGlow{0%,to{background-position:0%}50%{background-position:100%}}.analysis-results{height:auto;max-height:calc(100vh - 200px);padding:32px;overflow-y:auto}.analysis-results::-webkit-scrollbar{width:8px}.analysis-results::-webkit-scrollbar-track{background:#0003;border-radius:4px}.analysis-results::-webkit-scrollbar-thumb{background:#6366f166;border-radius:4px}.analysis-results::-webkit-scrollbar-thumb:hover{background:#6366f199}.results-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.results-header h2{margin:0;font-size:1.5rem;font-weight:600}.results-timestamp{color:var(--text-muted);font-size:.85rem}.risk-score-card{border:2px solid;border-radius:12px;align-items:center;gap:24px;margin-bottom:24px;padding:24px;display:flex}.risk-score-card.critical{background:#ef44441a;border-color:#ef4444}.risk-score-card.high{background:#f973161a;border-color:#f97316}.risk-score-card.medium{background:#f59e0b1a;border-color:#f59e0b}.risk-score-card.low{background:#10b9811a;border-color:#10b981}.risk-score-value{font-size:4rem;font-weight:700;line-height:1}.risk-score-card.critical .risk-score-value{color:#ef4444}.risk-score-card.high .risk-score-value{color:#f97316}.risk-score-card.medium .risk-score-value{color:#f59e0b}.risk-score-card.low .risk-score-value{color:#10b981}.risk-score-info h3{margin:0 0 8px;font-size:1.2rem;font-weight:700}.risk-score-info p{color:var(--text-secondary);margin:0;font-size:.95rem;line-height:1.5}.severity-summary{flex-wrap:wrap;gap:12px;margin-bottom:32px;display:flex}.severity-badge{border:1px solid;border-radius:8px;padding:8px 16px;font-size:.9rem;font-weight:600}.severity-badge.critical{color:#ef4444;background:#ef444426;border-color:#ef444466}.severity-badge.high{color:#f97316;background:#f9731626;border-color:#f9731666}.severity-badge.medium{color:#f59e0b;background:#f59e0b26;border-color:#f59e0b66}.severity-badge.low{color:#10b981;background:#10b98126;border-color:#10b98166}.vulnerabilities-section{margin-top:32px}.vulnerabilities-section h3{margin-bottom:20px;font-size:1.2rem;font-weight:600}.vulnerabilities-list{flex-direction:column;gap:16px;display:flex}.vulnerability-item{background:#0a0a0f99;border:1px solid;border-left-width:4px;border-radius:12px;padding:20px}.vulnerability-item.critical{background:#ef44440d;border-color:#ef4444}.vulnerability-item.high{background:#f973160d;border-color:#f97316}.vulnerability-item.medium{background:#f59e0b0d;border-color:#f59e0b}.vulnerability-item.low{background:#10b9810d;border-color:#10b981}.vuln-header{align-items:center;gap:12px;margin-bottom:12px;display:flex}.vuln-severity-badge{text-transform:uppercase;letter-spacing:.5px;border-radius:6px;padding:4px 10px;font-size:.75rem;font-weight:700}.vuln-severity-badge.critical{color:#fff;background:#ef4444}.vuln-severity-badge.high{color:#fff;background:#f97316}.vuln-severity-badge.medium{color:#fff;background:#f59e0b}.vuln-severity-badge.low{color:#fff;background:#10b981}.vuln-header h4{flex:1;margin:0;font-size:1.1rem;font-weight:600}.vuln-description{color:var(--text-secondary);margin:0 0 12px;line-height:1.6}.vuln-location{color:var(--text-muted);align-items:center;gap:6px;margin-bottom:12px;font-size:.85rem;display:flex}.vuln-code-snippet{background:#0006;border-radius:6px;margin-bottom:12px;padding:12px;overflow-x:auto}.vuln-code-snippet code{color:#a5d6ff;font-family:Fira Code,monospace;font-size:.85rem}.vuln-recommendation{border-left:3px solid var(--primary);background:#6366f11a;border-radius:6px;margin-bottom:8px;padding:12px;font-size:.9rem}.vuln-recommendation strong{color:var(--primary)}.vuln-confidence{color:var(--text-muted);font-size:.85rem}.no-vulnerabilities{text-align:center;padding:60px 20px}.no-vulnerabilities svg{color:var(--success);margin-bottom:20px}.no-vulnerabilities h3{color:var(--success);margin:0 0 12px;font-size:1.4rem;font-weight:600}.no-vulnerabilities p{color:var(--text-secondary);font-size:1rem}.ai-agents-cta{background:linear-gradient(135deg,#3b82f61a 0%,#8b5cf61a 100%);border:1px solid #60a5fa4d;border-radius:12px;margin-top:32px;padding:24px}.ai-agents-button{color:#fff;cursor:pointer;background:linear-gradient(135deg,#3b82f633 0%,#8b5cf633 100%);border:1px solid #60a5fa66;border-radius:10px;align-items:center;gap:16px;padding:20px 24px;text-decoration:none;transition:all .3s;display:flex}.ai-agents-button:hover{background:linear-gradient(135deg,#3b82f64d 0%,#8b5cf64d 100%);border-color:#60a5fa99;transform:translateY(-2px);box-shadow:0 8px 24px #3b82f64d}.ai-icon{flex-shrink:0;font-size:2.5rem}.ai-button-content{flex-direction:column;flex:1;gap:4px;display:flex}.ai-button-title{color:#fff;font-size:1.2rem;font-weight:600}.ai-button-subtitle{color:#9ca3af;font-size:.9rem}.ai-button-arrow{color:#60a5fa;font-size:1.5rem;transition:transform .3s}.ai-agents-button:hover .ai-button-arrow{transform:translate(4px)}.no-results{text-align:center;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:40px;display:flex}.no-results-icon{opacity:.3;margin-bottom:24px}.no-results-icon svg{color:var(--primary)}.no-results h3{margin:0 0 12px;font-size:1.4rem;font-weight:600}.no-results p{color:var(--text-secondary);max-width:400px;line-height:1.6}@keyframes gradientFlow{0%,to{background-position:0%}50%{background-position:100%}}@media (max-width:1200px){.scanner-content{grid-template-columns:1fr}.results-panel{min-height:500px}}@media (max-width:768px){.scanner-title{font-size:2.5rem}.scanner-subtitle{font-size:1rem}.scanner-container{padding:0 20px 60px}.scanner-tabs{overflow-x:auto}.tab-button{padding:12px 20px;font-size:.9rem}.risk-score-card{text-align:center;flex-direction:column}.risk-score-value{font-size:3rem}}.language-selector{align-items:center;gap:12px;margin-top:8px;display:flex}.language-selector label{color:var(--text-secondary);font-size:.9rem;font-weight:500}.language-select{color:var(--text-primary);cursor:pointer;background:#0a0a0fcc;border:1px solid #6366f14d;border-radius:8px;outline:none;padding:8px 16px;font-size:.9rem;font-weight:500;transition:all .2s}.language-select:hover{background:#0a0a0fe6;border-color:#6366f180}.language-select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #6366f11a}.language-select option{background:var(--bg-secondary);color:var(--text-primary);padding:8px}.code-preview-scan{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0a0a0ff2;border:1px solid #6366f14d;border-radius:16px;max-height:450px;margin-bottom:32px;padding:24px;animation:3s ease-in-out infinite codePreviewPulse;position:relative;overflow:hidden auto;box-shadow:0 0 30px #6366f126,inset 0 0 50px #6366f108}@keyframes codePreviewPulse{0%,to{border-color:#6366f14d;box-shadow:0 0 30px #6366f126,inset 0 0 50px #6366f108}50%{border-color:#22d3ee66;box-shadow:0 0 40px #22d3ee40,inset 0 0 60px #22d3ee0d}}.code-preview-scan::-webkit-scrollbar{width:8px}.scan-beam{z-index:10;filter:blur(.5px);background:linear-gradient(90deg,#0000 0%,#6366f14d 10%,#6366f1 20%,#22d3ee 40%,#fff 50%,#22d3ee 60%,#ec4899 80%,#ec48994d 90%,#0000 100%);width:100%;height:4px;animation:3.5s cubic-bezier(.4,0,.2,1) infinite scanBeamScroll;position:sticky;top:0;left:0;box-shadow:0 0 30px #6366f1,0 0 50px #22d3eecc,0 0 70px #ec489999,0 4px 20px #6366f180}.scan-beam:before{content:"";filter:blur(4px);background:linear-gradient(#6366f166,#0000);width:100%;height:8px;position:absolute;top:-2px;left:0}.scan-beam:after{content:"";filter:blur(6px);background:linear-gradient(#22d3ee4d,#0000);width:100%;height:12px;position:absolute;top:4px;left:0}@keyframes scanBeamScroll{0%,to{opacity:0;transform:translateY(0)}5%{opacity:1}95%{opacity:1}to{opacity:0;transform:translateY(600px)}}.code-preview-scan::-webkit-scrollbar-track{background:#0003;border-radius:4px}.code-preview-scan::-webkit-scrollbar-thumb{background:#6366f14d;border-radius:4px}.code-preview-scan::-webkit-scrollbar-thumb:hover{background:#6366f180}.scan-beam{z-index:10;background:linear-gradient(90deg,#0000 0%,#6366f1 20%,#22d3ee 50%,#ec4899 80%,#0000 100%);width:100%;height:3px;animation:3s ease-in-out infinite scanBeamScroll;position:sticky;top:0;left:0;box-shadow:0 0 20px #6366f1cc,0 0 40px #22d3ee80}.language-badge{text-transform:uppercase;letter-spacing:.5px;border-radius:6px;margin-left:8px;padding:4px 10px;font-size:.75rem;font-weight:600;display:inline-block}.language-badge.move{color:#22d3ee;background:#22d3ee26;border:1px solid #22d3ee4d}.language-badge.solidity{color:#6366f1;background:#6366f126;border:1px solid #6366f14d}.language-badge.rust{color:#f97316;background:#f9731626;border:1px solid #f973164d}@media (max-width:768px){.language-selector{flex-direction:column;align-items:flex-start;gap:8px}.language-select{width:100%}}.upload-area{height:100%;padding:24px;overflow-y:auto}.upload-dropzone{text-align:center;cursor:pointer;background:#6366f10d;border:2px dashed #6366f14d;border-radius:16px;padding:48px 24px;transition:all .3s}.upload-dropzone:hover{background:#6366f114;border-color:#6366f180}.upload-label{cursor:pointer;flex-direction:column;align-items:center;gap:16px;display:flex}.upload-label svg{color:var(--primary);opacity:.8}.upload-label h3{color:var(--text-primary);margin:0;font-size:1.25rem}.upload-label p{color:var(--text-secondary);margin:0;font-size:.95rem}.uploaded-filename{background:#6366f11a;border-radius:8px;padding:8px 16px;font-family:SF Mono,Monaco,Consolas,monospace;font-weight:600;color:var(--primary)!important;font-size:1rem!important}.file-url-info{justify-content:center;align-items:center;gap:6px;display:flex;color:var(--text-secondary)!important;margin:8px 0 0!important;font-size:.85rem!important}.supported-formats{color:var(--text-secondary);margin-top:8px;font-size:.85rem;display:block}.api-badge{color:var(--primary);background:#6366f126;border:1px solid #6366f14d;border-radius:6px;margin-top:12px;padding:6px 12px;font-size:.8rem;font-weight:600;display:inline-block}.upload-another-btn{color:var(--primary);cursor:pointer;background:#6366f126;border:1px solid #6366f14d;border-radius:8px;margin-top:16px;padding:10px 24px;font-size:.9rem;font-weight:600;transition:all .3s}.upload-another-btn:hover{background:#6366f140;border-color:#6366f180}.uploaded-code-preview{background:#ffffff05;border:1px solid #ffffff0f;border-radius:12px;margin-top:24px;padding:20px}.uploaded-code-preview h4{color:var(--text-primary);margin:0 0 12px;font-size:.95rem}.code-preview-box{background:#0000004d;border:1px solid #ffffff14;border-radius:8px;margin-bottom:12px;padding:16px;overflow-x:auto}.code-preview-box pre{color:var(--text-secondary);white-space:pre-wrap;word-wrap:break-word;margin:0;font-family:SF Mono,Monaco,Consolas,monospace;font-size:.85rem;line-height:1.6}.scanning-spinner{border:2px solid #ffffff4d;border-top-color:var(--primary);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite spin;display:inline-block}
