@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.BZdD_g9V.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.b6lpi8_2.woff2) format("woff2-variations");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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.Cjtb1TV-.woff2) format("woff2-variations");unicode-range:U+0000-00FF,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}:root{color-scheme:dark;--bg: #0A0A0A;--fg: rgba(255, 255, 255, .7);--heading: #ffffff;--muted: #707070;--more-muted: #353535;--rule: #222;--row-hover: rgba(255, 255, 255, .04);--link: #ffffff;--link-hover: #ffffff;--max-width: 640px;--ease: cubic-bezier(.32, .72, 0, 1);--font-sans: "InterVariable", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: "Geist Mono Variable", "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;interpolate-size:allow-keywords}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-sans);font-size:14px;line-height:1.5em;letter-spacing:-.01em;font-feature-settings:"kern","ss01","zero";font-variant-numeric:slashed-zero;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{max-width:var(--max-width);margin:0 auto;padding:5rem 1.5rem 6rem}@media(max-width:480px){main{padding-top:3rem}}h1,h2,h3{font-size:14px;font-weight:500;color:var(--muted);letter-spacing:0;line-height:1.4}header h1{color:#fff}.hero-gallery{display:grid;grid-template-areas:"stack";border-radius:8px;overflow:hidden;margin:24px 0}.hero-image{grid-area:stack;display:block;width:100%;height:auto;opacity:0;transition:opacity .5s ease-in-out;pointer-events:none}.hero-image.is-active.loaded{opacity:1}h1{margin:0 0 .25rem;display:inline}h2{margin:40px 0 16px}p{margin:0 0 1rem;font-weight:350}p:last-child{margin-bottom:0}.tagline{color:var(--muted);margin-left:.5em;font-weight:400;display:inline}h1{margin:0 0 2.25rem}#projects-heading{margin-left:8px}section{margin-top:24px}section.about,section.elsewhere{margin:0 8px 1em}section.elsewhere{margin:0 8px 1em}hr{border:0;border-top:1px solid var(--rule);margin:3.5rem 0 0}.footer{margin-top:32px;color:var(--muted);font-size:12px;align-items:baseline;gap:.5em;text-align:center}.clock-time{display:inline-flex;align-items:baseline;gap:1px;margin-right:2px;font-variant-numeric:slashed-zero tabular-nums;font-feature-settings:"zero","ss02";font-size:12px;letter-spacing:.04em}.clock-digits{display:inline-flex;align-items:baseline}.clock-colon{display:inline-block;padding:0 .05em;animation:clock-blink 1s steps(2,jump-none) infinite}@keyframes clock-blink{50%{opacity:.3}}.clock-sec{display:inline-flex}.digit-window{display:inline-block;height:1em;line-height:1em;overflow:hidden;vertical-align:top}.digit-strip{display:inline-flex;flex-direction:column;transform:translateY(0);transition:transform .36s cubic-bezier(.32,.72,0,1);will-change:transform}.digit-strip>span{display:block;height:1em;line-height:1em}.clock-ampm{font-size:.75em;letter-spacing:.08em;opacity:.85}a{color:var(--link);text-decoration:none}a .link-text{background-image:linear-gradient(currentColor,currentColor);background-position:0 calc(100% - .05em);background-repeat:no-repeat;background-size:0 1px;transition:background-size .32s var(--ease)}a:hover .link-text,a:focus-visible .link-text{background-size:100% 1px}a:focus-visible{outline:2px solid rgba(255,255,255,.4);outline-offset:3px;border-radius:2px}.arrow{display:inline-block;margin-left:.1em;font-size:.8em;vertical-align:.05em;transition:transform .16s ease}a:hover .arrow,a:focus-visible .arrow{transform:translate(.1em,-.1em)}ul.contact{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:0 .6em}ul.contact li{margin:0;display:flex;align-items:baseline;gap:.6em}.contact li a{color:var(--fg)}ul.contact li:not(:last-child):after{content:"·";color:var(--muted);opacity:.5}@media(max-width:480px){ul.contact{flex-direction:column;gap:.4em 0}ul.contact li:not(:last-child):after{content:none}}ul.projects{list-style:none;padding:0;margin:0}.projects-wrap{position:relative;isolation:isolate}ul.projects{position:relative;z-index:1}.row-highlight{position:absolute;inset:0 auto auto 0;width:0;height:0;pointer-events:none;background:var(--row-hover);border-radius:4px;opacity:0;z-index:0;transform:translate(0);transition:transform .24s var(--ease),width .24s var(--ease),height .24s var(--ease),opacity .18s ease}.row-highlight[data-visible=true]{opacity:1}.project{border-top:1px solid var(--rule)}ul.projects>li:last-child .project{border-bottom:1px solid var(--rule)}ul.projects>li{transition:opacity .28s ease}ul.projects:has(details.project[open])>li:not(:has(details.project[open])){opacity:.4}ul.projects:has(details.project[open])>li:not(:has(details.project[open])):hover{opacity:.75}ul.projects:has(details.project[open])>li:has(details.project[open])>.project{border-bottom:1px solid var(--rule)}ul.projects:has(details.project[open])>li:has(details.project[open])+li>.project{border-top:none}.project>summary,li.project{padding:12px 8px;border-radius:4px}.project-summary{display:flex;align-items:baseline;gap:.6em;min-width:0}.project-title{flex:0 0 auto;font-weight:500;color:var(--heading);white-space:nowrap}.project-description{flex:1 1 auto;min-width:0;margin:0;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.marker{flex:0 0 auto;margin-left:auto;display:inline-grid;place-items:center;width:12px;height:12px;color:#ffffff40;transform-origin:center;transition:transform .32s var(--ease),color .2s ease}.marker svg{display:block;width:100%;height:100%}details.project[open]>summary .marker{transform:rotate(45deg);color:var(--fg)}.project-meta{margin:1.5rem 0 0;color:var(--muted);display:flex;align-items:baseline;justify-content:flex-start;gap:.6em;font-size:12px}.project-meta .dot{color:var(--muted);opacity:.5}.project-meta a{color:var(--muted);transition:color .18s ease}.project-meta a .link-text{background-size:100% 1px}.project-meta a:hover,.project-meta a:focus-visible{color:var(--fg)}details>summary{list-style:none;cursor:pointer}details>summary::-webkit-details-marker{display:none}details.project>summary{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24'><path d='M12 5v14M5 12h14' stroke='black' stroke-opacity='0.5' stroke-width='3' stroke-linecap='round'/><path d='M12 5v14M5 12h14' stroke='white' stroke-width='1.4' stroke-linecap='round'/></svg>") 12 12,pointer}details.project[open]>summary{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24'><path d='M6.5 6.5l11 11M17.5 6.5l-11 11' stroke='black' stroke-opacity='0.5' stroke-width='3' stroke-linecap='round'/><path d='M6.5 6.5l11 11M17.5 6.5l-11 11' stroke='white' stroke-width='1.4' stroke-linecap='round'/></svg>") 12 12,pointer}html.fake-cursor-active details.project>summary,html.fake-cursor-active details.project>summary *,html.fake-cursor-active details.project[open] .project-details,html.fake-cursor-active details.project[open] .project-details *{cursor:none}html.fake-cursor-active details.project[open] .project-details a,html.fake-cursor-active details.project[open] .project-details a *{cursor:pointer}.cursor-glyph{position:fixed;top:0;left:0;width:20px;height:20px;pointer-events:none;z-index:9999;color:#fff;opacity:0;transform:translate3d(-100px,-100px,0);will-change:transform;filter:drop-shadow(0 0 1.5px rgba(0,0,0,.45));transition:opacity .14s ease}.cursor-glyph[data-active=true]{opacity:1}.cursor-glyph svg{display:block;width:100%;height:100%;transform:rotate(0);transform-origin:center;transition:transform .28s var(--ease)}.cursor-glyph[data-rotated=true] svg{transform:rotate(45deg)}details.project::details-content{block-size:0;overflow:clip;opacity:0;contain:paint;transition:block-size .36s var(--ease),opacity .22s ease,content-visibility .36s allow-discrete}details.project[open]::details-content{block-size:auto;opacity:1}.project-details{color:var(--fg);padding:0 0 1rem;display:flow-root}.project-image{display:block;width:100%;height:auto;margin:8px 0 24px;border-radius:4px;background:#ffffff08}.project-details p{margin:0 8px 1rem}.project-details p:last-child{margin-bottom:0}.project-link{margin-top:.5rem}@keyframes page-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}main>*{animation:page-fade-up .6s var(--ease) both}main>*:nth-child(1){animation-delay:0ms}main>*:nth-child(2){animation-delay:90ms}main>*:nth-child(3){animation-delay:.18s}main>*:nth-child(4){animation-delay:.27s}main>*:nth-child(5){animation-delay:.36s}main>*:nth-child(6){animation-delay:.45s}main>*:nth-child(7){animation-delay:.54s}main>*:nth-child(8){animation-delay:.63s}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}
