.react-flow{direction:ltr}.react-flow__container{width:100%;height:100%;position:absolute;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:1px;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.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: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;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab;position:absolute}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:-webkit-grab;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background:#1a192b;border:1px solid #fff;border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:-4px;left:50%;transform:translate(-50%)}.react-flow__handle-top{top:-4px;left:50%;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{top:50%;right:-4px;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{z-index:5;margin:15px;position:absolute}.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{background:#ffffff80;margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute}.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{color:#222;text-align:center;background-color:#fff;border:1px solid #1a192b;border-radius:3px;width:150px;padding:10px;font-size:12px}.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 #0059dccc}.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{box-sizing:content-box;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fefefe;border:none;border-bottom:1px solid #eee;justify-content:center;align-items:center;width:16px;height:16px;padding:5px;display:flex}.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{background-color:#3367d9;border:1px solid #fff;border-radius:1px;width:4px;height:4px;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.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:0 solid #3367d9}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}:root{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--radius:8px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0}button,input{font:inherit}a{color:inherit}.app-shell{--bg:#08111f;--surface:#0c1422c7;--surface-strong:#111b2df0;--text:#f8fbff;--muted:#94a3b8;--line:#94a3b82e;--accent:#67e8f9;--grid-line:#7dd3fc33;min-height:100%;color:var(--text);background:radial-gradient(circle at 25% 20%, #22d3ee38, transparent 28%), radial-gradient(circle at 78% 72%, #f472b626, transparent 26%), linear-gradient(145deg, #06111f 0%, var(--bg) 52%, #0f172a 100%);overflow:hidden}.app-shell[data-theme=dark]{--bg:#050505;--surface:#121212d6;--surface-strong:#18181bf5;--accent:#f4f4f5;--grid-line:#f4f4f51f;background:radial-gradient(circle at 70% 20%,#f4f4f514,#0000 24%),#050505}.ambient-grid{pointer-events:none;background-image:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px);background-size:80px 80px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(circle,#000 0%,#0000 74%);mask-image:radial-gradient(circle,#000 0%,#0000 74%)}.topbar{z-index:20;pointer-events:none;grid-template-columns:max-content minmax(280px,720px);align-items:start;gap:14px;display:grid;position:fixed;top:16px;left:16px;right:16px}.brand,.search-dock,.content-panel{border:1px solid var(--line);background:var(--surface);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);pointer-events:auto;box-shadow:0 22px 80px #0000003d}.brand{border-radius:var(--radius);align-items:center;gap:12px;min-height:54px;padding:8px 13px 8px 10px;display:flex}.brand img{object-fit:contain;filter:drop-shadow(0 0 14px #a855f773);width:36px;height:36px}.brand strong,.brand span{display:block}.brand span,.breadcrumbs,.node-type,.panel-type,.panel-path,.viewer dt,.viewer time{color:var(--muted);font-size:12px}.search-dock{border-radius:var(--radius);padding:8px;position:relative}.search-field{align-items:center;gap:8px;display:flex}.search-field input{width:100%;color:var(--text);background:0 0;border:0;outline:0}.breadcrumbs,.panel-path{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.breadcrumbs button,.panel-path button{color:inherit;cursor:pointer;background:0 0;border:0;padding:0}.breadcrumbs span,.panel-path span{margin-right:6px}.search-results{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-strong);gap:4px;padding:8px;display:grid;position:absolute;top:calc(100% + 8px);left:0;right:0}.search-results button{color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;gap:3px;padding:9px;display:grid}.search-results button:hover{background:#ffffff14}.search-results span{color:var(--muted);font-size:12px}.empty-results{padding:10px}.graph-stage,.flow-wrap{position:fixed;inset:0}.react-flow__pane{cursor:grab}.react-flow__pane:active{cursor:grabbing}.react-flow__controls{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);bottom:16px;left:16px;overflow:hidden}.react-flow__controls-button{border-color:var(--line);color:var(--text);background:0 0}.neural-edge{stroke:color-mix(in srgb, var(--accent) 32%, transparent);filter:drop-shadow(0 0 8px color-mix(in srgb, var(--accent) 24%, transparent))}.neural-edge.is-hot{stroke:var(--accent)}.react-flow__edge.animated path{stroke-dasharray:10;animation-duration:0s}.neural-node{border:1px solid color-mix(in srgb, var(--node-color) 42%, var(--line));border-radius:var(--radius);width:156px;min-height:108px;color:var(--text);background:linear-gradient(145deg, color-mix(in srgb, var(--node-color) 12%, transparent), transparent 50%), var(--surface-strong);cursor:pointer;padding:11px;position:relative}.neural-node.is-focused{box-shadow:0 0 0 1px color-mix(in srgb, var(--node-color) 45%, transparent), 0 18px 70px color-mix(in srgb, var(--node-color) 24%, transparent)}.node-aura{z-index:-1;background:radial-gradient(circle, color-mix(in srgb, var(--node-color) 18%, transparent), transparent 70%);opacity:0;border-radius:14px;transition:opacity .22s;position:absolute;inset:-12px}.neural-node:hover .node-aura,.neural-node.is-focused .node-aura{opacity:1}.node-head{justify-content:space-between;align-items:center;display:flex}.node-icon{width:30px;height:30px;color:var(--node-color);background:color-mix(in srgb, var(--node-color) 16%, transparent);border-radius:8px;place-items:center;display:inline-grid}.node-expand{width:24px;height:24px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;display:inline-grid}.node-expand:disabled{cursor:default;opacity:.28}.neural-node h2{text-align:center;align-content:center;font-size:18px;line-height:1.18}.neural-node p{min-height:34px;color:var(--muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0 0 9px;font-size:11px;line-height:1.35;display:-webkit-box;overflow:hidden}.node-type{text-transform:uppercase;letter-spacing:.08em}.node-handle{opacity:0}.content-panel{z-index:30;border-radius:var(--radius);width:min(440px,100vw - 32px);padding:18px;position:fixed;top:92px;bottom:16px;right:16px;overflow:auto}.panel-close{border:1px solid var(--line);width:34px;height:34px;color:var(--text);cursor:pointer;background:0 0;border-radius:7px;place-items:center;display:inline-grid;position:absolute;top:12px;right:12px}.content-panel header{margin:18px 38px 18px 0}.content-panel h1{margin:6px 0 8px;font-size:clamp(28px,4vw,42px);line-height:1}.content-panel header p{color:var(--muted);margin:0;line-height:1.55}.viewer{border-top:1px solid var(--line);padding-top:18px}.viewer p{color:var(--muted);line-height:1.6}.project-viewer dl{grid-template-columns:76px 1fr;gap:8px 12px;margin:0 0 16px;display:grid}.project-viewer dd{margin:0}.chip-row,.link-list{flex-wrap:wrap;gap:8px;margin:12px 0;display:flex}.chip-row span,.link-list a,.resume-viewer a,.github-viewer a,.link-viewer a{border:1px solid var(--line);color:var(--text);background:#ffffff0f;border-radius:999px;align-items:center;gap:8px;padding:7px 10px;text-decoration:none;display:inline-flex}.media-viewer{aspect-ratio:16/9}.gallery-viewer{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.gallery-viewer figure,.image-viewer{margin:0}.gallery-viewer img,.image-viewer img{aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius);width:100%;display:block}figcaption{color:var(--muted);margin-top:8px;font-size:12px}.pdf-viewer{border-radius:var(--radius);background:#fff;border:0;width:100%;min-height:520px}.code-viewer header{justify-content:space-between;margin:0 0 10px;display:flex}.code-viewer pre{border-radius:var(--radius);background:#00000052;padding:14px;overflow:auto}.github-viewer{gap:10px;display:grid}.github-viewer h2{margin:0;font-size:18px}.timeline-viewer{gap:14px;display:grid}.timeline-viewer article{border-left:2px solid var(--accent);padding-left:14px}.timeline-viewer h2{margin:3px 0 4px;font-size:17px}.achievement-viewer strong{font-size:48px;line-height:1;display:block}.quote-viewer blockquote{margin:0;font-size:26px;line-height:1.2}.contact-viewer{gap:12px;display:grid}@keyframes breathe{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@media (width<=840px){.topbar{grid-template-columns:1fr}.brand{display:none}.content-panel{width:auto;max-height:58vh;inset:auto 10px 10px}}
