@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:100 700;font-stretch:100%;font-display:swap;src:url(../media/44ed10da57ebfb0e-s.2e4y-bhazgt_v.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:100 700;font-stretch:100%;font-display:swap;src:url(../media/73263b2957b73100-s.3o0_l_yqebdng.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:100 700;font-stretch:100%;font-display:swap;src:url(../media/ab664c0e419cc841-s.2mglm451ism6l.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:100 700;font-stretch:100%;font-display:swap;src:url(../media/6fca7e74603dd412-s.3bjsqkuy1d2v8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:100 700;font-stretch:100%;font-display:swap;src:url(../media/c1b11b726b36a5e5-s.0xluf1kzv7x5w.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:100 700;font-stretch:100%;font-display:swap;src:url(../media/48eea41d8317494f-s.p.45487z7p3r8wm.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans Fallback;src:local(Arial);ascent-override:101.32%;descent-override:27.18%;line-gap-override:0.0%;size-adjust:101.17%}.r-v47W_className{font-family:IBM Plex Sans,IBM Plex Sans Fallback;font-style:normal}.r-v47W_variable{--font-plex-sans:"IBM Plex Sans", "IBM Plex Sans Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/faab88e4be272d29-s.3zhtymus0wdqb.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/a45aa1001bf9176f-s.3nkuoiize4urq.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/41ba59f553543ecf-s.1da667lu-u79a.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/67bba87670b402d1-s.1i05ju5aeyhye.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d6c1ff7e86974212-s.p.1dgcou5jor5q_.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/49b1d53681a91a99-s.31-2bzhq1gx_9.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/123d516c9baeb953-s.3xauquyg2sixn.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a74d2542cc4c775f-s.2taws-qdxmzlf.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/7ac0b1cd3e695dd0-s.0htwiiqufp3l9.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/916cd8a3bde3edf8-s.p.28xcb7557rbh2.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/e60f3e45d49b65c3-s.2ontrj8z1-o25.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/1f5edaafc8393c36-s.33iiebxkijmxa.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/f1c080d8717d5d0c-s.2nzetymcmw3t7.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/afc8e0e4a8c58d89-s.0_f09-l1omku8.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/2880e9b87afbd5d9-s.p.0fcfx2a-jndc5.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.iYqAfW_className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.iYqAfW_variable{--font-plex-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
:root,[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0a0c0b;--bg-glow:#4ade8012;--grid-line:#ffffff07;--surface:#101312;--surface-2:#161a18;--border:#1f2522;--border-strong:#2d3531;--text:#cdd5d0;--text-bright:#f2f6f3;--text-dim:#8b958f;--text-faint:#5c6660;--accent:#4ade80;--accent-hover:#6ee79b;--accent-soft:#4ade801f;--on-accent:#052e14;--blue:#7cb7ff;--amber:#f5c26b;--red:#ff7b72;--shadow:0 30px 80px -40px #4ade8040}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f6f7f4;--bg-glow:#15803d12;--grid-line:#00000009;--surface:#fff;--surface-2:#eff2ed;--border:#e1e5df;--border-strong:#cdd3ca;--text:#2a302c;--text-bright:#0b0f0c;--text-dim:#5d6761;--text-faint:#929b95;--accent:#15803d;--accent-hover:#166534;--accent-soft:#15803d1a;--on-accent:#fff;--blue:#1d5fbf;--amber:#9a5b00;--red:#c4302b;--shadow:0 30px 70px -45px #0b0f0c59}:root{--font-sans:var(--font-plex-sans), system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:var(--font-plex-mono), ui-monospace, "SF Mono", Menlo, Consolas, monospace;--radius:10px;--max:72rem;--gutter:1rem;--ease:cubic-bezier(.2, .7, .2, 1)}@media (min-width:48rem){:root{--gutter:2rem}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:5rem}body{min-height:100vh;font-family:var(--font-sans);color:var(--text);background-color:var(--bg);background-image:radial-gradient(60rem 32rem at 75% -12rem, var(--bg-glow), transparent 70%), linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);-webkit-font-smoothing:antialiased;background-size:auto,48px 48px,48px 48px;flex-direction:column;margin:0;font-size:1rem;line-height:1.65;display:flex}main{flex:1;width:100%}h1,h2,h3,p,ul,ol,dl,dd,figure,pre{margin:0}ul,ol{padding:0;list-style:none}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}::selection{background:var(--accent);color:var(--on-accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.container{width:100%;max-width:calc(var(--max) + var(--gutter) * 2);padding-inline:var(--gutter);margin-inline:auto}.skip-link{z-index:100;background:var(--accent);color:var(--on-accent);font-family:var(--font-mono);border-radius:8px;padding:.6rem 1rem;font-size:.875rem;position:absolute;top:-4rem;left:1rem}.skip-link:focus{top:1rem}.arrow{transition:transform .2s var(--ease);display:inline-block}.text-link{color:var(--text-bright);text-decoration:underline;-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong);text-underline-offset:.2em;transition:color .15s,text-decoration-color .15s}.text-link:hover{color:var(--accent);text-decoration-color:currentColor}.topbar{z-index:50;border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg) 80%, transparent);-webkit-backdrop-filter:blur(12px);position:sticky;top:0}.topbar__inner{align-items:center;gap:.75rem;height:3.75rem;display:flex}.brand{font-family:var(--font-mono);color:var(--text-bright);align-items:center;gap:.55rem;margin-right:auto;font-size:.9375rem;font-weight:600;display:inline-flex}.brand__dot{background:var(--accent);width:.5rem;height:.5rem;box-shadow:0 0 0 3px var(--accent-soft);border-radius:50%}.brand__at{color:var(--accent)}.brand__dim{color:var(--text-faint);font-weight:400}.nav__list{gap:.25rem;display:flex}.nav__link{font-family:var(--font-mono);color:var(--text-dim);border-radius:6px;padding:.4rem .7rem;font-size:.875rem;transition:color .15s,background-color .15s;display:block;position:relative}.nav__link:hover{color:var(--text-bright);background:var(--surface-2)}.nav__link[aria-current=page]{color:var(--accent)}.nav--desktop .nav__link[aria-current=page]:after{content:"";background:var(--accent);border-radius:2px;height:2px;position:absolute;bottom:-.7rem;left:.7rem;right:.7rem}.icon-btn{border:1px solid var(--border-strong);background:var(--surface);width:2.375rem;height:2.375rem;color:var(--text-dim);cursor:pointer;border-radius:8px;place-items:center;transition:color .15s,border-color .15s;display:inline-grid}.icon-btn:hover{color:var(--text-bright);border-color:var(--accent)}.theme-toggle__moon,[data-theme=light] .theme-toggle__sun{display:none}[data-theme=light] .theme-toggle__moon{display:block}.nav-mobile{display:none}.nav-mobile>summary{list-style:none}.nav-mobile>summary::-webkit-details-marker{display:none}.nav--mobile{border-bottom:1px solid var(--border);background:var(--bg);padding:.75rem var(--gutter) 1rem;position:absolute;top:100%;left:0;right:0}.nav--mobile .nav__list{flex-direction:column}.nav--mobile .nav__link{padding:.7rem .75rem;font-size:1rem}.nav--mobile .nav__link[aria-current=page]{background:var(--accent-soft)}@media (max-width:47.99rem){.nav--desktop{display:none}.nav-mobile{display:block}}.footer{border-top:1px solid var(--border);font-family:var(--font-mono);color:var(--text-dim);margin-top:6rem;font-size:.8125rem}.footer__inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem 2rem;padding-block:2rem 3rem;display:flex}.footer__dim{color:var(--text-faint)}.footer__links{flex-wrap:wrap;gap:.5rem 1.25rem;display:flex}.footer__links a:hover{color:var(--accent)}.prompt{font-family:var(--font-mono);color:var(--text-dim);overflow-wrap:anywhere;font-size:.875rem}.prompt__user{color:var(--accent)}.prompt__path{color:var(--blue)}.prompt__cmd{color:var(--text-bright)}.cursor{vertical-align:-.04em;background:var(--accent);width:.5em;height:.82em;margin-left:.12em;display:inline-block}@media (prefers-reduced-motion:no-preference){.cursor{animation:1.1s step-end infinite blink}}@keyframes blink{50%{opacity:0}}.tok-key{color:var(--blue)}.tok-str{color:var(--accent)}.tok-bool{color:var(--amber)}.tok-punc{color:var(--text-dim)}.tok-err{color:var(--red)}.page-intro{padding-block:4.5rem 2.5rem}.page-title{font-family:var(--font-mono);letter-spacing:-.04em;color:var(--text-bright);text-wrap:balance;margin-top:.75rem;font-size:clamp(2.5rem,7vw,4.25rem);font-weight:600;line-height:1.05}.lede{max-width:40rem;color:var(--text);margin-top:1.25rem;font-size:1.125rem}.page-meta{font-family:var(--font-mono);color:var(--text-dim);margin-top:1rem;font-size:.8125rem}.page-intro__action{margin-top:1.75rem}.section{padding-top:5rem}.section-head{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem 2rem;margin-bottom:2rem;padding-bottom:1.25rem;display:flex}.eyebrow{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);font-size:.75rem}.eyebrow__index{color:var(--accent)}.section-title{font-family:var(--font-mono);letter-spacing:-.03em;color:var(--text-bright);margin-top:.5rem;font-size:clamp(1.75rem,4vw,2.5rem);font-weight:500;line-height:1.15}.more-link{font-family:var(--font-mono);color:var(--text-dim);font-size:.875rem;transition:color .15s}.more-link:hover{color:var(--accent)}.more-link:hover .arrow,.btn:hover .arrow,.email-link:hover .arrow,.card:hover .arrow{transform:translate(3px)}.btn{border:1px solid var(--border-strong);background:var(--surface);font-family:var(--font-mono);color:var(--text-bright);border-radius:8px;align-items:center;gap:.5rem;padding:.65rem 1.1rem;font-size:.875rem;font-weight:500;transition:border-color .15s,background-color .15s,color .15s;display:inline-flex}.btn:hover{border-color:var(--accent)}.btn--primary{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.btn--primary:hover{border-color:var(--accent-hover);background:var(--accent-hover)}.tags{flex-wrap:wrap;gap:.4rem;display:flex}.tags li{border:1px solid var(--border);background:var(--surface-2);font-family:var(--font-mono);color:var(--text-dim);border-radius:6px;padding:.15rem .55rem;font-size:.75rem;line-height:1.6}.tags .tags__more{background:0 0;border-style:dashed}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);transition:border-color .2s, transform .2s var(--ease), box-shadow .2s;display:block}a.card:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--border));box-shadow:var(--shadow)}@media (prefers-reduced-motion:no-preference){a.card:hover{transform:translateY(-2px)}}.card__meta{font-family:var(--font-mono);color:var(--text-dim);font-size:.75rem}.card__title{font-family:var(--font-mono);letter-spacing:-.02em;color:var(--text-bright);margin-top:.6rem;font-size:1.375rem;font-weight:600;line-height:1.25}.card__title--small{font-size:1.125rem}.card__text{color:var(--text);margin-top:.6rem;font-size:.9375rem}.bullets li{padding-left:1.4rem;position:relative}.bullets li+li{margin-top:.5rem}.bullets li:before{content:"›";font-family:var(--font-mono);color:var(--accent);font-weight:600;position:absolute;top:-.05em;left:.25rem}.bullets--large{font-size:1.0625rem}.bullets--large li+li{margin-top:.85rem}.badge__dot{background:var(--accent);border-radius:50%;flex:none;width:.45rem;height:.45rem;position:relative}@media (prefers-reduced-motion:no-preference){.badge__dot:after{content:"";background:var(--accent);animation:ping 2s var(--ease) infinite;border-radius:50%;position:absolute;inset:0}}@keyframes ping{80%,to{opacity:0;transform:scale(2.6)}}.social{gap:.5rem;display:flex}.kv{border-top:1px solid var(--border);display:grid}.kv>div{border-bottom:1px solid var(--border);grid-template-columns:7.5rem minmax(0,1fr);gap:1rem;padding-block:.7rem;display:grid}.kv dt{font-family:var(--font-mono);color:var(--blue);font-size:.8125rem}.kv dt:before{content:"→ ";color:var(--text-faint)}.kv dd{font-family:var(--font-mono);color:var(--text-bright);overflow-wrap:anywhere;font-size:.875rem}.kv__status{align-items:center;gap:.55rem;display:flex}.kv__links{flex-wrap:wrap;gap:.25rem 1rem;display:flex}.kv--card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:.5rem 1.25rem}.kv--card>div{grid-template-columns:1fr;gap:.4rem}.kv--card>div:last-child{border-bottom:0}.logo{border:1px solid var(--border-strong);object-fit:contain;background:#fff;border-radius:8px;flex:none;padding:3px}.logo--empty{background:var(--surface-2)}.hero{align-items:center;gap:3rem;padding-block:4.5rem 2rem;display:grid}@media (min-width:62rem){.hero{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:4rem;padding-block:6.5rem 3rem}}.hero__name{font-family:var(--font-mono);letter-spacing:-.05em;color:var(--text-bright);margin-top:.5rem;font-size:clamp(3rem,9vw,5.25rem);font-weight:600;line-height:1}.hero__role{font-family:var(--font-mono);color:var(--text-dim);margin-top:1.1rem;font-size:.875rem}.hero__summary{max-width:34rem;margin-top:1.5rem;font-size:1.125rem;line-height:1.7}.hero__actions{flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:2.25rem;display:flex}.window{border:1px solid var(--border-strong);background:var(--surface);box-shadow:var(--shadow);border-radius:12px;overflow:hidden}.window__bar{border-bottom:1px solid var(--border);background:var(--surface-2);font-family:var(--font-mono);grid-template-columns:1fr auto 1fr;align-items:center;padding:.7rem 1rem;font-size:.75rem;display:grid}.window__dots{gap:.4rem;display:flex}.window__dots span{background:var(--border-strong);border-radius:50%;width:.65rem;height:.65rem}.window__dots span:first-child{background:var(--accent)}.window__title{color:var(--text-bright)}.window__meta{color:var(--text-faint);justify-self:end}.code{counter-reset:line;font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;padding:1.25rem 1.25rem 1.4rem 0;font-size:.84375rem;line-height:1.8}.code__line{margin-left:3.25rem;display:block;position:relative}.code__line:before{counter-increment:line;content:counter(line);text-align:right;width:2.25rem;color:var(--text-faint);position:absolute;left:-3.25rem}.card-grid{gap:1.25rem;display:grid}@media (min-width:48rem){.card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.project-card{flex-direction:column;padding:1.5rem;display:flex}.project-card__intro{flex-direction:column;flex:1;display:flex}.project-card .tags{margin-top:1.25rem}.project-card--wide{grid-column:1/-1;gap:1.75rem}.project-card__highlights{font-size:.9375rem}@media (min-width:52rem){.project-card--wide{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:3rem;padding:2rem;display:grid}.project-card__highlights{border-left:1px solid var(--border);padding-left:2.5rem}}.card__more{font-family:var(--font-mono);color:var(--accent);margin-top:auto;padding-top:1.5rem;font-size:.8125rem}.job-list__row{border-bottom:1px solid var(--border);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.25rem 1rem;padding-block:1rem;display:grid}.job-list__row:first-child{padding-top:0}.job-list__title{color:var(--text-bright);font-weight:500}.job-list__company{color:var(--text-dim);font-size:.9375rem}.job-list__dates{font-family:var(--font-mono);color:var(--text-dim);font-variant-numeric:tabular-nums;grid-column:2;font-size:.8125rem}@media (min-width:40rem){.job-list__row{grid-template-columns:auto minmax(0,1fr) auto}.job-list__dates{text-align:right;grid-column:auto}}.cta{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1.5rem 2rem;display:flex}.cta__lead{color:var(--text-dim)}.email-link{font-family:var(--font-mono);letter-spacing:-.02em;color:var(--text-bright);overflow-wrap:anywhere;margin-top:.5rem;font-size:clamp(1.25rem,4.5vw,2rem);font-weight:500;transition:color .15s;display:inline-block}.email-link:hover{color:var(--accent)}.email-link--large{font-size:clamp(1.4rem,5vw,2.5rem)}.project-rows{border-top:1px solid var(--border)}.project-row{border-bottom:1px solid var(--border);grid-template-columns:2.5rem minmax(0,1fr);gap:.5rem 1rem;padding:1.75rem .75rem;transition:background-color .15s;display:grid}.project-row:hover{background:var(--surface)}.project-row__index{font-family:var(--font-mono);color:var(--accent);padding-top:.3rem;font-size:.8125rem}.project-row__main{gap:.6rem;display:grid}.project-row__name{font-family:var(--font-mono);letter-spacing:-.02em;color:var(--text-bright);font-size:1.375rem;font-weight:600}.project-row__summary{max-width:44rem;color:var(--text)}.project-row__meta{font-family:var(--font-mono);color:var(--text-dim);flex-wrap:wrap;grid-column:2;gap:.25rem 1rem;font-size:.8125rem;display:flex}.project-row__arrow{display:none}.project-row:hover .project-row__arrow{color:var(--accent);transform:translate(3px)}@media (min-width:52rem){.project-row{grid-template-columns:3rem minmax(0,1fr) 11rem 1.5rem;gap:2rem}.project-row__meta{text-align:right;flex-direction:column;grid-column:auto;align-items:flex-end;padding-top:.35rem}.project-row__arrow{font-family:var(--font-mono);color:var(--text-dim);padding-top:.2rem;display:block}}.crumbs{font-family:var(--font-mono);color:var(--text-faint);gap:.5rem;padding-top:2.5rem;font-size:.8125rem;display:flex}.crumbs a{color:var(--text-dim)}.crumbs a:hover{color:var(--accent)}.crumbs [aria-current]{color:var(--text-bright)}.crumbs+.page-intro{padding-top:2rem}.detail{gap:2.5rem;padding-top:1rem;display:grid}@media (min-width:60rem){.detail{grid-template-columns:minmax(0,1fr) 19rem;align-items:start;gap:4rem}.detail__aside{position:sticky;top:5.5rem}}.detail__image{aspect-ratio:16/10;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin-bottom:2.5rem;position:relative;overflow:hidden}.detail__image img{object-fit:cover}.detail__section+.detail__section{border-top:1px solid var(--border);margin-top:3rem;padding-top:2.5rem}.detail__heading{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);margin-bottom:1.25rem;font-size:.75rem;font-weight:500}.pager{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:5rem;display:grid}.pager__link{gap:.35rem;padding:1.25rem 1.5rem;display:grid}.pager__link--next{text-align:right}.pager__label{font-family:var(--font-mono);color:var(--text-dim);font-size:.75rem}.pager__name{font-family:var(--font-mono);color:var(--text-bright);font-weight:600}.timeline{position:relative}.timeline__item{border-top:1px solid var(--border);gap:.75rem;padding-block:2rem;display:grid}.timeline__item:first-child{border-top:0;padding-top:.5rem}@media (min-width:48rem){.timeline__item{grid-template-columns:11rem minmax(0,1fr);gap:2.5rem}}.timeline__dates{font-family:var(--font-mono);color:var(--text-dim);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-self:start;align-items:center;gap:.6rem;padding-top:.6rem;font-size:.8125rem;display:flex}.pill{border:1px solid var(--accent);background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:.05rem .5rem;font-size:.6875rem}.timeline__head{align-items:center;gap:1rem;display:flex}.timeline__title{font-family:var(--font-mono);letter-spacing:-.02em;color:var(--text-bright);font-size:1.1875rem;font-weight:600;line-height:1.3}.timeline__company{color:var(--text-dim)}.timeline__body .bullets{max-width:44rem;margin-top:1.25rem}@media (min-width:40rem){.timeline__body .bullets{margin-left:calc(44px + 1rem)}}.edu-grid{gap:1.25rem;display:grid}@media (min-width:48rem){.edu-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.edu{padding:1.5rem}.edu__school{font-family:var(--font-mono);color:var(--accent);margin-top:.25rem;font-size:.875rem}.about-top{gap:3rem;padding-bottom:1rem;display:grid}.about-top .kv{max-width:40rem}@media (min-width:60rem){.about-top--photo{grid-template-columns:minmax(0,1fr) 22rem;align-items:end}}.photo{aspect-ratio:4/5;border:1px solid var(--border-strong);background:var(--surface);box-shadow:var(--shadow);border-radius:12px;position:relative;overflow:hidden}.photo img{object-fit:cover}.prose p{font-size:1.0625rem;line-height:1.75}.prose p+p{margin-top:1.25rem}@media (min-width:60rem){.prose--columns{columns:2;column-gap:3.5rem}.prose--columns p{break-inside:avoid}}.skill-grid{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:1rem;display:grid}.skill{padding:1.25rem}.skill__area{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:.9rem;font-size:.75rem;font-weight:500}.contact{gap:3rem;display:grid}@media (min-width:60rem){.contact{grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);align-items:start;gap:4rem}}.contact__facts{margin-top:2.5rem}.link-cards{gap:.75rem;display:grid}.link-card{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:1rem;padding:1rem 1.25rem;display:grid}.link-card__icon{width:1.25rem;height:1.25rem;color:var(--text-bright)}.link-card__label{font-family:var(--font-mono);color:var(--text-bright);font-weight:600;display:block}.link-card__value{font-family:var(--font-mono);color:var(--text-dim);font-size:.8125rem;display:block}.link-card__arrow{font-family:var(--font-mono);color:var(--text-dim);transition:color .15s, transform .2s var(--ease)}.link-card:hover .link-card__arrow{color:var(--accent);transform:translate(2px,-2px)}.not-found{justify-items:start;gap:1rem;padding-block:7rem 2rem;display:grid}.not-found__code{font-family:var(--font-mono);letter-spacing:-.06em;color:var(--text-bright);font-size:clamp(5rem,18vw,10rem);font-weight:600;line-height:1}.not-found__out{font-family:var(--font-mono);color:var(--text-dim);margin-bottom:1rem;font-size:.9375rem}
