@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:300;font-display:swap;src:url(/_next/static/media/2654dbf24aea7c5c-s.woff2) format("woff2");unicode-range:u+0460-052f,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:300;font-display:swap;src:url(/_next/static/media/28d9a5bcdfe1d85c-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:300;font-display:swap;src:url(/_next/static/media/f9ab74ff5df93b56-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:300;font-display:swap;src:url(/_next/static/media/f884487c2e174fcf-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:300;font-display:swap;src:url(/_next/static/media/f36144f235cd456e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,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:400;font-display:swap;src:url(/_next/static/media/58f386aa6b1a2a92-s.woff2) format("woff2");unicode-range:u+0460-052f,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(/_next/static/media/011e180705008d6f-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/7ba5fb2a8c88521c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/92eeb95d069020cc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,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(/_next/static/media/d3ebbfd689654d3a-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,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(/_next/static/media/ef4d5661765d0e49-s.woff2) format("woff2");unicode-range:u+0460-052f,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(/_next/static/media/d29838c109ef09b4-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e40af3453d7c920a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/99dcf268bda04fe5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,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(/_next/static/media/98e207f02528a563-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,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(/_next/static/media/73cb51aac9c97f90-s.woff2) format("woff2");unicode-range:u+0460-052f,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(/_next/static/media/d26bbd13d6b70f89-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/20535187d867b7b9-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/5356a6a4f2c8c8d8-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,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(/_next/static/media/db96af6b531dc71f-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,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.00%;size-adjust:134.59%}.__className_131c8e{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.__variable_131c8e{--mono:"IBM Plex Mono","IBM Plex Mono Fallback"}:root{--bg:#ffffff;--bg-2:#fafafa;--fg:#0a0a0a;--fg-dim:#5c5c56;--fg-faint:#9b9b93;--accent:#1a7f37;--accent-glow:rgba(26,127,55,0.12);--rule:rgba(10,10,10,0.1);--gap:28px;--col:560px;--font-mono:var(--mono),ui-monospace,"JetBrains Mono",Menlo,Consolas,monospace}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:var(--font-mono);font-weight:400;font-feature-settings:"ss01","ss02","calt";-webkit-font-smoothing:antialiased}body{min-height:100vh;overflow-x:hidden}body:before{inset:0;z-index:1;background:repeating-linear-gradient(0deg,rgba(0,0,0,.012) 0 1px,transparent 1px 3px);opacity:.6}body:after,body:before{content:"";position:fixed;pointer-events:none}body:after{inset:-20% -10% auto -10%;height:60vh;z-index:0;background:radial-gradient(ellipse at 50% 0,var(--accent-glow),transparent 65%);opacity:.35}@keyframes blink{50%{opacity:0}}main{position:relative;z-index:2;min-height:100vh;display:grid;place-items:center;padding:80px 24px}.col{width:100%;max-width:var(--col);text-align:center;gap:var(--gap)}.col,main.home{display:flex;flex-direction:column}main.home{align-items:center;padding-bottom:40px}main.home .col.grow{flex:1 1;justify-content:center}main.home .col.bottom{margin-top:var(--gap)}.prompt{color:var(--fg-faint);font-size:12px;letter-spacing:.02em;display:inline-flex;align-items:center;justify-content:center;gap:8px;margin:0 0 6px}.prompt b{color:var(--accent);font-weight:500}.prompt em{color:var(--fg-dim);font-style:normal}.hero h1{font-size:22px;font-weight:500;letter-spacing:-.01em;margin:0;color:var(--fg)}.hero p{margin:14px 0 0;color:var(--fg-dim);font-size:14px;line-height:1.7;font-weight:300}.hero p span.hl{color:var(--fg)}.status{display:inline-flex;align-items:center;gap:9px;margin:0 auto;padding:6px 12px 6px 10px;border:1px solid var(--rule);border-radius:999px;font-size:11px;color:var(--fg-dim);background:rgba(0,0,0,.015)}.status .dot{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 0 var(--accent-glow);animation:pulse 2s ease-out infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(26,127,55,.45)}70%{box-shadow:0 0 0 9px rgba(26,127,55,0)}to{box-shadow:0 0 0 0 rgba(26,127,55,0)}}.sec h2{font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-faint);margin:0 0 14px}.sec h2 .pmpt{color:var(--accent);margin-right:6px}ul.links{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:2px}ul.links li{display:block}a.row{display:grid;grid-template-columns:1fr auto 1fr;align-items:baseline;grid-gap:12px;gap:12px;padding:9px 4px;color:var(--fg);text-decoration:none;font-size:14px;font-weight:400;position:relative;isolation:isolate;transition:color .18s ease,transform .25s cubic-bezier(.3,.7,.4,1)}a.row .lbl{text-align:right;color:var(--fg);white-space:nowrap}a.row .dots{color:var(--fg-faint);overflow:hidden;letter-spacing:.1em;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:color .18s ease}a.row .dots,a.row .meta{white-space:nowrap;font-size:12px}a.row .meta{text-align:left;color:var(--fg-dim)}a.row .meta:before{content:"→ ";color:var(--fg-faint);margin-right:2px;transition:color .18s ease,transform .25s ease;display:inline-block}a.row:hover,a.row:hover .dots,a.row:hover .lbl{color:var(--accent)}a.row.solo{display:block;text-align:center}a.entry.nav{display:block;text-decoration:none;color:inherit;text-align:left}a.entry.nav h3{transition:color .18s ease}a.entry.nav .chev{display:inline-block;margin-left:10px;color:var(--fg-faint);font-size:13px;transition:transform .25s ease,color .18s ease}a.entry.nav:hover h3{color:var(--accent)}a.entry.nav:hover .chev{color:var(--accent);transform:translateX(3px)}a.row:hover .meta{color:var(--fg)}a.row:hover .meta:before{color:var(--accent);transform:translateX(3px)}.find .grid{display:flex;gap:18px;justify-content:center;flex-wrap:wrap}a.tag{color:var(--fg-dim);text-decoration:none;font-size:13px;padding:4px 0;border-bottom:1px dashed var(--fg-faint);transition:color .18s ease,border-color .18s ease,letter-spacing .25s ease}a.tag:hover{color:var(--accent);border-color:var(--accent);letter-spacing:.03em}a.tag .at{color:var(--fg-faint)}a.tag:hover .at{color:var(--accent)}hr.rule{border:0;height:1px;background:var(--rule);margin:4px auto;width:40%}footer{margin-top:14px;color:var(--fg-faint);font-size:11px;display:flex;flex-direction:column;gap:4px;align-items:center}footer .blink:after{content:"_";color:var(--accent);animation:blink 1.05s steps(2) infinite;margin-left:2px}.boot{color:var(--fg-faint);font-size:11px;line-height:1.7;text-align:left;max-width:460px;margin:0 auto 4px;min-height:1.7em;white-space:pre-wrap}.boot .ok{color:var(--accent)}.col.page{text-align:left;max-width:640px}a.back{color:var(--fg-faint);text-decoration:none;font-size:12px;transition:color .18s ease;align-self:flex-start}a.back .pmpt{margin-right:6px}a.back .pmpt,a.back:hover{color:var(--accent)}.page-head h1{font-size:20px;font-weight:500;letter-spacing:-.01em;margin:0;color:var(--fg)}.page-head p{margin:10px 0 0;color:var(--fg-dim);font-size:13px;line-height:1.7;font-weight:300}.entries{display:flex;flex-direction:column}.entry{padding:26px 0;border-top:1px solid var(--rule)}.entry:first-child{border-top:0;padding-top:4px}.entry .head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.entry.expandable button.head{width:100%;background:none;border:0;padding:0;margin:0;font:inherit;color:inherit;text-align:left;cursor:pointer}.entry.expandable button.head:hover h3{color:var(--accent)}.entry.expandable h3{transition:color .18s ease}.entry.expandable .chev{display:inline-block;margin-left:10px;color:var(--fg-faint);font-size:13px;transition:transform .3s cubic-bezier(.3,.7,.4,1),color .18s ease}.entry.expandable.open .chev{transform:rotate(45deg);color:var(--accent)}.entry.expandable .body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s cubic-bezier(.3,.7,.4,1)}.entry.expandable.open .body{grid-template-rows:1fr}.entry.expandable .body-inner{overflow:hidden;min-height:0}.entry h3{font-size:15px;font-weight:500;margin:0;color:var(--fg)}.entry .year{color:var(--fg-faint);font-size:11px;white-space:nowrap}.entry .year .st{color:var(--accent)}.entry .tagline{margin:6px 0 0;font-style:italic}.entry .desc,.entry .tagline{color:var(--fg-dim);font-size:13px;font-weight:300}.entry .desc{margin:12px 0 0;line-height:1.75}.entry .foot{margin-top:14px;display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.entry .stack{color:var(--fg-faint);font-size:11px;letter-spacing:.02em}a.visit{color:var(--fg);text-decoration:none;font-size:12px;white-space:nowrap;transition:color .18s ease}a.visit:before{content:"→ ";color:var(--fg-faint);display:inline-block;transition:color .18s ease,transform .25s ease}a.visit:hover{color:var(--accent)}a.visit:hover:before{color:var(--accent);transform:translateX(3px)}.col.resume{max-width:680px;gap:30px}.resume-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.print-btn{background:none;border:1px solid var(--rule);border-radius:999px;padding:6px 14px;font:inherit;font-size:11px;color:var(--fg-dim);cursor:pointer;transition:color .18s ease,border-color .18s ease}.print-btn:hover{color:var(--accent);border-color:var(--accent)}.resume-head h1{font-size:24px;font-weight:600;letter-spacing:-.01em;margin:0;color:var(--fg)}.resume-role{margin:6px 0 0;font-size:13px;color:var(--accent);font-weight:500}.resume-contact{margin:8px 0 0;font-size:12px;color:var(--fg-dim)}.resume-contact a{color:var(--fg-dim);text-decoration:none;border-bottom:1px dashed var(--fg-faint);transition:color .18s ease,border-color .18s ease}.resume-contact a:hover{color:var(--accent);border-color:var(--accent)}.resume-summary{margin:0;font-size:13px;line-height:1.8;color:var(--fg-dim);font-weight:300;border-left:2px solid var(--accent);padding-left:16px}.stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px;gap:10px}.stat{border:1px solid var(--rule);border-radius:10px;padding:14px 10px;display:flex;flex-direction:column;align-items:center;gap:3px}.stat b{font-size:20px;font-weight:600;color:var(--fg)}.stat span{font-size:10px;letter-spacing:.06em;text-align:center}.resume-sec h2,.stat span{text-transform:uppercase;color:var(--fg-faint)}.resume-sec h2{font-size:11px;font-weight:500;letter-spacing:.12em;margin:0 0 4px;padding-bottom:8px;border-bottom:1px solid var(--rule)}.xp{padding:16px 0 2px}.xp-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.xp h3{font-size:14px;font-weight:500;margin:0;color:var(--fg)}.xp h3 .org{color:var(--accent)}.xp-meta{font-size:11px;color:var(--fg-faint);white-space:nowrap}ul.bullets{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}ul.bullets li{font-size:13px;line-height:1.7;font-weight:300;color:var(--fg-dim);padding-left:16px;position:relative}ul.bullets li:before{content:"–";position:absolute;left:0;color:var(--accent)}.books-line li .dim{color:var(--fg-faint)}.resume-books{margin:12px 0 0;font-size:13px;color:var(--fg-dim);font-weight:300}.skill-row{display:grid;grid-template-columns:140px 1fr;grid-gap:12px;gap:12px;padding:10px 0;border-bottom:1px solid var(--rule);font-size:12px}.skill-row:last-child{border-bottom:0}.skill-group{color:var(--fg);font-weight:500}.skill-items{color:var(--fg-dim);font-weight:300;line-height:1.7}@media (max-width:520px){.stats{grid-template-columns:repeat(2,1fr)}.skill-row{grid-template-columns:1fr;gap:2px}}@media print{.print-btn,.resume-top,body:after,body:before{display:none}.reveal{opacity:1!important;transform:none!important}main{min-height:auto;padding:0;display:block}.col.resume{max-width:100%;gap:22px}a{color:inherit}}.reveal{opacity:0;transform:translateY(6px);transition:opacity .5s ease,transform .5s cubic-bezier(.3,.7,.4,1)}.reveal.in{opacity:1;transform:none}@media (max-width:520px){:root{--gap:22px}main{padding:56px 18px}.hero h1{font-size:19px}a.row{grid-template-columns:1fr auto auto}a.row .meta{font-size:11px}}