:root{--bg-0:#02050f;--bg-1:#061327;--bg-2:#13284c;--surface:#0b1528bd;--surface-strong:#081121eb;--border-soft:#87ace22e;--border-strong:#91bcf566;--text-high:#ecf4ff;--text-body:#b9c8dd;--text-muted:#8f9fb8;--accent:#9fd2ff;--accent-warm:#ffbe87;--shadow-heavy:0 26px 70px #00000061;color:var(--text-body);background-color:var(--bg-0);text-rendering:optimizelegibility;font-synthesis:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Avenir Next,Segoe UI,sans-serif;font-weight:400;line-height:1.45}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:radial-gradient(circle at 12% 18%, #5793ec33, transparent 28%), radial-gradient(circle at 88% 14%, #ffa57833, transparent 26%), linear-gradient(160deg, var(--bg-0) 0%, var(--bg-1) 48%, var(--bg-0) 100%);min-height:100vh;color:var(--text-body);margin:0}body:before{content:"";pointer-events:none;z-index:-1;background:radial-gradient(circle at 22% 85%,#7cb1ff1f,#0000 40%),radial-gradient(circle at 80% 70%,#78eecb1a,#0000 36%);position:fixed;inset:0}h1,h2,h3,p{margin:0}button{font:inherit;color:inherit}.portfolio-shell{min-height:100vh;color:var(--text-body);position:relative;overflow:hidden}.scene-layer{z-index:0;background:radial-gradient(circle at 16% 20%,#8e887e1f,#0000 36%),radial-gradient(circle at 85% 15%,#766c621a,#0000 34%),#070708;position:fixed;inset:0}.loading-overlay{z-index:6;opacity:1;will-change:opacity;background:#070708;place-items:center;transition:opacity .28s cubic-bezier(.22,1,.36,1);display:grid;position:fixed;inset:0}.loading-overlay.is-hidden{opacity:0;pointer-events:none}.loading-spinner{border:3px solid #9ac4f429;border-top-color:#b8d9ffe6;border-radius:50%;width:52px;height:52px;animation:.9s linear infinite spin}.panel-prewarm{visibility:hidden;pointer-events:none;contain:layout style paint;width:min(26.5rem,100vw - 2.2rem);position:fixed;top:-200vh;left:-200vw}@keyframes spin{to{transform:rotate(360deg)}}.scene-layer:after{display:none}.constellation-canvas{width:100%!important;height:100%!important}.hud-header,.hud-panel,.neutral-reset,.project-rail,.interaction-hint{z-index:12;position:fixed}.hud-header{pointer-events:none;background:#07101f;border:1px solid #9ac4f43d;border-radius:.9rem;width:min(32rem,100vw - 2.2rem);padding:.85rem 1rem;top:1.1rem;left:1.1rem}.hud-label{text-transform:uppercase;letter-spacing:.14em;color:#9fd2ff;margin-bottom:.35rem;font-size:.68rem;font-weight:600}.hud-header h1{letter-spacing:-.02em;color:#ecf4ff;margin-bottom:.2rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.6rem,4vw,2.2rem);line-height:1}.hud-lede{color:#b9c8dd;max-width:56ch;font-size:.9rem}.hud-panel{width:min(26.5rem,100vw - 2.2rem);top:1.1rem;right:1.1rem}.neutral-reset{color:#e5f0ffb8;opacity:1;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#060c166b;border:1px solid #9cc3f33d;border-radius:999px;place-items:center;width:1.55rem;height:1.55rem;font-size:.82rem;line-height:1;transition:border-color .16s,color .16s,background .16s,opacity .16s,transform .22s cubic-bezier(.22,1,.36,1);display:grid;top:.7rem;left:50%;transform:translate(-50%)scale(1)}.neutral-reset.is-hidden{opacity:0;pointer-events:none;transform:translate(-50%)scale(.94)}.neutral-reset:hover{color:#f4fafff2;background:#08101c9e;border-color:#b6d6ff7a}.neutral-reset:focus-visible{outline-offset:2px;outline:2px solid #a2ceffb8}.project-panel{box-shadow:var(--shadow-heavy);background:#070f1c;border:1px solid #9bc6f742;border-radius:.95rem;flex-direction:column;gap:.68rem;padding:.95rem;display:flex}.panel-kicker{text-transform:uppercase;letter-spacing:.13em;color:#8f9fb8;font-size:.66rem;font-weight:700}.project-card{gap:.75rem;display:grid}.project-meta{color:#8f9fb8;justify-content:space-between;gap:.75rem;font-size:.74rem;display:flex}.project-card h2{color:#ecf4ff;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.4rem,2.3vw,1.8rem);line-height:1}.project-theme{color:#9fd2ff;font-size:.83rem}.impact-block{background:#0c1625bf;border:1px solid #99c7ff33;border-radius:.75rem;gap:.26rem;padding:.68rem;display:grid}.impact-block h3{letter-spacing:.08em;text-transform:uppercase;color:#8f9fb8;font-size:.72rem}.neutral-tip-inline{display:none}.insight-panel{background:linear-gradient(#112236f0,#091422f5);border:1px solid #9bccff4d;border-radius:.95rem;display:grid;overflow:hidden;box-shadow:inset 0 1px #d6e8ff17,0 10px 24px #040a1252}.insight-tabs{background:linear-gradient(#1c3450b3,#0e1d2e85);border-bottom:1px solid #9dcdff33;grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;gap:.16rem;padding:.3rem .24rem 0;display:grid}.insight-tab{color:#c2d4ecd1;letter-spacing:.038em;text-transform:uppercase;text-align:center;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:1px solid #0000;border-radius:.5rem .5rem 0 0;min-height:1.95rem;padding:.42rem .14rem .5rem;font-size:.585rem;font-weight:640;line-height:1;transition:border-color .16s,color .16s,background .16s,transform .16s,box-shadow .16s;position:relative;overflow:hidden}.insight-tab:hover{color:#ecf4ff;background:#1122355c;border-color:#acd1fb33;transform:translateY(-1px)}.insight-tab.active{color:#f4f8ff;background:linear-gradient(#3a63946b,#11243af0);border-color:#cde5ff6b #cde5ff6b #0c192af0;box-shadow:inset 0 1px #dceeff24}.insight-tab.active:after{content:"";background:#bee0ffd1;border-radius:999px;height:2px;position:absolute;bottom:.12rem;left:18%;right:18%}.insight-tab:focus-visible{outline-offset:2px;outline:2px solid #a3cfffb8}.insight-content{background:linear-gradient(#0c192acc,#091321eb);gap:.26rem;padding:.8rem;display:grid}.insight-content h3{letter-spacing:.08em;text-transform:uppercase;color:#8f9fb8;font-size:.72rem}.insight-hotlinks{gap:.32rem;margin-top:.46rem;display:grid}.insight-hotlink-row{color:#b6c7dd;font-size:.73rem}.insight-hotlink-label{color:#93abca}.insight-hotlink{color:#b8ddff;text-underline-offset:.14em;overflow-wrap:anywhere;text-decoration-line:underline;text-decoration-thickness:1px}.insight-hotlink:hover{color:#e6f3ff}.insight-hotlink:focus-visible{outline-offset:2px;outline:2px solid #a3cfffb8}.stack-list{flex-wrap:wrap;gap:.4rem;display:flex}.stack-list span{color:#ecf4ff;background:#0d1a2ecc;border:1px solid #aac6ec47;border-radius:999px;padding:.21rem .52rem;font-size:.74rem}.project-rail{flex-wrap:wrap;justify-content:center;gap:.55rem;width:min(980px,100vw - 2rem);display:flex;bottom:1rem;left:50%;transform:translate(-50%)}.project-pill{color:var(--text-body);cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#050a13c7;border:1px solid #86acda6b;border-radius:999px;align-items:center;gap:.45rem;padding:.42rem .72rem;transition:border-color .18s,transform .18s,color .18s;display:inline-flex}.project-pill:hover{color:var(--text-high);border-color:#a4ccffb8}.project-pill:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.project-pill.active{color:var(--text-high);border-color:#b9dbfff2;transform:translateY(-1px);box-shadow:inset 0 0 0 1px #c6e0ff4d}.pill-dot{border-radius:50%;width:.54rem;height:.54rem;display:inline-block}.node-label{color:#eaf3ff;white-space:nowrap;letter-spacing:.02em;background:#050b16e6;border:1px solid #9bc6ff80;border-radius:999px;padding:.19rem .52rem;font-size:.74rem}.interaction-hint{color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;pointer-events:none;font-size:.74rem;bottom:1rem;left:1.1rem}.canvas-fallback{text-align:center;width:100%;height:100%;color:var(--text-muted);background:radial-gradient(circle,#4d8ce626,#0000 55%);place-content:center;font-size:.9rem;display:grid}@media (width<=1060px){.hud-header{width:min(30rem,100vw - 2rem)}.hud-panel{width:min(24rem,100vw - 2rem)}}@media (width<=820px){.hud-header{display:none}.hud-panel{top:auto;left:.75rem;right:.75rem;bottom:calc(env(safe-area-inset-bottom) + 4.9rem);width:auto}.neutral-reset{top:.65rem}.project-panel{max-height:min(38dvh, calc(100dvh - env(safe-area-inset-bottom) - 6.1rem));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:linear-gradient(#07101ff7,#060e1bf0);border-color:#8cbdf74d;border-radius:1.12rem;padding:.75rem;overflow:auto;box-shadow:0 16px 34px #0208109e,inset 0 1px #badcff17}.project-panel.is-neutral{min-height:0;max-height:none}.project-card{gap:.62rem}.project-meta{gap:.5rem;font-size:.68rem}.project-meta span:last-child{text-align:right}.project-card h2{font-size:2.05rem;line-height:.95}.project-summary{color:#bdcee4;-webkit-line-clamp:4;-webkit-box-orient:vertical;font-size:.86rem;line-height:1.34;display:-webkit-box;overflow:hidden}.insight-tabs{scrollbar-width:none;border-bottom:0;grid-template-columns:none;gap:.3rem;padding:.36rem;display:flex;overflow-x:auto}.insight-tabs::-webkit-scrollbar{display:none}.insight-tab{background:#0a1628d1;border:1px solid #96c0f257;border-radius:999px;flex:none;min-height:0;padding:.42rem .75rem;font-size:.56rem}.insight-tab.active{background:linear-gradient(#3a659880,#0f2136f5);border-color:#c6e0ffad}.insight-tab.active:after{display:none}.insight-content{max-height:15.5dvh;padding:.72rem;overflow:auto}.insight-content h3{font-size:.68rem}.insight-body{color:#c1d1e6;font-size:.82rem;line-height:1.34}.insight-hotlink-row{font-size:.68rem}.stack-list,.project-panel.is-neutral .impact-block{display:none}.neutral-summary{color:#c3d4ea;font-size:.9rem;line-height:1.35}.neutral-tip-inline{color:#a8bfdc;background:#0a1627b8;border:1px solid #91bff63d;border-radius:.72rem;padding:.58rem .62rem;font-size:.76rem;line-height:1.34;display:block}.project-rail{left:.5rem;right:.5rem;bottom:calc(env(safe-area-inset-bottom) + .45rem);flex-wrap:nowrap;justify-content:flex-start;width:auto;padding-bottom:.12rem;overflow-x:auto;transform:none}.project-pill{white-space:nowrap}.interaction-hint{display:none}}
