@font-face{font-family:D-DIN;src:url('/assets/fonts/D-DIN.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:D-DIN;src:url('/assets/fonts/D-DIN-Bold.ttf') format('truetype');font-weight:700;font-display:swap}
:root{--ink:#0f0f0f;--muted:#838383;--faint:#bfbfbf;--paper:#fff;--margin:48px;--heading:D-DIN,sans-serif;--body:-apple-system,BlinkMacSystemFont,'SF Pro Text','SF Pro Display','PingFang SC','Helvetica Neue',sans-serif;--card:clamp(300px,27.78vw,480px);--gap:32px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:18px/1.556 var(--body);-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{font:inherit;background:none;border:0;padding:0;color:inherit;cursor:pointer}h1,h2,h3,p{margin:0}h1,h2,h3,nav,.category-menu,.site-footer,.text-link{font-family:var(--heading)}h1,h2{font-size:36px;line-height:46px;font-weight:700;letter-spacing:.36px}h3{font-size:24px;line-height:28px;font-weight:700}a:focus-visible,button:focus-visible{outline:1px solid var(--ink);outline-offset:7px}::selection{background:#e5e5e5}.skip-link{position:fixed;top:-100px;left:var(--margin);z-index:100;background:#fff;padding:8px}.skip-link:focus{top:10px}
.site-header{position:fixed;top:0;left:0;right:0;height:80px;z-index:20;pointer-events:none;background:linear-gradient(#fff 70%,#ffffff00)}nav{display:flex;gap:32px;padding:32px var(--margin) 16px;line-height:30px;font-size:18px;letter-spacing:.216px;pointer-events:auto;width:max-content}nav a{color:var(--muted);transition:color .2s}nav a:hover,nav a[aria-current=page]{color:#000}nav a[aria-current=page]{font-weight:700}.site-footer{position:fixed;bottom:32px;left:var(--margin);font-size:18px;line-height:30px;color:var(--faint);pointer-events:none;z-index:10}main{min-height:100svh;outline:none}
.selected-scroll{position:relative}.selected-stage{position:sticky;top:0;height:100svh;overflow:hidden}.selected-track{display:flex;align-items:flex-end;gap:var(--gap);position:absolute;left:0;top:50%;margin-top:calc(var(--card) / -2);height:var(--card);will-change:transform;padding-left:var(--margin)}.intro,.outro{flex:none;width:330px;line-height:40px;font-size:36px;font-family:var(--heading);font-weight:700;letter-spacing:.36px}.intro{margin-right:calc(clamp(390px,35.42vw,612px) - var(--margin) - 330px - var(--gap));padding-bottom:10px}.outro{margin-left:80px;padding-bottom:10px}.outro a{display:block}.outro .text-link{font-size:18px;font-weight:400;line-height:30px;margin-top:16px}.selected-card{position:relative;width:var(--card);height:var(--card);flex:none;transition:transform .55s cubic-bezier(.22,.61,.36,1)}.selected-card .cover{position:absolute;left:50%;top:0;transform:translateX(-50%);width:100%;height:100%;background:#808080;overflow:hidden;transition:width .55s cubic-bezier(.22,.61,.36,1)}.selected-card.is-active .cover{width:calc(var(--card) * 1.7791667)}.cover.architecture{background:#000}.architecture img{position:absolute;width:var(--card);height:var(--card);object-fit:contain;left:50%;top:50%;transform:translate(-50%,-50%)}.project-caption{position:absolute;top:calc(100% + 18px);left:50%;transform:translate(-50%,8px);width:max-content;max-width:calc(var(--card) * 1.75);text-align:center;opacity:0;transition:opacity .25s,transform .4s;pointer-events:none}.is-active .project-caption{opacity:1;transform:translate(-50%,0)}.project-caption p{margin-top:4px;color:#333}.selected-card:focus-visible{outline:none}.selected-card:focus-visible .cover{outline:1px solid #111;outline-offset:6px}.selected-controls{position:absolute;right:var(--margin);bottom:35px;display:flex;align-items:center;gap:24px;color:var(--muted);font:16px/30px var(--heading)}.selected-controls button{padding:0 4px;font-size:22px}.selected-controls button:hover{color:#000}
.all-works{padding-top:142px;min-height:100svh;padding-bottom:150px;scroll-margin-top:0}.page-title{padding:0 var(--margin) 24px}.index-layout{display:grid;grid-template-columns:358px minmax(0,1fr)}.category-menu{position:sticky;top:110px;align-self:start;display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:0 var(--margin);font-size:18px;line-height:30px;color:var(--muted)}.category-menu button{font:inherit;text-align:left;transition:color .2s}.category-menu button:hover,.category-menu button[aria-pressed=true]{color:#000}.category-menu button[aria-pressed=true]{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}.work-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-width:968px;width:calc(100% - 80px);justify-self:center}.work-card{display:block;position:relative;aspect-ratio:1;background:#808080;overflow:hidden}.work-card.architecture img{width:100%;height:100%}.work-card .grid-caption{position:absolute;bottom:0;left:0;right:0;padding:24px;background:transparent;transform:translateY(100%);transition:transform .35s}.work-card:hover .grid-caption,.work-card:focus-visible .grid-caption{transform:translateY(0)}.grid-caption p{font-size:15px;margin-top:4px}.empty-results{color:var(--muted);grid-column:1/-1;padding:40px 0;font-size:16px}
.gallery-page{padding-top:142px;padding-bottom:130px}.gallery-layout{grid-template-columns:358px minmax(0,1fr)}.gallery-menu .group-title{color:#111;margin-bottom:2px}.gallery-menu .photo-filter{padding-left:16px}.gallery-menu .top-category{margin-top:22px}.gallery-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin:0 58px 0 20px}.photo-placeholder{aspect-ratio:1;background:#d3d3d3;position:relative;cursor:pointer;overflow:hidden}.photo-placeholder:hover{background:#c6c6c6}.photo-placeholder span{position:absolute;bottom:16px;left:16px;color:#333;font:16px var(--heading);opacity:0;transition:opacity .2s}.photo-placeholder:hover span,.photo-placeholder:focus-visible span{opacity:1}.gallery-empty{min-height:65vh}.gallery-note{color:var(--muted);font-size:14px;margin:24px 58px 0 378px}.gallery-note:empty{display:none}
.info-page{padding:214px var(--margin) 140px}.about-statement{max-width:686px;font:700 36px/46px var(--heading);letter-spacing:.432px}.resume-grid{display:grid;grid-template-columns:repeat(3,minmax(0,302px));gap:32px;justify-content:end;margin-top:128px}.resume-column>h2{font:400 32px/45px var(--heading);text-transform:uppercase;margin-bottom:32px}.resume-entry{margin-bottom:32px}.education-entry{display:grid;grid-template-columns:48px 1fr;gap:16px;margin-bottom:56px}.school-logo{width:48px;height:48px;border-radius:50%;overflow:hidden}.school-logo.aalto{border:.5px solid #838383;position:relative}.school-logo.aalto img{position:absolute;width:131%;height:131%;left:-18.52%;top:-18.09%}.school-logo img{width:100%;height:100%;object-fit:cover}.education-entry .year{min-height:44px;margin-bottom:8px;display:flex;align-items:center}.education-entry h3{margin-top:8px}.resume-entry h3{margin-bottom:8px}.resume-entry .related{display:block;color:var(--muted);margin-top:8px}.related img{width:11.314px;height:11.314px;margin-left:4px}.skills-list{padding-left:27px;margin:8px 0 0;color:var(--muted)}.skills-list li+li{margin-top:6px}.contact{text-align:right;margin-top:180px}.contact h2{margin-bottom:8px}.contact p+p{margin-top:8px}.contact a:hover{text-decoration:underline;text-underline-offset:4px}
.project-page{padding:142px var(--margin) 140px}.project-heading{display:flex;justify-content:space-between;align-items:baseline;gap:30px;margin-bottom:24px}.back-link{color:var(--muted);font-family:var(--heading)}.project-meta{display:flex;gap:40px;color:var(--muted);margin-bottom:40px;font-size:16px}.project-hero{position:relative;aspect-ratio:16/9;overflow:hidden;background:#808080}.project-hero.mindwave{background:#000}.project-hero.mindwave img{position:absolute;width:100%;height:316.05%;top:-180.7%;left:0;opacity:.8}.project-hero.architecture img{width:100%;height:100%;object-fit:contain;position:static;transform:none}.project-description{max-width:686px;margin:96px 0 96px auto}.project-description h2{margin-bottom:24px}.project-description p{margin-top:16px}.project-source{font-family:var(--heading);display:inline-block;margin-top:32px;color:var(--muted)}.project-source:hover{color:#000}.pending-project{padding:100px 0;color:var(--muted)}.not-found{padding:200px var(--margin)}
dialog{border:0;padding:64px 48px 28px;width:min(1100px,95vw);max-width:95vw;max-height:95svh;background:#fff;color:var(--ink)}dialog::backdrop{background:#000b}.viewer-close{position:absolute;right:28px;top:20px;font-family:var(--heading);color:var(--muted)}.viewer-image{aspect-ratio:4/3;max-height:70svh;background:#d3d3d3;display:flex;align-items:center;justify-content:center;color:#838383;font-family:var(--heading)}.viewer-controls{display:flex;justify-content:space-between;align-items:center;margin-top:20px;font:18px var(--heading)}.viewer-controls button{font-size:24px;padding:4px 12px}body:has(dialog[open]){overflow:hidden}
@media(min-width:1800px){.work-grid{width:968px}.gallery-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-height:760px) and (min-width:801px){:root{--card:clamp(280px,52vh,420px)}.selected-track{top:46%}.intro,.outro{font-size:32px;line-height:36px}}
@media(max-width:1200px){:root{--margin:32px}.intro{width:280px;margin-right:60px;font-size:32px;line-height:36px}.outro{width:280px;font-size:32px;line-height:36px}.index-layout,.gallery-layout{grid-template-columns:260px 1fr}.work-grid{width:calc(100% - 48px)}.gallery-grid{margin-right:32px;margin-left:0;grid-template-columns:repeat(3,1fr)}.gallery-note{margin-left:260px}.resume-grid{grid-template-columns:repeat(3,minmax(0,1fr));max-width:970px;margin-left:auto}.info-page{padding-top:180px}.resume-grid{margin-top:100px}.education-entry{grid-template-columns:36px 1fr;gap:12px}.school-logo{width:36px;height:36px}.contact{margin-top:120px}}
@media(max-width:800px){:root{--margin:24px;--card:calc(100vw - 48px)}body{font-size:16px;line-height:26px}.site-header{height:76px}nav{padding-top:24px;gap:28px}.site-footer{position:static;padding:48px 24px 24px;font-size:16px}.selected-scroll{height:auto!important}.selected-stage{position:relative;height:auto;overflow:visible;padding:160px var(--margin) 0}.selected-track{position:static;transform:none!important;display:flex;flex-direction:column;align-items:stretch;gap:48px;margin:0;padding:0;height:auto}.intro{width:100%;margin:0 0 24px;font-size:36px;line-height:40px;max-width:330px}.selected-card{width:100%;height:auto;aspect-ratio:1;transform:none!important;margin-bottom:66px}.selected-card .cover,.selected-card.is-active .cover{width:100%;height:100%}.selected-card.is-active .cover{width:100%}.project-caption{opacity:1;transform:translate(-50%,0);max-width:100%;width:100%;text-align:left}.project-caption h3{font-size:24px}.project-caption p{font-size:14px}.outro{margin:32px 0 0;width:100%;font-size:32px;line-height:36px}.selected-controls{display:none}.all-works{padding-top:120px;padding-bottom:40px}.page-title{padding-bottom:32px}.index-layout,.gallery-layout{display:block}.category-menu{position:static;padding:0 var(--margin);gap:10px;flex-direction:row;flex-wrap:wrap;font-size:16px;line-height:26px;margin-bottom:32px}.work-grid{width:auto;margin:0 var(--margin);grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.work-card{overflow:visible;margin-bottom:80px}.work-card .grid-caption{transform:none;background:none;top:100%;bottom:auto;padding:12px 0}.grid-caption h3{font-size:19px;line-height:24px}.grid-caption p{font-size:12px;line-height:18px}.gallery-page{padding-top:142px;padding-bottom:40px}.gallery-menu{display:flex;flex-direction:row;gap:12px 20px}.gallery-menu .group-title{width:100%}.gallery-menu .photo-filter{padding:0}.gallery-menu .top-category{margin:8px 0 0}.gallery-grid{margin:0 var(--margin);grid-template-columns:repeat(2,1fr)}.gallery-note{margin:20px var(--margin);font-size:13px}.gallery-empty{min-height:50vh}.info-page{padding:166px var(--margin) 20px}.about-statement{font-size:32px;line-height:40px}.resume-grid{display:block;margin-top:96px}.resume-column{margin-bottom:64px;max-width:520px}.resume-column>h2{font-size:28px;margin-bottom:28px}.education-entry{grid-template-columns:48px 1fr;gap:16px}.school-logo{width:48px;height:48px}.contact{text-align:left;margin-top:80px;overflow-wrap:anywhere}.contact h2{font-size:32px}.contact .email-separator{display:block}.project-page{padding:142px var(--margin) 40px}.project-heading{align-items:flex-start;flex-direction:column;gap:16px}.project-meta{display:block;font-size:14px}.project-description{margin:64px 0}.project-hero{aspect-ratio:4/3}dialog{padding:64px 20px 24px}.viewer-image{aspect-ratio:3/4}.viewer-controls{font-size:15px}}
body[data-page=info] .site-footer,body[data-page=project] .site-footer{position:static;padding:0 var(--margin) 32px}
@media(max-width:800px){.work-grid{width:calc(100% - 48px);max-width:none;justify-self:stretch}.work-card{min-width:0}.grid-caption{overflow-wrap:anywhere}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}.selected-scroll{height:auto!important}.selected-stage{position:relative;height:100svh}.selected-track{overflow-x:auto;position:relative;top:200px;margin-top:0;padding-bottom:100px;height:auto;transform:none!important;align-items:flex-start}.selected-card{transform:none!important}.selected-card.is-active .cover{width:100%}.intro{flex:none}.project-caption{opacity:1;transform:translate(-50%,0)}.selected-controls{display:none}}
@media(prefers-reduced-motion:reduce) and (max-width:800px){.selected-stage{height:auto}.selected-track{top:auto;overflow:visible;padding-bottom:0}}
