@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/04c5164763c40239-s.1kd-r_s9smv5m.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:400;font-display:swap;src:url(../media/26f284dcc38c84c0-s.3hlisc-pwq13z.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:400;font-display:swap;src:url(../media/7e7f32a39836f228-s.0-oo9_1x_xmvg.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:400;font-display:swap;src:url(../media/fa39153a3fc630ba-s.36fqqi66-3tjb.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:400;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3_z45zcoc-xoz.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:400;font-display:swap;src:url(../media/051742360c26797e-s.p.1bkzbscqrt8rl.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;font-style:normal;font-weight:500;font-display:swap;src:url(../media/04c5164763c40239-s.1kd-r_s9smv5m.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:500;font-display:swap;src:url(../media/26f284dcc38c84c0-s.3hlisc-pwq13z.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:500;font-display:swap;src:url(../media/7e7f32a39836f228-s.0-oo9_1x_xmvg.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:500;font-display:swap;src:url(../media/fa39153a3fc630ba-s.36fqqi66-3tjb.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:500;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3_z45zcoc-xoz.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:500;font-display:swap;src:url(../media/051742360c26797e-s.p.1bkzbscqrt8rl.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;font-style:normal;font-weight:600;font-display:swap;src:url(../media/04c5164763c40239-s.1kd-r_s9smv5m.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:600;font-display:swap;src:url(../media/26f284dcc38c84c0-s.3hlisc-pwq13z.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:600;font-display:swap;src:url(../media/7e7f32a39836f228-s.0-oo9_1x_xmvg.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:600;font-display:swap;src:url(../media/fa39153a3fc630ba-s.36fqqi66-3tjb.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:600;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3_z45zcoc-xoz.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:600;font-display:swap;src:url(../media/051742360c26797e-s.p.1bkzbscqrt8rl.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_569317dc-module__D0raua__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_569317dc-module__D0raua__variable{--font-mono:"JetBrains Mono", "JetBrains Mono Fallback"}
:root{--navy:#0a1322;--navy-2:#0c1729;--panel:#0e1b30;--line:#1b2b44;--ink:#aab6c4;--ink-bright:#d7e0ea;--ink-dim:#5d6e82;--ink-faint:#3a4759;--accent:#f54e00;--accent-bright:#ff7a3c;--accent-2:#ff7a3c;--accent-soft:#f54e0024;--bg-grad:radial-gradient(120% 80% at 50% -10%, #102038 0%, var(--navy) 55%, #070e1a 100%);--status-bg:#080f1bd1;--banner-glow:#f54e0047;--panel-fill:#ffffff03;--mono:var(--font-mono), ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;--maxw:780px;--pad:clamp(16px, 4.5vw, 40px)}*{box-sizing:border-box}body[data-theme=cream]{--navy:#f7f7f4;--navy-2:#f1f0ea;--panel:#eeede6;--line:#e3e0d6;--ink:#26251e;--ink-bright:#14130d;--ink-dim:#6c6a5c;--ink-faint:#8a8676;--accent:#bf3a00;--accent-bright:#f54e00;--accent-2:#a83200;--accent-soft:#f54e0029;--bg-grad:radial-gradient(120% 80% at 50% -10%, #fff 0%, #f7f7f4 55%, #efeee7 100%);--status-bg:#f7f7f4d6;--banner-glow:#f54e0029;--panel-fill:#00000006}html{-webkit-text-size-adjust:100%}body{background:var(--bg-grad);color:var(--ink);font-family:var(--mono);letter-spacing:.1px;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-attachment:fixed;min-height:100vh;margin:0;font-size:clamp(13px,3.5vw,15px);line-height:1.62}.statusbar{z-index:50;padding:8px var(--pad);color:var(--ink-dim);background:var(--status-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);align-items:center;gap:10px;font-size:.78em;display:flex;position:sticky;top:0}.statusbar .dot{background:var(--accent);width:9px;height:9px;box-shadow:0 0 8px var(--accent);border-radius:50%;animation:2.4s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.statusbar .path{color:var(--ink)}.statusbar .spacer{flex:1}.statusbar .clock{font-variant-numeric:tabular-nums}.statusbar .prog{color:var(--accent)}.wrap{max-width:var(--maxw);padding:clamp(22px, 6vw, 48px) var(--pad) 96px;margin:0 auto}section{margin:0 0 clamp(40px,9vw,74px)}.cmd{color:var(--ink-bright);white-space:nowrap;margin:0 0 18px;font-size:.95em;overflow:hidden}.cmd .p{color:var(--accent)}.cmd .caret{background:var(--accent-bright);width:.62em;height:1.05em;margin-left:2px;animation:1.05s step-end infinite blink;display:inline-block;transform:translateY(.18em)}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}.muted{color:var(--ink-dim)}.dim{color:var(--ink-faint)}.hl{color:var(--ink-bright)}.amber{color:var(--accent)}b,strong{color:var(--ink-bright);font-weight:600}a{color:var(--accent);border-bottom:1px solid color-mix(in srgb, currentColor 55%, transparent);text-decoration:none;transition:border-color .15s,color .15s}a:hover,a:focus-visible{color:var(--accent-2);border-bottom-color:currentColor}.boot{color:var(--ink-dim);white-space:pre-wrap;min-height:8.5em;margin-bottom:6px;font-size:.86em}.boot .ok{color:var(--accent)}.boot .src{color:var(--ink)}.banner-wrap{margin:6px 0 4px;overflow:hidden}.banner{font-family:var(--mono);white-space:pre;color:var(--ink);text-shadow:none;transform-origin:0 0;letter-spacing:-.1em;opacity:.82;margin:0;font-size:1.05em;line-height:.92}.tagline{color:var(--ink);text-wrap:balance;max-width:40ch;margin:18px 0 0;font-size:clamp(15px,4.6vw,20px);line-height:1.4}.tagline .accent{color:var(--accent)}.contact{color:var(--ink-dim);flex-wrap:wrap;gap:6px 16px;margin:22px 0 0;font-size:.86em;font-style:normal;display:flex}.contact span,.contact a{align-items:center;gap:6px;display:inline-flex}.contact .k{color:var(--accent)}.rule{border:0;border-top:1px dashed var(--line);margin:30px 0 0}.profile p{max-width:66ch;margin:0}.job-head{flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin-bottom:2px;display:flex}.job-head .co{color:var(--ink-bright);letter-spacing:.3px;font-size:1.08em;font-weight:600}.job-head .when{color:var(--ink-dim);margin-left:auto;font-size:.85em}.job-role{color:var(--accent);margin:0 0 14px;font-size:.92em}.job-role .alt{color:var(--ink-dim)}.lede{max-width:64ch;margin:0 0 6px}.metrics{flex-wrap:wrap;gap:8px 10px;margin:14px 0 26px;padding:0;list-style:none;display:flex}.metric{border:1px solid var(--line);background:var(--panel-fill);border-radius:4px;min-width:0;padding:8px 12px}.metric .n{color:var(--accent);font-variant-numeric:tabular-nums;font-size:1.18em;font-weight:600;line-height:1.1;display:block}.metric .l{color:var(--ink-dim);margin-top:3px;font-size:.76em;display:block}.proj{border-left:1px solid var(--line);margin:0 0 22px;padding-left:20px;position:relative}.proj:before{content:"▸";color:var(--accent-bright);margin-left:-7px;padding-right:4px;position:absolute;top:-2px;left:-1px}.proj>.name{color:var(--ink-bright);font-weight:600}.proj>.sub{color:var(--ink-dim);margin:0 0 8px;font-size:.84em}.proj p{max-width:64ch;margin:8px 0}.proj .tag{color:var(--accent);letter-spacing:.4px;text-transform:uppercase;font-size:.82em}.skills{grid-template-columns:max-content 1fr;align-items:baseline;gap:10px 18px;display:grid}.skills dt{color:var(--accent);white-space:nowrap;font-size:.9em}.skills dd{color:var(--ink);margin:0}@media (max-width:560px){.skills{grid-template-columns:1fr;gap:4px 0}.skills dt{margin-top:12px}.skills dt:first-child{margin-top:0}}.entry{max-width:70ch;margin:0 0 18px}.entry .title{color:var(--ink-bright)}.entry .meta{color:var(--ink-dim);font-size:.85em}.pubs{margin:0;padding:0;list-style:none}.pub{grid-template-columns:2.4em 1fr;column-gap:8px;max-width:74ch;margin:0 0 16px;display:grid}.pub .idx{color:var(--accent)}.pub .t{color:var(--ink-bright)}.pub .a{color:var(--ink-dim);font-size:.85em}.pub .v{color:var(--ink);font-size:.85em}.footer{border-top:1px dashed var(--line);color:var(--ink-dim);padding-top:26px;font-size:.9em}.footer .links{flex-wrap:wrap;gap:10px 22px;margin:16px 0 22px;padding:0;list-style:none;display:flex}.footer .links .arr{color:var(--accent-bright)}.footer .sign{color:var(--ink-faint);white-space:pre;margin-top:24px;font-size:.78em;line-height:1.15}.footer .eot{color:var(--ink)}.footer .eot .caret{background:var(--accent);width:.55em;height:1em;margin-left:3px;animation:1.05s step-end infinite blink;display:inline-block;transform:translateY(.15em)}.eggterm{cursor:text;position:relative}.egg-out:not(:empty){margin:6px 0 0}.egg-out .egg-cmd{color:var(--ink-bright);white-space:pre-wrap;word-break:break-word;margin:16px 0 8px}.egg-out .egg-cmd .u{color:var(--accent)}.egg-out .egg-cmd .path{color:var(--ink)}.egg-out .egg-cmd .p{color:var(--accent);margin:0 .35ch}.egg-out .egg-note{color:var(--ink-dim);min-height:1em;margin:0}.egg-out .egg-err{color:var(--accent-2);margin:4px 0}.egg-out .egg-section{border:0;margin:4px 0 10px;padding:0}.egg-prompt{color:var(--ink-bright);flex-wrap:wrap;align-items:baseline;margin-top:14px;display:flex}.egg-prompt .u{color:var(--accent)}.egg-prompt .path{color:var(--ink)}.egg-prompt .p{color:var(--accent);margin:0 .35ch}.egg-prompt .egg-typed{white-space:pre-wrap;word-break:break-word}.egg-prompt .egg-ghost{color:var(--ink-dim);-webkit-user-select:none;user-select:none;pointer-events:none;margin-left:12px;font-size:.82em}.egg-prompt .caret{background:var(--accent-bright);width:.55em;height:1em;margin-left:2px;animation:1.05s step-end infinite blink;display:inline-block;transform:translateY(.15em)}.eggterm:focus-within .egg-prompt{outline:2px solid var(--accent);outline-offset:4px;border-radius:3px}.egg-input{opacity:0;border:0;width:1px;height:1px;margin:0;padding:0;position:absolute;bottom:0;left:0}[data-reveal]{opacity:0;transition:opacity .5s,transform .5s cubic-bezier(.2,.7,.2,1);transform:translateY(10px)}[data-reveal].revealed{opacity:1;transform:none}[data-reveal][data-d="1"]{transition-delay:80ms}[data-reveal][data-d="2"]{transition-delay:.16s}[data-reveal][data-d="3"]{transition-delay:.24s}[data-reveal][data-d="4"]{transition-delay:.32s}@media (prefers-reduced-motion:reduce){[data-reveal]{opacity:1;transition:none;transform:none}.statusbar .dot,.cmd .caret,.footer .eot .caret,.egg-prompt .caret{animation:none}html{scroll-behavior:auto}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;background:var(--panel);color:var(--ink-bright);border:1px solid var(--accent);border-radius:4px;padding:8px 14px;text-decoration:none;transition:top .15s;position:fixed;top:-100px;left:8px}.skip-link:focus{top:8px}:where(.wrap h1,.wrap h2,.wrap h3,.wrap h4,.footer h2){font:inherit;font-weight:inherit;margin:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}a:focus-visible{outline-offset:3px}@media (forced-colors:active){:focus-visible,.eggterm:focus-within .egg-prompt{outline:2px solid highlight}.metric{border-color:canvastext}}
