:root{--primary:#1a1c1d;--link:#131415;--caption:#aab3b6;--bg:#fff;--space-6:24px;--space-8:32px;--space-16:64px;--column:680px;--secondary:#6c7476;--border:#e0eaee;--surface:#f9f9f9}*{box-sizing:border-box;margin:0}html{-webkit-text-size-adjust:100%;scrollbar-gutter:stable}body{background:var(--bg);color:var(--primary);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,sans-serif;font-size:16px;line-height:1.65}a{color:inherit}:focus-visible{outline:2px solid var(--link);outline-offset:3px;border-radius:4px}.page{align-items:center;gap:var(--space-16);min-height:100dvh;padding:var(--space-16) var(--space-16) 0;flex-direction:column;display:flex}.column{width:100%;max-width:var(--column);gap:var(--space-16);flex-direction:column;flex:1;display:flex}.reveal{animation:1s ease-out backwards reveal;animation-delay:calc(80ms + var(--i,0) * 55ms)}@keyframes reveal{0%{opacity:0}}.about{flex-direction:column;gap:12px;display:flex}.avatar{border-radius:50%;width:68px;height:68px;margin-bottom:12px;position:relative;overflow:hidden}.avatar img{width:155.25%;max-width:none;height:207%;position:absolute;top:-53.5%;left:-27.63%}.name{font-size:16px;font-weight:600;line-height:1.5}.bio{flex-direction:column;gap:1.65em;display:flex}.links{align-items:center;gap:12px;margin-top:12px;font-size:14px;line-height:1.5;display:flex}.links-item{align-items:center;gap:12px;display:inline-flex}.links a,.link-dash{color:var(--link);background:repeating-linear-gradient(90deg, transparent 0 3px, var(--bg) 3px 6px) 0 100% / 0% 1px no-repeat, linear-gradient(var(--caption), var(--caption)) 0 100% / 100% 1px no-repeat;padding-bottom:1px;text-decoration:none;transition:background-size .4s cubic-bezier(.23,1,.32,1),transform .16s ease-out;display:inline-block}@media (hover:hover) and (pointer:fine){.links a:hover,.link-dash:hover{background-size:100% 1px,100% 1px}}.links a:active,.link-dash:active{transform:scale(.96)}.dot{color:var(--caption);text-align:center;white-space:nowrap;width:4px;text-decoration:none;display:inline-block;overflow:visible}.label{letter-spacing:.42px;color:var(--caption);margin-bottom:var(--space-6);font-family:Outfit,Inter,sans-serif;font-size:14px;font-weight:400;line-height:normal}.list{gap:var(--space-8);flex-direction:column;padding:0;list-style:none;display:flex}.list li:not(:last-child){padding-bottom:var(--space-8);background:repeating-linear-gradient(90deg, var(--caption) 0 2px, transparent 2px 8px) bottom / 100% 1px no-repeat}.project{color:inherit;align-items:center;gap:12px;text-decoration:none;display:flex}.project-icon{will-change:transform;flex:none;width:48px;height:48px;transition:transform .5s cubic-bezier(.16,1,.3,1);display:block}.project-text{flex-direction:column;flex:1;gap:4px;min-width:0;line-height:1.5;transition:transform .5s cubic-bezier(.16,1,.3,1);display:flex}.project-title{color:var(--link);font-weight:600}.project-meta{font-size:14px}.project-soon{white-space:nowrap;color:#0000;background:linear-gradient(100deg, var(--caption) 0%, var(--caption) 30%, #5d666a 50%, var(--caption) 70%, var(--caption) 100%) 0 0 / 200% 100% repeat-x;will-change:background-position;-webkit-background-clip:text;background-clip:text;font-size:14px;line-height:normal;transition:transform .25s cubic-bezier(.23,1,.32,1);animation:1.8s linear infinite shimmer-slide}.project-arrow{transition:transform .2s cubic-bezier(.23,1,.32,1)}@media (hover:hover) and (pointer:fine){.project:not(.is-link):hover .project-soon{transform:translateY(-3px)}.project.is-link:hover .project-arrow{transform:translate(4px)}.project.is-link:hover .project-icon{transform:scale(1.05)}.project.is-link:hover .project-text{transform:translate(2px)}}.project.is-link:active .project-arrow{transform:translate(2px)}.tools{flex-direction:column;gap:12px;display:flex}.tools-label{color:var(--caption);font-size:12px;line-height:1.5}.tools-list{gap:16px;padding:0;list-style:none;display:flex}.tools-list img{width:32px;height:32px;display:block}.cat-row{width:100%;max-width:var(--column);justify-content:flex-end;margin-bottom:-64px;display:flex}.cat{--pupil-x:0px;width:64px;height:64px;position:relative}.cat-btn{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:8px;width:64px;height:64px;padding:0;display:block}.cat-art,.cat-art svg{width:64px;height:64px;display:block}.cat-art svg{-webkit-user-select:none;user-select:none;shape-rendering:crispedges}.cat-pupil{transform:translateX(var(--pupil-x))}.cat-lid{display:none}.cat.is-blink .cat-lid{display:inline}.cat.is-flick .cat-tail{animation:.7s step-end both cat-flick}@keyframes cat-flick{0%,to{transform:translate(0)}20%,60%{transform:translate(2px)}40%,80%{transform:translate(0)}}.cat.is-hop .cat-btn{animation:.45s cubic-bezier(.23,1,.32,1) cat-hop}@keyframes cat-hop{0%{transform:translateY(0)}35%{transform:translateY(-14px)}to{transform:translateY(0)}}.cat-z{opacity:0;animation:2.8s steps(6,end) infinite cat-z}.cat-z2{animation-delay:1.4s}@keyframes cat-z{0%{opacity:0;transform:translateY(4px)}25%{opacity:1}to{opacity:0;transform:translate(2px,-6px)}}.cat-heart{pointer-events:none;opacity:0;animation:1.4s steps(10,end) both cat-heart;position:absolute;top:-6px}.cat-heart svg{display:block}@keyframes cat-heart{0%{opacity:0;transform:translateY(4px)scale(.6)}15%{opacity:1}70%{opacity:1}to{opacity:0;transform:translate(var(--dx,0), -30px) scale(1)}}.cat-bubble{white-space:nowrap;border:1px solid var(--border);color:var(--primary);transform-origin:85% 100%;pointer-events:none;background:#fff;border-radius:12px;margin-bottom:2px;padding:4px 10px;font-size:12px;font-weight:600;line-height:1.5;animation:1.5s ease-out both cat-bubble;position:absolute;bottom:100%;right:6px;box-shadow:0 2px 8px #00000014}@keyframes cat-bubble{0%{opacity:0;transform:translateY(4px)scale(.8)}12%{opacity:1;transform:translateY(0)scale(1)}80%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion:reduce){.cat.is-hop .cat-btn,.cat-z,.cat-bubble,.cat-heart{animation:none}.cat-bubble,.cat-z{opacity:1}}.footer{width:100%;max-width:var(--column);color:var(--caption);justify-content:space-between;padding:16px 0;font-size:12px;line-height:1.5;display:flex}@media (width<=767px){.page{gap:48px;padding:48px 20px 0}.column{gap:48px}}@media (prefers-reduced-motion:reduce){.project-arrow,.project-icon,.project-text,.links a,.link-dash,.icon-btn,.nav-btn{transition:none}.project-soon{color:var(--caption);background:0 0;transition:none;animation:none}}.overlay{z-index:10;overscroll-behavior:contain;padding:16px 24px 48px;animation:.2s ease-out fade-in;position:fixed;inset:0;overflow:hidden auto}.backdrop{background:#1a1c1d47;position:fixed;inset:0}.modal{background:#fff;border-radius:24px;outline:none;max-width:1240px;margin:0 auto;animation:.32s cubic-bezier(.23,1,.32,1) modal-in;position:relative;box-shadow:0 0 12px #0003}.overlay.is-closing{animation:.18s ease-in forwards fade-out}.overlay.is-closing .modal{animation:.18s ease-in forwards modal-out}@keyframes fade-in{0%{opacity:0}}@keyframes fade-out{to{opacity:0}}@keyframes modal-in{0%{opacity:0;transform:translateY(16px)scale(.99)}}@keyframes modal-out{to{opacity:0;transform:translateY(8px)}}.modal-actions{z-index:3;justify-content:flex-end;gap:8px;height:0;padding-right:16px;display:flex;position:sticky;top:0}.icon-btn{cursor:pointer;background:#fff;border:0;border-radius:20px;flex:none;place-items:center;width:32px;height:32px;margin-top:16px;transition:background-color .2s,transform .16s ease-out;display:grid}.icon-btn img{display:block}@media (hover:hover) and (pointer:fine){.icon-btn:hover{background:#f3f3f3}}.icon-btn:active{transform:scale(.94)}.modal-body{grid-template-columns:minmax(0,.3fr) minmax(0,1fr);column-gap:64px;padding:64px 48px 48px;display:grid}.modal-body.is-switched{animation:.6s cubic-bezier(.23,1,.32,1) body-in}@keyframes body-in{0%{opacity:0;transform:translateX(var(--slide,28px))}}.side{flex-direction:column;align-self:start;gap:32px;display:flex;position:sticky;top:32px}.side-info{flex-direction:column;gap:12px;display:flex}.side-info img{width:48px;height:48px;display:block}.side-switch{align-items:center;gap:10px;display:flex}.nav-btn{cursor:pointer;background:0 0;border:0;border-radius:8px;padding:4px;transition:background-color .2s,transform .16s ease-out;display:flex}.nav-btn:disabled{cursor:default}.chev{background:#000;width:16px;height:16px;display:block;-webkit-mask:url(/images/ui/chevron.svg) 50%/contain no-repeat;mask:url(/images/ui/chevron.svg) 50%/contain no-repeat}.chev--left{transform:scaleX(-1)}.nav-btn:disabled .chev{background:#797979}@media (hover:hover) and (pointer:fine){.nav-btn:not(:disabled):hover{background:var(--surface)}}.nav-btn:not(:disabled):active{transform:scale(.92)}.side-name{flex-direction:column;gap:4px;line-height:1.5;display:flex}.side-title{color:var(--primary);font-size:18px;font-weight:600}.side-meta{font-size:14px}.tabs{flex-direction:column;align-items:flex-start;gap:16px;padding:12px 40px 12px 0;display:flex}.tab{cursor:pointer;font:inherit;color:var(--secondary);background:0 0;border:0;align-items:center;gap:8px;padding:0;font-size:14px;line-height:1.5;transition:color .2s;display:inline-flex}.tab-dot{background:var(--accent);opacity:0;border-radius:50%;width:0;height:4px;margin-right:-8px;transition:transform .25s cubic-bezier(.23,1,.32,1),opacity .2s,width .25s cubic-bezier(.23,1,.32,1),margin .25s cubic-bezier(.23,1,.32,1);transform:scale(0)}.tab.is-active{color:var(--primary)}.tab.is-active .tab-dot{opacity:1;width:4px;margin-right:0;transform:scale(1)}@media (hover:hover) and (pointer:fine){.tab:not(.is-active):hover{color:var(--primary)}}.cs-main{flex-direction:column;gap:80px;min-width:0;max-width:780px;display:flex}.cs-intro{flex-direction:column;gap:64px;display:flex}.cs-block{flex-direction:column;gap:8px;display:flex}.cs-block--outcome{gap:16px}.cs-block h2,.cs-section h2{font-size:16px;font-weight:600;line-height:1.5}.cs-section{flex-direction:column;gap:20px;scroll-margin-top:32px;display:flex}.prose p+p{margin-top:1.65em}.media{background:var(--surface);border-radius:24px;width:100%;overflow:hidden}.media img,.media video{object-fit:cover;width:100%;height:100%;display:block}.media.is-video{background:#0e0e0e}.cs-link{align-self:flex-start}.shimmer{color:#0000;background:linear-gradient(100deg, var(--link) 0%, var(--link) 30%, #8f989c 50%, var(--link) 70%, var(--link) 100%) 0 0 / 200% 100% repeat-x;will-change:background-position;-webkit-background-clip:text;background-clip:text;animation:2.4s linear infinite shimmer-slide}@keyframes shimmer-slide{to{background-position:200% 0}}.stats{text-align:center;gap:16px;line-height:1.5;display:flex}.stat{background:var(--surface);border-radius:16px;flex-direction:column;flex:1;justify-content:center;gap:2px;min-width:0;padding:20px 16px;display:flex}.stat-value{font-size:18px;font-weight:600}.stat-label{color:var(--secondary);font-size:14px}.skills{border-top:1px solid var(--border);gap:12px;padding-top:24px;font-size:14px;line-height:1.5;display:flex}.skills span:first-child{color:var(--secondary)}@media (width<=899px){.modal-body{grid-template-columns:minmax(0,1fr);column-gap:0;padding:48px 20px 32px}.side{display:contents}.side-info{margin-bottom:24px}.tabs{z-index:2;scrollbar-width:none;border-bottom:1px solid var(--border);background:#fff;flex-direction:row;gap:20px;margin:0 -20px 40px;padding:12px 56px 12px 20px;position:sticky;top:0;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{white-space:nowrap}.cs-main{gap:64px}.cs-intro{gap:48px}.media{border-radius:16px}.stats{flex-direction:column}}@media (width<=767px){.overlay{padding:0}.modal{min-height:100%;box-shadow:none;border-radius:0}.modal-actions{padding-right:12px;top:0}.side-info{margin-top:16px}}@media (prefers-reduced-motion:reduce){.overlay,.modal,.modal-body.is-switched,.reveal{animation:none}.shimmer{color:var(--link);background:0 0;animation:none}.tab-dot,.tab{transition:none}}.cursor-preview{z-index:4;pointer-events:none;position:fixed;top:0;left:0}.preview-card{background:var(--surface);opacity:0;border-radius:12px;transition:opacity .2s ease-out,transform .3s cubic-bezier(.23,1,.32,1);position:relative;overflow:hidden;transform:scale(.9);box-shadow:0 8px 28px #0000002e,0 0 0 1px #0000000a}.cursor-preview.is-visible .preview-card{opacity:1;transform:scale(1)}.preview-card img{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .25s;position:absolute;inset:0}.preview-card img.is-on{opacity:1}
