@media (max-width:809px){html body .portfolio-header .menu-toggle{z-index:2;flex-direction:column;justify-content:center;gap:6px;width:48px;height:48px;padding:12px;display:flex;position:relative}html body .portfolio-header .menu-toggle span{transform-origin:50%;width:24px;height:2px;margin:0;transition:transform .32s cubic-bezier(.22,1,.36,1);display:block}html body .portfolio-header.menu-open .menu-toggle span:first-child{transform:translateY(4px)rotate(45deg)}html body .portfolio-header.menu-open .menu-toggle span:last-child{transform:translateY(-4px)rotate(-45deg)}html body .portfolio-header.menu-open{z-index:20000!important}html body .portfolio-header nav{box-sizing:border-box;opacity:0;visibility:hidden;pointer-events:none;z-index:-1;transition:opacity .24s,visibility .24s;background:#faf9f7!important;flex-direction:column!important;justify-content:center!important;align-items:flex-start!important;gap:24px!important;width:100vw!important;height:100dvh!important;padding:100px 40px!important;display:flex!important;position:fixed!important;inset:0!important}html body .portfolio-header.menu-open nav{opacity:1;visibility:visible;pointer-events:auto}html body .portfolio-header nav a{letter-spacing:-.035em;text-align:left;color:#181818!important;font-size:clamp(40px,11vw,56px)!important;font-weight:400!important;line-height:1.15!important;text-decoration:none!important}html[data-theme=dark] body:not(.about-figma-page) .portfolio-header nav{background:#121212!important}html[data-theme=dark] body:not(.about-figma-page) .portfolio-header nav a{color:#eee!important}html body.about-figma-page .menu-toggle span{background:#181818!important}}@media (prefers-reduced-motion:reduce){html body .portfolio-header nav,html body .portfolio-header .menu-toggle span{transition:none}}@media (max-width:809px){html body .portfolio-header.menu-open{align-items:flex-start!important;height:100dvh!important;padding-top:28px!important;top:0!important}html body .portfolio-header.menu-open nav{position:absolute!important}}
.edge-home-preview{z-index:0;visibility:hidden;pointer-events:none;background:var(--bg,#fff);position:fixed;inset:0}.edge-home-preview.is-visible{visibility:visible}.edge-home-preview iframe{pointer-events:none;border:0;width:100%;height:100%}.edge-home-shade{background:#0000006b;transition:opacity .48s;position:absolute;inset:0}.edge-home-shade.is-clearing{opacity:0}.page-root.edge-project{z-index:1;left:var(--edge-shift,0px);background:var(--edge-surface);min-height:100vh;transition:left .6s cubic-bezier(.22,1.25,.36,1);position:relative;box-shadow:-12px 0 36px #0002;display:block!important}.page-root.edge-project .project-rail,.page-root.edge-project .portfolio-header{translate:var(--edge-shift,0px) 0;transition:translate .6s cubic-bezier(.22,1.25,.36,1)}.page-root.edge-project.edge-leaving{transition:left .48s cubic-bezier(.5,0,.3,1)}.page-root.edge-project.edge-leaving .project-rail,.page-root.edge-project.edge-leaving .portfolio-header{transition:translate .48s cubic-bezier(.5,0,.3,1)}.edge-back-zone{z-index:10000;cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='48'%3E%3Crect x='1' y='1' width='62' height='46' rx='23' fill='%23222'/%3E%3Cpath d='M38 24H23m7-7-7 7 7 7' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 32 24,w-resize;background:0 0;border:0;width:24px;padding:0;position:fixed;inset:0 auto 0 0}.edge-back-zone.is-peeking{width:88px}.edge-back-zone.is-leaving{width:100vw}.edge-back-zone:focus-visible{outline-offset:-4px;outline:2px solid #888}@media (prefers-reduced-motion:reduce){.page-root.edge-project,.page-root.edge-project .project-rail,.page-root.edge-project .portfolio-header,.edge-home-shade{transition:none!important}}body:has(.edge-project){overflow-x:clip}
:root{--portfolio-background:#faf9f7;--portfolio-ink:#171717;--portfolio-muted:#777;--portfolio-accent:#3b60bc;--portfolio-font-body:"PP Neue Montreal", sans-serif;--portfolio-font-heading:"Instrument Sans", sans-serif;--portfolio-gutter:40px;--portfolio-radius:8px}.page-root{display:contents}.portfolio-header{view-transition-name:portfolio-header}::view-transition{pointer-events:none}::view-transition-group(root){animation-duration:.42s;animation-timing-function:cubic-bezier(.22,1,.36,1)}::view-transition-group(portfolio-header){animation-duration:.42s;animation-timing-function:cubic-bezier(.22,1,.36,1)}::view-transition-old(root){animation:.18s ease-out both portfolio-page-out}::view-transition-new(root){animation:.42s cubic-bezier(.22,1,.36,1) both portfolio-page-in}::view-transition-old(portfolio-header){animation-duration:.14s}::view-transition-new(portfolio-header){animation-duration:.14s}@keyframes portfolio-page-out{to{opacity:0;transform:translateY(-6px)}}@keyframes portfolio-page-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){::view-transition-group(*){animation:none!important}::view-transition-old(*){animation:none!important}::view-transition-new(*){animation:none!important}}@media (max-width:809px){:root{--portfolio-gutter:14px}}.portfolio-header:before{content:none}.shark-hover-card{z-index:1100;box-sizing:border-box;color:#fff;text-align:left;background:#080808;width:min(280px,100vw - 24px);padding:10px;font:14px/1.35 PP Neue Montreal,sans-serif;position:fixed;box-shadow:0 8px 28px #0002}.shark-hover-card[hidden]{display:none}.shark-hover-card strong{font-size:15px;font-weight:500;display:block}.shark-hover-card span{color:#aaa;margin:3px 0 9px;font-size:12px;display:block}.shark-hover-card img{aspect-ratio:4/3;object-fit:cover;width:100%;height:auto;display:block}.spatial-ai-placeholder{align-self:stretch;width:100%;padding:0 0 48px;font-family:PP Neue Montreal,sans-serif}.spatial-ai-placeholder-visual{aspect-ratio:1.65;color:#99968f;background:#eeede9;border-radius:12px;place-items:center;width:calc(50% - 12px);display:grid}.spatial-ai-placeholder-visual span{font-size:14px}.spatial-ai-placeholder h2{letter-spacing:-.04em;color:inherit;margin:12px 0 8px;font-size:24px;font-weight:400}.spatial-ai-placeholder p{color:#8c8c8c;margin:0;font-size:16px}html[data-theme=dark] .spatial-ai-placeholder-visual{color:#8c8c8c;background:#242424}@media (max-width:809px){.spatial-ai-placeholder-visual{width:100%}}@font-face{font-family:PP NeueBit;src:url(/media/PPNeueBit-Bold.otf)format("opentype");font-weight:700;font-style:normal;font-display:swap}.hero-scramble-visual .hero-scramble-symbol{font-variant-emoji:text;font-family:PP NeueBit,Apple Symbols,sans-serif;font-weight:700}html body .spatial-ai-placeholder h2{letter-spacing:normal;font-size:18px;font-weight:400;line-height:1.4;font-family:PP Neue Montreal,sans-serif!important}html body .spatial-ai-placeholder p{font-family:Instrument Sans,sans-serif;font-size:12px;font-weight:400;line-height:1.4}@media (hover:hover) and (pointer:fine){:is(html body:has(:is(a[href],button:not(:disabled),input:not(:disabled),select:not(:disabled),textarea:not(:disabled),summary,[role=button],[data-project],.explore-card,.hero-scramble-glyph,rolling-logo,theme-toggle):hover),html body:has(:is(a[href],button:not(:disabled),input:not(:disabled),select:not(:disabled),textarea:not(:disabled),summary,[role=button],[data-project],.explore-card,.hero-scramble-glyph,rolling-logo,theme-toggle):hover) *){cursor:var(--portfolio-cursor-hover,var(--portfolio-cursor,auto))!important}}html body .case-media-static{cursor:inherit}.shark-hover-card video{aspect-ratio:1134/1150;object-fit:cover;width:100%;height:auto;display:block}.shark-hover-card{border-radius:24px;overflow:hidden}.shark-hover-card{background:0 0;padding:0}.shark-hover-card :is(img,video){border-radius:24px}.putty-hover-card{color:#242424;background:#eeede9;padding:24px 16px}.putty-symbols{grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;gap:4px;min-height:84px;display:grid}.putty-symbols i{font-variant-emoji:text;text-align:center;font:700 48px/1 PP NeueBit,Apple Symbols,sans-serif}#risd-hover-preview{aspect-ratio:1134/920}#risd-hover-preview video{object-fit:cover;border-radius:0;width:100%;height:125%;max-height:none;position:absolute;inset:auto 0 0}.hksa-home-visual{background:#eed0c1;overflow:hidden}.hksa-home-visual img{object-fit:cover;width:100%;height:100%;display:block}:root{--project-stack-gap:32px}.site-Lg1gs .site-1j0opqs>div{row-gap:var(--project-stack-gap)!important}.site-Lg1gs .site-1j0opqs{margin-bottom:var(--project-stack-gap)}.site-Lg1gs .site-1j0opqs .site-1cduotn{display:none}.site-Lg1gs .spatial-ai-placeholder{margin-bottom:var(--project-stack-gap);padding-bottom:0}.hksa-home-visual video{object-fit:cover;background:#000;width:100%;height:100%;display:block}.hksa-home-visual{position:relative}.hksa-home-visual video{object-fit:contain;min-height:0;position:absolute;inset:0}.hksa-home-visual{background:#000}.hksa-home-visual video{object-position:center}.home-project-pair{column-gap:24px;row-gap:var(--project-stack-gap);width:100%;margin-bottom:var(--project-stack-gap);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.site-Lg1gs .home-project-pair .spatial-ai-placeholder{margin-bottom:0}.home-project-pair .spatial-ai-placeholder-visual{width:100%;overflow:hidden}.cleaning-robot-visual img{object-fit:cover;width:100%;height:100%;display:block}@media (max-width:809px){.home-project-pair{grid-template-columns:minmax(0,1fr)}}.hksa-home-loop{position:absolute;inset:0;overflow:hidden}.hksa-home-loop img{opacity:0;position:absolute;inset:0}.hksa-home-loop img:first-child{opacity:1}@media (prefers-reduced-motion:no-preference){.hksa-home-card a:is(:hover,:focus-visible) .hksa-home-loop img{animation:2.25s step-end infinite hksa-home-cycle}.hksa-home-card a:is(:hover,:focus-visible) .hksa-home-loop img:not(:first-child){opacity:0}}@keyframes hksa-home-cycle{0%{opacity:1}20%,to{opacity:0}}@media (prefers-reduced-motion:reduce){.hksa-home-loop img{animation:none}.hksa-home-loop img:first-child{opacity:1}}.maestro-home-visual{position:relative;overflow:hidden}.maestro-home-visual img{object-fit:cover;object-position:center center;width:100%;height:100%;display:block;position:absolute;inset:0}.maestro-card .maestro-cover-hover{object-fit:cover;object-position:center;border-radius:inherit;opacity:0;pointer-events:none;width:100%;height:100%;transition:opacity .2s;display:block;position:absolute;inset:0}@media (hover:hover){.maestro-card:hover .maestro-cover-hover{opacity:1}}@media (prefers-reduced-motion:reduce){.maestro-card .maestro-cover-hover{transition:none}}
.project-rail{z-index:1001;background:0 0;border-right:1px solid #00000009;width:16%;font:400 16px/1.1 PP Neue Montreal,Instrument Sans,sans-serif;position:fixed;inset:0 auto 0 0;overflow-y:auto}.project-rail a{text-decoration:none}.project-rail .project-rail-name{color:#000;white-space:nowrap;position:absolute;top:42px;left:16.5%}.project-rail nav{font:inherit;margin:128px 10px 32px 16.5%}.project-rail nav a{color:#adadad}.project-rail-home{align-items:center;gap:13.5px;width:fit-content;display:flex}.project-rail-home img{flex:none;display:block;transform:rotate(180deg)}.project-rail-sections{flex-direction:column;gap:11.4px;margin-top:36.4px;display:flex}.project-rail nav a[aria-current],.project-rail a:hover{color:#000}.project-rail a:focus-visible{outline-offset:5px;outline:2px solid #222}@media (min-width:810px){.case-page .portfolio-header .brand-rolling{visibility:hidden}.case-page:not(.case-outer):not(.case-hksa) .case-opening{width:71.2%;max-width:none;margin-left:22.4%;margin-right:6.4%}.case-page:not(.case-outer):not(.case-hksa) .case-layout{width:71.2%;max-width:none;margin-left:22.4%;margin-right:6.4%;padding-left:0;padding-right:0;display:block}.case-page:not(.case-outer):not(.case-hksa) .case-next,.case-page:not(.case-outer):not(.case-hksa) .case-footer{box-sizing:border-box;width:71.2%;margin-left:22.4%;margin-right:6.4%}.case-page:not(.case-outer):not(.case-hksa) .case-next{grid-template-columns:minmax(0,1fr) minmax(100px,32%)}.case-page:not(.case-outer):not(.case-hksa) .case-next img{max-width:100%}}@media (max-width:809px){.project-rail{display:none}}html[data-theme=dark] .project-rail{border-right-color:#ffffff0b}
