@font-face{font-family:Ioskeley Mono;src:url(/fonts/IoskeleyMono-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Geist Pixel;src:url(/fonts/GeistPixel-Square.woff2)format("woff2");font-weight:400 700;font-style:normal;font-display:swap}:root{--font-mono:"Ioskeley Mono", ui-monospace, "Hiragino Sans", "Apple SD Gothic Neo", "PingFang SC", "Noto Sans CJK SC", monospace;--font-pixel:"Geist Pixel", "Ioskeley Mono", ui-monospace, monospace;--paper:#f7f6f5;--ink:#0a0a0a;--muted:#6b6b6b;--line:#e3e1da;--accent:#7c3cff;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:var(--paper)}:root[data-theme=dark]{--paper:#0c0d0f;--ink:#f4f1ea;--muted:#aaa39a;--line:#262a2f;--accent:#9f7cff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme]){--paper:#0c0d0f;--ink:#f4f1ea;--muted:#aaa39a;--line:#262a2f;--accent:#9f7cff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box;border:0 solid;margin:0;padding:0}html{background:var(--paper);max-width:100%;height:100%;font-family:var(--font-mono);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:geometricprecision;overflow-x:clip}body{background:var(--paper);min-width:320px;max-width:100%;min-height:100%;color:var(--ink);font-family:var(--font-mono);font-size:16px;line-height:1.5;overflow-x:clip}::selection{color:#fff;background:var(--accent)}a{color:inherit;text-decoration:none}.site-shell{background:var(--paper);min-height:100vh;color:var(--ink);transition:color .18s cubic-bezier(.22,1,.36,1);position:relative}.theme-transition-snapshot{z-index:2147483647;pointer-events:none;-webkit-user-select:none;user-select:none;contain:paint;width:100vw;min-height:100vh;position:fixed;inset:0;overflow:hidden}.theme-transition-snapshot[data-theme-snapshot=light]{--paper:#f7f6f5;--ink:#0a0a0a;--muted:#6b6b6b;--line:#e3e1da;--accent:#7c3cff;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.theme-transition-snapshot[data-theme-snapshot=dark]{--paper:#0c0d0f;--ink:#f4f1ea;--muted:#aaa39a;--line:#262a2f;--accent:#9f7cff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.page-wrap{z-index:1;padding-top:0;position:relative}.content{flex-direction:column;gap:48px;width:100%;max-width:46rem;min-height:100vh;margin-inline:auto;padding:80px 24px;display:flex}.hero-header{flex-direction:column;display:flex}.section-label,.title-row p{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:12px;line-height:1.625}.title-row,.section-label{align-items:baseline;gap:16px;display:grid}.title-row{grid-template-columns:minmax(0,1fr) auto}.section-label{grid-template-columns:1fr}.title-row h1{color:var(--ink);letter-spacing:0;text-wrap:balance;font-size:20px;font-weight:400;line-height:1.25}.theme-toggle{width:36px;height:36px;color:var(--accent);cursor:pointer;background:0 0;border-radius:6px;outline:none;justify-content:center;align-items:center;display:inline-flex}.theme-toggle:disabled{cursor:default}.theme-toggle:not(:disabled):hover{color:var(--ink);background:color-mix(in oklab, var(--accent) 10%, transparent)}.theme-toggle:focus-visible{box-shadow:0 0 0 2px color-mix(in oklab, var(--accent) 55%, transparent)}.theme-toggle svg{width:16px;height:16px}.theme-toggle-icons{place-items:center;width:16px;height:16px;display:grid;position:relative}.theme-toggle-icon{grid-area:1/1}.file-tabs{min-width:0;max-width:100%;color:var(--muted);scrollbar-width:none;align-items:flex-end;font-size:14px;line-height:1;display:flex;overflow-x:auto}.file-tabs::-webkit-scrollbar{display:none}.file-tabs a{white-space:nowrap;min-height:36px;box-shadow:inset 1px 0 0 color-mix(in oklab, var(--ink) 9%, transparent), inset 0 -1px 0 color-mix(in oklab, var(--ink) 10%, transparent);align-items:center;padding:10px 12px 9px;transition:color .16s cubic-bezier(.22,1,.36,1),background-color .16s cubic-bezier(.22,1,.36,1),box-shadow .16s cubic-bezier(.22,1,.36,1);display:inline-flex;position:relative}.file-tabs a:first-child{box-shadow:inset 0 -1px 0 color-mix(in oklab, var(--ink) 10%, transparent)}.file-tabs a:hover{color:var(--ink);background:color-mix(in oklab, var(--accent) 5%, transparent)}.file-tabs a:focus-visible{z-index:1;box-shadow:inset 0 0 0 1px color-mix(in oklab, var(--accent) 45%, transparent), 0 0 0 2px color-mix(in oklab, var(--accent) 22%, transparent);outline:none}.file-tabs a.is-active{color:var(--ink);background:color-mix(in oklab, var(--accent) 9%, var(--paper));box-shadow:inset 1px 0 0 color-mix(in oklab, var(--accent) 25%, transparent), inset -1px 0 0 color-mix(in oklab, var(--accent) 16%, transparent), inset 0 1px 0 var(--accent)}.file-tabs a:first-child.is-active{box-shadow:inset -1px 0 0 color-mix(in oklab, var(--accent) 16%, transparent), inset 0 1px 0 var(--accent)}.bio{color:var(--ink);text-wrap:pretty;font-size:18px;line-height:1.625}.bio span{color:var(--accent)}.experience-page{gap:22px;display:grid}.content:has(.experience-page){max-width:46rem}.experience-layout,.experience-list{gap:18px;display:grid}.experience-entry{grid-template-columns:minmax(0,1fr);display:grid;position:relative}.experience-entry-main{gap:13px;min-width:0;display:grid}.experience-entry-head{grid-template-columns:minmax(0,1fr) minmax(10rem,auto);align-items:start;gap:16px;display:grid}.experience-entry h2{color:var(--ink);letter-spacing:0;font-size:20px;font-weight:400;line-height:1.25}.experience-role,.experience-meta,.experience-entry li{color:var(--muted);font-size:14px;line-height:1.55}.experience-role{color:var(--ink)}.experience-meta{text-align:right;font-variant-numeric:tabular-nums;justify-items:end;display:grid}.experience-entry ul{gap:8px;list-style:none;display:grid}.experience-entry li{padding-left:14px;position:relative}.experience-entry li:before{content:"";background:var(--accent);width:6px;height:1px;position:absolute;top:.75em;left:0}.experience-variant-1 .experience-list{gap:28px}.sf-time-wrap,.tooltip-wrap{color:var(--accent);cursor:default;display:inline-flex;position:relative}.sf-time-wrap:after,.tooltip-wrap:after{content:"";opacity:.45;transform-origin:0;background:currentColor;height:1px;transition:transform .18s cubic-bezier(.22,1,.36,1);position:absolute;bottom:-.08em;left:0;right:0;transform:scaleX(0)}.sf-time-wrap:hover:after,.sf-time-wrap:focus-visible:after,.tooltip-wrap:hover:after,.tooltip-wrap:focus-visible:after{transform:scaleX(1)}.sf-tooltip,.clean-tooltip{z-index:10;min-width:240px;color:var(--ink);pointer-events:none;background:color-mix(in oklab, var(--paper) 94%, white);opacity:0;transform-origin:bottom;border-radius:6px;gap:2px;padding:10px 12px 11px;transition:opacity .16s cubic-bezier(.22,1,.36,1),transform .16s cubic-bezier(.22,1,.36,1);display:grid;position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%)translateY(4px)scale(.98);box-shadow:0 18px 50px #0a0a0a24,inset 0 0 0 1px #0a0a0a1a}.sf-tooltip:after,.clean-tooltip:after{content:"";background:inherit;width:10px;height:10px;position:absolute;top:100%;left:50%;transform:translate(-50%,-5px)rotate(45deg)}.sf-time-wrap:hover .sf-tooltip,.sf-time-wrap:focus-visible .sf-tooltip,.tooltip-wrap:hover .clean-tooltip,.tooltip-wrap:focus-visible .clean-tooltip{opacity:1;transform:translate(-50%)translateY(0)scale(1)}.sf-tooltip-value,.tooltip-value{color:var(--accent);white-space:nowrap;font-size:13px;line-height:1.45}.section-label{margin-bottom:12px}.contrib{position:relative}.contrib-total{min-width:4ch;color:var(--ink);font-variant-numeric:tabular-nums;text-align:right;display:inline-block}.graph-scroll{padding-bottom:4px;overflow-x:auto}.graph-grid{grid-template-rows:repeat(7,minmax(0,1fr));grid-auto-flow:column;gap:3px;width:max-content;margin-inline:auto;display:grid}.graph-cell{transform-origin:50%;border-radius:2px;outline:none;width:10px;height:10px;transition:background-color .44s cubic-bezier(.22,1,.36,1);display:block;transform:scale(.42)}.graph-cell:focus-visible{box-shadow:0 0 0 2px var(--paper), 0 0 0 4px var(--accent)}.graph-cell.is-loaded{transform:scale(1)}.graph-cell.is-revealed{animation:.52s cubic-bezier(.2,0,0,1) both contribCellFill}.contrib-tooltip{z-index:30;pointer-events:none;background:color-mix(in oklab, var(--paper) 93%, white);border-radius:6px;gap:2px;min-width:176px;padding:9px 11px 10px;animation:.12s cubic-bezier(.22,1,.36,1) contribTooltipIn;display:grid;position:fixed;transform:translate(-50%,calc(-100% - 12px));box-shadow:0 18px 42px #0a0a0a2e,inset 0 0 0 1px #0a0a0a1a}.contrib-tooltip:after{content:"";background:inherit;width:9px;height:9px;position:absolute;top:100%;left:50%;transform:translate(-50%,-5px)rotate(45deg)}.contrib-tooltip-count{color:var(--ink);white-space:nowrap;font-size:13px;line-height:1.35}.contrib-tooltip-date{color:var(--accent);white-space:nowrap;font-size:12px;line-height:1.35}@keyframes contribTooltipIn{0%{opacity:0;transform:translate(-50%,calc(-100% - 8px))scale(.98)}to{opacity:1;transform:translate(-50%,calc(-100% - 12px))scale(1)}}@keyframes contribCellFill{0%{transform:scale(.42)}62%{transform:scale(1.22)}to{transform:scale(1)}}.level-0{background:var(--line)}.level-1{background:color-mix(in oklab, var(--accent) 30%, transparent)}.level-2{background:color-mix(in oklab, var(--accent) 55%, transparent)}.level-3{background:color-mix(in oklab, var(--accent) 80%, transparent)}.level-4{background:var(--accent)}.footer-row{color:var(--ink);font-size:14px;line-height:1.625}.socials{flex-wrap:wrap;gap:14px;display:flex}.socials>:is(a,span){width:40px;height:40px;color:var(--accent);border-radius:6px;justify-content:center;align-items:center;transition:color .16s cubic-bezier(.22,1,.36,1),transform .16s cubic-bezier(.22,1,.36,1);display:inline-flex;position:relative}.socials>span{cursor:default}.socials>:is(a,span):hover,.socials>:is(a,span):focus-visible{color:color-mix(in oklab, var(--accent) 72%, white);transform:translateY(-1px)}.socials>:is(a,span):focus-visible{box-shadow:0 0 0 2px color-mix(in oklab, var(--accent) 32%, transparent);outline:none}.socials>a:active{transform:translateY(0)scale(.96)}.socials svg{flex:none;width:16px;height:16px}.socials .npm-link svg{width:21px;height:21px}.socials>[data-tooltip]:before{z-index:10;color:var(--ink);white-space:nowrap;pointer-events:none;background:color-mix(in oklab, var(--paper) 94%, white);content:attr(data-tooltip);opacity:0;transform-origin:bottom;border-radius:6px;padding:7px 9px 8px;transition:opacity .16s cubic-bezier(.22,1,.36,1),transform .16s cubic-bezier(.22,1,.36,1);position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%)translateY(4px)scale(.98);box-shadow:0 18px 42px #0a0a0a29,inset 0 0 0 1px #0a0a0a1a}.socials>[data-tooltip]:after{z-index:9;content:"";pointer-events:none;background:color-mix(in oklab, var(--paper) 94%, white);opacity:0;width:9px;height:9px;transition:opacity .16s cubic-bezier(.22,1,.36,1),transform .16s cubic-bezier(.22,1,.36,1);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%,-5px)rotate(45deg)}.socials>[data-tooltip]:hover:before,.socials>[data-tooltip]:focus-visible:before{opacity:1;transform:translate(-50%)translateY(0)scale(1)}.socials>[data-tooltip]:hover:after,.socials>[data-tooltip]:focus-visible:after{opacity:1;transform:translate(-50%)rotate(45deg)}.text-link-animate a{color:inherit;background-image:linear-gradient(var(--accent), var(--accent));background-position:0 100%;background-repeat:no-repeat;background-size:0% .075em;transition:background-size .35s cubic-bezier(.22,1,.36,1)}.text-link-animate a:hover{background-size:100% .075em}@media (prefers-reduced-motion:reduce){.sf-time-wrap:after,.tooltip-wrap:after,.sf-tooltip,.clean-tooltip,.graph-cell,.contrib-tooltip,.socials>[data-tooltip]:before,.socials>[data-tooltip]:after,.socials>:is(a,span),.text-link-animate a{transition-duration:0s}.graph-cell.is-revealed,.contrib-tooltip{animation:none}.site-shell,.theme-toggle,.theme-toggle-icon{transition-duration:0s}.theme-transition-snapshot{display:none}}@media (width<=767px){.content{gap:48px;padding:48px 24px 80px}.title-row{grid-template-columns:minmax(0,1fr) auto}.section-label{grid-template-columns:1fr;gap:0}.experience-entry-head,.experience-entry{grid-template-columns:1fr}.experience-meta{text-align:left;justify-items:start}}
