@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/13bf9871fe164e7f-s.0s19wthhh_6~m.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:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/cc545e633e20c56d-s.0dza.stei.9v7.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/71b036adf157cdcf-s.03nf~dfjdkf~..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:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/89b21bb081cb7469-s.0gfhww.tctz1o.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:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/3fe682a82f50d426-s.p.09q3q1i5159bl.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/70bc3e132a0a741e-s.p.1409xf.ylxg8g.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:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}.jetbrains_mono_b07cb41a-module__3oS1Hq__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_b07cb41a-module__3oS1Hq__variable{--font-jetbrains:"JetBrains Mono", "JetBrains Mono Fallback"}
:root{--bg:#f5f6f4;--bg-elev:#fff;--ink:#0f1115;--ink-soft:#404552;--ink-faint:#8a8f99;--rule:#0f111522;--rule-strong:#0f111540;--accent:#3a77b8;--accent-soft:#3a77b81f;--font-display:var(--font-jetbrains), ui-monospace, monospace;--font-body:var(--font-jetbrains), ui-monospace, monospace;--font-mono:var(--font-jetbrains), ui-monospace, monospace;--pad-x:clamp(20px, 5vw, 64px);--col-gap:clamp(24px, 4vw, 80px);--row-gap:clamp(20px, 3vw, 40px);--section-gap:clamp(40px, 6vw, 96px)}@supports (color:lab(0% 0 0)){:root{--accent:lab(48.3837% -3.72797 -40.999);--accent-soft:lab(48.3837% -3.72797 -40.999/.12)}}:root[data-theme=dark]{--bg:#0c0e12;--bg-elev:#14171d;--ink:#eef0f4;--ink-soft:#a8aeba;--ink-faint:#5e6470;--rule:#eef0f422;--rule-strong:#eef0f440;--accent:#70a9e8;--accent-soft:#70a9e829}@supports (color:lab(0% 0 0)){:root[data-theme=dark]{--accent:lab(67.1153% -5.79432 -37.9978);--accent-soft:lab(67.1153% -5.79432 -37.9978/.16)}}*{box-sizing:border-box}html,body{margin:0;padding:0}html{background:var(--bg);color:var(--ink)}body{font-family:var(--font-body);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.55;transition:background-color .2s,color .2s}a{color:inherit}button{font-family:inherit}.shell{max-width:1240px;padding:clamp(24px, 4vw, 56px) var(--pad-x) 96px;margin:0 auto}.avatar-wrap{isolation:isolate;width:100%;max-width:220px;margin:0 0 28px;display:block;position:relative}.avatar-slot{aspect-ratio:4/5;background:var(--bg-elev);width:100%;box-shadow:0 0 0 1px var(--rule-strong);object-fit:cover;display:block}.masthead{border-bottom:1px solid var(--rule-strong);grid-template-columns:1fr auto;align-items:end;gap:24px 32px;padding-bottom:18px;display:grid}.masthead .name{font-family:var(--font-display);letter-spacing:-.025em;margin:0 0 6px;font-size:clamp(36px,5.8vw,64px);font-weight:600;line-height:1}.masthead .name em{color:var(--accent);font-style:normal;font-weight:600}.masthead .role{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin:0;font-size:12px}.masthead .right{text-align:right;font-family:var(--font-mono);letter-spacing:.04em;color:var(--ink-soft);flex-direction:column;align-items:flex-end;gap:6px;font-size:12px;display:flex}.masthead .right .avail{align-items:center;gap:8px;display:inline-flex}.masthead .right .avail:before{content:"";background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 3px var(--accent-soft);border-radius:999px;flex-shrink:0;animation:2s ease-in-out infinite avail-pulse;display:block}@keyframes avail-pulse{0%,to{box-shadow:0 0 0 3px var(--accent-soft)}50%{box-shadow:0 0 0 6px #0000}}.theme-toggle{border:1px solid var(--rule-strong);color:var(--ink);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:6px;margin-top:8px;padding:6px 10px;font-size:11px;transition:background .15s,border-color .15s;display:inline-flex}.theme-toggle:hover{background:var(--accent-soft);border-color:var(--accent)}.header-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;margin-top:8px;display:flex}.header-actions .theme-toggle{margin-top:0}.lang-pill{font-family:var(--font-mono);letter-spacing:.06em;align-items:center;gap:4px;display:inline-flex}.lang-pill .on{color:var(--accent)}.lang-pill .sep{color:var(--ink-faint)}.tabs{margin:24px 0 var(--row-gap);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.tabs nav{flex-wrap:wrap;gap:4px;display:flex}.tab{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink-faint);cursor:pointer;background:0 0;border:none;margin-right:8px;padding:10px 16px 10px 0;font-size:18px;font-weight:500;line-height:1;transition:color .15s;position:relative}.tab:hover{color:var(--ink-soft)}.tab[aria-current=page]{color:var(--ink)}.tab[aria-current=page]:after{content:"";background:var(--accent);height:1px;position:absolute;bottom:-2px;left:0;right:8px}.cv-actions{grid-column:2;justify-content:flex-end;gap:8px;margin-bottom:28px;display:flex}.btn{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--rule-strong);color:var(--ink);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:8px;padding:9px 14px;font-size:11px;text-decoration:none;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.btn:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--ink)}.btn.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.btn.primary:hover{background:var(--accent);border-color:var(--accent);color:#fff}.cv{gap:var(--col-gap);grid-template-columns:minmax(0,260px) minmax(0,1fr);display:grid}.cv .meta-col>section+section,.cv .main-col>section+section{margin-top:var(--section-gap)}.eyebrow{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);border-bottom:1px solid var(--rule);margin:0 0 14px;padding-bottom:10px;font-size:10px}.bio p{color:var(--ink);text-wrap:pretty;letter-spacing:-.005em;margin:0 0 12px;font-size:17px;line-height:1.5}.bio p+p{color:var(--ink-soft);font-size:15px;line-height:1.55}.exp-item{border-bottom:1px solid var(--rule);padding:22px 0}.exp-item:first-child{padding-top:0}.exp-item:last-child{border-bottom:none}.exp-head{grid-template-columns:1fr auto;align-items:baseline;gap:12px;display:grid}.exp-head .role{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:22px;font-weight:600;line-height:1.2}.exp-head .role .at{color:var(--ink-faint);font-weight:400}.exp-head .role .co{color:var(--ink)}.exp-head .role em{color:var(--accent);font-style:normal}.exp-head .dates{font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-soft);white-space:nowrap;font-size:11px}.exp-loc{font-family:var(--font-mono);letter-spacing:.06em;color:var(--ink-faint);text-transform:uppercase;margin:4px 0 0;font-size:11px}.exp-summary{color:var(--ink-soft);max-width:60ch;margin:10px 0 12px}.exp-bullets{margin:0;padding:0;list-style:none}.exp-bullets li{color:var(--ink);max-width:65ch;padding:6px 0 6px 22px;position:relative}.exp-bullets li:before{content:"";background:var(--accent);width:10px;height:1px;position:absolute;top:15px;left:0}.exp-subs{margin-top:8px}.exp-sub{border-top:1px dashed var(--rule);margin-top:12px;padding-top:12px}.exp-sub:first-child{margin-top:0}.exp-sub-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:4px;display:flex}.exp-sub-head .co{font-family:var(--font-display);letter-spacing:-.005em;font-size:16px;font-weight:500}.exp-sub-head .dates{font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-soft);white-space:nowrap;font-size:11px}.skill-block+.skill-block{margin-top:14px}.skill-block .label{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 4px;font-size:10px}.skill-block .items{color:var(--ink);line-height:1.45}.skill-note{color:var(--ink-faint);margin:16px 0 0;font-size:12px;font-style:italic;line-height:1.6}.edu-item,.talk-item,.lang-item{border-bottom:1px dashed var(--rule);padding:10px 0}.edu-item:last-child,.talk-item:last-child,.lang-item:last-child{border-bottom:none}.edu-item .school,.talk-item .title,.lang-item .name{font-family:var(--font-display);letter-spacing:-.005em;margin:0;font-size:15px;font-weight:500;line-height:1.3}.edu-item .degree,.talk-item .venue,.lang-item .level{color:var(--ink-soft);margin:2px 0 0;font-size:13px}.edu-item .dates,.talk-item .year{font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-faint);margin-top:2px;font-size:11px}.now{--now-label-col:160px}.now-head{margin-bottom:var(--section-gap);border-bottom:1px solid var(--rule-strong);grid-template-columns:1fr auto;align-items:end;gap:16px 24px;padding-bottom:18px;display:grid}.now-intro{color:var(--ink-soft);text-wrap:pretty;max-width:60ch;margin:10px 0 0;font-size:17px;line-height:1.5}.now-asof{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);white-space:nowrap;font-size:11px}.now-list{flex-direction:column;margin:0;padding:0;display:flex}.now-row{grid-template-columns:var(--now-label-col) minmax(0, 1fr);border-top:1px solid var(--rule);align-items:baseline;gap:24px;padding:28px 0;display:grid}.now-row:last-child{border-bottom:1px solid var(--rule)}.now-row dt{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin:0;font-size:10px}.now-row dd{color:var(--ink);margin:0}.now-item+.now-item{margin-top:18px}.now-title{font-family:var(--font-display);letter-spacing:-.015em;margin:0 0 4px;font-size:clamp(20px,2.4vw,24px);font-weight:600;line-height:1.2}.now-blurb{color:var(--ink-soft);text-wrap:pretty;max-width:60ch;margin:0;font-size:15px;line-height:1.55}.now-inline{font-family:var(--font-display);color:var(--ink);letter-spacing:-.005em;margin:0;font-size:17px;font-weight:500;line-height:1.5}.now-line{color:var(--ink);margin:0;padding:4px 0;font-size:16px;line-height:1.5}.now-line+.now-line{border-top:1px dashed var(--rule)}.book-title{font-family:var(--font-display);font-weight:500}.book-author{color:var(--ink-faint)}.contact{gap:var(--col-gap);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;display:grid}.contact .statement h2{font-family:var(--font-display);letter-spacing:-.03em;margin:0 0 20px;font-size:clamp(36px,5.5vw,64px);font-weight:600;line-height:1}.contact .statement h2 em{color:var(--accent);font-style:normal}.contact .statement p{color:var(--ink-soft);text-wrap:pretty;max-width:40ch;margin:0 0 14px;font-size:17px;line-height:1.55}.contact .statement .signed{font-family:var(--font-display);color:var(--ink);margin-top:32px;font-size:17px;font-style:normal;font-weight:500}.contact-list{flex-direction:column;display:flex}.contact-row{border-top:1px solid var(--rule);color:inherit;grid-template-columns:110px 1fr auto;align-items:center;gap:20px;padding:22px 0;text-decoration:none;transition:padding-left .22s;display:grid}.contact-list .contact-row:last-child{border-bottom:1px solid var(--rule)}.contact-row:hover{padding-left:12px}.contact-row:hover .handle{color:var(--accent)}.contact-row:hover .arrow{color:var(--accent);transform:translate(4px)}.contact-row .label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);font-size:11px}.contact-row .handle{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);word-break:break-word;font-size:clamp(17px,2vw,22px);font-weight:500;transition:color .2s}.contact-row .arrow{color:var(--ink-faint);font-size:20px;transition:transform .2s,color .2s}.form-section{margin-top:var(--section-gap)}.field{flex-direction:column;gap:6px;margin-bottom:16px;display:flex}.field label{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);font-size:10px}.field input,.field textarea{border:none;border-bottom:1px solid var(--rule-strong);color:var(--ink);font-family:var(--font-body);resize:vertical;background:0 0;outline:none;padding:6px 0 8px;font-size:17px;transition:border-color .15s}.field input:focus,.field textarea:focus{border-color:var(--accent)}.field textarea{min-height:90px;font-size:15px;line-height:1.55}.footer{border-top:1px solid var(--rule);font-family:var(--font-mono);letter-spacing:.06em;color:var(--ink-faint);flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:96px;padding-top:18px;font-size:11px;display:flex}.toast{background:var(--ink);color:var(--bg);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;opacity:0;pointer-events:none;z-index:100;border-radius:999px;padding:10px 16px;font-size:11px;transition:opacity .2s,transform .2s;position:fixed;bottom:24px;left:50%;transform:translate(-50%)translateY(16px)}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}@media (max-width:820px){.avatar-wrap{max-width:140px;margin:0 auto 20px}.masthead{grid-template-columns:1fr;align-items:start}.masthead .right{text-align:left;align-items:flex-start}.header-actions{justify-content:flex-start}.cv{grid-template-columns:1fr}.cv .cv-actions{z-index:10;background:var(--bg);order:0;grid-column:1;margin-bottom:0;padding:10px 0;position:sticky;top:0}.cv .meta-col{order:1}.cv .main-col{order:2}.now-row{grid-template-columns:1fr;gap:6px;padding:22px 0}.now{--now-label-col:1fr}.contact{grid-template-columns:1fr}.contact-row{grid-template-columns:90px 1fr auto;gap:14px}.tab{padding-right:4px;font-size:18px}}@media (max-width:480px){.contact-row{grid-template-columns:1fr auto}.contact-row .label{grid-column:1/-1}}.print-only{display:none}@media print{@page{size:A4;margin:16mm 14mm}:root,:root[data-theme=dark]{--bg:#f5f6f4;--bg-elev:#fff;--ink:#0f1115;--ink-soft:#404552;--ink-faint:#8a8f99;--rule:#0f111522;--rule-strong:#0f111540;--accent:#3a77b8;--accent-soft:#3a77b81f}@supports (color:lab(0% 0 0)){:root,:root[data-theme=dark]{--accent:lab(48.3837% -3.72797 -40.999);--accent-soft:lab(48.3837% -3.72797 -40.999/.12)}}body{font-size:11pt;color:#000!important;background:#fff!important}.no-print,.theme-toggle,.footer,.cv-actions,.tabs{display:none!important}.print-only{display:revert!important}.masthead .right .avail{display:none!important}.shell{max-width:none;padding:0}.masthead{border-bottom:none;padding-bottom:10px}.masthead .name{font-size:32pt}.masthead .name em{color:#000}.print-contacts{margin:6px 0 0;padding:0;list-style:none}.print-contacts li{font-family:var(--font-mono);letter-spacing:.04em;color:#000;font-size:10px;line-height:1.7}.cv{display:block}.cv .meta-col{float:left;width:220px}.cv .main-col{margin-left:248px}.exp-item{page-break-inside:avoid;break-inside:avoid;padding:14px 0}.exp-item--multi{page-break-inside:auto;break-inside:auto}.exp-sub{page-break-inside:avoid;break-inside:avoid}.exp-bullets li:before{background:#000}.eyebrow{color:#555;border-color:#ccc}.exp-loc{color:var(--accent)!important}.skill-block .label{color:#555!important}.skill-note,.exp-head .role .at,.edu-item .dates,.talk-item .year{color:var(--ink-soft)!important}a{color:#000;text-decoration:none}}
:root{--bg:#0a0f0c;--bg-elev:#0f1612;--ink:#c7e6c5;--ink-soft:#7fa37c;--ink-faint:#4a6648;--rule:#c7e6c526;--rule-strong:#c7e6c544;--accent:#6dff95;--accent-soft:#6dff9518}:root[data-theme=light]{--bg:#f1f4ef;--bg-elev:#fff;--ink:#1a2418;--ink-soft:#4a5e47;--ink-faint:#8a9a87;--rule:#1a241829;--rule-strong:#1a241852;--accent:#1f6b3a;--accent-soft:#1f6b3a18}body{font-family:var(--font-body);letter-spacing:0;font-size:14px}.masthead{border-bottom:1px dashed var(--rule-strong)}.masthead .name{letter-spacing:-.02em;text-transform:lowercase;font-size:clamp(28px,4.5vw,44px);font-weight:700}.masthead .name:before{content:"$ ";color:var(--accent);font-weight:400}.masthead .name em{color:var(--accent);font-style:normal;font-weight:700}.masthead .role{text-transform:lowercase;letter-spacing:0;color:var(--ink-soft)}.masthead .role:before{content:"# ";color:var(--accent)}.masthead .right .avail{text-transform:uppercase;letter-spacing:.1em;color:var(--accent)}.masthead .right .avail:before{display:none}.masthead .right .avail:after{content:" ▮";animation:1.2s step-end infinite blink}@keyframes blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.masthead .right .avail:after{animation:none}}.tab{font-family:var(--font-display);text-transform:lowercase;letter-spacing:0;padding:8px 12px 8px 0;font-size:14px;font-weight:400}.tab:before{content:"[";color:var(--ink-faint);margin-right:2px}.tab:after{content:"]";color:var(--ink-faint);margin-left:2px}.tab[aria-current=page],.tab[aria-current=page]:before,.tab[aria-current=page]:after{color:var(--accent)}.tab[aria-current=page]:after{content:"]"}.eyebrow{font-family:var(--font-display);letter-spacing:.04em;text-transform:lowercase;color:var(--accent);border-bottom:1px dashed var(--rule)}.eyebrow:before{content:"// ";color:var(--ink-faint)}.avatar-wrap{max-width:200px}.avatar-slot{aspect-ratio:1;background:var(--bg-elev);box-shadow:0 0 0 1px var(--rule-strong);filter:grayscale()contrast(1.4)brightness(.85)sepia(40%)hue-rotate(60deg)}.bio p{font-size:14px;line-height:1.6}.bio p+p{font-size:13px}.exp-item{border-bottom:1px dashed var(--rule);padding:18px 0}.exp-head .role{font-family:var(--font-display);font-size:16px;font-weight:700}.exp-head .role em{color:var(--accent);font-style:normal;font-weight:700}.exp-head .role .at{color:var(--ink-faint)}.exp-bullets li:before{content:">";color:var(--accent);width:auto;height:auto;font-family:var(--font-display);background:0 0;position:absolute;top:6px;left:0}.exp-bullets li{padding-left:18px;font-size:14px}.now-row{border-top:1px dashed var(--rule)}.now-row dt{color:var(--accent)}.now-row dt:before{content:"[ ";color:var(--ink-faint)}.now-row dt:after{content:" ]";color:var(--ink-faint)}.now-title{font-family:var(--font-display);font-size:16px;font-weight:700}.now-blurb,.now-line,.now-inline{font-family:var(--font-display);font-size:14px}.book-title{font-family:var(--font-display);font-weight:700}.contact .statement h2{font-family:var(--font-display);text-transform:lowercase;font-size:clamp(28px,4.5vw,44px);font-weight:700}.contact .statement h2 em{color:var(--accent);font-style:normal}.contact .statement p{font-family:var(--font-display);max-width:50ch;font-size:14px}.contact .statement .signed{font-family:var(--font-display);font-size:16px;font-weight:700}.contact-row .handle{font-family:var(--font-display);font-size:16px;font-weight:500}.contact-row .arrow:before{content:"→"}.btn{text-transform:lowercase;border-radius:0;font-weight:500}.btn:before{content:"[";color:var(--ink-faint);margin-right:4px}.btn:after{content:"]";color:var(--ink-faint);margin-left:4px}.btn.primary{background:var(--accent);color:var(--bg);border-color:var(--accent)}.btn.primary:before,.btn.primary:after{color:var(--bg);opacity:.6}.theme-toggle{text-transform:lowercase;border-radius:0}.footer{border-color:var(--rule)}
