@charset "UTF-8";:root{--ink: #0F1E26;--ink-2: #14293380;--ink-soft: #17303B;--paper: #F4F0E6;--paper-line: #D9D2BE;--ink-text: #E9EEF0;--ink-muted: #90A4AC;--paper-text: #1B2A2F;--paper-muted:#5B6B67;--signal: #3FB6A8;--signal-dim: #2C8A80;--amber: #E2A33D;--rule: #24424A;--font-display: "Space Grotesk", sans-serif;--font-body: "IBM Plex Sans", sans-serif;--font-mono: "IBM Plex Mono", monospace;--rail: 84px}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--ink);color:var(--ink-text);font-family:var(--font-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}img,svg{display:block;max-width:100%}::selection{background:var(--signal);color:var(--ink)}:focus-visible{outline:2px solid var(--signal);outline-offset:3px}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.page{position:relative;padding-left:var(--rail)}.rail{position:fixed;top:0;left:0;width:var(--rail);height:100%;display:flex;justify-content:center;z-index:5;pointer-events:none}.rail-line{position:relative;width:1px;height:100%;background:var(--rule)}.rail-progress{position:absolute;top:0;left:0;width:100%;height:var(--progress, 0%);background:var(--signal);transition:height .08s linear}.rail-mark{position:fixed;left:calc(var(--rail) / 2);transform:translate(-50%,-50%);width:9px;height:9px;border-radius:50%;background:var(--ink);border:1px solid var(--rule);z-index:6;transition:background .3s,border-color .3s}.rail-mark.active{background:var(--signal);border-color:var(--signal)}section{padding:5.5rem 6vw 5.5rem 6vw;max-width:1180px}@media(max-width:760px){:root{--rail:36px}section{padding:3.5rem 5vw 3.5rem 4vw}}.eyebrow{font-family:var(--font-mono);font-size:.78rem;color:var(--signal);letter-spacing:.02em;margin-bottom:.9rem}h1,h2,h3{font-family:var(--font-display);font-weight:600;line-height:1.08}header.nav{position:sticky;top:0;z-index:4;display:flex;align-items:center;justify-content:space-between;padding:1.4rem 6vw;background:#0f1e26db;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--rule)}.nav-name{font-family:var(--font-display);font-weight:600;font-size:1.05rem}.nav-links{display:flex;gap:2rem;font-size:.92rem;color:var(--ink-muted)}.nav-links a{transition:color .2s}.nav-links a:hover{color:var(--ink-text)}.nav-cta{border:1px solid var(--rule);padding:.5rem 1.1rem;font-size:.88rem;border-radius:2px;transition:border-color .2s,color .2s}.nav-cta:hover{border-color:var(--signal);color:var(--signal)}@media(max-width:760px){.nav-links{display:none}}.hero{padding-top:4.5rem;padding-bottom:4rem}.hero h1{font-size:clamp(2.6rem,6vw,4.6rem);color:var(--ink-text)}.hero .role{margin-top:1.1rem;font-size:clamp(1.05rem,2vw,1.3rem);color:var(--ink-muted);max-width:34ch}.hero .summary{margin-top:1.6rem;max-width:58ch;color:var(--ink-muted);font-size:1rem}.hero-stats{display:flex;gap:3rem;margin-top:2.6rem;flex-wrap:wrap}.hero-stat b{display:block;font-family:var(--font-display);font-size:2rem;color:var(--ink-text)}.hero-stat span{font-size:.85rem;color:var(--ink-muted)}.trace-wrap{margin-top:3.4rem;overflow-x:auto}.trace-svg{min-width:640px}.trace-path{fill:none;stroke:var(--signal-dim);stroke-width:1.5;stroke-dasharray:1400;stroke-dashoffset:1400;animation:draw 2.1s ease forwards .3s}@keyframes draw{to{stroke-dashoffset:0}}.trace-node circle{fill:var(--ink);stroke:var(--signal);stroke-width:1.6}.trace-node text{font-family:var(--font-mono);font-size:12px;fill:var(--ink-muted)}.trace-node.primary text{fill:var(--ink-text)}.hero-actions{margin-top:2.8rem;display:flex;gap:1rem;flex-wrap:wrap}.btn{font-family:var(--font-body);font-size:.94rem;padding:.8rem 1.5rem;border-radius:2px;display:inline-block;transition:transform .15s,background .2s,color .2s,border-color .2s}.btn-solid{background:var(--signal);color:var(--ink);font-weight:500}.btn-solid:hover{background:#57c9bc}.btn-outline{border:1px solid var(--rule);color:var(--ink-text)}.btn-outline:hover{border-color:var(--ink-text)}.about{display:grid;grid-template-columns:1.4fr 1fr;gap:3.5rem;border-top:1px solid var(--rule)}.about h2{font-size:1.9rem;margin-bottom:1.3rem}.about p{color:var(--ink-muted);max-width:56ch}.about p+p{margin-top:1rem}.about-panel{background:var(--paper);color:var(--paper-text);padding:1.8rem;border-radius:3px}.about-panel h3{font-size:1rem;margin-bottom:1rem;color:var(--paper-text)}.about-row{display:flex;justify-content:space-between;padding:.6rem 0;border-bottom:1px solid var(--paper-line);font-size:.92rem}.about-row:last-child{border-bottom:none}.about-row span:first-child{color:var(--paper-muted)}.about-row span:last-child{font-family:var(--font-mono);font-size:.85rem;text-align:right}@media(max-width:820px){.about{grid-template-columns:1fr}}.experience{border-top:1px solid var(--rule)}.experience h2{font-size:1.9rem;margin-bottom:2.8rem}.timeline{position:relative}.timeline:before{content:"";position:absolute;left:96px;top:6px;bottom:6px;width:1px;background:var(--rule)}@media(max-width:640px){.timeline:before{left:0}}.role-item{display:grid;grid-template-columns:96px 1fr;gap:2.2rem;padding-bottom:3rem;position:relative}.role-item:last-child{padding-bottom:0}.role-item:before{content:"";position:absolute;left:92px;top:6px;width:9px;height:9px;border-radius:50%;background:var(--ink);border:1.6px solid var(--signal)}@media(max-width:640px){.role-item{grid-template-columns:1fr;gap:.6rem;padding-left:1.4rem}.role-item:before{left:-4px}}.role-period{font-family:var(--font-mono);font-size:.82rem;color:var(--ink-muted);padding-top:.2rem}.role-title{font-size:1.15rem;font-weight:600}.role-company{color:var(--signal);font-size:.95rem;margin-top:.15rem}.role-desc{color:var(--ink-muted);margin-top:.8rem;max-width:64ch;font-size:.96rem}.role-tags{margin-top:1rem;display:flex;flex-wrap:wrap;gap:.5rem}.role-tags span{font-family:var(--font-mono);font-size:.76rem;padding:.3rem .6rem;border:1px solid var(--rule);color:var(--ink-muted);border-radius:2px}.skills{border-top:1px solid var(--rule)}.skills h2{font-size:1.9rem;margin-bottom:.6rem}.skills>p.lede{color:var(--ink-muted);max-width:56ch;margin-bottom:2.8rem}.skill-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:0;border-top:1px solid var(--rule);border-left:1px solid var(--rule)}.skill-cluster{padding:1.8rem 1.7rem;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule)}.skill-cluster h3{font-size:.98rem;color:var(--ink-text);margin-bottom:.3rem}.skill-cluster .role-note{font-size:.8rem;color:var(--signal);margin-bottom:1rem;font-family:var(--font-mono)}.skill-cluster ul{list-style:none}.skill-cluster li{color:var(--ink-muted);font-size:.9rem;padding:.3rem 0;border-bottom:1px dashed var(--rule)}.skill-cluster li:last-child{border-bottom:none}.highlights{border-top:1px solid var(--rule)}.highlights h2{font-size:1.9rem;margin-bottom:2.8rem}.feature-grid{display:grid;grid-template-columns:1.5fr 1fr;grid-template-rows:auto auto;gap:1.4rem}.feature{background:var(--paper);color:var(--paper-text);padding:2rem;border-radius:3px}.feature-lg{grid-row:span 2}.feature h3{font-size:1.2rem;margin-bottom:.8rem}.feature p{color:var(--paper-muted);font-size:.94rem;max-width:46ch}.feature .stack{margin-top:1.2rem;display:flex;flex-wrap:wrap;gap:.5rem}.feature .stack span{font-family:var(--font-mono);font-size:.75rem;padding:.25rem .55rem;border:1px solid var(--paper-line);color:var(--paper-muted);border-radius:2px}.feature-result{margin-top:1.3rem;font-size:.86rem;color:var(--signal-dim);font-weight:500}@media(max-width:820px){.feature-grid{grid-template-columns:1fr}.feature-lg{grid-row:auto}}.credentials{border-top:1px solid var(--rule)}.credentials h2{font-size:1.9rem;margin-bottom:2.2rem}.cred-grid{display:grid;grid-template-columns:1fr 1fr;gap:3rem}.cred-list{list-style:none}.cred-list li{padding:.9rem 0;border-bottom:1px solid var(--rule);display:flex;justify-content:space-between;gap:1rem;font-size:.94rem}.cred-list li span:first-child{color:var(--ink-text)}.cred-list li span:last-child{font-family:var(--font-mono);font-size:.8rem;color:var(--ink-muted);text-align:right}@media(max-width:700px){.cred-grid{grid-template-columns:1fr;gap:2rem}}.contact{border-top:1px solid var(--rule);padding-bottom:3.5rem}.contact h2{font-size:clamp(2rem,4.4vw,3rem);max-width:16ch}.contact p.lede{color:var(--ink-muted);margin-top:1rem;max-width:50ch}.contact-grid{margin-top:2.6rem;display:flex;flex-wrap:wrap;gap:2.6rem}.contact-item{font-size:.94rem}.contact-item span{display:block;font-family:var(--font-mono);font-size:.76rem;color:var(--ink-muted);margin-bottom:.35rem}.contact-item a{color:var(--ink-text);border-bottom:1px solid var(--rule);padding-bottom:2px;transition:border-color .2s,color .2s}.contact-item a:hover{color:var(--signal);border-color:var(--signal)}footer{padding:2rem 6vw 2rem 6vw;border-top:1px solid var(--rule);display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;font-size:.82rem;color:var(--ink-muted)}html,body{margin:0;padding:0;width:100%;min-height:100vh;box-sizing:border-box;overflow-x:hidden}app-root{display:block;width:100%}
