@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/32687112bd2dd8db-s.1gepa_7fcx9fm.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:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/28868e710e86be81-s.2eksvhm1z0jwa.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.2cyn07wtgehh0.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:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_2a795aec-module__ktxwjW__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_2a795aec-module__ktxwjW__variable{--font-display:"Space Grotesk", "Space Grotesk Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/13bf9871fe164e7f-s.2f7nqdagzwx2-.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:100 800;font-display:swap;src:url(../media/cc545e633e20c56d-s.176arc174-8zp.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:100 800;font-display:swap;src:url(../media/71b036adf157cdcf-s.0bp8oijd_gu96.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:100 800;font-display:swap;src:url(../media/89b21bb081cb7469-s.1fby2rem9ngyr.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:100 800;font-display:swap;src:url(../media/3fe682a82f50d426-s.0vfdmo25voy_0.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.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_13fc341d-module__lMjmPq__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_13fc341d-module__lMjmPq__variable{--font-mono:"JetBrains Mono", "JetBrains Mono Fallback"}
:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#e9ecf3;--bg-raise:#dfe3ed;--fg:#0a1024;--muted:#4d556c;--faint:#7b8298;--line:#0a10241f;--accent:#5b47e0;--particle:#141a3d;--particle-accent:#5b47e0;--particle-hot:#2b2170;--veil:#e9ecf3d9;--toggle-bg:#f4f6fa;--toggle-fg:#0a1024;--toggle-border:#0a102424;--toggle-active-bg:#0a10240f;--font-sans:var(--font-display), system-ui, sans-serif;--font-code:var(--font-mono), ui-monospace, monospace;--gutter:clamp(16px, 4vw, 48px);--ease:cubic-bezier(.16, 1, .3, 1)}.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#050816;--bg-raise:#0b1022;--fg:#eef0f7;--muted:#9aa0b5;--faint:#626a82;--line:#eef0f71a;--accent:#a597ff;--particle:#e8eaff;--particle-accent:#9d8cff;--particle-hot:#fff;--veil:#050816e6;--toggle-bg:#0b1022;--toggle-fg:#eef0f7;--toggle-border:#eef0f724;--toggle-active-bg:#eef0f714}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:72px}body{background:var(--bg);color:var(--fg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;font-size:1.0625rem;line-height:1.6;transition:background-color .25s,color .25s;overflow-x:hidden}a{color:inherit;text-decoration:none}ul,ol{list-style:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:2px}::selection{background-color:var(--accent);color:var(--bg)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}.shell{width:100%;max-width:82rem;padding-inline:var(--gutter);margin-inline:auto}.skip-link{z-index:200;background:var(--fg);color:var(--bg);padding:8px 14px;position:fixed;top:8px;left:8px;transform:translateY(-200%)}.skip-link:focus{transform:none}.topbar{z-index:40;height:64px;padding-inline:var(--gutter);font-family:var(--font-code);color:var(--muted);background:color-mix(in srgb, var(--bg) 70%, transparent);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;font-size:.8125rem;display:flex;position:fixed;inset:0 0 auto}.brand{align-items:center;gap:14px;display:flex}.brand-mark{font-family:var(--font-sans);color:var(--fg);letter-spacing:-.04em;font-size:1.125rem;font-weight:700}.topbar-right{align-items:center;gap:20px;display:flex}.hero{isolation:isolate;align-items:center;min-height:100svh;display:flex;position:relative;overflow:hidden}.well{z-index:-2;width:100%;height:100%;animation:well-in 2.4s var(--ease) both;position:absolute;inset:0}.well-hole{z-index:2;cursor:pointer;-webkit-tap-highlight-color:transparent;width:0;height:0;position:absolute;top:0;left:0}.well-hole:focus-visible{outline:none}.well-frame{--c:var(--accent);--l:14px;background:linear-gradient(var(--c), var(--c)) top left / var(--l) 1px, linear-gradient(var(--c), var(--c)) top left / 1px var(--l), linear-gradient(var(--c), var(--c)) top right / var(--l) 1px, linear-gradient(var(--c), var(--c)) top right / 1px var(--l), linear-gradient(var(--c), var(--c)) bottom left / var(--l) 1px, linear-gradient(var(--c), var(--c)) bottom left / 1px var(--l), linear-gradient(var(--c), var(--c)) bottom right / var(--l) 1px, linear-gradient(var(--c), var(--c)) bottom right / 1px var(--l);opacity:.45;transition:opacity .4s ease, transform .5s var(--ease);background-repeat:no-repeat;position:absolute;inset:0;transform:scale(1.06)}.well-hint{white-space:nowrap;font-family:var(--font-code);letter-spacing:.14em;color:var(--accent);opacity:.6;font-size:.6875rem;transition:opacity .4s;position:absolute;top:calc(100% + 10px);left:50%;transform:translate(-50%)}.well-hint:before{content:"";background:var(--accent);vertical-align:1px;border-radius:50%;width:6px;height:6px;margin-right:8px;animation:1.4s ease-in-out infinite blink;display:inline-block}.well-hole:hover .well-frame,.well-hole:focus-visible .well-frame{opacity:1;transform:scale(1)}.well-hole:hover .well-hint,.well-hole:focus-visible .well-hint{opacity:1}.hero-veil{z-index:-1;pointer-events:none;background:radial-gradient(50% 50% at 62% 55%, color-mix(in srgb, var(--accent) 7%, transparent), transparent 70%), linear-gradient(to bottom, transparent 70%, var(--bg));position:absolute;inset:0}.hero-content{padding-top:96px;padding-bottom:64px}.hero-name{letter-spacing:-.035em;text-wrap:balance;font-size:clamp(2.6rem,7.4vw,6.25rem);font-weight:600;line-height:1}.hero-cursor{color:var(--accent);margin-left:.04em;font-weight:400;animation:1.05s step-end infinite blink;display:inline-block}.hero-ghost{color:#0000}.hero-role{font-family:var(--font-code);letter-spacing:.08em;color:var(--muted);margin-top:20px;font-size:.875rem}.hero-nav{gap:2px;width:fit-content;margin-top:clamp(40px,7vh,72px);display:grid}.hero-nav a{color:var(--muted);align-items:baseline;gap:18px;padding-block:2px;transition:color .3s;display:flex}.hero-nav-index{font-family:var(--font-code);color:var(--faint);font-size:.75rem;transition:color .3s}.hero-nav-label{letter-spacing:-.02em;transition:transform .4s var(--ease);font-size:clamp(1.75rem,3.6vw,2.75rem);font-weight:500;line-height:1.2}.hero-nav a:hover,.hero-nav a:focus-visible{color:var(--fg)}.hero-nav a:hover .hero-nav-index,.hero-nav a:focus-visible .hero-nav-index{color:var(--accent)}.hero-nav a:hover .hero-nav-label,.hero-nav a:focus-visible .hero-nav-label{transform:translate(10px)}.section{padding-block:clamp(80px,14vh,160px)}.section-head{border-bottom:1px solid var(--line);align-items:baseline;gap:18px;margin-bottom:clamp(40px,6vw,72px);padding-bottom:20px;display:flex}.section-index{font-family:var(--font-code);color:var(--accent);font-size:.75rem}.section-title{letter-spacing:-.02em;font-size:clamp(1.75rem,3.6vw,2.75rem);font-weight:500;line-height:1.2}.about{grid-template-columns:minmax(0,1fr) minmax(0,360px);align-items:start;gap:clamp(32px,6vw,96px);display:grid}.about-text{max-width:62ch;color:var(--muted);gap:24px;display:grid}.about-lead{letter-spacing:-.015em;color:var(--fg);font-size:clamp(1.375rem,2.4vw,1.875rem);line-height:1.35}.about-stack{font-family:var(--font-code);color:var(--muted);flex-wrap:wrap;gap:8px 24px;margin-top:8px;font-size:.8125rem;display:flex}.about-stack li:before{content:"/";color:var(--accent);margin-right:8px}.about-portrait{aspect-ratio:4/5;background:var(--bg-raise);border-radius:4px;position:relative;overflow:hidden}.projects{display:grid}.projects li+li .project{border-top:1px solid var(--line)}.project{text-align:left;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);align-items:center;gap:clamp(24px,5vw,72px);width:100%;padding-block:clamp(32px,5vw,56px);display:grid}.project-text{gap:10px;display:grid}.project-meta{font-family:var(--font-code);color:var(--faint);font-size:.75rem}.project-title{letter-spacing:-.035em;font-size:clamp(2.25rem,5vw,4rem);font-weight:600;line-height:1;transition:color .3s}.project-subtitle{color:var(--muted);font-size:1.125rem}.project-open{width:fit-content;font-family:var(--font-code);color:var(--fg);border-bottom:1px solid var(--line);margin-top:14px;padding-bottom:2px;font-size:.8125rem;transition:border-color .3s,color .3s}.project-shot{aspect-ratio:16/10;background:var(--bg-raise);border:1px solid var(--line);border-radius:4px;position:relative;overflow:hidden}.project-shot img{transition:transform .9s var(--ease)}.project:hover .project-title,.project:focus-visible .project-title{color:var(--accent)}.project:hover .project-open,.project:focus-visible .project-open{border-color:var(--accent)}.project:hover .project-shot img{transform:scale(1.03)}.contact-lead{max-width:46ch;color:var(--muted);font-size:1.125rem}.contact-mail{letter-spacing:-.035em;background:linear-gradient(var(--accent), var(--accent)) 0 100% / 0 2px no-repeat;transition:background-size .6s var(--ease), color .3s ease;margin-top:28px;font-size:clamp(1.4rem,2.6vw,2.25rem);font-weight:600;line-height:1.15;display:inline-block}.contact-mail:hover,.contact-mail:focus-visible{background-size:100% 2px}.contact-links{font-family:var(--font-code);color:var(--muted);flex-wrap:wrap;gap:12px 32px;margin-top:40px;font-size:.875rem;display:flex}.contact-links a{transition:color .3s}.contact-links a:hover,.contact-links a:focus-visible{color:var(--fg)}.contact-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:start;gap:clamp(40px,7vw,112px);display:grid}.contact-form{gap:22px;display:grid}.field{gap:8px;display:grid}.field label{font-family:var(--font-code);color:var(--muted);font-size:.8125rem}.field-optional{color:var(--faint)}.field input,.field textarea{width:100%;font:inherit;color:var(--fg);border:0;border-bottom:1px solid var(--line);resize:vertical;background:0 0;border-radius:0;padding:12px 0;font-size:1.125rem;transition:border-color .3s}.field textarea{min-height:7.5rem;line-height:1.5}.field input::placeholder,.field textarea::placeholder{color:var(--faint)}.field input:hover,.field textarea:hover{border-bottom-color:var(--muted)}.field input:focus,.field textarea:focus{border-bottom-color:var(--accent);outline:none}.field input:focus-visible,.field textarea:focus-visible{box-shadow:0 1px 0 0 var(--accent);outline:none}.contact-actions{flex-wrap:wrap;gap:12px;margin-top:8px;display:flex}.btn{border:1px solid var(--line);border-radius:999px;padding:12px 22px;font-weight:500;transition:border-color .3s,background-color .3s,color .3s}.btn:hover{border-color:var(--accent)}.btn-primary{background:var(--fg);color:var(--bg);border-color:var(--fg)}.btn-primary:hover{background:var(--accent);border-color:var(--accent);color:#fff}.contact-status{min-height:1.5em;font-family:var(--font-code);color:var(--accent);font-size:.8125rem}.footbar{padding:22px var(--gutter);border-top:1px solid var(--line);font-family:var(--font-code);color:var(--faint);justify-content:space-between;gap:16px;font-size:.75rem;display:flex}.footbar a:hover,.footbar a:focus-visible{color:var(--fg)}.modal-root{z-index:100;place-items:center;padding:clamp(12px,4vw,40px);display:grid;position:fixed;inset:0}.modal-backdrop{background:var(--veil);-webkit-backdrop-filter:blur(8px);position:absolute;inset:0}.modal{background:var(--bg-raise);border:1px solid var(--line);border-radius:6px;width:100%;max-width:56rem;max-height:100%;position:relative;overflow-y:auto}.modal-close{z-index:2;font-family:var(--font-code);color:var(--fg);background:color-mix(in srgb, var(--bg) 80%, transparent);border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:4px;padding:8px 14px;font-size:.8125rem;position:absolute;top:14px;right:14px}.modal-close:hover{border-color:var(--accent)}.modal-shot{aspect-ratio:16/7;border-bottom:1px solid var(--line);background:var(--bg);width:100%;max-height:38vh;position:relative}.modal-body{gap:14px;padding:clamp(24px,5vw,48px);display:grid}.modal-meta{font-family:var(--font-code);color:var(--accent);font-size:.75rem}.modal-title{letter-spacing:-.035em;font-size:clamp(2rem,5vw,3.25rem);font-weight:600;line-height:1}.modal-subtitle{color:var(--fg);font-size:1.125rem}.modal-desc{max-width:68ch;color:var(--muted)}.modal-links{flex-wrap:wrap;gap:12px 28px;margin-top:12px;display:flex}.modal-links a{border-bottom:1px solid var(--accent);padding-bottom:2px;font-weight:500}.modal-links a:hover{color:var(--accent)}@keyframes blink{50%{opacity:0}}@keyframes well-in{0%{opacity:0;transform:scale(.92)}}@media (max-width:768px){.topbar-role{display:none}.hero{align-items:flex-start}.hero-content{padding-top:120px}.about,.project,.contact-grid{grid-template-columns:minmax(0,1fr)}.about-portrait{max-width:360px}.project-shot{order:-1}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.lang-toggle{height:36px;font-family:var(--font-code);border:1px solid var(--toggle-border);background:var(--toggle-bg);border-radius:999px;align-items:center;gap:2px;padding:0 4px;font-size:.75rem;display:flex}.lang-toggle span{color:var(--faint);border-radius:999px;padding:4px 8px;transition:background-color .3s,color .3s}.lang-toggle span[data-on=true]{background:var(--toggle-active-bg);color:var(--fg)}.lang-toggle:hover{border-color:var(--accent)}.toggle-root{position:relative}.toggle{border:1px solid var(--toggle-border);background:var(--toggle-bg);width:36px;height:36px;color:var(--toggle-fg);border-radius:50%;place-items:center;display:grid;position:relative}.toggle:hover{border-color:var(--accent)}.toggle-icon{place-items:center;transition:transform .3s,opacity .3s;display:grid;position:absolute;inset:0}.toggle-icon[data-on=false]{opacity:0;transform:rotate(-90deg)scale(0)}.toggle-menu{border:1px solid var(--toggle-border);background:var(--toggle-bg);border-radius:8px;min-width:140px;padding:4px;display:grid;position:absolute;top:44px;right:0;box-shadow:0 16px 40px #00000040}.toggle-menu button{text-align:left;font-family:var(--font-sans);color:var(--toggle-fg);border-radius:6px;padding:8px 12px;font-size:.875rem}.toggle-menu button:hover{background:var(--toggle-active-bg)}.toggle-menu button[aria-checked=true]{background:var(--toggle-active-bg);font-weight:600}
