@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}}html body .portfolio-header .menu-toggle{-webkit-tap-highlight-color:transparent}
.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}.site-Lg1gs .site-1j0opqs .spatial-ai-placeholder{margin:0;padding:0}.site-Lg1gs .site-1j0opqs .spatial-ai-placeholder-visual{width:100%}@media (min-width:810px){.home-project-mobile-only{display:none}}.cleaning-robot-visual img,.pocket-bop-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}}
@media (min-width:810px){html body.case-page .portfolio-header{z-index:1002}html body.case-page .portfolio-header .brand-rolling{visibility:visible}}
.project-case-system{--case-font:"PP Neue Montreal", sans-serif;--case-background:#fff;--case-ink:#000;--case-muted:#595959;--case-subtle:#717171;--case-line:#e0e0e0;--case-accent:#b52570;--case-rail:0%;--case-gutter:clamp(32px, 6.34921vw, 160px);--case-content-max:1280px;--case-reading-max:700px;--case-narrative-max:760px;--case-type-title:20px;--case-type-heading:18px;--case-type-narrative:16px;--case-type-label:14px;--case-type-feature:18px;--case-type-body:16px;--case-type-summary:16px;--case-type-quote:16px;--case-type-small:13px;--case-type-nav:14px;--case-leading:1.5;--case-leading-title:1.3;--case-leading-heading:1.4;--case-leading-feature:1.4;--case-weight-heading:500;--case-tracking:0px;--case-metadata-label:#a0a0a0;--case-metadata-columns:4;--case-space-1:8px;--case-space-2:16px;--case-space-3:24px;--case-space-4:32px;--case-space-5:48px;--case-space-6:64px;--case-space-7:96px;--case-section-gap:var(--case-space-7);--case-feature-gap:var(--case-space-6);--case-caption-gap:var(--case-space-3);--case-label-gap:12px;--case-text-gap:var(--case-space-2);--case-content-gap:var(--case-space-4);--case-media-radius:0px;--case-scroll-offset:96px;--case-content-width:min(var(--case-content-max), calc(100% - 2 * var(--case-gutter)));--case-content-start:calc((100% - var(--case-content-width)) / 2);background:var(--case-background);min-height:100vh;color:var(--case-ink);font-family:var(--case-font)}@media (min-width:810px) and (max-width:1100px){.project-case-system{--case-section-gap:80px}}@media (max-width:809px){.project-case-system{--case-rail:0%;--case-gutter:20px;--case-section-gap:64px;--case-feature-gap:48px}}html[data-theme=dark] .project-case-system{--case-background:#121212;--case-ink:#e5e5e5;--case-muted:#bbb;--case-subtle:#a9a9a9;--case-metadata-label:#a9a9a9;--case-line:#383838;--case-accent:#f0a3cc}html body.case-page .project-case-system :is(.case-opening h1,.outer-figma-overview>h1,.robot-main>#overview>h1,.hksa-overview>h1,.case-next h2,.case-next h2 span){line-height:var(--case-leading-title);letter-spacing:var(--case-tracking);color:var(--case-ink);font-family:var(--case-font)!important;font-size:var(--case-type-title)!important;font-weight:var(--case-weight-heading)!important}html body.case-page .project-case-system :is(.case-editorial h2,.case-statement h2,.case-principle h3,.case-details h3,.tap-features>article>h3,.outer-story-content>h2,.outer-goal>h3,.outer-detail-list h3,.outer-badges>h2,.outer-intro-copy>h2,.robot-story>h2,.robot-mediums h3,.robot-matrix-detail h3){line-height:var(--case-leading-heading);letter-spacing:var(--case-tracking);color:var(--case-ink);max-width:var(--case-narrative-max);margin:0 0 var(--case-text-gap);font-family:var(--case-font)!important;font-size:var(--case-type-heading)!important;font-weight:var(--case-weight-heading)!important}html body.case-page .project-case-system :is(.case-opening-subtitle,.case-editorial p,.case-principle p,.case-details p,.case-sequence p,.tap-features>article>p,.outer-story-copy>p,.outer-goal>p,.outer-detail-list p,.outer-badges-description,.outer-intro-copy>p:not(:first-child),.robot-story>p:not(.robot-eyebrow),.robot-mediums p,.robot-matrix-detail>p:not(.robot-eyebrow),.hksa-bio>p,.case-next p){font-weight:400;line-height:var(--case-leading);letter-spacing:var(--case-tracking);color:var(--case-muted);max-width:var(--case-reading-max);text-align:left;font-family:var(--case-font)!important;font-size:var(--case-type-body)!important}html body.case-page .project-case-system :is(.case-opening-label,.case-section>.case-eyebrow,.outer-figma-chip,.robot-label,.robot-eyebrow,.hksa-label,.outer-intro-copy>p:first-child){font-size:var(--case-type-label);font-weight:400;line-height:var(--case-leading);letter-spacing:var(--case-tracking);text-transform:none;color:var(--case-subtle);opacity:1;margin:0 0 var(--case-label-gap);background:0 0;border:0;border-radius:0;padding:0;font-family:var(--case-font)!important}html body.case-page .project-case-system :is(.case-meta dt,.case-meta dd,.outer-figma-meta dt,.outer-figma-meta dd,.hksa-meta dt,.hksa-meta dd,.case-number,.outer-goal small,.tap-figure figcaption,.tap-identity figcaption,.outer-story-media figcaption,.outer-process-study figcaption,.robot-dot-studies figcaption,.robot-matrix-figure figcaption,.case-footer,.case-footer a,.next-pull-hint,.case-next .case-eyebrow,.hksa-next-chip,.hksa-next-cue){font-size:var(--case-type-small);font-weight:400;line-height:var(--case-leading);letter-spacing:var(--case-tracking);text-transform:none;font-family:var(--case-font)!important}html body.case-page .project-case-system :is(.case-opening,.case-layout,.outer-figma-overview,.robot-main,.hksa-main),html body.case-page .project-case-system>:is(.case-next,.case-footer){box-sizing:border-box;width:var(--case-content-width);max-width:none;margin-inline:auto;padding-inline:0}html body.case-page .project-case-system :is(.case-opening,.outer-figma-overview,.robot-main,.hksa-main){padding-top:112px}html body.case-page .project-case-system .case-layout{padding-top:var(--case-section-gap);display:block}html body.case-page .project-case-system .case-section{padding-top:var(--case-section-gap)}html body.case-page .project-case-system .case-main>.case-section:first-child{padding-top:0}html body.case-page .project-case-system :is(.case-editorial,.outer-story-section){display:block}html body.case-page .project-case-system .outer-story-content{max-width:none}html body.case-page .project-case-system :is(.project-overview,.shark-overview){padding:var(--case-space-4) 0 0;display:block}html body.case-page .project-case-system :is(.project-summary,.shark-summary){grid-column:auto}html body.case-page .project-case-system .case-opening-subtitle{columns:auto}html body.case-page .project-case-system :is(.project-title,.shark-title){padding:0 0 var(--case-space-4)}html body.case-page .project-case-system :is(.case-opening h1,.outer-figma-overview>h1,.robot-main>#overview>h1,.hksa-overview>h1){margin:var(--case-label-gap) 0 var(--case-space-4)}body.case-shark .project-case-system{--case-metadata-columns:3}html body.case-page .project-case-system :is(.case-meta,.outer-figma-meta,.hksa-meta){grid-template-columns:repeat(var(--case-metadata-columns), minmax(0, 1fr));margin-top:var(--case-space-4);gap:var(--case-space-4);border:0;padding:0}html body.case-page .project-case-system :is(.case-meta dt,.outer-figma-meta dt,.hksa-meta dt){color:var(--case-metadata-label);margin-bottom:var(--case-space-1)}html body.case-page .project-case-system :is(.case-meta dd,.outer-figma-meta dd,.hksa-meta dd){color:var(--case-ink);margin:0}html body.case-page .project-case-system :is(.case-editorial,.outer-story-copy,.robot-story,.robot-matrix-detail) p+p{margin-top:var(--case-text-gap)}html body.case-page .project-case-system :is(.tap-figure,.tap-features,.case-principles,.case-walkthrough,.outer-process-study,.outer-detail-list,.robot-mediums,.robot-dot-studies){margin-top:var(--case-content-gap)}html body.case-page .project-case-system :is(.tap-figure,.outer-story-media,.robot-dot-studies) figcaption,html body.case-page .project-case-system .tap-features h3{margin-top:var(--case-caption-gap)}html body.case-page .project-case-system .case-principle h3{margin-top:var(--case-space-2)}html body.case-page .project-case-system .outer-story-media{margin-top:var(--case-content-gap)!important}html body.case-page .project-case-system .outer-media-stack{gap:var(--case-feature-gap)}html body.case-page .project-case-system #north-star{border:0;margin-top:0;padding-bottom:0}html body.case-page .project-case-system .robot-story{max-width:none;margin:var(--case-section-gap) 0}html body.case-page .project-case-system .robot-story>p{margin-bottom:0}html body.case-page .project-case-system .robot-story>.robot-eyebrow{margin-bottom:var(--case-label-gap)}html body.case-page .project-case-system .robot-inspiration{gap:var(--case-feature-gap);margin-bottom:var(--case-section-gap)}html body.case-page .project-case-system .robot-inspiration .robot-story{margin:0}html body.case-page .project-case-system .robot-image-pair{margin-block:var(--case-section-gap)}html body.case-page .project-case-system .hksa-bio{padding-block:var(--case-section-gap)}html body.case-page .project-case-system .hksa-bio>p{width:auto;max-width:var(--case-reading-max);margin:0}html body.case-page .project-case-system .hksa-bio>p+p{margin-top:var(--case-text-gap)}html body.case-page .project-case-system .hksa-gallery{gap:var(--case-feature-gap);margin-block:var(--case-section-gap)}html body.case-page .project-case-system>.case-next{margin-top:var(--case-section-gap);padding-block:var(--case-space-4);background:0 0}html body.case-page .project-case-system>.case-footer{margin-top:var(--case-feature-gap);background:0 0}@media (max-width:1100px){html body.case-page .project-case-system :is(.case-meta,.outer-figma-meta,.hksa-meta){gap:var(--case-space-3) var(--case-space-2);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:809px){html body.case-page .project-case-system :is(.case-opening,.outer-figma-overview,.robot-main,.hksa-main){padding-top:88px}}
