:root{--bg: #06080b;--surface: #0c1118;--surface2: #121a22;--border: #1b2836;--border2: #263a50;--text: #d4e8f5;--text-muted: #486070;--text-dim: #7898b0;--accent: #9147ff;--accent-hover: #a855f7;--accent-dim: rgba(145, 71, 255, .15);--signal: #00e0a0;--signal-dim: rgba(0, 224, 160, .1);--green: #22c55e;--red: #ff4558;--yellow: #f5c030}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:Space Grotesk,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}input,button,select{font-family:inherit}input{background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:8px 12px;font-size:14px;outline:none;transition:border-color .15s}input:focus{border-color:var(--signal)}input::placeholder{color:var(--text-muted)}input[type=number]{-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}button{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:8px 16px;font-family:Space Grotesk,sans-serif;font-size:14px;font-weight:700;letter-spacing:.01em;cursor:pointer;transition:background .15s,transform .08s;white-space:nowrap}button:hover:not(:disabled){background:var(--accent-hover)}button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.4;cursor:default}button.secondary{background:var(--surface2);color:var(--text-dim);border:1px solid var(--border);font-weight:600}button.secondary:hover:not(:disabled){border-color:var(--border2);color:var(--text);background:var(--border)}button.danger{background:transparent;color:var(--red);border:1px solid rgba(255,69,88,.35)}button.danger:hover:not(:disabled){background:#ff45581a;border-color:var(--red)}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:24px 28px}@keyframes fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes scan-bounce{0%,80%,to{transform:translateY(0);opacity:.25}40%{transform:translateY(-5px);opacity:1}}@keyframes glow-pulse{0%,to{text-shadow:0 0 6px rgba(145,71,255,.4)}50%{text-shadow:0 0 22px rgba(145,71,255,.9),0 0 40px rgba(145,71,255,.4)}}@keyframes status-ring{0%{box-shadow:0 0 #22c55e8c}70%{box-shadow:0 0 0 6px #22c55e00}to{box-shadow:0 0 #22c55e00}}@keyframes status-ring-yellow{0%{box-shadow:0 0 #f5c0308c}70%{box-shadow:0 0 0 6px #f5c03000}to{box-shadow:0 0 #f5c03000}}@keyframes scan-sweep{0%{top:-2px;opacity:0}8%{opacity:1}92%{opacity:1}to{top:calc(100% + 2px);opacity:0}}@keyframes signal-pulse{0%,to{box-shadow:0 0 #00e0a080}50%{box-shadow:0 0 0 5px #00e0a000}}@keyframes slide-in-top{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fade-in .3s ease both}.slide-in{animation:slide-in-top .22s ease forwards}.spin{display:inline-block;animation:spin .8s linear infinite}.scan-dot{display:inline-block;font-size:10px}.scan-dot:nth-child(1){animation:scan-bounce 1.3s 0s infinite}.scan-dot:nth-child(2){animation:scan-bounce 1.3s .2s infinite}.scan-dot:nth-child(3){animation:scan-bounce 1.3s .4s infinite}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.running{background:var(--green);animation:status-ring 1.6s ease infinite}.status-dot.idle{background:var(--text-muted)}.status-dot.paused{background:var(--yellow);animation:status-ring-yellow 1.6s ease infinite}.scan-container{position:relative;overflow:hidden}.scan-sweep-line{position:absolute;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent 0%,var(--signal) 30%,rgba(0,224,160,.9) 50%,var(--signal) 70%,transparent 100%);pointer-events:none;z-index:20;animation:scan-sweep .9s cubic-bezier(.4,0,.6,1) forwards;box-shadow:0 0 12px #00e0a099,0 0 24px #00e0a033}.mono{font-family:Space Mono,monospace}
