:root{--canvas:#fff;--canvas-subtle:#f6f8fa;--canvas-inset:#f6f8fa;--fg:#1f2328;--fg-muted:#59636e;--fg-subtle:#6e7781;--border:#d1d9e0;--border-muted:#d8dee4;--accent:#0969da;--success-fg:#1a7f37;--success-emphasis:#1f883d;--success-subtle:#dafbe1;--danger-fg:#d1242f;--done-fg:#8250df;--done-subtle:#fbefff;--chip-done:#4e5397;--chip-accent:#35608c;--chip-sponsors:#276b66;--chip-success:#41694f;--chip-attention:#7d5f3c;--neutral-subtle:#afb8c133;--card-shadow:0 1px 3px #1f23280d;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--copy-size:clamp(1rem, .95rem + .25vw, 1.1875rem);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--fg);background:var(--canvas);font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}:root[data-theme=dark]{--canvas:#0d1117;--canvas-subtle:#161b22;--canvas-inset:#010409;--fg:#e6edf3;--fg-muted:#9198a1;--fg-subtle:#8b949e;--border:#30363d;--border-muted:#21262d;--accent:#4493f8;--success-fg:#3fb950;--success-emphasis:#238636;--success-subtle:#2ea04326;--danger-fg:#f85149;--done-fg:#a371f7;--done-subtle:#a371f726;--chip-done:#a6abd8;--chip-accent:#8fb4d9;--chip-sponsors:#83c2ba;--chip-success:#9dbfa8;--chip-attention:#ccb086;--neutral-subtle:#6e768140;--card-shadow:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;min-height:100svh;color:var(--fg);background:var(--canvas);margin:0;transition:background-color .2s,color .2s}button,a{font:inherit}::selection{color:var(--fg);background:var(--neutral-subtle)}.portfolio{grid-template-columns:minmax(320px,40%) minmax(0,60%);min-height:100svh;display:grid}.theme-toggle{z-index:10;width:40px;height:40px;color:var(--fg-muted);background:var(--canvas);border:1px solid var(--border);cursor:pointer;border-radius:6px;place-items:center;padding:0;transition:background-color .2s,color .2s,border-color .2s;display:grid;position:fixed;top:16px;right:16px}.theme-toggle:hover{color:var(--fg);background:var(--canvas-subtle)}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.profile-panel{color:var(--fg);background:var(--canvas-subtle);border-right:1px solid var(--border);transition:background-color .2s,border-color .2s}.profile-panel__inner{scrollbar-width:none;box-sizing:border-box;flex-direction:column;min-height:85svh;max-height:100svh;padding:56px 11%;display:flex;position:sticky;top:0;overflow-y:auto}.profile-panel__inner::-webkit-scrollbar{display:none}.profile-panel__inner>*{flex-shrink:0}.profile-panel__inner>:first-child{margin-top:auto}.profile-panel__inner>:last-child{margin-bottom:auto}.portrait-frame{aspect-ratio:1;background:var(--canvas);border:1px solid var(--border);width:15vw;min-width:220px;box-shadow:var(--card-shadow);border-radius:50%;place-items:center;margin-bottom:32px;display:grid;overflow:hidden}.portrait-frame img{object-fit:cover;border-radius:50%;width:100%;height:100%;display:block}.eyebrow,.contact-label{font-family:var(--sans);letter-spacing:.02em;text-transform:uppercase;font-size:.75rem;font-weight:600;line-height:1.35}.job-dates,.job-company{font-family:var(--mono);font-size:.95rem;font-weight:400;line-height:1.5}.identity .eyebrow{color:var(--fg-muted);margin:0}.identity h1{color:var(--fg);font-family:var(--sans);letter-spacing:-.01em;margin:7px 0 12px;font-size:2.15rem;font-weight:600;line-height:1.2}.pr-number{color:var(--fg-muted);font-weight:300}.status-row{flex-wrap:wrap;align-items:center;gap:10px 12px;display:flex}.pr-badge{color:#fff;background:var(--success-emphasis);white-space:nowrap;border-radius:2em;align-items:center;gap:6px;padding:5px 12px;font-size:.8rem;font-weight:500;line-height:1.4;display:inline-flex}.pr-badge svg{width:14px;height:14px}.current-role{color:var(--fg-muted);margin:0;font-size:.95rem}.contact,.summary{border-top:1px solid var(--border);width:100%;margin-top:24px;padding-top:24px}.summary{align-self:stretch;width:100%;max-width:100%}.profile-panel h2{color:var(--fg-muted);font-family:var(--sans);letter-spacing:0;margin:0 0 14px;font-size:.95rem;font-weight:600;line-height:1.35}.contact address{gap:12px;font-style:normal;display:grid}.contact-item{grid-template-columns:74px minmax(0,1fr);align-items:baseline;gap:14px;font-size:.92rem;display:grid}.contact-label{color:var(--fg-muted)}.contact a{overflow-wrap:anywhere;width:fit-content;max-width:100%;color:var(--accent);align-items:center;gap:.5rem;text-decoration:none;display:inline-flex}.contact a svg{flex-shrink:0}.contact a:hover{text-decoration:underline}.contact a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.summary p{width:min(85%,34rem);max-width:100%;color:var(--fg-muted);font-size:var(--copy-size);margin:0;line-height:1.7}.career-panel{background:var(--canvas);min-width:0;min-height:100svh;padding:0 8%;transition:background-color .2s;overflow:hidden}.intro,.career-section{max-width:840px;margin:0 auto}.intro{box-sizing:border-box;align-content:center;min-height:45svh;padding:80px 0 64px;display:grid}.intro .eyebrow{color:var(--fg-subtle);font-family:var(--mono);letter-spacing:0;text-transform:none;margin:0 0 16px;font-weight:400}.intro .eyebrow:before{content:"// "}.intro h2{max-width:20ch;color:var(--fg);font-family:var(--sans);letter-spacing:-.02em;margin:0;font-size:3.2rem;font-weight:600;line-height:1.1}.intro h2:before{content:"# ";color:var(--accent);font-family:var(--mono);font-weight:400}.intro-copy{max-width:58ch;color:var(--fg-muted);font-size:var(--copy-size);margin:24px 0 0;line-height:1.7}.career-section{padding:0 0 64px}.file-card{background:var(--canvas);border:1px solid var(--border);box-shadow:var(--card-shadow);border-radius:6px;transition:background-color .2s,border-color .2s;overflow:hidden}.file-header{color:var(--fg-muted);background:var(--canvas-subtle);border-bottom:1px solid var(--border);font-family:var(--mono);align-items:center;gap:8px;padding:9px 16px;font-size:.78rem;transition:background-color .2s,border-color .2s;display:flex}.file-header--interactive{cursor:pointer;-webkit-user-select:none;user-select:none}.file-header--interactive:hover{background:var(--neutral-subtle)}.file-toggle{color:var(--fg-muted);cursor:pointer;background:0 0;border:0;flex:none;place-items:center;margin:-2px 0;padding:2px;display:grid}.file-toggle:hover{color:var(--fg)}.file-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.file-toggle svg{transition:transform .2s}.file-card--collapsed .file-toggle svg{transform:rotate(-90deg)}.file-card--collapsed .file-header{border-bottom-color:#0000}.file-collapse{grid-template-rows:1fr;transition:grid-template-rows .75s,visibility .75s;display:grid}.file-card--collapsed .file-collapse{visibility:hidden;grid-template-rows:0fr}.file-collapse__inner{min-height:0;overflow:hidden}.file-header svg{flex:none;width:14px;height:14px}.file-path{overflow-wrap:anywhere;color:var(--fg);font-weight:600}.diff-stats{white-space:nowrap;gap:6px;margin-left:auto;font-weight:600;display:flex}.additions{color:var(--success-fg)}.deletions{color:var(--danger-fg)}.file-download{color:var(--fg-muted);border-radius:6px;flex:none;place-items:center;margin:-4px 1rem -4px 2px;padding:4px;transition:background-color .2s,color .2s;display:grid}.file-download:hover{color:var(--accent);background:var(--neutral-subtle)}.file-download:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.file-body{padding:28px 32px 32px}.section-heading{border-bottom:1px solid var(--border-muted);margin-bottom:36px;padding-bottom:14px}.section-heading h2{color:var(--fg);font-family:var(--sans);letter-spacing:-.01em;margin:0;font-size:1.75rem;font-weight:600;line-height:1.25}.section-subtitle{color:var(--fg-muted);margin:8px 0 0;font-size:.95rem;line-height:1.5}.experience-list{margin:0;padding:0 0 0 44px;list-style:none}.experience-list li{border-top:1px solid var(--border-muted);grid-template-columns:minmax(155px,.7fr) minmax(220px,1.3fr);align-items:start;gap:30px;padding:26px 0 30px;display:grid;position:relative}.experience-list li:before{content:"+";width:22px;height:22px;color:var(--success-fg);background:var(--success-subtle);font-family:var(--mono);text-align:center;border-radius:4px;font-size:.95rem;font-weight:600;line-height:22px;position:absolute;top:28px;left:-44px}.experience-list li:first-child{border-top:0;padding-top:4px}.experience-list li:first-child:before{top:6px}.experience-list li:last-child{padding-bottom:0}.job-meta{flex-direction:column;gap:8px;display:flex}.job-dates{color:var(--fg-muted);margin:0}.job-company{color:var(--fg);margin:5px 0 0;font-weight:500}.experience-list h3,.education-entry h3{color:var(--fg);font-family:var(--sans);letter-spacing:0;margin:0;font-size:1.08rem;font-weight:600;line-height:1.4}.job-description{color:var(--fg-muted);font-size:var(--copy-size);grid-column:2;margin:10px 0 0;line-height:1.65}.job-comment{color:var(--fg-subtle);font-family:var(--mono);grid-column:2;margin:10px 0 0;font-size:clamp(.875rem,.85rem + .15vw,1rem);font-style:italic;line-height:1.6}.job-comment:before{content:"// "}.lead-steps{gap:14px;margin:10px 0 0;display:grid}.lead-steps>div{gap:3px;display:grid}.lead-steps dt{color:var(--fg-muted);font-family:var(--mono);letter-spacing:.02em;text-transform:uppercase;font-size:.75rem;font-weight:600}.lead-steps dd{color:var(--fg-muted);font-size:var(--copy-size);margin:0;line-height:1.65}.job-actions{margin:8px 0 0}.job-action-button{border:1px solid var(--border);color:var(--fg);background:var(--canvas-subtle);border-radius:8px;align-items:center;gap:8px;padding:10px 14px;font-weight:600;text-decoration:none;transition:background-color .2s,border-color .2s,color .2s;display:inline-flex}.job-action-button:hover,.job-action-button:focus-visible{color:var(--accent);border-color:var(--accent);background:#0969da0f}.job-action-button__icon{width:16px;height:16px;display:inline-flex}.education-entry{background:var(--canvas-subtle);border:1px solid var(--border);border-left:4px solid var(--done-fg);border-radius:6px;margin-left:44px;padding:24px 28px;transition:background-color .2s,border-color .2s}.education-entry p{color:var(--done-fg);font-family:var(--mono);margin:0 0 8px;font-size:.95rem;line-height:1.5}.education-entry span{color:var(--fg-muted);margin-top:6px;font-size:.95rem;display:block}.skills-groups{flex-direction:column;gap:26px;margin:0;padding:0 0 0 44px;display:flex}.skill-group{position:relative}.skill-group:before{content:"+";width:22px;height:22px;color:var(--success-fg);background:var(--success-subtle);font-family:var(--mono);text-align:center;border-radius:4px;font-size:.95rem;font-weight:600;line-height:22px;position:absolute;top:0;left:-44px}.skill-group__key{color:var(--fg-muted);font-family:var(--mono);text-transform:lowercase;letter-spacing:.02em;margin:0 0 12px;font-size:.85rem;font-weight:600}.skill-group[data-tone=accent] .skill-group__key{color:var(--chip-accent)}.skill-group[data-tone=success] .skill-group__key{color:var(--chip-success)}.skill-group[data-tone=done] .skill-group__key{color:var(--chip-done)}.skill-group[data-tone=attention] .skill-group__key{color:var(--chip-attention)}.skill-group[data-tone=sponsors] .skill-group__key{color:var(--chip-sponsors)}.skill-group__items{margin:0}.skill-chips{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.skill-chip{font-family:var(--mono);white-space:nowrap;cursor:default;border:1px solid #0000;border-radius:999px;padding:5px 12px;font-size:.82rem;font-weight:600;line-height:1.4;transition:transform .15s,box-shadow .15s}.skill-chip:hover{box-shadow:var(--card-shadow);transform:translateY(-2px)}.skill-group[data-tone=accent] .skill-chip{color:var(--chip-accent);background:color-mix(in srgb, var(--chip-accent) 8%, transparent);border-color:color-mix(in srgb, var(--chip-accent) 22%, transparent)}.skill-group[data-tone=success] .skill-chip{color:var(--chip-success);background:color-mix(in srgb, var(--chip-success) 8%, transparent);border-color:color-mix(in srgb, var(--chip-success) 22%, transparent)}.skill-group[data-tone=done] .skill-chip{color:var(--chip-done);background:color-mix(in srgb, var(--chip-done) 8%, transparent);border-color:color-mix(in srgb, var(--chip-done) 22%, transparent)}.skill-group[data-tone=attention] .skill-chip{color:var(--chip-attention);background:color-mix(in srgb, var(--chip-attention) 8%, transparent);border-color:color-mix(in srgb, var(--chip-attention) 22%, transparent)}.skill-group[data-tone=sponsors] .skill-chip{color:var(--chip-sponsors);background:color-mix(in srgb, var(--chip-sponsors) 8%, transparent);border-color:color-mix(in srgb, var(--chip-sponsors) 22%, transparent)}@media (width<=960px){.portfolio{grid-template-columns:minmax(280px,42%) minmax(0,58%)}.profile-panel__inner{justify-content:flex-start;padding:44px 9%}.profile-panel__inner>:first-child{margin-top:0}.profile-panel__inner>:last-child{margin-bottom:0}.portrait-frame{width:min(180px,64%)}.identity h1{font-size:1.85rem}.contact-item{grid-template-columns:1fr;gap:3px}.career-panel{padding:0 6%}.intro h2{font-size:2.5rem}.file-body{padding:24px}.experience-list li{grid-template-columns:1fr;gap:10px}.experience-list li .job-meta{display:contents}.job-description,.job-comment{grid-column:1;margin:0}.job-actions{order:1;margin:10px 0 0}.job-action-button{justify-content:center;width:100%;padding:12px 16px}}@media (width<=720px){.portfolio{display:block}.profile-panel{border-right:0;border-bottom:1px solid var(--border)}.profile-panel__inner{min-height:auto;max-height:none;padding:42px 24px 48px;position:static;overflow:visible}.portrait-frame{width:min(190px,56vw);margin-bottom:32px}.identity h1{max-width:none;font-size:2.1rem}.contact-item{grid-template-columns:74px minmax(0,1fr);gap:14px}.career-panel{padding:0 20px}.intro{min-height:auto;padding:64px 0 56px}.intro h2{font-size:2.2rem}.intro-copy{margin-top:20px}.career-section{padding-bottom:48px}.section-heading{margin-bottom:30px}.section-heading h2{font-size:1.5rem}.file-body{padding:20px}.experience-list{padding-left:36px}.experience-list li{padding:24px 0 28px}.experience-list li:before{width:20px;height:20px;line-height:20px;top:26px;left:-36px}.education-entry{margin-left:36px;padding:20px 22px}.skills-groups{gap:22px;padding-left:36px}.skill-group:before{width:20px;height:20px;line-height:20px;left:-36px}}@media (width<=390px){.identity h1{font-size:1.85rem}.contact-item{grid-template-columns:1fr;gap:3px}.intro h2{font-size:1.9rem}.experience-list{padding-left:30px}.experience-list li:before{left:-30px}.education-entry{margin-left:0;padding-left:20px}.skills-groups{padding-left:30px}.skill-group:before{left:-30px}}@media (prefers-reduced-motion:no-preference){.portrait-frame,.identity,.contact,.summary,.intro>*,.career-section{animation:.45s both reveal}.identity{animation-delay:60ms}.contact,.intro>:last-child{animation-delay:.11s}.summary{animation-delay:.16s}.skill-chip{animation:.32s both chip-pop}}@keyframes chip-pop{0%{opacity:0;transform:translateY(6px)scale(.94)}to{opacity:1;transform:translateY(0)scale(1)}}@media (prefers-reduced-motion:reduce){.file-collapse,.file-toggle svg{transition:none}}@keyframes reveal{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
