.theme-crossfade,.theme-crossfade *,.theme-crossfade :before,.theme-crossfade :after{transition:background-color .42s,border-color .42s,outline-color .42s,box-shadow .42s,color .42s,fill .42s,stroke .42s,transform .42s cubic-bezier(.4,0,.2,1),opacity .3s!important}.theme-toggle{border:1px solid rgb(var(--fg-rgb) / .18);background:rgb(var(--fg-rgb) / .03);width:2.2rem;height:2.2rem;color:var(--fg-muted);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:999px;flex:none;justify-content:center;align-items:center;padding:0;transition:color .25s,border-color .25s,background-color .25s,transform .25s;display:inline-flex}.theme-toggle:hover,.theme-toggle:focus-visible{color:var(--fg);border-color:rgb(var(--fg-rgb) / .4);background:rgb(var(--fg-rgb) / .08);transform:translateY(-2px)}.theme-toggle:focus-visible{outline:none}.theme-toggle:active{transform:translateY(0)scale(.94)}.theme-icon{width:1.05rem;height:1.05rem;overflow:visible}.theme-icon-orb,.theme-icon-bite,.theme-icon-rays{transform-origin:50%;transform-box:fill-box;transition:transform .5s cubic-bezier(.4,0,.2,1)}.theme-icon-bite{transform:translate(0)}.theme-icon-rays{opacity:0;transition:transform .5s cubic-bezier(.4,0,.2,1),opacity .25s;transform:scale(.4)rotate(-45deg)}[data-theme=light] .theme-icon-orb{transform:scale(.72)}[data-theme=light] .theme-icon-bite{transform:translate(16px,-16px)}[data-theme=light] .theme-icon-rays{opacity:1;transition:transform .5s cubic-bezier(.4,0,.2,1),opacity .3s .15s;transform:scale(1)rotate(0)}@media (width<=640px){.header-actions,.site-links{gap:1rem}}@media (prefers-reduced-motion:reduce){.theme-crossfade,.theme-crossfade *,.theme-crossfade :before,.theme-crossfade :after{transition-duration:.01ms!important}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-rgb:10 10 10;--fg-rgb:232 228 223;--shadow:0 8px 32px #0006;--bg:rgb(var(--bg-rgb));--fg:rgb(var(--fg-rgb));--fg-muted:rgb(var(--fg-rgb) / .4);--accent:var(--fg);--font-display:"Newsreader", serif;--fs-xs:clamp(.78rem, .72rem + .3vw, .9rem);--fs-sm:clamp(.85rem, .78rem + .35vw, 1rem);--fs-base:clamp(1rem, .9rem + .5vw, 1.15rem);--fs-lg:clamp(1.1rem, .95rem + .75vw, 1.4rem);--fs-display:clamp(2rem, 1.3rem + 3.5vw, 3.2rem)}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-rgb:232 228 223;--fg-rgb:10 10 10;--shadow:0 8px 32px #00000026}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}html,body,#root{height:100%}body{background:var(--bg);color:var(--fg);font-family:var(--font-display)}#root{flex-direction:column;display:flex}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}main{flex-direction:column;min-height:100dvh;padding:3rem 3.5rem;display:flex}header{animation:.8s both fade-in}.header-row{justify-content:space-between;align-items:flex-start;gap:1.5rem;display:flex}.header-actions,.site-links{align-items:center;gap:1.5rem;display:flex}.site-links a{font-family:var(--font-display);font-size:var(--fs-base);letter-spacing:-.01em;color:var(--fg-muted);padding-bottom:.3rem;font-style:italic;text-decoration:none;transition:color .25s;position:relative}.site-links a:after{content:"";background:var(--fg);height:1px;transition:right .3s cubic-bezier(.4,0,.2,1);position:absolute;bottom:0;left:0;right:100%}.site-links a:hover,.site-links a:focus-visible{color:var(--fg)}.site-links a:hover:after,.site-links a:focus-visible:after{right:0}.site-links a:focus-visible{outline:none}.site-link-arrow{vertical-align:-.08em;width:.85em;height:.85em;margin-left:.2em;transition:transform .25s;display:inline-block}.site-links a:hover .site-link-arrow,.site-links a:focus-visible .site-link-arrow{transform:translate(2px,-2px)}.social-links{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.55rem;display:flex}.social-links a{border:1px solid rgb(var(--fg-rgb) / .18);width:2.6rem;height:2.6rem;color:var(--fg-muted);background:rgb(var(--fg-rgb) / .03);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:999px;justify-content:center;align-items:center;text-decoration:none;transition:color .25s,border-color .25s,background-color .25s,transform .25s;display:inline-flex}.social-links a:hover,.social-links a:focus-visible{color:var(--fg);border-color:rgb(var(--fg-rgb) / .4);background:rgb(var(--fg-rgb) / .08);transform:translateY(-2px)}.social-links a:focus-visible{outline:none}.social-links svg{width:1.15rem;height:1.15rem}.logo-link{color:inherit;text-decoration:none}.logo{font-family:var(--font-display);font-size:var(--fs-display);letter-spacing:-.03em;color:var(--fg);margin-bottom:.35em;font-style:italic;font-weight:400;line-height:1}.tagline{font-family:var(--font-display);font-size:var(--fs-sm);color:var(--fg-muted);font-weight:400;line-height:1}.oss-word{cursor:default}.oss-f,.oss-o,.oss-s1,.oss-s2{color:var(--fg)}.oss-ree,.oss-pen,.oss-ource,.oss-oftware,.oss-and{color:var(--fg-muted);white-space:nowrap;vertical-align:middle;max-width:0;transition:max-width .7s cubic-bezier(.4,0,.6,1);display:inline-block;overflow:hidden}.oss-gap{width:0;transition:width .7s cubic-bezier(.4,0,.6,1);display:inline-block}.oss-dash{max-width:0;color:var(--fg-muted);white-space:nowrap;vertical-align:middle;transition:max-width .7s cubic-bezier(.4,0,.6,1);display:inline-block;overflow:hidden}.oss-word:hover .oss-ree,.oss-word:hover .oss-and{max-width:3ch;transition:max-width .75s cubic-bezier(.25,0,.1,1) 50ms}.oss-word:hover .oss-pen{max-width:4ch;transition:max-width .75s cubic-bezier(.25,0,.1,1) 50ms}.oss-word:hover .oss-gap{width:.35em;transition:width .75s cubic-bezier(.25,0,.1,1) 50ms}.oss-word:hover .oss-dash{max-width:1ch;transition:max-width .75s cubic-bezier(.25,0,.1,1) 50ms}.oss-word:hover .oss-ource{max-width:6ch;transition:max-width .75s cubic-bezier(.25,0,.1,1) 50ms}.oss-word:hover .oss-oftware{max-width:8ch;transition:max-width .75s cubic-bezier(.25,0,.1,1) 50ms}.projects,.contact-content{margin-top:4rem;animation:.8s .3s both fade-in}.contact-text{font-family:var(--font-display);font-size:var(--fs-lg);letter-spacing:-.01em;color:var(--fg-muted);font-style:italic}.site-footer{justify-content:space-between;align-items:center;gap:1.5rem;margin-top:auto;padding-top:3rem;animation:.8s .45s both fade-in;display:flex}.site-footer .copyright{font-family:var(--font-display);font-size:var(--fs-xs);letter-spacing:-.02em;color:var(--fg-muted);font-style:italic}.projects ul{list-style:none}.projects li{margin-bottom:.6rem}.project-row{font-family:var(--font-display);font-size:var(--fs-base);color:var(--fg-muted);display:inline-block;position:relative}.project-row a{color:inherit;cursor:pointer;text-decoration:none;transition:color .25s}.project-row a:hover,.project-row a:focus-visible,.project-row.is-hovered a{color:var(--fg)}.project-row .locked{cursor:default;transition:color .25s}.project-row.is-hovered .locked{color:var(--fg)}.glyph{position:relative}.scrambled .glyph{display:inline-block}.glyph-real{visibility:hidden}.glyph:after{content:attr(data-g);white-space:pre;position:absolute;top:0;left:50%;transform:translate(-50%)}.project-row .name{font-size:inherit;font-weight:inherit;padding-bottom:2px;display:inline-block;position:relative}.project-row .name:after{content:"";width:var(--underline-width,0%);background:var(--fg);height:1px;position:absolute;bottom:0;left:0}.project-row .arrow{vertical-align:-.08em;width:.85em;height:.85em;margin-left:.25em;transition:transform .25s;display:inline-block}.project-row a:hover .arrow,.project-row a:focus-visible .arrow,.project-row.is-hovered .arrow{transform:translate(2px,-2px)}.project-row .number{color:var(--fg-muted);margin-right:.5em;font-style:normal;display:inline-block}.project-row .detail{white-space:nowrap;letter-spacing:-.03em;pointer-events:none;font-style:italic;display:inline}.project-row .detail .char{opacity:0;transition:opacity .35s ease var(--out), transform .35s ease var(--out);display:inline-block;transform:translateY(6px)}.project-row.is-hovered .detail .char{opacity:1;transition:opacity .35s ease var(--in), transform .35s ease var(--in);transform:translateY(0)}.project-row .preview{opacity:0;pointer-events:none;width:320px;height:200px;box-shadow:var(--shadow);border:1px solid rgb(var(--fg-rgb) / .12);z-index:100;border-radius:8px;margin-top:.75rem;transition:opacity .3s,transform .3s;position:absolute;top:100%;left:0;overflow:hidden;transform:translateY(8px)}.project-row .preview iframe{transform-origin:0 0;pointer-events:none;border:none;width:1280px;height:800px;transform:scale(.25)}.project-row a:hover~.preview,.project-row a:focus-visible~.preview{opacity:1;transform:translateY(0)}@media (width<=640px){main{padding:2rem 1.25rem 2.5rem}.header-row{flex-direction:column;align-items:flex-start}.projects,.contact-content{margin-top:2.5rem}.site-footer{flex-direction:column;align-items:flex-start;gap:1.25rem}.social-links{justify-content:flex-start}}@keyframes fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
