@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2c55a0e60120577a-s.03ez25a9g3i0n.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:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/9c72aa0f40e4eef8-s.3i9rha7jpxn0q.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/ad66f9afd8947f86-s.2o7ko1d-5m1xu.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5476f68d60460930-s.1ee5w62fj497l.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:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2bbe8d2671613f1f-s.1way2z9fj6cig.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:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/1bffadaabf893a1e-s.0szrwpqb9mkwe.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.45535valc9rzk.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:Inter Fallback;src:local(Arial);ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.0%;size-adjust:107.12%}.inter_c15e96cb-module__0bjUvq__className{font-family:Inter,Inter Fallback;font-style:normal}.inter_c15e96cb-module__0bjUvq__variable{--font-inter:"Inter", "Inter Fallback"}
@font-face{font-family:Instrument Serif;font-style:italic;font-weight:400;font-display:swap;src:url(../media/fc0a7394b875fa43-s.3zvkfbs08rnj_.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Serif;font-style:italic;font-weight:400;font-display:swap;src:url(../media/7ebf22b5a21034f8-s.p.3strvg7o-g5v2.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:Instrument Serif;font-style:normal;font-weight:400;font-display:swap;src:url(../media/ccf27e5a7366fb23-s.1wwzpfhzaj2r0.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Serif;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e41d5df559864f9e-s.p.2rlzm4mj5kw8e.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:Instrument Serif Fallback;src:local(Times New Roman);ascent-override:117.94%;descent-override:36.93%;line-gap-override:0.0%;size-adjust:83.94%}.instrument_serif_52824f12-module__z_izKq__className{font-family:Instrument Serif,Instrument Serif Fallback;font-weight:400}.instrument_serif_52824f12-module__z_izKq__variable{--font-serif:"Instrument Serif", "Instrument Serif Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/13bf9871fe164e7f-s.3bz3aq452sydg.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.2sb9jzhmrh7ny.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.343obqi851wr5.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.40kcwrf1wub16.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.200l3jur7oygh.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-20C0,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.269kn9uafm0ti.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_6104e6b7-module__s6uLTa__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_6104e6b7-module__s6uLTa__variable{--font-mono:"JetBrains Mono", "JetBrains Mono Fallback"}
:root{--bg:#0a0a0a;--surface:#141414;--surface-2:#1c1c1c;--line:#ffffff14;--line-strong:#ffffff26;--text:#ededed;--muted:#a0a0a0;--dim:#666;--accent:#4ade80;--radius:14px}*{box-sizing:border-box}html{background:var(--bg);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html,body{min-height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-inter), system-ui, sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.55}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit;text-decoration:none}p,h1,h2,dl,dd{margin:0}::selection{color:#0a0a0a;background:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.portfolio-shell{grid-template-columns:var(--left-width) minmax(0, 1fr);height:100dvh;display:grid;position:relative;overflow:hidden}.portfolio-shell.is-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.scroll-column{scrollbar-width:none;overscroll-behavior:contain;height:100dvh;overflow:auto}.scroll-column::-webkit-scrollbar{display:none}.sidebar{border-right:1px solid var(--line);padding:32px 36px 112px}.identity{align-items:center;gap:12px;display:flex}.avatar{border:1px solid var(--line-strong);background:linear-gradient(135deg,#3a3a3a,#171717);border-radius:50%;flex:none;width:40px;height:40px;display:block;position:relative;overflow:hidden}.avatar img{object-fit:cover;object-position:50% 22%}.name{letter-spacing:-.01em;font-size:15px;font-weight:500}.role{color:var(--muted);font-size:12px}.intro{text-wrap:pretty;max-width:35ch;margin-top:26px;font-size:16px;line-height:1.5}.intro strong{font-family:var(--font-mono), monospace;letter-spacing:-.03em;font-size:15px;font-weight:500}.intro span{color:var(--muted)}.availability{color:var(--muted);align-items:center;gap:8px;margin-top:20px;font-size:12px;display:flex}.availability span{background:var(--accent);box-shadow:0 0 10px color-mix(in srgb, var(--accent) 70%, transparent);border-radius:50%;width:6px;height:6px;animation:2s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.35}}.actions{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.pill{border:1px solid var(--line-strong);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:10px;height:38px;padding:0 16px;font-size:13px;font-weight:500;transition:background .2s,border-color .2s,color .2s,transform .2s;display:inline-flex}.pill.primary{background:var(--text);border-color:var(--text);color:#080808}.pill.secondary{color:var(--text);background:0 0}.pill:hover{transform:translateY(-2px)}.pill.primary:hover{background:#fff}.pill.secondary:hover{background:var(--surface);border-color:var(--text)}.pill-icon{width:14px;height:14px;display:block}.pill-icon-brand{fill:currentColor}.skill-marquee{cursor:grab;touch-action:pan-y;-webkit-user-select:none;user-select:none;margin-top:44px;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.skill-marquee.is-dragging{cursor:grabbing}.skill-track{color:var(--dim);will-change:transform;align-items:center;gap:44px;width:max-content;display:flex}.skill-mark{opacity:.75;justify-content:center;align-items:center;min-width:24px;height:24px;transition:color .2s,opacity .2s;display:flex;position:relative}.skill-logo{fill:currentColor;width:22px;height:22px;display:block}.skill-logo-csharp path:last-child{fill:var(--bg)}.skill-mark:hover{color:var(--text);opacity:1}.skill-tip{background:var(--bg);border:1px solid var(--line);color:var(--text);font-family:var(--font-mono), monospace;letter-spacing:.08em;pointer-events:none;text-transform:uppercase;white-space:nowrap;z-index:60;border-radius:6px;padding:4px 8px;font-size:9px;position:fixed;transform:translate(-50%)}.sidebar-section{border-top:1px solid var(--line);margin-top:36px;padding-top:36px}.section-title{font-family:var(--font-mono), monospace;letter-spacing:-.03em;margin-bottom:16px;font-size:14px;font-weight:500}.section-title span{color:var(--accent)}.muted-copy{color:var(--muted);max-width:35ch;font-size:13.5px;line-height:1.62}.stats{gap:10px;margin-top:20px;display:grid}.stat{grid-template-columns:52px 1fr;align-items:baseline;gap:10px;display:grid}.stat-value{font-family:var(--font-serif), serif;font-variant-numeric:tabular-nums;font-size:22px}.stat-value sup{color:var(--muted);vertical-align:super;margin-left:1px;font-size:11px}.stat-label{color:var(--muted);font-size:13px}.stat-label:before{background:var(--dim);content:"";vertical-align:middle;width:11px;height:1px;margin-right:9px;display:inline-block}.services{border-top:1px solid var(--line)}.service{border-bottom:1px solid var(--line);grid-template-columns:28px 1fr auto;align-items:center;gap:14px;padding:14px 0;transition:padding .25s;display:grid}.service:hover{padding-left:8px}.service-mark{background:var(--surface);border:1px solid var(--line);color:var(--muted);border-radius:7px;justify-content:center;align-items:center;width:28px;height:28px;transition:background .2s,border-color .2s,color .2s;display:flex}.service-icon{width:15px;height:15px;display:block}.service:hover .service-mark{background:var(--surface-2);border-color:var(--line-strong);color:var(--text)}.service strong,.service small{display:block}.service strong{font-size:13.5px;font-weight:400}.service small{color:var(--dim);font-size:12px}.service code{color:var(--dim);font-family:var(--font-mono), monospace;font-size:10px}.experience{gap:22px;display:grid}.experience-head{grid-template-columns:1fr auto;align-items:baseline;gap:12px;display:grid}.experience-head p{font-size:13.5px}.experience-head strong{font-weight:500}.experience-head span{color:var(--muted)}.experience-head time{color:var(--dim);font-family:var(--font-mono), monospace;white-space:nowrap;font-size:10px}.experience article>p{color:var(--muted);max-width:39ch;margin-top:6px;font-size:13px;line-height:1.55}.experience-programme{font-family:var(--font-mono), monospace;letter-spacing:.06em;text-transform:uppercase;font-size:10px;color:var(--dim)!important;margin-top:4px!important}.experience-more{max-height:78px;padding-top:22px;transition:max-height .42s cubic-bezier(.33,1,.68,1),-webkit-mask-image .3s,mask-image .3s;overflow:hidden;-webkit-mask-image:linear-gradient(#000 0,#0000 92%);mask-image:linear-gradient(#000 0,#0000 92%)}.experience-block.is-expanded .experience-more{-webkit-mask-image:linear-gradient(#000 0 100%);mask-image:linear-gradient(#000 0 100%)}.experience-toggle{border:1px solid var(--line);color:var(--muted);cursor:pointer;font-family:var(--font-mono), monospace;letter-spacing:.06em;text-transform:uppercase;background:0 0;border-radius:999px;align-items:center;gap:8px;margin-top:20px;padding:7px 13px;font-size:10px;transition:background .2s,border-color .2s,color .2s;display:inline-flex}.experience-toggle:hover{background:var(--surface);border-color:var(--line-strong);color:var(--text)}.contact-card{background:radial-gradient(120% 80% at 0 0, color-mix(in srgb, var(--accent) 12%, transparent), transparent 55%), var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-top:36px;padding:18px}.contact-card h2{font-family:var(--font-mono), monospace;letter-spacing:-.03em;max-width:14ch;font-size:22px;font-weight:500;line-height:1.2}.contact-card em{color:var(--accent);font-style:normal;font-weight:500}@property --contact-spin{syntax:"<angle>";inherits:false;initial-value:0deg}.contact-card{position:relative}.contact-card:before{background:conic-gradient(from var(--contact-spin), transparent 0deg, transparent 250deg, color-mix(in srgb, var(--accent) 8%, transparent) 282deg, color-mix(in srgb, var(--accent) 34%, transparent) 306deg, color-mix(in srgb, var(--accent) 78%, transparent) 324deg, #eaffb0 332deg, color-mix(in srgb, var(--accent) 78%, transparent) 340deg, color-mix(in srgb, var(--accent) 30%, transparent) 350deg, transparent 360deg);border-radius:inherit;content:"";filter:blur(.6px) drop-shadow(0 0 6px color-mix(in srgb, var(--accent) 55%, transparent));opacity:0;pointer-events:none;-webkit-mask-composite:xor;padding:1.5px;position:absolute;inset:-1px;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude}.contact-card.is-highlighted:before{animation:1.15s cubic-bezier(.35,0,.25,1) contact-sweep}@keyframes contact-sweep{0%{--contact-spin:0deg;opacity:0}10%{opacity:1}78%{opacity:1}to{--contact-spin:360deg;opacity:0}}@media (prefers-reduced-motion:reduce){.lightbox,.lightbox-image,.contact-card.is-highlighted:before{animation:none}}.contact-links{margin-top:14px;display:grid}.contact-links a{border-top:1px solid var(--line);justify-content:space-between;align-items:center;padding:10px 0;font-size:13px;display:flex}.contact-links a:first-child{border-top:0}.contact-links span{color:var(--dim);font-family:var(--font-mono), monospace;letter-spacing:.08em;text-transform:uppercase;font-size:10px}.contact-links strong{font-weight:400;transition:color .2s,transform .2s}.contact-links a:hover strong{color:var(--accent);transform:translate(-5px)}.footer{color:var(--dim);font-family:var(--font-mono), monospace;justify-content:space-between;margin-top:40px;font-size:10px;display:flex}.footer-clock{font-variant-numeric:tabular-nums;letter-spacing:.06em;align-items:center;gap:6px;display:inline-flex}.clock-icon{width:12px;height:12px;display:block}.column-resizer{cursor:col-resize;height:100dvh;left:calc(var(--left-width) - 5px);z-index:50;background:0 0;border:0;width:11px;padding:0;position:fixed;top:0}.column-resizer:after{background:var(--text);content:"";opacity:0;transition:opacity .15s;position:absolute;inset:0 5px}.column-resizer:hover:after,.is-resizing .column-resizer:after{opacity:.42}.work-column{padding:32px 36px 112px;position:relative}.work-header{background:color-mix(in srgb, var(--bg) 94%, transparent);z-index:20;justify-content:space-between;align-items:center;margin-bottom:14px;padding:8px 0;display:flex;position:sticky;top:0}.work-header>p{color:var(--dim);font-family:var(--font-mono), monospace;font-size:11px}.filters{flex-wrap:wrap;gap:4px;display:flex}.filters button{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;padding:7px 12px;font-size:12px;transition:background .2s,border-color .2s,color .2s,transform .2s}.filters button:hover{border-color:var(--line-strong);color:var(--text)}.filters button.active{background:var(--text);border-color:var(--text);color:#080808;transform:translateY(-1px)}.masonry{column-count:2;column-gap:14px;transition:opacity .14s,transform .14s}.masonry.swapping{opacity:0;transform:translateY(4px)}.project-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);break-inside:avoid;height:var(--project-height);margin-bottom:14px;transition:border-color .25s;display:block;position:relative;overflow:hidden;transform:translateZ(0)}.project-card.filter-enter{animation:filter-card-in .26s cubic-bezier(.2,.7,.2,1) var(--enter-delay) both}@keyframes filter-card-in{0%{opacity:0;transform:translateY(6px)scale(.99)}}.project-card:hover{border-color:var(--line-strong)}.project-card img{filter:grayscale()contrast(1.02)brightness(.9);object-fit:cover;transition:filter .5s,transform .8s cubic-bezier(.2,.7,.2,1)}.project-card:hover img{filter:grayscale(0);transform:scale(1.035)}.project-card-media{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.project-card:hover .project-card-media{transform:scale(1.035)}.project-shade{opacity:0;background:linear-gradient(#0000 48%,#000000d6);transition:opacity .3s;position:absolute;inset:0}.project-info{color:#fff;opacity:0;z-index:2;justify-content:space-between;align-items:flex-end;padding:14px 16px;transition:opacity .3s,transform .3s;display:flex;position:absolute;bottom:0;left:0;right:0;transform:translateY(8px)}.project-info span,.project-info strong,.project-info small{display:block}.project-info strong{font-size:14px;font-weight:500}.project-info small{color:#ffffffb3;font-family:var(--font-mono), monospace;font-size:10px}.project-card:hover .project-shade,.project-card:hover .project-info{opacity:1}.project-card:hover .project-info{transform:none}.project-flight{background-color:var(--surface);border-radius:var(--radius);pointer-events:none;will-change:left, top, width, height, filter;z-index:90;background-repeat:no-repeat;background-size:cover;display:block;position:fixed}.project-transition-active .work-column{overflow:hidden}.project-transition-active .detail-hero{visibility:hidden;animation:none}.top-button{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--line-strong);color:var(--text);cursor:pointer;z-index:30;background:#141414d1;border-radius:999px;align-items:center;gap:10px;padding:9px 14px;font-size:12px;transition:background .2s,transform .2s;display:flex;position:fixed;bottom:28px;right:28px}.top-button:hover{background:#1e1e1ef2;transform:translateY(-2px)}.top-button kbd{border:1px solid var(--line);color:var(--dim);font-family:var(--font-mono), monospace;border-radius:4px;padding:2px 5px;font-size:9px}.work-view{animation:.24s ease-out both view-enter}.project-detail{isolation:isolate;animation:.24s ease-out both view-enter}.detail-reveal{animation:.42s cubic-bezier(.2,.7,.2,1) both detail-reveal-in}.reveal-1{animation-delay:60ms}.reveal-2{animation-delay:.1s}.reveal-3{animation-delay:.14s}.reveal-4{animation-delay:.18s}.reveal-5{animation-delay:.22s}.reveal-6{animation-delay:.26s}@keyframes view-enter{0%{opacity:0}}@keyframes detail-reveal-in{0%{opacity:0;transform:translateY(10px)}}.back-button{background:var(--surface);border:1px solid var(--line);border-radius:999px;align-items:center;gap:8px;padding:8px 14px;font-size:12px;transition:background .2s,border-color .2s,transform .2s;display:inline-flex}.back-button:hover{background:var(--surface-2);border-color:var(--line-strong);transform:translateY(-1px)}.zoom-image{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);cursor:zoom-in;width:100%;padding:0;display:block;position:relative;overflow:hidden}.zoom-image img{object-fit:cover}.zoom-image>span{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--line-strong);opacity:0;background:#141414bf;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;transition:opacity .2s,transform .2s;display:flex;position:absolute;bottom:10px;right:10px;transform:translateY(5px)}.zoom-image:hover>span{opacity:1;transform:none}.detail-hero{aspect-ratio:16/10;margin-top:18px}.detail-embed{aspect-ratio:var(--embed-w) / var(--embed-h);border:1px solid var(--line);border-radius:var(--radius);contain:layout paint;max-width:calc(var(--embed-w) * 1px);background:#000;width:100%;margin-top:18px;position:relative;overflow:hidden}.detail-embed iframe{height:calc(var(--embed-h) * 1px);transform:scale(var(--embed-scale,1));transform-origin:0 0;width:calc(var(--embed-w) * 1px);border:0;display:block;position:absolute;top:0;left:0}.embed-close{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--line-strong);color:var(--text);z-index:2;background:#141414bf;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:12px;transition:background .2s;display:flex;position:absolute;top:10px;right:10px}.embed-close:hover{background:#282828e6}.pill-play{font-size:9px;line-height:1}.detail-video{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);object-fit:contain;width:100%;display:block}.project-detail.is-greed-dungeon .detail-hero{aspect-ratio:960/400}.detail-heading{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:20px;margin-top:22px;display:flex}.eyebrow{color:var(--dim);font-family:var(--font-mono), monospace;letter-spacing:.1em;text-transform:uppercase;margin-bottom:6px;font-size:10px}.detail-heading h1{font-family:var(--font-mono), monospace;letter-spacing:-.05em;font-size:clamp(2rem,4vw,2.9rem);font-weight:500;line-height:1}.detail-tag{color:var(--dim);font-family:var(--font-mono), monospace;letter-spacing:.08em;text-transform:uppercase;font-size:10px}.detail-meta{background:var(--line);border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:repeat(4,1fr);gap:1px;margin-top:24px;display:grid;overflow:hidden}.detail-meta div{background:var(--bg);padding:14px 16px}.detail-meta dt{color:var(--dim);font-family:var(--font-mono), monospace;letter-spacing:.1em;text-transform:uppercase;margin-bottom:4px;font-size:9px}.detail-meta dd{font-size:14px}.detail-copy{grid-template-columns:1fr 1fr;gap:36px;margin-top:28px;display:grid}.detail-copy p{color:var(--muted);max-width:46ch;font-size:14px;line-height:1.65}.detail-copy .lead{color:var(--text);font-family:var(--font-mono), monospace;letter-spacing:-.03em;font-size:15px;font-weight:500;line-height:1.55}.detail-links{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.detail-gallery{grid-template-columns:2fr 1fr;gap:14px;margin-top:32px;display:grid}.detail-gallery.is-single{grid-template-columns:1fr}.detail-gallery>.zoom-image{aspect-ratio:4/3}.detail-gallery>div{grid-auto-rows:1fr;gap:14px;display:grid}.detail-gallery>div .zoom-image{min-height:0}.detail-video-section{margin-top:32px}.detail-video-section .eyebrow{margin-bottom:12px}.next-project{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);justify-content:space-between;align-items:center;margin-top:32px;padding:20px;display:flex}.next-project p{font-family:var(--font-mono), monospace;letter-spacing:-.03em;font-size:19px;font-weight:500}.next-project em{color:var(--accent);font-style:normal}.lightbox{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:100;background:#040404e8;justify-content:center;align-items:center;padding:42px;animation:.22s ease-out lightbox-in;display:flex;position:fixed;inset:0}@keyframes lightbox-in{0%{-webkit-backdrop-filter:blur();backdrop-filter:blur();opacity:0;background:#04040400}}@keyframes lightbox-image-in{0%{opacity:0;transform:scale(.965)}}.lightbox-close,.lightbox-step{background:var(--surface);border:1px solid var(--line-strong);color:var(--text);cursor:pointer;z-index:2;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;padding:0;transition:background .2s,border-color .2s,transform .3s;display:flex;position:absolute}.lightbox-close svg,.lightbox-step svg{width:18px;height:18px;display:block}.lightbox-close{top:20px;right:22px}.lightbox-close:hover{border-color:var(--accent);transform:rotate(90deg)}.lightbox-step{top:50%;transform:translateY(-50%)}.lightbox-step:hover{background:var(--surface-2);border-color:var(--accent)}.lightbox-prev{left:22px}.lightbox-next{right:22px}.lightbox-count{color:var(--muted);font-family:var(--font-mono), monospace;letter-spacing:.1em;font-size:10px;position:absolute;bottom:22px}.lightbox>div{justify-content:center;align-items:center;width:auto;max-width:calc(100vw - 160px);height:auto;max-height:calc(100dvh - 110px);display:flex;position:relative}.lightbox-image{border-radius:var(--radius);object-fit:contain;width:auto;max-width:calc(100vw - 160px);height:auto;max-height:calc(100dvh - 110px);animation:.3s cubic-bezier(.22,1,.36,1) lightbox-image-in;display:block}.not-found{flex-direction:column;justify-content:center;align-items:flex-start;min-height:100dvh;padding:8vw;display:flex}.not-found h1{font-family:var(--font-serif), serif;max-width:10ch;margin-bottom:36px;font-size:clamp(3rem,8vw,8rem);font-weight:400;line-height:.95}@media (max-width:1000px){.portfolio-shell{--left-width:360px!important}.sidebar{padding-inline:28px}.work-column{padding-inline:24px}.column-resizer{display:none}.project-card{--project-height:360px!important}}@media (max-width:760px){.portfolio-shell{height:auto;display:block;overflow:visible}.scroll-column{height:auto;overflow:visible}.sidebar{border-right:0;padding:24px 22px 64px}.intro{max-width:30ch;font-size:18px}.intro strong{font-size:17px}.work-column{border-top:1px solid var(--line);min-height:100dvh;padding:20px 14px 90px}.work-header{align-items:flex-start;gap:14px;padding-block:10px}.filters{max-width:310px}.masonry{column-count:1}.project-card{--project-height:72vw!important}.project-info,.project-shade{opacity:1}.project-info{transform:none}.detail-meta{grid-template-columns:1fr 1fr}.detail-copy{grid-template-columns:1fr;gap:18px}.detail-gallery{grid-template-columns:1fr}.detail-gallery>.zoom-image{aspect-ratio:4/3}.detail-gallery>div{grid-template-rows:none;grid-template-columns:1fr 1fr}.detail-gallery>div .zoom-image{aspect-ratio:1}.next-project{flex-direction:column;align-items:flex-start;gap:18px}.top-button{bottom:16px;right:14px}.lightbox{padding:16px}.lightbox-step{width:34px;height:34px}.lightbox-prev{left:10px}.lightbox-next{right:10px}.lightbox>div,.lightbox-image{max-width:calc(100vw - 96px);max-height:calc(100dvh - 120px)}}.project-card[data-project-slug=zumi-the-slime],.project-card[data-project-slug=old-abyss]{aspect-ratio:16/9;height:auto}.project-card[data-project-slug=physic-games]{aspect-ratio:460/264;height:auto}.project-card[data-project-slug=ddos-detection]{aspect-ratio:2912/2176;height:auto}.project-card[data-project-slug=greed-dungeon]{aspect-ratio:960/400;height:auto}.project-card[data-project-slug=bolt-bolt],.project-card[data-project-slug=scaleform]{aspect-ratio:189/150;height:auto}.project-card[data-project-slug=bolt-bolt] img,.project-card[data-project-slug=scaleform] img{object-position:center top}.project-card[data-project-slug=chess-in-java]{aspect-ratio:1;height:auto}.project-detail.is-bolt-bolt .detail-hero{aspect-ratio:16/10}.project-detail.is-bolt-bolt .detail-hero img{object-position:center top}.project-detail.is-scaleform .detail-hero{aspect-ratio:16/10}.project-detail.is-scaleform .detail-hero img{object-fit:cover;object-position:center top}.project-detail.is-chess-in-java .detail-hero{aspect-ratio:16/10}.project-detail.is-old-abyss .detail-hero{aspect-ratio:1294/743;max-width:1294px;margin-inline:auto}.project-detail.is-old-abyss .detail-gallery{max-width:1000px;margin-inline:auto}.project-detail.is-old-abyss .detail-gallery>.zoom-image{aspect-ratio:987/560}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
