@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&family=Plus+Jakarta+Sans:wght@500;600;700;800&display=swap");:root{--panel-bg:rgba(15,23,42,.04);--font-family:"IBM Plex Sans",system-ui,-apple-system,sans-serif;--font-mono:"IBM Plex Mono","JetBrains Mono",monospace;--text-xs:11px;--text-sm:12.5px;--text-base:14px;--text-lg:16px;--text-xl:19px;--text-2xl:23px;--bg:#f5f7fb;--bg-grad:radial-gradient(ellipse at top,#e8edf6 0%,#f5f7fb 60%);--panel:hsla(0,0%,100%,.78);--panel-solid:#fff;--panel-border:rgba(15,23,42,.08);--panel-shadow:0 4px 24px rgba(15,23,42,.08);--text:#0f172a;--text-muted:#64748b;--text-faint:#94a3b8;--accent:#0d9488;--accent-2:#7c3aed;--accent-grad:linear-gradient(135deg,#0d9488,#7c3aed);--success:#10b981;--warn:#f59e0b;--danger:#ef4444;--info:#3b82f6;--user-bubble:linear-gradient(135deg,#0d9488,#0ea5e9);--user-text:#fff;--assistant-bubble:rgba(15,23,42,.04);--assistant-text:#0f172a;--row-hover:rgba(13,148,136,.06);--grid-track:rgba(15,23,42,.05);--brand-teal:#2dd4bf;--brand-blue:#6d8ff0;--brand-purple:#a78bfa;--brand-pink:#ec4899;--brand-amber:#f5a623;--brand-grad:linear-gradient(90deg,#34d399,#6d8ff0 45%,#c084fc 75%,#ec4899);--brand-grad-soft:linear-gradient(135deg,rgba(245,158,11,.12),rgba(236,72,153,.09));--brand-cta-grad:linear-gradient(135deg,#14b8a6,#0ea5e9);--brand-grad-cool:linear-gradient(90deg,#38bdf8,#6d8ff0);--brand-grad-warm:linear-gradient(90deg,#f59e0b,#ec4899)}.dark,[data-theme=dark]{--panel-bg:#0d1524;--bg:#0a0e1a;--bg-grad:radial-gradient(ellipse at top,#131b2e 0%,#0a0e1a 60%);--panel:rgba(20,27,45,.7);--panel-solid:#131b2e;--panel-border:rgba(148,163,184,.12);--panel-shadow:0 4px 32px rgba(0,0,0,.45);--text:#e6edf6;--text-muted:#c8d3e0;--text-faint:#a3b3c7;--accent:#2dd4bf;--accent-2:#c084fc;--accent-grad:linear-gradient(135deg,#2dd4bf,#c084fc);--user-bubble:linear-gradient(135deg,#2dd4bf,#0ea5e9);--user-text:#fff;--assistant-bubble:rgba(148,163,184,.08);--assistant-text:#e6edf6;--row-hover:rgba(45,212,191,.12);--grid-track:rgba(148,163,184,.06)}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;font-family:var(--font-family);background:var(--bg);background-image:var(--bg-grad);color:var(--text);font-size:var(--text-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{scrollbar-width:auto;scrollbar-color:rgba(148,163,184,.45) rgba(148,163,184,.08)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:rgba(148,163,184,.08);border-radius:10px}::-webkit-scrollbar-thumb{background:rgba(148,163,184,.45);border-radius:10px;border:2px solid transparent;background-clip:padding-box;-webkit-transition:background .2s ease;transition:background .2s ease}::-webkit-scrollbar-thumb:hover{background:rgba(148,163,184,.75);border-radius:10px;background-clip:padding-box}::-webkit-scrollbar-corner{background:transparent}button,input,textarea{font-family:inherit}input,textarea{color:var(--text)}.panel{background:var(--panel);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);border:1px solid var(--panel-border);border-radius:14px;box-shadow:var(--panel-shadow);overflow:hidden;display:flex;flex-direction:column;height:100%}.panel-header{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--panel-border);font-weight:600;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);-webkit-user-select:none;-moz-user-select:none;user-select:none}.panel-header .icon{color:var(--accent);display:inline-flex}.panel-body{flex:1 1;min-height:0;overflow:auto;padding:14px}.panel-body.flush{padding:0}.dashboard-scroll{flex:1 1;overflow:auto;padding:16px}.dashboard-grid{display:flex;flex-direction:column;gap:14px}.dash-kpi{flex-shrink:0}.dash-row-top{display:flex;gap:14px;height:520px;flex-shrink:0}.dash-chat{flex:1 1;min-width:0;display:flex;flex-direction:column}.dash-chat>.panel{flex:1 1;min-height:0}.dash-activity{flex:1 1;min-width:0;display:flex;flex-direction:column}.dash-activity>.panel{flex:1 1;min-height:0}.dash-patches{flex-shrink:0;height:540px}.dash-patches>.panel{height:100%}.dash-row-bottom{display:flex;gap:14px;flex-shrink:0}.dash-assets,.dash-risk,.dash-similar{flex:1 1;min-width:0;height:340px}.dash-row-bottom>div>.panel{height:100%}@media (max-width:1200px){.dash-row-top{flex-direction:column;height:auto}.dash-chat{min-height:480px}.dash-activity{min-height:400px}.dash-row-bottom{flex-wrap:wrap}.dash-assets,.dash-risk,.dash-similar{min-width:260px;flex-basis:30%;height:300px}}@media (max-width:768px){.dash-row-bottom{flex-direction:column}.dash-assets,.dash-risk,.dash-similar{min-width:0;flex-basis:auto;height:300px}}.sidebar{width:230px;background:var(--panel-solid);border-right:1px solid var(--panel-border);display:flex;flex-direction:column;padding:18px 12px;flex-shrink:0}.brand{display:flex;align-items:center;gap:10px;padding:6px 8px 18px;font-weight:700;font-size:16px}.brand .logo{width:32px;height:32px;border-radius:8px;background:var(--accent-grad);display:grid;place-items:center;color:#fff;box-shadow:0 4px 16px rgba(79,70,229,.3)}.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;color:var(--text-muted);cursor:pointer;font-weight:500;transition:all .15s;border:none;background:none;width:100%;text-align:left}.nav-item:hover{background:var(--row-hover);color:var(--text)}.nav-item.active{background:var(--accent-grad);color:#fff;box-shadow:0 4px 12px rgba(79,70,229,.25)}.topbar{display:flex;align-items:center;gap:12px;padding:14px 22px;border-bottom:1px solid var(--panel-border);background:var(--panel-solid)}.topbar h1{margin:0;font-size:18px;font-weight:600}.topbar .spacer{flex:1 1}.icon-btn{width:36px;height:36px;border-radius:8px;display:grid;place-items:center;border:1px solid var(--panel-border);background:var(--panel-solid);color:var(--text-muted);cursor:pointer;transition:all .15s}.icon-btn:hover{color:var(--accent);border-color:var(--accent)}.mode-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:var(--row-hover);color:var(--accent);font-size:11px;font-weight:600;letter-spacing:.04em}.chat-window{flex-direction:column;overflow:hidden}.chat-stream,.chat-window{display:flex;flex:1 1;min-height:0}.chat-stream{overflow-y:auto;padding:14px;flex-direction:column;gap:10px}.chat-row{display:flex;flex-shrink:0}.chat-row.user{justify-content:flex-end}.chat-row.assistant{justify-content:flex-start}.bubble{max-width:85%;padding:10px 14px;border-radius:14px;white-space:pre-wrap;line-height:1.55;word-wrap:break-word}.bubble.user{background:var(--user-bubble);color:var(--user-text)}.bubble.assistant{background:var(--assistant-bubble);color:var(--assistant-text)}.chat-input-row{display:flex;gap:8px;padding:12px;border-top:1px solid var(--panel-border);flex-shrink:0}.chat-input{flex:1 1;padding:10px 14px;border-radius:10px;border:1px solid var(--panel-border);background:var(--panel-solid);outline:none}.chat-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(79,70,229,.12)}.btn-primary{padding:10px 18px;border-radius:10px;border:none;background:var(--accent-grad);color:#fff;cursor:pointer;font-weight:600;transition:transform .1s,box-shadow .15s}.btn-primary:hover{box-shadow:0 4px 14px rgba(79,70,229,.35)}.btn-primary:active{transform:scale(.98)}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.marketplace-shell{background:linear-gradient(120deg,#111d2d,#16233a 54%,#1f2133);border-color:rgba(139,158,196,.2)}.marketplace-header{background:linear-gradient(90deg,rgba(17,53,57,.76),rgba(26,35,61,.8),rgba(67,39,46,.72));border-bottom-color:rgba(148,163,184,.18);font-family:"Plus Jakarta Sans",var(--font-family);letter-spacing:.035em}.marketplace-body{background:linear-gradient(180deg,rgba(10,18,31,.08),rgba(10,16,28,.03))}.marketplace-add-btn{font-family:"Plus Jakarta Sans",var(--font-family);font-weight:700!important;letter-spacing:.01em;border-radius:10px!important;padding:7px 14px!important;background:linear-gradient(135deg,#4c4fe5,#6a49d9 48%,#2a67d6)!important;box-shadow:0 8px 22px rgba(64,78,214,.32)}.marketplace-add-btn:hover{filter:brightness(1.05)}.marketplace-count-label{letter-spacing:.012em;font-weight:500!important}.marketplace-status-chip{padding:3px 10px!important}.marketplace-filter-chip,.marketplace-status-chip{border-radius:999px!important;letter-spacing:.01em}.marketplace-filter-chip{padding:5px 12px!important;min-height:30px;font-weight:600}.marketplace-filter-chip.active{box-shadow:inset 0 0 0 1px rgba(129,140,248,.25)}.onboarding-overlay{background:linear-gradient(rgba(4,8,16,.84),rgba(4,8,16,.84)),linear-gradient(122deg,#12252b,#1a2644 45%,#2b2140 72%,#3f2b21)!important;background-size:100% 100%,100% 100%}.onboarding-modal-surface{font-family:"Plus Jakarta Sans",var(--font-family);background:linear-gradient(180deg,#101929,#101827)!important;border-color:rgba(145,167,206,.22)!important;box-shadow:0 24px 64px rgba(0,0,0,.5)!important}.onboarding-modal-header{background:linear-gradient(90deg,rgba(27,40,61,.82),rgba(33,43,66,.84),rgba(41,44,67,.82))!important}.onboarding-stepper-wrap{background:linear-gradient(180deg,rgba(123,142,185,.05),rgba(123,142,185,0));padding-top:18px!important}.onboarding-content-wrap{background:rgba(13,22,39,.08)}.onboarding-footer-note{background:linear-gradient(180deg,rgba(15,24,41,.86),rgba(15,24,41,.8))}.onboarding-modal-surface button{border-radius:10px!important;letter-spacing:.01em}@media (max-width:768px){.marketplace-shell,.onboarding-modal-surface,.onboarding-overlay{background-size:100% 100%,100% 100%!important}}.event{display:flex;gap:10px;padding:10px 12px;border-bottom:1px solid var(--panel-border);font-size:12.5px}.event:last-child{border-bottom:none}.event .icon-bubble{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;background:var(--row-hover);color:var(--accent)}.event.error .icon-bubble{background:rgba(239,68,68,.12);color:var(--danger)}.event.warn .icon-bubble{background:rgba(245,158,11,.12);color:var(--warn)}.event-meta{display:flex;flex-direction:column;min-width:0}.event-source{font-weight:600;color:var(--text);display:flex;gap:8px;align-items:center}.event-source .badge{font-size:10px;padding:2px 6px;border-radius:4px;background:var(--row-hover);color:var(--text-muted);font-weight:500}.event-msg{color:var(--text-muted);margin-top:2px;word-break:break-word}.event-time{color:var(--text-faint);font-size:10.5px;margin-top:2px}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));grid-gap:12px;gap:12px}.kpi{padding:14px;border-radius:10px;background:var(--panel-solid);border:1px solid var(--panel-border)}.kpi .label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.kpi .value{font-size:26px;font-weight:700;margin-top:6px}.kpi .delta{font-size:11px;color:var(--text-faint);margin-top:4px}.kpi.critical .value{color:var(--danger)}.kpi.high .value{color:var(--warn)}.kpi.ok .value{color:var(--success)}.tbl{width:100%;border-collapse:collapse;font-size:12.5px}.tbl th{text-align:left;font-weight:600;color:var(--text-muted);text-transform:uppercase;font-size:10.5px;letter-spacing:.04em;position:-webkit-sticky;position:sticky;top:0;background:var(--panel-solid)}.tbl td,.tbl th{padding:8px 12px;border-bottom:1px solid var(--panel-border)}.tbl td{color:var(--text)}.tbl tr:hover td{background:var(--row-hover)}.sev-pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.sev-Critical{background:rgba(239,68,68,.15);color:var(--danger)}.sev-High,.sev-Important{background:rgba(245,158,11,.15);color:var(--warn)}.sev-Medium,.sev-Moderate{background:rgba(59,130,246,.15);color:var(--info)}.sev-Low{background:rgba(100,116,139,.15);color:var(--text-muted)}.sev-None,.sev-n\/a{background:rgba(100,116,139,.08);color:var(--text-faint)}.react-grid-item.react-grid-placeholder{background:var(--accent)!important;opacity:.18!important;border-radius:14px!important}.react-grid-item>.react-resizable-handle:after{border-color:var(--text-muted)!important}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.empty{text-align:center;padding:40px 20px;color:var(--text-muted);font-size:13px}.empty .icon{color:var(--text-faint);margin-bottom:10px}.shimmer{background:linear-gradient(90deg,transparent,var(--row-hover),transparent);background-size:200% 100%;animation:shimmer 1.4s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.nav-item.sub{font-size:12px;opacity:.85}.chip{font-size:11px;padding:3px 10px;border-radius:12px;border:1px solid var(--panel-border);background:transparent;color:var(--text-muted);cursor:pointer;font-weight:500;transition:all .15s}.chip:hover{color:var(--accent)}.chip.active,.chip:hover{border-color:var(--accent)}.chip.active{background:var(--accent);color:#fff}.btn-sm{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:4px 8px;border-radius:4px;border:1px solid var(--panel-border);background:transparent;color:var(--text-muted);cursor:pointer;font-weight:500}.btn-sm:hover{border-color:var(--accent);color:var(--accent)}.card{background:var(--panel);border:1px solid var(--panel-border);border-radius:8px;transition:box-shadow .15s}.card:hover{box-shadow:var(--panel-shadow)}@keyframes slideIn{0%{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}.spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.pulse{animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.dash-tech{grid-column:1/-1}.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;-moz-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;-moz-user-select:none;-o-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}.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-e,.react-grid-item>.react-resizable-handle.react-resizable-handle-w{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)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+");background-position:100% 100%;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-e,.react-resizable-handle-w{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}