:root{--paper: #fafaf7;--ink: #111111;--ink-soft: #555555;--ink-faint: #999999;--rule: #e6e3dc;--accent: #1a1a1a;--accent-hover: #6a4a2a;--highlight: #fff3a8;--brand-gradient: linear-gradient(135deg, #ad33ff, #f83a3a, #ff70f3);--paper-rgb: 250, 250, 247;--border-subtle: rgba(0, 0, 0, .1);--border-strong: rgba(0, 0, 0, .22);--sheen: rgba(255, 255, 255, .55);--nav-bg: #f2f0e9;--nav-pill-tint: rgba(20, 16, 40, .025);--nav-pill-rim: rgba(255, 255, 255, .7);--nav-pill-shadow: rgba(20, 15, 40, .14);color-scheme:light;--font-sans: "InterVariable", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI Variable", "SF Pro Display", system-ui, sans-serif;--font-serif: "Iowan Old Style", "Charter", "Source Serif Pro", Georgia, "Times New Roman", serif;--font-mono: "JetBrains Mono", "Geist Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--step--2: clamp(.72rem, .71rem + .05vw, .76rem);--step--1: clamp(.81rem, .79rem + .1vw, .88rem);--step-0: clamp(.94rem, .92rem + .13vw, 1.02rem);--step-1: clamp(1.06rem, 1.02rem + .2vw, 1.19rem);--step-2: clamp(1.19rem, 1.13rem + .3vw, 1.38rem);--step-3: clamp(1.38rem, 1.27rem + .53vw, 1.69rem);--step-4: clamp(1.69rem, 1.51rem + .89vw, 2.19rem);--step-5: clamp(2.06rem, 1.77rem + 1.45vw, 2.88rem);--space-3xs: .25rem;--space-2xs: .5rem;--space-xs: .75rem;--space-sm: 1rem;--space-md: 1.5rem;--space-lg: 2.25rem;--space-xl: 3.5rem;--space-2xl: 5.5rem;--space-3xl: 9rem;--measure-prose: 52ch;--measure-wide: 72ch;--container-pad: var(--space-md);--container-prose: 680px;--container-page: 1180px;--container-max: 1400px;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--duration-fast: .15s;--duration-base: .25s}:root[data-theme=dark]{color-scheme:dark;--paper: #09080d;--paper-rgb: 9, 8, 13;--ink: #f1f0ec;--ink-soft: #a7a59e;--ink-faint: #413243;--rule: #282631;--accent: #ededed;--accent-hover: #c76bc4;--highlight: #4b2020;--border-subtle: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .1);--sheen: rgba(255, 255, 255, .02);--nav-bg: #131119;--nav-pill-tint: rgba(255, 255, 255, .05);--nav-pill-rim: rgba(255, 255, 255, .12);--nav-pill-shadow: rgba(0, 0, 0, .35)}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html,body{height:100%}html{-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility;scroll-behavior:smooth}:where(h1,h2,h3,h4,section)[id]{scroll-margin-top:96px}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--step-0);line-height:1.55;font-feature-settings:"kern","liga","calt","ss01";-webkit-font-smoothing:subpixel-antialiased;-moz-osx-font-smoothing:auto;text-wrap:pretty}img,video{image-rendering:auto}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}h1,h2,h3,h4,h5,h6,.visual-project__heading,.sp-post__title,.article-card__title,.sp-case__title,.sp-built__title,.sp-note__title,.case-next__title,.sp-grid__title{text-wrap:balance}p,li,dd,figcaption,blockquote{orphans:2;widows:2}img,picture,video,canvas,svg{display:block;max-width:100%}video{height:auto}input,button,textarea,select{font:inherit;color:inherit}button{background:none;border:none;cursor:pointer}ol,ul{list-style:none}p,h1,h2,h3,h4,h5,h6,li,dd,dt{overflow-wrap:break-word}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);font-weight:600;letter-spacing:-.01em;line-height:1.25;color:var(--ink)}h1{font-size:var(--step-4);letter-spacing:-.02em}h2{font-size:var(--step--1);font-weight:700;letter-spacing:0;line-height:1.4}h3{font-size:var(--step-1);font-weight:600}h4{font-size:var(--step-0);font-weight:600}h5{font-size:var(--step--2);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}h6{font-size:var(--step--2);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint)}p{max-width:var(--measure-prose)}p+p{margin-top:var(--space-sm)}a{color:var(--accent);text-decoration:none;transition:color var(--duration-fast) var(--ease-out),opacity var(--duration-fast) var(--ease-out)}a:hover{color:var(--accent-hover)}a[href^=http]:not(:has(img)):after{content:" ↗";font-feature-settings:"ss01";color:var(--ink-faint);font-size:.8em;margin-left:.15em;transition:color var(--duration-fast) var(--ease-out)}a[href^=http]:not(:has(img)):hover:after{color:currentColor}div[data-slot=project-body] a,div[data-slot=post-body] a,main p a,article p a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;text-decoration-color:var(--rule)}div[data-slot=project-body] a:hover,div[data-slot=post-body] a:hover,main p a:hover,article p a:hover{text-decoration-color:currentColor}strong,b{font-weight:600}em,i{font-style:italic}blockquote{border-left:2px solid var(--rule);padding-left:var(--space-md);font-style:italic;color:var(--ink-soft);max-width:var(--measure-prose)}hr{border:0;border-top:1px solid var(--rule);margin:var(--space-xl) 0}code{font-family:var(--font-mono);font-size:.9em;background:#0000000a;padding:.15em .4em;border-radius:3px}.site-shell{--shell-nav-w: 320px;display:grid;grid-template-columns:var(--shell-nav-w) minmax(0,1fr);align-items:start;min-height:100vh}.site-shell--full{--shell-nav-w: 0px;grid-template-columns:minmax(0,1fr)}@media(max-width:900px){.site-shell{--shell-nav-w: 0px;grid-template-columns:minmax(0,1fr)}}@keyframes vtFadeOut{0%{opacity:1}to{opacity:0}}@keyframes vtFadeIn{0%{opacity:0}to{opacity:1}}::view-transition-old(*){animation:none;opacity:0}::view-transition-new(*){animation:none;opacity:1}::view-transition-old(*),::view-transition-new(*){width:100%;height:100%;object-fit:cover}::view-transition-group(*){animation-duration:.4s;animation-timing-function:var(--ease-in-out)}::view-transition-old(root),::view-transition-new(root){animation:none}::view-transition-old(vt-main){animation:vtFadeOut .2s var(--ease-out) both}::view-transition-new(vt-main){animation:vtFadeIn .3s var(--ease-out) .34s both}::view-transition-old(vt-main),::view-transition-new(vt-main){width:100%;height:auto;object-fit:fill}::view-transition-group(vt-main){animation-duration:.2s}main{max-width:var(--container-page);margin:0 auto;padding:var(--space-2xl) var(--container-pad) var(--space-3xl)}main[data-page-style=wide]{max-width:var(--container-max)}main>*+*{margin-top:var(--space-xl)}main>header{font-size:var(--step--1);color:var(--ink-faint);margin-bottom:var(--space-xl)}main>header nav a{text-decoration:none;color:var(--ink-faint)}main>header nav a:hover{color:var(--ink)}.site-nav{display:flex;justify-content:center;align-items:center;gap:clamp(.75rem,2vw,1.5rem);flex:1;font-size:var(--step--1)}.site-nav a{color:var(--ink-soft);text-decoration:none;min-height:40px;display:inline-flex;align-items:center;transition:color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.site-nav a:hover{color:var(--ink)}.site-nav a:active{transform:scale(.96)}@media(max-width:760px){.site-nav{order:3;width:100%;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;padding-top:var(--space-2xs)}.site-nav::-webkit-scrollbar{display:none}}main h2{text-transform:uppercase;letter-spacing:.08em;margin-top:var(--space-2xl);color:var(--ink)}main h2+*{margin-top:var(--space-md)!important}article{max-width:var(--container-prose);margin:0 auto;padding:var(--space-2xl) var(--container-pad) var(--space-3xl)}article[data-page-style=wide]{max-width:var(--container-page)}article>*+*{margin-top:var(--space-lg)}aside[data-slot=section-scrubber]{position:fixed;top:50%;right:var(--space-md);transform:translateY(-50%);font-size:var(--step--1);color:var(--ink-faint);max-width:12rem;display:none}@media(min-width:1100px){aside[data-slot=section-scrubber]{display:block}article:not([data-page-style=wide]){padding-right:calc(var(--container-pad) + 14rem)}article[data-page-style=wide] aside[data-slot=section-scrubber]{display:none}}aside[data-slot=section-scrubber] ol{border-left:1px solid var(--rule);padding-left:var(--space-sm)}aside[data-slot=section-scrubber] li+li{margin-top:var(--space-3xs)}aside[data-slot=section-scrubber] li[data-depth="2"]{padding-left:0}aside[data-slot=section-scrubber] li[data-depth="3"]{padding-left:var(--space-2xs)}aside[data-slot=section-scrubber] li[data-depth="4"]{padding-left:var(--space-sm)}aside[data-slot=section-scrubber] a{text-decoration:none;color:var(--ink-faint);display:block;padding:.15em 0}aside[data-slot=section-scrubber] a:hover{color:var(--ink)}div[data-slot=project-body]{font-family:var(--font-sans);font-size:var(--step-0);line-height:1.7;max-width:64ch;margin:0 auto}div[data-slot=project-body]>*+*{margin-top:var(--space-md)}div[data-slot=project-body] h2,div[data-slot=project-body] h3,div[data-slot=project-body] h4,div[data-slot=project-body] h5,div[data-slot=project-body] h6{margin-top:var(--space-2xl);margin-bottom:var(--space-xs);text-transform:none;letter-spacing:0;color:var(--ink)}div[data-slot=project-body] h2{font-size:var(--step-2);font-weight:600}div[data-slot=project-body] h3{font-size:var(--step-1);font-weight:600}div[data-slot=project-body] h4{font-size:var(--step-0);font-weight:700}div[data-slot=project-body] h5{font-size:var(--step-0);font-weight:700;color:var(--ink);text-transform:none;letter-spacing:0}div[data-slot=project-body] h6{font-size:var(--step--1);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}div[data-slot=project-body] p{max-width:none}div[data-slot=project-body] img,div[data-slot=project-body] video{display:block;width:100%;margin:var(--space-xl) auto;border-radius:4px;background:var(--media-placeholder, var(--rule))}div[data-slot=project-body] p>img+img{margin-top:var(--space-xs)}div[data-slot=project-body] hr.section-divider,.section-divider{border:0;height:1px;background:var(--rule);margin:var(--space-3xl) 0!important;width:100%}div[data-slot=project-body] blockquote{font-size:var(--step-1);font-style:normal;font-weight:500;border-left:2px solid var(--ink);padding:var(--space-2xs) 0 var(--space-2xs) var(--space-md);margin:var(--space-xl) 0;color:var(--ink);max-width:none}div[data-slot=project-body] blockquote p{font-size:inherit}:root{--pb-gutter: var(--space-md)}div[data-slot=project-body].pb-pending:not(.pb-ready){opacity:0}div[data-slot=project-body].pb-ready{opacity:1;transition:opacity .25s var(--ease-out)}.pb-block{width:100%}.pb-block+.pb-block{margin-top:var(--space-md)}.pb-block[data-space=none]{margin-top:0}.pb-block[data-space=s]{margin-top:var(--space-sm)}.pb-block[data-space=m]{margin-top:var(--space-md)}.pb-block[data-space=l]{margin-top:var(--space-xl)}.pb-figure{margin:0}.pb-cap{display:block;margin-top:var(--space-2xs);font-size:var(--step--1);line-height:1.45;color:var(--ink-soft);text-align:left;text-wrap:pretty}.pb-slot{min-width:0;display:flow-root}.pb-slot>*{margin-left:0!important;margin-right:0!important}.pb-slot>*+*{margin-top:var(--space-md)}.pb-slot>*:first-child{margin-top:0}.pb-slot>p,.pb-slot>h2,.pb-slot>h3,.pb-slot>h4,.pb-slot>h5,.pb-slot>h6,.pb-slot>ul,.pb-slot>ol,.pb-slot>blockquote{max-width:66ch;text-align:left;text-wrap:pretty}.pb-slot>h2:first-child,.pb-slot>h3:first-child,.pb-slot>h4:first-child,.pb-slot>h5:first-child,.pb-slot>h6:first-child{margin-top:0}.pb-slot>p:has(img),.pb-slot>p:has(video),.pb-slot>figure,.pb-slot img,.pb-slot video{max-width:none;width:100%;margin:0}.pb-slot img,.pb-slot video{border-radius:6px;height:auto}.pb-block--full{display:block}.pb-block--cols{display:grid;gap:var(--pb-gutter);align-items:start}.pb-block--cols[data-ratio="1-1"]{grid-template-columns:1fr 1fr}.pb-block--cols[data-ratio="5-7"]{grid-template-columns:5fr 7fr}.pb-block--cols[data-ratio="7-5"]{grid-template-columns:7fr 5fr}.pb-block--split-right{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"a b" "a c";gap:var(--pb-gutter);align-items:start}.pb-block--split-right>.pb-slot:nth-child(1){grid-area:a}.pb-block--split-right>.pb-slot:nth-child(2){grid-area:b}.pb-block--split-right>.pb-slot:nth-child(3){grid-area:c}.pb-block--split-left{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"a c" "b c";gap:var(--pb-gutter);align-items:start}.pb-block--split-left>.pb-slot:nth-child(1){grid-area:a}.pb-block--split-left>.pb-slot:nth-child(2){grid-area:b}.pb-block--split-left>.pb-slot:nth-child(3){grid-area:c}.pb-slot[data-arrange=tight]>*+*{margin-top:.4em}.pb-slot[data-arrange=row]{display:flex;gap:var(--pb-gutter);align-items:flex-start}.pb-slot[data-arrange=row]>*{flex:1 1 0;min-width:0;margin:0!important}.pb-block[data-media="1-1"]{--pb-ar: 1 / 1}.pb-block[data-media="4-3"]{--pb-ar: 4 / 3}.pb-block[data-media="3-2"]{--pb-ar: 3 / 2}.pb-block[data-media="16-9"]{--pb-ar: 16 / 9}.pb-block[data-media="3-4"]{--pb-ar: 3 / 4}.pb-block[data-media="2-3"]{--pb-ar: 2 / 3}.pb-block[data-media] .pb-slot :is(img,video){aspect-ratio:var(--pb-ar);width:100%;height:auto;object-fit:cover}.pb-block--split-right[data-media],.pb-block--split-left[data-media]{align-items:stretch}.pb-block--split-right[data-media]>.pb-slot:first-child,.pb-block--split-left[data-media]>.pb-slot:last-child{height:100%}.pb-block--split-right[data-media]>.pb-slot:first-child :is(.pb-figure,p,figure),.pb-block--split-left[data-media]>.pb-slot:last-child :is(.pb-figure,p,figure){height:100%;margin:0}.pb-block--split-right[data-media]>.pb-slot:first-child :is(img,video),.pb-block--split-left[data-media]>.pb-slot:last-child :is(img,video){aspect-ratio:auto;height:100%}.pb-block[data-unplaced]{position:relative}@media(max-width:700px){.pb-block--cols,.pb-block--split-right,.pb-block--split-left{grid-template-columns:1fr;grid-template-areas:"a" "b" "c"}.pb-slot[data-arrange=row]{flex-direction:column}.pb-block--split-right[data-media]>.pb-slot:first-child :is(.pb-figure,p,figure),.pb-block--split-left[data-media]>.pb-slot:last-child :is(.pb-figure,p,figure){height:auto}.pb-block--split-right[data-media]>.pb-slot:first-child :is(img,video),.pb-block--split-left[data-media]>.pb-slot:last-child :is(img,video){aspect-ratio:var(--pb-ar);height:auto}}@media(prefers-reduced-motion:reduce){div[data-slot=project-body].pb-ready{transition:none}}.design-index__title{font-size:var(--step-2);font-weight:600;letter-spacing:-.015em;margin-bottom:var(--space-xs)}.design-index__intro{font-size:var(--step-0);color:var(--ink-soft);margin-bottom:var(--space-xl);max-width:var(--measure-prose)}.design-collection{margin-bottom:var(--space-xl)}.design-collection__title{font-size:var(--step-1);font-weight:500;letter-spacing:-.01em;color:var(--ink);margin:0 auto var(--space-sm);text-transform:none;max-width:var(--container-page);padding:0 var(--container-pad)}.design-collection__head{max-width:var(--container-page);margin:0 auto var(--space-sm);padding:0 var(--container-pad);display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-md);flex-wrap:wrap}.design-collection__head .design-collection__title{max-width:none;margin:0;padding:0}.design-filters{display:flex;align-items:baseline;gap:var(--space-md);flex-wrap:wrap}.design-filter{font-family:inherit;font-size:var(--step-0);font-weight:500;line-height:1.3;border:0;margin:0;padding:0;cursor:pointer;color:var(--ink);-webkit-text-fill-color:currentColor;transition:color var(--duration-fast) var(--ease-out),opacity var(--duration-fast) var(--ease-out)}.design-filter:hover{opacity:.6}.design-filter.is-active{background:var(--brand-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.design-collection__row{max-width:var(--container-page);margin:0 auto;padding:0 var(--container-pad);position:relative}.design-collection__row:after{content:"";position:absolute;top:0;right:var(--container-pad);bottom:var(--space-md);width:96px;background:linear-gradient(to right,transparent,var(--edge-fade-surface, var(--paper)));pointer-events:none;opacity:0;transition:opacity var(--duration-base) var(--ease-out);z-index:2}.design-collection__row[data-scrollable]:after{opacity:1}.design-scroll-next{position:absolute;top:38%;right:calc(var(--container-pad) + 6px);transform:translateY(-50%);z-index:3;width:40px;height:40px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--rule);background:var(--paper);color:var(--ink);cursor:pointer;opacity:0;transition:opacity var(--duration-base) var(--ease-out),transform var(--duration-fast) var(--ease-out);box-shadow:0 2px 10px #00000014}.design-collection__row[data-scrollable] .design-scroll-next{opacity:1}.design-scroll-next:hover{transform:translateY(-50%) scale(1.08)}.design-scroll-next:active{transform:translateY(-50%) scale(.95)}.design-collection__row:before{content:"";position:absolute;top:0;left:var(--container-pad);bottom:var(--space-md);width:96px;background:linear-gradient(to left,transparent,var(--edge-fade-surface, var(--paper)));pointer-events:none;opacity:0;transition:opacity var(--duration-base) var(--ease-out);z-index:2}.design-collection__row[data-scrollable-left]:before{opacity:1}.design-scroll-prev{position:absolute;top:38%;left:calc(var(--container-pad) + 6px);transform:translateY(-50%);z-index:3;width:40px;height:40px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--rule);background:var(--paper);color:var(--ink);cursor:pointer;opacity:0;transition:opacity var(--duration-base) var(--ease-out),transform var(--duration-fast) var(--ease-out);box-shadow:0 2px 10px #00000014}.design-collection__row[data-scrollable-left] .design-scroll-prev{opacity:1}.design-scroll-prev:hover{transform:translateY(-50%) scale(1.08)}.design-scroll-prev:active{transform:translateY(-50%) scale(.95)}.design-index{display:flex;flex-direction:row;gap:var(--space-2xs);width:100%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding-bottom:var(--space-md)}.design-index::-webkit-scrollbar{display:none}.design-card{flex:0 0 calc((100% - 2 * var(--space-2xs)) / 3);min-width:0;scroll-snap-align:start;display:grid;gap:var(--space-2xs);position:relative}.design-card__trigger{display:grid;gap:var(--space-2xs);text-align:left;cursor:pointer;background:none;border:0;padding:0;color:var(--ink);font:inherit}.design-card__media{display:block;width:100%;aspect-ratio:4 / 3;overflow:hidden;border-radius:4px;background:var(--rule);isolation:isolate}.design-card__media img{width:100%;height:100%;object-fit:cover;transition:transform .2s var(--ease-out),filter .2s var(--ease-out)}@media(hover:hover)and (pointer:fine){.design-card__trigger:hover .design-card__media img{transform:scale(1.015);will-change:transform}}.design-card__title{font-size:var(--step-0);font-weight:400;letter-spacing:0;margin-top:var(--space-2xs)}.design-expanded{max-width:var(--container-page);margin:0 auto var(--space-2xl);padding:0}main[data-page=design]{padding-bottom:var(--space-md)}.design-gallery[hidden]{display:none}.design-gallery{display:grid;gap:var(--space-sm)}.design-gallery__header{width:100%;max-width:var(--container-page);margin-right:0;margin-left:max(var(--container-pad),calc((100% - var(--container-page)) / 2));padding:0 var(--container-pad)}.design-gallery__info{display:grid;gap:var(--space-3xs)}.design-gallery__meta,.design-gallery__tags{font-size:var(--step--1);color:var(--ink);margin:0;max-width:none;letter-spacing:0;line-height:1.4}.design-gallery__meta .meta-label,.design-gallery__meta .meta-sep,.design-gallery__tags{color:var(--ink-faint)}.design-gallery__cta{display:inline-flex;align-items:baseline;gap:.25em;font-size:var(--step--1);font-weight:600;color:var(--ink);text-decoration:none;border-bottom:1px solid transparent;padding-bottom:2px;margin-top:var(--space-2xs);transition:border-color var(--duration-fast) var(--ease-out);white-space:nowrap;justify-self:start;width:max-content}.design-gallery__cta:hover{border-bottom-color:var(--ink)}.design-gallery__strip{display:flex;gap:var(--space-md);overflow-x:auto;scrollbar-width:none;padding-top:0;padding-right:var(--container-pad);padding-bottom:var(--space-md);padding-left:max(var(--container-pad),calc((100% - var(--container-page)) / 2));scroll-snap-type:x mandatory}.design-gallery__strip::-webkit-scrollbar{display:none}.design-gallery__strip img,.design-gallery__strip video{flex:0 0 auto;height:460px;width:auto;max-width:none;object-fit:cover;border-radius:6px;background:var(--rule);scroll-snap-align:start;transition:transform var(--duration-fast) var(--ease-out)}.design-reorder-panel[hidden]{display:none}.design-reorder-panel{position:fixed;left:0;right:0;bottom:0;z-index:100;background:var(--paper);border-top:1px solid var(--rule);box-shadow:0 -8px 24px #0000000f;padding:var(--space-sm) var(--container-pad);display:grid;grid-template-rows:auto 1fr;gap:var(--space-xs);max-height:220px}.design-reorder-panel__header{display:flex;align-items:center;gap:var(--space-md);font-size:var(--step--2)}.design-reorder-panel__title{font-weight:600;color:var(--ink);margin:0}.design-reorder-panel__hint{color:var(--ink-faint);flex:1}.design-reorder-panel__close{width:24px;height:24px;border-radius:4px;background:none;border:1px solid var(--rule);color:var(--ink-soft);font-size:14px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.design-reorder-panel__close:hover{border-color:var(--ink);color:var(--ink)}.design-reorder-panel__grid{display:flex;flex-wrap:nowrap;gap:var(--space-2xs);overflow-x:auto;scrollbar-width:thin;padding-bottom:var(--space-2xs)}.design-reorder-panel__thumb{flex:0 0 auto;width:96px;height:64px;border-radius:3px;overflow:hidden;background:var(--rule);cursor:grab;position:relative;transition:transform var(--duration-fast) var(--ease-out)}.design-reorder-panel__thumb:hover{transform:translateY(-2px)}.design-reorder-panel__thumb:active{cursor:grabbing}.design-reorder-panel__thumb[data-dragging=true]{opacity:.4}.design-reorder-panel__thumb img,.design-reorder-panel__thumb video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.design-reorder-panel__thumb[data-drop-side=left]{box-shadow:-3px 0 0 0 var(--ink)}.design-reorder-panel__thumb[data-drop-side=right]{box-shadow:3px 0 0 0 var(--ink)}@media(max-width:800px){.design-gallery__strip img,.design-gallery__strip video{height:clamp(220px,56vw,280px)}}@media(max-width:700px){.design-collection__head{align-items:flex-start;gap:var(--space-sm)}.design-filters{width:100%;flex-wrap:wrap;gap:var(--space-xs) var(--space-md);overflow:visible;padding-bottom:var(--space-3xs)}.design-filter{flex:0 0 auto;white-space:nowrap}.design-card{flex-basis:82%}.design-scroll-prev,.design-scroll-next,.design-collection__row:before,.design-collection__row:after{display:none}}ul[data-list=writing-index]{display:flex;flex-direction:column;gap:var(--space-md);border-top:1px solid var(--rule)}ul[data-list=writing-index] li{border-bottom:1px solid var(--rule);padding:var(--space-md) 0}ul[data-list=writing-index] a{display:grid;grid-template-columns:max-content 1fr;gap:var(--space-md);text-decoration:none;align-items:baseline}ul[data-list=writing-index] time{font-size:var(--step--1);color:var(--ink-faint);font-variant-numeric:tabular-nums;min-width:8rem}ul[data-list=writing-index] [data-slot=title]{font-size:var(--step-1);font-weight:500}ul[data-list=writing-index] [data-slot=summary]{display:block;color:var(--ink-soft);font-size:var(--step-0);margin-top:var(--space-3xs)}nav[data-slot=links] ul{display:flex;flex-direction:column;gap:0;font-size:var(--step-0);font-weight:400}nav[data-slot=links] li{padding:var(--space-xs) 0;border-top:1px solid var(--rule);font-weight:400}nav[data-slot=links] li:last-child{border-bottom:1px solid var(--rule)}nav[data-slot=links] a{display:flex;justify-content:space-between;align-items:baseline;text-decoration:none;color:var(--ink);font-weight:400}nav[data-slot=links] a:hover{color:var(--accent-hover)}nav[data-slot=links] a:after{content:"↗";color:var(--ink-faint);font-size:.85em;opacity:0;transition:opacity var(--duration-fast) var(--ease-out)}nav[data-slot=links] a:hover:after{opacity:1}section[data-slot=blurb]{max-width:var(--measure-prose);font-size:var(--step-0);color:var(--ink);margin-bottom:var(--space-xl);line-height:1.6}section[data-slot=blurb] p{max-width:none}section[data-slot=blurb] p+p{margin-top:var(--space-md);color:var(--ink-soft)}footer[data-slot=interactive-footer]{margin-top:var(--space-3xl);padding-top:var(--space-md);border-top:1px solid var(--rule);font-size:var(--step--1);color:var(--ink-faint)}.eyebrow{font-size:var(--step--2);text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--ink-faint);max-width:none}.home-page,.about-page,.archive-page{max-width:var(--container-page)}.home-page>*+*,.about-page>*+*,.archive-page>*+*{margin-top:var(--space-2xl)}.home-hero{padding:var(--space-xl) 0 var(--space-lg);display:grid;gap:var(--space-md)}.home-hero h1,.page-hero h1{max-width:20ch;font-size:var(--step-5);line-height:1.05;letter-spacing:0}.home-hero__lede,.page-hero p{font-size:var(--step-1);line-height:1.55;color:var(--ink-soft);max-width:66ch}.home-hero__media{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-sm);margin-top:var(--space-md)}.home-hero__media a{display:grid;gap:var(--space-2xs);color:var(--ink);text-decoration:none;min-width:0}.home-hero__media img{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:6px;background:var(--rule);outline:1px solid var(--border-subtle);transition:transform .2s var(--ease-out),filter .2s var(--ease-out)}@media(hover:hover)and (pointer:fine){.home-hero__media a:hover img{transform:scale(1.015);filter:saturate(1.08);will-change:transform}}.home-hero__media span{font-size:var(--step--1);font-weight:600;line-height:1.3}.proof-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--rule);border:1px solid var(--rule);margin-top:var(--space-md)}.proof-strip p{max-width:none;background:var(--paper);padding:var(--space-md);display:grid;gap:var(--space-3xs);min-height:7rem;margin:0}.proof-strip p+p{margin-top:0}.proof-strip strong{font-size:var(--step-2);line-height:1.1;font-variant-numeric:tabular-nums}.proof-strip span{color:var(--ink-soft);font-size:var(--step--1);line-height:1.45}.proof-strip span a{font-weight:600;color:var(--ink)}.proof-strip--compact{margin-bottom:var(--space-xl)}.proof-strip--compact p{min-height:5.75rem}.home-section{margin-top:var(--space-md)}.home-section>*+*{margin-top:var(--space-md)}.section-heading{display:grid;gap:var(--space-2xs)}.section-heading h2{font-size:var(--step-3);line-height:1.15;letter-spacing:0;text-transform:none;margin:0}.section-heading--split{display:flex;align-items:end;justify-content:space-between;gap:var(--space-md)}.text-link{display:inline-flex;align-items:center;min-height:40px;font-size:var(--step--1);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink);text-decoration:none;transition:color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.text-link:hover{color:var(--accent-hover)}.text-link:active{transform:scale(.96)}.path-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-sm)}.path-card,.resource-card{border:1px solid var(--rule);border-radius:8px;padding:var(--space-md);display:grid;align-content:start;gap:var(--space-sm);min-height:15rem;text-decoration:none;color:var(--ink);background:linear-gradient(180deg,var(--sheen),transparent),var(--paper)}.path-card{transition:border-color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.path-card:hover{border-color:var(--border-strong);transform:translateY(-2px);box-shadow:0 1px 2px #0000000a,0 14px 32px #00000012}.path-card:active{transform:scale(.96)}.path-card__kicker,.resource-card__label,.featured-work__meta{font-size:var(--step--2);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);font-weight:700}.path-card strong{font-size:var(--step-2);line-height:1.15}.path-card span:last-child{color:var(--ink-soft);font-size:var(--step--1);line-height:1.55}.featured-work{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-md)}.featured-work li,.featured-work a{min-width:0}.featured-work a{display:grid;gap:var(--space-sm);text-decoration:none;color:var(--ink)}.featured-work__media{display:block;aspect-ratio:4 / 3;overflow:hidden;border-radius:6px;background:var(--rule);outline:1px solid var(--border-subtle)}.featured-work__media img{width:100%;height:100%;object-fit:cover;transition:transform .2s var(--ease-out),filter .2s var(--ease-out)}@media(hover:hover)and (pointer:fine){.featured-work a:hover .featured-work__media img{transform:scale(1.025);filter:saturate(1.08);will-change:transform}}.featured-work__body{display:grid;gap:var(--space-3xs)}.featured-work__body strong{font-size:var(--step-1);line-height:1.2}.featured-work__body span:last-child{color:var(--ink-soft);font-size:var(--step--1);line-height:1.5}.experiment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md);align-items:stretch}.experiments-media{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-md)}.experiments-media a{display:block;text-decoration:none;color:var(--ink)}.experiments-media img{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:8px;display:block;transition:filter var(--duration-fast) var(--ease-out)}.experiments-media a:hover img{filter:saturate(1.08)}.experiments-media span{display:block;margin-top:var(--space-2xs);font-size:var(--step--1)}@media(max-width:800px){.experiments-media{grid-template-columns:repeat(2,minmax(0,1fr))}}.experiment-grid li{display:grid}.experiment-grid li>a{height:100%}.home-hero__media-head{display:flex;justify-content:flex-end;margin-bottom:var(--space-xs)}.text-link-arrow{display:inline-flex;align-items:center;gap:.35em;font-size:var(--step--1);font-weight:600;text-decoration:none;background:var(--brand-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;transition:gap var(--duration-fast) var(--ease-out),opacity var(--duration-fast) var(--ease-out)}.text-link-arrow:hover{gap:.6em;opacity:.8}a[href],button:not(:disabled),[role=button],label[for],summary,select{cursor:pointer}.experiment-grid a{display:grid;gap:var(--space-xs);min-height:12rem;padding:var(--space-md);border:1px solid var(--rule);border-radius:8px;background:linear-gradient(180deg,var(--sheen),transparent),var(--paper);color:var(--ink);text-decoration:none;transition:border-color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.experiment-grid a:hover{border-color:var(--border-strong);transform:translateY(-2px);box-shadow:0 1px 2px #0000000a,0 14px 32px #00000012}.experiment-grid a:active{transform:scale(.96)}.experiment-grid span{font-size:var(--step--2);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);font-weight:700}.experiment-grid strong{font-size:var(--step-2);line-height:1.15}.experiment-grid em{color:var(--ink-soft);font-style:normal;font-size:var(--step--1);line-height:1.55}.experiment-grid b{align-self:end;font-size:var(--step--2);text-transform:uppercase;letter-spacing:.08em}.inline-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-md)}.page-hero{display:grid;gap:var(--space-md)}.editorial-note{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:var(--space-md) 0;display:grid;gap:var(--space-sm)}.editorial-note p{margin:0;max-width:none}.editorial-note ul{display:grid;gap:var(--space-2xs);color:var(--ink-soft)}.editorial-note li{padding-left:var(--space-sm);position:relative}.editorial-note li:before{content:"";position:absolute;left:0;top:.7em;width:5px;height:5px;border-radius:50%;background:var(--accent-hover)}.resource-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md)}.resource-card h2{font-size:var(--step-2);line-height:1.15;text-transform:none;letter-spacing:0;margin:0}.resource-card p{color:var(--ink-soft);max-width:none}.resource-card footer{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);margin-top:auto;padding-top:var(--space-sm);border-top:1px solid var(--rule);font-size:var(--step--1)}.resource-card footer span:first-child{font-size:var(--step--2);text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--ink)}.resource-card footer a{font-weight:700}[data-state=empty]{color:var(--ink-soft)}li[data-state=empty]{display:grid;gap:var(--space-2xs);padding:var(--space-md) 0}li[data-state=empty] strong{color:var(--ink);font-size:var(--step-1)}li[data-state=empty] a{justify-self:start;font-weight:700}.timeline-list{display:grid;gap:0;border-top:1px solid var(--rule)}.timeline-list li{display:grid;grid-template-columns:9rem minmax(0,1fr);gap:var(--space-md);padding:var(--space-md) 0;border-bottom:1px solid var(--rule)}.timeline-list time{color:var(--ink-faint);font-size:var(--step--1);font-variant-numeric:tabular-nums}.timeline-list h3{font-size:var(--step-1);line-height:1.25;margin-top:var(--space-2xs)}.timeline-list p{color:var(--ink-soft);font-size:var(--step--1);margin-top:var(--space-2xs);max-width:58ch}.timeline-list--compact{margin-top:var(--space-xl)}@media(max-width:980px){.path-grid,.featured-work{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.home-hero h1,.page-hero h1{max-width:none}.proof-strip,.home-hero__media,.path-grid,.featured-work,.resource-grid,.experiment-grid{grid-template-columns:1fr}.proof-strip p{min-height:0}.section-heading--split{align-items:start;flex-direction:column}.path-card,.resource-card{min-height:0}.timeline-list li{grid-template-columns:1fr;gap:var(--space-2xs)}}.activity-heatmap{--timeline-surface: var(--activity-surface, var(--paper));--heatmap-empty: color-mix(in srgb, var(--rule) 45%, var(--timeline-surface));display:flex;flex-direction:column;gap:var(--space-sm);margin-top:var(--space-xl);font-family:var(--font-sans)}.heatmap-header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-sm)}.heatmap-header h3{font-size:var(--step--1);letter-spacing:0;font-weight:600;color:var(--ink)}.heatmap-header .tally{color:var(--ink-faint);font-variant-numeric:tabular-nums;font-size:var(--step--1)}.heatmap-timeline{display:flex;flex-direction:column;gap:var(--space-3xs);margin-bottom:var(--space-2xs);user-select:none}.heatmap-timeline__years{display:flex;justify-content:space-between;font-size:var(--step--2);font-variant-numeric:tabular-nums;letter-spacing:.02em;list-style:none;padding:0;margin:0}.heatmap-year--short{display:none}@media(max-width:640px){.heatmap-year--full{display:none}.heatmap-year--short{display:inline}}.heatmap-timeline__years button{background:none;border:0;padding:0 2px;margin:0;cursor:pointer;color:var(--ink-faint);font:inherit;letter-spacing:inherit;transition:color var(--duration-fast) var(--ease-out)}.heatmap-timeline__years button:hover{color:var(--ink-soft)}.heatmap-timeline__years button[data-current=true]{color:var(--ink);font-weight:600}.heatmap-timeline__track{position:relative;height:14px;margin-top:4px}.heatmap-timeline__track:before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:var(--rule);transform:translateY(-50%)}.heatmap-timeline__tick{position:absolute;top:50%;width:1px;height:9px;background:var(--rule);transform:translate(-50%,-50%);pointer-events:none}.heatmap-timeline__slider{position:absolute;top:50%;left:100%;width:10px;height:10px;background:var(--ink);border-radius:50%;transform:translate(-50%,-50%);transition:left .28s var(--ease-out);cursor:grab;z-index:2;box-shadow:0 0 0 2px var(--timeline-surface)}.heatmap-timeline__slider[data-dragging=true]{cursor:grabbing;transition:none;transform:translate(-50%,-50%) scale(1.15)}.heatmap-strip{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;padding-top:var(--space-2xs);padding-bottom:var(--space-2xs);scrollbar-width:none;-ms-overflow-style:none}.heatmap-strip::-webkit-scrollbar{display:none}.heatmap-strip__grid{display:grid;grid-template-rows:repeat(7,9px);grid-auto-flow:column;grid-auto-columns:9px;gap:2px;width:max-content}.heatmap-strip:focus-visible{outline:2px solid var(--ink);outline-offset:4px}.heatmap-strip-wrap{position:relative}.heatmap-cell.glint{animation-name:heatmap-cell-glint;animation-duration:.7s;animation-timing-function:var(--ease-in-out);animation-fill-mode:both}@keyframes heatmap-cell-glint{0%{filter:none}45%{filter:brightness(1.35) saturate(1.5)}to{filter:none}}.heatmap-swipe-hint{position:absolute;top:0;bottom:0;left:0;width:40px;display:flex;align-items:center;padding-left:2px;color:var(--ink-faint);background:linear-gradient(to right,var(--timeline-surface, var(--paper)) 35%,transparent);opacity:0;pointer-events:none;transition:opacity var(--duration-fast) var(--ease-out)}.heatmap-strip-wrap:hover .heatmap-swipe-hint{opacity:1}.heatmap-strip-wrap:hover .heatmap-swipe-hint svg{animation:heatmap-swipe-nudge 1s var(--ease-in-out) infinite}@keyframes heatmap-swipe-nudge{0%,to{transform:translate(0)}50%{transform:translate(-3px)}}@media(prefers-reduced-motion:reduce){.heatmap-cell.glint,.heatmap-strip-wrap:hover .heatmap-swipe-hint{animation:none}}.heatmap-cell{background:var(--rule);border-radius:2px;border:0;padding:0;transition:background var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out);cursor:default}.heatmap-cell[data-dominant-type=design]{background:hsla(24,70%,50%,var(--cell-a, 1))}.heatmap-cell[data-dominant-type=type]{background:hsla(280,50%,55%,var(--cell-a, 1))}.heatmap-cell[data-dominant-type=motion]{background:hsla(340,65%,55%,var(--cell-a, 1))}.heatmap-cell[data-dominant-type="3d"]{background:hsla(200,55%,50%,var(--cell-a, 1))}.heatmap-cell[data-dominant-type=image]{background:hsla(45,70%,55%,var(--cell-a, 1))}.heatmap-cell[data-dominant-type=coding]{background:hsla(140,30%,45%,var(--cell-a, 1))}.heatmap-cell[data-dominant-type=writing]{background:hsla(0,0%,30%,var(--cell-a, 1))}.heatmap-cell[data-dominant-type=audio]{background:hsla(180,45%,45%,var(--cell-a, 1))}.heatmap-cell[data-dominant-type=data]{background:hsla(220,30%,50%,var(--cell-a, 1))}.heatmap-cell[data-dominant-type=other]{background:hsla(0,0%,60%,var(--cell-a, 1))}.heatmap-cell[data-dominant-type][data-level="1"]{--cell-a: .6}.heatmap-cell[data-dominant-type][data-level="2"]{--cell-a: .75}.heatmap-cell[data-dominant-type][data-level="3"]{--cell-a: .9}.heatmap-cell[data-dominant-type][data-level="4"]{--cell-a: 1}.heatmap-cell:not([data-dominant-type]){background:var(--heatmap-empty)}.heatmap-cell:hover{transform:scale(1.6);z-index:2;position:relative;--cell-a: 1}.heatmap-cell[data-out-of-range]{background:transparent}.heatmap-cell--milestone{position:relative;cursor:pointer;z-index:1}.heatmap-cell--milestone:after{content:"";position:absolute;top:50%;left:50%;width:5px;height:5px;border-radius:50%;background:var(--ink-soft);transform:translate(-50%,-50%);pointer-events:none;transition:background var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.heatmap-cell--milestone[data-dominant-type=design]:after{background:#552607}.heatmap-cell--milestone[data-dominant-type=type]:after{background:#470b65}.heatmap-cell--milestone[data-dominant-type=motion]:after{background:#650b29}.heatmap-cell--milestone[data-dominant-type="3d"]:after{background:#0a415c}.heatmap-cell--milestone[data-dominant-type=image]:after{background:#6b5106}.heatmap-cell--milestone[data-dominant-type=coding]:after{background:#124925}.heatmap-cell--milestone[data-dominant-type=writing]:after{background:#0d0d0d}.heatmap-cell--milestone[data-dominant-type=audio]:after{background:#0e4e4e}.heatmap-cell--milestone[data-dominant-type=data]:after{background:#162d5a}.heatmap-cell--milestone[data-dominant-type=other]:after{background:var(--ink)}.heatmap-cell--milestone:hover:after{transform:translate(-50%,-50%) scale(1.15)}.milestone-badges-layer{position:absolute;inset:0;pointer-events:none}.milestone-badge{position:fixed;top:0;left:0;transform:translate(-50%,calc(-100% - 8px)) translateY(3px);white-space:nowrap;background:var(--paper);color:var(--ink);border:1px solid rgba(0,0,0,.1);padding:.28em .6em;border-radius:6px;font-size:.66rem;font-weight:500;letter-spacing:0;line-height:1.3;pointer-events:none;opacity:0;box-shadow:0 1px 2px #0000000a,0 4px 12px #0000000f;transition:opacity .4s var(--ease-out),transform .4s var(--ease-out);z-index:50}.milestone-badge[data-state=visible]{opacity:var(--mask-opacity, 1);transform:translate(-50%,calc(-100% - 8px)) translateY(0);pointer-events:auto;cursor:pointer}.activity-heatmap[data-popover-open] .milestone-badge{opacity:0!important;transition-duration:.15s}.heatmap-footer{display:flex;flex-direction:column;gap:var(--space-xs)}.heatmap-legend{display:flex;align-items:center;gap:var(--space-xs);font-size:var(--step--2);color:var(--ink-faint)}.heatmap-legend .legend-cells{display:inline-flex;gap:2px}.heatmap-legend .legend-cell{width:9px;height:9px;border-radius:2px;background:var(--rule)}.heatmap-legend .legend-cell[data-level="1"]{background:#f1e2c6}.heatmap-legend .legend-cell[data-level="2"]{background:#eac286}.heatmap-legend .legend-cell[data-level="3"]{background:#e3943b}.heatmap-legend .legend-cell[data-level="4"]{background:#a5531d}.heatmap-meta{font-size:var(--step--2);color:var(--ink-faint);letter-spacing:.02em}.heatmap-types{display:flex;flex-wrap:wrap;gap:var(--space-2xs) var(--space-sm);font-size:var(--step--2);color:var(--ink-soft);font-variant-numeric:tabular-nums;white-space:nowrap}.heatmap-types li{display:inline-flex;align-items:center;gap:.4em}.heatmap-types .type-label{letter-spacing:.02em;font-weight:500}.heatmap-types .type-count{color:var(--ink-faint)}.type-dot{width:8px;height:8px;border-radius:50%;background:var(--rule);display:inline-block}.type-dot--design{background:#d96e26}.type-dot--type{background:#9f53c6}.type-dot--motion{background:#d74273}.type-dot--3d{background:#3997c6}.type-dot--image{background:#ddb43c}.type-dot--coding{background:#509567}.type-dot--writing{background:#4d4d4d}.type-dot--audio{background:#3fa6a6}.type-dot--data{background:#5973a6}.type-dot--other{background:var(--ink-faint)}.milestone-popover{position:fixed;margin:0;padding:var(--space-md);background:linear-gradient(180deg,var(--sheen),transparent),var(--paper);border:1px solid var(--rule);border-radius:8px;max-width:22rem;font-size:var(--step--1);color:var(--ink);box-shadow:0 8px 24px #00000014;inset:unset;opacity:0;transition:opacity .2s var(--ease-out),overlay .2s var(--ease-out) allow-discrete,display .2s var(--ease-out) allow-discrete}.milestone-popover:popover-open{opacity:1}@starting-style{.milestone-popover:popover-open{opacity:0}}@media(prefers-reduced-motion:reduce){.milestone-popover{transition:none}}.milestone-popover::backdrop{background:transparent}.milestone-popover time{display:block;margin-bottom:var(--space-2xs);font-size:var(--step--2);color:var(--ink-faint);font-variant-numeric:tabular-nums}.milestone-popover h4{font-size:var(--step-1);font-weight:600;margin-bottom:var(--space-2xs);text-transform:none;letter-spacing:-.01em}.milestone-popover p{color:var(--ink-soft);font-size:var(--step--1);line-height:1.5;max-width:none}.milestone-tag{display:inline-block;font-size:.62rem;text-transform:uppercase;letter-spacing:.1em;font-weight:700;padding:.15em .5em;border-radius:999px;background:var(--rule);color:var(--ink-soft)}.milestone-tag--career{background:#deede3;color:#206035}.milestone-tag--release{background:#f9e8dc;color:#864113}.milestone-tag--location{background:#dfeef6;color:#194c66}.milestone-tag--education{background:#f2e8f7;color:#592673}.milestone-tag--personal{background:#fae6ec;color:#732640}.wikilink--unresolved{color:var(--ink-faint);border-bottom:1px dashed currentColor;cursor:not-allowed}section[data-section=epic-school],section[data-section=open-source]{margin-top:var(--space-xl);padding-top:var(--space-md);border-top:1px solid var(--rule)}section[data-section] h2{margin-bottom:var(--space-md)}section[data-section] ul li{font-size:var(--step-1);padding:var(--space-2xs) 0}.about-meta{display:grid;grid-template-columns:max-content 1fr;column-gap:var(--space-md);row-gap:var(--space-2xs);border-top:1px solid var(--rule);padding-top:var(--space-md);margin-top:var(--space-xl);font-size:var(--step--1)}.about-meta dt{text-transform:uppercase;letter-spacing:.06em;font-size:.72rem;font-weight:600;align-self:center;color:var(--ink)}.about-meta dd{color:var(--ink-soft);align-self:center}main table,article table{width:100%;max-width:var(--measure-wide);border-collapse:collapse;margin:var(--space-md) 0;font-size:var(--step-0)}main th,article th{text-align:left;text-transform:uppercase;letter-spacing:.06em;font-size:.72rem;font-weight:600;color:var(--ink-soft);padding:var(--space-xs) var(--space-sm) var(--space-xs) 0;border-bottom:1px solid var(--ink)}main td,article td{padding:var(--space-sm) var(--space-sm) var(--space-sm) 0;border-bottom:1px solid var(--rule);vertical-align:top}main td:last-child,article td:last-child{color:var(--ink-faint);font-variant-numeric:tabular-nums;white-space:nowrap}a.button{display:inline-block;padding:var(--space-xs) var(--space-md);border:1px solid var(--ink);text-decoration:none;font-size:var(--step--1);text-transform:uppercase;letter-spacing:.08em;font-weight:600;transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}a.button:hover{background:var(--ink);color:var(--paper)}a.button:active{transform:scale(.96)}a.button--quiet{border-color:var(--rule);color:var(--ink-soft)}a.button--quiet:hover{border-color:var(--ink);background:transparent;color:var(--ink)}.dial-test-note{background:var(--highlight);border:1px solid var(--rule);padding:var(--space-sm) var(--space-md);font-family:var(--font-mono);font-size:var(--step--1);border-radius:4px;margin-bottom:var(--space-lg)}.dial-test-static-hero{padding:var(--space-2xl) 0}.dial-test-static-hero h1{font-size:var(--step-5)}html.lenis,html.lenis body{height:auto}:root,:root[data-theme=dark]{--paper: #ffffff;--paper-rgb: 255, 255, 255;--ink: #0b0b0b;--ink-soft: #4d4d49;--ink-faint: #777772;--rule: #c8c8c3;--accent: #2357ff;--accent-hover: #0b0b0b;--highlight: #ffe600;--nav-bg: #ffffff;--font-sans: "Helvetica Neue", Arial, Helvetica, sans-serif;--container-max: 1600px;color-scheme:light}body{background:var(--paper);font-family:var(--font-sans);letter-spacing:0}h1,h2,h3,h4,h5,h6{letter-spacing:0}:focus-visible{outline:2px solid #2357ff;outline-offset:4px}.skip-link{position:fixed;z-index:1000;top:12px;left:12px;padding:10px 12px;border-radius:2px;background:#0b0b0b;color:#fff;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.site-shell,.site-shell--full{display:block;min-height:100vh}.site-content-col{min-width:0;view-transition-name:vt-main}.portfolio-nav{width:calc(100% - 48px);max-width:var(--container-max);height:76px;margin:0 auto;padding:0;display:flex;align-items:center;justify-content:space-between;gap:40px;border-bottom:1px solid #0b0b0b;background:transparent}.portfolio-nav__bar{display:flex;align-items:center;flex:0 0 auto}.portfolio-nav__brand{color:#0b0b0b;font-size:16px;font-weight:700;line-height:20px;text-transform:none}.portfolio-nav__toggle{display:none}.portfolio-nav__panel{display:block;flex:0 0 auto}.portfolio-nav__links{display:flex;align-items:center;gap:34px}.portfolio-nav__links a{position:relative;display:flex;align-items:center;min-height:44px;color:#0b0b0b;font-size:14px;line-height:20px}.portfolio-nav__links a:after{content:"";position:absolute;right:0;bottom:0;left:0;height:3px;background:#ffe600;transform:scaleX(0);transform-origin:left;transition:transform .18s var(--ease-out)}.portfolio-nav__links a:hover:after,.portfolio-nav__links a[data-active]:after{transform:scaleX(1)}.portfolio-nav__links a:active,.portfolio-nav__toggle:active,.project-lead__link:active,.visual-project__link:active{transform:scale(.98)}.portfolio-index-page{width:calc(100% - 48px);max-width:var(--container-max);margin:0 auto;padding:96px 0 128px}.portfolio-page-title{min-height:220px;padding:0 0 56px;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;align-items:end}.portfolio-page-title h1{grid-column:1 / span 7;font-size:72px;font-weight:700;line-height:72px}.portfolio-page-title p{grid-column:9 / -1;max-width:34ch;color:var(--ink-soft);font-size:17px;line-height:24px}.project-index{display:flex;flex-direction:column;gap:40px}article.project-lead{width:100%;max-width:none;margin:0;padding:0}.project-lead__link{display:flex;flex-direction:column;color:#0b0b0b;transition:transform .15s var(--ease-out)}.project-lead__media{position:relative;display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:8 / 3;overflow:hidden;border-radius:4px 4px 0 0;background:#08090b}.project-lead__media img{width:min(44%,620px);height:36%;object-fit:contain}.project-lead__body{display:grid;grid-template-columns:140px minmax(280px,1fr) auto auto auto;gap:24px;align-items:center;min-height:80px;padding:16px 20px;background:#ffe600}.project-lead__body strong{font-size:25px;font-weight:500;line-height:30px}.project-lead__summary{font-size:16px;line-height:22px}.project-lead__meta,.project-lead__body time,.project-lead__view{font-size:11px;font-weight:700;line-height:16px;text-transform:uppercase;white-space:nowrap}.visual-index{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:64px 24px}.visual-project{min-width:0}.visual-project__link{display:flex;flex-direction:column;gap:12px;color:inherit;transition:transform .15s var(--ease-out)}.visual-project__media{position:relative;display:block;width:100%;aspect-ratio:4 / 3;overflow:hidden;border-radius:4px;background:#e9e9e6;isolation:isolate}.visual-project__media>img,.visual-project__media>astro-island,.visual-project__media .dessa-preview,.visual-project__media canvas{width:100%;height:100%}.visual-project__media>img{object-fit:cover;transition:transform .24s var(--ease-out),filter .24s ease}.visual-project[data-slug=dessa] .dessa-preview__poster,.visual-project[data-slug=shader-render] .dessa-preview__poster{object-fit:contain;background:#f3f2ee}.visual-project__body{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 16px}.visual-project__heading{display:contents}.visual-project__heading strong{font-size:22px;font-weight:500;line-height:27px}.visual-project__heading time,.visual-project__meta{color:#0b0b0b;font-size:13px;line-height:18px}.visual-project__meta{grid-column:1 / -1}@media(hover:hover)and (pointer:fine){.visual-project__link:hover .visual-project__media>img{transform:scale(1.012);filter:saturate(1.05)}}.dessa-preview{position:relative;overflow:hidden;background:#08070b}.dessa-preview__poster,.dessa-preview canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.dessa-preview canvas{opacity:0;transition:opacity .24s var(--ease-out)}.dessa-preview[data-ready] canvas{opacity:1}.dessa-preview[data-ready] .dessa-preview__poster{opacity:0}.portfolio-index-page--experiments{width:100%;max-width:none;padding-right:max(24px,calc((100% - var(--container-max)) / 2));padding-left:max(24px,calc((100% - var(--container-max)) / 2));background:#0b0b0b;color:#fff}.portfolio-index-page--experiments .portfolio-page-title h1,.portfolio-index-page--experiments .portfolio-page-title p,.portfolio-index-page--experiments .visual-project__link,.portfolio-index-page--experiments .visual-project__heading time,.portfolio-index-page--experiments .visual-project__meta{color:#fff}.portfolio-index-page--experiments .visual-project__media{background:#1b1b1b}.about-page,.archive-page{width:calc(100% - 48px);max-width:var(--container-max);margin:0 auto;padding:96px 0 128px}.about-page .page-hero,.archive-page .page-hero{padding:0 0 64px}.about-page .page-hero{margin-bottom:0}.about-page .page-hero h1,.archive-page .page-hero h1{max-width:none;font-size:72px;line-height:72px}.about-page>p,.about-page>ul,.about-page>ol,.about-page>h2,.about-page>h3{max-width:760px;margin-right:auto;margin-left:auto}.about-page>*+*{margin-top:0}.about-page>p+p{margin-top:28px}.about-page>h2{margin-top:80px}.about-page>h2+p{margin-top:24px!important}.about-page>.about-meta{width:100%;max-width:760px;margin:56px auto 0}.about-page>.about-meta+h2{margin-top:80px}.resource-card{border-radius:4px}@media(max-width:1000px){.project-lead__body{grid-template-columns:120px minmax(220px,1fr) auto auto}.project-lead__view{display:none}}@media(max-width:760px){html[data-menu-open]{overflow:hidden}.portfolio-nav{width:100%;height:64px;padding:0 16px;border-bottom:0}.portfolio-nav__brand{font-size:15px;line-height:20px}.portfolio-nav__bar{width:100%;justify-content:space-between}.portfolio-nav__toggle{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:2px;background:#ffe600;transition:transform .15s var(--ease-out)}.portfolio-nav__toggle svg{width:18px;height:18px}.portfolio-nav__panel{position:fixed;z-index:70;inset:64px 0 0;display:none;padding:24px 16px;background:#fff;overflow-y:auto}.portfolio-nav__panel[data-open]{display:block}.portfolio-nav__links{display:flex;flex-direction:column;align-items:stretch;gap:0}.portfolio-nav__links a{min-height:64px;border-bottom:1px solid #0b0b0b;font-size:28px;font-weight:600;line-height:34px}.portfolio-nav__links a[data-active]{background:#ffe600}.portfolio-nav__links a:after{display:none}.portfolio-index-page,.about-page,.archive-page{width:100%;padding:42px 16px 96px}.portfolio-page-title{min-height:0;padding-bottom:32px;display:flex;flex-direction:column;align-items:stretch;gap:22px}.portfolio-page-title h1{max-width:none;font-size:54px;line-height:52px}.portfolio-page-title p{max-width:34ch;font-size:16px;line-height:22px}.project-index{gap:40px}.project-lead__media{aspect-ratio:4 / 3}.project-lead__media img{width:68%;height:38%}.project-lead__body{grid-template-columns:minmax(0,1fr) auto;gap:14px 16px;min-height:0;padding:16px}.project-lead__body strong{font-size:22px;line-height:26px}.project-lead__summary{grid-column:1 / -1;grid-row:2;max-width:32ch;font-size:15px;line-height:20px}.project-lead__body time{grid-column:2;grid-row:1}.project-lead__meta,.project-lead__view{display:none}.visual-index{grid-template-columns:1fr;gap:40px}.visual-project__media{aspect-ratio:4 / 3}.visual-project__heading strong{font-size:22px;line-height:26px}.portfolio-index-page--experiments{width:100%;margin-left:0;padding-right:16px;padding-left:16px}.about-page .page-hero h1,.archive-page .page-hero h1{font-size:54px;line-height:52px}.about-page .page-hero{padding-bottom:40px}.about-page>p+p{margin-top:20px}.about-page>h2,.about-page>.about-meta+h2{margin-top:56px}.about-page>h2+p{margin-top:16px!important}.about-page>.about-meta{margin-top:40px}}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}.lenis.lenis-stopped{overflow:hidden}.lenis.lenis-smooth iframe{pointer-events:none}:root{--color-background: #ffffff;--color-foreground: #0b0b0b;--color-surface: #e9e9e6;--color-muted: #555555;--color-link: #2357ff;--color-primary: #ffe600;--color-rule: #e0e0dc;--font-body: "Helvetica Neue", Helvetica, Arial, system-ui, -apple-system, sans-serif;--sp-gutter: 40px;--sp-max: 1440px;--sp-radius: 4px;--sp-ease: cubic-bezier(.16, 1, .3, 1)}@media(max-width:760px){:root{--sp-gutter: 16px}}body{font-family:var(--font-body)}.site-header,.site-footer,.sp-page{width:100%;max-width:var(--sp-max);margin-inline:auto;padding-inline:var(--sp-gutter);color:var(--color-foreground);font-family:var(--font-body)}.site-header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:28px}.site-header a{color:var(--color-foreground)}.site-header a:hover{color:var(--color-link)}.site-header__name{font-size:18px;font-weight:500;line-height:24px;white-space:nowrap}.site-header__nav{display:flex;gap:32px;font-size:16px;line-height:24px}.site-header__nav a[aria-current=page]{font-weight:500}.site-header__nav .site-header__email{color:var(--color-link)}.site-header__nav .site-header__email:hover{color:var(--color-foreground)}.site-footer{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;padding-top:200px;padding-bottom:40px}.site-footer__contact{display:flex;flex-direction:column;gap:12px;min-width:0}.site-footer__note{max-width:none;color:var(--color-muted);font-size:16px;line-height:24px}.site-footer__email{color:var(--color-link);font-size:44px;font-weight:500;letter-spacing:-.015em;line-height:52px;overflow-wrap:anywhere}.site-footer__email:hover{color:var(--color-foreground)}.site-footer__links{display:flex;gap:24px;font-size:16px;line-height:24px}.site-footer__links a{color:var(--color-foreground)}.site-footer__links a:hover{color:var(--color-link)}.site-footer__links a[href]:after,.sp-facts__links a[href]:after{content:none}main.sp-page{max-width:var(--sp-max);margin-inline:auto;padding:0 var(--sp-gutter)}.sp-page>*+*{margin-top:0}.sp-page>header{margin-bottom:0;color:inherit;font-size:inherit}.sp-page h2{margin-top:0;letter-spacing:0;text-transform:none}.sp-page h2+*{margin-top:0!important}.sp-page p{max-width:none}.sp-page p+p{margin-top:0}.sp-page h1,.sp-page h2{color:var(--color-foreground);font-family:var(--font-body);font-weight:500;text-wrap:pretty}.sp-page-title{display:flex;flex-direction:column;gap:12px;padding-top:96px;padding-bottom:64px}.sp-page-title h1{font-size:64px;letter-spacing:-.02em;line-height:68px}.sp-page-title p{max-width:680px;color:var(--color-muted);font-size:18px;line-height:28px}.sp-section{display:flex;flex-direction:column;gap:32px;padding-top:160px}.sp-section__head{display:flex;flex-direction:column;gap:8px}.sp-section__head h2{font-size:44px;letter-spacing:-.015em;line-height:52px}.sp-section__head p{color:var(--color-muted);font-size:16px;line-height:24px}.sp-page a{color:inherit}.sp-media{position:relative;display:block;width:100%;overflow:hidden;border-radius:var(--sp-radius);background:var(--color-surface);isolation:isolate}.sp-media>img{width:100%;height:100%;object-fit:cover}.sp-media[data-fit=logo]{display:flex;align-items:center;justify-content:center;background:var(--color-foreground)}.sp-media[data-fit=logo]>img{width:min(40%,520px);height:auto;object-fit:contain}.sp-media[data-fit=contain]{background:#f2f0ea}.sp-media[data-fit=contain]>img{object-fit:contain}.sp-media[data-fit=nest]{background:var(--sp-ground, var(--color-surface))}.sp-media[data-fit=nest]>img{object-fit:contain;box-sizing:border-box;padding:var(--sp-inset, 0)}.sp-pill{position:absolute;z-index:3;top:16px;left:16px;display:inline-flex;align-items:center;gap:8px;padding:6px 12px 6px 10px;border:1px solid #e0e0dc;border-radius:999px;background:#fff;color:var(--color-foreground);font-size:13px;font-weight:500;line-height:16px}.sp-pill__dot{width:7px;height:7px;flex-shrink:0;border-radius:4px;background:var(--color-link)}.sp-pill[data-kind=app] .sp-pill__dot{background:#999}.sp-media__cta{position:absolute;z-index:2;inset:0;display:flex;align-items:center;justify-content:center;background:#0b0b0b40;opacity:0;pointer-events:none;transition:opacity .24s var(--sp-ease)}.sp-cta{display:inline-flex;align-items:center;gap:6px;padding:10px 16px;border-radius:999px;background:#fff;color:var(--color-foreground);font-size:15px;font-weight:500;line-height:20px;white-space:nowrap}.sp-cta svg{display:block;flex-shrink:0;width:16px;height:16px}.sp-media[data-cta]>img{transition:filter .24s var(--sp-ease),transform .24s var(--sp-ease)}@media(hover:hover)and (pointer:fine){.sp-tile:hover .sp-media__cta{opacity:1}.sp-tile:hover .sp-media[data-cta]>img{filter:blur(8px);transform:scale(1.02)}}.sp-tile:focus-visible{outline:none}.sp-tile:focus-visible .sp-media{outline:2px solid var(--color-link);outline-offset:4px}.sp-tile:focus-visible .sp-media__cta{opacity:1}.sp-tile:focus-visible .sp-media[data-cta]>img{filter:blur(8px);transform:scale(1.02)}@media(prefers-reduced-motion:reduce){.sp-media[data-cta]>img,.sp-media__cta{transition:none}.sp-tile:hover .sp-media[data-cta]>img,.sp-tile:focus-visible .sp-media[data-cta]>img{transform:none}}.sp-intro{display:flex;flex-direction:column;gap:32px;padding-block:120px}.sp-page .sp-intro__lede{max-width:1120px;font-size:44px;font-weight:400;letter-spacing:-.015em;line-height:52px}.sp-current{display:flex;align-items:center;gap:10px;color:var(--color-muted);font-size:16px;line-height:24px}.sp-current__dot{width:8px;height:8px;flex-shrink:0;border-radius:4px;background:var(--color-primary)}.sp-cases{display:flex;flex-direction:column;gap:56px}.sp-cases__pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.sp-case{display:flex;flex-direction:column;gap:20px}.sp-case--lead .sp-media{aspect-ratio:1360 / 760}.sp-cases__pair .sp-media{aspect-ratio:672 / 520}.sp-case__caption{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.sp-case__caption--stacked{flex-direction:column;gap:6px}.sp-case__text{display:flex;flex-direction:column;gap:6px;min-width:0}.sp-case__row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;width:100%}.sp-case__title{font-size:28px;font-weight:500;letter-spacing:-.01em;line-height:34px}.sp-case__blurb{color:var(--color-muted);font-size:16px;line-height:24px}.sp-case__year{flex-shrink:0;color:var(--color-muted);font-size:14px;line-height:20px}.sp-case:hover .sp-case__title,.sp-thumb:hover .sp-thumb__label,.sp-tile:hover .sp-built__title,.sp-tile:hover .sp-grid__title,.sp-note:hover .sp-note__title,.sp-post:hover .sp-post__title{color:var(--color-link)}.sp-built{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.sp-built__tile{display:flex;flex-direction:column;gap:14px}.sp-built__tile .sp-media{aspect-ratio:443 / 420}.sp-built__text{display:flex;flex-direction:column;gap:4px}.sp-built__title{font-size:20px;font-weight:500;line-height:26px}.sp-built__blurb{color:var(--color-muted);font-size:15px;line-height:22px}.sp-thumbs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:16px}.sp-thumb{display:flex;flex-direction:column;gap:10px}.sp-thumb .sp-media{aspect-ratio:213 / 220}.sp-thumb__label{font-size:15px;line-height:20px}.sp-page .sp-more-link{align-self:flex-start;color:var(--color-link);font-size:16px;font-weight:500;line-height:24px}.sp-page .sp-more-link:hover{color:var(--color-foreground)}.sp-notes{display:flex;flex-direction:column;width:100%;border-top:1px solid var(--color-foreground)}.sp-note{display:flex;align-items:center;gap:24px;padding-block:16px;border-bottom:1px solid var(--color-rule)}.sp-note__thumb{display:block;width:128px;height:80px;flex-shrink:0;overflow:hidden;border-radius:var(--sp-radius);background:var(--color-surface)}.sp-note__thumb img,.sp-post__thumb img{width:100%;height:100%;object-fit:cover}.sp-note__title{flex:1 1 0%;min-width:0;font-size:20px;line-height:28px}.sp-note__date{width:80px;flex-shrink:0;color:var(--color-muted);font-size:14px;line-height:20px;text-align:right}.sp-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:48px 16px}.sp-grid__tile{display:flex;flex-direction:column;gap:14px}.sp-grid__tile .sp-media{aspect-ratio:4 / 3}.sp-grid__caption{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.sp-grid__title{min-width:0;font-size:20px;font-weight:500;line-height:26px}.sp-grid__tag{flex-shrink:0;color:var(--color-muted);font-size:14px;line-height:20px}.sp-grid__tag[data-kind=prototype]{color:var(--color-link);font-weight:500}.sp-post-list{display:flex;flex-direction:column;width:100%;border-top:1px solid var(--color-foreground)}.sp-post{display:flex;align-items:center;gap:32px;padding-block:24px;border-bottom:1px solid var(--color-rule)}.sp-post__thumb{display:block;width:240px;height:150px;flex-shrink:0;overflow:hidden;border-radius:var(--sp-radius);background:var(--color-surface)}.sp-post__text{display:flex;flex:1 1 0%;flex-direction:column;gap:8px;min-width:0}.sp-post__date{color:var(--color-muted);font-size:14px;line-height:20px}.sp-post__title{font-size:24px;font-weight:500;letter-spacing:-.01em;line-height:30px}.sp-post__summary{color:var(--color-muted);font-size:16px;line-height:24px}.sp-about__intro{display:flex;flex-direction:column;gap:32px;padding-block:96px}.sp-about__intro h1{font-size:64px;letter-spacing:-.02em;line-height:68px}.sp-page .sp-about__lede{max-width:1000px;font-size:44px;letter-spacing:-.015em;line-height:52px}.sp-about__body{display:flex;align-items:stretch;gap:16px}.sp-about__portrait{width:442px;height:600px;flex-shrink:0;border-radius:var(--sp-radius);background:var(--color-surface)}.sp-about__content{display:flex;flex:1 1 0%;flex-direction:column;justify-content:space-between;gap:64px;min-width:0}.sp-about__columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.sp-about__column{display:flex;flex-direction:column;gap:16px;padding-right:24px}.sp-about__column h2{font-size:24px;letter-spacing:-.01em;line-height:30px}.sp-about__column p{font-size:18px;line-height:28px}.sp-facts{border-top:1px solid var(--color-foreground);font-size:16px;line-height:24px}.sp-facts>div{display:flex;gap:24px;padding-block:16px;border-bottom:1px solid var(--color-rule)}.sp-facts dt{width:140px;flex-shrink:0;color:var(--color-muted)}.sp-facts dd{min-width:0}.sp-facts__item{white-space:nowrap}.sp-facts__links,.sp-page .sp-facts__links a{color:var(--color-link)}.sp-page .sp-facts__links a:hover{color:var(--color-foreground)}.sp-timeline{gap:24px;padding-top:140px}.sp-timeline .activity-heatmap{margin-top:0}.sp-timeline .heatmap-header,.sp-pointer-coarse{display:none}@media(hover:none)and (pointer:coarse){.sp-pointer-fine{display:none}.sp-pointer-coarse{display:inline}}@media(max-width:1100px){.sp-about__body{flex-direction:column}.sp-about__portrait{width:100%;height:420px}.sp-thumbs{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:20px}.sp-page .sp-intro__lede,.sp-page .sp-about__lede{font-size:36px;line-height:44px}.sp-intro{padding-block:96px}}@media(max-width:760px){.site-header__nav{gap:16px;font-size:15px}.site-footer{flex-direction:column;align-items:flex-start;padding-top:120px}.site-footer__email{font-size:24px;line-height:30px}.sp-page-title{padding-top:56px;padding-bottom:40px}.sp-page-title h1{font-size:40px;line-height:44px}.sp-page-title p{font-size:16px;line-height:24px}.sp-section{gap:24px;padding-top:104px}.sp-section__head h2{font-size:32px;line-height:38px}.sp-intro{gap:24px;padding-top:56px;padding-bottom:64px}.sp-page .sp-intro__lede{font-size:28px;line-height:34px}.sp-current{align-items:flex-start;font-size:15px;line-height:22px}.sp-current__dot{margin-top:7px}.sp-cases{gap:48px}.sp-cases__pair{grid-template-columns:1fr;gap:48px}.sp-case--lead .sp-media{aspect-ratio:358 / 240}.sp-cases__pair .sp-media{aspect-ratio:358 / 280}.sp-case__title{font-size:24px;line-height:30px}.sp-case__blurb{font-size:15px;line-height:22px}.sp-built{grid-template-columns:1fr;gap:28px}.sp-built__tile .sp-media{aspect-ratio:358 / 240}.sp-pill{top:14px;left:14px}.sp-built__title{font-size:17px;line-height:22px}.sp-built__blurb{font-size:14px;line-height:20px}.sp-thumbs{gap:20px 12px}.sp-thumb .sp-media{aspect-ratio:1}.sp-note{flex-direction:column;align-items:flex-start;gap:10px;padding-block:20px}.sp-note__thumb{width:100%;height:180px}.sp-note__title{flex:none;font-size:17px;line-height:24px}.sp-note__date{width:auto;text-align:left}.sp-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.sp-grid__tile{gap:8px}.sp-grid__caption{flex-direction:column;align-items:flex-start;gap:2px}.sp-grid__title{font-size:16px;line-height:22px}.sp-grid__tag{font-size:13px;line-height:18px}.sp-cta{padding:8px 12px;font-size:14px}.sp-post{flex-direction:column;align-items:stretch;gap:12px}.sp-post__thumb{width:100%;height:200px}.sp-post__title{font-size:20px;line-height:26px}.sp-post__summary{font-size:15px;line-height:22px}.sp-about__intro{gap:20px;padding-top:56px;padding-bottom:32px}.sp-about__intro h1{font-size:40px;line-height:44px}.sp-page .sp-about__lede{font-size:26px;line-height:32px}.sp-about__body{gap:32px}.sp-about__content{max-width:720px;gap:32px}.sp-about__columns{grid-template-columns:1fr;gap:32px}.sp-about__column{gap:16px;padding-right:0}.sp-about__column h2{font-size:20px;line-height:26px}.sp-about__column p{font-size:16px;line-height:26px}.sp-facts>div{gap:12px}.sp-facts dt{width:96px}.sp-timeline{gap:16px;padding-top:96px}.sp-timeline .sp-section__head p{font-size:15px;line-height:24px}}article.case-study{--case-measure: 720px;--case-gap: 16px;width:100%;max-width:var(--sp-max);margin:0 auto;padding:0 var(--sp-gutter);color:var(--color-foreground);font-family:var(--font-body)}article.case-study>*+*{margin-top:0}.case-study .case-hero{display:flex;flex-direction:column;gap:20px;margin:0;padding:96px 0 48px}.case-study .case-hero h1{max-width:none;color:var(--color-foreground);font-family:var(--font-body);font-size:88px;font-weight:500;letter-spacing:-.025em;line-height:92px;text-wrap:balance}.case-study .case-hero__summary{max-width:var(--case-measure);color:var(--color-muted);font-size:24px;line-height:32px}.case-study .case-meta{display:flex;gap:16px;margin:0;padding:16px 0 40px;border-top:1px solid var(--color-foreground)}.case-study .case-meta>div{display:flex;flex:1 1 0;flex-direction:column;gap:4px;min-width:0}.case-study .case-meta dt{color:var(--color-muted);font-size:14px;font-weight:400;letter-spacing:0;line-height:20px;text-transform:none}.case-study .case-meta dd{margin:0;font-size:16px;line-height:24px}.case-study .case-meta__links,.case-study .case-meta__links a{color:var(--color-link)}.case-study .case-meta__links a:hover{color:var(--color-foreground)}.case-study .case-meta__links a:after{content:none}.case-study .case-cover{margin:0;overflow:hidden;border-radius:var(--sp-radius)}.case-study .case-cover img{display:block;width:100%;height:auto}.case-study .case-cover[data-fit=logo]{display:flex;align-items:center;justify-content:center;aspect-ratio:16 / 9;background:var(--color-foreground)}.case-study .case-cover[data-fit=logo] img{width:min(40%,520px);padding:0;background:transparent}.prototype-frame{--prototype-cream: #f3efe6;display:flex;flex-direction:column;gap:16px;margin:0;padding:24px;border-radius:var(--sp-radius);background:var(--prototype-cream)}.prototype-frame__stage{position:relative;overflow:hidden;aspect-ratio:16 / 10;border-radius:var(--sp-radius);background:#0b0b10}.prototype-frame__stage>iframe,.prototype-frame__start{display:block;width:100%;height:100%;border:0}.prototype-frame__start{position:relative;padding:0;cursor:pointer;background:transparent}.prototype-frame__start img{width:100%;height:100%;object-fit:cover;filter:blur(6px) brightness(.8);transform:scale(1.03)}.prototype-frame__start .sp-cta{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.prototype-frame__start:hover .sp-cta,.prototype-frame__start:focus-visible .sp-cta{background:var(--color-foreground);color:var(--color-background)}.prototype-frame__bar{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;font-size:15px;line-height:22px}.prototype-frame__bar .sp-pill{position:static}.prototype-frame__note{flex:1 1 320px;color:var(--color-muted)}.prototype-frame__open{color:var(--color-link);font-weight:500;white-space:nowrap}.prototype-frame__open:hover{color:var(--color-foreground)}.prototype-frame__open:after{content:none}@media(max-width:760px){.prototype-frame{padding:12px;gap:12px}.prototype-frame__stage{aspect-ratio:4 / 5}}.case-study .case-body{display:flex;flex-direction:column;align-items:flex-start;max-width:none;margin:0;padding-top:96px;color:var(--color-foreground);font-family:var(--font-body);font-size:18px;line-height:28px}.case-study .case-body>*{margin:0}.case-study .case-body>*+*{margin-top:20px}.case-study .case-body>p,.case-study .case-body>ul,.case-study .case-body>ol,.case-study .case-body>blockquote,.case-study .case-body>h3,.case-study .case-body>h4,.case-study .case-body>h5,.case-study .case-body>h6,.case-study .case-body>.case-columns{width:100%;max-width:var(--case-measure)}.case-study .case-body>p:first-child{font-size:26px;font-weight:500;letter-spacing:-.01em;line-height:36px}.case-study .case-body>ul,.case-study .case-body>ol{padding-left:20px;list-style:disc}.case-study .case-body>ol{list-style:decimal}.case-study .case-body li+li{margin-top:6px}.case-study .case-body>blockquote{margin-top:48px;padding:4px 0 4px 20px;border-left:2px solid var(--color-foreground);color:var(--color-foreground);font-size:22px;font-style:normal;font-weight:500;line-height:32px}.case-study .case-body>h2{max-width:none;margin-top:120px;color:var(--color-foreground);font-size:40px;font-weight:500;letter-spacing:-.015em;line-height:46px;overflow-wrap:normal;text-transform:none;text-wrap:balance}.case-study .case-body>h3,.case-study .case-body>h4,.case-study .case-body>h5,.case-study .case-body>h6{margin-top:56px;margin-bottom:0;color:var(--color-foreground);font-size:26px;font-weight:500;letter-spacing:-.01em;line-height:32px;text-transform:none}.case-study .case-body>h4,.case-study .case-body>h5,.case-study .case-body>h6{font-size:20px;line-height:26px}.case-study .case-body>h2+*,.case-study .case-body>h3+*{margin-top:20px}.case-study .case-body>h2+h3{margin-top:32px}.case-study .case-body>hr{width:100%;margin:96px 0 0!important}.case-study .case-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 48px;max-width:calc(var(--case-measure) * 1.4)!important}.case-study .case-columns>div>*+*{margin-top:12px}.case-study .case-columns ul{padding-left:20px;list-style:disc}.case-study .case-body>.case-group,.case-study .case-body>.case-split{width:100%}.case-study .case-body>*+.case-group,.case-study .case-body>*+.case-split{margin-top:48px}.case-study .case-body>.case-group+.case-group{margin-top:var(--case-gap)}.case-study .case-body>.case-split+.case-split{margin-top:64px}.case-study .case-body>.case-group+:not(.case-group,.case-split,h2),.case-study .case-body>.case-split+:not(.case-group,.case-split,h2){margin-top:48px}.case-study .case-body>.case-group+h2,.case-study .case-body>.case-split+h2{margin-top:120px}.case-study .case-group{display:flex;flex-direction:column;gap:var(--case-gap)}.case-study .case-row{display:flex;align-items:flex-start;gap:var(--case-gap)}.case-study .case-item{display:flex;flex:var(--ratio) 1 0%;flex-direction:column;gap:10px;min-width:0;margin:0}.case-study .case-item>img,.case-study .case-item>video,.case-study .case-item>a>img,.case-study .case-item>iframe{display:block;width:100%;height:auto;margin:0;aspect-ratio:var(--ratio);border-radius:0;background:none;object-fit:contain}.case-study .case-item>picture>img{width:100%;height:auto}.case-study .case-item figcaption{max-width:64ch;color:var(--color-muted);font-size:13px;line-height:18px}.case-study .case-frame{padding:clamp(20px,5%,72px);border-radius:0;background:var(--case-frame-ground, #eceae4);overflow:hidden}.case-study .case-frame[data-frame=corner]{padding-top:0;padding-right:0}.case-study[data-project=kitana]{--case-frame-ground: #161616}.case-study .case-frame>img,.case-study .case-frame>video{display:block;width:100%;height:auto;aspect-ratio:var(--ratio);border-radius:10px;box-shadow:0 1px 2px #0000000f,0 12px 32px #00000014}.case-study .case-frame[data-frame=corner]>img,.case-study .case-frame[data-frame=corner]>video{border-radius:0 0 0 10px}.case-study .case-frame[data-frame=place]{position:relative;container-type:inline-size;padding:0;aspect-ratio:var(--fw) / var(--fh);background:var(--ground, transparent)}.case-study .case-frame[data-frame=place]>img,.case-study .case-frame[data-frame=place]>video{position:absolute;top:calc(var(--y, 0) / var(--fh) * 100%);left:calc(var(--x, 0) / var(--fw) * 100%);width:calc(var(--w, var(--fw)) / var(--fw) * 100%);max-width:none;height:calc(var(--h, var(--fh)) / var(--fh) * 100%);margin:0;aspect-ratio:auto;object-fit:cover;border-radius:calc(var(--r, 0) / var(--fw) * 100cqw);box-shadow:none}.case-study .case-split{display:flex;align-items:flex-start;gap:var(--case-gap)}.case-study .case-split__media{flex:0 0 calc(50% - var(--case-gap) / 2)}.case-study .case-split__text{display:flex;flex:1 1 0;flex-direction:column;gap:14px;min-width:0;max-width:616px}.case-study .case-split__text>*{max-width:none;margin:0}.case-study .case-split__text h3{color:var(--color-foreground);font-size:32px;font-weight:500;letter-spacing:-.015em;line-height:38px;text-transform:none}.case-study .case-split__text>p~p{color:var(--color-muted)}.case-study .case-body>.case-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.case-study .case-actions .case-button{display:inline-flex;align-items:center;padding:11px 17px;border:1px solid var(--color-foreground);border-radius:999px;color:var(--color-foreground);font-size:15px;font-weight:500;line-height:20px;text-decoration:none;transition:background-color .16s var(--sp-ease),border-color .16s var(--sp-ease),color .16s var(--sp-ease)}.case-study .case-actions .case-button--primary{background:var(--color-foreground);color:var(--color-background)}.case-study .case-actions .case-button:hover{border-color:var(--color-link);color:var(--color-link)}.case-study .case-actions .case-button--primary:hover{background:var(--color-link);color:var(--color-background)}.case-study .case-actions a:after{content:none}.case-study .case-body>.case-credits{display:flex;gap:16px;width:100%;max-width:none;margin-top:96px}.case-study .case-credits>div{display:flex;flex:1 1 0;flex-direction:column;gap:8px;min-width:0;padding-top:16px;border-top:1px solid var(--color-foreground)}.case-study .case-credits p{max-width:none;margin:0;font-size:16px;line-height:24px}.case-study .case-credits .case-credits__label{color:var(--color-muted);font-size:14px;line-height:20px}.case-study .case-credits a{color:inherit}.case-study .case-credits a:hover{color:var(--color-link)}.case-study .case-credits a:after{content:none}.case-study .case-study__outcomes{display:flex;flex-direction:column;gap:20px;margin:120px 0 0;padding-top:16px;border-top:1px solid var(--color-foreground)}.case-study .case-study__outcomes h2{margin:0;font-size:40px;font-weight:500;letter-spacing:-.015em;line-height:46px;text-transform:none}.case-study .case-study__outcomes ul{display:flex;flex-direction:column;gap:6px;max-width:var(--case-measure);margin:0;padding-left:20px;font-size:18px;line-height:28px;list-style:disc}.case-study .case-body>p.case-muted{color:var(--color-muted)}.case-study .case-body>p.case-note{font-size:16px;line-height:24px}.case-study .case-item>picture{display:block;width:100%}.case-study .case-item>picture>img{display:block;width:100%;height:auto;margin:0;border-radius:0;background:none}.case-study .case-device{--_fw: var(--fw);--_fh: var(--fh);--_ix: var(--ix, 0);--_iy: var(--iy, 0);--_iw: var(--iw, var(--fw));--_ih: var(--ih, var(--fh));--_sx: var(--sx);--_sy: var(--sy);--_sw: var(--sw);--_sh: var(--sh);position:relative;container-type:inline-size;overflow:hidden;aspect-ratio:var(--_fw) / var(--_fh);background:var(--ground, transparent)}.case-study .case-device>.case-device__photo,.case-study .case-device>.case-device__fg{position:absolute;top:calc(var(--_iy) / var(--_fh) * 100%);left:calc(var(--_ix) / var(--_fw) * 100%);width:calc(var(--_iw) / var(--_fw) * 100%);max-width:none;height:calc(var(--_ih) / var(--_fh) * 100%);margin:0;aspect-ratio:auto;object-fit:fill}.case-study .case-device>.case-device__fg{pointer-events:none}.case-study .case-device>.case-device__screen{position:absolute;top:calc(var(--_sy) / var(--_fh) * 100%);left:calc(var(--_sx) / var(--_fw) * 100%);width:calc(var(--_sw) / var(--_fw) * 100%);height:calc(var(--_sh) / var(--_fh) * 100%);overflow:hidden;border-radius:calc(var(--sr, 0) / var(--_fw) * 100cqw);background:var(--sb, #000)}.case-study .case-device__screen>video{display:block;width:100%;height:100%;margin:0;border-radius:0;background:transparent;object-fit:contain}.case-study .case-body>.case-results{display:flex;flex-direction:column;gap:56px;width:100%;max-width:none}.case-study .case-body>*+.case-results{margin-top:36px}.case-study .case-body>.case-results+*{margin-top:80px}.case-study .case-results p{max-width:none;margin:0}.case-study .case-results__phase{display:grid;grid-template-columns:280px repeat(4,minmax(0,250px));gap:20px;padding-top:24px;border-top:1px solid var(--color-foreground)}.case-study .case-results__head{display:flex;flex-direction:column;gap:6px}.case-study .case-results__tag{display:flex;align-items:center;gap:10px;color:#3e8e1f;font-size:14px;font-weight:500;letter-spacing:.04em;line-height:20px}.case-study .case-results__tag:before{content:"";flex:0 0 10px;height:10px;border-radius:50%;background:#56bc2f}.case-study .case-results__title{font-size:22px;font-weight:500;letter-spacing:-.01em;line-height:28px}.case-study .case-results__stat{display:flex;flex-direction:column;gap:10px;min-width:0}.case-study .case-results__value{font-size:64px;font-weight:500;letter-spacing:-.03em;line-height:68px;white-space:nowrap}.case-study .case-results__label{font-size:16px;line-height:24px}.case-study .case-results__note{color:var(--color-muted);font-size:14px;line-height:20px}@media(max-width:1100px){.case-study .case-results__phase{grid-template-columns:repeat(4,minmax(0,1fr))}.case-study .case-results__head{grid-column:1 / -1}.case-study .case-results__value{font-size:48px;line-height:52px}}@media(max-width:760px){.case-study .case-device{--_fw: var(--m-fw, var(--fw));--_fh: var(--m-fh, var(--fh));--_ix: var(--m-ix, var(--ix, 0));--_iy: var(--m-iy, var(--iy, 0));--_sx: var(--m-sx, var(--sx));--_sy: var(--m-sy, var(--sy))}.case-study .case-body>p.case-note{font-size:14px;line-height:20px}.case-study .case-body>.case-results{gap:40px}.case-study .case-body>*+.case-results{margin-top:32px}.case-study .case-body>.case-results+*{margin-top:56px}.case-study .case-results__phase{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 16px;padding-top:20px}.case-study .case-results__title{font-size:20px;line-height:26px}.case-study .case-results__value{font-size:40px;letter-spacing:-.025em;line-height:44px}.case-study .case-results__stat{gap:6px}.case-study .case-results__label{font-size:15px;line-height:22px}}.case-study .case-next{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding-top:140px;color:var(--color-foreground);text-decoration:none}.case-study .case-next__text{display:flex;flex-direction:column;gap:8px;min-width:0}.case-study .case-next__label{color:var(--color-muted);font-size:16px;line-height:24px}.case-study .case-next__title{font-size:64px;font-weight:500;letter-spacing:-.02em;line-height:68px;transition:color .16s var(--sp-ease)}.case-study .case-next__media{flex:0 0 442px}.case-study .case-next__media .sp-media{aspect-ratio:442 / 280}.case-study .case-next:hover .case-next__title{color:var(--color-link)}.case-study .case-next:focus-visible{outline:none}.case-study .case-next:focus-visible .sp-media{outline:2px solid var(--color-link);outline-offset:4px}@media(max-width:1100px){.case-study .case-hero h1{font-size:72px;line-height:76px}.case-study .case-next__media{flex-basis:40%}.case-study .case-next__title{font-size:48px;line-height:52px}}@media(max-width:760px){article.case-study{--case-gap: 10px}.case-study .case-hero{gap:12px;padding:48px 0 32px}.case-study .case-hero h1{font-size:48px;line-height:52px}.case-study .case-hero__summary{font-size:18px;line-height:26px}.case-study .case-meta{flex-wrap:wrap;padding-bottom:32px}.case-study .case-meta>div{flex:0 0 calc(50% - 8px)}.case-study .case-meta__links{font-size:15px}.case-study .case-body{padding-top:56px;font-size:16px;line-height:26px}.case-study .case-body>p:first-child{font-size:20px;line-height:28px}.case-study .case-body>h2,.case-study .case-body>.case-group+h2,.case-study .case-body>.case-split+h2{margin-top:80px;font-size:28px;line-height:34px}.case-study .case-body>h2+*{margin-top:14px}.case-study .case-body>h3,.case-study .case-body>h4,.case-study .case-body>h5,.case-study .case-body>h6{margin-top:40px;font-size:22px;line-height:28px}.case-study .case-body>blockquote{font-size:19px;line-height:28px}.case-study .case-body>hr{margin-top:64px!important}.case-study .case-columns{grid-template-columns:1fr}.case-study .case-body>*+.case-group,.case-study .case-body>*+.case-split{margin-top:32px}.case-study .case-body>.case-group+.case-group{margin-top:var(--case-gap)}.case-study .case-body>.case-split+.case-split{margin-top:48px}.case-study .case-body>.case-group+:not(.case-group,.case-split,h2),.case-study .case-body>.case-split+:not(.case-group,.case-split,h2){margin-top:32px}.case-study .case-row[data-stack=phone]{flex-direction:column}.case-study .case-row[data-stack=phone] .case-item{flex:none;width:100%}.case-study .case-split{flex-direction:column;align-items:stretch;gap:16px}.case-study .case-split__media{flex:none;width:100%}.case-study .case-split__text{gap:8px;max-width:none;padding-left:0}.case-study .case-split__text h3{font-size:22px;letter-spacing:0;line-height:28px}.case-study .case-split__text p{font-size:16px;line-height:25px}.case-study .case-body>.case-credits{flex-direction:column;gap:24px;margin-top:64px}.case-study .case-study__outcomes{margin-top:80px}.case-study .case-study__outcomes h2{font-size:28px;line-height:34px}.case-study .case-next{flex-direction:column-reverse;align-items:stretch;padding-top:96px}.case-study .case-next__media{flex:none;width:100%}.case-study .case-next__media .sp-media{aspect-ratio:358 / 220}.case-study .case-next__title{font-size:40px;line-height:44px}}article.article{--article-third: calc((100% - 32px) / 3);--article-measure: 720px;width:100%;max-width:var(--sp-max);margin:0 auto;padding:0 var(--sp-gutter);color:var(--color-foreground);font-family:var(--font-body)}article.article>*+*{margin-top:0}.article .article-hero{display:flex;flex-direction:column;gap:24px;margin:0;padding:72px 0 40px}.article .article-hero__back{align-self:flex-start;color:var(--color-muted);font-size:15px;line-height:20px}.article .article-hero__back:hover{color:var(--color-link)}.article .article-hero h1{max-width:1100px;color:var(--color-foreground);font-family:var(--font-body);font-size:72px;font-weight:500;letter-spacing:-.025em;line-height:76px;text-wrap:balance}.article .article-hero__summary{max-width:820px;color:var(--color-muted);font-size:24px;line-height:34px}.article .article-meta{display:flex;gap:16px;margin:0;padding:16px 0 40px;border-top:1px solid var(--color-foreground)}.article .article-meta>div{display:flex;flex:1 1 0;flex-direction:column;gap:4px;min-width:0}.article .article-meta>div:first-child{flex:0 0 var(--article-third)}.article .article-meta dt{color:var(--color-muted);font-size:14px;font-weight:400;letter-spacing:0;line-height:20px;text-transform:none}.article .article-meta dd{margin:0;font-size:16px;line-height:24px}.article .article-meta__link{color:var(--color-link)}.article .article-meta__link:hover{color:var(--color-foreground)}.article .article-meta__link:after{content:none}.article .article-cover{display:flex;align-items:center;justify-content:center;aspect-ratio:1360 / 640;overflow:hidden;border-radius:var(--sp-radius);background:var(--article-ground, var(--color-surface))}.article .article-cover img{display:block;width:100%;height:100%;object-fit:contain}.article .article-layout{display:grid;grid-template-columns:var(--article-third) minmax(0,var(--article-measure));column-gap:16px;align-items:start;padding-top:96px}.article .article-layout:not([data-has-toc])>.article-body{grid-column:2}.article-toc{--toc-open: 0;--toc-text: 0px;--toc-wrap: nowrap;position:sticky;top:40px;z-index:5;justify-self:start;width:max-content;max-width:calc(100% - 24px);margin:-8px 0 0 -8px;padding:8px;border-radius:var(--sp-radius);background:transparent;font-size:14px;line-height:20px;transition:background-color .16s var(--sp-ease),box-shadow .16s var(--sp-ease)}.article-toc[data-open],.article-toc:has(:focus-visible){--toc-open: 1;--toc-text: 360px;--toc-wrap: normal}@media(hover:hover)and (pointer:fine){.article-toc:hover{--toc-open: 1;--toc-text: 360px;--toc-wrap: normal}}.article-toc__toggle{display:block;max-height:calc(var(--toc-open) * 28px);margin:0 0 calc(var(--toc-open) * 8px);padding:0;overflow:hidden;border:0;background:none;color:var(--color-muted);font:inherit;white-space:nowrap;cursor:pointer;opacity:var(--toc-open);transition:opacity .16s var(--sp-ease)}.article-toc__toggle:focus-visible{outline-offset:2px}.article-toc__list{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}.article-toc__list a{display:flex;align-items:flex-start;gap:calc(var(--toc-open) * 12px);padding-block:3px;color:var(--color-muted);text-decoration:none}.article-toc__list a:focus-visible{outline-offset:2px}.article-toc__line{position:relative;flex:0 0 32px;height:20px}.article-toc__line:before{content:"";position:absolute;top:9px;left:0;width:22px;height:2px;border-radius:1px;background:#c9c9c4;transition:width .2s var(--sp-ease),background-color .16s var(--sp-ease)}.article-toc__list li[data-depth="3"] .article-toc__line:before{left:8px;width:12px}.article-toc__text{display:block;min-width:0;max-width:var(--toc-text);overflow:hidden;white-space:var(--toc-wrap);opacity:var(--toc-open);transition:opacity .16s var(--sp-ease)}.article-toc__list a[aria-current]{color:var(--color-foreground);font-weight:500}.article-toc__list a[aria-current] .article-toc__line:before{width:32px;background:var(--color-foreground)}.article-toc__list li[data-depth="3"] a[aria-current] .article-toc__line:before{width:22px}.article-toc__list a:hover{color:var(--color-foreground)}.article-toc__list a:hover .article-toc__line:before{background:var(--color-foreground)}@media(prefers-reduced-motion:reduce){.article-toc,.article-toc__toggle,.article-toc__text,.article-toc__line:before{transition:none}}.article .article-body{grid-column:2;display:flex;flex-direction:column;min-width:0;max-width:var(--article-measure);margin:0;color:var(--color-foreground);font-size:19px;line-height:31px}.article .article-body>*{max-width:none;margin:0}.article .article-body>*+*{margin-top:24px}.article .article-body h2,.article .article-body h3,.article .article-body h4{scroll-margin-top:32px;color:var(--color-foreground);font-family:var(--font-body);font-weight:500;text-transform:none;text-wrap:balance}.article .article-body>h2{margin-top:64px;font-size:32px;letter-spacing:-.015em;line-height:38px}.article .article-body>h3{margin-top:48px;font-size:24px;letter-spacing:-.01em;line-height:30px}.article .article-body>h4{margin-top:40px;font-size:19px;letter-spacing:0;line-height:28px}.article .article-body>:is(h2,h3,h4)+*{margin-top:24px}.article .article-body>h2+h3{margin-top:32px}.article .article-body strong{font-weight:600}.article .article-body a{color:inherit;text-decoration:underline;text-decoration-color:#c9c9c4;text-decoration-thickness:1px;text-underline-offset:.2em}.article .article-body a:hover{color:var(--color-link);text-decoration-color:currentColor}.article .article-body a:after{content:none}.article .article-body>ul,.article .article-body>ol{padding-left:22px;list-style:disc}.article .article-body>ol{list-style:decimal}.article .article-body li+li{margin-top:8px}.article .article-body li>ul,.article .article-body li>ol{margin-top:8px;padding-left:22px;list-style:circle}.article .article-body>blockquote{padding:16px 0 16px 24px;border-left:2px solid var(--color-link);color:var(--color-foreground);font-size:30px;font-style:normal;font-weight:500;letter-spacing:-.01em;line-height:38px}.article .article-body>blockquote>*{max-width:none;margin:0}.article .article-body>blockquote>*+*{margin-top:12px}.article .article-body>blockquote:first-child{padding:0 0 0 16px;border-left-color:var(--color-rule);color:var(--color-muted);font-size:16px;font-weight:400;letter-spacing:0;line-height:24px}.article .article-body>.article-figure{display:flex;flex-direction:column;gap:12px;margin-top:40px}.article .article-body>.article-figure+*{margin-top:40px}.article .article-body img,.article .article-body video{display:block;width:100%;height:auto;border-radius:var(--sp-radius)}.article .article-figure figcaption{color:var(--color-muted);font-size:14px;line-height:20px}.article .article-body pre{overflow-x:auto;padding:16px;border-radius:var(--sp-radius);background:#f4f4f1;font-size:14px;line-height:22px}.article .article-body pre code{padding:0;background:none;font-size:inherit}.article .article-body>hr{margin-top:48px;border-top-color:var(--color-rule)}.article .article-body>hr+*{margin-top:48px}.article .article-body table{width:100%;font-size:16px;line-height:24px}.article .article-body>:is(table,pre){max-width:100%}.article .article-body>.article-body__source{padding-top:24px;border-top:1px solid var(--color-rule);color:var(--color-muted);font-size:15px;line-height:22px}.article .article-more{display:flex;flex-direction:column;gap:32px;padding-top:160px}.article .article-more__head{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.article .article-more__head h2{margin:0;color:var(--color-foreground);font-family:var(--font-body);font-size:44px;font-weight:500;letter-spacing:-.015em;line-height:52px;text-transform:none}.article .article-more__head a{flex-shrink:0;color:var(--color-link);font-size:16px;font-weight:500;line-height:24px}.article .article-more__head a:hover{color:var(--color-foreground)}.article .article-more__list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0;padding:0;list-style:none}.article .article-card{display:flex;flex-direction:column;gap:14px;color:var(--color-foreground)}.article .article-card__media{display:block;aspect-ratio:442 / 232;overflow:hidden;border-radius:var(--sp-radius);background:var(--color-surface)}.article .article-card__media img{display:block;width:100%;height:100%;object-fit:cover}.article .article-card__date{color:var(--color-muted);font-size:14px;line-height:20px}.article .article-card__title{font-size:20px;font-weight:500;line-height:26px;transition:color .16s var(--sp-ease)}.article .article-card:hover .article-card__title{color:var(--color-link)}.article .article-card:focus-visible{outline:none}.article .article-card:focus-visible .article-card__media{outline:2px solid var(--color-link);outline-offset:4px}@media(max-width:1100px){.article .article-hero h1{font-size:56px;line-height:60px}.article .article-layout[data-has-toc]{grid-template-columns:40px minmax(0,var(--article-measure));column-gap:32px}.article .article-layout:not([data-has-toc]){grid-template-columns:minmax(0,var(--article-measure))}.article .article-layout:not([data-has-toc])>.article-body{grid-column:1}.article .article-meta>div:first-child{flex:1 1 0}.article .article-more__list{grid-template-columns:repeat(2,minmax(0,1fr))}.article .article-more__list>li:nth-child(3){display:none}.article-toc{max-width:min(420px,calc(100vw - 2 * var(--sp-gutter)))}.article-toc[data-open],.article-toc:has(:focus-visible){background:var(--color-background);box-shadow:0 1px 2px #0000000f,0 12px 32px #0000001a}}@media(max-width:1100px)and (hover:hover)and (pointer:fine){.article-toc:hover{background:var(--color-background);box-shadow:0 1px 2px #0000000f,0 12px 32px #0000001a}}@media(max-width:760px){.article .article-hero{gap:16px;padding:40px 0 32px}.article .article-hero h1{font-size:40px;line-height:44px}.article .article-hero__summary{font-size:18px;line-height:26px}.article .article-meta{flex-direction:column;gap:14px;padding-bottom:28px}.article .article-meta>div,.article .article-meta>div:first-child{flex:none}.article .article-cover{aspect-ratio:358 / 200}.article .article-layout,.article .article-layout[data-has-toc]{display:block;padding-top:48px}.article-toc{display:none}.article .article-body{font-size:17px;line-height:28px}.article .article-body>*+*{margin-top:20px}.article .article-body>h2{margin-top:44px;font-size:24px;line-height:30px}.article .article-body>h3{margin-top:36px;font-size:20px;line-height:28px}.article .article-body>h4{margin-top:32px;font-size:17px;line-height:26px}.article .article-body>:is(h2,h3,h4)+*{margin-top:20px}.article .article-body>blockquote{padding:16px 0 16px 16px;font-size:22px;line-height:30px}.article .article-body>blockquote:first-child{padding:0 0 0 14px;font-size:15px;line-height:22px}.article .article-body>.article-figure,.article .article-body>.article-figure+*{margin-top:36px}.article .article-more{gap:24px;padding-top:96px}.article .article-more__head{flex-direction:column;align-items:flex-start;gap:8px}.article .article-more__head h2{font-size:32px;line-height:38px}.article .article-more__list{grid-template-columns:minmax(0,1fr);gap:32px}.article .article-more__list>li:nth-child(3){display:block}.article .article-card__media{aspect-ratio:358 / 188}}.case-study[data-layout=gallery] .case-body{padding-top:0}.case-study .case-meta__hint[data-input=touch]{display:none}@media(hover:none){.case-study .case-meta__hint[data-input=pointer]{display:none}.case-study .case-meta__hint[data-input=touch]{display:inline}}.case-study[data-layout=gallery] .case-item>img{display:block;width:100%;height:auto;margin:0;background:none;aspect-ratio:var(--ratio);border-radius:var(--sp-radius);object-fit:contain}.case-study [data-viewer-item]{cursor:zoom-in}.case-study [data-viewer-item]:focus-visible{outline:2px solid var(--color-link);outline-offset:4px}.gallery-viewer{width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:24px 40px;border:0;background:#0b0b0b;color:#fff;font-family:var(--font-body)}.gallery-viewer[open]{display:flex;flex-direction:column;gap:24px}.gallery-viewer::backdrop{background:#0b0b0b}.gallery-viewer__bar{display:flex;align-items:center;justify-content:space-between;gap:16px}.gallery-viewer__count{max-width:none;margin:0;color:#b8b8b2;font-size:15px;line-height:20px;font-variant-numeric:tabular-nums}.gallery-viewer__close,.gallery-viewer__nav{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;background:#ffffff1f;color:#fff;font:inherit;cursor:pointer;transition:background-color .16s var(--sp-ease)}.gallery-viewer__close{padding:8px 14px;border-radius:999px;font-size:15px;line-height:20px}.gallery-viewer__nav{flex-shrink:0;width:48px;height:48px;border-radius:24px;font-size:20px;line-height:24px}.gallery-viewer__close:hover,.gallery-viewer__nav:hover{background:#ffffff38}.gallery-viewer__close:focus-visible,.gallery-viewer__nav:focus-visible{outline:2px solid #ffffff;outline-offset:3px}.gallery-viewer__stage{display:flex;flex:1 1 0;align-items:center;justify-content:space-between;gap:24px;min-height:0}.gallery-viewer__image{flex:1 1 0;min-width:0;height:100%;max-height:100%;margin-inline:auto;object-fit:contain;border-radius:var(--sp-radius)}.gallery-viewer__media{display:flex;flex:1 1 0;align-items:center;justify-content:center;align-self:stretch;min-width:0;container-type:size}.gallery-viewer__media>.gallery-viewer__image{flex:none;width:auto;max-width:100%;height:auto;max-height:100%;margin:0}.case-study .gallery-viewer__media>.gallery-viewer__device{flex:none;width:min(100cqw,100cqh * var(--_fw) / var(--_fh),1440px);cursor:auto}@media(prefers-reduced-motion:no-preference){.gallery-viewer[open]{animation:gallery-viewer-in .2s var(--sp-ease)}}@keyframes gallery-viewer-in{0%{opacity:0}to{opacity:1}}@media(max-width:760px){.case-study[data-layout=gallery] .case-row{flex-direction:column}.case-study[data-layout=gallery] .case-row .case-item{flex:none;width:100%}.gallery-viewer{padding:16px}.gallery-viewer__stage{flex-wrap:wrap;align-content:center;justify-content:center;gap:16px}.gallery-viewer__media{flex:1 0 100%;order:-1;height:calc(100% - 64px)}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}
