:root{--ink:#12151a;--ink-soft:#3a424c;--muted:#6b7380;--line:#d5dbe3;--paper:#f3f5f7;--paper-deep:#e6eaf0;--surface:#fff;--accent:#1a5f52;--accent-hover:#134940;--accent-soft:#d7ebe6;--accent-wash:rgba(26,95,82,.08);--danger:#b42318;--warn:#9a6700;--shadow:0 18px 40px rgba(18,21,26,.08);--radius:4px;--nav-h:72px;--max:1100px;--font-body:"IBM Plex Sans",sans-serif;--font-mono:"IBM Plex Mono",monospace;--ease:cubic-bezier(0.22,1,0.36,1)}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:88px}@media (max-width:800px){html{scroll-padding-top:24px}}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f3f5f7;background:var(--paper);color:#12151a;color:var(--ink);font-family:IBM Plex Sans,sans-serif;font-family:var(--font-body);font-size:17px;line-height:1.6;margin:0;overflow-x:hidden}code{font-family:IBM Plex Mono,monospace;font-family:var(--font-mono)}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}button,input,textarea{font:inherit}::selection{background:#d7ebe6;background:var(--accent-soft);color:#12151a;color:var(--ink)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#b57bff,#7a5a9e);border:2px solid #0a0810;border-radius:8px}::-webkit-scrollbar-track{background:#120e18}*{scrollbar-color:#7a5a9e #120e18;scrollbar-width:thin}:root{--bg:#07060c;--panel:#100d16;--panel-raised:#15111c;--line:#2c2736;--line-soft:#1d1824;--text:#f2f0f7;--dim:#8b8796;--faint:#56515f;--accent:#b57bff;--accent-soft:rgba(181,123,255,.14);--mono:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;--sans:"IBM Plex Sans",system-ui,sans-serif;--serif:"Instrument Serif",Georgia,serif}.home-wrapper{background:#07060c;background:var(--bg);color:#f2f0f7;color:var(--text);font-family:IBM Plex Sans,system-ui,sans-serif;font-family:var(--sans);min-height:100vh;overflow-x:hidden;position:relative}.ambient-glow{background:radial-gradient(ellipse 80% 70% at 50% 100%,rgba(181,123,255,.28),transparent 70%),radial-gradient(ellipse 50% 40% at 30% 100%,rgba(120,70,180,.18),transparent 70%);height:45vh;inset:auto 0 0;pointer-events:none;position:fixed;z-index:0}.starfield{background-image:radial-gradient(1px 1px at 12% 18%,hsla(0,0%,100%,.55),transparent),radial-gradient(1px 1px at 28% 42%,hsla(0,0%,100%,.35),transparent),radial-gradient(1.5px 1.5px at 46% 12%,rgba(210,176,255,.55),transparent),radial-gradient(1px 1px at 63% 36%,hsla(0,0%,100%,.4),transparent),radial-gradient(1px 1px at 78% 22%,hsla(0,0%,100%,.3),transparent),radial-gradient(1.5px 1.5px at 88% 58%,rgba(210,176,255,.4),transparent),radial-gradient(1px 1px at 18% 68%,hsla(0,0%,100%,.28),transparent),radial-gradient(1px 1px at 52% 74%,hsla(0,0%,100%,.22),transparent),radial-gradient(1px 1px at 71% 81%,hsla(0,0%,100%,.3),transparent);opacity:.55}.orb-field,.starfield{inset:0;pointer-events:none;position:fixed;z-index:0}.orb-field{overflow:hidden}.orb{-webkit-animation:orb-rise var(--dur) linear infinite;animation:orb-rise var(--dur) linear infinite;-webkit-animation-delay:var(--delay);animation-delay:var(--delay);background:rgba(181,123,255,.75);border-radius:50%;bottom:-8px;height:var(--size);left:var(--x);opacity:0;position:absolute;width:var(--size);will-change:transform,opacity}@-webkit-keyframes orb-rise{0%{opacity:0;-webkit-transform:translateZ(0);transform:translateZ(0)}8%{opacity:var(--peak)}45%{opacity:calc(var(--peak)*.75)}70%{opacity:calc(var(--peak)*.35)}88%{opacity:0}to{opacity:0;-webkit-transform:translate3d(var(--drift),-110vh,0);transform:translate3d(var(--drift),-110vh,0)}}@keyframes orb-rise{0%{opacity:0;-webkit-transform:translateZ(0);transform:translateZ(0)}8%{opacity:var(--peak)}45%{opacity:calc(var(--peak)*.75)}70%{opacity:calc(var(--peak)*.35)}88%{opacity:0}to{opacity:0;-webkit-transform:translate3d(var(--drift),-110vh,0);transform:translate3d(var(--drift),-110vh,0)}}@media (prefers-reduced-motion:reduce){.orb-field{display:none}}.section-wrap,.terminal-footer{margin:0 auto;position:relative;width:min(100% - 48px,1120px);z-index:1}.site-top{display:flex;justify-content:center;left:0;padding:16px;pointer-events:none;position:fixed;right:0;top:0;width:100%;z-index:30}.site-top .site-nav{pointer-events:auto}.mobile-resume{display:none}.site-nav{align-items:center;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:rgba(14,11,20,.82);border:1px solid rgba(181,123,255,.16);border-radius:999px;box-shadow:0 10px 40px rgba(0,0,0,.35);display:flex;gap:4px;padding:8px}.site-nav a{border-radius:999px;color:#8b8796;color:var(--dim);font:500 13px/1 IBM Plex Sans,system-ui,sans-serif;font:500 13px/1 var(--sans);padding:8px 14px;text-decoration:none;transition:color .16s ease,background .16s ease;white-space:nowrap}.site-nav a.is-active,.site-nav a:hover{color:#f2f0f7;color:var(--text)}.site-nav a.is-active{background:rgba(181,123,255,.18)}.site-nav a.nav-resume{color:#b57bff;color:var(--accent);margin-left:2px}.site-nav a.nav-resume:hover{background:rgba(181,123,255,.14);background:var(--accent-soft);color:#d2b0ff}.hero-section{justify-content:center;min-height:100vh;padding:96px 24px 120px;position:relative;text-align:center;z-index:1}.hero-copy,.hero-section{align-items:center;display:flex;flex-direction:column}.hero-copy{width:min(100%,36rem)}.hero-greeting{-webkit-animation:hero-in .7s cubic-bezier(.22,1,.36,1) both;animation:hero-in .7s cubic-bezier(.22,1,.36,1) both;color:#8b8796;color:var(--dim);font:400 1.05rem/1 IBM Plex Sans,system-ui,sans-serif;font:400 1.05rem/1 var(--sans);margin:0 0 14px}.hero-brand{-webkit-animation:hero-in .76s cubic-bezier(.22,1,.36,1) 40ms both;animation:hero-in .76s cubic-bezier(.22,1,.36,1) 40ms both;color:#fff;font-family:IBM Plex Sans,system-ui,sans-serif;font-family:var(--sans);font-size:clamp(3.4rem,9vw,6.4rem);font-weight:700;letter-spacing:-.04em;line-height:.95;margin:0;text-transform:uppercase}.hero-name-break{display:none}.hero-role{-webkit-animation:hero-in .76s cubic-bezier(.22,1,.36,1) 80ms both;animation:hero-in .76s cubic-bezier(.22,1,.36,1) 80ms both;color:#b57bff;color:var(--accent);font:500 .95rem/1.2 IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:500 .95rem/1.2 var(--mono);letter-spacing:.08em;margin:20px 0 0;text-transform:uppercase}.hero-tagline{-webkit-animation:hero-in .76s cubic-bezier(.22,1,.36,1) .12s both;animation:hero-in .76s cubic-bezier(.22,1,.36,1) .12s both;color:#f2f0f7;color:var(--text);font:400 clamp(1.2rem,2.4vw,1.55rem)/1.45 IBM Plex Sans,system-ui,sans-serif;font:400 clamp(1.2rem,2.4vw,1.55rem)/1.45 var(--sans);margin:28px 0 0;max-width:34rem}.hero-tagline em{color:#b57bff;color:var(--accent);font-family:"Instrument Serif",Georgia,serif;font-family:var(--serif);font-style:italic;font-weight:400}.contact-detail,.project-meta,.section-label,.terminal-caption{color:#8b8796;color:var(--dim);font:10px/1.5 IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:10px/1.5 var(--mono);letter-spacing:.04em}.contact-section h2,.content-section h2{color:#f5f7f5;font:500 clamp(2.5rem,5vw,4.6rem)/.98 IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:500 clamp(2.5rem,5vw,4.6rem)/.98 var(--mono);letter-spacing:-.065em;margin:0}.hero-actions{align-items:center;-webkit-animation:hero-in .76s cubic-bezier(.22,1,.36,1) .17s both;animation:hero-in .76s cubic-bezier(.22,1,.36,1) .17s both;display:flex;flex-wrap:wrap;gap:18px 28px;justify-content:center;margin-top:36px}.hero-connect{align-items:center;border-bottom:1px solid rgba(181,123,255,.45);color:#b57bff;color:var(--accent);display:inline-flex;font:500 1.05rem/1 IBM Plex Sans,system-ui,sans-serif;font:500 1.05rem/1 var(--sans);gap:8px;padding-bottom:4px;text-decoration:none;transition:color .16s ease,border-color .16s ease,gap .16s ease}.hero-connect span{transition:-webkit-transform .16s ease;transition:transform .16s ease;transition:transform .16s ease,-webkit-transform .16s ease}.hero-connect:hover{border-color:#d2b0ff;color:#d2b0ff;gap:12px}.hero-connect:hover span{-webkit-transform:translateX(2px);transform:translateX(2px)}.hero-scroll{background:transparent;border:0;color:#8b8796;color:var(--dim);cursor:pointer;display:none;font:500 .95rem/1 IBM Plex Sans,system-ui,sans-serif;font:500 .95rem/1 var(--sans);padding:0}.hero-scroll:hover{color:#f2f0f7;color:var(--text)}.contact-form button{align-items:center;background:#b57bff;background:var(--accent);border:0;border-radius:999px;box-shadow:0 10px 30px rgba(181,123,255,.25);color:#140c1c;display:inline-flex;font:600 14px/1 IBM Plex Sans,system-ui,sans-serif;font:600 14px/1 var(--sans);gap:8px;padding:14px 24px;text-decoration:none;transition:background .16s ease,box-shadow .16s ease,-webkit-transform .16s ease;transition:transform .16s ease,background .16s ease,box-shadow .16s ease;transition:transform .16s ease,background .16s ease,box-shadow .16s ease,-webkit-transform .16s ease}.contact-form button:hover{background:#d2b0ff;-webkit-transform:translateY(-2px);transform:translateY(-2px)}@-webkit-keyframes hero-in{0%{opacity:0;-webkit-transform:translateY(14px);transform:translateY(14px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes hero-in{0%{opacity:0;-webkit-transform:translateY(14px);transform:translateY(14px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.hero-actions,.hero-brand,.hero-greeting,.hero-role,.hero-tagline{-webkit-animation:none;animation:none}}.terminal-status i{background:#b57bff;background:var(--accent);border-radius:50%;box-shadow:0 0 11px #b57bff;box-shadow:0 0 11px var(--accent);display:inline-block;height:6px;margin-right:8px;width:6px}.assistant-shell{background:rgba(10,8,16,.92);border:1px solid #2c2736;border:1px solid var(--line);border-radius:8px;box-shadow:-10px 12px 0 rgba(181,123,255,.03),0 0 50px rgba(0,0,0,.3);display:flex;flex-direction:column;min-height:420px;overflow:hidden}.terminal-bar{align-items:center;border-bottom:1px solid #1d1824;border-bottom:1px solid var(--line-soft);color:#8b8796;color:var(--dim);display:flex;font:10px IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:10px var(--mono);gap:12px;min-height:40px;padding:0 14px}.terminal-lights{display:flex;gap:6px}.terminal-lights span{background:#3a3148;border-radius:50%;height:9px;width:9px}.terminal-lights span:first-child{background:#ff5f57}.terminal-lights span:nth-child(2){background:#febc2e}.terminal-lights span:nth-child(3){background:#28c840;box-shadow:0 0 8px rgba(40,200,64,.35)}.terminal-bar p{margin:0 auto}.terminal-status{color:#b57bff;color:var(--accent);font-size:9px}.terminal-status i{height:4px;margin-right:4px;width:4px}.shell-dock{align-items:flex-end;bottom:22px;display:flex;flex-direction:column;gap:12px;position:fixed;right:22px;z-index:40}.shell-panel{border-radius:14px;box-shadow:0 24px 60px rgba(0,0,0,.55),0 0 0 1px rgba(181,123,255,.18);display:none;height:min(70vh,560px);overflow:hidden;-webkit-transform-origin:bottom right;transform-origin:bottom right;width:min(420px,calc(100vw - 32px))}.shell-panel.is-visible{-webkit-animation:shell-panel-in .22s cubic-bezier(.22,1,.36,1) both;animation:shell-panel-in .22s cubic-bezier(.22,1,.36,1) both;display:block}.shell-panel .assistant-shell{border-radius:14px;box-shadow:none;height:100%;min-height:0}.shell-panel .assistant-messages{flex:1 1;max-height:none}.shell-fab{align-items:center;background:#b57bff;background:var(--accent);border:1px solid rgba(181,123,255,.35);border-radius:999px;box-shadow:0 12px 32px rgba(181,123,255,.35);color:#140c1c;cursor:pointer;display:inline-flex;font:600 13px/1 IBM Plex Sans,system-ui,sans-serif;font:600 13px/1 var(--sans);gap:8px;height:56px;justify-content:center;min-width:56px;padding:0 18px;transition:background .16s ease,border-radius .16s ease,-webkit-transform .16s ease;transition:transform .16s ease,background .16s ease,border-radius .16s ease;transition:transform .16s ease,background .16s ease,border-radius .16s ease,-webkit-transform .16s ease}.shell-fab:hover{background:#d2b0ff;-webkit-transform:translateY(-2px);transform:translateY(-2px)}.shell-dock.is-open .shell-fab{background:rgba(20,16,28,.95);border-color:rgba(181,123,255,.35);color:#f2f0f7;color:var(--text);font-size:28px;font-weight:400;padding:0;width:56px}.shell-fab-prompt{font:700 18px/1 IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:700 18px/1 var(--mono)}.shell-fab-label{font:600 13px/1 IBM Plex Sans,system-ui,sans-serif;font:600 13px/1 var(--sans)}@-webkit-keyframes shell-panel-in{0%{opacity:0;-webkit-transform:translateY(12px) scale(.96);transform:translateY(12px) scale(.96)}to{opacity:1;-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1)}}@keyframes shell-panel-in{0%{opacity:0;-webkit-transform:translateY(12px) scale(.96);transform:translateY(12px) scale(.96)}to{opacity:1;-webkit-transform:translateY(0) scale(1);transform:translateY(0) scale(1)}}@media (prefers-reduced-motion:reduce){.shell-panel{-webkit-animation:none;animation:none}}.assistant-messages{cursor:text;flex:1 1;max-height:320px;overflow-y:auto;padding:16px 16px 8px;scrollbar-color:#7a5a9e #120e18;scrollbar-width:thin}.assistant-messages::-webkit-scrollbar{width:8px}.assistant-messages::-webkit-scrollbar-track{background:#120e18;border-radius:8px}.assistant-messages::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#b57bff,#7a5a9e);border:2px solid #120e18;border-radius:8px}.assistant-messages::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#d2b0ff,#b57bff)}.term-line{margin-bottom:10px}.term-line p,.term-line pre{font:11px/1.55 IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:11px/1.55 var(--mono);margin:0;white-space:pre-wrap;word-break:break-word}.term-prompt{color:#5dde7a;font-weight:600}.term-input p{color:#f2f0f7;color:var(--text)}.term-output pre{color:#c5ccd6}.term-hint pre,.term-system pre{color:#56515f;color:var(--faint);font-size:10px}.term-error pre{color:#ff8f8f}.typing-caret{-webkit-animation:caret-blink .7s steps(1) infinite;animation:caret-blink .7s steps(1) infinite;background:#b57bff;background:var(--accent);display:inline-block;height:1em;margin-left:2px;vertical-align:text-bottom;width:7px}@-webkit-keyframes caret-blink{50%{opacity:0}}@keyframes caret-blink{50%{opacity:0}}.term-shortcuts{display:flex;flex-wrap:wrap;gap:8px;padding:0 14px 12px}.term-shortcuts button{background:transparent;border:1px solid #2c2736;border:1px solid var(--line);border-radius:999px;color:#8b8796;color:var(--dim);cursor:pointer;font:9px IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:9px var(--mono);padding:6px 10px;white-space:nowrap}.term-shortcuts button:hover{border-color:#6b4f8a;color:#b57bff;color:var(--accent)}.assistant-input input:disabled,.term-shortcuts button:disabled{cursor:not-allowed;opacity:.55}.assistant-input{align-items:center;background:#0a0810;border:1px solid #2c2736;border:1px solid var(--line);display:flex;gap:8px;margin:0 14px 14px;padding:9px 10px}.assistant-input .term-prompt{font:14px IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:14px var(--mono)}.assistant-input input{background:transparent;border:0;color:#f2f0f7;color:var(--text);flex:1 1;font:11px IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:11px var(--mono);min-width:0;outline:0}.assistant-input input::-webkit-input-placeholder{color:#56515f;color:var(--faint)}.assistant-input input::placeholder{color:#56515f;color:var(--faint)}.content-section{padding:72px 0 48px}.section-label{align-items:center;display:flex;gap:7px;margin-bottom:12px}.section-label>span{color:#b57bff;color:var(--accent)}.section-label small{color:#56515f;color:var(--faint);font-size:9px;margin-left:auto}.contact-section h2,.content-section h2{font-size:clamp(2rem,3.5vw,3rem);letter-spacing:-.055em}.project-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:28px}.project-card{background:rgba(18,22,20,.72);border:1px solid #2c2736;border:1px solid var(--line);border-radius:6px;color:inherit;cursor:pointer;display:flex;flex-direction:column;min-height:0;padding:18px;text-decoration:none;transition:border-color .18s ease,background .18s ease,-webkit-transform .18s ease;transition:border-color .18s ease,transform .18s ease,background .18s ease;transition:border-color .18s ease,transform .18s ease,background .18s ease,-webkit-transform .18s ease}.project-card:hover{background:#101512;border-color:#6b4f8a;-webkit-transform:translateY(-4px);transform:translateY(-4px)}.project-card:hover .project-open{color:#b57bff;color:var(--accent)}.project-card-top{align-items:flex-start;display:flex;gap:10px;justify-content:space-between}.project-card h3{color:#f0f3f1;font:500 17px/1.45 IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:500 17px/1.45 var(--mono);margin:0}.project-private-badge{border:1px solid rgba(181,123,255,.35);border-radius:999px;color:#b57bff;color:var(--accent);flex-shrink:0;font:500 9px/1 IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:500 9px/1 var(--mono);letter-spacing:.04em;margin-top:2px;padding:3px 8px;text-transform:uppercase}.project-card.is-private,.project-card.is-static{cursor:default}.project-card.is-private:hover,.project-card.is-static:hover{background:rgba(18,22,20,.72);border-color:#2c2736;border-color:var(--line);-webkit-transform:none;transform:none}.project-meta,.project-open.is-private{color:#56515f;color:var(--faint)}.project-meta{margin:9px 0 10px}.project-card>p:not(.project-meta){color:#b1bbb5;font-size:12px;line-height:1.65;margin:0}.project-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:18px}.project-tags span{color:#b57bff;color:var(--accent);font:9px IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:9px var(--mono)}.project-open{color:#8b8796;color:var(--dim);font:10px IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:10px var(--mono);margin-top:14px}.career-timeline{list-style:none;margin:32px 0 0;padding:8px 0 0;position:relative}.career-timeline:before{background:linear-gradient(180deg,rgba(181,123,255,.95) 0,rgba(181,123,255,.55) 22%,rgba(107,79,138,.45) 55%,rgba(44,39,54,.25) 82%,transparent);bottom:0;box-shadow:0 0 12px rgba(181,123,255,.22);width:2px}.career-timeline:after,.career-timeline:before{content:"";left:50%;position:absolute;top:0;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.career-timeline:after{background:linear-gradient(180deg,rgba(181,123,255,.18),rgba(181,123,255,.05) 40%,transparent);bottom:12%;-webkit-filter:blur(4px);filter:blur(4px);pointer-events:none;width:10px}.career-timeline-item{grid-gap:40px;align-items:start;display:grid;gap:40px;grid-template-columns:1fr 1fr;margin:0 0 28px;position:relative}.career-timeline-item:last-child{margin-bottom:0}.career-timeline-node{background:#07060c;background:var(--bg);border:2px solid #b57bff;border:2px solid var(--accent);border-radius:50%;box-shadow:0 0 0 5px #07060c;box-shadow:0 0 0 5px var(--bg);height:14px;left:50%;position:absolute;top:28px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:14px;z-index:2}.career-timeline-item.is-current .career-timeline-node{background:#b57bff;background:var(--accent);box-shadow:0 0 0 5px #07060c,0 0 16px rgba(181,123,255,.45);box-shadow:0 0 0 5px var(--bg),0 0 16px rgba(181,123,255,.45)}.career-timeline-item.is-left .career-card{grid-column:1;justify-self:end}.career-timeline-item.is-right .career-card{grid-column:2;justify-self:start}.career-card{background:linear-gradient(180deg,rgba(181,123,255,.05),transparent 40%),rgba(16,13,22,.92);border:1px solid #2c2736;border:1px solid var(--line);border-radius:10px;box-shadow:0 14px 36px rgba(0,0,0,.28);padding:20px 22px 22px;position:relative;width:min(100%,460px)}.career-timeline-item.is-left .career-card:after,.career-timeline-item.is-right .career-card:after{background:rgba(16,13,22,.92);border:1px solid #2c2736;border:1px solid var(--line);content:"";height:12px;position:absolute;top:28px;-webkit-transform:rotate(45deg);transform:rotate(45deg);width:12px}.career-timeline-item.is-left .career-card:after{border-bottom:0;border-left:0;right:-7px}.career-timeline-item.is-right .career-card:after{border-right:0;border-top:0;left:-7px}.career-card-header{grid-gap:12px;border-bottom:1px solid #1d1824;border-bottom:1px solid var(--line-soft);display:grid;gap:12px;padding-bottom:14px}.career-card-heading{align-items:flex-start;display:flex;flex-wrap:wrap;gap:10px 12px}.career-card-heading h3{color:#f2f0f7;color:var(--text);flex:1 1 12rem;font:600 1rem/1.35 IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:600 1rem/1.35 var(--mono);margin:0}.career-card-company{align-items:center;background:rgba(181,123,255,.12);border:1px solid rgba(181,123,255,.28);border-radius:999px;color:#b57bff;color:var(--accent);display:inline-flex;font:500 10px/1 IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:500 10px/1 var(--mono);letter-spacing:.02em;padding:4px 10px;white-space:nowrap}.career-card-meta{color:#8b8796;color:var(--dim);display:flex;flex-wrap:wrap;font:11px/1.4 IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:11px/1.4 var(--mono);gap:8px 16px;justify-content:space-between}.career-card-meta p{margin:0}.career-card-meta em{color:#8b8796;color:var(--dim);font-style:italic}.career-card-now{color:#b57bff;color:var(--accent);font-style:normal}.career-card-meta time{color:#56515f;color:var(--faint);white-space:nowrap}.career-card-tags{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:14px 0 0;padding:0}.career-card-tags li{border:1px solid #2c2736;border:1px solid var(--line);border-radius:999px;color:#8b8796;color:var(--dim);font:9px/1 IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:9px/1 var(--mono);padding:3px 8px}.career-card-duties{grid-gap:10px;display:grid;gap:10px;list-style:none;margin:14px 0 0;padding:0}.career-card-duties li{color:#b4bdc6;font-size:13px;line-height:1.65;padding-left:14px;position:relative}.career-card-duties li:before{color:#b57bff;color:var(--accent);content:"›";font-family:IBM Plex Mono,SFMono-Regular,Consolas,monospace;font-family:var(--mono);left:0;position:absolute;top:0}.about-strip{border-bottom:1px solid #1d1824;border-bottom:1px solid var(--line-soft);border-top:1px solid #1d1824;border-top:1px solid var(--line-soft);padding:25px 0}.about-strip p{color:#8b8796;color:var(--dim);font:11px/1.9 IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:11px/1.9 var(--mono);margin:0}.about-strip span{color:#b57bff;color:var(--accent)}.contact-section{grid-gap:clamp(44px,9vw,130px);display:grid;gap:clamp(44px,9vw,130px);grid-template-columns:1fr 1fr;padding:40px 0 56px}.email-link{border-bottom:1px solid #2c2736;border-bottom:1px solid var(--line);color:#f2f0f7;color:var(--text);display:inline-block;font:clamp(1rem,2vw,1.45rem) IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:clamp(1rem,2vw,1.45rem) var(--mono);margin-top:38px}.email-link span,.email-link:hover{color:#b57bff;color:var(--accent)}.contact-detail{color:#8b8796;color:var(--dim);line-height:1.9;margin:30px 0 0}.contact-detail b{color:#b57bff;color:var(--accent);font-weight:400}.contact-detail a{border-bottom:1px solid #2c2736;border-bottom:1px solid var(--line);color:#f2f0f7;color:var(--text);transition:color .16s ease,border-color .16s ease}.contact-detail a:hover{border-color:#b57bff;border-color:var(--accent);color:#b57bff;color:var(--accent)}.contact-form{grid-gap:16px;background:rgba(18,22,20,.7);border:1px solid #2c2736;border:1px solid var(--line);border-radius:7px;display:grid;gap:16px;padding:23px}.contact-form label{grid-gap:7px;color:#8b8796;color:var(--dim);display:grid;font:9px IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:9px var(--mono);gap:7px;letter-spacing:.08em;text-transform:uppercase}.contact-form label i{color:#b57bff;color:var(--accent);font-style:normal}.contact-form input,.contact-form textarea{background:#090c0a;border:1px solid #2c2736;border:1px solid var(--line);border-radius:4px;color:#f2f0f7;color:var(--text);font:12px IBM Plex Sans,system-ui,sans-serif;font:12px var(--sans);outline:0;padding:10px;resize:vertical;width:100%}.contact-form input:focus,.contact-form textarea:focus{border-color:#7a5a9e}.contact-form textarea::-webkit-input-placeholder{color:#56515f;color:var(--faint)}.contact-form textarea::placeholder{color:#56515f;color:var(--faint)}.contact-form button{cursor:pointer;justify-self:end;margin-top:4px}.contact-form button[disabled]{cursor:not-allowed;opacity:.6;-webkit-transform:none;transform:none}.form-status{font:10px IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:10px var(--mono);margin:0}.form-status-success{color:#b57bff;color:var(--accent)}.form-status-error{color:#ff7b7b}.form-status-warning{color:#e6c97a}.terminal-footer{border-top:1px solid #1d1824;border-top:1px solid var(--line-soft);color:#56515f;color:var(--faint);display:flex;font:9px IBM Plex Mono,SFMono-Regular,Consolas,monospace;font:9px var(--mono);justify-content:space-between;padding:25px 0 34px}.terminal-footer span{color:#8b8796;color:var(--dim)}@media (max-width:1100px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:800px){.site-top{display:none}.hero-section{align-items:center;justify-content:center;min-height:100svh;padding:56px 24px 64px;position:relative;text-align:center;z-index:1}.mobile-resume{color:#b57bff;color:var(--accent);display:inline-flex;font:500 13px/1 IBM Plex Sans,system-ui,sans-serif;font:500 13px/1 var(--sans);letter-spacing:.02em;position:absolute;right:22px;text-decoration:none;top:18px;z-index:2}.mobile-resume:hover{color:#d2b0ff}.hero-copy{align-items:center;text-align:center;width:min(100%,22rem)}.hero-greeting{font-size:.95rem;margin:0 0 10px}.hero-brand{font-size:clamp(2.15rem,9.5vw,2.85rem);letter-spacing:-.045em;line-height:1;white-space:nowrap}.hero-name-break{display:none}.hero-role{font-size:.72rem;letter-spacing:.1em;margin-top:14px}.hero-tagline{font-size:1.02rem;line-height:1.45;margin-top:18px;max-width:17rem}.hero-actions{gap:14px 22px;justify-content:center;margin-top:26px}.hero-connect{font-size:.98rem}.hero-scroll{display:inline-flex}.content-section{padding:48px 0 32px}.section-label{margin-bottom:8px}.contact-section h2,.content-section h2{font-size:clamp(1.55rem,7.2vw,2rem);letter-spacing:-.04em;line-height:1.2}.section-wrap,.terminal-footer{width:min(100% - 40px,1120px)}.shell-dock{display:none}.contact-section,.project-grid{grid-template-columns:1fr}.project-grid{gap:0;margin-top:18px}.project-card{background:transparent;border:0;border-bottom:1px solid #1d1824;border-bottom:1px solid var(--line-soft);border-radius:0;padding:22px 0}.project-card:first-child{border-top:1px solid #1d1824;border-top:1px solid var(--line-soft)}.project-card.is-private:hover,.project-card:hover{background:transparent;border-color:#1d1824;border-color:var(--line-soft);-webkit-transform:none;transform:none}.project-card h3{font-size:1rem}.project-meta{margin:6px 0 10px}.project-card>p:not(.project-meta){font-size:13px;line-height:1.55}.project-tags{display:none}.project-open{font-size:11px;margin-top:12px}.experience-section h2{font-size:clamp(1.35rem,6.5vw,1.75rem);max-width:16ch}.career-timeline{margin-top:18px}.career-timeline-node,.career-timeline:after,.career-timeline:before{display:none}.career-timeline-item{gap:0;grid-template-columns:1fr;margin-bottom:0;padding-left:0}.career-timeline-item.is-left .career-card,.career-timeline-item.is-right .career-card{background:transparent;border:0;border-bottom:1px solid #1d1824;border-bottom:1px solid var(--line-soft);border-radius:0;box-shadow:none;grid-column:1;justify-self:stretch;padding:16px 0;width:100%}.career-timeline-item:first-child .career-card{border-top:1px solid #1d1824;border-top:1px solid var(--line-soft)}.career-timeline-item.is-left .career-card:after,.career-timeline-item.is-right .career-card:after{display:none}.career-card-header{border-bottom:0;gap:8px;padding-bottom:0}.career-card-heading{align-items:center;flex-direction:row;flex-wrap:wrap;gap:8px 10px}.career-card-heading h3{flex:1 1 auto;font-size:.92rem;line-height:1.3;width:auto}.career-card-company{font-size:9px;padding:3px 8px}.career-card-meta{align-items:center;flex-direction:row;flex-wrap:wrap;font-size:11px;gap:4px 10px}.career-card-meta time:before{color:#56515f;color:var(--faint);content:"· "}.career-more{margin-top:12px}.career-more summary{color:#b57bff;color:var(--accent);cursor:pointer;font:500 12px/1 IBM Plex Sans,system-ui,sans-serif;font:500 12px/1 var(--sans);list-style:none;-webkit-user-select:none;user-select:none;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.career-more summary::-webkit-details-marker{display:none}.career-more summary:after{content:" +"}.career-more[open] summary:after{content:" −"}.career-more .career-card-duties,.career-more .career-card-tags{margin-top:12px}.career-card-duties{gap:8px}.career-card-duties li{font-size:12.5px;line-height:1.5}.contact-section{gap:24px;padding:28px 0 48px}.email-link{font-size:.95rem;margin-top:18px;word-break:break-word}.contact-form{padding:16px}.section-label small{display:none}}@media (max-width:480px){.hero-section{padding:52px 20px 56px}.mobile-resume{right:18px;top:16px}.hero-brand{font-size:clamp(1.95rem,9vw,2.35rem)}.section-wrap,.terminal-footer{width:min(100% - 36px,1120px)}.content-section{padding-bottom:48px}.terminal-footer{grid-gap:10px;display:grid;gap:10px;padding-bottom:88px}}.project-page{background:var(--bg);color:var(--text);font-family:var(--sans);min-height:100vh;position:relative}.project-page.has-workspace{height:100vh;height:100dvh;max-height:100vh;max-height:100dvh;overflow:hidden}.project-ambient{background:radial-gradient(ellipse 70% 60% at 50% 100%,rgba(181,123,255,.18),transparent 70%);height:40vh;inset:auto 0 0;pointer-events:none;position:fixed}.project-shell{box-sizing:border-box;display:flex;flex-direction:column;height:100%;margin:0 auto;min-height:0;padding:10px 0 12px;position:relative;width:min(100% - 32px,1680px);z-index:1}.project-shell-empty{height:auto;min-height:100vh;padding-top:28px}.project-toolbar{align-items:center;border-bottom:1px solid var(--line-soft);display:flex;flex-shrink:0;gap:16px 24px;justify-content:space-between;margin-bottom:10px;padding-bottom:10px}.project-toolbar-main{align-items:center;display:flex;flex:1 1;gap:14px;min-width:0}.project-back{color:var(--dim);display:inline-flex;flex-shrink:0;font:500 13px/1 var(--sans);text-decoration:none;white-space:nowrap}.project-back:hover{color:var(--accent)}.project-title-block{min-width:0}.project-title-row{align-items:center;display:flex;flex-wrap:wrap;gap:8px 10px}.project-title-block h1{color:#fff;font:700 clamp(1.2rem,1.8vw,1.55rem)/1.1 var(--sans);letter-spacing:-.03em;margin:0}.project-lead{color:var(--dim);font:400 .82rem/1.35 var(--sans);margin:4px 0 0;max-width:52rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-tech{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}.project-tech li{border:1px solid rgba(181,123,255,.28);border-radius:999px;color:var(--accent);font:500 10px/1 var(--mono);padding:4px 8px}.project-actions{align-items:center;display:flex;flex-shrink:0;flex-wrap:wrap;gap:10px 14px;justify-content:flex-end}.project-actions a{border-bottom:1px solid rgba(181,123,255,.35);color:var(--accent);font:500 13px/1 var(--sans);padding-bottom:2px;text-decoration:none;white-space:nowrap}.project-actions a:hover{color:#d2b0ff}.project-workspace{display:flex;flex:1 1;min-height:0}.project-workspace .code-explorer{flex:1 1;height:100%;min-height:0;width:100%}.project-fallback{align-items:center;display:flex;flex-direction:column;gap:16px;padding-bottom:40px}.project-embed{aspect-ratio:16/9;background:#000;border:1px solid var(--line);border-radius:12px;max-height:min(70vh,720px);overflow:hidden;width:min(100%,960px)}.project-embed iframe{border:0;display:block;height:100%;width:100%}.project-shot{border:1px solid var(--line);border-radius:12px;max-height:520px;object-fit:cover;width:min(100%,960px)}.project-private{color:var(--dim);font:400 1rem/1.5 var(--sans);margin:0;text-align:center}.code-explorer{background:rgba(16,13,22,.95);border:1px solid var(--line);border-radius:12px;display:grid;grid-template-columns:minmax(200px,300px) minmax(0,1fr);overflow:hidden}.code-tree{background:rgba(10,8,14,.9);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;min-width:0}.code-tree-head{border-bottom:1px solid var(--line-soft);flex-shrink:0;padding:10px 12px}.code-tree-head p{color:var(--faint);font:11px/1.35 var(--mono);margin:0 0 8px;word-break:break-all}.code-tree-head p span{color:var(--accent)}.code-tree-head input{background:hsla(0,0%,100%,.03);border:1px solid var(--line);border-radius:8px;color:var(--text);font:12px/1 var(--mono);padding:8px 10px;width:100%}.code-tree-head input:focus{outline:1px solid rgba(181,123,255,.45)}.code-tree-list{flex:1 1;min-height:0;overflow:auto;padding:8px}.tree-row{align-items:center;background:transparent;border:0;border-radius:6px;color:var(--dim);cursor:pointer;display:flex;font:11px/1.35 var(--mono);gap:6px;padding:6px 8px;padding:6px 8px 6px calc(8px + var(--depth, 0)*14px);text-align:left;width:100%}.tree-row:hover{background:hsla(0,0%,100%,.04);color:var(--text)}.tree-row.is-active{background:rgba(181,123,255,.16);color:#fff}.tree-folder{color:#cfc8dd}.tree-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-chevron{border-bottom:1.5px solid;border-right:1.5px solid;flex-shrink:0;height:8px;opacity:.7;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);transition:-webkit-transform .12s ease;transition:transform .12s ease;transition:transform .12s ease,-webkit-transform .12s ease;width:8px}.tree-folder.is-open .tree-chevron{margin-top:-2px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.tree-folder-mark{background:rgba(181,123,255,.16);border:1px solid rgba(181,123,255,.55);border-radius:2px;flex-shrink:0;height:9px;position:relative;width:12px}.tree-folder-mark:before{background:rgba(181,123,255,.55);border-radius:1px 1px 0 0;content:"";height:3px;left:1px;position:absolute;top:-3px;width:5px}.tree-file-mark{background:hsla(0,0%,100%,.04);border:1px solid hsla(0,0%,100%,.22);border-radius:1px;flex-shrink:0;height:10px;margin-left:14px;width:8px}.code-pane{display:flex;flex-direction:column;min-height:0;min-width:0}.code-pane-head{align-items:center;border-bottom:1px solid var(--line-soft);display:flex;flex-shrink:0;gap:12px;justify-content:space-between;padding:10px 14px}.code-pane-head p{color:var(--text);font:12px/1.3 var(--mono);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.code-pane-head a{color:var(--accent);flex-shrink:0;font:11px/1 var(--mono);text-decoration:none}.code-scroll{flex:1 1;min-height:0;overflow:auto}.code-scroll pre{font:12px/1.55 var(--mono);margin:0;padding:12px 0}.code-line{display:grid;grid-template-columns:48px minmax(0,1fr)}.code-line:hover{background:rgba(181,123,255,.06)}.code-gutter{color:var(--faint);padding:0 10px 0 0;text-align:right;-webkit-user-select:none;user-select:none}.code-text{color:#d8d3e3;padding-right:16px;white-space:pre}.code-error,.code-muted{font:13px/1.45 var(--sans);margin:16px}.code-muted{color:var(--dim)}.code-error{color:#ff8f8f}@media (max-width:900px){.project-page.has-workspace{height:auto;max-height:none;overflow:visible}.project-shell{height:auto;min-height:100svh;padding:14px 0 20px;width:min(100% - 24px,1680px)}.project-toolbar{align-items:stretch;flex-direction:column;gap:10px}.project-toolbar-main{align-items:flex-start;flex-direction:column;gap:8px}.project-lead{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;white-space:normal}.project-actions{justify-content:flex-start}.project-workspace{height:min(78vh,720px);min-height:min(78vh,720px)}.code-explorer{grid-template-columns:1fr;grid-template-rows:minmax(160px,32%) minmax(0,1fr)}.code-tree{border-bottom:1px solid var(--line);border-right:0;max-height:none}}
/*# sourceMappingURL=main.1b8518e4.css.map*/