@font-face{font-family:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/space-grotesk-700.woff2) format("woff2")}:root{--primary-yellow: #FFF9C4;--medium-yellow: #FFF59D;--accent-yellow: #FFEB3B;--dark-yellow: #F9A825;--primary-blue: #E3F2FD;--medium-blue: #90CAF9;--accent-blue: #42A5F5;--dark-blue: #1976D2;--cyber-green: #00E676;--cyber-red: #FF5252;--cyber-purple: #E040FB;--bg-primary: #FAFAFA;--bg-secondary: #FFFFFF;--text-primary: #263238;--text-secondary: #546E7A;--border-color: #CFD8DC;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--shadow-glow-blue: 0 0 20px rgba(66, 165, 245, .3);--shadow-glow-yellow: 0 0 20px rgba(255, 235, 59, .3);--font-primary: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "Roboto Mono", "Courier New", monospace}[data-theme=dark]{--primary-yellow: #3D3A00;--medium-yellow: #5C5800;--accent-yellow: #FFD600;--dark-yellow: #FFAB00;--primary-blue: #0D2137;--medium-blue: #1565C0;--accent-blue: #42A5F5;--dark-blue: #90CAF9;--cyber-green: #69F0AE;--cyber-red: #FF8A80;--cyber-purple: #EA80FC;--bg-primary: #0A1929;--bg-secondary: #132F4C;--text-primary: #E7EBF0;--text-secondary: #B2BAC2;--border-color: #1E4976;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .5);--shadow-glow-blue: 0 0 20px rgba(66, 165, 245, .4);--shadow-glow-yellow: 0 0 20px rgba(255, 214, 0, .4)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-primary);background-color:var(--bg-primary);color:var(--text-primary);line-height:1.6;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;background-image:linear-gradient(90deg,rgba(66,165,245,.03) 1px,transparent 1px),linear-gradient(rgba(66,165,245,.03) 1px,transparent 1px);background-size:50px 50px;pointer-events:none;z-index:-1}[data-theme=dark] body:before,body[data-theme=dark]:before{background-image:linear-gradient(90deg,rgba(66,165,245,.08) 1px,transparent 1px),linear-gradient(rgba(66,165,245,.08) 1px,transparent 1px)}h1,h2,h3,h4,h5,h6{font-weight:700;letter-spacing:.5px;text-transform:uppercase}h1{font-size:2.5rem;background:linear-gradient(135deg,var(--dark-blue),var(--accent-blue));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}code,.mono{font-family:var(--font-mono)}.card{background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-lg);transition:all .3s ease}.card:hover{border-color:var(--medium-blue);box-shadow:0 12px 32px #42a5f533;transform:translateY(-2px)}.btn{padding:var(--spacing-sm) var(--spacing-lg);border:2px solid;border-radius:var(--radius-full);font-family:var(--font-primary);font-weight:600;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;transition:all .3s ease;font-size:.875rem;box-shadow:var(--shadow-sm)}.btn-primary{background:var(--accent-blue);color:#fff;border-color:var(--dark-blue)}.btn-primary:hover{background:var(--dark-blue);box-shadow:var(--shadow-glow-blue);transform:translateY(-1px)}.btn-secondary{background:var(--medium-yellow);color:var(--text-primary);border-color:var(--dark-yellow)}.btn-secondary:hover{background:var(--accent-yellow);box-shadow:var(--shadow-glow-yellow);transform:translateY(-1px)}.btn-danger{background:transparent;color:var(--cyber-red);border-color:var(--cyber-red)}.btn-danger:hover{background:var(--cyber-red);color:#fff}.badge{display:inline-block;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-full);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;box-shadow:var(--shadow-sm)}.badge-analysing{background:var(--medium-yellow);color:var(--text-primary)}.badge-ready{background:var(--cyber-green);color:#fff}.badge-error{background:var(--cyber-red);color:#fff}.hexagon-pattern{background-image:url("data:image/svg+xml,%3Csvg width='50' height='50' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M25 5 L40 15 L40 35 L25 45 L10 35 L10 15 Z' fill='none' stroke='%2390CAF9' stroke-width='0.5' opacity='0.2'/%3E%3C/svg%3E");background-size:50px 50px}.scan-lines{position:relative;overflow:hidden}.scan-lines:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.03),rgba(0,0,0,.03) 1px,transparent 1px,transparent 2px);pointer-events:none}@keyframes glow-pulse{0%,to{box-shadow:0 0 5px #42a5f54d}50%{box-shadow:0 0 20px #42a5f599}}.glow-pulse{animation:glow-pulse 2s ease-in-out infinite}.progress-bar{height:8px;background:var(--primary-blue);border-radius:var(--radius-full);overflow:hidden;position:relative}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent-blue),var(--dark-blue));transition:width .3s ease;position:relative;overflow:hidden}.progress-fill:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:shimmer 1.5s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.text-center{text-align:center}.flex{display:flex}.flex-column{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}.mt-sm{margin-top:var(--spacing-sm)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-md{margin-bottom:var(--spacing-md)}.mb-lg{margin-bottom:var(--spacing-lg)}html{font-size:16px}body{margin:0;padding:0;min-height:100vh}#root{min-height:100vh;display:flex;flex-direction:column}a{color:var(--accent-blue);text-decoration:none;transition:color .2s ease}a:hover{color:var(--dark-blue);text-decoration:underline}input,textarea{font-family:var(--font-primary);padding:var(--spacing-sm) var(--spacing-md);border:2px solid var(--border-color);border-radius:var(--radius-sm);font-size:1rem;transition:all .3s ease;background:var(--bg-secondary);color:var(--text-primary)}input:focus,textarea:focus{outline:none;border-color:var(--accent-blue);box-shadow:var(--shadow-glow-blue)}.markdown-body{font-size:.85rem;line-height:1.6;color:var(--text-primary);overflow-wrap:break-word}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin:1em 0 .4em;color:var(--text-primary);line-height:1.3}.markdown-body h1:first-child,.markdown-body h2:first-child{margin-top:0}.markdown-body h1{font-size:1.4rem}.markdown-body h2{font-size:1.15rem}.markdown-body h3{font-size:1rem}.markdown-body h4{font-size:.9rem}.markdown-body h5{font-size:.85rem}.markdown-body h6{font-size:.8rem}.markdown-body p{margin:.5em 0}.markdown-body strong{font-weight:700;color:var(--text-primary)}.markdown-body em{font-style:italic}.markdown-body code{padding:.1em .35em;border-radius:var(--radius-sm);background:var(--bg-tertiary);font-family:var(--font-mono);font-size:.85em}.markdown-body a{color:var(--accent-blue);text-decoration:underline}.markdown-body ul{margin:.5em 0;padding-left:1.5em}.markdown-body li{margin:.2em 0}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:var(--primary-blue)}::-webkit-scrollbar-thumb{background:var(--medium-blue);border-radius:6px}::-webkit-scrollbar-thumb:hover{background:var(--accent-blue)}.tooltip-wrapper{position:relative;display:inline-block}.tooltip{position:absolute;padding:8px 12px;background:linear-gradient(135deg,#1a1f2e,#252b3d);border:1px solid rgba(66,165,245,.3);border-radius:8px;color:#e0e0e0;font-family:system-ui,-apple-system,sans-serif;font-size:.8125rem;font-weight:500;line-height:1.4;white-space:nowrap;max-width:300px;box-shadow:0 4px 20px #0006,0 0 0 1px #ffffff0d inset;z-index:10000;pointer-events:none}.tooltip.tooltip-portal{position:absolute}.tooltip-wrap{white-space:normal;text-align:left;min-width:200px}.tooltip-arrow{position:absolute;width:0;height:0;border:6px solid transparent}.tooltip-portal.tooltip-top .tooltip-arrow{top:100%;left:50%;transform:translate(-50%);border-top-color:#42a5f54d;border-bottom:none}.tooltip-portal.tooltip-bottom .tooltip-arrow{bottom:100%;left:50%;transform:translate(-50%);border-bottom-color:#42a5f54d;border-top:none}.tooltip-portal.tooltip-left .tooltip-arrow{left:100%;top:50%;transform:translateY(-50%);border-left-color:#42a5f54d;border-right:none}.tooltip-portal.tooltip-right .tooltip-arrow{right:100%;top:50%;transform:translateY(-50%);border-right-color:#42a5f54d;border-left:none}.tachyonik-logo-container{display:flex;flex-direction:row;align-items:center;padding:var(--spacing-sm)}.tachyonik-text{font-family:Space Grotesk,Inter,sans-serif;font-size:1.5rem;font-weight:700;letter-spacing:3px;color:#000;position:relative}.tachyonik-text h1{font-family:inherit;font-size:inherit;font-weight:inherit;letter-spacing:inherit;color:inherit;margin:0;background:none;-webkit-background-clip:unset;-webkit-text-fill-color:unset;background-clip:unset;line-height:normal}.tachyonik-accent{color:#00d4ff}.tachyonik-sparkles{width:1.2em;height:1.2em;vertical-align:-.15em;margin-left:.1em;color:#000}[data-theme=dark] .tachyonik-text,[data-theme=dark] .tachyonik-sparkles{color:#fff}.upload-zone{width:36px;height:36px;min-width:36px;min-height:36px;max-width:36px;max-height:36px;border:2px dashed var(--border-color);border-radius:50%;padding:0;text-align:center;cursor:pointer;transition:all .3s ease;background:linear-gradient(135deg,var(--primary-blue) 0%,var(--primary-yellow) 100%);background-size:200% 200%;animation:gradient-shift 10s ease infinite;position:relative;overflow:visible;display:flex;justify-content:center;align-items:center;flex-shrink:0;box-sizing:border-box}.upload-zone:before{content:"";position:absolute;inset:0;background:var(--bg-secondary);opacity:.95;transition:opacity .3s ease;border-radius:50%}.upload-zone>*{position:relative;z-index:1}.upload-zone:hover{border-color:var(--accent-blue);box-shadow:var(--shadow-glow-blue);transform:translateY(-1px)}.upload-zone:hover:before{opacity:.9}.upload-zone.dragging{border-color:var(--dark-blue);box-shadow:var(--shadow-glow-blue);transform:translateY(-1px)}.upload-zone.dragging:before{opacity:.85}.upload-zone.focused{border-color:var(--accent-blue);outline:none;box-shadow:0 0 0 3px #2196f333,var(--shadow-glow-blue)}.upload-zone.focused:before{opacity:.9}.upload-zone.limit-exceeded{border-color:#dc3545;cursor:not-allowed;animation:none}.upload-zone.limit-exceeded:before{background:var(--bg-secondary);opacity:.98}.upload-zone.limit-exceeded:hover{border-color:#dc3545;box-shadow:0 0 0 4px #dc354533;transform:none}.upload-zone.limit-exceeded:hover:before{opacity:.98}.upload-zone.limit-exceeded .upload-icon{color:#dc3545;animation:none}.upload-icon{color:var(--accent-blue);margin-bottom:0;display:inline-block}.upload-zone h3,.upload-zone .upload-hint,.upload-zone .upload-hint-secondary,.upload-zone .upload-text{display:none}.upload-zone .upload-tooltip{position:absolute;top:calc(100% + 12px);left:50%;transform:translate(-50%);background:linear-gradient(135deg,#1a1f2e,#252b3d);border:1px solid rgba(66,165,245,.3);border-radius:12px;padding:var(--spacing-lg);min-width:400px;max-width:500px;box-shadow:0 4px 20px #0006,0 0 0 1px #ffffff0d inset;z-index:10000!important;pointer-events:none;text-align:left}.upload-zone .upload-tooltip:before{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:8px solid transparent;border-bottom-color:#42a5f54d}.upload-zone .upload-tooltip:after{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-bottom-color:#1a1f2e;margin-bottom:2px}.tooltip-section{margin-bottom:var(--spacing-sm);font-size:.8rem;color:#b0b0b0;line-height:1.5}.tooltip-section:last-child{margin-bottom:0}.tooltip-section strong{color:#e0e0e0;display:block;margin-bottom:var(--spacing-xs);font-size:.85rem}.tooltip-section ul{margin:0;padding-left:var(--spacing-lg);list-style-type:disc}.tooltip-section li{margin:2px 0;color:#b0b0b0}.upload-zone .upload-tooltip p{margin:0 0 var(--spacing-md) 0;font-size:.875rem;color:#b0b0b0;line-height:1.6}.upload-zone .upload-tooltip p:last-child{margin-bottom:0}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes gradient-shift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.upload-zone.empty-sources{animation:gradient-shift 10s ease infinite,dropzone-pulse 5s ease-in-out infinite}@keyframes dropzone-pulse{0%,85%,to{transform:scale(1);box-shadow:none}90%{transform:scale(1.15);box-shadow:0 0 20px #42a5f599,0 0 40px #42a5f54d}95%{transform:scale(1);box-shadow:none}}.upload-progress-item{background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-lg);padding:var(--spacing-md);margin-bottom:var(--spacing-sm);display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:var(--spacing-sm);align-items:center;transition:all .3s ease;box-shadow:var(--shadow-md)}.upload-progress-item.uploading{border-color:var(--accent-blue)}.upload-progress-item.error{border-color:var(--cyber-red);background:#ff52520d}.upload-info{grid-column:1;display:flex;flex-direction:column;gap:var(--spacing-xs)}.upload-filename{font-family:var(--font-mono);font-size:.875rem;font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-error-text{font-size:.75rem;color:var(--cyber-red);font-family:var(--font-mono)}.upload-status{grid-column:2;grid-row:1;font-family:var(--font-mono);font-size:.875rem;font-weight:700;color:var(--text-secondary)}.upload-progress-item.uploading .upload-status{color:var(--accent-blue)}.upload-progress-item.error .upload-status{color:var(--cyber-red);font-size:1.5rem}.progress-bar{grid-column:1 / -1;grid-row:2}.btn-clear{grid-column:2;grid-row:1;background:none;border:none;color:var(--cyber-red);font-size:1.5rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.btn-clear:hover{color:var(--text-primary);background:var(--cyber-red);border-radius:50%}.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px;opacity:0}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.dashboard{margin-top:var(--spacing-md)}.dashboard-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-md);background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-md)}.dashboard-toolbar-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.dashboard-toolbar-btn svg{width:16px;height:16px}.dashboard-toolbar-btn:hover{border-color:var(--accent-blue);color:var(--accent-blue)}.chart-close-btn{position:absolute;top:8px;right:8px;z-index:10;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:none;background:none;cursor:pointer;font-size:1.125rem;line-height:1;color:var(--text-secondary);opacity:.4;border-radius:var(--radius-sm);transition:opacity .2s ease,color .2s ease,background-color .2s ease;padding:0}.chart-close-btn:hover{opacity:1;color:#dc2626;background-color:#dc26261a}.grid-chart-item{position:relative;overflow:hidden;display:flex;flex-direction:column}.grid-chart-item .chart-container{display:flex;flex-direction:column;height:100%;overflow:hidden}.grid-chart-item .chart-container .recharts-responsive-container{flex:1;min-height:0}.grid-chart-item .card:hover{transform:none}.chart-drag-handle{display:inline-flex;align-items:center;justify-content:center;cursor:grab;padding:2px 6px;margin-right:var(--spacing-sm);border-radius:var(--radius-sm);opacity:.4;transition:opacity .2s ease,background-color .2s ease;font-size:1rem;line-height:1;color:var(--text-secondary);-webkit-user-select:none;user-select:none}.chart-drag-handle:hover{opacity:1;background-color:#42a5f51a;color:var(--accent-blue)}.chart-drag-handle:active{cursor:grabbing}.react-resizable-handle{position:absolute;width:20px;height:20px;bottom:0;right:0;cursor:se-resize;background:none}.react-resizable-handle:after{content:"";position:absolute;right:4px;bottom:4px;width:8px;height:8px;border-right:2px solid var(--border-color);border-bottom:2px solid var(--border-color);transition:border-color .2s ease}.react-resizable-handle:hover:after{border-color:var(--accent-blue)}.react-grid-placeholder{background:#42a5f514!important;border:2px dashed var(--accent-blue)!important;border-radius:var(--radius-lg)!important;opacity:.6!important}.react-grid-item.react-draggable-dragging{border:2px solid var(--accent-blue);border-radius:var(--radius-lg);box-shadow:0 8px 32px #42a5f54d;opacity:.9;z-index:100}.chart-container{padding:var(--spacing-lg);animation:slide-in .3s ease}@keyframes slide-in{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.chart-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md);flex-wrap:wrap;gap:var(--spacing-sm)}.chart-title{font-size:1.125rem;font-weight:600;margin:0;color:var(--text-primary);text-transform:none}.chart-toggles{display:flex;gap:var(--spacing-sm)}.toggle-btn{padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--radius-full);font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s ease;border:2px solid var(--border-color);background:var(--bg-tertiary);color:var(--text-secondary);font-family:var(--font-mono)}.toggle-btn:hover{border-color:var(--medium-blue)}.toggle-btn.toggle-actions.active{background:#42a5f526;border-color:var(--accent-blue);color:var(--accent-blue)}.toggle-btn.toggle-assets.active{background:#00e67626;border-color:var(--cyber-green);color:var(--cyber-green)}.toggle-btn.toggle-sources.active{background:#ffeb3b26;border-color:var(--accent-yellow);color:var(--text-primary)}.chart-description{font-size:.8rem;color:var(--text-secondary);margin:0 0 var(--spacing-lg) 0;opacity:.7}.chart-stats{display:flex;align-items:center;gap:var(--spacing-sm);margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--border-color);font-family:var(--font-mono)}.stat-label{font-size:.875rem;color:var(--text-secondary);opacity:.8}.stat-value{font-size:1.25rem;font-weight:700;color:var(--accent-blue)}.stat-separator{margin:0 var(--spacing-md);color:var(--border-color)}.security-score-chart{padding:var(--spacing-sm) var(--spacing-lg)}.security-score-chart .chart-header{margin-bottom:var(--spacing-xs)}.scoring-content{flex:1;display:flex;flex-direction:column;gap:var(--spacing-sm);min-height:0}.scoring-main{flex:1.5;min-height:0;display:flex;flex-direction:column;gap:4px}.scoring-main-label{font-size:.8rem;font-weight:600;color:var(--text-secondary)}.scoring-main-bar{flex:1;min-height:0;display:flex}.security-score-bar-track{position:relative;width:100%;height:100%;min-height:28px;background:#dc2626;border-radius:var(--radius-sm);overflow:hidden}.security-score-bar-fill{position:absolute;top:0;left:0;height:100%;background:#22c55e;transition:width .4s ease}.security-score-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:700;font-family:var(--font-mono);color:#fff;z-index:1}.scoring-subs{flex:1;min-height:0;display:flex;gap:var(--spacing-md)}.scoring-sub{flex:1;display:flex;flex-direction:column;gap:3px;min-height:0}.scoring-sub-label{font-size:.72rem;font-weight:500;color:var(--text-secondary)}.scoring-main-clickable{cursor:pointer}.scoring-main-clickable:hover .scoring-main-label{color:var(--accent-blue)}.scoring-sub-clickable,.scoring-sub-clickable .scoring-sub-bar-track{cursor:pointer}.scoring-sub-label-clickable{cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:2px}.scoring-sub-clickable:hover .scoring-sub-label-clickable{color:var(--accent-blue)}.capability-score-info{font-size:.9rem;line-height:1.6;color:var(--text-primary)}.capability-score-info p{margin:0 0 var(--spacing-md)}.capability-score-info p:last-child{margin-bottom:0}.scoring-sub-bar-track{position:relative;width:100%;flex:1;height:100%;min-height:18px;background:var(--bg-tertiary);border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--border-color)}.scoring-sub-bar-track{background:#dc2626}.scoring-sub-bar-fill{position:absolute;top:0;left:0;height:100%;background:#22c55e;transition:width .4s ease;border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.scoring-sub-value{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:600;font-family:var(--font-mono);color:var(--text-primary);z-index:1}.assets-chart{position:relative}.assets-chart .chart-stats{justify-content:center}.chart-empty{display:flex;align-items:center;justify-content:center;flex:1;color:var(--text-secondary);font-style:italic}.recharts-tooltip-wrapper{outline:none}.recharts-default-tooltip{background-color:var(--bg-secondary)!important;border:1px solid var(--border-color)!important;border-radius:var(--radius-sm)!important;color:var(--text-primary)!important}.recharts-tooltip-label{color:var(--text-primary)!important;font-weight:600;margin-bottom:var(--spacing-xs)}.recharts-tooltip-item{color:var(--text-secondary)!important}.peer-rank-chart .recharts-reference-line line{stroke-dasharray:6 3}.peer-group-select{padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--radius-full);font-size:.8rem;font-weight:500;cursor:pointer;border:2px solid var(--border-color);background:var(--bg-tertiary);color:var(--text-secondary);font-family:var(--font-mono);transition:all .2s ease;appearance:none;padding-right:var(--spacing-lg);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='%239ca3af' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.peer-group-select:hover{border-color:var(--medium-blue);color:var(--text-primary)}.peer-group-select:focus{outline:none;border-color:var(--accent-blue);color:var(--text-primary)}.peer-group-select option{background:var(--bg-secondary);color:var(--text-primary)}@media(max-width:1024px){.chart-container{padding:var(--spacing-md)}.chart-title{font-size:1rem}.chart-description{font-size:.75rem}.toggle-btn{padding:var(--spacing-xs) var(--spacing-sm);font-size:.75rem}}@media(max-width:768px){.chart-container{padding:var(--spacing-sm)}.chart-header{flex-direction:column;align-items:flex-start}.chart-title{font-size:.9rem}.chart-toggles{width:100%;justify-content:flex-start}.toggle-btn{flex:1;text-align:center}.stat-value{font-size:1rem}}.text-chart{display:flex;flex-direction:column;height:100%;background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden}.text-chart-header{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--border-color);flex-shrink:0}.text-chart-header .chart-drag-handle{font-size:.875rem;margin-right:0}.text-chart-title{font-size:.875rem;font-weight:600;color:var(--text-primary);margin:0;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.text-chart-actions{display:flex;gap:2px;flex-shrink:0}.text-chart-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background:none;cursor:pointer;color:var(--text-secondary);opacity:.5;border-radius:var(--radius-sm);transition:opacity .2s ease,color .2s ease,background-color .2s ease}.text-chart-btn svg{width:14px;height:14px}.text-chart-btn:hover{opacity:1;color:var(--accent-blue);background-color:#42a5f51a}.text-chart-btn.text-chart-delete:hover{color:#dc2626;background-color:#dc26261a}.text-chart-body{flex:1;min-height:0;overflow:auto}.text-chart-textarea{width:100%;height:100%;box-sizing:border-box;padding:var(--spacing-sm) var(--spacing-md);border:none;background:transparent;color:var(--text-primary);font-family:var(--font-mono);font-size:.8rem;line-height:1.5;resize:none;outline:none}.text-chart-textarea::placeholder{color:var(--text-secondary);opacity:.5}.text-chart-content{padding:var(--spacing-sm) var(--spacing-md);font-size:.8rem;line-height:1.6;color:var(--text-primary);overflow-wrap:break-word}.text-chart-content h1,.text-chart-content h2,.text-chart-content h3,.text-chart-content h4,.text-chart-content h5,.text-chart-content h6{margin:.5em 0 .25em;color:var(--text-primary);line-height:1.3}.text-chart-content h1{font-size:1.25rem}.text-chart-content h2{font-size:1.1rem}.text-chart-content h3{font-size:1rem}.text-chart-content h4{font-size:.9rem}.text-chart-content h5{font-size:.85rem}.text-chart-content h6{font-size:.8rem}.text-chart-content p{margin:.35em 0}.text-chart-content strong{font-weight:700;color:var(--text-primary)}.text-chart-content em{font-style:italic}.text-chart-content code{padding:.1em .35em;border-radius:var(--radius-sm);background:var(--bg-tertiary);font-family:var(--font-mono);font-size:.85em}.text-chart-content a{color:var(--accent-blue);text-decoration:none}.text-chart-content a:hover{text-decoration:underline}.text-chart-content ul{margin:.35em 0;padding-left:1.5em}.text-chart-content li{margin:.15em 0}.text-chart-empty{display:flex;align-items:center;justify-content:center;height:100%;padding:var(--spacing-md);color:var(--text-secondary);opacity:.5;font-style:italic;font-size:.8rem}.summary-chart{display:flex;flex-direction:column;height:100%;background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden}.summary-chart-header{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--border-color);flex-shrink:0}.summary-chart-header .chart-drag-handle{font-size:.875rem;margin-right:0}.summary-chart-title{display:flex;align-items:center;gap:6px;font-size:.875rem;font-weight:600;color:var(--text-primary);margin:0;flex:1;min-width:0}.summary-sparkle{display:inline-flex;flex-shrink:0;color:var(--text-primary)}.summary-model{font-size:.7rem;font-weight:400;color:var(--text-secondary);opacity:.7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}.summary-outdated{font-size:.65rem;font-weight:600;color:#f59e0b;background:#f59e0b1f;padding:1px 6px;border-radius:var(--radius-sm);white-space:nowrap;flex-shrink:0}.summary-chart-actions{display:flex;gap:2px;flex-shrink:0;margin-right:24px}.summary-chart-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background:none;cursor:pointer;color:var(--text-secondary);opacity:.5;border-radius:var(--radius-sm);transition:opacity .2s ease,color .2s ease,background-color .2s ease}.summary-chart-btn svg{width:14px;height:14px}.summary-chart-btn:hover{opacity:1;color:var(--accent-blue);background-color:#42a5f51a}.summary-chart-btn:disabled{opacity:.25;cursor:not-allowed}.summary-chart-btn:disabled:hover{color:var(--text-secondary);background-color:transparent}.summary-chart-body{flex:1;min-height:0;overflow:auto}.summary-chart-textarea{width:100%;height:100%;box-sizing:border-box;padding:var(--spacing-sm) var(--spacing-md);border:none;background:transparent;color:var(--text-primary);font-family:var(--font-mono);font-size:.8rem;line-height:1.5;resize:none;outline:none}.summary-chart-textarea::placeholder{color:var(--text-secondary);opacity:.5}.summary-chart-content{padding:var(--spacing-sm) var(--spacing-md);font-size:.8rem;line-height:1.6;color:var(--text-primary);overflow-wrap:break-word}.summary-chart-content h1,.summary-chart-content h2,.summary-chart-content h3,.summary-chart-content h4,.summary-chart-content h5,.summary-chart-content h6{margin:.5em 0 .25em;color:var(--text-primary);line-height:1.3}.summary-chart-content h1{font-size:1.25rem}.summary-chart-content h2{font-size:1.1rem}.summary-chart-content h3{font-size:1rem}.summary-chart-content h4{font-size:.9rem}.summary-chart-content h5{font-size:.85rem}.summary-chart-content h6{font-size:.8rem}.summary-chart-content p{margin:.35em 0}.summary-chart-content strong{font-weight:700;color:var(--text-primary)}.summary-chart-content em{font-style:italic}.summary-chart-content code{padding:.1em .35em;border-radius:var(--radius-sm);background:var(--bg-tertiary);font-family:var(--font-mono);font-size:.85em}.summary-chart-content a{color:var(--accent-blue);text-decoration:none}.summary-chart-content a:hover{text-decoration:underline}.summary-chart-content ul{margin:.35em 0;padding-left:1.5em}.summary-chart-content li{margin:.15em 0}.summary-chart-loading,.summary-chart-error{display:flex;align-items:center;justify-content:center;height:100%;padding:var(--spacing-md);gap:var(--spacing-sm)}.summary-chart-loading{color:var(--text-secondary);opacity:.6;font-size:.8rem;font-style:italic}.summary-chart-error{color:#dc2626;font-size:.8rem;flex-direction:column;gap:var(--spacing-xs, 4px);text-align:center}.summary-chart-link{background:none;border:none;padding:0;margin:0;font:inherit;color:var(--accent-blue);text-decoration:underline;cursor:pointer}.summary-chart-link:hover{text-decoration:none}.summary-chart-empty{display:flex;align-items:center;justify-content:center;height:100%;padding:var(--spacing-md);color:var(--text-secondary);opacity:.5;font-style:italic;font-size:.8rem}.capabilities-chart{display:flex;flex-direction:column;height:100%}.capabilities-chart-body{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto;padding:0 var(--spacing-lg) var(--spacing-md)}.capabilities-chart-empty{color:var(--text-secondary);font-size:.875rem;text-align:center;padding:var(--spacing-lg);opacity:.6}.capability-row{display:flex;justify-content:space-between;align-items:center;flex:1 0 28px;padding:0 10px;margin-bottom:6px;border-radius:4px;color:#fffffff2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.capability-row.status-missing{background:#ef5350}.capability-row.status-manual{background:var(--accent-blue)}.capability-row.status-automated{background:var(--cyber-green)}.capability-name{font-size:.8rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.capability-status-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;flex-shrink:0;margin-left:8px}.capability-detail{font-weight:400;text-transform:none;letter-spacing:0;opacity:.8}.timeline-chart-toolbar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:4px 0 8px}.timeline-chart-toolbar .key-dropdown{position:relative}.timeline-chart-toolbar .key-dropdown-trigger{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;padding:2px 8px;border-radius:var(--radius-sm);border:1px solid var(--border-color);background:var(--surface-color);color:var(--text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;max-width:320px}.timeline-chart-toolbar .key-dropdown-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-chart-toolbar .key-dropdown-caret{color:var(--text-secondary)}.timeline-chart-toolbar .key-dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:20;min-width:220px;max-height:280px;overflow-y:auto;padding:4px;background:var(--bg-secondary, var(--surface-color));border:1px solid var(--border-color);border-radius:var(--radius-sm);box-shadow:0 4px 12px #00000040}.timeline-chart-toolbar .key-dropdown-item{display:flex;align-items:center;gap:8px;padding:4px 6px;font-size:.8rem;color:var(--text-primary);cursor:pointer;border-radius:var(--radius-sm)}.timeline-chart-toolbar .key-dropdown-item:hover{background:#ffffff0d}.timeline-chart-toolbar .key-dropdown-item input[type=checkbox]{margin:0;cursor:pointer}.timeline-chart-toolbar .key-dropdown-swatch{display:inline-block;width:10px;height:10px;border-radius:2px;flex-shrink:0}.timeline-chart-toolbar .key-dropdown-name{flex:1;white-space:nowrap}.timeline-chart-toolbar .range-select{margin-left:auto;font-size:.75rem;padding:2px 6px;border-radius:var(--radius-sm);border:1px solid var(--border-color);background:var(--surface-color);color:var(--text-primary)}.timeline-chart-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);font-size:.85rem}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}.topology-chart{display:flex;flex-direction:column;height:100%;min-height:0}.topology-chart .topology-count{font-size:.75rem;color:var(--text-secondary);font-family:var(--font-mono);opacity:.8}.topology-header-actions{display:flex;align-items:center;gap:var(--spacing-md, 12px)}.topology-auto-arrange-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 14px;border-radius:var(--radius-full, 999px);font-size:.75rem;font-weight:600;font-family:var(--font-mono, monospace);letter-spacing:.02em;border:1.5px solid var(--accent-blue);background:transparent;color:var(--accent-blue);cursor:pointer;transition:background-color .2s ease,color .2s ease,box-shadow .2s ease,transform .2s ease}.topology-auto-arrange-btn:hover:not(:disabled){background:var(--accent-blue);color:#fff;box-shadow:var(--shadow-glow-blue);transform:translateY(-1px)}.topology-auto-arrange-btn:active:not(:disabled){transform:translateY(0);box-shadow:none}.topology-auto-arrange-btn:disabled{opacity:.45;cursor:not-allowed;border-color:var(--border-color);color:var(--text-secondary)}.topology-canvas{flex:1;min-height:0;border-radius:var(--radius-md);overflow:hidden;background:var(--bg-primary, #0b0f14)}.topology-canvas .react-flow__controls button{background:var(--bg-secondary, #11161d);border-color:var(--border-color, #2a2f36);color:var(--text-primary, #e6edf3)}.topology-canvas .react-flow__edge-path{transition:stroke .2s ease}.topology-platform-node{width:180px;padding:12px 16px;border-radius:14px;background:linear-gradient(135deg,#42a5f540,#42a5f50d);border:2px solid var(--accent-blue, #42a5f5);color:var(--text-primary, #e6edf3);box-shadow:0 0 0 4px #42a5f526,0 4px 18px #42a5f540;text-align:center;font-family:var(--font-mono, monospace)}.topology-platform-inner{display:flex;flex-direction:column;align-items:center;gap:4px}.topology-platform-sparkles,.topology-proxy-sparkles{color:#000;flex-shrink:0}[data-theme=dark] .topology-platform-sparkles,[data-theme=dark] .topology-proxy-sparkles{color:#fff}.topology-platform-label{font-size:.85rem;font-weight:700;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.topology-host-node{width:160px;padding:8px 10px;border-radius:10px;background:var(--bg-secondary, #11161d);border:1px solid rgba(0,0,0,.35);color:#fff;box-shadow:0 2px 10px #00000059;font-family:var(--font-mono, monospace);transition:box-shadow .15s ease,transform .15s ease}.topology-host-node:hover{transform:translateY(-1px);box-shadow:0 4px 16px #00000080}.topology-host-node.severity-critical{background:#b91c1c}.topology-host-node.severity-high{background:#c2410c}.topology-host-node.severity-medium{background:#a16207}.topology-host-node.severity-low{background:#1d4ed8}.topology-host-node.severity-none{background:#4b5563}.topology-host-name{display:block;font-size:.78rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.55);text-align:center}.topology-proxy-node{display:flex;align-items:center;gap:8px;min-width:110px;max-width:220px;padding:7px 14px;border-radius:999px;background:var(--bg-secondary);border:1.5px solid var(--accent-blue);color:var(--text-primary);font-family:var(--font-mono, monospace);font-size:.74rem;font-weight:600;box-shadow:var(--shadow-sm);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.topology-proxy-node:hover{transform:translateY(-1px);box-shadow:var(--shadow-glow-blue)}.topology-proxy-node.proxy-status-offline,.topology-proxy-node.proxy-status-unknown{border-color:var(--border-color);opacity:.7}.topology-proxy-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topology-tool-node{display:flex;align-items:center;justify-content:center;min-width:100px;max-width:200px;padding:7px 14px;border-radius:999px;background:#6d28d9;border:1px solid #4c1d95;color:#fff;font-family:var(--font-mono, monospace);font-size:.74rem;font-weight:600;box-shadow:0 2px 8px #6d28d966;transition:background-color .15s ease,box-shadow .15s ease,transform .15s ease;text-shadow:0 1px 2px rgba(0,0,0,.45)}.topology-tool-node:hover{background:#7c3aed;transform:translateY(-1px);box-shadow:0 4px 14px #7c3aed8c}.topology-tool-name{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:2000;animation:modal-fade-in .2s ease}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}.modal-content{position:relative;background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-xl);box-shadow:0 20px 60px #00000080;min-width:400px;max-width:600px;max-height:90vh;overflow-y:auto;animation:modal-slide-up .3s ease}@keyframes modal-slide-up{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg);border-bottom:1px solid var(--border-color);cursor:grab}.modal-header h2{margin:0;font-size:1.5rem;color:var(--text-primary)}.modal-close{background:none;border:none;font-size:2rem;color:var(--text-secondary);cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-full);transition:all .2s ease}.modal-close:hover{background:var(--primary-blue);color:var(--accent-blue);transform:rotate(90deg)}.modal-body{padding:var(--spacing-lg)}.modal-body form{display:flex;flex-direction:column;gap:var(--spacing-md)}.modal-body .form-group{display:flex;flex-direction:column;gap:var(--spacing-xs)}.modal-body label{font-size:.875rem;color:var(--text-secondary);font-weight:500}.modal-body input{padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-mono);font-size:.875rem;transition:all .2s ease}.modal-body input:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 4px #42a5f526;background:var(--bg-secondary)}.modal-body .error-message{color:var(--error-red);font-size:.8rem;margin-top:var(--spacing-xs)}.modal-body .info-message{color:var(--text-secondary);font-size:.875rem;margin:var(--spacing-md) 0;line-height:1.5}.modal-body .form-actions{display:flex;gap:var(--spacing-sm);margin-top:var(--spacing-md)}.modal-body button{flex:1;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-full);font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease;border:none;box-shadow:var(--shadow-sm)}.modal-body .btn-primary{background:linear-gradient(135deg,var(--primary-blue),var(--accent-blue));color:#fff}.modal-body .btn-primary:hover{transform:translateY(-1px);box-shadow:var(--shadow-glow-blue)}.modal-body .btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.modal-body .btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color)}.modal-body .btn-secondary:hover{background:var(--bg-primary);border-color:var(--accent-blue)}.modal-body .btn-danger{background:linear-gradient(135deg,#f44336,#d32f2f);color:#fff}.modal-body .btn-danger:hover{transform:translateY(-1px);box-shadow:0 4px 12px #f4433666}.modal-body .btn-danger:disabled{opacity:.5;cursor:not-allowed;transform:none}.modal-confirm{max-width:500px}.confirm-message{margin:0 0 var(--spacing-lg) 0;color:var(--text-primary);font-size:.9375rem;line-height:1.6}.add-chart-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.add-chart-item{text-align:left;padding:var(--spacing-sm) var(--spacing-md)}.modal-overlay.modal-dragging{-webkit-user-select:none;user-select:none;cursor:grabbing}.modal-overlay.modal-dragging .modal-header{cursor:grabbing}.modal-overlay.modal-resizing{-webkit-user-select:none;user-select:none;cursor:nwse-resize}.modal-resize-handle{position:absolute;right:0;bottom:0;width:20px;height:20px;cursor:nwse-resize;border-right:3px solid var(--border-color);border-bottom:3px solid var(--border-color);border-radius:0 0 var(--radius-xl) 0;opacity:.4;transition:opacity .2s ease}.modal-resize-handle:hover{opacity:.8}.capability-info-dialog{display:flex;flex-direction:column;gap:var(--spacing-md)}.capability-info-field label{display:block;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin-bottom:4px}.capability-info-field>div{font-size:.875rem;color:var(--text-primary)}.capability-info-empty{color:var(--text-secondary);font-style:italic;opacity:.6}.capability-info-tool-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}.capability-info-tool-list li{font-size:.875rem;color:var(--text-primary);padding:4px 8px;background:var(--bg-secondary);border-radius:4px}.platform-status-content{font-size:.8rem;line-height:1.6;color:var(--text-secondary)}.platform-status-content p{margin:0 0 .5rem}.platform-status-content p:last-child{margin-bottom:0}.platform-status-content strong{color:var(--text-primary);font-weight:600}.platform-status-list{margin:0 0 .5rem;padding-left:1.1rem}.platform-status-list li{margin:0 0 .4rem}.platform-status-list li:last-child{margin-bottom:0}.sampledata-modal{max-width:560px}.sampledata{display:flex;flex-direction:column;gap:var(--spacing-md)}.sampledata-prompt{margin:0;font-size:.85rem;color:var(--text-primary)}.sampledata-list{list-style:none;margin:0;padding:0;max-height:50vh;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.sampledata-file{display:block;width:100%;text-align:left;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);padding:var(--spacing-sm) var(--spacing-md);font:inherit;cursor:pointer}.sampledata-file:hover:not(:disabled){border-color:var(--accent-blue)}.sampledata-file:disabled{opacity:.6;cursor:default}.sampledata-status{color:var(--text-secondary);font-size:.85rem}.sampledata-error{color:#dc2626;font-size:.85rem}.sampledata-note{margin:0;font-size:.8rem;color:var(--text-secondary)}.about-page{display:flex;justify-content:center;padding:var(--spacing-lg)}.about-card{max-width:640px;width:100%;padding:2.5rem 2.5rem 2rem;display:flex;flex-direction:column;align-items:center;gap:1.5rem}.about-logo{text-align:center}.about-logo-text{font-family:Space Grotesk,Inter,sans-serif;font-size:2.2rem;font-weight:700;letter-spacing:4px;color:#000}.about-logo-text h1{font-family:inherit;font-size:inherit;font-weight:inherit;letter-spacing:inherit;color:inherit;margin:0;background:none;-webkit-background-clip:unset;-webkit-text-fill-color:unset;background-clip:unset;line-height:normal}.about-logo-accent{color:#00d4ff}.about-logo-sparkles{width:1.2em;height:1.2em;vertical-align:-.15em;margin-left:.1em;color:var(--text-primary)}[data-theme=dark] .about-logo-text{color:#fff}.about-meta{width:100%;display:grid;grid-template-columns:max-content 1fr;column-gap:.5rem;row-gap:.4rem;padding:1rem 1.25rem;background:var(--bg-tertiary);border-radius:var(--radius-md);border:1px solid var(--border-color)}.about-meta-row{display:contents;font-size:.85rem}.about-meta-label{color:var(--text-secondary);font-size:.85rem}.about-meta-value{color:var(--text-primary);font-size:.85rem}.about-description{width:100%;text-align:center}.about-description p{color:var(--text-secondary);font-size:.9rem;line-height:1.6;margin:0 0 1rem}.about-description p:last-child{margin-bottom:0}.about-tagline{color:var(--text-primary)!important;font-weight:500;font-size:1rem!important}.about-footer{font-size:.8rem!important;opacity:.7;margin-top:.5rem!important}.about-buttons{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center;padding-top:.5rem}.about-btn{padding:.6rem 1.25rem;border-radius:var(--radius-md);font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s ease;text-decoration:none;border:1px solid var(--border-color);display:inline-flex;align-items:center}.about-btn-primary{background:linear-gradient(135deg,var(--primary-blue),var(--accent-blue));color:var(--text-primary);border-color:var(--accent-blue)}.about-btn-primary:hover{box-shadow:var(--shadow-glow-blue);transform:translateY(-1px)}.about-btn-secondary{background:var(--bg-secondary);color:var(--text-secondary)}.about-btn-secondary:hover{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--accent-blue)}.about-legal-modal{max-width:720px}.about-legal-content{max-height:70vh;overflow-y:auto;padding:0 .5rem}.about-tools-modal{max-width:720px}.about-tools-content{max-height:70vh;overflow-y:auto}.about-tools-loading,.about-tools-empty{text-align:center;color:var(--text-secondary);padding:var(--spacing-lg);font-size:.875rem}.about-tools-list{display:flex;flex-direction:column;gap:.75rem}.about-tool-card{padding:.875rem 1rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md)}.about-tool-header{display:flex;align-items:center;gap:.75rem}.about-tool-logo{width:40px;height:40px;object-fit:contain;border-radius:4px;flex-shrink:0}.about-tool-title{display:flex;flex-direction:column;min-width:0}.about-tool-name{font-size:.9rem;font-weight:600;color:var(--text-primary)}.about-tool-url{font-size:.75rem;color:var(--accent-blue);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.about-tool-url:hover{text-decoration:underline}.about-tool-description{margin-top:.5rem;font-size:.8rem;line-height:1.5;color:var(--text-secondary)}.about-tool-detected{margin-top:.5rem;font-size:.8rem;color:var(--text-secondary)}.about-tool-capabilities{margin-top:.5rem;display:flex;flex-wrap:wrap;align-items:center;gap:.375rem}.about-tool-capabilities-label{font-size:.75rem;font-weight:600;color:var(--text-secondary);margin-right:.25rem}.about-tool-capabilities-none{font-size:.75rem;color:var(--text-tertiary, var(--text-secondary));font-style:italic}.about-tool-capability-tag{font-size:.7rem;font-weight:500;padding:2px 8px;border-radius:10px;background:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-secondary)}button.about-tool-capability-tag{font-family:inherit;line-height:1.4}.about-tool-capability-tag-clickable{cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.about-tool-capability-tag-clickable:hover,.about-tool-capability-tag-clickable:focus-visible{background:var(--bg-secondary);color:var(--text-primary);border-color:var(--accent-blue, var(--border-color));outline:none}.security-tools-page{width:100%;padding:var(--spacing-lg);box-sizing:border-box;display:flex;flex-direction:column;gap:var(--spacing-md)}.security-tools-filter-bar{width:100%}.source-filter{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-md);background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-md);flex-wrap:wrap}.source-filter .match-toggle{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-primary);border:2px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.7rem;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.source-filter .match-toggle:hover{border-color:var(--accent-blue);color:var(--accent-blue)}.source-filter .match-toggle.match-all{border-color:var(--accent-blue);color:var(--accent-blue);background:#2196f31a}.source-filter .match-toggle.match-any{border-color:#ff9800;color:#fff;background:#ff980099}.source-filter .match-toggle .match-label{text-transform:uppercase;letter-spacing:.5px}.source-filter .filter-rules{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;flex:1}.source-filter .filter-rule{display:flex;align-items:center;gap:var(--spacing-xs)}.source-filter .rule-connector{font-family:var(--font-mono);font-size:.875rem;font-weight:700;color:var(--text-secondary);padding:0 var(--spacing-xs)}.source-filter .filter-select,.source-filter .filter-input{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-primary);font-size:.75rem;background:var(--bg-primary);color:var(--text-primary);transition:border-color .2s ease}.source-filter .filter-select:focus,.source-filter .filter-input:focus{outline:none;border-color:var(--accent-blue)}.source-filter .column-select{min-width:70px}.source-filter .operator-select{min-width:100px}.source-filter .value-input{width:100px}.source-filter .filter-icon-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.source-filter .filter-icon-btn:hover:not(:disabled){border-color:var(--accent-blue);color:var(--accent-blue)}.source-filter .filter-icon-btn:disabled{opacity:.3;cursor:not-allowed}.source-filter .filter-remove-btn:hover:not(:disabled){border-color:var(--cyber-red);color:var(--cyber-red);background:#ff52521a}.source-filter .filter-add-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.source-filter .filter-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.source-filter .filter-clear-btn:hover{border-color:var(--cyber-red);color:var(--cyber-red);background:#ff52521a}@media(max-width:768px){.source-filter,.source-filter .filter-rules{flex-direction:column;align-items:stretch}.source-filter .filter-rule{flex-wrap:wrap}.source-filter .filter-select,.source-filter .filter-input{flex:1;min-width:0}.source-filter .value-input{width:auto;flex:2}}.welcome-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.welcome-card{max-width:680px;width:100%;max-height:90vh;overflow-y:auto;padding:2.5rem;display:flex;flex-direction:column;align-items:center;gap:1.25rem}.welcome-logo{text-align:center}.welcome-logo-text{font-family:Space Grotesk,Inter,sans-serif;font-size:2.2rem;font-weight:700;letter-spacing:4px;color:#000}.welcome-logo-text h1{font-family:inherit;font-size:inherit;font-weight:inherit;letter-spacing:inherit;color:inherit;margin:0;background:none;-webkit-background-clip:unset;-webkit-text-fill-color:unset;background-clip:unset;line-height:normal}.welcome-logo-accent{color:#00d4ff}.welcome-logo-sparkles{width:1.2em;height:1.2em;vertical-align:-.15em;margin-left:.1em;color:var(--text-primary)}[data-theme=dark] .welcome-logo-text{color:#fff}.welcome-tagline{text-align:center;color:var(--text-primary);font-weight:500;font-size:1rem;margin:0}.welcome-description{text-align:center;color:var(--text-secondary);font-size:.9rem;line-height:1.6;margin:0}.welcome-status{width:100%;padding:1rem 1.25rem;background:var(--bg-tertiary);border-radius:var(--radius-md);border:1px solid var(--border-color)}.welcome-status h3{margin:0 0 .75rem;font-size:.9rem;font-weight:600;color:var(--text-primary)}.welcome-status-text{font-size:.8rem;line-height:1.6;color:var(--text-secondary)}.welcome-status-text p{margin:0 0 .5rem}.welcome-status-text p:last-child{margin-bottom:0}.welcome-status-item{padding-left:.5rem}.welcome-status-text a{color:var(--accent-blue);text-decoration:underline}.welcome-status-text a:hover{color:var(--text-primary)}.welcome-buttons{display:flex;flex-direction:column;align-items:center;gap:.75rem;width:100%;padding-top:.5rem}.welcome-review-buttons{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center}.welcome-accept-buttons{display:flex;gap:.75rem;justify-content:center;align-items:center}.welcome-btn{padding:.65rem 1.5rem;border-radius:var(--radius-md);font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s ease;text-decoration:none;border:1px solid var(--border-color);display:inline-flex;align-items:center;justify-content:center}.welcome-btn-primary{background:linear-gradient(135deg,var(--primary-blue),var(--accent-blue));color:var(--text-primary);border-color:var(--accent-blue);font-weight:600;padding:.75rem 2rem;font-size:.9rem}.welcome-btn-primary:hover{box-shadow:var(--shadow-glow-blue);transform:translateY(-1px)}.welcome-btn-primary:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}.welcome-btn-secondary{background:var(--bg-secondary);color:var(--text-secondary);font-size:.8rem}.welcome-btn-secondary:hover{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--accent-blue)}.welcome-btn-decline{background:transparent;border:none;color:var(--text-secondary);font-size:.75rem;opacity:.6;padding:.5rem 1rem}.welcome-btn-decline:hover{opacity:1;color:#ef5350}.welcome-footer{text-align:center;font-size:.75rem;color:var(--text-secondary);opacity:.6;margin:0}.welcome-decline-content{text-align:center;padding:1rem 0}.welcome-decline-content p{color:var(--text-secondary);font-size:.9rem;line-height:1.6;margin:0 0 1.5rem}.welcome-legal-modal{max-width:720px;z-index:1001}.welcome-legal-content{max-height:70vh;overflow-y:auto;padding:0 .5rem}.data-table-container{width:100%;height:100%;flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.data-table-wrapper{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;border-radius:var(--radius-lg);border:2px solid var(--border-color);box-shadow:var(--shadow-lg);position:relative}.data-table-header{flex-shrink:0;overflow-y:auto;scrollbar-gutter:stable}.data-table-scroll{flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable}.data-table-container .table-toolbar{position:relative;display:flex;justify-content:flex-end;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-tertiary);border-bottom:1px solid var(--border-color)}.data-table-container .filtered-count{font-size:.875rem;color:var(--text-secondary);margin-right:var(--spacing-sm)}.data-table-container .column-config-container{position:relative}.data-table-container .column-config-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.data-table-container .column-config-btn:hover{border-color:var(--accent-blue);color:var(--accent-blue);background:#2196f31a}.data-table-container .column-config-dialog{position:fixed;min-width:160px;background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:1000;overflow:hidden}.data-table-container .column-config-header{padding:var(--spacing-sm) var(--spacing-md);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);background:var(--bg-tertiary);border-bottom:1px solid var(--border-color)}.data-table-container .column-config-reset{display:block;width:100%;padding:var(--spacing-xs) var(--spacing-md);background:transparent;border:none;border-bottom:1px solid var(--border-color);color:var(--text-primary);font-size:.85rem;text-align:left;cursor:pointer;transition:background-color .2s ease}.data-table-container .column-config-reset:hover{background:var(--bg-hover)}.data-table-container .column-config-option{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-md);transition:background-color .2s ease}.data-table-container .column-config-option:hover{background:var(--bg-hover)}.data-table-container .column-reorder-btns{display:flex;flex-direction:column;gap:2px}.data-table-container .reorder-btn{display:flex;align-items:center;justify-content:center;width:16px;height:12px;padding:0;border:1px solid var(--border-color);border-radius:2px;background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;transition:all .15s ease}.data-table-container .reorder-btn:hover:not(:disabled){border-color:var(--accent-blue);color:var(--accent-blue);background:#2196f31a}.data-table-container .reorder-btn:disabled{opacity:.3;cursor:not-allowed}.data-table-container .column-config-label{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;flex:1}.data-table-container .column-config-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent-blue);cursor:pointer}.data-table-container .column-config-label input[type=checkbox]:disabled{opacity:.5;cursor:not-allowed}.data-table-container .column-config-label span{font-size:.875rem;color:var(--text-primary)}.data-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--bg-secondary)}.data-table th{padding:1rem;text-align:left;font-weight:600;color:var(--text-secondary);font-size:.875rem;text-transform:uppercase;letter-spacing:.05em;background:var(--bg-tertiary);border-bottom:2px solid var(--border-color)}.data-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .2s ease,background-color .2s ease}.data-table th.sortable:hover{color:var(--accent-blue);background:#2196f30d}.data-table-container .sort-icon{margin-left:.5rem;font-size:.75rem;color:var(--text-tertiary);opacity:.5;transition:opacity .2s ease,color .2s ease}.data-table-container .sort-icon.active{opacity:1;color:var(--accent-blue)}.data-table th.resizable{position:relative;overflow:hidden}.data-table th .th-content{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px}.data-table-container .resize-handle{position:absolute;top:0;right:0;width:6px;height:100%;cursor:col-resize;background:transparent;transition:background-color .2s ease;z-index:1}.data-table-container .resize-handle:hover,.data-table-container .resize-handle:active{background:var(--accent-blue)}.data-table-container .resize-handle:after{content:"";position:absolute;top:25%;right:2px;width:2px;height:50%;background:var(--border-color);border-radius:1px;transition:background-color .2s ease}.data-table-container .resize-handle:hover:after,.data-table-container .resize-handle:active:after{background:var(--accent-blue)}.data-table tbody tr{border-bottom:1px solid var(--border-color);transition:background-color .2s ease}.data-table tbody tr:hover{background:var(--bg-hover)}.data-table tbody tr:last-child{border-bottom:none}.data-table td{padding:1rem;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table tbody tr.selectable{cursor:pointer}.data-table tbody tr.selected{background:#2196f326}.data-table tbody tr.selected:hover{background:#2196f333}.data-table-container .selection-actions{display:flex;align-items:center;gap:var(--spacing-sm);margin-right:auto;padding-right:var(--spacing-md)}.data-table-container .selection-count{font-size:.875rem;color:var(--text-secondary);font-weight:500}.data-table-container .delete-selected-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--accent-blue);border-radius:var(--radius-sm);background:transparent;color:var(--accent-blue);cursor:pointer;transition:all .2s ease}.data-table-container .delete-selected-btn:hover:not(:disabled){background:#2196f31a}.data-table-container .delete-selected-btn:disabled{opacity:.5;cursor:not-allowed}.data-table-container .details-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--accent-blue);border-radius:var(--radius-sm);background:transparent;color:var(--accent-blue);cursor:pointer;transition:all .2s ease}.data-table-container .details-btn:hover{background:#2196f31a}.data-table-container .edit-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--accent-blue);border-radius:var(--radius-sm);background:transparent;color:var(--accent-blue);cursor:pointer;transition:all .2s ease}.data-table-container .edit-btn:hover{background:#2196f31a}.data-table-container .act-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid #22c55e;border-radius:var(--radius-sm);background:transparent;color:#22c55e;cursor:pointer;transition:all .2s ease}.data-table-container .act-btn:hover{background:#22c55e1a}.data-table-container .details-dialog-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.data-table-container .details-dialog{position:relative;background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:600px;width:90%;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}.data-table-container .details-dialog-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);background:var(--bg-tertiary);border-bottom:1px solid var(--border-color);cursor:grab}.data-table-container .details-dialog-header h3{margin:0;font-size:1.125rem;font-weight:600;color:var(--text-primary)}.data-table-container .details-dialog-close{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.data-table-container .details-dialog-close:hover{background:var(--bg-hover);color:var(--text-primary)}.data-table-container .details-dialog-content{padding:var(--spacing-lg);overflow-y:auto;flex:1}.data-table-container .details-row{display:flex;flex-wrap:wrap;padding:var(--spacing-sm) 0;border-bottom:1px solid var(--border-color);gap:var(--spacing-xs)}.data-table-container .details-row:last-child{border-bottom:none}.data-table-container .details-label{flex:0 0 120px;font-weight:600;color:var(--text-secondary);font-size:.875rem;text-transform:uppercase;letter-spacing:.03em}.data-table-container .details-value{flex:1;min-width:200px;color:var(--text-primary);word-break:break-word;overflow-wrap:break-word;white-space:normal}.data-table-container .details-value .tooltip-wrapper,.data-table-container .details-value span{display:inline;overflow:visible;text-overflow:unset;white-space:normal;word-break:break-word;overflow-wrap:break-word}.data-table-container .details-dialog-overlay.modal-dragging{-webkit-user-select:none;user-select:none;cursor:grabbing}.data-table-container .details-dialog-overlay.modal-dragging .details-dialog-header{cursor:grabbing}.data-table-container .details-dialog-overlay.modal-resizing{-webkit-user-select:none;user-select:none;cursor:nwse-resize}.data-table-container .delete-message{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);font-size:.875rem;border-radius:var(--radius-sm);background:#22c55e1a;border:1px solid rgba(34,197,94,.3)}.data-table-container .delete-message.has-skipped{background:#eab3081a;border:1px solid rgba(234,179,8,.3)}.data-table-container .deleted-count{color:#22c55e;font-weight:500}.data-table-container .skipped-count{color:#ca8a04;font-weight:500}.data-table-container .severity-badge{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem .75rem;border-radius:var(--radius-full);font-weight:600;font-size:.875rem;white-space:nowrap;box-shadow:var(--shadow-sm)}.data-table-container .severity-score{font-family:Courier New,monospace;opacity:.9}.data-table-container .severity-badge.severity-critical{background:#dc262633;color:#ef4444;border:1px solid rgba(220,38,38,.3)}.data-table-container .severity-badge.severity-high{background:#ea580c33;color:#f97316;border:1px solid rgba(234,88,12,.3)}.data-table-container .severity-badge.severity-medium{background:#eab30833;color:#eab308;border:1px solid rgba(234,179,8,.3)}.data-table-container .severity-badge.severity-low{background:#3b82f633;color:#3b82f6;border:1px solid rgba(59,130,246,.3)}.data-table-container .severity-badge.severity-info{background:#6b728033;color:#9ca3af;border:1px solid rgba(107,114,128,.3)}.data-table tbody tr.severity-critical{border-left:3px solid #ef4444}.data-table tbody tr.severity-high{border-left:3px solid #f97316}.data-table tbody tr.severity-medium{border-left:3px solid #eab308}.data-table tbody tr.severity-low{border-left:3px solid #3b82f6}.data-table tbody tr.severity-info{border-left:3px solid #9ca3af}.data-table-container .empty-state{text-align:center;padding:var(--spacing-xl) var(--spacing-lg);color:var(--text-secondary)}.data-table-container .empty-icon{color:var(--text-secondary);margin-bottom:var(--spacing-lg)}.data-table-container .empty-state h3{font-size:1.25rem;margin-bottom:var(--spacing-sm);text-transform:none;font-weight:600}.data-table-container .empty-state p{font-size:.875rem;opacity:.7}.data-table-container .btn-create-first{margin-top:var(--spacing-lg);padding:var(--spacing-sm) var(--spacing-xl);background:var(--accent-blue);color:#fff;border:2px solid var(--dark-blue);border-radius:var(--radius-full);font-size:.875rem;font-weight:600;letter-spacing:.3px;cursor:pointer;transition:all .2s ease;box-shadow:var(--shadow-sm)}.data-table-container .btn-create-first:hover{background:var(--dark-blue);box-shadow:var(--shadow-glow-blue);transform:translateY(-1px)}@media(max-width:768px){.data-table{font-size:.875rem}.data-table th,.data-table td{padding:.75rem .5rem}}.source-name{display:flex;align-items:center;gap:var(--spacing-sm);min-width:0}.source-icon{flex-shrink:0;color:var(--accent-blue);opacity:.7}.source-filename-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);font-size:.875rem}.source-size,.source-status,.source-type,.source-date{color:var(--text-secondary)}.source-import-notes{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sources-table .cell-importNotes .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-version,.source-checksum{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-empty{color:var(--text-secondary);opacity:.5}.sources-table tr.status-row-analysing td{background:#ffeb3b08}.sources-table tr.status-row-failed td{background:#ff525208}.sources-table tr.selected.status-row-analysing td{background:#ffeb3b14}.sources-table tr.selected.status-row-failed td{background:#ff525214}.sources-table .cell-filename{overflow:hidden}.sources-table .cell-createdAt{white-space:nowrap}.sources-table .cell-importNotes,.sources-table .cell-analyserVersion,.sources-table .cell-checksum{overflow:hidden}.source-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-md);border-bottom:2px solid var(--border-color)}.source-list-header h2{font-size:1.5rem;margin:0}.source-count{font-family:var(--font-mono);font-size:1.5rem;font-weight:700;display:flex;align-items:baseline;gap:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-md);background:var(--primary-blue);border:2px solid var(--medium-blue);border-radius:var(--radius-md);transition:all .3s ease}.source-count.near-limit{background:var(--medium-yellow);border-color:var(--dark-yellow);animation:pulse-warning 2s ease-in-out infinite}.source-count.at-limit{background:#ff52521a;border-color:var(--cyber-red);color:var(--cyber-red);animation:pulse-danger 1s ease-in-out infinite}@keyframes pulse-danger{0%,to{box-shadow:0 0 #ff525266}50%{box-shadow:0 0 20px #ff525299}}.source-count.at-limit .count-current{color:var(--cyber-red)}.count-separator{opacity:.5}.count-max{color:var(--text-secondary);font-size:1.25rem}.asset-filter{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-md);background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-md);flex-wrap:wrap}.asset-filter .match-toggle{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-primary);border:2px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.7rem;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.asset-filter .match-toggle:hover{border-color:var(--accent-blue);color:var(--accent-blue)}.asset-filter .match-toggle.match-all{border-color:var(--accent-blue);color:var(--accent-blue);background:#2196f31a}.asset-filter .match-toggle.match-any{border-color:#ff9800;color:#fff;background:#ff980099}.asset-filter .match-toggle .match-label{text-transform:uppercase;letter-spacing:.5px}.asset-filter .filter-rules{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;flex:1}.asset-filter .filter-rule{display:flex;align-items:center;gap:var(--spacing-xs)}.asset-filter .rule-connector{font-family:var(--font-mono);font-size:.875rem;font-weight:700;color:var(--text-secondary);padding:0 var(--spacing-xs)}.asset-filter .filter-select,.asset-filter .filter-input{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-primary);font-size:.75rem;background:var(--bg-primary);color:var(--text-primary);transition:border-color .2s ease}.asset-filter .filter-select:focus,.asset-filter .filter-input:focus{outline:none;border-color:var(--accent-blue)}.asset-filter .column-select{min-width:80px}.asset-filter .operator-select{min-width:50px}.asset-filter .value-input{width:80px}.asset-filter .filter-icon-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.asset-filter .filter-icon-btn:hover:not(:disabled){border-color:var(--accent-blue);color:var(--accent-blue)}.asset-filter .filter-icon-btn:disabled{opacity:.3;cursor:not-allowed}.asset-filter .filter-remove-btn:hover:not(:disabled){border-color:var(--cyber-red);color:var(--cyber-red);background:#ff52521a}.asset-filter .filter-add-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.asset-filter .filter-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.asset-filter .filter-clear-btn:hover{border-color:var(--cyber-red);color:var(--cyber-red);background:#ff52521a}@media(max-width:768px){.asset-filter,.asset-filter .filter-rules{flex-direction:column;align-items:stretch}.asset-filter .filter-rule{flex-wrap:wrap}.asset-filter .filter-select,.asset-filter .filter-input{flex:1;min-width:0}.asset-filter .value-input{width:auto;flex:2}}.asset-name{font-weight:500}.asset-type,.asset-source{font-size:.9rem;color:var(--text-secondary)}.asset-score{font-family:Courier New,monospace;font-weight:600;color:var(--text-primary)}.cell-lastSeen{color:var(--text-secondary);font-size:.875rem;white-space:nowrap}.asset-empty{color:var(--text-secondary);opacity:.5}.asset-average-score{font-size:.8rem;color:var(--text-secondary);font-weight:500;white-space:nowrap;margin-left:auto;padding:0 var(--spacing-sm)}.action-filter{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-md);background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-md);flex-wrap:wrap}.action-filter .match-toggle{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-primary);border:2px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.7rem;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.action-filter .match-toggle:hover{border-color:var(--accent-blue);color:var(--accent-blue)}.action-filter .match-toggle.match-all{border-color:var(--accent-blue);color:var(--accent-blue);background:#2196f31a}.action-filter .match-toggle.match-any{border-color:#ff9800;color:#fff;background:#ff980099}.action-filter .match-toggle .match-label{text-transform:uppercase;letter-spacing:.5px}.action-filter .filter-rules{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;flex:1}.action-filter .filter-rule{display:flex;align-items:center;gap:var(--spacing-xs)}.action-filter .rule-connector{font-family:var(--font-mono);font-size:.875rem;font-weight:700;color:var(--text-secondary);padding:0 var(--spacing-xs)}.action-filter .filter-select,.action-filter .filter-input{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-primary);font-size:.75rem;background:var(--bg-primary);color:var(--text-primary);transition:border-color .2s ease}.action-filter .filter-select:focus,.action-filter .filter-input:focus{outline:none;border-color:var(--accent-blue)}.action-filter .column-select{min-width:90px}.action-filter .operator-select{min-width:100px}.action-filter .value-input{width:80px}.action-filter .value-input[type=number]::-webkit-outer-spin-button,.action-filter .value-input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.action-filter .value-input[type=number]{-moz-appearance:textfield}.action-filter .filter-icon-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.action-filter .filter-icon-btn:hover:not(:disabled){border-color:var(--accent-blue);color:var(--accent-blue)}.action-filter .filter-icon-btn:disabled{opacity:.3;cursor:not-allowed}.action-filter .filter-remove-btn:hover:not(:disabled){border-color:var(--cyber-red);color:var(--cyber-red);background:#ff52521a}.action-filter .filter-add-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.action-filter .filter-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.action-filter .filter-clear-btn:hover{border-color:var(--cyber-red);color:var(--cyber-red);background:#ff52521a}@media(max-width:768px){.action-filter,.action-filter .filter-rules{flex-direction:column;align-items:stretch}.action-filter .filter-rule{flex-wrap:wrap}.action-filter .filter-select,.action-filter .filter-input{flex:1;min-width:0}.action-filter .value-input{width:auto;flex:2}}.user-action-dialog-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:2000;animation:user-action-fade-in .2s ease}@keyframes user-action-fade-in{0%{opacity:0}to{opacity:1}}.user-action-dialog{position:relative;background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-xl);box-shadow:0 20px 60px #00000080;min-width:400px;max-width:600px;max-height:90vh;overflow-y:auto;animation:user-action-slide-up .3s ease}@keyframes user-action-slide-up{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}.user-action-dialog-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg);border-bottom:1px solid var(--border-color);cursor:grab}.user-action-dialog-header h2{margin:0;font-size:1.5rem;color:var(--text-primary)}.user-action-dialog-header-right{display:flex;align-items:center;gap:var(--spacing-md)}.user-action-cost-summary{font-size:.8rem;color:var(--text-secondary);font-weight:500;white-space:nowrap}.user-action-counter{font-size:.875rem;color:var(--text-secondary);font-weight:500;white-space:nowrap}.user-action-nav-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:2px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all .15s ease}.user-action-nav-btn:hover:not(:disabled){background:var(--bg-tertiary);color:var(--text-primary)}.user-action-nav-btn:disabled{opacity:.3;cursor:default}.user-action-dialog-close{background:none;border:none;font-size:2rem;color:var(--text-secondary);cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-full);transition:all .2s ease}.user-action-dialog-close:hover{background:var(--primary-blue);color:var(--accent-blue);transform:rotate(90deg)}.user-action-dialog-body{padding:var(--spacing-lg)}.user-action-title{font-size:1.1rem;font-weight:700;color:var(--text-primary);margin-bottom:var(--spacing-sm)}.user-action-description{font-size:.95rem;color:var(--text-primary);white-space:pre-wrap;word-break:break-word;line-height:1.5;margin-bottom:var(--spacing-md)}.user-action-actions{display:flex;flex-direction:column;gap:var(--spacing-sm);margin-top:var(--spacing-lg);padding-top:var(--spacing-md);border-top:1px solid var(--border-color)}.user-action-actions button{width:100%;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-full);font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease;border:none;box-shadow:var(--shadow-sm)}.user-action-actions .btn-primary{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff}.user-action-actions .btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px #22c55e66}.user-action-actions .btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color)}.user-action-actions .btn-secondary:hover{background:var(--bg-primary);border-color:var(--accent-blue)}.no-actions-message{text-align:center;color:var(--text-secondary);font-style:italic;padding:var(--spacing-md);margin:0 0 var(--spacing-sm) 0}.user-action-note-field{margin-bottom:var(--spacing-md)}.user-action-note-input{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-mono);font-size:.875rem;resize:vertical;min-height:80px;transition:all .2s ease}.user-action-note-input:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 4px #42a5f526;background:var(--bg-secondary)}.user-action-note-input::placeholder{color:var(--text-tertiary);font-style:italic}.user-action-dialog-overlay.modal-dragging{-webkit-user-select:none;user-select:none;cursor:grabbing}.user-action-dialog-overlay.modal-dragging .user-action-dialog-header{cursor:grabbing}.user-action-dialog-overlay.modal-resizing{-webkit-user-select:none;user-select:none;cursor:nwse-resize}.action-options-list{display:flex;flex-direction:column;gap:.5rem}.btn-action-option{display:flex;flex-direction:column;gap:.4rem;width:100%;padding:.7rem .9rem;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:#ffffff08;color:var(--text-primary);cursor:pointer;font-size:.85rem;text-align:left;transition:all .15s ease}.btn-action-option.type-execution:hover{border-color:var(--cyber-green);background:#00e6760f}.btn-action-option.type-dialog:hover{border-color:var(--accent-blue);background:#2196f30f}.btn-action-option.type-action:hover{border-color:#ff9800;background:#ff98000f}.action-option-btn-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.action-option-type-badge{display:inline-flex;align-items:center;gap:.3rem;font-family:var(--font-mono);font-size:.7rem;font-weight:600;padding:2px 6px;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.03em}.action-option-type-badge.type-execution{color:var(--cyber-green);background:#00e6761a}.action-option-type-badge.type-dialog{color:var(--accent-blue);background:#2196f31a}.action-option-type-badge.type-action{color:#ff9800;background:#ff98001a}.action-option-btn-title{flex:1;font-weight:600;font-size:.85rem;color:var(--text-primary)}.action-option-btn-message{color:var(--text-secondary);font-size:.82rem;line-height:1.4}.btn-action-option:hover .action-option-btn-message{color:var(--text-primary)}.action-option-auto-checkbox{display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--text-secondary);cursor:pointer;margin-top:4px}.action-option-auto-checkbox input[type=checkbox]{cursor:pointer;margin:0}.action-option-btn-meta{flex-shrink:0;font-family:var(--font-mono);font-size:.7rem;color:var(--text-secondary);opacity:.7}.btn-skip{margin-top:.25rem;opacity:.7}.btn-skip:hover{opacity:1}.btn-delete-action{opacity:.7;color:var(--accent-red, #dc2626)}.btn-delete-action:hover{opacity:1;border-color:var(--accent-red, #dc2626)!important}.action-title-cell,.action-description-cell,.action-trigger-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action-title-cell{font-weight:500}.action-description-cell,.action-trigger-cell{color:var(--text-secondary)}.actions-table .cell-title .tooltip-wrapper,.actions-table .cell-description .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action-type,.action-status{color:var(--text-secondary)}.action-priority{color:var(--text-primary)}.actions-table tbody tr.priority-row-critical{border-left:3px solid #ef4444}.actions-table tbody tr.priority-row-high{border-left:3px solid #f97316}.actions-table tbody tr.priority-row-medium{border-left:3px solid #eab308}.actions-table tbody tr.priority-row-low{border-left:3px solid #3b82f6}.actions-table tbody tr.priority-row-info{border-left:3px solid #9ca3af}.action-date,.action-cost,.action-time,.action-assignee,.action-issuer{color:var(--text-secondary)}.action-empty{color:var(--text-secondary);opacity:.5}.action-cost-summary{font-size:.8rem;color:var(--text-secondary);font-weight:500;white-space:nowrap;margin-left:auto;padding:0 var(--spacing-sm)}.actions-table .cell-createdAt,.actions-table .cell-modifiedAt{white-space:nowrap}.actions-table .cell-title,.actions-table .cell-description,.actions-table .cell-trigger{overflow:hidden}.action-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-md);border-bottom:2px solid var(--border-color)}.action-list-header h2{font-size:1.5rem;margin:0}.action-count{font-family:var(--font-mono);font-size:1.5rem;font-weight:700;display:flex;align-items:baseline;gap:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-md);background:var(--primary-blue);border:2px solid var(--medium-blue);border-radius:var(--radius-md);transition:all .3s ease}.count-current{color:var(--accent-blue)}.count-label{color:var(--text-secondary);font-size:1rem}.action-list{min-height:200px}.vulnerability-filter{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-md);background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-md);flex-wrap:wrap}.match-toggle{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-primary);border:2px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.7rem;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.match-toggle:hover{border-color:var(--accent-blue);color:var(--accent-blue)}.match-toggle.match-all{border-color:var(--accent-blue);color:var(--accent-blue);background:#2196f31a}.match-toggle.match-any{border-color:#ff9800;color:#fff;background:#ff980099}.match-toggle .match-label{text-transform:uppercase;letter-spacing:.5px}.filter-rules{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;flex:1}.filter-rule{display:flex;align-items:center;gap:var(--spacing-xs)}.rule-connector{font-family:var(--font-mono);font-size:.875rem;font-weight:700;color:var(--text-secondary);padding:0 var(--spacing-xs)}.filter-select,.filter-input{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-primary);font-size:.75rem;background:var(--bg-primary);color:var(--text-primary);transition:border-color .2s ease}.filter-select:focus,.filter-input:focus{outline:none;border-color:var(--accent-blue)}.column-select{min-width:80px}.operator-select{min-width:50px}.value-input{width:80px}.filter-icon-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.filter-icon-btn:hover:not(:disabled){border-color:var(--accent-blue);color:var(--accent-blue)}.filter-icon-btn:disabled{opacity:.3;cursor:not-allowed}.filter-remove-btn:hover:not(:disabled){border-color:var(--cyber-red);color:var(--cyber-red);background:#ff52521a}.filter-add-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.filter-actions{display:flex;gap:var(--spacing-xs);margin-left:auto;flex-shrink:0}.filter-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.filter-apply-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.filter-clear-btn:hover{border-color:var(--cyber-red);color:var(--cyber-red);background:#ff52521a}@media(max-width:768px){.vulnerability-filter,.filter-rules{flex-direction:column;align-items:stretch}.filter-rule{flex-wrap:wrap}.filter-select,.filter-input{flex:1;min-width:0}.value-input{width:auto;flex:2}.filter-actions{margin-left:0;justify-content:flex-end}}.vuln-name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vulnerabilities-table .cell-name .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vuln-host,.vuln-port,.vuln-source{color:var(--text-secondary)}.detection-filter{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-md);background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-md);flex-wrap:wrap}.detection-filter .match-toggle{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-primary);border:2px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.7rem;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.detection-filter .match-toggle:hover{border-color:var(--accent-blue);color:var(--accent-blue)}.detection-filter .match-toggle.match-all{border-color:var(--accent-blue);color:var(--accent-blue);background:#2196f31a}.detection-filter .match-toggle.match-any{border-color:#ff9800;color:#fff;background:#ff980099}.detection-filter .match-toggle .match-label{text-transform:uppercase;letter-spacing:.5px}.detection-filter .filter-rules{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;flex:1}.detection-filter .filter-rule{display:flex;align-items:center;gap:var(--spacing-xs)}.detection-filter .rule-connector{font-family:var(--font-mono);font-size:.875rem;font-weight:700;color:var(--text-secondary);padding:0 var(--spacing-xs)}.detection-filter .filter-select,.detection-filter .filter-input{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-primary);font-size:.75rem;background:var(--bg-primary);color:var(--text-primary);transition:border-color .2s ease}.detection-filter .filter-select:focus,.detection-filter .filter-input:focus{outline:none;border-color:var(--accent-blue)}.detection-filter .column-select{min-width:80px}.detection-filter .operator-select{min-width:50px}.detection-filter .value-input{width:80px}.detection-filter .filter-icon-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.detection-filter .filter-icon-btn:hover:not(:disabled){border-color:var(--accent-blue);color:var(--accent-blue)}.detection-filter .filter-icon-btn:disabled{opacity:.3;cursor:not-allowed}.detection-filter .filter-remove-btn:hover:not(:disabled){border-color:var(--cyber-red);color:var(--cyber-red);background:#ff52521a}.detection-filter .filter-add-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.detection-filter .filter-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.detection-filter .filter-clear-btn:hover{border-color:var(--cyber-red);color:var(--cyber-red);background:#ff52521a}@media(max-width:768px){.detection-filter,.detection-filter .filter-rules{flex-direction:column;align-items:stretch}.detection-filter .filter-rule{flex-wrap:wrap}.detection-filter .filter-select,.detection-filter .filter-input{flex:1;min-width:0}.detection-filter .value-input{width:auto;flex:2}}.detection-name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detections-table .cell-name .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detection-host,.detection-port,.detection-source{color:var(--text-secondary)}.cell-lastSeen{color:var(--text-secondary);white-space:nowrap}.admin-header{margin-bottom:var(--spacing-xl)}.admin-header h2{margin:0 0 var(--spacing-xs) 0;font-size:1.75rem;color:var(--text-primary)}.admin-subtitle{margin:0;font-size:.875rem;color:var(--text-secondary);font-family:var(--font-mono)}.user-list{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:hidden}.user-list-header{display:grid;grid-template-columns:50px minmax(120px,150px) minmax(150px,200px) 90px 80px 150px 110px 180px;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);background:var(--bg-tertiary);border-bottom:1px solid var(--border-color);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary)}.user-item{display:grid;grid-template-columns:50px minmax(120px,150px) minmax(150px,200px) 90px 80px 150px 110px 180px;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--border-color);align-items:center;transition:background .2s ease}.user-item:last-child{border-bottom:none}.user-item:hover{background:var(--bg-tertiary)}.user-item.editing{background:#2196f30d}.user-col-id,.user-col-username,.user-col-email,.user-col-role,.user-col-verified,.user-col-limits,.user-col-created,.user-col-actions{font-size:.875rem;font-family:var(--font-mono);color:var(--text-primary);min-width:0}.user-col-id{color:var(--text-secondary)}.user-col-username{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-col-email{color:var(--text-secondary);overflow:hidden}.user-col-created{white-space:nowrap}.email-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;cursor:help}.user-col-verified{display:flex;align-items:center}.user-col-limits{display:flex;flex-direction:column;gap:2px}.limits-display{display:flex;flex-direction:column;gap:2px;font-size:.75rem}.limits-display span{color:var(--text-secondary)}.limits-edit{display:flex;flex-direction:column;gap:var(--spacing-xs)}.limit-field{display:flex;align-items:center;gap:var(--spacing-xs)}.limit-field label{font-size:.7rem;color:var(--text-secondary);white-space:nowrap;min-width:90px}.limit-field input{width:70px!important;padding:2px var(--spacing-xs)!important;font-size:.75rem!important}.user-item input{width:100%;padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-mono);font-size:.875rem}.user-item input:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 2px #2196f31a}.role-badge{display:inline-block;padding:2px var(--spacing-sm);border-radius:var(--radius-sm);font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.role-badge.role-admin{background:#ffc10733;color:#ffc107;border:1px solid rgba(255,193,7,.4)}.role-badge.role-registered{background:#2196f333;color:var(--accent-blue);border:1px solid rgba(33,150,243,.4)}.role-badge.role-anonymous{background:#9e9e9e33;color:#9e9e9e;border:1px solid rgba(158,158,158,.4)}.verified-badge{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;transition:all .2s ease}.verified-badge.verified{background:#4caf5026;color:var(--success-green, #4caf50)}.verified-badge.unverified{background:#f4433626;color:var(--error-red)}.verified-checkbox{display:flex;align-items:center;gap:var(--spacing-xs);cursor:pointer;font-size:.75rem}.verified-checkbox input[type=checkbox]{width:auto;cursor:pointer;accent-color:var(--success-green, #4caf50)}.verified-checkbox span{color:var(--text-secondary);-webkit-user-select:none;user-select:none}.user-col-actions{display:flex;gap:var(--spacing-xs)}.user-col-actions button{padding:4px var(--spacing-sm);border-radius:var(--radius-sm);font-size:.75rem;font-weight:500;cursor:pointer;transition:all .2s ease;border:none;font-family:var(--font-mono)}.btn-edit,.btn-save{background:linear-gradient(135deg,var(--primary-blue),var(--accent-blue));color:#fff}.btn-edit:hover,.btn-save:hover{transform:translateY(-1px);box-shadow:0 2px 8px #2196f34d}.btn-save:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-cancel{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color)}.btn-cancel:hover{background:var(--bg-primary);border-color:var(--accent-blue)}.btn-cancel:disabled{opacity:.5;cursor:not-allowed}.btn-delete{background:#f443361a;color:var(--error-red);border:1px solid rgba(244,67,54,.3)}.btn-delete:hover{background:#f4433633;border-color:var(--error-red)}.btn-retry{padding:var(--spacing-sm) var(--spacing-lg);background:linear-gradient(135deg,var(--primary-blue),var(--accent-blue));color:#fff;border:none;border-radius:var(--radius-sm);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-retry:hover{transform:translateY(-1px);box-shadow:var(--shadow-glow-blue)}.user-item-error{grid-column:1 / -1;padding:var(--spacing-xs) var(--spacing-sm);background:#f443361a;border:1px solid rgba(244,67,54,.3);border-radius:var(--radius-sm);color:var(--error-red);font-size:.75rem;margin-top:var(--spacing-xs)}.user-list-empty{padding:var(--spacing-xl);text-align:center;color:var(--text-secondary)}.error-state{padding:var(--spacing-xl);text-align:center}.error-state p{color:var(--error-red);margin-bottom:var(--spacing-md)}.edit-user-modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.edit-user-modal{position:relative;background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:400px;max-width:90%;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.edit-user-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);background:var(--bg-tertiary);border-bottom:1px solid var(--border-color);cursor:grab}.edit-user-modal-header h3{margin:0;font-size:1.125rem;font-weight:600;color:var(--text-primary)}.edit-user-modal-close{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.edit-user-modal-close:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.edit-user-modal-close:disabled{opacity:.5;cursor:not-allowed}.edit-user-modal-content{padding:var(--spacing-lg);overflow-y:auto;flex:1}.edit-user-field{margin-bottom:var(--spacing-md)}.edit-user-field label{display:block;font-size:.875rem;font-weight:500;color:var(--text-secondary);margin-bottom:var(--spacing-xs)}.edit-user-field input[type=text],.edit-user-field input[type=email],.edit-user-field input[type=number]{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-mono);font-size:.875rem;transition:border-color .2s ease,box-shadow .2s ease}.edit-user-field input:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 2px #2196f31a}.edit-user-field input:disabled{opacity:.5;cursor:not-allowed}.edit-user-field .checkbox-label{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;font-size:.875rem}.edit-user-field .checkbox-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent-blue);cursor:pointer}.edit-user-field .checkbox-label span{color:var(--text-primary)}.edit-user-error{padding:var(--spacing-sm) var(--spacing-md);background:#f443361a;border:1px solid rgba(244,67,54,.3);border-radius:var(--radius-sm);color:var(--error-red);font-size:.875rem;margin-top:var(--spacing-sm)}.edit-user-modal-footer{display:flex;justify-content:flex-end;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-lg);background:var(--bg-tertiary);border-top:1px solid var(--border-color)}.edit-user-modal-footer .btn-cancel,.edit-user-modal-footer .btn-save{padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-sm);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease}.users-container .user-id{color:var(--text-secondary);font-family:var(--font-mono)}.users-container .user-username,.users-container .user-email{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.users-container .user-email{color:var(--text-secondary)}.users-container .user-date{white-space:nowrap;color:var(--text-secondary)}.edit-user-modal-overlay.modal-dragging{-webkit-user-select:none;user-select:none;cursor:grabbing}.edit-user-modal-overlay.modal-dragging .edit-user-modal-header{cursor:grabbing}.edit-user-modal-overlay.modal-resizing{-webkit-user-select:none;user-select:none;cursor:nwse-resize}.edit-group-table{width:100%;border-collapse:collapse;font-size:.85rem;border:1px solid var(--border-color);border-radius:var(--radius-sm);overflow:hidden}.edit-group-table th{text-align:left;padding:var(--spacing-xs) var(--spacing-sm);color:var(--text-secondary);font-weight:500;font-size:.8rem;background:var(--bg-tertiary);border-bottom:1px solid var(--border-color)}.edit-group-table td{padding:var(--spacing-xs) var(--spacing-sm);border-bottom:1px solid var(--border-color);color:var(--text-primary)}.edit-group-table tbody tr:last-child td{border-bottom:none}.edit-group-table-secondary{color:var(--text-secondary)!important}.edit-group-table-action{text-align:right}.edit-group-remove-btn{padding:2px 8px;font-size:.75rem;font-weight:500;border:1px solid rgba(244,67,54,.3);border-radius:var(--radius-sm);background:transparent;color:var(--error-red);cursor:pointer;transition:all .2s ease}.edit-group-remove-btn:hover{background:#f443361a;border-color:#f4433680}.edit-group-table-hint{color:var(--text-secondary);font-size:.85rem;padding:var(--spacing-xs) 0}.user-filter{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-md);background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-md);flex-wrap:wrap}.user-filter .match-toggle{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-primary);border:2px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.7rem;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.user-filter .match-toggle:hover{border-color:var(--accent-blue);color:var(--accent-blue)}.user-filter .match-toggle.match-all{border-color:var(--accent-blue);color:var(--accent-blue);background:#2196f31a}.user-filter .match-toggle.match-any{border-color:#ff9800;color:#fff;background:#ff980099}.user-filter .match-toggle .match-label{text-transform:uppercase;letter-spacing:.5px}.user-filter .filter-rules{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;flex:1}.user-filter .filter-rule{display:flex;align-items:center;gap:var(--spacing-xs)}.user-filter .rule-connector{font-family:var(--font-mono);font-size:.875rem;font-weight:700;color:var(--text-secondary);padding:0 var(--spacing-xs)}.user-filter .filter-select,.user-filter .filter-input{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-primary);font-size:.75rem;background:var(--bg-primary);color:var(--text-primary);transition:border-color .2s ease}.user-filter .filter-select:focus,.user-filter .filter-input:focus{outline:none;border-color:var(--accent-blue)}.user-filter .column-select{min-width:90px}.user-filter .operator-select{min-width:100px}.user-filter .value-input{width:120px}.user-filter .filter-icon-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.user-filter .filter-icon-btn:hover:not(:disabled){border-color:var(--accent-blue);color:var(--accent-blue)}.user-filter .filter-icon-btn:disabled{opacity:.3;cursor:not-allowed}.user-filter .filter-remove-btn:hover:not(:disabled){border-color:var(--cyber-red);color:var(--cyber-red);background:#ff52521a}.user-filter .filter-add-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.user-filter .filter-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.user-filter .filter-clear-btn:hover{border-color:var(--cyber-red);color:var(--cyber-red);background:#ff52521a}@media(max-width:768px){.user-filter,.user-filter .filter-rules{flex-direction:column;align-items:stretch}.user-filter .filter-rule{flex-wrap:wrap}.user-filter .filter-select,.user-filter .filter-input{flex:1;min-width:0}.user-filter .value-input{width:auto;flex:2}}.auth-switch{text-align:center;margin-top:var(--spacing-md);font-size:.875rem;color:var(--text-secondary)}.link-button{background:none;border:none;color:var(--accent-blue);cursor:pointer;text-decoration:underline;font-size:inherit;padding:0;margin:0}.link-button:hover{color:var(--primary-blue)}.field-hint{font-size:.75rem;color:var(--text-secondary);opacity:.7}.user-menu-container{position:relative}.user-menu-button{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--primary-blue);border:2px solid var(--medium-blue);border-radius:var(--radius-full);color:var(--text-primary);cursor:pointer;font-family:var(--font-mono);font-size:.875rem;font-weight:600;transition:all .2s ease;box-shadow:var(--shadow-sm)}.user-menu-button:hover{background:var(--medium-blue);border-color:var(--accent-blue);box-shadow:var(--shadow-glow-blue);transform:translateY(-1px)}.user-menu-button svg{width:16px;height:16px}.user-menu-dropdown{position:absolute;top:100%;right:0;margin-top:var(--spacing-xs);background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:0 8px 24px #0006;min-width:200px;z-index:1000;animation:dropdown-fade-in .2s ease;overflow:hidden}@keyframes dropdown-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.user-menu-dropdown button{width:100%;text-align:left;padding:var(--spacing-sm) var(--spacing-md);background:none;border:none;color:var(--text-primary);cursor:pointer;font-family:var(--font-mono);font-size:.875rem;transition:background .2s ease;border-bottom:1px solid var(--border-color)}.user-menu-dropdown button:last-child{border-bottom:none}.user-menu-dropdown button:hover{background:var(--bg-tertiary)}.user-menu-dropdown button.delete-profile,.user-menu-dropdown button.logout{color:var(--error-red)}.session-expiry-info{padding:var(--spacing-sm) var(--spacing-md);font-size:.75rem;color:var(--text-secondary);border-bottom:1px solid var(--border-color);font-family:var(--font-mono)}.menu-separator{height:1px;background:var(--border-color);margin:var(--spacing-xs) 0}.success-message{color:var(--success-green, #4caf50);font-size:.8rem;margin-top:var(--spacing-xs);padding:var(--spacing-sm);background:#4caf501a;border-radius:var(--radius-sm);border:1px solid rgba(76,175,80,.3)}.password-input-wrapper{position:relative;display:flex;align-items:center}.password-input-wrapper input{width:100%;padding-right:45px}.password-toggle{position:absolute;right:8px;background:none;border:none;padding:6px;cursor:pointer;color:var(--text-secondary);display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all .2s ease}.password-toggle:hover{color:var(--text-primary);background:var(--bg-tertiary)}.password-toggle:active{transform:scale(.95)}.password-toggle svg{width:20px;height:20px}.input-with-toggle{position:relative;display:flex;align-items:center}.input-with-toggle input{width:100%;padding-right:45px}.btn-toggle-visibility{position:absolute;right:8px;background:none;border:none;padding:6px;cursor:pointer;color:var(--text-secondary);display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all .2s ease}.btn-toggle-visibility:hover{color:var(--text-primary);background:var(--bg-tertiary)}.profile-tabs{display:flex;gap:0;margin-bottom:1rem;border-bottom:2px solid var(--border-color)}.profile-tabs+form{display:flex;flex-direction:column;gap:var(--spacing-md)}.profile-tabs+form>.form-actions{margin-top:var(--spacing-sm)}.profile-tab{flex:1;padding:.6rem 1rem;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;color:var(--text-secondary);font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s ease;text-align:center;letter-spacing:.03em}.profile-tab:hover{color:var(--text-primary);background:var(--bg-tertiary)}.profile-tab.active{color:var(--accent-blue);border-bottom-color:var(--accent-blue)}.profile-tab-content{min-height:200px;display:flex;flex-direction:column;gap:var(--spacing-md);padding-top:var(--spacing-sm)}.profile-tab-content .form-group{gap:var(--spacing-xs)}.profile-tab-content+.error-message{margin-top:var(--spacing-md)}.profile-tab-content+.error-message,.profile-tab-content~.form-actions{margin-top:var(--spacing-md)}.log-filter{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-md);background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-md);flex-wrap:wrap}.log-filter .match-toggle{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-primary);border:2px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.7rem;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.log-filter .match-toggle:hover{border-color:var(--accent-blue);color:var(--accent-blue)}.log-filter .match-toggle.match-all{border-color:var(--accent-blue);color:var(--accent-blue);background:#2196f31a}.log-filter .match-toggle.match-any{border-color:#ff9800;color:#fff;background:#ff980099}.log-filter .match-toggle .match-label{text-transform:uppercase;letter-spacing:.5px}.log-filter .filter-rules{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;flex:1}.log-filter .filter-rule{display:flex;align-items:center;gap:var(--spacing-xs)}.log-filter .rule-connector{font-family:var(--font-mono);font-size:.875rem;font-weight:700;color:var(--text-secondary);padding:0 var(--spacing-xs)}.log-filter .filter-select,.log-filter .filter-input{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-primary);font-size:.75rem;background:var(--bg-primary);color:var(--text-primary);transition:border-color .2s ease}.log-filter .filter-select:focus,.log-filter .filter-input:focus{outline:none;border-color:var(--accent-blue)}.log-filter .column-select{min-width:80px}.log-filter .operator-select{min-width:50px}.log-filter .value-input{width:80px}.log-filter .filter-icon-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.log-filter .filter-icon-btn:hover:not(:disabled){border-color:var(--accent-blue);color:var(--accent-blue)}.log-filter .filter-icon-btn:disabled{opacity:.3;cursor:not-allowed}.log-filter .filter-remove-btn:hover:not(:disabled){border-color:var(--cyber-red);color:var(--cyber-red);background:#ff52521a}.log-filter .filter-add-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.log-filter .filter-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.log-filter .filter-clear-btn:hover{border-color:var(--cyber-red);color:var(--cyber-red);background:#ff52521a}@media(max-width:768px){.log-filter,.log-filter .filter-rules{flex-direction:column;align-items:stretch}.log-filter .filter-rule{flex-wrap:wrap}.log-filter .filter-select,.log-filter .filter-input{flex:1;min-width:0}.log-filter .value-input{width:auto;flex:2}}.log-timestamp{color:var(--text-secondary);white-space:nowrap}.log-issued-by{font-weight:500}.log-message{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logs-table .cell-message .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.log-type-badge{display:inline-block;padding:2px 8px;border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.log-type-error{background:#ff525226;color:var(--cyber-red, #ff5252);border:1px solid rgba(255,82,82,.3)}.log-type-warning{background:#ff980026;color:#ff9800;border:1px solid rgba(255,152,0,.3)}.log-type-info{background:#2196f326;color:var(--accent-blue, #2196f3);border:1px solid rgba(33,150,243,.3)}.log-type-debug{background:#9e9e9e26;color:var(--text-secondary);border:1px solid rgba(158,158,158,.3)}.audit-timestamp{color:var(--text-secondary);white-space:nowrap}.audit-module{font-weight:500}.audit-message{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audit-trail-table .cell-message .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audit-row-unread{font-weight:600}.audit-row-read{color:var(--text-secondary)}.audit-status-badge{display:inline-block;padding:2px 8px;border-radius:var(--radius-sm);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;cursor:pointer}.audit-status-unread{background:#2196f326;color:var(--accent-blue, #2196f3);border:1px solid rgba(33,150,243,.4)}.audit-status-read{background:#9e9e9e1a;color:var(--text-secondary);border:1px solid rgba(158,158,158,.3)}.audit-level-badge{display:inline-block;padding:2px 8px;border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.audit-level-info{background:#2196f326;color:var(--accent-blue, #2196f3);border:1px solid rgba(33,150,243,.3)}.audit-level-warning{background:#ff980026;color:#ff9800;border:1px solid rgba(255,152,0,.3)}.audit-level-limit-exceeded{background:#ff525226;color:var(--cyber-red, #ff5252);border:1px solid rgba(255,82,82,.3)}.audit-trail-toolbar{display:flex;align-items:center;gap:8px;padding:8px 12px}.audit-trail-toolbar button{padding:6px 12px;font-size:.85rem;border-radius:var(--radius-sm);border:1px solid var(--border-color);background:var(--surface-color);color:var(--text-primary);cursor:pointer}.audit-trail-toolbar button:hover:not(:disabled){background:var(--surface-hover)}.audit-trail-toolbar button:disabled{opacity:.5;cursor:not-allowed}.code-viewer{display:flex;flex-direction:column;border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:hidden;background:#1e1e2e}.code-viewer-toolbar{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-xs) var(--spacing-md);background:#181825;border-bottom:1px solid rgba(255,255,255,.06)}.code-viewer-info{font-size:.75rem;color:#6c7086;font-family:var(--font-mono)}.code-viewer-copy{display:flex;align-items:center;gap:4px;padding:3px 8px;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);background:transparent;color:#a6adc8;font-size:.75rem;font-family:var(--font-mono);cursor:pointer;transition:all .15s ease}.code-viewer-copy:hover{background:#ffffff0f;border-color:var(--accent-blue);color:var(--accent-blue)}.code-viewer-scroll{overflow:auto;max-height:60vh}.code-viewer-pre{margin:0;padding:var(--spacing-sm) 0;font-family:var(--font-mono);font-size:.8125rem;line-height:1.6;tab-size:2}.code-line{display:flex;padding:0 var(--spacing-md)}.code-line:hover{background:#ffffff08}.code-line-number{flex-shrink:0;text-align:right;padding-right:var(--spacing-md);color:#45475a;-webkit-user-select:none;user-select:none;border-right:1px solid rgba(255,255,255,.04);margin-right:var(--spacing-md)}.code-line-content{white-space:pre;color:#cdd6f4}.code-token-keyword{color:#cba6f7;font-weight:600}.code-token-string{color:#a6e3a1}.code-token-comment{color:#6c7086;font-style:italic}.code-token-number{color:#fab387}.code-token-plain{color:#cdd6f4}.code-viewer-log{border-top:1px solid rgba(255,255,255,.06)}.code-viewer-log-header{display:flex;align-items:center;gap:6px;padding:var(--spacing-xs) var(--spacing-md);background:#181825;border-bottom:1px solid rgba(255,255,255,.06);font-size:.75rem;font-weight:600;color:#a6adc8;text-transform:uppercase;letter-spacing:.03em}.code-viewer-log-content{margin:0;padding:var(--spacing-sm) var(--spacing-md);font-family:var(--font-mono);font-size:.8125rem;line-height:1.6;color:#bac2de;white-space:pre-wrap;word-break:break-word;max-height:20vh;overflow-y:auto}.routine-test-dialog{display:flex;flex-direction:column;gap:var(--spacing-md)}.routine-test-tabs{display:flex;gap:0;border-bottom:2px solid var(--border-color)}.routine-test-tab{flex:1;padding:var(--spacing-sm) var(--spacing-md);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;color:var(--text-secondary);font-size:.875rem;font-weight:600;cursor:pointer;transition:all .15s ease}.routine-test-tab:hover{color:var(--text-primary);background:var(--bg-tertiary)}.routine-test-tab.active{color:var(--accent-blue);border-bottom-color:var(--accent-blue)}.routine-test-upload-area{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xl) var(--spacing-lg);border:2px dashed var(--border-color);border-radius:var(--radius-md);cursor:pointer;transition:all .15s ease}.routine-test-upload-area:hover{border-color:var(--accent-blue);background:#42a5f50d}.routine-test-upload-area svg{color:var(--text-secondary)}.routine-test-upload-area span{font-size:.875rem;color:var(--text-secondary)}.routine-test-source-search{width:100%;padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-size:.8125rem;transition:border-color .15s ease}.routine-test-source-search:focus{outline:none;border-color:var(--accent-blue)}.routine-test-source-search::placeholder{color:var(--text-tertiary)}.routine-test-source-list{max-height:240px;overflow-y:auto;border:1px solid var(--border-color);border-radius:var(--radius-sm)}.routine-test-source-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);cursor:pointer;border-bottom:1px solid var(--border-color);transition:background .1s ease}.routine-test-source-item:last-child{border-bottom:none}.routine-test-source-item:hover{background:var(--bg-tertiary)}.routine-test-source-item.selected{background:#42a5f51a;border-left:3px solid var(--accent-blue)}.routine-test-source-filename{flex:1;font-size:.8125rem;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.routine-test-source-meta{display:flex;gap:var(--spacing-xs);align-items:center;flex-shrink:0}.routine-test-source-badge{font-size:.6875rem;font-weight:600;padding:1px 6px;border-radius:var(--radius-sm);text-transform:uppercase}.routine-test-source-badge.status-Analysed{background:#00e67626;color:var(--cyber-green, #00e676)}.routine-test-source-badge.status-Imported{background:#42a5f526;color:var(--accent-blue)}.routine-test-source-badge.status-Error{background:#ff525226;color:var(--error-color, #ff5252)}.routine-test-source-type{font-size:.6875rem;color:var(--text-secondary)}.routine-test-source-empty{padding:var(--spacing-lg);text-align:center;color:var(--text-secondary);font-size:.8125rem}.routine-test-file-info{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-tertiary);border-radius:var(--radius-sm);font-size:.8125rem;color:var(--text-secondary)}.routine-test-file-info strong{color:var(--text-primary)}.routine-test-run-btn{align-self:flex-start;display:flex;align-items:center;gap:6px;padding:var(--spacing-xs) var(--spacing-lg);background:linear-gradient(135deg,var(--accent-blue),#1976d2);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.875rem;font-weight:600;cursor:pointer;transition:all .15s ease}.routine-test-run-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #42a5f54d}.routine-test-run-btn:disabled{opacity:.4;cursor:default}.routine-test-result{padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);font-size:.875rem}.routine-test-result.match{background:#00e6761a;border:1px solid rgba(0,230,118,.3);color:var(--cyber-green, #00e676)}.routine-test-result.no-match{background:var(--bg-tertiary);border:1px solid var(--border-color);color:var(--text-secondary)}.routine-test-result.error{background:#ff52521a;border:1px solid rgba(255,82,82,.3);color:var(--error-color, #ff5252)}.routine-test-result-label{font-weight:600;margin-bottom:2px}.routine-test-result-detail{font-size:.8125rem;opacity:.9}.routine-test-loading{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) 0;font-size:.8125rem;color:var(--text-secondary)}.routine-test-spinner{width:16px;height:16px;border:2px solid var(--border-color);border-top-color:var(--accent-blue);border-radius:50%;animation:routine-test-spin .6s linear infinite}@keyframes routine-test-spin{to{transform:rotate(360deg)}}.modal-content:has(.routine-dialog){max-width:900px;width:90vw}.routine-dialog{display:flex;flex-direction:column;gap:var(--spacing-md)}.routine-dialog-tabs{display:flex;gap:0;border-bottom:2px solid var(--border-color)}.routine-dialog-tab{flex:1;padding:var(--spacing-sm) var(--spacing-md);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;color:var(--text-secondary);font-size:.875rem;font-weight:600;cursor:pointer;transition:all .15s ease}.routine-dialog-tab:hover{color:var(--text-primary);background:var(--bg-tertiary)}.routine-dialog-tab.active{color:var(--accent-blue);border-bottom-color:var(--accent-blue)}.routine-dialog-details{display:flex;flex-direction:column}.routine-detail-row{display:flex;flex-wrap:wrap;padding:var(--spacing-sm) 0;border-bottom:1px solid var(--border-color);gap:var(--spacing-xs)}.routine-detail-row:last-child{border-bottom:none}.routine-detail-label{flex:0 0 120px;font-weight:600;color:var(--text-secondary);font-size:.875rem;text-transform:uppercase;letter-spacing:.03em}.routine-detail-value{flex:1;min-width:200px;color:var(--text-primary);word-break:break-word;overflow-wrap:break-word;white-space:normal}.routine-detail-mono{font-family:var(--font-mono);font-size:.8125rem}.routine-dialog-link{background:none;border:none;padding:0;color:var(--accent-blue);font:inherit;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.routine-dialog-link:hover{color:var(--text-primary)}.action-rule-modal{width:90vw;max-width:1100px}.action-rule-form .form-row{display:flex;gap:var(--spacing-md);flex-wrap:wrap}.action-rule-form .form-row .form-group{flex:1;min-width:120px}.action-rule-form textarea{width:100%;resize:vertical;font-family:var(--font-mono);font-size:.8rem}.action-rule-form select{width:100%}.action-rule-form .active-routine-row{display:flex;gap:.5rem;align-items:center}.action-rule-form .active-routine-row select{flex:1;min-width:0}.action-rule-form .btn-routine-details{flex-shrink:0}.action-rule-form .action-options-info{color:var(--text-secondary);font-size:.85rem;padding:.5rem 0}.action-rule-form .action-options-info.empty{opacity:.6;font-style:italic}.action-rule-form .action-options-list{display:flex;flex-direction:column;gap:.4rem;max-height:160px;overflow-y:auto;border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:.4rem}.action-rule-form .action-option-item{display:flex;align-items:center;gap:.5rem;padding:.35rem .5rem;border-radius:var(--radius-sm);background:#ffffff08;font-size:.8rem}.action-rule-form .action-option-type-badge{font-family:var(--font-mono);font-size:.7rem;font-weight:600;padding:1px 5px;border-radius:var(--radius-sm);flex-shrink:0}.action-rule-form .action-option-type-badge.type-execution{color:var(--cyber-green);background:#00e6761a}.action-rule-form .action-option-type-badge.type-dialog{color:var(--accent-blue);background:#2196f31a}.action-rule-form .action-option-type-badge.type-action{color:#ff9800;background:#ff98001a}.action-rule-form .action-option-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary)}.action-rule-form .action-option-meta{flex-shrink:0;color:var(--text-secondary);font-size:.75rem;font-family:var(--font-mono)}.action-rule-text-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.action-rule-empty{color:var(--text-secondary);opacity:.5}.action-rule-date{color:var(--text-secondary);white-space:nowrap}.action-rule-type{font-family:var(--font-mono);font-size:.75rem;font-weight:600;padding:2px 6px;border-radius:var(--radius-sm)}.action-rule-type.type-fix{color:var(--cyber-red);background:#ff52521a}.action-rule-type.type-info{color:var(--accent-blue);background:#2196f31a}.action-rule-type.type-support{color:#ff9800;background:#ff98001a}.action-rules-table .cell-title,.action-rules-table .cell-triggerPrompt,.action-rules-table .cell-actionMessage,.action-rules-table .cell-rulePrompt{overflow:hidden}.action-rules-table .cell-title .tooltip-wrapper,.action-rules-table .cell-triggerPrompt .tooltip-wrapper,.action-rules-table .cell-actionMessage .tooltip-wrapper,.action-rules-table .cell-rulePrompt .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action-rules-table .cell-createdAt{white-space:nowrap}.new-action-rule-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.new-action-rule-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.generate-routine-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.generate-routine-btn:hover:not(:disabled){border-color:var(--accent-blue);color:var(--accent-blue);background:#2196f31a}.generate-routine-btn:disabled{opacity:.3;cursor:not-allowed}.action-option-dialog{min-width:600px;max-width:820px}.action-option-form .form-row{display:flex;gap:var(--spacing-md);flex-wrap:wrap}.action-option-form .form-row .form-group{flex:1;min-width:120px}.action-option-form textarea{width:100%;resize:vertical;font-family:var(--font-mono);font-size:.8rem}.action-option-form select{width:100%}.action-option-text-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.action-option-empty{color:var(--text-secondary);opacity:.5}.action-option-date{color:var(--text-secondary);white-space:nowrap}.action-option-type{font-family:var(--font-mono);font-size:.75rem;font-weight:600;padding:2px 6px;border-radius:var(--radius-sm)}.action-option-type.type-execution{color:var(--cyber-green);background:#00e6761a}.action-option-type.type-dialog{color:var(--accent-blue);background:#2196f31a}.action-option-type.type-action{color:#ff9800;background:#ff98001a}.action-options-table .cell-actionRuleId,.action-options-table .cell-title,.action-options-table .cell-message,.action-options-table .cell-typeContext{overflow:hidden}.action-options-table .cell-actionRuleId .tooltip-wrapper,.action-options-table .cell-title .tooltip-wrapper,.action-options-table .cell-message .tooltip-wrapper,.action-options-table .cell-typeContext .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action-options-table .cell-createdAt{white-space:nowrap}.new-action-option-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.new-action-option-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.execution-rule-modal{width:90vw;max-width:1100px}.execution-rule-text-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.execution-rule-empty{color:var(--text-secondary);opacity:.5}.execution-rule-date{color:var(--text-secondary);white-space:nowrap}.execution-rules-table .cell-title,.execution-rules-table .cell-rulePrompt{overflow:hidden}.execution-rules-table .cell-title .tooltip-wrapper,.execution-rules-table .cell-rulePrompt .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.execution-rules-table .cell-createdAt,.execution-rules-table .cell-modifiedAt{white-space:nowrap}.new-execution-rule-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.new-execution-rule-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.execution-rule-status{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.03em}.execution-rule-status.status-success{color:var(--cyber-green);background:#00e6761a}.execution-rule-status.status-noop{color:var(--text-secondary);background:#7f7f7f1a}.execution-rule-status.status-error{color:var(--cyber-red);background:#ff52521a}.execution-rule-status.status-unknown{color:var(--text-secondary);background:transparent;border:1px dashed var(--border-color)}.execution-rule-status-time{font-weight:400;opacity:.8;text-transform:none;letter-spacing:0}.execution-rule-form textarea{width:100%;resize:vertical;font-family:var(--font-mono);font-size:.8rem}.execution-rule-form .active-routine-row{display:flex;gap:.5rem;align-items:center}.execution-rule-form .active-routine-row select{flex:1;min-width:0}.analysis-rule-modal{width:90vw;max-width:1100px}.analysis-rule-form textarea{width:100%;resize:vertical;font-family:var(--font-mono);font-size:.8rem}.analysis-rule-text-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.analysis-rule-empty{color:var(--text-secondary);opacity:.5}.analysis-rule-date{color:var(--text-secondary);white-space:nowrap}.analysis-rules-table .cell-type,.analysis-rules-table .cell-description,.analysis-rules-table .cell-rulePrompt{overflow:hidden}.analysis-rules-table .cell-type .tooltip-wrapper,.analysis-rules-table .cell-description .tooltip-wrapper,.analysis-rules-table .cell-rulePrompt .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.analysis-rules-table .cell-createdAt{white-space:nowrap}.new-analysis-rule-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.new-analysis-rule-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.edit-note-modal{width:80vw;max-width:900px}.edit-note-form textarea{width:100%;resize:vertical;font-family:var(--font-mono);font-size:.875rem}.routine-text-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.routine-empty{color:var(--text-secondary);opacity:.5}.routine-date{color:var(--text-secondary);white-space:nowrap}.routine-sha256{font-family:var(--font-mono);font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.routine-status{font-weight:600;font-size:.8rem;text-transform:uppercase}.routine-status-passed{color:var(--cyber-green, #00e676)}.routine-status-failed{color:var(--error-color, #ff5252)}.routine-active{font-weight:600;font-size:.8rem;text-transform:uppercase}.routine-active-yes{color:var(--cyber-green, #00e676)}.routine-active-no{color:var(--text-secondary);opacity:.5}.routines-table .cell-log{overflow:hidden}.routines-table .cell-log .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.routines-table .cell-sha256{overflow:hidden}.routines-table .cell-sha256 .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.routines-table .cell-generatedAt{white-space:nowrap}.import-rule-modal{width:90vw;max-width:1100px}.import-rule-form textarea{width:100%;resize:vertical;font-family:var(--font-mono);font-size:.8rem}.import-rule-form .active-routine-row{display:flex;gap:.5rem;align-items:center}.import-rule-form .active-routine-row select{flex:1;min-width:0}.import-rule-form .btn-routine-details{flex-shrink:0}.import-rule-text-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.import-rule-empty{color:var(--text-secondary);opacity:.5}.import-rule-date{color:var(--text-secondary);white-space:nowrap}.import-rules-table .cell-type,.import-rules-table .cell-rulePrompt,.import-rules-table .cell-description{overflow:hidden}.import-rules-table .cell-type .tooltip-wrapper,.import-rules-table .cell-rulePrompt .tooltip-wrapper,.import-rules-table .cell-description .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-rules-table .cell-createdAt{white-space:nowrap}.new-import-rule-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.new-import-rule-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.automation-text-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.automation-empty{color:var(--text-secondary);opacity:.5}.automation-status{display:inline-block;font-family:var(--font-mono);font-size:.75rem;font-weight:600;padding:2px 10px;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.04em}.automation-status.status-manual{color:var(--text-secondary);background:#7f7f7f1f;border:1px solid var(--border-color)}.automation-status.status-automatic{color:var(--cyber-green);background:#00e6761f}.automation-enabled{display:inline-block;font-family:var(--font-mono);font-size:.75rem;font-weight:600;padding:2px 10px;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.04em}.automation-enabled.enabled-yes{color:var(--accent-blue);background:#2196f31f}.automation-enabled.enabled-no{color:var(--text-secondary);background:#7f7f7f14;opacity:.7}.automation-form .form-row{display:flex;flex-direction:column;gap:6px;margin-bottom:1rem}.automation-form label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary)}.automation-form .form-readonly-value{font-size:.875rem;color:var(--text-primary);padding:6px 10px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);word-break:break-word;white-space:pre-wrap}.automation-status-toggle{display:inline-flex;gap:8px;padding:4px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);width:fit-content}.automation-status-toggle-btn{display:inline-flex;align-items:center;gap:8px;padding:8px 18px;font-family:var(--font-mono);font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:all .15s ease}.automation-status-toggle-btn:hover:not(.selected){color:var(--text-primary);background:#7f7f7f14}.automation-status-toggle-btn.status-manual.selected{background:#7f7f7f2e;color:var(--text-primary);border-color:var(--border-color);box-shadow:0 1px 3px #00000026}.automation-status-toggle-btn.status-automatic.selected{background:#00e67626;color:var(--cyber-green);border-color:#00e67666;box-shadow:0 1px 8px #00e67633}.automation-status-toggle-btn svg{flex-shrink:0;opacity:.8}.automation-status-toggle-btn.selected svg{opacity:1}.execute-dialog{display:flex;flex-direction:column;gap:1rem;min-width:420px}.execute-dialog-rule{padding:.75rem 1rem;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md)}.execute-dialog-rule-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin-bottom:4px}.execute-dialog-rule-title{font-size:1rem;font-weight:600;color:var(--text-primary)}.execute-dialog-rule-prompt{margin-top:6px;font-size:.8rem;color:var(--text-secondary);line-height:1.5;white-space:pre-wrap;word-break:break-word}.execute-dialog-message{font-size:.875rem;color:var(--text-secondary);line-height:1.5}.execute-dialog-warning{font-size:.875rem;color:var(--cyber-red);background:#ff525214;border:1px solid rgba(255,82,82,.3);border-radius:var(--radius-sm);padding:.75rem 1rem}.execute-dialog-running{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:2rem 0;font-size:.875rem;color:var(--text-secondary)}.execute-dialog-result-row{display:flex;flex-direction:column;gap:4px}.execute-dialog-result-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary)}.execute-dialog-status{align-self:flex-start}.automation-status.status-error{color:var(--cyber-red);background:#ff52521f}.execute-dialog-message-text{font-size:.875rem;color:var(--text-primary);padding:6px 10px;background:var(--bg-tertiary);border-radius:var(--radius-sm);white-space:pre-wrap;word-break:break-word}.execute-dialog-message-text.error{color:var(--cyber-red);background:#ff525214}.execute-dialog-changes{width:100%;border-collapse:collapse;font-size:.8rem}.execute-dialog-changes th{text-align:left;padding:4px 8px;border-bottom:1px solid var(--border-color);font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);font-weight:600}.execute-dialog-changes td{padding:4px 8px;border-bottom:1px solid rgba(127,127,127,.15);color:var(--text-primary)}.execute-dialog-changes td.mono{font-family:var(--font-mono);font-size:.75rem}.ai-form input[type=text]{width:100%;font-family:var(--font-mono);font-size:.8rem}.ai-text-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.ai-empty{color:var(--text-secondary);opacity:.5}.ai-date{color:var(--text-secondary);white-space:nowrap}.ai-table .cell-url{overflow:hidden}.ai-table .cell-url .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ai-table .cell-createdAt{white-space:nowrap}.new-ai-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.new-ai-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.proxy-form input[type=text],.proxy-form select{width:100%;font-family:var(--font-mono);font-size:.8rem}.proxy-form textarea{width:100%;font-family:var(--font-mono);font-size:.8rem;resize:vertical}.credential-select-row{display:flex;gap:8px;align-items:center}.credential-select-row select{flex:1;min-width:0}.btn-generate{flex-shrink:0;padding:6px 12px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-primary);font-size:.8rem;cursor:pointer;white-space:nowrap;transition:all .2s ease}.btn-generate:hover:not(:disabled){border-color:var(--accent-blue);color:var(--accent-blue)}.btn-generate:disabled{opacity:.4;cursor:not-allowed}.dialog-top-bar{display:flex;justify-content:flex-end;margin-bottom:var(--spacing-sm)}.btn-help{border:none;border-radius:var(--radius-sm);background:transparent;color:var(--accent-blue);font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s ease;flex:none;padding:4px 8px;box-shadow:none;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:2px}.btn-help:hover{text-decoration-color:var(--accent-blue);background:var(--primary-blue);transform:none;box-shadow:none}.btn-help.active{background:var(--primary-blue);text-decoration-color:var(--accent-blue)}.toggle-group{display:flex;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.toggle-label{font-size:.8rem;font-weight:500;color:var(--text-secondary);min-width:76px;flex-shrink:0}.toggle-bar{display:flex;flex:1;background:var(--bg-tertiary, var(--bg-primary));border:1.5px solid var(--border-color);border-radius:var(--radius-full);padding:3px;gap:2px}.toggle-option{flex:1;padding:6px 14px;border:none;border-radius:var(--radius-full);background:transparent;color:var(--text-secondary);font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s ease;box-shadow:none}.toggle-option.active{background:linear-gradient(135deg,var(--primary-blue),var(--accent-blue));color:#fff;box-shadow:0 2px 8px #42a5f540}.toggle-option:hover:not(.active){color:var(--text-primary);background:var(--bg-secondary)}.enroll-form input[type=text],.enroll-form input[type=number],.enroll-form textarea{width:100%;font-family:var(--font-mono);font-size:.8rem}.enroll-form textarea{resize:vertical}.enroll-form{display:flex;flex-direction:column;gap:var(--spacing-md)}.enrollment-result p{margin:0 0 12px;font-size:.85rem}.enrollment-command{display:flex;gap:8px;align-items:flex-start;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:12px;margin-bottom:12px}.enrollment-command code{flex:1;font-family:var(--font-mono);font-size:.75rem;word-break:break-all;line-height:1.5}.btn-copy{flex-shrink:0;width:fit-content;padding:6px 10px;border:1px solid var(--accent-blue);border-radius:var(--radius-sm);background:var(--accent-blue);color:#fff;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s ease}.modal-body .btn-copy{flex:none}.btn-copy:hover{opacity:.85}.btn-copy.copied{background:var(--accent-green, #22c55e);border-color:var(--accent-green, #22c55e)}.enrollment-expiry{color:var(--text-secondary);font-size:.8rem}.proxy-dialog-with-help{min-width:820px;max-width:900px;transition:min-width .3s ease,max-width .3s ease}.proxy-dialog-split{display:flex;gap:var(--spacing-lg);animation:split-fade-in .25s ease}@keyframes split-fade-in{0%{opacity:.6}to{opacity:1}}.proxy-dialog-form-pane{flex:1;min-width:0}.proxy-dialog-help-pane{flex:1;min-width:0;border-left:1px solid var(--border-color);padding-left:var(--spacing-lg);overflow-y:auto;max-height:70vh}.setup-help-panel h3{margin:0 0 var(--spacing-md) 0;font-size:.95rem;color:var(--text-primary)}.help-section{margin-bottom:var(--spacing-md)}.help-section:last-child{margin-bottom:0}.help-section h4{margin:0 0 var(--spacing-xs) 0;font-size:.82rem;color:var(--accent-blue)}.help-section>p{margin:0;font-size:.78rem;color:var(--text-secondary);line-height:1.55}.help-options{display:flex;flex-direction:column;gap:var(--spacing-xs);margin-top:var(--spacing-xs)}.help-option{padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-tertiary, var(--bg-primary));border:1px solid var(--border-color);border-radius:var(--radius-sm)}.help-option strong{display:block;font-size:.78rem;color:var(--text-primary);margin-bottom:2px}.help-option p{margin:0;font-size:.75rem;color:var(--text-secondary);line-height:1.45}.copyable-command{display:inline-flex;align-items:center;gap:6px}.icon-copy-inline{cursor:pointer;color:var(--text-tertiary);transition:color .15s ease;vertical-align:middle;flex-shrink:0}.icon-copy-inline:hover{color:var(--accent-blue)}.icon-copy-inline.copied{color:var(--accent-green, #22c55e)}.pairing-code-input{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.15em;text-align:center;font-size:1.1em}.reverse-enroll-hint{padding:10px 12px;margin-bottom:12px;border-radius:4px;background:var(--bg-tertiary, #f7f7f7);color:var(--text-secondary);font-size:.9em;line-height:1.4}.reverse-enroll-hint code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:var(--bg-primary, #fff);padding:1px 5px;border-radius:3px}.proxy-text-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.proxy-empty{color:var(--text-secondary);opacity:.5}.proxy-date{color:var(--text-secondary);white-space:nowrap}.proxy-table .cell-name,.proxy-table .cell-url,.proxy-table .cell-description,.proxy-table .cell-tools,.proxy-table .cell-unsupportedCapabilities{overflow:hidden}.proxy-table .cell-name .tooltip-wrapper,.proxy-table .cell-url .tooltip-wrapper,.proxy-table .cell-description .tooltip-wrapper,.proxy-table .cell-tools .tooltip-wrapper,.proxy-table .cell-unsupportedCapabilities .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.proxy-table .cell-createdAt,.proxy-table .cell-modifiedAt{white-space:nowrap}.new-proxy-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.new-proxy-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.proxy-health-modal p{margin:0 0 8px;font-size:.85rem;line-height:1.5;white-space:pre-line}.proxy-health-modal p:last-child{margin-bottom:0}.proxy-health-modal.success p{color:#22c55e}.proxy-health-modal.error p{color:#ef4444}.proxy-health-hint{color:var(--text-secondary)!important;font-style:italic}.proxy-status-pill{display:inline-block;padding:2px 8px;border-radius:10px;font-size:.78rem;font-weight:500;line-height:1.4;border:1px solid transparent;white-space:nowrap}.proxy-status-online{background-color:#22c55e26;color:#16a34a;border-color:#22c55e59}.proxy-status-offline{background-color:#ef444426;color:#dc2626;border-color:#ef444459}.proxy-status-pending_enrollment{background-color:#eab30826;color:#ca8a04;border-color:#eab30859}.proxy-status-disconnected,.proxy-status-unknown{background-color:var(--surface-2, rgba(128, 128, 128, .12));color:var(--text-secondary, #6b7280);border-color:#8080804d}.credential-form input[type=text],.credential-form input[type=password]{width:100%;font-family:var(--font-mono);font-size:.8rem}.credential-form textarea{width:100%;font-family:var(--font-mono);font-size:.8rem;resize:vertical}.credential-form .secret-hint{font-size:.75rem;font-weight:400;color:var(--text-secondary);opacity:.8}.credential-text-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.credential-empty{color:var(--text-secondary);opacity:.5}.credential-date{color:var(--text-secondary);white-space:nowrap}.credential-secret-badge{display:inline-block;padding:1px 6px;border-radius:var(--radius-sm);font-size:.75rem;font-weight:600}.credential-secret-badge.set{background:#00e67626;color:var(--cyber-green)}.credential-secret-badge.not-set{color:var(--text-secondary);opacity:.5}.credential-table .cell-createdAt,.credential-table .cell-modifiedAt{white-space:nowrap}.new-credential-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.new-credential-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.capability-modal,.tool-modal{width:90vw;max-width:1100px}.tool-def-form input[type=text],.tool-def-form input[type=number]{width:100%;font-family:var(--font-mono);font-size:.8rem}.tool-def-form textarea{width:100%;font-family:var(--font-mono);font-size:.8rem;resize:vertical}.tool-def-form .monospace-input{font-family:var(--font-mono);font-size:.75rem}.tool-def-form .form-row{display:flex;gap:12px}.tool-def-form .form-row .form-group{flex:1;min-width:0}.tool-def-form .form-group-checkbox label{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:.85rem}.scan-rule-modal{width:90vw;max-width:1100px}.scan-rule-form textarea{width:100%;resize:vertical;font-family:var(--font-mono);font-size:.8rem}.active-routine-row{display:flex;gap:.5rem;align-items:center}.active-routine-row select{flex:1;min-width:0}.btn-routine-details{flex-shrink:0}.scan-rule-text-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.scan-rule-empty{color:var(--text-secondary);opacity:.5}.scan-rule-date{color:var(--text-secondary);white-space:nowrap}.scan-rules-table .cell-rulePrompt{overflow:hidden}.scan-rules-table .cell-rulePrompt .tooltip-wrapper{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scan-rules-table .cell-createdAt{white-space:nowrap}.new-scan-rule-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.new-scan-rule-btn:hover{border-color:var(--cyber-green);color:var(--cyber-green);background:#00e6761a}.tool-execute-modal{min-width:450px}.tool-execute-info{margin-bottom:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-tertiary);border-radius:var(--radius-sm);border:1px solid var(--border-color)}.tool-execute-command{font-family:var(--font-mono);font-size:.85rem;color:var(--accent-blue);font-weight:500}.tool-execute-description{margin:var(--spacing-xs) 0 0 0;font-size:.8rem;color:var(--text-secondary);line-height:1.4}.tool-execute-params .form-group{margin-bottom:var(--spacing-md)}.tool-execute-params label{display:block;font-size:.85rem;font-weight:500;color:var(--text-secondary);margin-bottom:var(--spacing-xs)}.tool-execute-required{color:var(--error-red);margin-left:2px}.tool-execute-params input,.tool-execute-params select{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-mono);font-size:.85rem;transition:border-color .2s ease,box-shadow .2s ease}.tool-execute-params input:focus,.tool-execute-params select:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 2px #2196f31a}.tool-execute-params input:disabled,.tool-execute-params select:disabled{opacity:.5;cursor:not-allowed}.tool-execute-no-params{color:var(--text-secondary);font-size:.85rem;margin-bottom:var(--spacing-md)}.tool-execute-result{display:flex;flex-direction:column;gap:var(--spacing-md)}.tool-execute-status{padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);font-size:.85rem;font-weight:500}.tool-execute-status.status-success{background:#4caf501a;border:1px solid rgba(76,175,80,.3);color:var(--success-green)}.tool-execute-status.status-error{background:#f443361a;border:1px solid rgba(244,67,54,.3);color:var(--error-red)}.tool-execute-files label,.tool-execute-errors label,.tool-execute-output label{display:block;font-size:.8rem;font-weight:500;color:var(--text-secondary);margin-bottom:var(--spacing-xs)}.tool-execute-files ul,.tool-execute-errors ul{margin:0;padding-left:var(--spacing-lg);font-size:.85rem}.tool-execute-files ul{color:var(--success-green)}.tool-execute-errors ul{color:var(--error-red)}.tool-execute-output pre{margin:0;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-mono);font-size:.8rem;max-height:300px;overflow:auto;white-space:pre-wrap;word-break:break-all}.module-ai-settings{width:100%;flex:1;display:flex;flex-direction:column;min-height:0}.module-ai-settings .modal-header{border-bottom:1px solid var(--border-color)}.module-ai-settings .modal-body,.module-ai-settings .modal-body form,.module-ai-settings .form-group-grow{flex:1;display:flex;flex-direction:column;min-height:0}.module-ai-settings .form-group-grow textarea{flex:1;min-height:100px}.module-ai-settings select{max-width:400px;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-mono);font-size:.875rem;transition:all .2s ease}.module-ai-settings select:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 4px #42a5f526;background:var(--bg-secondary)}.module-ai-settings textarea{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-mono);font-size:.875rem;resize:vertical;transition:all .2s ease;box-sizing:border-box}.module-ai-settings textarea:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 4px #42a5f526;background:var(--bg-secondary)}.module-ai-settings-loading{color:var(--text-secondary);font-style:italic}.module-ai-settings .success-message{color:var(--color-success, #4caf50);font-size:.85rem}.module-ai-settings .system-prompt-label-row{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-sm);margin-bottom:var(--spacing-xs)}.module-ai-settings .btn-copy-prompt{flex:0 0 auto;width:auto;align-self:center;display:inline-flex;align-items:center;gap:4px;padding:2px 8px;font-size:.72rem;font-weight:500;line-height:1.4;white-space:nowrap;background:transparent;border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:color .15s ease,border-color .15s ease,background .15s ease}.module-ai-settings .btn-copy-prompt:hover:not(:disabled){color:var(--accent-blue);border-color:var(--accent-blue);background:#42a5f514}.module-ai-settings .btn-copy-prompt:disabled{opacity:.4;cursor:not-allowed}.module-ai-settings .btn-copy-prompt.copied{color:var(--color-success, #4caf50);border-color:var(--color-success, #4caf50)}.module-ai-settings .btn-copy-prompt svg{width:12px;height:12px}.feed-container{width:100%;flex:1;display:flex;flex-direction:column;min-height:0}.feed-container .modal-header{border-bottom:1px solid var(--border-color)}.feed-header{display:flex;align-items:center;justify-content:space-between}.feed-header h2{margin:0}.feed-sync-btn{white-space:nowrap;display:inline-flex;align-items:center;font-size:.8rem}.feed-sync-btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.sync-dialog-body{display:flex;align-items:flex-start;gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.sync-dialog-icon{flex-shrink:0;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center}.sync-dialog-icon-success{background:#4caf5026;color:var(--color-success, #4caf50)}.sync-dialog-icon-warning{background:#ff980026;color:var(--color-warning, #ff9800)}.sync-dialog-icon-error{background:#f4433626;color:var(--cyber-red, #f44336)}.sync-dialog-stats{display:flex;flex-direction:column;gap:var(--spacing-sm)}.sync-dialog-message{margin:0;font-size:.95rem;color:var(--text-primary)}.sync-dialog-details{display:flex;gap:var(--spacing-md)}.sync-stat{font-size:.85rem;font-weight:600;padding:2px 10px;border-radius:var(--radius-full)}.sync-stat-success{background:#4caf5026;color:var(--color-success, #4caf50)}.sync-stat-error{background:#f4433626;color:var(--cyber-red, #f44336)}.feed-container .modal-body{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto}.feed-section{padding:var(--spacing-md) 0}.feed-section h3{margin:0 0 var(--spacing-sm) 0;font-size:1rem;color:var(--text-primary)}.feed-description{color:var(--text-secondary);font-size:.85rem;margin:0 0 var(--spacing-md) 0}.feed-path-info{color:var(--text-secondary);font-size:.8rem;margin-bottom:var(--spacing-md)}.feed-path-info code{background:var(--bg-tertiary);padding:2px 6px;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.8rem}.feed-export-row{display:flex;align-items:flex-end;gap:var(--spacing-md)}.feed-export-row .form-group{flex:1;margin-bottom:0}.feed-export-row input[type=text]{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-mono);font-size:.875rem;transition:all .2s ease;box-sizing:border-box}.feed-export-row input[type=text]:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 4px #42a5f526;background:var(--bg-secondary)}.feed-comment-group{margin-top:var(--spacing-sm)}.feed-comment-group textarea{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-mono);font-size:.875rem;transition:all .2s ease;box-sizing:border-box;resize:vertical}.feed-comment-group textarea:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 4px #42a5f526;background:var(--bg-secondary)}.feed-file-comment{font-size:.8rem;color:var(--text-primary);opacity:.8;font-style:italic}.feed-confirm-row{display:flex;align-items:center;gap:var(--spacing-md);margin-top:var(--spacing-sm)}.warning-text{color:var(--color-warning, #ff9800);font-size:.85rem}.btn-warning{background:var(--color-warning, #ff9800)!important;border-color:var(--color-warning, #ff9800)!important}.btn-warning:hover{opacity:.9}.feed-divider{border-top:1px solid var(--border-color);margin:var(--spacing-sm) 0}.feed-file-list{display:flex;flex-direction:column;gap:var(--spacing-xs);max-height:300px;overflow-y:auto;margin-bottom:var(--spacing-md)}.feed-file-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;transition:all .2s ease}.feed-file-item:hover,.feed-file-item.selected{border-color:var(--accent-blue);background:var(--bg-secondary)}.feed-file-item input[type=radio]{margin:0;accent-color:var(--accent-blue)}.feed-file-info{display:flex;flex-direction:column;gap:2px}.feed-file-name{font-family:var(--font-mono);font-size:.875rem;color:var(--text-primary)}.feed-file-meta{font-size:.75rem;color:var(--text-secondary)}.feed-import-actions{display:flex;gap:var(--spacing-md);align-items:center}.feed-loading,.feed-empty{color:var(--text-secondary);font-style:italic;font-size:.85rem;padding:var(--spacing-md) 0}.feed-container .success-message{color:var(--color-success, #4caf50);font-size:.85rem;margin-top:var(--spacing-md)}.feed-container .error-message{margin-top:var(--spacing-md)}.sidebar{position:fixed;left:0;top:50px;height:calc(100vh - 50px);background:var(--bg-secondary);border-right:2px solid var(--border-color);display:flex;flex-direction:column;transition:width .3s ease;z-index:50;box-shadow:var(--shadow-lg)}.sidebar.collapsed{width:60px}.sidebar.expanded{width:240px}.sidebar-toggle-wrapper{position:absolute;top:50%;right:-14px;transform:translateY(-50%);z-index:60}.sidebar-toggle{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:50%;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;box-shadow:var(--shadow-md)}.sidebar-toggle:hover{background:var(--primary-blue);border-color:var(--accent-blue);color:var(--accent-blue);transform:scale(1.1);box-shadow:var(--shadow-glow-blue)}.sidebar-toggle:active{transform:scale(.95)}.sidebar-nav{flex:1;min-height:0;display:flex;flex-direction:column;padding:20px 0 1rem;overflow-y:auto;overflow-x:hidden}.sidebar-item{display:flex;align-items:center;gap:.5rem;padding:.75rem;margin:.25rem .5rem;background:transparent;border:none;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;text-align:left;white-space:nowrap;position:relative;border-radius:var(--radius-md);min-width:0}.sidebar-item:hover{background:var(--primary-blue);color:var(--text-primary);transform:translate(2px)}.sidebar-item.active{background:linear-gradient(135deg,var(--primary-blue),var(--medium-blue));color:var(--accent-blue);box-shadow:var(--shadow-md)}.sidebar-item.subsection{padding-left:1.5rem}.sidebar.collapsed .sidebar-item.subsection{padding-left:1rem}.sidebar-item.sub-subsection{padding-left:2.25rem}.sidebar.collapsed .sidebar-item.sub-subsection{padding-left:1rem}.sidebar-item.ai-sub-group{cursor:pointer}.sidebar-item.has-subsections{position:relative;background:transparent}.sidebar-item.has-subsections:hover{background:var(--primary-blue)}.sidebar-item.has-subsections.active{background:linear-gradient(135deg,var(--primary-blue),var(--medium-blue))}.sidebar-expand-toggle{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:transparent;border:none;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;border-radius:var(--radius-sm);flex-shrink:0}.sidebar-expand-toggle:hover{background:var(--bg-tertiary);color:var(--text-primary)}.sidebar-expand-toggle svg{transition:transform .2s ease}.sidebar-expand-toggle.expanded svg{transform:rotate(0)}.sidebar-expand-toggle:not(.expanded) svg{transform:rotate(-90deg)}.sidebar-subsections{overflow:hidden;transition:max-height .3s ease,opacity .2s ease;width:100%}.sidebar-subsections .sidebar-item{width:100%}.sidebar-subsections.expanded{max-height:none;opacity:1;overflow:visible}.sidebar-subsections.collapsed{max-height:0;opacity:0}.sidebar.collapsed .sidebar-subsections{max-height:none;opacity:1}.sidebar-icon{display:flex;align-items:center;justify-content:center;min-width:24px}.sidebar-title{flex:0 1 auto;min-width:0;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-count{padding:.125rem .5rem;background:var(--primary-yellow);border-radius:var(--radius-full);font-size:.75rem;font-weight:600;color:var(--text-primary);box-shadow:var(--shadow-sm);transition:all 3s ease;position:relative;overflow:hidden}.sidebar-item-trailing{display:flex;align-items:center;gap:.5rem;margin-left:auto;flex-shrink:0}.sidebar-item.active .sidebar-count{background:var(--accent-yellow);color:#263238}.sidebar-count.at-limit,.sidebar-item.active .sidebar-count.at-limit{background:#fecaca;color:#7f1d1d}.sidebar-item.active .sidebar-health-percent.health-degraded{background:transparent;color:var(--accent-yellow)}.sidebar-health-percent.health-degraded{background:transparent;color:var(--accent-yellow);box-shadow:none}.sidebar-health-percent.health-critical{animation:health-blink 1s ease-in-out infinite}@keyframes health-blink{0%,to{opacity:1}50%{opacity:0}}.sidebar-count.flashing{animation:counter-flash 3s ease}@keyframes counter-flash{0%{background:var(--accent-yellow);box-shadow:0 0 20px #ffeb3bcc,0 0 40px #ffeb3b80;transform:scale(1.15)}5%{background:var(--accent-yellow);box-shadow:0 0 20px #ffeb3bcc,0 0 40px #ffeb3b80;transform:scale(1.15)}15%{background:var(--primary-yellow);box-shadow:0 0 10px #ffeb3b66,0 0 20px #ffeb3b33;transform:scale(1.08)}30%{background:var(--accent-yellow);box-shadow:0 0 15px #ffeb3b99,0 0 30px #ffeb3b4d;transform:scale(1.1)}50%{background:var(--primary-yellow);box-shadow:0 0 8px #ffeb3b4d,0 0 15px #ffeb3b26;transform:scale(1.05)}70%{background:var(--accent-yellow);box-shadow:0 0 10px #ffeb3b66,0 0 20px #ffeb3b33;transform:scale(1.06)}85%{background:var(--primary-yellow);box-shadow:0 0 5px #ffeb3b33,0 0 10px #ffeb3b1a;transform:scale(1.02)}to{background:var(--primary-yellow);box-shadow:var(--shadow-sm);transform:scale(1)}}.sidebar-item.active .sidebar-count.flashing{animation:counter-flash-active 3s ease}@keyframes counter-flash-active{0%{background:var(--dark-yellow);box-shadow:0 0 20px #f9a825cc,0 0 40px #f9a82580;transform:scale(1.15)}5%{background:var(--dark-yellow);box-shadow:0 0 20px #f9a825cc,0 0 40px #f9a82580;transform:scale(1.15)}15%{background:var(--accent-yellow);box-shadow:0 0 10px #ffeb3b66,0 0 20px #ffeb3b33;transform:scale(1.08)}30%{background:var(--dark-yellow);box-shadow:0 0 15px #f9a82599,0 0 30px #f9a8254d;transform:scale(1.1)}50%{background:var(--accent-yellow);box-shadow:0 0 8px #ffeb3b4d,0 0 15px #ffeb3b26;transform:scale(1.05)}70%{background:var(--dark-yellow);box-shadow:0 0 10px #f9a82566,0 0 20px #f9a82533;transform:scale(1.06)}85%{background:var(--accent-yellow);box-shadow:0 0 5px #ffeb3b33,0 0 10px #ffeb3b1a;transform:scale(1.02)}to{background:var(--accent-yellow);box-shadow:var(--shadow-sm);transform:scale(1)}}.sidebar-nav::-webkit-scrollbar{width:6px}.sidebar-nav::-webkit-scrollbar-track{background:transparent}.sidebar-nav::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}.sidebar-nav::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.system-health{display:flex;flex-direction:column;gap:var(--spacing-lg)}.system-health-overview{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);text-align:center}.health-summary{display:flex;align-items:center;justify-content:center;gap:var(--spacing-lg)}.health-percentage{font-size:2.25rem;font-weight:700;font-family:var(--font-mono);line-height:1}.health-text{display:flex;flex-direction:column;gap:2px}.health-label{font-size:1rem;font-weight:600;color:var(--text-primary)}.health-count{font-size:.8rem;color:var(--text-secondary);font-family:var(--font-mono)}.health-progress-bar{width:100%;height:6px;background:var(--bg-tertiary, rgba(0, 0, 0, .1));border-radius:var(--radius-full, 9999px);overflow:hidden}.health-progress-fill{height:100%;border-radius:var(--radius-full, 9999px);transition:width .5s ease,background-color .5s ease}.layer-group{display:flex;flex-direction:column;gap:6px}.layer-section{display:flex;align-items:center;gap:var(--spacing-sm)}.layer-accent{width:18px;height:2px;border-radius:1px;background:var(--accent-blue, rgba(99, 102, 241, .7))}.layer-label{margin:0;font-family:var(--font-mono);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);white-space:nowrap}.layer-rule{flex:1;height:1px;background:var(--border-color);opacity:.5}.layer-section-ui .layer-accent{background:#22d3eeb3}.layer-section-ai .layer-accent{background:#a855f7b3}.layer-section-api .layer-accent{background:#6366f1b3}.layer-section-mcp .layer-accent{background:#fb923cb3}.layer-section-services .layer-accent{background:#14b8a6b3}.service-row{display:grid;gap:var(--spacing-md)}.service-row-webui{grid-template-columns:1fr}.service-row-ai{grid-template-columns:repeat(2,1fr)}.service-row-backend{grid-template-columns:repeat(5,1fr)}.service-row-mcp{grid-template-columns:1fr}.service-row-daemon{grid-template-columns:repeat(4,1fr)}.service-card{display:flex;align-items:center;justify-content:center;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);border-left:4px solid var(--cyber-red);min-width:0;text-align:center;background-image:linear-gradient(135deg,#ef44442e,#ef44440a)}.service-card.service-connected{border-left-color:var(--cyber-green);background-image:linear-gradient(135deg,#00e6762e,#00e6760a)}.service-card.service-disabled{border-left-color:var(--text-tertiary, #666);background-image:linear-gradient(135deg,#8080801a,#80808005);opacity:.8}.service-card.service-unknown{border-left-color:var(--text-tertiary, #666);background-image:linear-gradient(135deg,#8080801a,#80808005)}.service-info{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0}.system-health .service-name{font-weight:600;font-size:.95rem;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.system-health .service-status{font-size:.85rem;font-family:var(--font-mono);font-weight:600;text-transform:uppercase;letter-spacing:.6px}.system-health .service-status.connected{color:var(--cyber-green)}.system-health .service-status.disconnected{color:var(--cyber-red)}.system-health .service-status.disabled,.system-health .service-status.unknown{color:var(--text-tertiary, #888)}@media(max-width:1100px){.service-row-backend,.service-row-daemon{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){.service-row-ai,.service-row-backend,.service-row-daemon{grid-template-columns:1fr}.health-percentage{font-size:1.875rem}}.kpis-view{display:flex;flex-direction:column;gap:16px;padding:16px;height:100%;box-sizing:border-box}.kpis-header{display:flex;flex-direction:column;gap:4px}.kpis-title{margin:0;font-size:1.25rem;color:var(--text-primary)}.kpis-subtitle{margin:0;font-size:.85rem;color:var(--text-secondary)}.kpis-chart-container{display:flex;flex-direction:column;gap:12px;flex:1;min-height:420px;padding:12px}.kpis-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}.kpis-series-toggles{display:flex;flex-wrap:wrap;gap:8px}.kpis-series-toggle{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;color:var(--text-primary);cursor:pointer;padding:4px 8px;border-radius:var(--radius-sm);border:1px solid var(--border-color);background:var(--surface-color)}.kpis-series-toggle input[type=checkbox]{margin:0;cursor:pointer}.kpis-series-swatch{display:inline-block;width:10px;height:10px;border-radius:2px;flex-shrink:0}.kpis-selects{display:flex;gap:8px;align-items:center}.kpis-select-label{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;color:var(--text-secondary)}.kpis-select{font-size:.8rem;padding:4px 8px;border-radius:var(--radius-sm);border:1px solid var(--border-color);background:var(--surface-color);color:var(--text-primary);cursor:pointer}.kpis-chart{flex:1;min-height:360px}.kpis-empty{flex:1;min-height:360px;display:flex;align-items:center;justify-content:center;font-size:.9rem;color:var(--text-secondary)}.kpis-empty-error{color:var(--cyber-red, #ef4444)}.success-modal-overlay{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:3000;animation:success-fade-in .3s ease}@keyframes success-fade-in{0%{opacity:0}to{opacity:1}}.success-modal-content{background:var(--bg-secondary);border:2px solid var(--success-green, #4caf50);border-radius:var(--radius-md);box-shadow:0 8px 32px #0009,0 0 0 4px #4caf501a;min-width:400px;max-width:500px;padding:var(--spacing-xl);text-align:center;animation:success-slide-up .4s cubic-bezier(.34,1.56,.64,1)}@keyframes success-slide-up{0%{transform:translateY(50px) scale(.9);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.success-icon{display:inline-flex;align-items:center;justify-content:center;width:80px;height:80px;margin:0 auto var(--spacing-lg);background:#4caf501a;border-radius:50%;color:var(--success-green, #4caf50);animation:success-icon-pop .5s cubic-bezier(.34,1.56,.64,1) .2s both}@keyframes success-icon-pop{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.success-icon svg{width:64px;height:64px;stroke-width:2.5}.success-title{margin:0 0 var(--spacing-md) 0;font-size:1.5rem;color:var(--text-primary);font-weight:600}.success-message{margin:0 0 var(--spacing-xl) 0;color:var(--text-secondary);font-size:.9375rem;line-height:1.6}.btn-success{width:100%;padding:var(--spacing-md) var(--spacing-lg);background:linear-gradient(135deg,#4caf50,#66bb6a);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.9375rem;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #4caf504d}.btn-success:hover{transform:translateY(-2px);box-shadow:0 4px 16px #4caf5080}.btn-success:active{transform:translateY(0)}.modal-support{min-width:450px;max-width:550px}.support-description{margin:0 0 var(--spacing-lg) 0;color:var(--text-secondary);font-size:.9375rem;line-height:1.6;padding:var(--spacing-md);background:#42a5f51a;border-left:3px solid var(--accent-blue);border-radius:var(--radius-sm)}.modal-support textarea{width:100%;padding:var(--spacing-md);background:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-primary);font-size:.9rem;line-height:1.5;resize:vertical;min-height:120px;transition:all .2s ease}.modal-support textarea:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 4px #42a5f526;background:var(--bg-secondary)}.modal-support textarea::placeholder{color:var(--text-secondary);opacity:.6}.modal-support textarea:disabled{opacity:.6;cursor:not-allowed}.modal-support select,.modal-support input[type=number]{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-primary);font-size:.9rem;transition:all .2s ease}.modal-support select:focus,.modal-support input[type=number]:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 4px #42a5f526;background:var(--bg-secondary)}.modal-support select:disabled,.modal-support input[type=number]:disabled{opacity:.6;cursor:not-allowed}.modal-support select option{background:var(--bg-secondary);color:var(--text-primary)}.modal-error{max-width:480px}.modal-header-error{border-bottom-color:var(--cyber-red)}.modal-header-error h2{color:var(--cyber-red);flex:1}.error-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#ff525226;border-radius:var(--radius-full);color:var(--cyber-red);margin-right:var(--spacing-md);flex-shrink:0}.error-message-text{margin:0 0 var(--spacing-md) 0;color:var(--text-primary);font-size:.9375rem;line-height:1.6}.error-details{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-md);overflow-x:auto}.error-details code{font-family:var(--font-mono);font-size:.75rem;color:var(--text-secondary);word-break:break-all}.chat-dialog-overlay{position:fixed;inset:0;background:transparent;pointer-events:none;z-index:1000}.chat-dialog{position:absolute;background:var(--bg-primary);border:2px solid var(--border-color);border-radius:var(--radius-xl);display:flex;flex-direction:column;box-shadow:0 20px 60px #42a5f54d;animation:slideUp .3s ease-out;overflow:hidden;pointer-events:auto;min-width:320px;min-height:250px}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.chat-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md) var(--spacing-lg);border-bottom:2px solid var(--border-color);background:var(--bg-secondary);cursor:grab;-webkit-user-select:none;user-select:none}.chat-header:active{cursor:grabbing}.chat-title{display:flex;align-items:center;gap:var(--spacing-sm);font-family:var(--font-mono);font-weight:600;font-size:1rem;color:var(--accent-blue)}.chat-icon{font-size:1.5rem;color:var(--text-primary)}.chat-model{font-size:.75rem;color:var(--text-primary);font-weight:600;padding:4px 10px;background:var(--primary-yellow);border-radius:var(--radius-full);border:1px solid var(--accent-yellow);box-shadow:var(--shadow-sm)}.chat-close-btn{background:none;border:none;color:var(--text-secondary);font-size:2rem;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all .2s ease}.chat-close-btn:hover{background:var(--primary-blue);color:var(--text-primary)}.chat-header-buttons{display:flex;align-items:center;gap:var(--spacing-xs)}.chat-reset-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all .2s ease}.chat-reset-btn:hover:not(:disabled){background:var(--primary-blue);color:var(--text-primary)}.chat-reset-btn:disabled{opacity:.3;cursor:not-allowed}.chat-messages{flex:1;overflow-y:auto;padding:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-md)}.chat-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-secondary)}.chat-loading .loading-spinner{width:40px;height:40px;border:3px solid var(--primary-blue);border-top-color:var(--accent-blue);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:var(--spacing-md)}.chat-message{display:flex;gap:var(--spacing-sm);animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.chat-message.user{flex-direction:row-reverse}.message-avatar{flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:1.25rem;color:var(--text-primary);background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:50%}.message-content{flex:1;max-width:80%}.message-text{padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);font-size:.875rem;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}.chat-message.user .message-text{background:linear-gradient(135deg,var(--primary-blue),var(--accent-blue));color:var(--text-primary);border:1px solid var(--accent-blue)}.chat-message.assistant .message-text{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color)}.chat-config-link{display:inline;background:none;border:none;padding:0;margin:0;font:inherit;color:var(--accent-blue);text-decoration:underline;cursor:pointer}.chat-config-link:hover{text-decoration:none}.typing-indicator{display:flex;gap:4px;padding:var(--spacing-md)}.typing-indicator span{width:8px;height:8px;background:var(--accent-blue);border-radius:50%;animation:bounce 1.4s infinite ease-in-out both}.typing-indicator span:nth-child(1){animation-delay:-.32s}.typing-indicator span:nth-child(2){animation-delay:-.16s}@keyframes bounce{0%,80%,to{transform:scale(0);opacity:.5}40%{transform:scale(1);opacity:1}}.chat-input-container{padding:var(--spacing-md) var(--spacing-lg);border-top:2px solid var(--border-color);background:var(--bg-secondary)}.chat-input-row{display:flex;gap:var(--spacing-sm);align-items:flex-end}.chat-input{flex:1;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-primary);border:2px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-mono);font-size:.875rem;resize:none;min-height:40px;max-height:120px;transition:border-color .2s ease}.chat-input:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 1px var(--accent-blue)}.chat-input:disabled{opacity:.5;cursor:not-allowed}.chat-send-btn{padding:var(--spacing-sm) var(--spacing-lg);background:linear-gradient(135deg,var(--primary-blue),var(--accent-blue));color:#fff;border:none;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease;min-width:70px}.chat-send-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:var(--shadow-glow-blue)}.chat-send-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.chat-stop-btn{background:linear-gradient(135deg,#e53935,#ff5252)!important}.chat-stop-btn:hover{box-shadow:0 0 12px #e5393580!important}.chat-tool-count{display:flex;align-items:center;gap:4px;font-size:.7rem;color:var(--text-secondary);font-weight:600;padding:3px 8px;background:var(--bg-tertiary);border-radius:var(--radius-full);border:1px solid var(--border-color)}.chat-tools-toggle{position:relative;background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all .2s ease}.chat-tools-toggle:hover{color:var(--text-primary);background:var(--bg-tertiary)}.chat-tools-toggle.active{color:var(--accent-blue)}.chat-tools-toggle.active:hover{background:var(--bg-tertiary)}.chat-tools-cross{position:absolute;top:50%;left:50%;width:24px;height:2px;background:var(--cyber-red, #ef5350);transform:translate(-50%,-50%) rotate(-45deg);pointer-events:none;border-radius:1px}.chat-message.tool-event{gap:var(--spacing-xs)}.chat-message.tool-event .tool-avatar{width:24px;height:24px;min-width:24px;background:transparent;border:none;color:var(--text-secondary)}.chat-message.tool-event .message-content{max-width:100%}.chat-message.tool-event .message-text{font-size:.8rem;font-family:var(--font-mono);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-color)}.chat-message.tool-event-call .tool-avatar{color:var(--accent-blue)}.chat-message.tool-event-call .message-text{border-left:3px solid var(--accent-blue)}.chat-message.tool-event-result .tool-avatar{color:var(--cyber-green, #4caf50)}.chat-message.tool-event-result .message-text{border-left:3px solid var(--cyber-green, #4caf50)}.chat-message.tool-event-error .tool-avatar{color:var(--cyber-red, #ef5350)}.chat-message.tool-event-error .message-text{border-left:3px solid var(--cyber-red, #ef5350);color:var(--cyber-red, #ef5350)}.chat-messages::-webkit-scrollbar{width:8px}.chat-messages::-webkit-scrollbar-track{background:var(--bg-primary)}.chat-messages::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:var(--radius-sm)}.chat-messages::-webkit-scrollbar-thumb:hover{background:var(--medium-blue)}.chat-resize-handle{position:absolute;z-index:10}.chat-resize-n,.chat-resize-s{left:8px;right:8px;height:6px;cursor:ns-resize}.chat-resize-e,.chat-resize-w{top:8px;bottom:8px;width:6px;cursor:ew-resize}.chat-resize-n{top:-3px}.chat-resize-s{bottom:-3px}.chat-resize-e{right:-3px}.chat-resize-w{left:-3px}.chat-resize-ne,.chat-resize-nw,.chat-resize-se,.chat-resize-sw{width:12px;height:12px}.chat-resize-ne{top:-3px;right:-3px;cursor:nesw-resize}.chat-resize-nw{top:-3px;left:-3px;cursor:nwse-resize}.chat-resize-se{bottom:-3px;right:-3px;cursor:nwse-resize}.chat-resize-sw{bottom:-3px;left:-3px;cursor:nesw-resize}@media(max-width:768px){.chat-dialog{width:calc(100vw - 20px)!important;height:80vh!important}.message-content{max-width:85%}.chat-resize-handle{display:none}}.chat-fab{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--primary-blue),var(--accent-blue));border:none;box-shadow:var(--shadow-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;color:var(--text-primary)}@keyframes pulse-glow{0%,90%,to{transform:scale(1);box-shadow:var(--shadow-sm)}93%{transform:scale(1.15);box-shadow:0 0 20px #ffd54f99,0 0 40px #ffd54f4d}96%{transform:scale(1);box-shadow:var(--shadow-sm)}}.chat-fab:hover{transform:translateY(-1px);box-shadow:var(--shadow-glow-blue)}.chat-fab:active{transform:translateY(0)}.chat-fab:disabled,.chat-fab--disabled{cursor:not-allowed;transform:none;box-shadow:none;background:var(--bg-tertiary);animation:none}.chat-fab:disabled:hover,.chat-fab--disabled:hover{transform:none;box-shadow:none}.chat-fab:disabled svg,.chat-fab--disabled svg{opacity:1}.chat-fab svg{flex-shrink:0}.theme-toggle-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-full);color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.theme-toggle-btn:hover{border-color:var(--accent-blue);color:var(--accent-blue);background:var(--primary-blue)}.theme-toggle-btn:active{transform:scale(.95)}.theme-toggle-btn svg{transition:transform .3s ease}.theme-toggle-btn:hover svg{transform:rotate(15deg)}.app{height:100vh;display:flex;flex-direction:column;overflow:hidden}.app-header{position:fixed;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:calc(var(--spacing-lg) * .2) var(--spacing-xl);gap:var(--spacing-lg);background:var(--bg-primary);border-bottom:2px solid var(--border-color);width:100%;z-index:100}.app-body{flex:1;display:flex;min-height:0;margin-top:50px}.app-main{flex:1;display:flex;flex-direction:column;transition:margin-left .3s ease;min-height:0}.app-main.sidebar-expanded{margin-left:240px}.app-main.sidebar-collapsed{margin-left:60px}.header-left{flex:1;display:flex;justify-content:flex-start}.header-controls{display:flex;gap:var(--spacing-md);align-items:center}.header-right{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:var(--spacing-md)}.header-controls .upload-zone{width:36px;height:36px;min-width:36px;min-height:36px;max-width:36px;max-height:36px;padding:0}.header-controls .upload-icon{display:flex;align-items:center;justify-content:center;margin:0;flex-shrink:0}.btn-auth{padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-full);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease;border:none;font-family:var(--font-mono);background:linear-gradient(135deg,var(--primary-blue),var(--accent-blue));color:#fff}.btn-auth:hover{transform:translateY(-1px);box-shadow:var(--shadow-glow-blue)}.btn-auth.btn-danger{background:linear-gradient(135deg,var(--cyber-red),#c82333)}.btn-auth.btn-danger:hover{box-shadow:0 0 20px #dc354580}.btn-auth.btn-support{background:linear-gradient(135deg,var(--medium-yellow),var(--accent-yellow));color:var(--text-primary)}.btn-auth.btn-support:hover{box-shadow:var(--shadow-glow-yellow)}.btn-auth.btn-message{background:linear-gradient(135deg,var(--accent-blue),var(--medium-blue));color:#fff}.btn-auth.btn-message:hover{box-shadow:var(--shadow-glow-blue)}.session-expiry-badge{display:inline-flex;align-items:center;padding:var(--spacing-xs) var(--spacing-md);background:#42a5f526;border:1px solid rgba(66,165,245,.5);border-radius:var(--radius-full);font-size:.75rem;font-weight:500;font-family:var(--font-mono);color:#90caf9;cursor:default;transition:all .2s ease}.session-expiry-badge:hover{background:#42a5f540;box-shadow:0 0 10px #42a5f54d}.btn-caller-ip{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-md);background:linear-gradient(135deg,var(--primary-blue),var(--accent-blue));border:none;border-radius:var(--radius-md);color:#fff;font-size:.8rem;font-weight:500;font-family:var(--font-mono);cursor:pointer;transition:all .2s ease;white-space:nowrap;flex-shrink:0}.btn-caller-ip:hover:not(:disabled){transform:translateY(-1px);box-shadow:var(--shadow-glow-blue)}.btn-caller-ip:disabled{opacity:.5;cursor:not-allowed}.btn-caller-ip svg{flex-shrink:0}.btn-global-act{position:relative;display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;background:linear-gradient(135deg,#22c55e,#16a34a);border:none;border-radius:50%;color:#fff;cursor:pointer;transition:all .2s ease;flex-shrink:0}.btn-global-act:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #22c55e66}.btn-global-act:disabled{opacity:1;cursor:not-allowed;background:var(--bg-tertiary);color:var(--text-tertiary)}.btn-global-act.is-evaluating{background:linear-gradient(135deg,#3b82f6,#2563eb);animation:act-evaluating-pulse 1s ease-in-out infinite;pointer-events:none}@keyframes act-evaluating-pulse{0%,to{opacity:1;box-shadow:0 0 #3b82f666}50%{opacity:.8;box-shadow:0 0 12px 4px #3b82f64d}}.btn-global-act svg{flex-shrink:0}.btn-global-act-badge{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;animation:act-badge-fade 10s ease-in-out infinite;z-index:1;min-width:24px;height:auto;aspect-ratio:1;padding:4px;border-radius:50%;display:flex;align-items:center;justify-content:center;line-height:1;box-sizing:content-box}@keyframes act-badge-fade{0%,80%{opacity:0}90%{opacity:1}to{opacity:0}}.app-content{max-width:1400px;width:100%;margin:0 auto;padding:32px var(--spacing-xl) var(--spacing-xl) var(--spacing-xl);flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto}.upload-progress-list{max-width:1200px;width:100%;margin:var(--spacing-lg) auto;padding:var(--spacing-lg) var(--spacing-xl);background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.upload-progress-list h3{margin:0 0 var(--spacing-md) 0;font-size:1rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:1px}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-xl);color:var(--text-secondary)}.loading-spinner{width:48px;height:48px;border:4px solid var(--primary-blue);border-top:4px solid var(--accent-blue);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:var(--spacing-md)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-state p{font-family:var(--font-mono);font-size:.875rem}.tabs{display:none}.tab,.tab.active,.tab.active:after,.tab-count,.tab.active .tab-count,.tab:hover .tab-count{display:none}.tab.active{color:var(--accent-blue);border-bottom-color:var(--accent-blue)}.tab.active:after{content:"";position:absolute;bottom:-5px;left:50%;transform:translate(-50%);width:6px;height:6px;background:var(--accent-blue);border-radius:50%;animation:pulse 2s ease-in-out infinite}.tab-count{font-size:.75rem;font-weight:700;margin-left:var(--spacing-xs);padding:2px 6px;background:var(--primary-blue);border:1px solid var(--medium-blue);border-radius:var(--radius-sm);color:var(--text-secondary);opacity:.8}.tab.active .tab-count{background:#2196f326;border-color:var(--accent-blue);color:var(--accent-blue);opacity:1}.tab:hover .tab-count{opacity:1}@media(max-width:1024px){.app-header{flex-wrap:wrap}}@media(max-width:768px){.app-container{padding:var(--spacing-md)}.app-header{flex-direction:column;align-items:stretch;padding:var(--spacing-md)}.header-left{width:100%}.header-controls{flex-direction:column}}
