@charset "UTF-8";@import"https://fonts.googleapis.com/css2?family=Caveat:wght@400..700&display=swap";@font-face{font-family:Geist;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/Geist-Variable-CrgPqtmy.woff2) format("woff2-variations")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/GeistMono-Variable-BNLlm6Cd.woff2) format("woff2-variations")}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;min-height:100dvh;font-family:var(--font-family);font-size:var(--font-size-md);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3{text-wrap:balance}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@font-face{font-family:Geist;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/Geist-Variable-CrgPqtmy.woff2) format("woff2-variations")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/GeistMono-Variable-BNLlm6Cd.woff2) format("woff2-variations")}.tooltip{position:relative;display:inline-flex;align-items:center}.tooltip__bubble{font-family:var(--font-family);font-style:normal;font-size:var(--font-size-xs);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);color:var(--color-text-muted);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);white-space:nowrap;color:var(--color-bg);background-color:var(--color-text);padding:3px var(--spacing-xs);border-radius:var(--radius-sm);pointer-events:none;opacity:0;transition:opacity .15s ease}.tooltip__bubble:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:4px solid transparent;border-top-color:var(--color-text)}.tooltip:hover .tooltip__bubble,.tooltip--visible .tooltip__bubble{opacity:1}@font-face{font-family:Geist;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/Geist-Variable-CrgPqtmy.woff2) format("woff2-variations")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/GeistMono-Variable-BNLlm6Cd.woff2) format("woff2-variations")}.copy-email{background:none;border:none;padding:0;cursor:pointer}.copy-email__label{font-family:var(--font-family);font-style:normal;font-size:var(--font-size-xs);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);color:var(--color-text-muted);transition:color .15s ease}.copy-email:hover .copy-email__label,.copy-email__label--copied{color:var(--color-text)}@font-face{font-family:Geist;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/Geist-Variable-CrgPqtmy.woff2) format("woff2-variations")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/GeistMono-Variable-BNLlm6Cd.woff2) format("woff2-variations")}.tag{display:inline-flex;align-items:center;gap:2px;padding:4px 10px;border-radius:999px;white-space:nowrap;font-family:var(--font-family);font-style:normal;font-size:var(--font-size-xs);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);color:var(--color-text-muted);font-weight:var(--font-weight-medium)}.tag--default{background:var(--color-neutral-100);color:var(--color-text)}.tag--subtle{background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border)}.tag__hash{color:var(--color-text-muted)}@font-face{font-family:Geist;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/Geist-Variable-CrgPqtmy.woff2) format("woff2-variations")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/GeistMono-Variable-BNLlm6Cd.woff2) format("woff2-variations")}.hero{container-type:inline-size;display:flex;flex-direction:column;gap:var(--spacing-2xl);width:100%}.hero__top{display:flex;flex-direction:column;gap:var(--spacing-md)}.hero__name{font-family:var(--font-family-serif);font-style:normal;font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);color:var(--color-text);margin:0}.hero__tagline{font-family:var(--font-family);font-style:normal;font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);color:var(--color-text);color:var(--color-text-muted);display:flex;flex-direction:column;gap:var(--spacing-xs);margin:0}.hero__tags{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}.hero__tagline-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--spacing-xs)}.hero__tagline-sep{color:var(--color-text-muted)}.hero__chip{display:inline-flex;align-items:center;gap:4px;padding-left:4px;padding-right:4px;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text)}.hero__chip-logo{width:14px;height:14px;object-fit:contain;border-radius:2px}.hero__acquired{display:inline-flex;align-items:center;font-size:var(--font-size-sm);color:var(--color-text-muted)}.hero__acquired-brand{display:inline-flex;align-items:center;gap:3px;font-weight:var(--font-weight-medium);color:var(--color-text)}.hero__acquired-logo{width:12px;height:12px;flex-shrink:0}.hero__chip-logo-placeholder{width:14px;height:14px;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:var(--font-weight-bold);color:var(--color-text-muted);background-color:var(--color-neutral-200);border-radius:2px;flex-shrink:0}.hero__bottom{display:flex;align-items:center;justify-content:flex-start;gap:var(--spacing-md);flex-wrap:wrap}.hero__social{--hero-social-gap: var(--spacing-md);display:flex;align-items:center;gap:var(--hero-social-gap)}.hero__social-link{font-family:var(--font-family);font-style:normal;font-size:var(--font-size-xs);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);position:relative;display:inline-flex;align-items:center;gap:4px;color:var(--color-text-muted);text-decoration:none}.hero__social-link:before{content:"";position:absolute;inset:-13px calc(var(--hero-social-gap) / -2)}.hero__social-link:hover{color:var(--color-text)}.hero__social-link-icon{display:none;flex-shrink:0}.hero__social .tooltip__bubble{display:none}@container (max-width: 310px){.hero__social{--hero-social-gap: var(--spacing-sm)}.hero__social-link-label{display:none}.hero__social-link-icon{display:inline-flex}.hero__social .tooltip__bubble{display:block}}@font-face{font-family:Geist;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/Geist-Variable-CrgPqtmy.woff2) format("woff2-variations")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/GeistMono-Variable-BNLlm6Cd.woff2) format("woff2-variations")}.digital-clock{display:inline-flex;flex-direction:column;align-items:center;gap:var(--spacing-xs);color:var(--color-text)}.digital-clock__date{font-family:var(--font-family-mono);font-style:normal;font-size:11px;font-weight:var(--font-weight-regular);font-variant-numeric:tabular-nums;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.digital-clock__time{display:flex;align-items:flex-start;gap:var(--spacing-sm)}.digital-clock__digits,.digital-clock__colon{font-family:var(--font-family-mono);font-style:normal;font-size:var(--font-size-xl);font-weight:var(--font-weight-medium);font-variant-numeric:tabular-nums;line-height:1;color:var(--color-secondary)}.digital-clock__colon{padding-inline:2px;animation:digital-clock-blink 1s steps(2,start) infinite}.digital-clock__location{font-family:var(--font-family);font-style:normal;font-size:var(--font-size-xs);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);font-size:11px;padding-top:4px;color:var(--color-text-muted)}@keyframes digital-clock-blink{to{opacity:.65}}@media(prefers-reduced-motion:reduce){.digital-clock__colon{animation:none}}@font-face{font-family:Geist;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/Geist-Variable-CrgPqtmy.woff2) format("woff2-variations")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/GeistMono-Variable-BNLlm6Cd.woff2) format("woff2-variations")}.home-stage{position:relative;width:100%;max-width:1100px;margin-inline:auto;display:flex;align-items:flex-start;justify-content:center;gap:var(--home-stage-gap, var(--spacing-xl));z-index:1}.home-stage__info{flex:0 0 auto;width:var(--home-info-width, 264px);padding-top:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-xl)}.home-stage__header{display:flex;flex-direction:column;gap:var(--spacing-sm)}.home-stage__eyebrow{font-family:var(--font-family-mono);font-style:normal;margin:0;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.home-stage__title{font-family:var(--font-family-serif);font-style:normal;font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);color:var(--color-text);margin:0;font-size:clamp(1.25rem,1.8vw,1.5rem);letter-spacing:-.01em}.home-stage__title-link{border-radius:var(--radius-sm);color:inherit;text-decoration:none}.home-stage__title-link:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}.home-stage__title-link:focus-visible{outline:2px solid var(--color-primary);outline-offset:4px}.home-stage__tagline{font-family:var(--font-family);font-style:normal;font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);color:var(--color-text);margin:0;color:var(--color-text-muted)}.home-stage__widgets{margin:0;display:flex;flex-direction:column;gap:var(--spacing-lg)}.home-stage__widget{display:flex;flex-direction:column;gap:6px}.home-stage__widget-label{font-family:var(--font-family-mono);font-style:normal;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.home-stage__widget-body{font-family:var(--font-family);font-style:normal;font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);color:var(--color-text);margin:0;font-size:.8125rem;line-height:1.45}.home-stage__widget-line{display:block}.home-stage__notebook{position:relative;isolation:isolate;flex:0 1 auto;min-width:0;width:var(--home-notebook-width, 800px);border-radius:var(--radius-md)}.home-stage__notebook:before,.home-stage__notebook:after{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:var(--home-paper-edge, var(--color-bg-subtle));box-shadow:0 0 0 1px var(--home-paper-rule, var(--color-border)),0 6px 14px -6px #28201438}.home-stage__notebook:before{transform:rotate(1.8deg) translate(4px,7px)}.home-stage__notebook:after{transform:rotate(-1.3deg) translate(-3px,8px)}.home-stage__sheet{position:relative;padding:var(--spacing-lg);border-radius:inherit;background:var(--home-paper, var(--color-bg));box-shadow:var(--shadow-lg)}.home-stage__cover-link{display:block;border-radius:var(--radius-sm);text-decoration:none;color:inherit}.home-stage__cover-link:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.home-stage__cover{position:relative;aspect-ratio:16/9;border-radius:var(--radius-sm);overflow:hidden;background:var(--color-bg-subtle);border:1px solid var(--home-paper-rule, var(--color-border))}.home-stage__cover-image{width:100%;height:100%;object-fit:cover;display:block;transition:opacity .3s ease}.home-stage__cover-image--hover{position:absolute;inset:0;opacity:0}.home-stage__cover-link:hover .home-stage__cover-image--hover{opacity:1}.home-stage__curl{position:absolute;right:0;bottom:0;width:clamp(64px,13%,108px);aspect-ratio:1;border-bottom-right-radius:calc(var(--radius-md) - 1px);overflow:hidden;pointer-events:none}.home-stage__curl-page{display:block;width:100%;height:100%;transform:scale(.82);transform-origin:100% 100%;transition:transform .35s cubic-bezier(.25,1,.5,1)}.home-stage__curl-page path{pointer-events:auto}.home-stage__curl-under{fill:var(--home-paper-edge, var(--color-bg-subtle))}.home-stage__curl-lift{fill:var(--home-curl-cast, #000);opacity:.14}.home-stage__curl-flap{stroke:var(--home-paper-rule, var(--color-border));stroke-width:1;vector-effect:non-scaling-stroke}.home-stage__curl-stop--cast{stop-color:var(--home-curl-cast, #000)}.home-stage__curl-stop--shade{stop-color:var(--home-curl-shade, var(--color-neutral-200))}.home-stage__curl-stop--light{stop-color:var(--home-curl-light, var(--color-bg))}.home-stage__curl-stop--paper{stop-color:var(--home-paper, var(--color-bg))}.home-stage__curl-stop--tip{stop-color:color-mix(in srgb,var(--home-paper, var(--color-bg)) 72%,var(--home-curl-shade, var(--color-neutral-200)))}.home-stage__curl-arrow{position:absolute;right:21%;bottom:21%;color:var(--color-text);transform:translate(50%,50%);transition:transform .35s cubic-bezier(.25,1,.5,1)}.home-stage__cover-link:hover .home-stage__curl-page,.home-stage__cover-link:focus-visible .home-stage__curl-page{transform:scale(1);transition:transform .55s cubic-bezier(.3,1.9,.5,1)}.home-stage__cover-link:hover .home-stage__curl-arrow,.home-stage__cover-link:focus-visible .home-stage__curl-arrow{transform:translate(50%,50%) translate(3px)}@media(prefers-reduced-motion:reduce){.home-stage__cover-image,.home-stage__curl-page,.home-stage__curl-arrow{transition:none!important}}@media(min-width:769px)and (max-width:960px)and (min-height:1000px){.home-stage{flex-direction:column;align-items:center;gap:var(--spacing-xl)}.home-stage__info{display:contents}.home-stage__header,.home-stage__notebook,.home-stage__widgets{width:min(100%,720px)}.home-stage__widgets{order:1;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}}@media(max-width:768px){.home-stage{flex-direction:column;align-items:stretch;gap:var(--spacing-md);margin-block:auto}.home-stage__info{width:100%;padding-top:0}.home-stage__notebook{width:100%}.home-stage__sheet{padding:var(--spacing-md)}.home-stage__widgets{display:none}}@font-face{font-family:Geist;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/Geist-Variable-CrgPqtmy.woff2) format("woff2-variations")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/GeistMono-Variable-BNLlm6Cd.woff2) format("woff2-variations")}.writing-stage__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.writing-stage__item+.writing-stage__item{border-top:1px solid var(--home-paper-rule, var(--color-border))}.writing-stage__link{display:grid;grid-template-columns:28% minmax(0,1fr) auto;align-items:center;gap:var(--spacing-lg);padding-block:var(--spacing-md);border-radius:var(--radius-sm);color:inherit;text-decoration:none}.writing-stage__link:focus-visible{outline:2px solid var(--color-primary);outline-offset:4px}.writing-stage__item:first-child .writing-stage__link{padding-top:0}.writing-stage__item:last-child .writing-stage__link{padding-bottom:0}.writing-stage__thumb{display:block;aspect-ratio:16/9;border-radius:var(--radius-sm);overflow:hidden;background:var(--color-bg-subtle);border:1px solid var(--home-paper-rule, var(--color-border))}.writing-stage__thumb-image{width:100%;height:100%;object-fit:cover;display:block}.writing-stage__text{display:flex;flex-direction:column;gap:6px;min-width:0}.writing-stage__meta{font-family:var(--font-family-mono);font-style:normal;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.writing-stage__title{font-family:var(--font-family-serif);font-style:normal;font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);color:var(--color-text);margin:0;font-size:clamp(1rem,1.4vw,1.1875rem);letter-spacing:-.01em;text-wrap:pretty}.writing-stage__arrow{margin-right:var(--spacing-sm);color:var(--color-text-muted);transition:color .2s cubic-bezier(.25,1,.5,1),transform .35s cubic-bezier(.25,1,.5,1)}.writing-stage__link:hover .writing-stage__title,.writing-stage__link:focus-visible .writing-stage__title{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}.writing-stage__link:hover .writing-stage__arrow,.writing-stage__link:focus-visible .writing-stage__arrow{color:var(--color-text);transform:translate(2px,-2px)}.writing-stage__more{display:inline-flex;align-items:center;gap:var(--spacing-xs);border-radius:var(--radius-sm);color:inherit;text-decoration:none}.writing-stage__more:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}.writing-stage__more:focus-visible{outline:2px solid var(--color-primary);outline-offset:4px}@media(prefers-reduced-motion:reduce){.writing-stage__arrow{transition:none!important}}@media(max-width:768px){.writing-stage__link{grid-template-columns:96px minmax(0,1fr);align-items:start;gap:var(--spacing-md)}.writing-stage__arrow{display:none!important}.writing-stage__title{font-size:.9375rem}}@font-face{font-family:Geist;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/Geist-Variable-CrgPqtmy.woff2) format("woff2-variations")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/GeistMono-Variable-BNLlm6Cd.woff2) format("woff2-variations")}.project-tabs{display:flex;flex-direction:column;align-items:flex-end;gap:var(--spacing-sm);padding:var(--spacing-sm) 0 var(--spacing-sm) var(--spacing-sm);max-height:100vh;max-height:100dvh;overflow-y:auto;scrollbar-width:none}.project-tabs::-webkit-scrollbar{display:none}.project-tabs__tab{position:relative;background:var(--color-bg-subtle);color:var(--color-text-muted);border:1px solid var(--color-border);border-right:none;border-radius:var(--radius-md) 0 0 var(--radius-md);padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;width:168px;flex-shrink:0;white-space:nowrap;height:60px;transition:background-color .2s cubic-bezier(.25,1,.5,1),color .2s cubic-bezier(.25,1,.5,1);transition-delay:0ms}@media(hover:hover){.project-tabs__tab:hover{background:var(--color-neutral-100);color:var(--color-text);transition-delay:.15s}}.project-tabs__select{appearance:none;position:absolute;inset:0;padding:0;border:none;border-radius:inherit;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}.project-tabs__select:focus-visible{outline:2px solid var(--color-text);outline-offset:-2px}.project-tabs__tab--active{background:var(--color-primary);color:var(--color-bg);border-color:var(--color-primary);width:180px;z-index:1}.project-tabs__tab--active:hover{background:var(--color-primary-hover);color:var(--color-bg)}.project-tabs__meta{font-family:var(--font-family);font-style:normal;font-size:var(--font-size-xs);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);color:var(--color-text-muted);font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:inherit;white-space:nowrap}.project-tabs__name{font-family:var(--font-family);font-style:normal;font-size:var(--font-size-md);font-weight:var(--font-weight-medium);line-height:var(--line-height-normal);color:var(--color-text);font-size:var(--font-size-sm);color:inherit}.project-tabs__lock{margin-left:6px;vertical-align:-1px;opacity:.7}.project-tabs__name--link{position:relative;z-index:1;text-decoration:none;pointer-events:none}.project-tabs__arrow{margin-left:4px;vertical-align:-2px;opacity:0;transform:translate(-4px);transition:opacity .2s cubic-bezier(.25,1,.5,1),transform .2s cubic-bezier(.25,1,.5,1)}@media(hover:hover)and (pointer:fine){.project-tabs__name--link{pointer-events:auto}.project-tabs__name--link:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}.project-tabs__name--link:hover .project-tabs__arrow{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.project-tabs__arrow{transition:none}}.project-tabs--mobile{flex-direction:row;align-items:flex-end;justify-content:center;gap:var(--spacing-xs);padding:0 var(--spacing-sm);max-height:none;overflow:visible}.project-tabs__viewport{display:flex;align-items:flex-end;justify-content:center;gap:var(--spacing-xs);flex:1 1 auto;min-width:0}.project-tabs--mobile .project-tabs__tab{align-items:center;width:auto;flex:1 1 0;min-width:0;padding:var(--spacing-sm);border-right:1px solid var(--color-border);border-bottom:none;border-radius:var(--radius-md) var(--radius-md) 0 0}.project-tabs--mobile .project-tabs__tab--active{width:auto;height:68px;border-color:var(--color-primary)}.project-tabs--mobile .project-tabs__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.project-tabs__nav{appearance:none;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-bottom:none;border-radius:var(--radius-md) var(--radius-md) 0 0;width:44px;height:60px;display:inline-flex;align-items:center;justify-content:center;color:var(--color-text-muted);cursor:pointer;flex-shrink:0;-webkit-tap-highlight-color:transparent;transition:background-color .2s cubic-bezier(.25,1,.5,1),color .2s cubic-bezier(.25,1,.5,1),opacity .2s cubic-bezier(.25,1,.5,1),transform .15s ease-out}@media(hover:hover){.project-tabs__nav:hover:not(:disabled){background:var(--color-neutral-100);color:var(--color-text)}}.project-tabs__nav:active:not(:disabled){transform:scale(.96)}.project-tabs__nav:disabled{opacity:.35;cursor:not-allowed}.project-tabs__nav:focus-visible{outline:2px solid var(--color-text);outline-offset:-2px}.dappled-light{--dapple-base: var(--color-bg);--dapple-shadow: #46505a;--dapple-near-opacity: .14;--dapple-far-opacity: .06;--dapple-grain-opacity: .26;--dapple-blinds-opacity: .07;--dapple-wall-opacity: .07;--dapple-wall-blend: multiply;position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;background-color:var(--dapple-base)}:root[data-theme=dark] .dappled-light{--dapple-shadow: #030303;--dapple-near-opacity: .5;--dapple-far-opacity: .3;--dapple-grain-opacity: .18;--dapple-blinds-opacity: .25;--dapple-wall-opacity: .16;--dapple-wall-blend: soft-light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .dappled-light{--dapple-shadow: #030303;--dapple-near-opacity: .5;--dapple-far-opacity: .3;--dapple-grain-opacity: .18;--dapple-blinds-opacity: .25;--dapple-wall-opacity: .16;--dapple-wall-blend: soft-light}}.dappled-light__wall{position:absolute;inset:0;opacity:var(--dapple-wall-opacity);mix-blend-mode:var(--dapple-wall-blend);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='360' height='360'%3E%3Cfilter id='s'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.045' numOctaves='4' seed='3' stitchTiles='stitch'/%3E%3CfeDiffuseLighting lighting-color='%23ffffff' surfaceScale='1.6' diffuseConstant='1.1'%3E%3CfeDistantLight azimuth='225' elevation='55'/%3E%3C/feDiffuseLighting%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23s)'/%3E%3C/svg%3E"),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='900'%3E%3Cfilter id='m'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.004' numOctaves='3' seed='8' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.45 0 0 0 0 0.42 0 0 0 0 0.38 0 0 0 0.55 -0.12'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23m)'/%3E%3C/svg%3E");background-size:360px 360px,900px 900px}.dappled-light__blinds{position:absolute;top:4%;left:-8%;width:38%;height:72%;opacity:var(--dapple-blinds-opacity);background:repeating-linear-gradient(to bottom,var(--dapple-shadow) 0 16px,transparent 16px 58px);transform:translate(var(--dapple-drift-x, 0px),var(--dapple-drift-y, 0px)) rotate(-14deg) skew(-10deg);filter:blur(5px);-webkit-mask-image:linear-gradient(to right,#000 20%,transparent 90%),linear-gradient(to bottom,transparent,#000 22%,#000 70%,transparent);-webkit-mask-composite:source-in;mask-image:linear-gradient(to right,#000 20%,transparent 90%),linear-gradient(to bottom,transparent,#000 22%,#000 70%,transparent);mask-composite:intersect}.dappled-light__layer{position:absolute;inset:-60px;width:calc(100% + 120px);height:calc(100% + 120px);display:block}.dappled-light__layer--far{opacity:var(--dapple-far-opacity);filter:blur(26px)}.dappled-light__layer--near{opacity:var(--dapple-near-opacity);filter:blur(8px)}.dappled-light__grain{position:absolute;inset:0;opacity:var(--dapple-grain-opacity);mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.5 0 0 0 0 0.5 0 0 0 0 0.5 0 0 0 0.35 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}@media(max-width:768px){.dappled-light__blinds{width:60%;left:-22%;height:50%}.dappled-light__layer--near{filter:blur(6px)}.dappled-light__layer--far{filter:blur(18px)}}.sun-fleck{--fleck-glow: rgba(255, 170, 84, .42);--fleck-core: rgba(255, 160, 70, .5);--fleck-blend: multiply;--fleck-glow-size: 130px;--fleck-disc-size: 30px;position:fixed;top:0;left:0;z-index:1000;width:0;height:0;pointer-events:none;mix-blend-mode:var(--fleck-blend);opacity:0;transition:opacity .2s ease;will-change:transform}.sun-fleck[data-visible]{opacity:1}:root[data-theme=dark] .sun-fleck{--fleck-glow: rgba(255, 222, 170, .2);--fleck-core: rgba(255, 226, 180, .34);--fleck-blend: screen}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .sun-fleck{--fleck-glow: rgba(255, 222, 170, .2);--fleck-core: rgba(255, 226, 180, .34);--fleck-blend: screen}}.sun-fleck__glow{position:absolute;top:calc(var(--fleck-glow-size) / -2);left:calc(var(--fleck-glow-size) / -2);width:var(--fleck-glow-size);height:var(--fleck-glow-size);border-radius:50%;background:radial-gradient(closest-side,var(--fleck-glow),transparent);transition:transform .5s cubic-bezier(.25,1,.5,1),opacity .35s ease}[data-hover]>.sun-fleck__glow{transform:scale(.55);opacity:.55}.sun-fleck__disc{position:absolute;top:calc(var(--fleck-disc-size) / -2);left:calc(var(--fleck-disc-size) / -2);width:var(--fleck-disc-size);height:var(--fleck-disc-size);border-radius:50%;background:var(--fleck-core);filter:blur(1.2px);opacity:0;transform:scale(.35);transition:transform .4s cubic-bezier(.34,1.4,.64,1),opacity .25s ease}[data-hover]>.sun-fleck__disc{opacity:1;transform:scale(1)}[data-down]>.sun-fleck__disc{transform:scale(.82)}@media(prefers-reduced-motion:reduce){.sun-fleck,.sun-fleck__glow,.sun-fleck__disc{transition-duration:.01ms}}.toggle-group{display:inline-flex;align-items:center;gap:2px;padding:2px;background-color:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.toggle-group__option{display:flex;align-items:center;justify-content:center;gap:var(--spacing-xs);min-width:28px;height:24px;padding:0 var(--spacing-xs);color:var(--color-text-muted);background:transparent;border:none;border-radius:3px;cursor:pointer;transition:color .15s ease,background-color .15s ease}.toggle-group__option:hover{color:var(--color-text)}.toggle-group__option--active{color:var(--color-text);background-color:var(--color-bg);box-shadow:var(--shadow-sm)}:root{--color-theme-orange: #ea7a2a;--color-theme-blue: #479ae7;--color-primary: #171717;--color-primary-hover: #404040;--color-secondary: #525252;--color-secondary-hover: #737373;--color-neutral-50: #fafafa;--color-neutral-100: #f5f5f5;--color-neutral-200: #e5e5e5;--color-neutral-300: #d4d4d4;--color-neutral-400: #a3a3a3;--color-neutral-500: #737373;--color-neutral-600: #525252;--color-neutral-700: #404040;--color-neutral-800: #262626;--color-neutral-900: #171717;--color-success: #15803d;--color-success-bg: #dcfce7;--color-error: #b91c1c;--color-error-bg: #fee2e2;--color-warning: #d27f0b;--color-warning-bg: #fef9c3;--color-bg: #ffffff;--color-bg-subtle: #fafafa;--color-text: #171717;--color-text-muted: #737373;--color-border: #e5e5e5;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 0px 8px -1px rgba(0, 0, 0, .1), 0 0px 8px 0 rgba(0, 0, 0, .05);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1)}:root[data-theme=dark]{--color-primary: #fafafa;--color-primary-hover: #e5e5e5;--color-secondary: #a3a3a3;--color-secondary-hover: #d4d4d4;--color-neutral-50: #1f1e1c;--color-neutral-100: #2b2a28;--color-neutral-200: #404040;--color-neutral-300: #525252;--color-neutral-400: #737373;--color-neutral-500: #a3a3a3;--color-neutral-600: #d4d4d4;--color-neutral-700: #e5e5e5;--color-neutral-800: #f5f5f5;--color-neutral-900: #fafafa;--color-success: #4ade80;--color-success-bg: #14532d;--color-error: #f87171;--color-error-bg: #450a0a;--color-warning: #facc15;--color-warning-bg: #422006;--color-bg: #151412;--color-bg-subtle: #1f1e1c;--color-text: #fafafa;--color-text-muted: #a3a3a3;--color-border: #262626;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 0px 8px -1px rgba(0, 0, 0, .4), 0 0px 8px 0 rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5), 0 4px 6px -4px rgba(0, 0, 0, .4)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--color-primary: #fafafa;--color-primary-hover: #e5e5e5;--color-secondary: #a3a3a3;--color-secondary-hover: #d4d4d4;--color-neutral-50: #1f1e1c;--color-neutral-100: #2b2a28;--color-neutral-200: #404040;--color-neutral-300: #525252;--color-neutral-400: #737373;--color-neutral-500: #a3a3a3;--color-neutral-600: #d4d4d4;--color-neutral-700: #e5e5e5;--color-neutral-800: #f5f5f5;--color-neutral-900: #fafafa;--color-success: #4ade80;--color-success-bg: #14532d;--color-error: #f87171;--color-error-bg: #450a0a;--color-warning: #facc15;--color-warning-bg: #422006;--color-bg: #151412;--color-bg-subtle: #1f1e1c;--color-text: #fafafa;--color-text-muted: #b6b6b6;--color-border: #262626;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 0px 8px -1px rgba(0, 0, 0, .4), 0 0px 8px 0 rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5), 0 4px 6px -4px rgba(0, 0, 0, .4)}}@font-face{font-family:Geist;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/Geist-Variable-CrgPqtmy.woff2) format("woff2-variations")}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/GeistMono-Variable-BNLlm6Cd.woff2) format("woff2-variations")}:root{--font-family: "Geist", system-ui, -apple-system, sans-serif;--font-family-serif: "Castoro", Georgia, serif;--font-family-mono: "Geist Mono", ui-monospace, "Cascadia Mono", monospace;--font-family-script: "Caveat", "Brush Script MT", cursive;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-md: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--font-size-4xl: 2.5rem;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}.home-page{--home-glass: color-mix(in srgb, var(--color-bg) 55%, transparent);--home-glass-strong: color-mix(in srgb, var(--color-bg) 78%, transparent);--home-glass-border: color-mix(in srgb, var(--color-text) 8%, transparent);--home-frost-tint: rgba(250, 248, 244, .42);--home-frost-tint-hover: rgba(252, 251, 248, .62);--home-frost-highlight: rgba(255, 255, 255, .55);--home-frost-shadow: 0 8px 20px -10px rgba(60, 48, 36, .25);--home-frost-tint-active: rgba(255, 254, 251, .82);--home-frost-shadow-active: 0 10px 24px -10px rgba(60, 48, 36, .35);--home-frost-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' seed='4' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.5 0 0 0 0 0.48 0 0 0 0 0.45 0 0 0 0.1 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E");--home-tab-tint: rgba(236, 236, 236, .72);--home-tab-tint-hover: rgba(228, 228, 228, .82);--home-tab-tint-active: rgba(255, 255, 255, .96);--home-tab-shadow: 0 4px 12px -8px rgba(30, 30, 30, .14);--home-tab-shadow-active: 0 1px 4px rgba(30, 30, 30, .06), 0 8px 18px -10px rgba(30, 30, 30, .22);--home-paper: #fffefc;--home-paper-edge: #fbf8f3;--home-paper-rule: rgba(60, 48, 36, .1);--home-curl-light: #ffffff;--home-curl-shade: #eeeae3;--home-curl-cast: #281f14;--home-info-width: clamp(200px, 20vw, 264px);--home-stage-gap: var(--spacing-xl);--home-notebook-width: min(800px, calc((100dvh - 196px) * 16 / 9 + 48px));--home-stage-width: calc( var(--home-info-width) + var(--home-stage-gap) + var(--home-notebook-width) );--home-about-width: 360px;position:relative;min-height:100vh;min-height:100dvh;height:100vh;height:100dvh;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:minmax(0,1fr);grid-template-areas:"stage tabs";overflow:hidden;animation:page-enter .45s cubic-bezier(.25,1,.5,1) both}:root[data-theme=dark] .home-page{--home-paper: #25221f;--home-paper-edge: #1d1b18;--home-paper-rule: rgba(255, 245, 230, .08);--home-curl-light: #45403a;--home-curl-shade: #1a1816;--home-curl-cast: #000000;--home-tab-tint: rgba(38, 35, 32, .6);--home-tab-tint-hover: rgba(50, 47, 43, .72);--home-tab-tint-active: rgba(84, 79, 72, .82);--home-tab-shadow: 0 4px 10px -8px rgba(0, 0, 0, .6);--home-tab-shadow-active: 0 6px 14px -10px rgba(0, 0, 0, .7);--home-frost-tint: rgba(30, 28, 26, .45);--home-frost-tint-hover: rgba(44, 41, 37, .6);--home-frost-highlight: rgba(255, 245, 230, .1);--home-frost-shadow: 0 8px 20px -10px rgba(0, 0, 0, .7);--home-frost-tint-active: rgba(78, 73, 67, .72);--home-frost-shadow-active: 0 10px 24px -10px rgba(0, 0, 0, .8)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .home-page{--home-paper: #25221f;--home-paper-edge: #1d1b18;--home-paper-rule: rgba(255, 245, 230, .08);--home-curl-light: #45403a;--home-curl-shade: #1a1816;--home-curl-cast: #000000;--home-tab-tint: rgba(38, 35, 32, .6);--home-tab-tint-hover: rgba(50, 47, 43, .72);--home-tab-tint-active: rgba(84, 79, 72, .82);--home-tab-shadow: 0 4px 10px -8px rgba(0, 0, 0, .6);--home-tab-shadow-active: 0 6px 14px -10px rgba(0, 0, 0, .7);--home-frost-tint: rgba(30, 28, 26, .45);--home-frost-tint-hover: rgba(44, 41, 37, .6);--home-frost-highlight: rgba(255, 245, 230, .1);--home-frost-shadow: 0 8px 20px -10px rgba(0, 0, 0, .7);--home-frost-tint-active: rgba(78, 73, 67, .72);--home-frost-shadow-active: 0 10px 24px -10px rgba(0, 0, 0, .8)}}.home-page{cursor:var(--home-cursor, auto)}.home-page :is(a[href],button:not(:disabled),[role=button],[role=tab],summary,select,label,input[type=checkbox],input[type=radio],input[type=button],input[type=submit]){cursor:var(--home-cursor-link, pointer)}.home-page__toolbar{position:absolute;top:var(--spacing-lg);right:var(--spacing-lg);z-index:10;display:flex;align-items:center;gap:var(--spacing-sm)}.home-page__stage{grid-area:stage;position:relative;z-index:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:var(--spacing-2xl) var(--spacing-lg)}.home-page__about{position:relative;width:100%;max-width:var(--home-about-width);margin-inline:max(0px,(100% - var(--home-stage-width)) / 2) auto;animation:home-fade-up .6s cubic-bezier(.25,1,.5,1) both}.home-page__about .hero{gap:var(--spacing-xl)}.home-page__about .hero__name{font-size:clamp(2rem,4.5vw,2.75rem);letter-spacing:-.01em}.home-page__about .hero__tagline{color:var(--color-text);opacity:.72}.home-page__about .hero__social-link{font-family:var(--font-family-mono);font-style:normal;font-size:12px;color:var(--color-text);opacity:.6;transition:opacity .2s ease}.home-page__about .hero__social-link:hover{opacity:1}.home-page__about .copy-email__label{font:inherit;color:inherit}.home-page__about:before{content:"";position:absolute;inset:-12% -18%;z-index:-1;background:radial-gradient(closest-side,color-mix(in srgb,var(--color-bg) 45%,transparent),transparent);pointer-events:none}.home-page__clock{position:absolute;top:4vh;left:max(var(--spacing-lg),(100% - var(--home-stage-width)) / 2);z-index:3;pointer-events:none}.home-page__clock .digital-clock{align-items:flex-start}.home-page__about-nudge{font-family:var(--font-family-mono);font-style:normal;position:absolute;bottom:calc(100% + var(--spacing-sm));left:calc(var(--spacing-sm) + var(--spacing-md));z-index:3;margin:0;display:flex;align-items:center;gap:var(--spacing-xs);font-size:11px;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;color:var(--color-text-muted);pointer-events:none}.home-page__about-nudge-arrow{display:inline-block;animation:home-nudge 2.4s ease-in-out infinite}.home-page__toolbar .toggle-group{position:relative;background-color:var(--home-frost-tint);background-image:var(--home-frost-grain);background-size:160px 160px;border:none;box-shadow:inset 0 1px 0 var(--home-frost-highlight),var(--home-frost-shadow);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);transition:background-color .2s cubic-bezier(.25,1,.5,1),transform .15s ease-out}@media(hover:hover){.home-page__toolbar .toggle-group:hover:not(:disabled){background-color:var(--home-frost-tint-hover)}}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.home-page__toolbar .toggle-group{background-color:var(--home-frost-tint-hover)}}.home-page__toolbar .toggle-group{gap:2px;padding:3px;border-radius:999px}.home-page__toolbar .toggle-group:hover:not(:disabled){background-color:var(--home-frost-tint)}.home-page__toolbar .toggle-group__option{position:relative;min-width:30px;height:26px;border-radius:999px;color:var(--color-text-muted);-webkit-tap-highlight-color:transparent;transition:color .2s cubic-bezier(.25,1,.5,1),background-color .2s cubic-bezier(.25,1,.5,1),box-shadow .2s cubic-bezier(.25,1,.5,1),transform .15s ease-out}.home-page__toolbar .toggle-group__option:before{content:"";position:absolute;inset:-9px -1px}.home-page__toolbar .toggle-group__option:first-child:before{left:-12px}.home-page__toolbar .toggle-group__option:last-child:before{right:-12px}@media(hover:hover){.home-page__toolbar .toggle-group__option:hover{color:var(--color-text);background-color:var(--home-frost-tint-hover)}}.home-page__toolbar .toggle-group__option:active{transform:scale(.96)}.home-page__toolbar .toggle-group__option:focus-visible{outline:2px solid var(--color-text);outline-offset:1px}.home-page__toolbar .toggle-group__option--active,.home-page__toolbar .toggle-group__option--active:hover{color:var(--color-text);background-color:var(--home-frost-tint-active);box-shadow:inset 0 1px 0 var(--home-frost-highlight),var(--home-frost-shadow-active)}.home-page .home-stage__sheet{border:1px solid var(--home-glass-border);box-shadow:0 30px 60px -30px #28201459,0 12px 24px -12px #2820142e}.home-page__tabs{grid-area:tabs;align-self:center;position:relative;z-index:2}.home-page__tabs .project-tabs__tab,.home-page__tabs .project-tabs__nav{position:relative;background-color:var(--home-frost-tint);background-image:var(--home-frost-grain);background-size:160px 160px;border:none;box-shadow:inset 0 1px 0 var(--home-frost-highlight),var(--home-frost-shadow);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);transition:background-color .2s cubic-bezier(.25,1,.5,1),transform .15s ease-out}@media(hover:hover){.home-page__tabs .project-tabs__tab:hover:not(:disabled),.home-page__tabs .project-tabs__nav:hover:not(:disabled){background-color:var(--home-frost-tint-hover)}}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.home-page__tabs .project-tabs__tab,.home-page__tabs .project-tabs__nav{background-color:var(--home-frost-tint-hover)}}.home-page__tabs .project-tabs__tab,.home-page__tabs .project-tabs__nav{background-color:var(--home-tab-tint);box-shadow:inset 0 1px 0 var(--home-frost-highlight),var(--home-tab-shadow)}@media(hover:hover){.home-page__tabs .project-tabs__tab:hover:not(:disabled),.home-page__tabs .project-tabs__nav:hover:not(:disabled){background-color:var(--home-tab-tint-hover)}}.home-page__tabs .project-tabs__tab--active,.home-page__tabs .project-tabs__tab--active:hover:not(:disabled){background-color:var(--home-tab-tint-active);color:var(--color-text);box-shadow:inset 0 1px 0 var(--home-frost-highlight),var(--home-tab-shadow-active)}.home-page__tabs .project-tabs__meta{font-family:var(--font-family-mono);font-style:normal;font-size:10px}@media(min-width:769px)and (max-width:960px)and (min-height:1000px){.home-page{--home-stage-width: 720px}}@media(max-width:768px){.home-page{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"stage" "tabs"}.home-page__tabs{align-self:end}.home-page__toolbar{top:var(--spacing-md);right:var(--spacing-md)}.home-page__stage{padding:72px var(--spacing-md) var(--spacing-md);align-items:flex-start;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.home-page__about{padding-top:96px;margin-block:auto;margin-inline:0 auto}.home-page__clock{top:72px;left:var(--spacing-md)}.home-page__about-nudge{bottom:calc(100% + var(--spacing-md));left:50%;transform:translate(-50%)}}@media(max-width:768px)and (max-height:700px){.home-page__about-nudge{display:none}}@keyframes home-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes home-nudge{0%,to{transform:translateY(0)}50%{transform:translateY(3px)}}@media(prefers-reduced-motion:reduce){.home-page__about,.home-page__about-nudge-arrow{animation:none}}
