*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#111f2e;--font-mono:"Space Mono",monospace;--font-display:"DM Serif Display",serif;--node-base:#1a3a5c;--synapse-base:#64b4ff40;--glow-primary:#4fc3f7;--glow-accent:#7c4dff;--panel-bg:#07101af5;--text-primary:#e8f4fd;--text-muted:#5a8a9f;--text-dim:#2a4a5a}#root,body,html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#111f2e;background:var(--bg);color:#e8f4fd;color:var(--text-primary);font-family:Space Mono,monospace;font-family:var(--font-mono);width:100%}.brain-portfolio{background:var(--bg);height:100vh;min-height:100vh;overflow:hidden;position:relative;width:100vw}@keyframes legend-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.brain-legend{animation:legend-in .6s ease .8s both;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#111f2eb8;border:1px solid #4fc3f71f;border-radius:4px;font-family:var(--font-mono);min-width:220px;padding:14px 18px;position:fixed;right:32px;top:28px;z-index:50}.legend-label{color:#4fc3f773;font-size:8px;letter-spacing:.22em;margin-bottom:12px;text-transform:uppercase}.legend-row{align-items:flex-start;display:flex;gap:10px;margin-bottom:10px;transition:opacity .15s ease}.legend-row:last-child{margin-bottom:0}.legend-row:hover{opacity:.8}.legend-dot{border-radius:50%;flex-shrink:0;height:9px;margin-top:3px;width:9px}.legend-text{display:flex;flex-direction:column;gap:2px}.legend-name{font-size:10px;font-weight:700;letter-spacing:.1em;line-height:1.2;text-transform:uppercase}.legend-desc{color:var(--text-muted);font-size:8px;letter-spacing:.06em;line-height:1.4}@keyframes breadcrumb-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.brain-breadcrumb{animation:breadcrumb-in .4s ease both;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#111f2eb3;border:1px solid #4fc3f71f;border-radius:3px;color:var(--text-muted);cursor:pointer;font-family:var(--font-mono);font-size:10px;left:32px;letter-spacing:.16em;padding:8px 14px;position:fixed;text-transform:uppercase;top:28px;transition:color .2s ease,border-color .2s ease;z-index:60}.brain-breadcrumb:hover{border-color:#4fc3f74d;color:var(--glow-primary)}.brain-region-hint{color:var(--text-dim);font-family:var(--font-mono);font-size:9px;left:50%;letter-spacing:.18em;opacity:0;pointer-events:none;position:fixed;text-transform:uppercase;top:50%;transform:translate(-50%,-50%);transition:opacity .6s ease;z-index:10}.neural-name-badge{animation:badge-in 1s ease 1.5s both}.neural-name-badge .name-sub{margin-top:5px}@keyframes controls-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.brain-controls-panel{animation:controls-in .8s ease 2.5s both;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#111f2e8c;border:1px solid #4fc3f71a;border-radius:4px;bottom:32px;font-family:var(--font-mono);min-width:180px;padding:12px 16px;pointer-events:none;position:fixed;right:32px;z-index:50}.controls-label{color:#4fc3f773;font-size:8px;letter-spacing:.22em;margin-bottom:10px;text-transform:uppercase}.control-row{align-items:center;color:var(--text-dim);display:flex;font-size:9px;gap:10px;letter-spacing:.1em;line-height:1.3;margin-bottom:7px;text-transform:uppercase}.control-row:last-child{margin-bottom:0}.control-icon{color:#4fc3f78c;flex-shrink:0;font-size:12px;text-align:center;width:16px}.brain-view-toggle{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#111f2eb3;border:1px solid #4fc3f726;border-radius:3px;color:var(--text-muted);cursor:pointer;font-family:var(--font-mono);font-size:10px;left:32px;letter-spacing:.14em;padding:8px 14px;position:fixed;text-transform:uppercase;top:28px;transition:color .2s ease,border-color .2s ease,background .2s ease;z-index:60}.brain-view-toggle:hover{background:#111f2ee6;border-color:#4fc3f759;color:var(--glow-primary)}.brain-breadcrumb~.brain-view-toggle{top:68px}@keyframes region-bar-in{0%{opacity:0;transform:translateX(-50%) translateY(12px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}.brain-region-bar{animation:region-bar-in .7s ease 1.2s both;bottom:28px;display:flex;gap:8px;left:50%;position:fixed;transform:translateX(-50%);z-index:50}.region-bar-btn{align-items:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#111f2eb8;border:1px solid #ffffff14;border-radius:24px;color:var(--text-muted);cursor:pointer;display:flex;font-family:var(--font-mono);font-size:10px;gap:7px;letter-spacing:.14em;padding:9px 18px;text-transform:uppercase;transition:color .2s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease}.region-bar-btn:hover{background:#111f2eeb;border-color:color-mix(in srgb,var(--rc) 50%,#0000);box-shadow:0 0 12px color-mix(in srgb,var(--rc) 30%,#0000);color:var(--rc)}.region-bar-btn--active{background:color-mix(in srgb,var(--rc) 10%,#111f2ed9);border-color:color-mix(in srgb,var(--rc) 60%,#0000);box-shadow:0 0 16px color-mix(in srgb,var(--rc) 35%,#0000);color:var(--rc)}.region-bar-dot{border-radius:50%;box-shadow:0 0 6px var(--rc);flex-shrink:0;height:7px;width:7px}.region-bar-label{line-height:1}.spa-container{background:#0a1520;color:var(--text-primary);font-family:var(--font-mono);min-height:100vh;overflow-x:hidden}.spa-header{align-items:center;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0a1520eb;border-bottom:1px solid #4fc3f71f;display:flex;gap:24px;padding:14px 32px;position:-webkit-sticky;position:sticky;top:0;z-index:100}.spa-header-name{color:var(--text-primary);font-family:var(--font-display);font-size:18px;margin-right:auto;white-space:nowrap}.spa-header-nav,.spa-nav-btn{display:flex;gap:6px}.spa-nav-btn{align-items:center;background:#0000;border:1px solid #ffffff12;border-radius:20px;color:var(--text-muted);cursor:pointer;font-family:var(--font-mono);font-size:9px;letter-spacing:.14em;padding:6px 14px;text-transform:uppercase;transition:color .2s,border-color .2s,background .2s}.spa-nav-btn:hover{background:color-mix(in srgb,var(--rc) 8%,#0000);border-color:color-mix(in srgb,var(--rc) 40%,#0000);color:var(--rc)}.spa-nav-dot{border-radius:50%;flex-shrink:0;height:6px;width:6px}.spa-view-toggle{background:#4fc3f712;border:1px solid #4fc3f733;border-radius:3px;color:#4fc3f7b3;cursor:pointer;font-family:var(--font-mono);font-size:9px;letter-spacing:.14em;padding:8px 16px;text-transform:uppercase;transition:all .2s ease;white-space:nowrap}.spa-view-toggle:hover{background:#4fc3f724;border-color:#4fc3f766;color:var(--glow-primary)}.spa-hero{margin:0 auto;max-width:900px;padding:100px 80px 80px;text-align:left}.spa-hero-eyebrow{color:#4fc3f78c;font-size:9px;letter-spacing:.28em;margin-bottom:20px;text-transform:uppercase}.spa-hero-name{color:var(--text-primary);font-family:var(--font-display);font-size:clamp(48px,8vw,80px);line-height:1;margin:0 0 16px}.spa-hero-title{color:#4fc3f7b3;font-size:12px;letter-spacing:.24em;margin-bottom:32px;text-transform:uppercase}.spa-hero-bio{color:var(--text-muted);font-size:14px;line-height:1.9;margin-bottom:40px;max-width:620px}.spa-hero-pills{display:flex;flex-wrap:wrap;gap:10px}.spa-hero-pill{background:color-mix(in srgb,var(--rc) 10%,#0a1520cc);border:1px solid color-mix(in srgb,var(--rc) 35%,#0000);border-radius:24px;color:var(--rc);cursor:pointer;font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;padding:10px 22px;text-transform:uppercase;transition:all .2s ease}.spa-hero-pill:hover{background:color-mix(in srgb,var(--rc) 18%,#0a1520e6);box-shadow:0 0 16px color-mix(in srgb,var(--rc) 30%,#0000)}.spa-section{border-top:1px solid #ffffff0d;margin:0 auto;max-width:1100px;padding:72px 80px}.spa-section-header{align-items:flex-start;display:flex;gap:24px;margin-bottom:48px}.spa-section-line{border-radius:2px;flex-shrink:0;height:52px;margin-top:4px;opacity:.8;width:4px}.spa-section-title{font-family:var(--font-display);font-size:40px;line-height:1;margin:0 0 10px}.spa-section-desc{color:var(--text-muted);font-size:10px;letter-spacing:.12em;line-height:1.6;margin:0;text-transform:uppercase}.spa-cards{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.spa-card{background:hsla(0,0%,100%,.025);border:1px solid #ffffff12;border-radius:6px;overflow:hidden;padding:24px;position:relative;transition:border-color .2s ease,background .2s ease,transform .2s ease}.spa-card--linked{cursor:pointer}.spa-card--linked:hover{background:color-mix(in srgb,var(--rc) 5%,hsla(0,0%,100%,.025));border-color:color-mix(in srgb,var(--rc) 40%,#0000);transform:translateY(-2px)}.spa-card-bar{height:2px;left:0;opacity:.65;position:absolute;top:0;transition:opacity .2s ease}.spa-card--linked:hover .spa-card-bar{opacity:1}.spa-card-top{align-items:baseline;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin-bottom:6px}.spa-card-label{color:var(--text-primary);font-family:var(--font-display);font-size:18px;line-height:1.2}.spa-card-dates{color:var(--text-dim);flex-shrink:0;font-size:8px;letter-spacing:.16em;text-transform:uppercase;white-space:nowrap}.spa-card-role{color:var(--rc);font-size:9px;letter-spacing:.14em;margin-bottom:14px;opacity:.85;text-transform:uppercase}.spa-card-desc{color:var(--text-muted);font-size:11px;line-height:1.8;margin:0 0 16px}.spa-card-achievements{list-style:none;margin:0 0 16px;padding:0}.spa-card-achievements li{color:var(--text-muted);font-size:10px;line-height:1.7;margin-bottom:4px;padding-left:14px;position:relative}.spa-card-achievements li:before{color:var(--rc);content:"›";left:0;opacity:.7;position:absolute}.spa-card-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.spa-card-tag{background:color-mix(in srgb,var(--rc) 12%,#0000);border:1px solid color-mix(in srgb,var(--rc) 25%,#0000);border-radius:3px;color:var(--rc);font-size:8px;opacity:.85;padding:3px 8px}.spa-card-cta,.spa-card-tag{letter-spacing:.12em;text-transform:uppercase}.spa-card-cta{display:block;font-size:9px;margin-top:8px;opacity:.65;transition:opacity .2s ease}.spa-card--linked:hover .spa-card-cta{opacity:1}.spa-footer{border-top:1px solid #ffffff0d;padding:60px 32px;text-align:center}.spa-footer-text{color:var(--text-dim);font-size:9px;letter-spacing:.18em;margin-bottom:24px;text-transform:uppercase}.spa-view-toggle--large{font-size:10px;padding:14px 28px}@media (max-width:768px){.brain-region-bar{gap:5px}.region-bar-btn{font-size:9px;padding:8px 12px}.region-bar-label{display:none}.spa-hero{padding:60px 24px 48px}.spa-section{padding:48px 24px}.spa-header{gap:12px;padding:12px 16px}.spa-header-nav{display:none}}@keyframes neuron-pulse{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.35)}}.neuron-circle{animation:neuron-pulse 2s ease-in-out infinite;animation:neuron-pulse var(--pulse-duration,2s) ease-in-out infinite;transform-box:fill-box;transform-origin:center}.neuron-circle.selected{animation:neuron-pulse-selected 2s ease-in-out infinite;animation:neuron-pulse-selected var(--pulse-duration,2s) ease-in-out infinite}@keyframes neuron-pulse-selected{0%,to{opacity:.95;transform:scale(1.1)}50%{opacity:1;transform:scale(1.5)}}.neuron-halo{animation:halo-pulse 2s ease-in-out infinite;animation:halo-pulse var(--pulse-duration,2s) ease-in-out infinite;pointer-events:none;transform-box:fill-box;transform-origin:center}@keyframes halo-pulse{0%,to{opacity:.06;transform:scale(1)}50%{opacity:.12;transform:scale(1.6)}}@keyframes synapse-flow{0%{stroke-dashoffset:100}to{stroke-dashoffset:0}}.synapse-thread{stroke-dasharray:6 14;animation:synapse-flow 3s linear infinite;animation:synapse-flow var(--flow-duration,3s) linear infinite;pointer-events:none;transition:stroke-opacity .3s ease,stroke .3s ease}.synapse-thread.paused{animation-play-state:paused}@keyframes spark-radiate{0%{r:12px;r:var(--spark-r,12px);stroke-width:2;opacity:1}to{r:54px;r:calc(var(--spark-r, 12px)*4.5);stroke-width:.3;opacity:0}}.neuron-spark{fill:none;stroke:var(--glow-primary);animation:spark-radiate .7s ease-out forwards;pointer-events:none}.brain-region-blob{fill:#1a6b8a;fill:var(--region-color,#1a6b8a);fill-opacity:.045;stroke:#1a6b8a;stroke:var(--region-color,#1a6b8a);stroke-opacity:.18;stroke-width:1.5;transition:fill-opacity .4s ease,stroke-opacity .4s ease}.brain-region-blob:hover{fill-opacity:.07;stroke-opacity:.3}.brain-region-label{fill:#1a6b8a;fill:var(--region-color,#1a6b8a);font-family:var(--font-display);letter-spacing:.12em;opacity:.38;pointer-events:none;text-transform:uppercase;transition:opacity .4s ease}.neuron-label{fill:var(--text-primary);pointer-events:none;transition:opacity .5s ease}.detail-panel,.neuron-label{font-family:var(--font-mono)}.detail-panel{backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);background:var(--panel-bg);border-left:1px solid #4fc3f71a;height:100vh;overflow-x:hidden;overflow-y:auto;position:fixed;right:0;scrollbar-color:#4fc3f733 #0000;scrollbar-width:thin;top:0;width:420px;z-index:100}.detail-panel::-webkit-scrollbar{width:4px}.detail-panel::-webkit-scrollbar-track{background:#0000}.detail-panel::-webkit-scrollbar-thumb{background:#4fc3f733;border-radius:2px}.panel-close{align-items:center;background:none;border:1px solid #4fc3f726;border-radius:50%;color:var(--text-muted);cursor:pointer;display:flex;font-family:var(--font-mono);font-size:16px;height:32px;justify-content:center;position:absolute;right:20px;top:20px;transition:all .2s ease;width:32px;z-index:1}.panel-close:hover{border-color:var(--glow-primary);color:var(--glow-primary)}.panel-content{padding:60px 28px 40px}.panel-region-tag{border:1px solid;border-radius:3px;display:inline-block;font-size:9px;letter-spacing:.18em;margin-bottom:16px;opacity:.85;padding:3px 10px;text-transform:uppercase}.panel-title{color:var(--text-primary);font-family:var(--font-display);font-size:28px;line-height:1.2;margin-bottom:6px}.panel-role{color:var(--glow-primary);font-size:11px;letter-spacing:.08em;margin-bottom:4px;text-transform:uppercase}.panel-dates{color:var(--text-muted);font-size:10px;letter-spacing:.06em;margin-bottom:20px}.panel-divider{background:#4fc3f714;height:1px;margin:20px 0;width:100%}.panel-description{color:#e8f4fdbf;font-size:12px;line-height:1.75;margin-bottom:20px}.panel-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.panel-tag{background:#4fc3f70f;border:1px solid #4fc3f71f;border-radius:2px;color:var(--text-muted);letter-spacing:.1em;padding:3px 8px}.panel-section-label,.panel-tag{font-size:9px;text-transform:uppercase}.panel-section-label{color:var(--text-dim);letter-spacing:.18em;margin-bottom:10px}.panel-achievements{list-style:none;margin-bottom:20px}.panel-achievements li{border-bottom:1px solid #4fc3f70a;color:#e8f4fda6;font-size:11px;line-height:1.65;padding:6px 0 6px 14px;position:relative}.panel-achievements li:before{color:var(--glow-primary);content:"›";left:0;opacity:.6;position:absolute}.panel-actions{display:flex;flex-direction:column;gap:8px;margin-top:24px}.panel-btn{border-radius:3px;cursor:pointer;display:block;font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;padding:11px 16px;text-align:center;text-decoration:none;text-transform:uppercase;transition:all .2s ease;width:100%}.panel-btn-primary{background:#4fc3f71a;border:1px solid #4fc3f74d;color:var(--glow-primary)}.panel-btn-primary:hover{background:#4fc3f72e;border-color:var(--glow-primary);box-shadow:0 0 16px #4fc3f726}.panel-btn-secondary{background:#0000;border:1px solid #4fc3f71a;color:var(--text-muted)}.panel-btn-secondary:hover{border-color:#4fc3f740;color:var(--text-primary)}.node-page{background:var(--bg);color:var(--text-primary);font-family:var(--font-mono);min-height:100vh;overflow-x:hidden;overflow-y:auto;width:100vw}.node-page-header{overflow:hidden;padding:80px 60px 60px;position:relative}.node-page-header:before{background:#1a6b8a14;background:var(--header-region-color,#1a6b8a14);content:"";inset:0;pointer-events:none;position:absolute}.node-page-back{align-items:center;color:var(--text-muted);display:inline-flex;font-size:10px;gap:8px;letter-spacing:.14em;margin-bottom:40px;text-decoration:none;text-transform:uppercase;transition:color .2s ease}.node-page-back:hover{color:var(--glow-primary)}.node-page-type-tag{font-size:9px;letter-spacing:.2em;margin-bottom:12px;opacity:.7;text-transform:uppercase}.node-page-title{font-family:var(--font-display);font-size:clamp(32px,5vw,56px);line-height:1.1;margin-bottom:10px}.node-page-role{font-size:13px;letter-spacing:.08em;margin-bottom:6px;opacity:.8;text-transform:uppercase}.node-page-dates{color:var(--text-muted);font-size:11px;letter-spacing:.06em}.node-page-body{margin:0 auto;max-width:860px;padding:60px}.node-page-section{margin-bottom:48px}.node-page-section-title{border-bottom:1px solid #4fc3f712;color:var(--text-dim);font-size:9px;letter-spacing:.2em;margin-bottom:16px;padding-bottom:8px;text-transform:uppercase}.node-page-description{color:#e8f4fdc7;font-size:14px;line-height:1.8}.node-page-achievements{list-style:none}.node-page-achievements li{border-bottom:1px solid #4fc3f70d;color:#e8f4fdb3;font-size:13px;line-height:1.7;padding:10px 0 10px 20px;position:relative}.node-page-achievements li:before{color:var(--glow-primary);content:"›";font-size:16px;left:0;line-height:1.5;opacity:.7;position:absolute}.node-page-tech{display:flex;flex-wrap:wrap;gap:8px}.node-page-tech-chip{background:#4fc3f70f;border:1px solid #4fc3f724;border-radius:3px;color:var(--text-muted);font-size:10px;padding:5px 12px}.node-page-link,.node-page-tech-chip{letter-spacing:.1em;text-transform:uppercase}.node-page-link{align-items:center;color:var(--glow-primary);display:inline-flex;font-size:11px;gap:8px;padding:10px 0;text-decoration:none;transition:opacity .2s ease}.node-page-link:hover{opacity:.75}.particle-canvas{pointer-events:none}.brain-canvas-svg,.particle-canvas{height:100%;left:0;position:absolute;top:0;width:100%}.brain-canvas-svg.stabilizing{opacity:.3;transition:opacity 1.2s ease}.brain-canvas-svg.stabilized{opacity:1;transition:opacity 1.2s ease}.neural-portfolio{background:var(--bg);height:100vh;overflow:hidden;position:relative;width:100vw}@keyframes badge-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.neural-name-badge{animation:badge-in 1s ease 2s both;bottom:32px;left:32px;pointer-events:none;position:fixed;z-index:50}.neural-name-badge .name-primary{color:var(--text-primary);font-family:var(--font-display);font-size:22px;line-height:1.1}.neural-name-badge .name-sub{color:var(--text-muted);font-size:9px;letter-spacing:.2em;margin-top:4px;text-transform:uppercase}@keyframes hint-in{0%{opacity:0}to{opacity:1}}.neural-hint{animation:hint-in 1s ease 3.5s both;bottom:32px;color:var(--text-dim);font-size:9px;letter-spacing:.14em;pointer-events:none;position:fixed;right:32px;text-transform:uppercase;z-index:50}.neural-app{background:var(--bg);width:100%}
/*# sourceMappingURL=main.054bff45.css.map*/