@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Space+Grotesk:wght@300..700&display=swap");:root{--background:0 0% 9%;--foreground:0 0% 98%;--muted:0 0% 14.9%;--muted-foreground:0 0% 63.9%;--border:0 0% 14.9%;--primary:221 83% 53%}.light{--background:0 0% 98%;--foreground:0 0% 9%;--muted:0 0% 93%;--muted-foreground:0 0% 36%;--border:0 0% 82%}*{box-sizing:border-box;border-color:hsl(var(--border))}html{color-scheme:dark;background:hsl(var(--background))}html.light{color-scheme:light}body{margin:0;background:hsl(var(--background));color:hsl(var(--foreground));font-family:Space Grotesk,sans-serif;font-size:16px;line-height:1.5}a{color:inherit;text-decoration:none}button,input{font:inherit}button{background:transparent;border:0;cursor:pointer}img,svg{display:block}.min-screen{min-height:100vh;background:hsl(var(--background))}.route-transition-shell{min-height:calc(100vh - 7rem);will-change:opacity,transform,filter}.container{width:100%}.container,.page{max-width:42rem;margin:0 auto}.page{padding:8rem 1.5rem 0}.stack-12>*+*{margin-top:3rem}.stack-16>*+*{margin-top:4rem}.section-stack>*+*{margin-top:1.5rem}.muted{color:hsl(var(--muted-foreground))}.link-underline{text-decoration:underline;text-underline-offset:2px}.blue-hover:hover,.group:hover .blue-hover,.link-underline:hover{color:hsl(var(--primary))}.section-title{color:hsl(var(--muted-foreground));font-size:.875rem;font-weight:400;letter-spacing:.08em;line-height:1.25rem;margin:0;text-transform:uppercase}.kbd{align-items:center;background:hsl(var(--muted));border:1px solid hsl(var(--border));border-radius:.25rem;display:inline-flex;font-family:IBM Plex Mono,monospace;font-size:10px;font-weight:500;gap:.25rem;height:1.25rem;padding:0 .375rem}.site-header{position:fixed;inset:0 0 auto;z-index:50;background:hsl(var(--background)/.8);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid hsl(var(--muted)/.2);opacity:1!important;transform:none!important;visibility:visible!important}.header-inner{align-items:center;display:flex;height:3.5rem;justify-content:space-between;padding:0 1rem}.nav{display:flex;gap:1.5rem;font-size:.875rem}.footer-link,.header-action,.nav a,.social-link{color:hsl(var(--muted-foreground));transition:color .16s ease,background .16s ease,border-color .16s ease}.footer-link:hover,.header-action:hover,.nav a.active,.nav a:hover,.social-link:hover{color:hsl(var(--foreground))}.header-actions{gap:1rem}.header-action,.header-actions{align-items:center;display:flex}.header-action{gap:.5rem;color:hsl(var(--muted-foreground));padding:0}.site-header .header-action,.site-header .nav a{visibility:visible}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.profile{align-items:flex-start;display:flex;gap:1.5rem;margin-bottom:3rem}.avatar{border-radius:999px;height:64px;width:64px}.page-title,.profile h1{font-size:1.5rem;font-weight:500;letter-spacing:-.01em;line-height:2rem;margin:0}.socials{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.5rem}.social-link{align-items:center;display:flex;font-size:.875rem;gap:.5rem}.language-flags{align-items:center;display:inline-flex;gap:.375rem}.language-flags .fi{border:1px solid hsl(var(--muted-foreground)/.3);border-radius:999px;box-shadow:0 0 0 2px hsl(var(--background));display:inline-block;height:1rem;overflow:hidden;width:1.35rem}.intro>*+*{margin-top:1rem}.initiative-copy,.intro p,.project-summary{color:hsl(var(--muted-foreground));line-height:1.625;margin:0}.mantra{color:hsl(var(--foreground))!important;font-family:IBM Plex Mono,monospace;font-size:.875rem}.work-list>*+*{margin-top:.5rem}.work-row{border-radius:.5rem;color:hsl(var(--foreground));display:flex;justify-content:space-between;padding:1rem;text-align:left;width:100%}.work-row.open,.work-row:hover{background:hsl(var(--muted)/.4)}.footer-inner,.initiative-heading,.project-heading,.work-left,.work-meta,.work-title{align-items:center;display:flex}.work-left{gap:1rem}.work-logo{border-radius:999px;height:20px;width:20px}.work-initial{align-items:center;background:hsl(var(--muted));border:1px solid hsl(var(--muted-foreground)/.25);border-radius:999px;color:hsl(var(--muted-foreground));display:inline-flex;font-family:IBM Plex Mono,monospace;font-size:.625rem;height:20px;justify-content:center;text-transform:uppercase;width:20px}.skill-group-icon svg{height:13px;width:13px}.blog-item,.command-option,.featured-card,.footer-link,.header-action,.nav a,.project-card,.social-link,.work-row{will-change:transform}.work-title{gap:.5rem}.blog-date,.project-date,.work-meta span,.work-title span{font-size:.875rem}.blog-date,.project-date,.work-meta span,.work-title .company{color:hsl(var(--muted-foreground))}.work-meta{gap:1rem}.chevron{color:hsl(var(--muted-foreground));transition:transform .2s ease}.work-row.open .chevron{transform:rotate(180deg)}.work-detail{color:hsl(var(--muted-foreground));font-size:.875rem;line-height:1.625;margin:0 1rem 1rem;overflow:hidden;padding-left:0}.work-detail a{color:hsl(var(--foreground));text-decoration:underline}.skill-list{display:grid;grid-gap:.5rem;gap:.5rem}.skill-dropdown-detail{height:0;margin-top:-.25rem;opacity:0;overflow:hidden;padding-top:0;visibility:hidden}.skill-dropdown-detail .skill-list{padding-top:.5rem}.skill-dropdown-row{transition:background .18s ease,border-color .18s ease,color .18s ease}.skill-dropdown-row .work-initial{transition:background .18s ease,color .18s ease,border-color .18s ease}.skill-dropdown-row.open .work-initial{background:hsl(var(--foreground));border-color:hsl(var(--foreground));color:hsl(var(--background))}.skill-row{align-items:center;background:hsl(var(--background)/.48);border:1px solid hsl(var(--border)/.72);border-radius:.5rem;display:grid;grid-gap:.625rem;gap:.625rem;grid-template-columns:1.5rem minmax(5rem,1fr);min-height:2.75rem;padding:.625rem .75rem;will-change:transform}.skill-row:hover{background:hsl(var(--muted)/.34);border-color:hsl(var(--muted-foreground)/.28)}.skill-icon{align-items:center;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:.375rem;display:inline-flex;height:1.5rem;justify-content:center;width:1.5rem}.skill-icon svg{color:hsl(var(--foreground))}.skill-icon img{display:block;height:1rem;max-width:1rem;object-fit:contain;width:1rem}.skill-name{font-size:.8125rem;color:hsl(var(--foreground));font-weight:500;min-width:0;overflow-wrap:anywhere}.featured-list>*+*{margin-top:2rem}.featured-card{display:block;margin:0 -1rem;padding:0 1rem}.initiative-heading,.project-heading{justify-content:space-between;margin-bottom:.5rem}.project-title{font-size:1rem;font-weight:500;margin:0;transition:color .16s ease}.project-date{align-items:center;display:flex;gap:.5rem}.initiative-title{font-size:1rem;font-weight:500;margin:0}.photo-grid{display:grid;grid-gap:1rem;gap:1rem;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:1rem}.photo-frame{aspect-ratio:4/3;border-radius:.5rem;overflow:hidden;position:relative}.photo-frame img{height:100%;object-fit:cover;width:100%}.footer{border-top:1px solid hsl(var(--muted)/.2);margin-top:4rem;padding:1.5rem 0}.footer-inner{justify-content:space-between;padding:0 1rem}.footer-copy{color:hsl(var(--muted-foreground));font-size:.875rem}.footer-links{display:flex;gap:1rem}.projects-list>*+*{margin-top:2rem}.project-card{border:1px solid hsl(var(--border));border-radius:.5rem;display:block;margin:0 -1.5rem;padding:1.5rem;transition:background .16s ease,border-color .16s ease}.project-card.selected,.project-card:hover{border-color:hsl(var(--primary));background:hsl(var(--primary)/.05)}.project-card h2{font-size:1.25rem;font-weight:500;line-height:1.75rem;margin:0}.badges{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.badge{background:hsl(var(--muted)/.5);border:1px solid hsl(var(--muted-foreground)/.2);border-radius:.375rem;color:hsl(var(--foreground));font-size:.75rem;font-weight:600;padding:.125rem .625rem}h2 .badge{margin-left:.5rem;vertical-align:middle}.achievements{color:hsl(var(--muted-foreground));font-size:.875rem;margin:1rem 0 0;padding-left:1.1rem}.blog-list>*+*{margin-top:.25rem}.blog-item{align-items:center;border-radius:.5rem;display:flex;gap:.875rem;justify-content:space-between;margin:0 -1rem;padding:.5rem 1rem;transition:background .16s ease}.blog-item:hover{background:hsl(var(--muted)/.5)}.blog-item .blue-hover{transition:color .16s ease}.blog-thumb{border:1px solid hsl(var(--border));border-radius:.5rem;display:block;flex:0 0 5rem;height:2.8125rem;overflow:hidden}.blog-thumb img{height:100%;object-fit:cover;width:100%}.blog-item-main{display:grid;flex:1 1;grid-gap:.125rem;gap:.125rem;min-width:0}.blog-summary{color:hsl(var(--muted-foreground));display:block;font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.blog-meta{align-items:center;display:flex;gap:1rem}.command-overlay{align-items:flex-start;background:rgb(0 0 0/.8);display:flex;inset:0;justify-content:center;padding:6rem 1rem;position:fixed;z-index:100}.command-dialog{background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:.5rem;box-shadow:0 24px 80px rgb(0 0 0/.45);max-width:36rem;overflow:hidden;width:100%}.command-input{background:transparent;border:0;border-bottom:1px solid hsl(var(--border));color:hsl(var(--foreground));outline:none;padding:.875rem 1rem;width:100%}.command-list{max-height:24rem;overflow:auto;padding:.5rem}.command-group{color:hsl(var(--muted-foreground));font-size:.75rem;padding:.5rem}.command-option{border-radius:.375rem;display:block;padding:.625rem .75rem}.command-option.active,.command-option:hover{background:hsl(var(--muted))}.article{color:hsl(var(--muted-foreground));line-height:1.75}.article h1,.article h2,.article h3{color:hsl(var(--foreground));font-weight:600;line-height:1.3}.article h1{font-size:1.75rem}.article h2{font-size:1.25rem;margin-top:2rem}.article a{color:hsl(var(--foreground));text-decoration:underline}.article img{border:1px solid hsl(var(--border));border-radius:.5rem;display:block;height:auto;margin:1.5rem 0;max-width:100%}.article code{background:hsl(var(--muted)/.7);border:1px solid hsl(var(--border));border-radius:.25rem;color:hsl(var(--foreground));font-family:IBM Plex Mono,monospace;font-size:.85em;padding:.05rem .25rem}.article pre{border:1px solid hsl(var(--border));border-radius:.5rem;overflow-x:auto;padding:1rem}.article pre code{background:transparent;border:0;color:inherit;padding:0}.article [data-rehype-pretty-code-figure] pre{background:var(--shiki-bg,hsl(var(--muted)/.45))}.article [data-rehype-pretty-code-figure] code span{color:var(--shiki-default)}.article :not([data-rehype-pretty-code-figure])>pre{background:hsl(var(--muted)/.45);color:hsl(var(--foreground))}.article li+li{margin-top:.25rem}@media (max-width:767px){.hide-mobile{display:none}.page{padding-left:1.5rem;padding-right:1.5rem}.blog-date,.work-location{display:none}.blog-thumb{flex-basis:4rem;height:2.25rem}.work-row{gap:.75rem}.work-title{align-items:flex-start;flex-direction:column;gap:0}.photo-grid{grid-template-columns:1fr}}.intro-overlay{background:hsl(var(--background));inset:0;justify-content:center;position:fixed;z-index:200}.intro-content,.intro-overlay{align-items:center;display:flex}.intro-content{flex-direction:column;gap:.75rem}.intro-avatar{border-radius:999px;height:80px;margin-bottom:.5rem;width:80px}.intro-line{background:hsl(var(--primary));height:1px;transform-origin:center;width:4rem}.intro-name{display:flex;font-family:Space Grotesk,sans-serif;font-size:1.5rem;font-weight:300;letter-spacing:.2em;perspective:400px;text-transform:lowercase}.intro-letter{display:inline-block;white-space:pre}