:root{--color-bg: #080a0f;--color-bg-elevated: #0e131b;--color-surface-1: rgba(15, 21, 30, .9);--color-surface-2: rgba(18, 26, 38, .94);--color-surface-3: rgba(22, 32, 46, .96);--color-text-primary: #e9eef7;--color-text-secondary: #a7b4c8;--color-text-muted: #6f7f96;--color-border-subtle: rgba(153, 176, 207, .14);--color-border-strong: rgba(153, 176, 207, .28);--color-accent-primary: #34d399;--color-accent-primary-strong: #10b981;--color-accent-secondary-glow: rgba(5, 150, 105, .2);--accent-fn: #10b981;--accent-class: #34d399;--accent-entry: #5eead4;--accent-ghost: #fb7185;--accent-info: var(--color-accent-primary-strong);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--radius-sm: 10px;--radius-md: 12px;--radius-lg: 14px;--shadow-soft: 0 8px 30px rgba(0, 0, 0, .35);--shadow-panel: 0 16px 42px rgba(0, 0, 0, .44);--shadow-primary: 0 0 0 1px rgba(16, 185, 129, .16), 0 0 26px rgba(16, 185, 129, .14);--shadow-purple-glow: 0 0 38px -12px var(--color-accent-secondary-glow);--shadow-glow: 0 0 30px -5px;--header-bg: linear-gradient(180deg, rgba(18, 26, 38, .95), rgba(13, 19, 28, .92));--panel-gradient: linear-gradient(180deg, rgba(12, 19, 28, .97), rgba(10, 15, 23, .97));--sidebar-bg: #0c0c16;--panel-solid-bg: #0d0d18;--panel-header-bg: rgba(15, 15, 28, .95);--button-bg: linear-gradient(180deg, rgba(26, 37, 54, .96), rgba(18, 27, 41, .96));--surface-subtle: rgba(255, 255, 255, .04);--surface-soft: rgba(255, 255, 255, .06);--surface-softer: rgba(255, 255, 255, .03);--surface-pill: rgba(255, 255, 255, .05);--surface-selection: rgba(16, 185, 129, .08);--surface-selection-strong: rgba(16, 185, 129, .12);--surface-accent: rgba(16, 185, 129, .06);--search-focus-bg: rgba(16, 185, 129, .06);--node-border: rgba(255, 255, 255, .08);--overlay-backdrop: rgba(0, 0, 0, .6);--title-gradient-start: #eef5ff;--title-gradient-end: #9fb3cd;--code-text: #c9d1d9;--code-text-strong: #e2e8f0;--code-line-number: rgba(100, 116, 139, .4);--upload-overlay-bg: #0C0F0D;--upload-text: #E8EBE9;--upload-muted: #6B8F7B;--upload-accent: #2A4A3A;--upload-accent-text: #6B8F7B;--upload-accent-faint: rgba(42, 74, 58, .2);--upload-border: rgba(42, 74, 58, .35);--upload-border-hover: rgba(42, 74, 58, .55);--upload-surface-hover: rgba(42, 74, 58, .06);--upload-surface-active: rgba(42, 74, 58, .1);--upload-btn-hover-text: #E8EBE9;--bg-color: var(--color-bg);--bg-surface: var(--color-surface-1);--panel-bg: var(--color-surface-2);--text-primary: var(--color-text-primary);--text-secondary: var(--color-text-secondary);--text-muted: var(--color-text-muted);--border-subtle: var(--color-border-subtle);--border-light: var(--color-border-strong)}[data-theme=light]{--color-bg: #e7edf4;--color-bg-elevated: #f7f9fc;--color-surface-1: rgba(249, 251, 253, .88);--color-surface-2: rgba(243, 246, 250, .94);--color-surface-3: rgba(234, 239, 246, .96);--color-text-primary: #162033;--color-text-secondary: #45556e;--color-text-muted: #6b7b92;--color-border-subtle: rgba(51, 65, 85, .12);--color-border-strong: rgba(51, 65, 85, .22);--color-accent-primary: #059669;--color-accent-primary-strong: #047857;--color-accent-secondary-glow: rgba(5, 150, 105, .12);--accent-fn: #047857;--accent-class: #059669;--accent-entry: #0ea5e9;--accent-ghost: #e11d48;--accent-info: var(--color-accent-primary-strong);--shadow-soft: 0 4px 16px rgba(0, 0, 0, .08);--shadow-panel: 0 8px 24px rgba(0, 0, 0, .1);--shadow-primary: 0 0 0 1px rgba(5, 150, 105, .2), 0 0 16px rgba(4, 120, 87, .08);--shadow-purple-glow: 0 0 24px -8px var(--color-accent-secondary-glow);--shadow-glow: 0 0 20px -5px;--header-bg: linear-gradient(180deg, rgba(247, 250, 252, .92), rgba(236, 241, 247, .96));--panel-gradient: linear-gradient(180deg, rgba(249, 251, 254, .96), rgba(236, 241, 247, .98));--sidebar-bg: rgba(241, 245, 250, .95);--panel-solid-bg: rgba(246, 249, 253, .98);--panel-header-bg: rgba(237, 242, 248, .95);--button-bg: linear-gradient(180deg, rgba(255, 255, 255, .96), rgba(237, 242, 248, .98));--surface-subtle: rgba(148, 163, 184, .12);--surface-soft: rgba(148, 163, 184, .18);--surface-softer: rgba(148, 163, 184, .08);--surface-pill: rgba(148, 163, 184, .14);--surface-selection: rgba(5, 150, 105, .1);--surface-selection-strong: rgba(5, 150, 105, .16);--surface-accent: rgba(5, 150, 105, .08);--search-focus-bg: rgba(5, 150, 105, .12);--node-border: rgba(69, 85, 110, .18);--overlay-backdrop: rgba(15, 23, 42, .18);--title-gradient-start: #162033;--title-gradient-end: #52637b;--code-text: #223047;--code-text-strong: #162033;--code-line-number: rgba(69, 85, 110, .52);--upload-overlay-bg: #F5F7F5;--upload-text: #1A1F1C;--upload-muted: #6B8F7B;--upload-accent: #3D6B50;--upload-accent-text: #3D6B50;--upload-accent-faint: rgba(61, 107, 80, .15);--upload-border: rgba(61, 107, 80, .22);--upload-border-hover: rgba(61, 107, 80, .4);--upload-surface-hover: rgba(61, 107, 80, .04);--upload-surface-active: rgba(61, 107, 80, .08);--upload-btn-hover-text: #FFFFFF;--bg-color: var(--color-bg);--bg-surface: var(--color-surface-1);--panel-bg: var(--color-surface-2);--text-primary: var(--color-text-primary);--text-secondary: var(--color-text-secondary);--text-muted: var(--color-text-muted);--border-subtle: var(--color-border-subtle);--border-light: var(--color-border-strong)}[data-theme=light] body{background:radial-gradient(circle at 12% 20%,rgba(5,150,105,.06),transparent 42%),radial-gradient(circle at 88% 18%,rgba(4,120,87,.05),transparent 38%),linear-gradient(180deg,#e7edf4,#dbe4ee 45%,#e9eff5)}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 12% 20%,rgba(16,185,129,.08),transparent 42%),radial-gradient(circle at 88% 18%,rgba(6,78,59,.15),transparent 38%),linear-gradient(180deg,#070908,#080a0f 45%,#070809);color:var(--text-primary);font-family:Inter,system-ui,-apple-system,sans-serif;overflow:hidden;width:100vw;height:100vh;letter-spacing:.01em}#root{width:100vw;height:100vh}.vibe-header{position:absolute;top:1.25rem;left:1.25rem;z-index:10;display:flex;align-items:center;gap:.5rem;padding:.5rem .6rem;border-radius:12px;background:var(--header-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-subtle);box-shadow:0 4px 16px #0000000f,0 1px 3px #00000014;transition:all .2s ease}.vibe-header:hover{box-shadow:0 6px 20px #00000014,0 1px 3px #00000014;border-color:var(--border-light)}.vibe-header h1{margin:0 .25rem 0 .5rem;font-size:1.05rem;font-weight:650;letter-spacing:-.015em;background:linear-gradient(135deg,var(--title-gradient-start),var(--title-gradient-end));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.status-badge{font-size:.65rem;background:#22c55e1a;color:var(--accent-entry);padding:2px 8px;border-radius:20px;font-weight:600;border:1px solid rgba(34,197,94,.2);letter-spacing:.02em}.export-controls{position:absolute;top:1.25rem;right:1.25rem;z-index:10;display:flex;align-items:center;gap:.25rem;padding:.35rem;border-radius:10px;background:var(--header-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-subtle);box-shadow:0 4px 16px #0000000f,0 1px 3px #00000014;transition:all .2s ease}.export-controls:hover{box-shadow:0 6px 20px #00000014,0 1px 3px #00000014;border-color:var(--border-light)}.export-btn{display:flex;align-items:center;gap:.4rem;padding:.4rem .6rem;background:transparent;color:var(--text-secondary);border:none;border-radius:6px;font-size:.75rem;font-weight:500;cursor:pointer;transition:all .15s ease;font-family:inherit}.export-btn:hover{background:var(--surface-soft, rgba(255, 255, 255, .06));color:var(--text-primary)}.export-btn svg{opacity:.7}.export-btn:hover svg{opacity:1}.react-flow__renderer{background:var(--bg-color)!important}.react-flow__pane{cursor:grab}.react-flow__node{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:0;color:var(--text-primary);box-shadow:0 2px 8px #0000004d;transition:box-shadow .3s ease,border-color .3s ease,transform .3s ease;cursor:pointer;font-size:.82rem}.react-flow__node:hover{border-color:#ffffff26;box-shadow:0 4px 20px #0006;transform:translateY(-1px)}.react-flow__node.selected{border-color:var(--accent-info)!important;box-shadow:var(--shadow-glow) #3b82f640!important}@keyframes ghost-ring{0%{box-shadow:0 0 #f43f5e66}70%{box-shadow:0 0 0 12px #f43f5e00}to{box-shadow:0 0 #f43f5e00}}@keyframes ghost-pulse{0%,to{opacity:1}50%{opacity:.85}}.react-flow__node.ghost-active{border-color:var(--accent-ghost)!important;box-shadow:var(--shadow-glow) #f43f5e59!important;animation:ghost-ring 1.5s ease-out infinite,ghost-pulse 2s ease-in-out infinite;z-index:1000!important;transform:scale(1.04)}.react-flow__node.ghost-trail-1{border-color:#f43f5e80!important;box-shadow:0 0 12px #f43f5e26!important}.react-flow__node.ghost-trail-2{border-color:#f43f5e4d!important;box-shadow:0 0 8px #f43f5e14!important}.react-flow__node.ghost-trail-3{border-color:#f43f5e26!important}.react-flow__node.ghost-visited{border-color:#34d39940!important;box-shadow:0 0 6px #34d39914!important;opacity:.85}.react-flow__edge-path{stroke:#64748b4d;stroke-width:1.5;transition:stroke .4s ease,stroke-width .4s ease}.react-flow__edge-path.ghost-edge-active{stroke:#f43f5e!important;stroke-width:4!important;filter:drop-shadow(0 0 8px rgba(244,63,94,.7)) drop-shadow(0 0 3px rgba(244,63,94,.9));stroke-dasharray:8 4;animation:ghost-dash .35s linear infinite}.react-flow__edge-path.ghost-edge-trail{stroke:#f43f5e59!important;stroke-width:2.5!important;filter:drop-shadow(0 0 3px rgba(244,63,94,.2))}@keyframes ghost-dash{0%{stroke-dashoffset:12}to{stroke-dashoffset:0}}.react-flow__edge.cycle-edge path{stroke:#f97316!important;stroke-width:3px}.react-flow__edge.animated path{stroke-dasharray:8 4;animation:ghost-dash .35s linear infinite}.react-flow__handle{width:6px;height:6px;border:none;background:var(--text-muted)!important;transition:background .2s}.react-flow__node:hover .react-flow__handle{background:var(--accent-fn)!important}.react-flow__controls{background:transparent!important;border:1px solid transparent!important;border-radius:var(--radius-md);overflow:hidden;opacity:.3;transition:all .25s ease;box-shadow:none!important}.react-flow__controls:hover{background:var(--panel-bg)!important;border:1px solid var(--border-subtle)!important;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:1}.react-flow__controls-button{background:transparent!important;border-bottom:1px solid transparent!important;fill:var(--text-muted)!important;transition:all .15s}.react-flow__controls:hover .react-flow__controls-button{border-bottom:1px solid var(--border-subtle)!important}.react-flow__controls-button:hover{background:#ffffff0d!important;fill:var(--text-primary)!important}.react-flow__minimap{background:var(--panel-bg)!important;border-radius:var(--radius-md);border:1px solid var(--border-subtle);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:#fff3}@keyframes slideInRight{0%{transform:translate(30px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.slide-in-right{animation:slideInRight .3s ease-out}.fade-in{animation:fadeIn .3s ease-out}.file-sidebar{width:240px;min-width:240px;height:100vh;background:var(--sidebar-bg);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column;overflow:hidden;font-family:Inter,system-ui,sans-serif}.sidebar-header{padding:14px 16px;display:flex;align-items:center;gap:8px;font-size:.78rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--border-subtle)}.sidebar-icon{font-size:.9rem}.sidebar-content{flex:1;overflow-y:auto;padding:6px 0}.sidebar-file{width:100%;display:block;text-align:left;background:transparent;border:none;padding:8px 14px;cursor:pointer;transition:background .12s;border-left:2px solid transparent;color:var(--text-primary);font-family:inherit}.sidebar-file:hover{background:var(--surface-softer)}.sidebar-file.selected{background:var(--surface-selection);border-left-color:var(--accent-info)}.file-main{display:flex;align-items:center;gap:8px}.file-icon{font-size:.85rem;flex-shrink:0}.file-name{font-size:.8rem;font-weight:500;color:var(--text-primary);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-count{font-size:.65rem;color:var(--text-muted);background:var(--surface-pill);padding:1px 6px;border-radius:8px;flex-shrink:0}.file-dir{font-size:.62rem;color:var(--text-muted);margin-top:2px;padding-left:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-types{display:flex;gap:6px;margin-top:4px;padding-left:24px;flex-wrap:wrap}.type-badge{font-size:.6rem;padding:1px 5px;border-radius:4px;background:var(--surface-subtle);color:var(--text-muted)}.type-badge.type-function{color:var(--accent-fn)}.type-badge.type-class{color:var(--accent-class)}.type-badge.type-entry_point{color:var(--accent-entry)}.sidebar-legend{padding:10px 14px;border-top:1px solid var(--border-subtle);display:flex;gap:10px;font-size:.6rem;color:var(--text-muted)}.react-flow__node.external-ref{opacity:.45;transform:scale(.9);border-style:dashed!important}.react-flow__node.external-ref:hover{opacity:.7}.current-file-badge{font-size:.72rem;color:var(--text-secondary);background:var(--surface-accent);padding:3px 10px;border-radius:8px;margin-left:4px}.code-panel{height:260px;min-height:180px;background:var(--panel-solid-bg);border-top:1px solid var(--border-subtle);display:flex;flex-direction:column;font-family:JetBrains Mono,Fira Code,Cascadia Code,monospace;position:relative;transition:all .25s ease}.code-panel-fullscreen{position:fixed;inset:40px;height:auto;min-height:0;z-index:9000;border-radius:12px;border:1px solid var(--color-border-strong);box-shadow:0 25px 80px #000000b3}.code-panel-backdrop{position:fixed;inset:0;background:var(--overlay-backdrop);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:-1}.code-panel-header{display:flex;align-items:center;justify-content:space-between;padding:6px 14px;background:var(--panel-header-bg);border-bottom:1px solid var(--border-subtle);flex-shrink:0}.code-panel-title{display:flex;align-items:center;gap:8px;font-size:.72rem;color:var(--text-secondary)}.code-icon{color:var(--accent-info);font-weight:700;font-size:.8rem}.code-file-name{color:var(--text-primary);font-weight:600}.code-node-name{color:var(--accent-fn);font-weight:500}.code-line-range{color:var(--text-muted);font-size:.65rem;background:var(--surface-subtle);padding:1px 6px;border-radius:4px}.code-follow-badge{font-size:.62rem;color:var(--accent-ghost);background:#f43f5e1a;padding:2px 8px;border-radius:10px;animation:ghost-pulse 2s ease-in-out infinite}.code-panel-close{background:transparent;border:none;color:var(--text-muted);cursor:pointer;font-size:.85rem;padding:4px 8px;border-radius:4px;transition:background .12s}.code-panel-close:hover{background:var(--surface-soft);color:var(--text-primary)}.code-panel-content{flex:1;overflow-y:auto;overflow-x:auto}.code-panel-toggle{position:fixed;bottom:12px;right:12px;display:flex;align-items:center;gap:6px;background:var(--panel-header-bg);color:var(--accent-info);border:1px solid var(--border-subtle);padding:6px 14px;border-radius:8px;font-size:.75rem;font-family:Inter,system-ui,sans-serif;cursor:pointer;z-index:200;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:background .15s}.code-panel-toggle:hover{background:var(--panel-bg)}.code-full-file{padding:8px 0}.code-line{display:flex;line-height:1.65;font-size:.78rem;padding:0 14px 0 0;transition:background .15s}.code-line:hover{background:var(--surface-softer)}.code-line-number{display:inline-block;min-width:45px;padding:0 12px 0 14px;text-align:right;color:var(--code-line-number);-webkit-user-select:none;user-select:none;flex-shrink:0;font-size:.7rem}.code-line-content{margin:0;white-space:pre;color:var(--code-text);font-family:inherit;font-size:inherit}.code-line-highlight{background:#22c55e0f!important;border-left:2px solid var(--accent-entry)}.code-line-highlight .code-line-number{color:var(--accent-entry)}.code-line-highlight .code-line-content{color:var(--code-text-strong)}.code-loading{display:flex;align-items:center;gap:10px;padding:30px 20px;color:var(--text-muted);font-size:.78rem;font-family:Inter,system-ui,sans-serif}.code-spinner{width:16px;height:16px;border:2px solid var(--border-light);border-top-color:var(--accent-info);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.code-error{padding:20px;color:var(--accent-ghost);font-size:.78rem;font-family:Inter,system-ui,sans-serif}.code-placeholder{padding:30px 20px;color:var(--text-muted);font-size:.78rem;font-family:Inter,system-ui,sans-serif;text-align:center}.header-action-btn{display:flex;align-items:center;gap:.35rem;font-size:.75rem;background:transparent;color:var(--text-secondary);border:1px solid var(--border-subtle);padding:4px 12px;border-radius:8px;cursor:pointer;transition:all .15s ease;font-family:inherit;white-space:nowrap}.header-action-btn:hover{background:var(--surface-soft, rgba(255, 255, 255, .05));color:var(--text-primary);border-color:var(--border-light)}.header-action-btn svg{transition:opacity .15s ease}.header-action-btn:hover svg{opacity:1!important}.search-bar{position:relative;margin-left:auto}.search-input-wrapper{display:flex;align-items:center;background:transparent;border:1px solid var(--border-subtle);border-radius:8px;padding:0 10px;gap:6px;transition:all .2s ease}.search-input-wrapper:focus-within{border-color:var(--accent-info, #3B82F6);background:var(--search-focus-bg, rgba(255,255,255,.02));box-shadow:0 0 0 2px #3b82f626}.search-icon{font-size:.72rem;flex-shrink:0}.search-input{background:transparent;border:none;outline:none;color:var(--text-primary);font-size:.75rem;font-family:inherit;padding:5px 0;width:160px;min-width:120px}.search-input::placeholder{color:var(--text-muted)}.search-clear{background:transparent;border:none;color:var(--text-muted);cursor:pointer;font-size:.7rem;padding:2px;line-height:1}.search-clear:hover{color:var(--text-primary)}.search-results{position:absolute;top:calc(100% + 6px);right:0;width:320px;max-height:360px;overflow-y:auto;background:var(--panel-bg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border-light);border-radius:var(--radius-md);box-shadow:0 8px 30px #00000080;z-index:100;padding:4px;animation:fadeIn .15s ease-out}.search-result-item{width:100%;display:flex;align-items:center;gap:10px;padding:8px 10px;background:transparent;border:none;border-radius:6px;cursor:pointer;color:var(--text-primary);font-family:inherit;text-align:left;transition:background .1s}.search-result-item:hover,.search-result-item.highlighted{background:#3b82f61a}.search-result-icon{font-size:.85rem;flex-shrink:0}.search-result-text{display:flex;flex-direction:column;gap:2px;overflow:hidden}.search-result-label{font-size:.78rem;font-weight:500;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result-file{font-size:.65rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-no-results{padding:16px;text-align:center;font-size:.75rem;color:var(--text-muted)}.chat-fab{position:absolute;bottom:20px;left:64px;width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,var(--accent-info),#6366f1);border:none;cursor:pointer;font-size:1.3rem;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px #3b82f659;z-index:50;transition:transform .2s,box-shadow .2s}.chat-fab:hover{transform:scale(1.1);box-shadow:0 6px 28px #3b82f680}.chat-drawer{position:absolute;bottom:20px;left:20px;width:380px;max-width:calc(100vw - 300px);height:480px;max-height:calc(100vh - 120px);background:var(--panel-bg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border-light);border-radius:var(--radius-lg);display:flex;flex-direction:column;z-index:50;box-shadow:0 12px 40px #0009;animation:slideInRight .25s ease-out}.chat-drawer-header{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--border-subtle);flex-shrink:0}.chat-drawer-title{display:flex;align-items:center;gap:6px;font-size:.82rem;font-weight:600;color:var(--text-primary)}.chat-context-badge{font-size:.65rem;color:var(--text-muted);background:#ffffff0a;padding:2px 8px;border-radius:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:160px}.chat-context-badge strong{color:var(--accent-fn)}.chat-drawer-close{margin-left:auto;background:transparent;border:none;color:var(--text-muted);cursor:pointer;font-size:.85rem;padding:4px 8px;border-radius:4px;transition:background .12s}.chat-drawer-close:hover{background:#ffffff0f;color:var(--text-primary)}.chat-messages{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px}.chat-empty{text-align:center;color:var(--text-muted);font-size:.78rem;padding:40px 20px}.chat-message{display:flex}.chat-message-user{justify-content:flex-end}.chat-message-assistant{justify-content:flex-start}.chat-bubble{max-width:85%;padding:8px 12px;border-radius:12px;font-size:.78rem;line-height:1.5;word-break:break-word}.chat-message-user .chat-bubble{background:linear-gradient(135deg,var(--accent-info),#6366f1);color:#fff;border-bottom-right-radius:4px}.chat-message-assistant .chat-bubble{background:#ffffff0f;color:var(--text-primary);border:1px solid var(--border-subtle);border-bottom-left-radius:4px}.chat-bubble p{margin:0 0 6px}.chat-bubble p:last-child{margin-bottom:0}.chat-bubble code{background:#0000004d;padding:1px 4px;border-radius:3px;font-size:.72rem;font-family:JetBrains Mono,monospace}.chat-bubble pre{background:#0006;padding:8px;border-radius:6px;overflow-x:auto;margin:6px 0}.chat-bubble pre code{background:transparent;padding:0}.chat-typing{display:flex;align-items:center;gap:4px;padding:12px 16px}.typing-dot{width:6px;height:6px;background:var(--text-muted);border-radius:50%;animation:typingBounce 1.2s ease-in-out infinite}.typing-dot:nth-child(2){animation-delay:.15s}.typing-dot:nth-child(3){animation-delay:.3s}@keyframes typingBounce{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-6px);opacity:1}}.chat-input-area{display:flex;align-items:flex-end;gap:8px;padding:10px 12px;border-top:1px solid var(--border-subtle);flex-shrink:0}.chat-input{flex:1;background:#ffffff0a;border:1px solid var(--border-subtle);border-radius:8px;padding:8px 10px;color:var(--text-primary);font-size:.78rem;font-family:inherit;resize:none;outline:none;min-height:36px;max-height:80px;transition:border-color .15s}.chat-input:focus{border-color:var(--accent-info)}.chat-input::placeholder{color:var(--text-muted)}.chat-send-wrapper{display:inline-flex}.chat-send{width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,var(--accent-info),#6366f1);border:none;color:#fff;font-size:1rem;font-weight:700;cursor:pointer;transition:opacity .15s,transform .15s;flex-shrink:0;display:flex;align-items:center;justify-content:center}.chat-send:disabled{opacity:.35;cursor:not-allowed}.chat-send:not(:disabled):hover{transform:scale(1.05)}.lp-bar{position:absolute;top:12px;left:60%;transform:translate(-50%);display:flex;align-items:center;gap:12px;padding:6px 16px;background:#0f0f1cd9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-light);border-radius:20px;z-index:100;box-shadow:0 4px 20px #0006;animation:fadeIn .3s ease-out;overflow:hidden;font-family:Inter,system-ui,sans-serif}.lp-bar-icon{font-size:.9rem}.lp-bar-main{display:flex;align-items:center;gap:10px;min-width:200px;justify-content:center}.lp-bar-nav{background:transparent;border:none;color:var(--text-primary);cursor:pointer;font-size:1rem;padding:0 4px;opacity:.7;transition:opacity .1s}.lp-bar-nav:hover:not(:disabled){opacity:1;color:var(--accent-info)}.lp-bar-nav:disabled{opacity:.2;cursor:default}.lp-bar-info{display:flex;align-items:center;gap:6px;font-size:.75rem;white-space:nowrap}.lp-bar-step{color:var(--text-muted);font-weight:500}.lp-bar-node{color:var(--text-primary);font-weight:600}.lp-bar-loading{color:var(--text-muted);font-style:italic}.lp-bar-close{background:transparent;border:none;color:var(--text-muted);cursor:pointer;font-size:.8rem;margin-left:4px}.lp-bar-close:hover{color:var(--accent-ghost)}.lp-bar-progress{position:absolute;bottom:0;left:0;right:0;height:2px;background:#ffffff0d}.lp-bar-progress-fill{height:100%;background:linear-gradient(90deg,var(--accent-entry),var(--accent-fn));transition:width .4s ease}.upload-modal-overlay{position:fixed;inset:0;background:var(--upload-overlay-bg, #0C0F0D);display:flex;align-items:center;justify-content:center;z-index:300;animation:fadeIn .25s ease-out}.upload-modal{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:3rem}.modal-close-wrapper{position:absolute;top:1.25rem;right:1.25rem;z-index:10;display:inline-flex}.modal-close-btn{background:transparent;border:none;color:var(--upload-muted, #4A5D52);cursor:pointer;padding:8px;border-radius:6px;transition:color .2s,background .2s;display:flex;align-items:center;justify-content:center}.modal-close-btn:hover:not(:disabled){color:var(--upload-text, #E8EBE9);background:var(--upload-surface-hover, rgba(42, 74, 58, .2))}.modal-close-btn:disabled{opacity:.25;cursor:not-allowed}.upload-zone{width:100%;max-width:520px;aspect-ratio:4 / 3;border:1px dashed var(--upload-border, rgba(42, 74, 58, .35));border-radius:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .25s,background .25s;position:relative;outline:none}.upload-zone:hover{border-color:var(--upload-border-hover, rgba(42, 74, 58, .55));background:var(--upload-surface-hover, rgba(42, 74, 58, .06))}.upload-zone:focus-visible{border-color:var(--upload-accent, #2A4A3A);box-shadow:0 0 0 2px var(--upload-accent-faint, rgba(42, 74, 58, .2))}.upload-zone-dragging{border-color:var(--upload-accent, #2A4A3A)!important;background:var(--upload-surface-active, rgba(42, 74, 58, .1))!important}.upload-zone-drop-indicator{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;border-radius:10px;background:var(--upload-surface-active, rgba(42, 74, 58, .1));z-index:5}.upload-zone-drop-indicator span{font-size:.82rem;font-weight:500;color:var(--upload-accent-text, #6B8F7B);letter-spacing:.01em}.upload-content-wrapper{display:flex;flex-direction:column;align-items:center;gap:1.25rem;text-align:center;padding:2rem}.upload-icon{color:var(--upload-muted, #4A5D52);opacity:.7;transition:opacity .2s}.upload-zone:hover .upload-icon{opacity:1}.upload-text-container h2{color:var(--upload-text, #E8EBE9);font-size:1.2rem;font-weight:450;letter-spacing:-.01em;margin:0 0 .4rem;font-family:Inter,system-ui,sans-serif}.upload-hint{display:block;font-size:.8rem;color:var(--upload-muted, #6B8F7B);font-weight:350;letter-spacing:.005em;line-height:1.5}.upload-select-btn{margin-top:.5rem;padding:.5rem 1.25rem;background:transparent;color:var(--upload-accent-text, #6B8F7B);font-weight:475;font-size:.78rem;letter-spacing:.01em;border:1px solid var(--upload-border, rgba(42, 74, 58, .35));border-radius:6px;cursor:pointer;transition:all .2s;font-family:Inter,system-ui,sans-serif}.upload-select-btn:hover{background:var(--upload-accent, #2A4A3A);color:var(--upload-btn-hover-text, #E8EBE9);border-color:var(--upload-accent, #2A4A3A)}.analyzing-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:.75rem}.vibe-spinner{width:32px;height:32px;border:2px solid var(--upload-border, rgba(42, 74, 58, .2));border-top-color:var(--upload-accent-text, #6B8F7B);border-radius:50%;animation:spin .8s linear infinite}.analyzing-state p{margin:0;color:var(--upload-text, #E8EBE9);font-weight:450;font-size:.95rem}.analyzing-subtitle{font-size:.78rem;color:var(--upload-muted, #6B8F7B);font-weight:350}.sidebar-tabs{display:flex;border-bottom:1px solid var(--border-subtle);flex-shrink:0}.sidebar-tab{flex:1;padding:10px 0;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--text-muted);font-size:.72rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .15s;text-align:center}.sidebar-tab:hover{color:var(--text-secondary);background:#ffffff05}.sidebar-tab.active{color:var(--text-primary);border-bottom-color:var(--accent-info)}.deps-empty{padding:20px 16px;text-align:center;color:var(--text-muted);font-size:.75rem;line-height:1.5}.deps-empty code{background:#ffffff0f;padding:1px 5px;border-radius:3px;font-size:.7rem}.deps-file{padding:6px 0;border-bottom:1px solid var(--border-subtle)}.deps-file.selected{background:#3b82f60d}.deps-file-header{width:100%;display:flex;align-items:center;gap:6px;padding:6px 14px;background:transparent;border:none;cursor:pointer;color:var(--text-primary);font-family:inherit;text-align:left;transition:background .1s}.deps-file-header:hover{background:#ffffff08}.deps-file-icon{font-size:.8rem;flex-shrink:0}.deps-file-name{font-size:.78rem;font-weight:500}.deps-section{padding:2px 14px 4px 28px}.deps-section-label{font-size:.62rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;display:block;margin-bottom:2px}.deps-item{display:flex;align-items:center;gap:6px;padding:2px 0}.deps-item-clickable{background:transparent;border:none;cursor:pointer;color:var(--text-primary);font-family:inherit;text-align:left;padding:2px 4px;border-radius:4px;transition:background .1s;width:100%}.deps-item-clickable:hover{background:#ffffff0a}.deps-item-name{font-size:.72rem;color:var(--accent-fn)}.deps-item-detail{font-size:.62rem;color:var(--text-muted)}.app-shell{display:flex;width:100vw;height:100vh}.main-area{flex:1;display:flex;flex-direction:column;position:relative}.graph-shell{flex:1;position:relative}.graph-canvas{width:100%;height:100%;position:relative}.graph-empty-state{position:absolute;inset:0;z-index:4;display:grid;place-content:center;gap:var(--space-2);padding:var(--space-8);text-align:center;pointer-events:none}.graph-empty-state h2{margin:0;font-size:clamp(1.5rem,2vw,2rem);letter-spacing:-.04em;color:var(--text-primary)}.graph-empty-state p{margin:0;color:var(--text-secondary);font-size:.98rem}.graph-empty-kicker{justify-self:center;padding:6px 12px;border-radius:999px;border:1px solid var(--border-subtle);background:#10b98114;color:var(--color-accent-primary);font-size:.78rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.vibe-header{box-shadow:var(--shadow-soft),var(--shadow-purple-glow)}.vibe-header h1{font-size:1.02rem;letter-spacing:-.02em;background:linear-gradient(135deg,var(--title-gradient-start),var(--title-gradient-end));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.status-badge{background:#10b98124;color:var(--color-accent-primary);border-color:#10b98140}.current-file-badge{border:1px solid var(--border-subtle);border-radius:999px;background:var(--surface-accent);color:var(--text-secondary);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-action-btn{border-radius:11px;border:1px solid var(--border-subtle);background:var(--button-bg);color:var(--text-primary)}.header-action-btn:hover{border-color:#10b9816b;box-shadow:var(--shadow-primary)}.react-flow__renderer{background:transparent!important}.react-flow__node:hover{border-color:#10b98157;box-shadow:var(--shadow-soft),var(--shadow-purple-glow)}.react-flow__node.selected{box-shadow:var(--shadow-primary)!important}.react-flow__controls-button:hover{background:#10b9811a}.sim-controls{position:absolute;bottom:20px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;background:var(--color-surface-2);padding:8px 14px;border-radius:999px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-subtle);box-shadow:var(--shadow-soft);z-index:100}.sim-btn{width:36px;height:36px;border-radius:50%;border:1px solid var(--border-subtle);background:transparent;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center}.sim-btn:hover{border-color:#10b98159;color:var(--text-primary)}.sim-btn-play{background:#34d3991f;color:var(--accent-entry)}.sim-btn-pause{background:#fb71851f;color:var(--accent-ghost)}.sim-divider{width:1px;height:20px;background:var(--border-subtle)}.sim-speed{border:1px solid transparent;border-radius:999px;background:transparent;color:var(--text-muted);font-size:.68rem;font-weight:600;padding:4px 9px;cursor:pointer}.sim-speed.active{background:#10b98129;border-color:#10b98159;color:var(--color-accent-primary)}.sim-btn-help{font-weight:700;font-size:.85rem;color:var(--color-text-muted);font-family:Inter,system-ui,sans-serif}.sim-btn-help:hover,.sim-btn-help.active{color:var(--color-accent-primary);border-color:#10b98159;background:#10b9811a}.sim-guide{position:absolute;bottom:calc(100% + 12px);left:0;width:340px;background:var(--panel-gradient);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--color-border-subtle);border-radius:12px;padding:16px 18px;box-shadow:0 12px 40px #00000080;font-size:.78rem;line-height:1.6;color:var(--color-text-secondary);animation:guideSlideUp .25s ease-out;z-index:500}.sim-guide-close{position:absolute;top:8px;right:10px;background:none;border:none;color:var(--color-text-muted);cursor:pointer;font-size:.75rem;padding:2px 6px;border-radius:4px}.sim-guide-close:hover{color:var(--color-text-primary);background:var(--surface-soft)}.sim-guide-title{font-size:.85rem;font-weight:700;color:var(--color-accent-primary);margin:0 0 6px}.sim-guide-title:not(:first-of-type){margin-top:14px}.sim-guide p{margin:0 0 8px}.sim-guide ul{margin:0 0 8px;padding-left:18px}.sim-guide li{margin-bottom:4px}.sim-guide strong{color:var(--color-text-primary)}.sim-guide-hint{color:var(--color-text-muted);font-style:italic;font-size:.72rem;margin-bottom:0}@keyframes guideSlideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.sim-step{font-size:.72rem;color:var(--text-muted);min-width:56px;text-align:center}.sim-step strong{color:var(--text-primary)}.sim-current{font-size:.7rem;color:var(--accent-ghost);font-weight:600;max-width:128px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sim-mode-group{display:flex;gap:2px}.sim-mode-btn{border:1px solid transparent;border-radius:999px;background:transparent;color:var(--text-muted);font-size:.66rem;font-weight:600;padding:4px 8px;cursor:pointer;display:flex;align-items:center;gap:3px;transition:all .15s ease}.sim-mode-btn.active{background:#10b98124;border-color:#10b9814d;color:var(--color-accent-primary)}.sim-mode-btn:hover:not(.active){color:var(--text-secondary);border-color:var(--border-subtle)}.sim-strategy-wrapper{position:relative}.sim-strategy-btn{border:1px solid var(--border-subtle);border-radius:999px;background:transparent;color:var(--text-secondary);font-size:.68rem;font-weight:600;padding:4px 10px;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all .15s ease}.sim-strategy-btn:hover,.sim-strategy-btn.active{border-color:#10b98159;color:var(--color-accent-primary);background:#10b98114}.sim-strategy-picker{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%);background:var(--panel-gradient);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--color-border-subtle);border-radius:12px;padding:6px;box-shadow:0 12px 40px #00000073;min-width:220px;animation:guideSlideUp .2s ease-out;z-index:500}.sim-strategy-option{display:flex;align-items:center;gap:8px;width:100%;border:none;border-radius:8px;background:transparent;color:var(--text-secondary);padding:8px 10px;cursor:pointer;font-size:.74rem;text-align:left;transition:background .15s ease}.sim-strategy-option:hover{background:#10b98114}.sim-strategy-option.active{background:#10b9811f;color:var(--color-accent-primary)}.sim-strategy-icon{font-size:1rem;flex-shrink:0}.sim-strategy-label{font-weight:600;flex-shrink:0}.sim-strategy-hint{color:var(--text-muted);font-size:.65rem;margin-left:auto}.sim-progress{display:flex;align-items:center;gap:6px;min-width:80px}.sim-progress-bar{width:40px;height:4px;background:var(--border-subtle);border-radius:2px;overflow:hidden}.sim-progress-fill{height:100%;background:linear-gradient(90deg,var(--accent-entry),var(--color-accent-primary));border-radius:2px;transition:width .4s ease}.sim-progress-text{font-size:.65rem;color:var(--text-muted);white-space:nowrap}.sim-progress-pct{color:var(--text-secondary);font-weight:600}.sim-explore-hint{font-size:.68rem;color:var(--text-muted);font-style:italic}.ghost-narration{position:absolute;bottom:80px;left:50%;transform:translate(-50%);max-width:480px;background:var(--panel-gradient);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--color-border-subtle);border-radius:12px;padding:10px 14px;box-shadow:0 8px 30px #00000059;display:flex;align-items:flex-start;gap:8px;z-index:99;animation:guideSlideUp .3s ease-out}.ghost-narration-content{flex:1;min-width:0}.ghost-narration-text{font-size:.76rem;line-height:1.5;color:var(--text-primary);display:block}.ghost-narration-rel{font-size:.65rem;color:var(--text-muted);margin-top:3px;display:block;font-style:italic}.ghost-narration-meta{display:flex;align-items:center;gap:4px;flex-shrink:0}.ghost-narration-importance{font-weight:700;font-size:.7rem}.ghost-narration-toggle{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:.65rem;padding:2px 4px;border-radius:4px;opacity:.6;transition:opacity .15s}.ghost-narration-toggle:hover{opacity:1;color:var(--text-primary);background:var(--surface-soft)}.ghost-choices{position:absolute;bottom:80px;left:50%;transform:translate(-50%);display:flex;flex-wrap:wrap;gap:6px;justify-content:center;max-width:500px;z-index:99;animation:guideSlideUp .25s ease-out}.ghost-choice-btn{border:1px solid rgba(244,63,94,.3);border-radius:999px;background:#f43f5e14;color:var(--text-primary);font-size:.72rem;font-weight:600;padding:6px 12px;cursor:pointer;transition:all .15s ease;white-space:nowrap}.ghost-choice-btn:hover{background:#f43f5e2e;border-color:var(--accent-ghost);box-shadow:0 0 12px #f43f5e26}.ghost-choice-label{display:flex;align-items:center;gap:4px}.ghost-choices-title{width:100%;text-align:center;font-size:.68rem;color:var(--text-muted);margin-bottom:2px}.ghost-run-summary{position:absolute;bottom:80px;left:50%;transform:translate(-50%);background:var(--panel-gradient);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--color-border-subtle);border-radius:12px;padding:12px 16px;box-shadow:0 8px 30px #00000059;min-width:280px;max-width:400px;z-index:99;animation:guideSlideUp .3s ease-out}.ghost-summary-title{font-size:.78rem;font-weight:700;color:var(--color-accent-primary);margin:0 0 8px}.ghost-summary-stats{display:flex;flex-wrap:wrap;gap:8px 16px;margin-bottom:6px}.ghost-summary-stat{font-size:.7rem;color:var(--text-secondary)}.ghost-summary-stat strong{color:var(--text-primary)}.ghost-summary-entries{font-size:.65rem;color:var(--text-muted);margin-top:4px}.explanation-panel{position:absolute;top:16px;right:16px;width:374px;max-height:calc(100vh - 32px);background:var(--panel-gradient);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--border-subtle);border-radius:14px;box-shadow:var(--shadow-panel),var(--shadow-purple-glow);overflow-y:auto;z-index:100}.ep-header{padding:14px 16px 12px;border-bottom:1px solid var(--border-subtle);display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center}.ep-type{font-size:.64rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:2px 8px;border:1px solid var(--border-subtle)}.ep-title{min-width:0;font-size:.95rem;font-weight:700;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ep-close{width:28px;height:28px;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--text-muted);cursor:pointer}.ep-close:hover{border-color:var(--border-subtle);color:var(--text-primary)}.ep-body{padding:12px 16px}.ep-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;border:1px solid var(--border-subtle);border-radius:10px;padding:3px;margin-bottom:10px}.ep-tab{border:none;border-radius:7px;height:30px;background:transparent;color:var(--text-muted);font-size:.72rem;cursor:pointer}.ep-tab.active{background:var(--surface-selection-strong);color:var(--text-primary)}.ep-levels{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:12px}.ep-level{border:1px solid var(--border-subtle);border-radius:8px;height:26px;background:transparent;color:var(--text-muted);font-size:.66rem;cursor:pointer;text-transform:capitalize}.ep-footer{padding:10px 16px;border-top:1px solid var(--border-subtle);color:var(--text-muted);font-size:.68rem;display:flex;gap:10px;overflow:hidden}.ep-footer span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.code-viewer{margin-top:12px;border-radius:10px;overflow:hidden;border:1px solid var(--border-subtle);position:relative;max-height:200px;transition:all .25s ease}.code-viewer-header{display:flex;align-items:center;justify-content:space-between;background:var(--surface-softer);padding:6px 10px;font-size:.72rem;color:var(--text-muted);border-bottom:1px solid var(--border-subtle)}.code-viewer-expand{background:none;border:none;color:var(--color-text-muted);cursor:pointer;font-size:.8rem;padding:2px 6px;border-radius:4px;transition:color .15s,background .15s}.code-viewer-expand:hover{color:var(--color-text-primary);background:var(--surface-soft)}.code-viewer-overlay{position:fixed;inset:0;z-index:9000;background:var(--overlay-backdrop);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease-out}.code-viewer-fullscreen{width:calc(100vw - 80px);height:calc(100vh - 80px);max-width:1200px;border-radius:12px;border:1px solid var(--color-border-strong);background:var(--panel-solid-bg);box-shadow:0 25px 80px #000000b3;display:flex;flex-direction:column;overflow:hidden}.code-viewer-fullscreen pre{flex:1;overflow:auto!important;max-height:none!important}@media(max-width:1200px){.vibe-header{right:16px;flex-wrap:wrap}.chat-drawer,.explanation-panel{width:min(92vw,350px)}}.toast-container{position:fixed;top:var(--space-4);right:var(--space-4);z-index:9999;display:flex;flex-direction:column;gap:var(--space-2);pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:10px;border:1px solid var(--color-border-subtle);background:var(--color-surface-2);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);color:var(--color-text-primary);font-size:.85rem;min-width:260px;max-width:400px;box-shadow:var(--shadow-panel);animation:toastSlideIn .3s ease-out,toastFadeOut .4s ease-in 3.6s forwards}.toast-success{border-color:#34d39959}.toast-success .toast-icon{color:var(--accent-entry)}.toast-error{border-color:#fb718559}.toast-error .toast-icon{color:var(--accent-ghost)}.toast-info .toast-icon{color:var(--accent-info)}.toast-icon{font-size:1rem;flex-shrink:0}.toast-message{flex:1;line-height:1.4}.toast-close{background:none;border:none;color:var(--color-text-muted);cursor:pointer;font-size:.75rem;padding:2px 4px;border-radius:4px;flex-shrink:0;transition:color .15s}.toast-close:hover{color:var(--color-text-primary)}@keyframes toastSlideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes toastFadeOut{0%{opacity:1}to{opacity:0}}.all-files-btn{border-bottom:1px solid var(--color-border-subtle);margin-bottom:var(--space-1)}.all-files-btn .file-name{font-weight:600;letter-spacing:.02em}.vg-node{min-width:140px;max-width:220px;background:var(--node-bg);border:1px solid var(--node-border);border-left:3px solid var(--node-accent);border-radius:8px;padding:10px 12px;font-family:Inter,system-ui,sans-serif;position:relative;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:transform .2s ease,box-shadow .3s ease,border-color .25s ease}.vg-node:hover{transform:translateY(-2px) scale(1.03);box-shadow:0 8px 24px #0006,0 0 12px color-mix(in srgb,var(--node-accent) 20%,transparent);border-color:color-mix(in srgb,var(--node-accent) 40%,transparent)}.vg-node-selected{border-color:var(--node-accent);box-shadow:0 0 20px color-mix(in srgb,var(--node-accent) 25%,transparent);animation:nodeSelectPulse .4s ease-out}.sim-btn:active,.sim-speed:active,.lp-bar-nav:active:not(:disabled),.ep-tab:active,.ep-level:active,.header-action-btn:active,.sidebar-tab:active{transform:scale(.93)}.sim-btn-play{transition:all .2s ease}.sim-btn-pause{animation:playPulse 2s ease-in-out infinite}.sim-speed{transition:all .15s ease}.sim-speed:hover{background:#10b98114;color:var(--color-text-secondary)}.sim-speed.active{animation:speedGlow .3s ease-out}.sidebar-file{border-left:2px solid transparent;transition:background .15s,border-color .2s,transform .12s}.sidebar-file:hover{background:var(--surface-subtle);border-left-color:#10b98140}.sidebar-file.selected{border-left-color:var(--accent-info);animation:sidebarSelect .25s ease-out}.sidebar-file.selected .file-name{color:var(--color-accent-primary)}.file-count{transition:background .2s,color .2s}.sidebar-file:hover .file-count{background:#10b9811a;color:var(--color-text-secondary)}.chat-message{animation:messageSlideIn .3s ease-out}.chat-message-user{animation:messageSlideRight .3s ease-out}.chat-message-assistant .chat-bubble{transition:box-shadow .2s}.chat-message-assistant .chat-bubble:hover{box-shadow:0 2px 12px #0003}.chat-fab{animation:fabBreathe 3s ease-in-out infinite}.chat-fab:hover{animation:none}.ep-tab{transition:all .15s ease;position:relative}.ep-tab:hover:not(.active){background:var(--surface-subtle)}.ep-tab.active:after{content:"";position:absolute;bottom:-1px;left:20%;right:20%;height:2px;border-radius:2px;background:var(--color-accent-primary);animation:tabUnderline .25s ease-out forwards}.ep-level{transition:all .15s ease}.ep-level:hover:not(.active){background:var(--surface-subtle);border-color:var(--border-light)}.fade-in{animation:contentFadeUp .35s ease-out}.lp-bar-progress-fill{position:relative;overflow:hidden}.lp-bar-progress-fill:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.25) 50%,transparent 100%);background-size:200% 100%;animation:shimmer 2s linear infinite}.lp-bar-nav{transition:all .15s ease}.lp-bar-nav:hover:not(:disabled){transform:scale(1.15)}.status-badge{animation:badgePulse 3s ease-in-out infinite}.header-action-btn{transition:all .15s ease}.header-action-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0000004d}.search-result-item{transition:all .12s ease}.search-result-item:hover,.search-result-item.highlighted{transform:translate(4px)}.upload-zone{transition:all .2s ease}.upload-zone:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000004d}@keyframes nodeSelectPulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes playPulse{0%,to{box-shadow:0 0 #fb718500}50%{box-shadow:0 0 12px 4px #fb718540}}@keyframes speedGlow{0%{box-shadow:0 0 8px #10b98166}to{box-shadow:none}}@keyframes sidebarSelect{0%{background:#3b82f633}to{background:#3b82f614}}@keyframes messageSlideIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes messageSlideRight{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:translate(0)}}@keyframes fabBreathe{0%,to{box-shadow:0 4px 16px #3b82f64d}50%{box-shadow:0 4px 24px #3b82f680}}@keyframes tabUnderline{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes contentFadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes badgePulse{0%,to{opacity:1}50%{opacity:.7}}@media(max-width:768px){.app-shell{grid-template-columns:1fr!important}.file-sidebar{position:fixed;left:-280px;top:0;bottom:0;width:280px;z-index:100;transition:left .3s ease;background:var(--color-surface-2);border-right:1px solid var(--border-subtle)}.file-sidebar.sidebar-open{left:0}.sidebar-overlay{display:none;position:fixed;inset:0;background:#00000080;z-index:99}.sidebar-overlay.sidebar-open{display:block}.vibe-header{flex-wrap:wrap;padding:var(--space-2) var(--space-3)!important;gap:var(--space-2)!important}.vibe-header h1{font-size:16px!important}.chat-drawer{width:100%!important;max-width:100%!important}.code-panel,.explanation-panel{max-width:100%!important;width:100%!important}.hamburger-btn{display:flex!important}.search-bar{max-width:100%!important}}@media(min-width:769px){.hamburger-btn{display:none!important}}.status-badge-warning{background:#fbbf2424;color:#fbbf24;border-color:#fbbf2452}.ai-settings-overlay{position:fixed;inset:0;z-index:1200;display:flex;align-items:center;justify-content:center;background:#080a0fa8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.ai-settings-modal{width:min(92vw,520px);border-radius:18px;border:1px solid var(--border-subtle);background:var(--panel-gradient);box-shadow:var(--shadow-panel),var(--shadow-purple-glow);overflow:hidden}.ai-settings-header,.ai-settings-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px}.ai-settings-header{border-bottom:1px solid var(--border-subtle)}.ai-settings-header h2{margin:0;font-size:1rem}.ai-settings-subtitle{margin:6px 0 0;color:var(--text-muted);font-size:.76rem}.ai-settings-body{display:grid;gap:16px;padding:18px 20px}.ai-settings-meta{display:flex;flex-wrap:wrap;gap:8px}.ai-settings-pill{padding:6px 10px;border-radius:999px;border:1px solid var(--border-subtle);background:var(--surface-subtle);color:var(--text-secondary);font-size:.72rem}.ai-settings-field{display:grid;gap:8px}.ai-settings-field label{font-size:.78rem;color:var(--text-secondary);font-weight:600}.ai-settings-field input,.ai-settings-field select{width:100%;min-height:42px;border-radius:10px;border:1px solid var(--border-subtle);background:#090e16e6;color:var(--text-primary);padding:0 12px;font-size:.88rem}[data-theme=light] .ai-settings-field input,[data-theme=light] .ai-settings-field select{background:#ffffffe0}.ai-settings-key-row{display:grid;grid-template-columns:1fr auto;gap:10px}.ai-settings-help{margin:0;color:var(--text-muted);font-size:.72rem;line-height:1.5}.ai-settings-alert{border-radius:12px;padding:10px 12px;font-size:.78rem;line-height:1.5}.ai-settings-alert-warning{background:#fbbf241f;color:#facc15;border:1px solid rgba(251,191,36,.2)}.ai-settings-close,.ai-settings-secondary-btn,.ai-settings-primary-btn{min-height:38px;border-radius:10px;border:1px solid var(--border-subtle);cursor:pointer;font-size:.8rem;font-weight:600;transition:transform .15s ease,border-color .15s ease,background .15s ease}.ai-settings-close,.ai-settings-secondary-btn{padding:0 12px;background:var(--surface-subtle);color:var(--text-secondary)}.ai-settings-primary-btn{padding:0 16px;background:linear-gradient(135deg,#05966938,#10b9811f);color:var(--text-primary)}.ai-settings-close:hover,.ai-settings-secondary-btn:hover,.ai-settings-primary-btn:hover{transform:translateY(-1px);border-color:var(--border-light)}.chat-empty p{margin:0 0 10px}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.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 .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation: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:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.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:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;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:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.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.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@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}.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-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.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:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.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{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.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:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform: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:#3367d9;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%}
