@charset "UTF-8";@font-face{font-family:ibm plex sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex/IBMPlexSans-Regular.woff2)format("woff2")}@font-face{font-family:ibm plex sans;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/plex/IBMPlexSans-Italic.woff2)format("woff2")}@font-face{font-family:ibm plex sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plex/IBMPlexSans-Medium.woff2)format("woff2")}@font-face{font-family:ibm plex sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/plex/IBMPlexSans-SemiBold.woff2)format("woff2")}@font-face{font-family:ibm plex mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex/IBMPlexMono-Regular.woff2)format("woff2")}@font-face{font-family:ibm plex mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plex/IBMPlexMono-Medium.woff2)format("woff2")}@font-face{font-family:ibm plex sans condensed;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plex/IBMPlexSansCondensed-Medium.woff2)format("woff2")}@font-face{font-family:ibm plex sans condensed;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/plex/IBMPlexSansCondensed-Bold.woff2)format("woff2")}:root{--ground:#fff;--ink:#000;--ink-muted:#555;--ink-faint:#6e6e6e;--ink-quiet:#a3a3a3;--rule:#f2f2f2;--edge:#d9d9d9;--surface:#f7f7f7;--surface-input:#fff;--film:#e6e6e6;--highlight:rgba(255, 235, 59, 0.8);--signal:#ff4f00;--term:#161616;--term-ink:#e6e6e6;--term-faint:#8f8f8f}@media screen and (prefers-color-scheme:dark){:root{--ground:#141414;--ink:#ededed;--ink-muted:#b5b5b5;--ink-faint:#929292;--ink-quiet:#626262;--rule:rgba(255, 255, 255, 0.06);--edge:rgba(255, 255, 255, 0.2);--surface:rgba(255, 255, 255, 0.05);--surface-input:#1e1e1e;--film:#262626;--highlight:rgba(255, 213, 79, 0.3);--term:#0a0a0a}}@media screen and (prefers-contrast:more){:root{--ink-faint:var(--ink-muted);--ink-quiet:var(--ink-muted);--rule:var(--ink);--edge:var(--ink);--surface:var(--ground)}}html{scroll-behavior:smooth;background:var(--ground);-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--ground);color:var(--ink);font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-feature-settings:"kern";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;font-size:18px;line-height:28px}*,*::before,*::after{box-sizing:border-box}img{max-width:100%}::selection{background:var(--highlight)}:focus-visible{outline:2px solid var(--signal);outline-offset:2px}@media screen and (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}time,.n{font-family:ibm plex mono,ui-monospace,sf mono,Menlo,monospace;font-weight:400;font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}h1{font-size:28px;line-height:36px;font-weight:400}h2,h3,h4,h5{font-size:18px;line-height:28px;font-weight:600}h3,h4,h5{font-weight:500}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:3px}strong,b{font-weight:600}mark{background:var(--highlight);color:inherit}code{font-family:ibm plex mono,ui-monospace,sf mono,Menlo,monospace;font-size:16px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}kbd{font-family:ibm plex mono,ui-monospace,sf mono,Menlo,monospace;font-size:14px;line-height:18px;display:inline-block;padding:0 6px;vertical-align:1px;color:var(--ink);background:var(--surface);border:1px solid var(--edge);border-bottom-width:2px;border-radius:2px}.legend{font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-faint);margin:8px 0 0;max-width:640px}.legend a{color:inherit;font-weight:400;text-decoration:none;transition:color 150ms ease}.legend a:hover{color:var(--ink);text-decoration:underline}.prose{max-width:880px;counter-reset:prose-h2 1}.prose>h2:first-child{counter-reset:prose-h2 0}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose p,.prose ul,.prose ol,.prose dl,.prose blockquote,.prose h2,.prose h3,.prose h4,.prose h5,.prose .quote-attribution{max-width:640px}.prose p{margin:0 0 18px}.prose a{font-weight:500}.prose :is(h2,h3,h4,h5)>a{font-weight:inherit;text-decoration:none}.prose :is(h2,h3,h4,h5)>a:hover{text-decoration:underline}.prose>h2{position:relative}.prose>h2::before{counter-increment:prose-h2;content:counter(prose-h2,decimal-leading-zero);position:absolute;top:4px;left:-240px;width:192px;font-family:ibm plex mono,ui-monospace,sf mono,Menlo,monospace;font-weight:400;font-size:14px;line-height:20px;font-variant-numeric:tabular-nums;font-feature-settings:"tnum";color:var(--ink-faint)}.prose h2{margin:40px 0 8px}.prose h3,.prose h4,.prose h5{font-weight:400;font-style:italic;margin:24px 0 8px}.prose :is(h2,h3,h4)+:is(h3,h4,h5){margin-top:8px}.prose ul,.prose ol{margin:0 0 18px;padding-left:24px}.prose ul ul,.prose ul ol,.prose ol ul,.prose ol ol{margin:4px 0 0}@media screen and (min-width:1025px){.prose>ul,.prose>ol{padding-left:0}}.prose li{margin:0 0 6px}.prose li::marker{color:var(--ink-faint)}.prose li>p{margin-bottom:6px}.prose blockquote{margin:0 0 18px;padding:0 0 0 20px;border-left:2px solid var(--edge)}.prose blockquote>:last-child{margin-bottom:0}.prose blockquote:has(+.quote-attribution){margin-bottom:8px}.prose .quote-attribution{font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-faint);margin:0 0 18px}.prose .quote-attribution a{color:inherit;font-weight:400;text-decoration:none;transition:color 150ms ease}.prose .quote-attribution a:hover{color:var(--ink);text-decoration:underline}.prose hr{width:128px;margin:32px 0;border:0;border-top:1px solid var(--edge)}.prose p>img:only-child{display:block;width:auto;max-width:min(760px,100%);height:auto;border:1px solid var(--edge);border-radius:2px}.prose p:has(>img:only-child){max-width:760px;margin:32px 0 48px}.prose pre{max-width:760px;overflow-x:auto;-webkit-overflow-scrolling:touch}.prose .video-container{position:relative;max-width:760px;aspect-ratio:16/9;overflow:hidden;margin:32px 0 48px;border:1px solid var(--edge);border-radius:2px;background:var(--surface)}.prose .video-container iframe{position:absolute;inset:0;width:100%;height:100%;border:0}@media screen and (max-width:1024px){.prose>h2::before{position:static;display:inline-block;width:auto;margin-right:12px}}:where(main) figure{margin:32px 0 48px;max-width:760px}:where(main) figure>img,:where(main) figure>video,:where(main) figure>a>img{display:block;width:100%;height:auto;background:var(--surface);border:1px solid var(--edge);border-radius:2px}:where(main) figure.plain>img,:where(main) figure.plain>video,:where(main) figure.plain>a>img{border:0;border-radius:0;background:0 0}:where(main) figure.portrait{max-width:360px}:where(main) figure.pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}:where(main) figure.pair>figcaption{grid-column:1/-1;margin-top:0}:where(main) figcaption{font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;max-width:640px;color:var(--ink-muted);margin-top:8px}:where(main) figcaption p{margin:0}main :is(h2,h3,h4,h5)+:is(figure,p:has(>img:only-child),.photo-gallery,.video-container,.model-viewer-frame,.gaussian-splat,.spatial-long-exposure,.table-wrap,.sheet,.shell-block,.resources,.projects-grid,.cards){margin-top:8px}.wrap,.layout{max-width:1200px;margin:0 auto;padding-left:40px;padding-right:40px}@media screen and (max-width:768px){.wrap,.layout{padding-left:20px;padding-right:20px}}.layout>main{display:block;min-width:0}header.site{display:grid;grid-template-columns:minmax(0,1fr)auto;align-items:center;row-gap:20px;padding-top:36px;padding-bottom:16px;border-bottom:1px solid var(--rule)}header.site .logo{grid-column:1;grid-row:1;margin:0;font-size:0;line-height:0}header.site .logo a{display:inline-block}header.site .logo img{display:block;height:64px;width:auto}@media screen and (prefers-color-scheme:dark){header.site .logo img{filter:invert(1)}}header.site .search-key{grid-column:2;grid-row:1;display:flex;align-items:center;justify-content:center;min-width:32px;min-height:32px;padding:0;border:0;background:0 0;appearance:none;cursor:pointer;color:var(--ink-faint);transition:color 150ms ease}header.site .search-key:focus-visible{outline:2px solid var(--signal);outline-offset:2px}header.site .search-key .icon{width:18px;height:18px}header.site .search-key:hover{color:var(--ink)}header.site .nav{grid-column:1/-1;grid-row:2;display:flex;gap:32px;font-size:16px;line-height:25px;min-width:0}header.site .nav a{color:var(--ink-muted);text-decoration:none;white-space:nowrap;transition:color 150ms ease}header.site .nav a:hover{color:var(--ink)}header.site .nav a[aria-current]{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}@media screen and (max-width:768px){header.site{padding-top:24px;padding-bottom:12px;row-gap:12px}header.site .logo img{height:32px}header.site .nav{flex-wrap:nowrap;gap:0 24px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-right:48px;mask-image:linear-gradient(90deg,#000 calc(100% - 48px),transparent);-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 48px),transparent)}header.site .nav::-webkit-scrollbar{display:none}header.site .nav a{display:inline-flex;align-items:center;flex:none;min-height:44px;min-width:44px}}@media screen and (max-width:768px),screen and (pointer:coarse){header.site .search-key{min-height:44px}}@media screen and (min-width:1025px){header.site{display:grid;grid-template-columns:192px minmax(0,1fr);column-gap:48px;row-gap:16px}header.site .logo{grid-column:2;grid-row:1}header.site .search-key{grid-column:1;grid-row:2;justify-self:end;margin-right:-7px}header.site .nav{grid-column:2;grid-row:2}}.layout>main{padding-top:56px}@media screen and (max-width:768px){.layout>main{padding-top:40px}}footer.foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;margin-top:96px;padding-top:16px;padding-bottom:48px;border-top:1px solid var(--rule);font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-faint)}footer.foot a{color:inherit;font-weight:400;text-decoration:none;transition:color 150ms ease}footer.foot a:hover{color:var(--ink);text-decoration:underline}footer.foot p{margin:0}footer.foot .foot-copy{order:1}footer.foot .foot-version{order:2;margin-right:auto}footer.foot .foot-version::before{content:"· "}footer.foot .foot-links{order:3}@media screen and (max-width:768px){footer.foot{margin-top:64px}}@media screen and (min-width:1025px){footer.foot{display:grid;grid-template-columns:192px minmax(0,1fr)auto;column-gap:48px}footer.foot .foot-version{order:0;margin-right:0;text-align:right}footer.foot .foot-version::before{content:none}footer.foot .foot-copy,footer.foot .foot-links{order:0}}.block{display:grid;grid-template-columns:192px minmax(0,1fr);column-gap:48px;margin-top:64px}.block>.main{min-width:0;max-width:880px}.block>.main>:first-child{margin-top:0}.block>.main>:last-child{margin-bottom:0}.block>.main:empty{display:none}.block>.rail{min-width:0}.block>.rail h2,.block>.rail h1{font-size:18px;line-height:28px;font-weight:600;margin:0}.block>.rail h2 a,.block>.rail h1 a{text-decoration:none}.block>.rail h2 a:hover,.block>.rail h1 a:hover{text-decoration:underline}.block>.rail p{margin:0}.block>.rail .meta{font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-faint);margin-top:4px}.block>.rail .meta a{color:inherit;font-weight:400;text-decoration:none;transition:color 150ms ease}.block>.rail .meta a:hover{color:var(--ink);text-decoration:underline}.block>.rail .meta:first-child{margin-top:0}.block>.rail .meta+.meta{margin-top:0}.block>.rail .door-arrow{display:inline-block;margin-left:.3em;transition:color 150ms ease}.block>.rail .door:hover .door-arrow{color:var(--signal)}.block>.rail .lead{font-size:16px;line-height:24px;color:var(--ink-muted);margin-top:8px}.block>.rail .lead:first-child{margin-top:0}.block>.rail .lead a{font-weight:500}.block.section .prose hr{border:0;height:0;margin:32px 0 0;width:auto}.page-head+.block{margin-top:0}@media screen and (min-width:1025px){.block.ledger,.block:not(.has-toc):has(>.main>.rows:first-child),.block:not(.has-toc):has(>.main.prose>.rows:first-child){grid-template-rows:auto auto}.block.ledger>.rail,.block:not(.has-toc):has(>.main>.rows:first-child)>.rail,.block:not(.has-toc):has(>.main.prose>.rows:first-child)>.rail{grid-row:1;grid-column:1}.block.ledger>.main,.block:not(.has-toc):has(>.main>.rows:first-child)>.main,.block:not(.has-toc):has(>.main.prose>.rows:first-child)>.main{grid-row:2;grid-column:1/-1;max-width:none;padding-left:240px;margin-top:12px}.block.body:not(.has-toc)>.main :is(.viewer,.table-wrap.wide){margin-left:-240px;width:calc(100% + 240px);max-width:none}}.block.year+.block.year,.block.end+.block.end{margin-top:40px}.block.end{margin-top:64px}@media screen and (max-width:1024px){.block.end{margin-top:48px}}.block.entry>.rail{padding-top:4px}.block.entry>.main>h3:first-child,.block.entry>.main>.entry-title{font-size:22px;line-height:30px;font-weight:500;font-style:normal;margin:0 0 12px}.block.entry>.main>h3:first-child a,.block.entry>.main>.entry-title a{text-decoration:none}.block.entry>.main>h3:first-child a:hover,.block.entry>.main>.entry-title a:hover{text-decoration:underline}.block:not(.entry)+.block.entry{margin-top:16px}.block.entry+.block.entry{margin-top:56px}.block.body.has-toc>.rail{position:sticky;top:24px;align-self:start}.block.body.has-toc .prose h2::before{display:none}.block>.rail-toc .toc-title{font-size:18px;line-height:28px;font-weight:600;margin:0 0 16px}.rail-toc .toc{font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif}.rail-toc .toc a[aria-current=true]{color:var(--ink)}.rail-toc .toc li:has(>a[aria-current=true])::after{content:"";position:absolute;left:-14px;top:7px;width:6px;height:6px;border-radius:50%;background:var(--signal)}.rail-toc .toc ul{list-style:none;margin:0;padding:0;counter-reset:toc}.rail-toc .toc li{counter-increment:toc;position:relative;padding-left:32px;margin:0 0 8px}.rail-toc .toc li::before{content:counter(toc,decimal-leading-zero);position:absolute;left:0;font-family:ibm plex mono,ui-monospace,sf mono,Menlo,monospace;font-variant-numeric:tabular-nums;font-feature-settings:"tnum";color:var(--ink-faint)}.rail-toc .toc li li{padding-left:0;margin:4px 0 0}.rail-toc .toc li li::before{content:none}.rail-toc .toc li ul{margin-top:4px}.rail-toc .toc a{color:var(--ink-muted);text-decoration:none;transition:color 150ms ease}.rail-toc .toc a:hover{color:var(--ink);text-decoration:underline}@media screen and (max-width:1024px){.block.body.has-toc>.rail{position:static;display:block;margin-bottom:32px}.block.body.has-toc>.rail .toc>nav>ul{columns:2;column-gap:16px}.block.body.has-toc>.rail .toc li{break-inside:avoid}.block{display:block;margin-top:48px}.block>.rail{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:12px;margin-bottom:12px}.block>.rail:empty{display:none}.block>.rail .meta,.block>.rail .meta+.meta{margin-top:0}.block>.rail .lead{flex-basis:100%;margin-top:4px}.block.entry>.rail{padding-top:0;margin-bottom:8px}}@media screen and (min-width:1025px){.page-head>.rail,.block>.rail{text-align:right}.prose>h2::before,.about h3.principle::before{text-align:right}.block>.rail .door{position:relative}.block>.rail .door .door-arrow{position:absolute;left:100%;margin-left:10px}.rail-toc .toc li{padding-left:0;padding-right:32px}.rail-toc .toc li::before{left:auto;right:0}.rail-toc .toc li li{padding-right:0}.rail-toc .toc li:has(>a[aria-current=true])::after{left:auto;right:-14px}}.page-head{display:grid;grid-template-columns:192px minmax(0,1fr);column-gap:48px;margin:0 0 48px}.page-head>.rail{min-width:0;padding-top:7px;font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-faint)}.page-head>.rail a{color:inherit;font-weight:400;text-decoration:none;transition:color 150ms ease}.page-head>.rail a:hover{color:var(--ink);text-decoration:underline}.page-head>.rail p{margin:0}.page-head time{white-space:nowrap}.page-head>.main{min-width:0;max-width:880px}.page-head h1{margin:0;max-width:760px}.page-head h1 a{text-decoration:none}.page-head .page-dek{font-size:18px;line-height:27px;color:var(--ink-muted);margin:12px 0 0;max-width:640px}.page-head .page-dek a{font-weight:500}.page-head .resource-strip,.page-head .strip{margin-top:24px;margin-bottom:2px}.page-head .category-filter{margin-top:24px}@media screen and (max-width:1024px){.page-head{display:block;margin-bottom:40px}.page-head>.rail{display:flex;flex-wrap:wrap;column-gap:12px;padding-top:0;margin-bottom:8px}.page-head>.rail:empty{display:none}}@media screen and (max-width:768px){.page-head h1{font-size:28px;line-height:34px}}.rows{list-style:none;margin:0;padding:0;max-width:880px}.rows>li{display:grid;grid-template-columns:128px minmax(0,1fr);column-gap:24px;align-items:baseline;margin:0 0 4px;padding:0;max-width:none}.rows>li:last-child{margin-bottom:0}.rows.with-deks>li{margin-bottom:16px}.rows>li[hidden]{display:none!important}.prose .rows{padding:0;margin:0 0 18px;max-width:880px}.prose .rows>li{margin-top:0}.row-meta{font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-faint);white-space:nowrap;text-align:right}.row-meta a{color:inherit;font-weight:400;text-decoration:none;transition:color 150ms ease}.row-meta a:hover{color:var(--ink);text-decoration:underline}.row-main{min-width:0;font-size:16px;line-height:24px}.row-title{font-weight:400;text-decoration:none}.row-title:hover{text-decoration:underline}.row-tail{font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-quiet);margin-left:8px;white-space:nowrap}.row-tail a{color:inherit;font-weight:400;text-decoration:none;transition:color 150ms ease}.row-tail a:hover{color:var(--ink);text-decoration:underline}.row-dek{display:block;font-size:16px;line-height:23px;color:var(--ink-muted);margin-top:2px}.row-value p{display:inline;margin:0}@media screen and (min-width:1025px){.block:not(.has-toc):not(.entry)>.main .rows{margin-left:-240px;width:calc(100% + 240px);max-width:none}.block:not(.has-toc):not(.entry)>.main .rows>li{grid-template-columns:192px minmax(0,1fr);column-gap:48px}}@media screen and (max-width:1024px){.rows>li:has(>.row-meta:empty){grid-template-columns:minmax(0,1fr)}.rows>li:has(>.row-meta:empty)>.row-meta{display:none}}@media screen and (max-width:768px){.rows>li{grid-template-columns:max-content minmax(0,1fr);column-gap:16px}.row-meta{min-width:96px;max-width:136px;text-align:left}}.projects-grid,.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:32px 24px;max-width:880px}@media screen and (max-width:768px){.projects-grid,.cards{gap:24px 12px}}.prose :is(.projects-grid,.cards){margin:32px 0 48px}.card{min-width:0}.card .tile{display:block;aspect-ratio:16/9;overflow:hidden;border:1px solid var(--edge);border-radius:2px;background:var(--surface);margin:0 2px 2px 0;transition:border-color 150ms ease,box-shadow 80ms ease,transform 80ms ease}.card .tile img{display:block;width:100%;height:100%;object-fit:cover;filter:grayscale(1);transition:filter 250ms ease}.card:hover .tile,.card:focus-within .tile{border-color:var(--ink);box-shadow:2px 2px 0 var(--ink)}.card:hover .tile img,.card:focus-within .tile img{filter:none}.card:hover .card-title,.card:focus-within .card-title{text-decoration:underline}.card:active .tile{transform:translate(2px,2px);box-shadow:none}.card-label{display:flex;justify-content:space-between;gap:12px;font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-faint);margin:8px 0 0}.card-label a{color:inherit;font-weight:400;text-decoration:none;transition:color 150ms ease}.card-label a:hover{color:var(--ink);text-decoration:underline}.card-title{display:block;margin-top:2px;font-weight:500;text-decoration:none}.card-title:hover{text-decoration:underline}.card-dek{display:block;font-size:16px;line-height:24px;color:var(--ink-muted);margin-top:2px}.card[hidden]{display:none!important}.btn,.subscribe button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:4px 16px;border:1px solid var(--ink);border-radius:2px;background:var(--ink);color:var(--ground);font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-size:16px;line-height:24px;font-weight:500;text-decoration:none;white-space:nowrap;cursor:pointer;box-shadow:3px 3px 0 var(--ink-faint);margin:0 3px 3px 0;transition:transform 80ms ease,box-shadow 80ms ease,background-color 150ms ease}.btn:active:not(:disabled):not([aria-disabled=true]),.subscribe button:active:not(:disabled):not([aria-disabled=true]){transform:translate(3px,3px);box-shadow:none}.btn:focus-visible,.subscribe button:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.btn:hover:not(:disabled),.subscribe button:hover:not(:disabled){background:var(--ink-muted)}.btn:disabled,.subscribe button:disabled{opacity:.5;cursor:not-allowed}@media screen and (max-width:768px),screen and (pointer:coarse){.btn,.subscribe button{min-height:44px}}.btn--quiet,.btn.quiet{min-height:32px;padding:3px 12px;background:var(--ground);color:var(--ink);font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-size:16px;line-height:24px;font-weight:500;box-shadow:2px 2px 0 var(--ink);margin:0 2px 2px 0;transition:transform 80ms ease,box-shadow 80ms ease,background-color 150ms ease}.btn--quiet:active:not(:disabled):not([aria-disabled=true]),.btn.quiet:active:not(:disabled):not([aria-disabled=true]){transform:translate(2px,2px);box-shadow:none}.btn--quiet:hover:not(:disabled),.btn.quiet:hover:not(:disabled){background:var(--surface)}@media screen and (max-width:768px),screen and (pointer:coarse){.btn--quiet,.btn.quiet{min-height:44px}}.segmented{display:inline-flex;border-radius:2px;box-shadow:2px 2px 0 var(--ink);margin:0 2px 2px 0;transition:transform 80ms ease,box-shadow 80ms ease}.segmented:has(button:active:not(:disabled)),.segmented:has(label:active){transform:translate(2px,2px);box-shadow:none}.segmented label input{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;padding:0}.segmented button,.segmented label{min-height:32px;padding:3px 12px;margin:0 0 0 -1px;border:1px solid var(--ink);border-radius:0;background:var(--ground);color:var(--ink);font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-size:16px;line-height:24px;font-weight:500;cursor:pointer;transition:background-color 150ms ease}.segmented button:focus-visible,.segmented label:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.segmented button:first-child,.segmented label:first-child{margin-left:0;border-radius:2px 0 0 2px}.segmented button:last-child,.segmented label:last-child{border-radius:0 2px 2px 0}.segmented button:hover:not(:disabled),.segmented label:hover:not(:disabled){background:var(--surface)}.segmented button[aria-pressed=true],.segmented button[aria-pressed=true]:hover:not(:disabled),.segmented button:has(input:checked),.segmented button:has(input:checked):hover,.segmented label[aria-pressed=true],.segmented label[aria-pressed=true]:hover:not(:disabled),.segmented label:has(input:checked),.segmented label:has(input:checked):hover{background:var(--ink);color:var(--ground)}.segmented button:has(input:focus-visible),.segmented label:has(input:focus-visible){position:relative;z-index:1;outline:2px solid var(--signal);outline-offset:2px}.segmented button:disabled,.segmented label:disabled{color:var(--ink-faint);cursor:not-allowed}@media screen and (max-width:768px),screen and (pointer:coarse){.segmented button,.segmented label{min-height:44px}}.segmented button:focus-visible,.segmented label:focus-visible{position:relative;z-index:1}.subscribe{display:flex;align-items:flex-start;gap:12px;max-width:640px;margin:0}.subscribe label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.subscribe input[type=email]{flex:auto;min-width:0;width:100%;box-sizing:border-box;-webkit-appearance:none;appearance:none;min-height:40px;height:40px;padding:0 12px;border:1px solid var(--ink);border-radius:2px;background:var(--surface-input);color:var(--ink);font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-size:16px;line-height:24px}@media screen and (max-width:768px),screen and (pointer:coarse){.subscribe input[type=email]{min-height:44px;height:44px}}.subscribe input[type=email]::placeholder{color:var(--ink-faint);opacity:1}.subscribe input[type=email]:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.subscribe+.legend{margin-top:12px}@media screen and (max-width:768px){.subscribe{flex-direction:column;align-items:stretch}.subscribe input[type=email]{flex:none}}[data-filter-group][hidden]{display:none!important}.category-filter{font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-size:16px;line-height:24px;font-weight:500;max-width:880px}.category-filter ul{list-style:none;margin:0;padding:0}.category-filter,.category-filter ul{display:flex;flex-wrap:wrap;gap:4px 20px}.category-filter li{margin:0}.category-filter a{display:inline-flex;align-items:center;min-height:32px;color:var(--ink-faint);text-decoration:none;transition:color 150ms ease}.category-filter a:hover{color:var(--ink)}.category-filter a.is-active{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}@media screen and (max-width:768px),screen and (pointer:coarse){.category-filter a{min-height:44px;min-width:44px}}[data-filtered] .filter-key,[data-filtered] .row-tail:has(>.filter-key:only-child){display:none}.switches{display:grid;grid-template-columns:repeat(auto-fit,minmax(136px,1fr));gap:12px;margin-top:24px;max-width:880px}.switch{display:flex;flex-direction:column;margin:0 2px 2px 0;border:1px solid var(--edge);border-radius:2px;background:var(--surface);transition:border-color 150ms ease,background-color 150ms ease,box-shadow 150ms ease}.switch:hover{border-color:var(--ink-faint)}.switch:has(.switch-key[aria-pressed=true]){border-color:var(--ink);background:var(--ground);box-shadow:2px 2px 0 var(--ink)}.switch-key{flex:1;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;width:100%;padding:12px 14px;border:0;border-radius:2px;background:0 0;color:inherit;font:inherit;text-align:left;cursor:pointer}.switch-key:focus-visible{outline:2px solid var(--signal);outline-offset:2px}@media screen and (max-width:768px),screen and (pointer:coarse){.switch-key{min-height:44px}}.switch-name{display:block;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-size:16px;line-height:24px;font-weight:500}.switch-key[aria-pressed=true] .switch-name::after{content:"";display:inline-block;width:6px;height:6px;margin-left:8px;border-radius:50%;background:var(--signal);vertical-align:middle}.switch-count{display:block;margin-top:2px;font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-faint)}.switch-dek{display:block;margin-top:6px;font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-muted)}.switch-door{display:block;padding:0 14px 12px;font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-faint);text-decoration:none}.switch-door:hover{color:var(--ink);text-decoration:underline}.switches+.legend{max-width:640px}.switches.doors{grid-template-columns:repeat(3,minmax(0,1fr))}@media screen and (max-width:768px){.switches.doors{grid-template-columns:repeat(2,minmax(0,1fr))}}a.switch.door{padding:12px 14px;color:inherit;text-decoration:none;transition:border-color 150ms ease,background-color 150ms ease,box-shadow 80ms ease,transform 80ms ease}a.switch.door:focus-visible{outline:2px solid var(--signal);outline-offset:2px}a.switch.door:hover,a.switch.door:focus-visible{border-color:var(--ink);background:var(--ground);box-shadow:2px 2px 0 var(--ink)}a.switch.door:active{transform:translate(2px,2px);box-shadow:none}@media screen and (max-width:768px),screen and (pointer:coarse){a.switch.door{min-height:44px}}.resource-strip,.strip{display:inline-flex;flex-wrap:wrap;vertical-align:top;max-width:100%;margin:0 2px 18px 0;border-radius:2px;box-shadow:2px 2px 0 var(--ink);transition:transform 80ms ease,box-shadow 80ms ease}.resource-strip:has(.chip:active),.strip:has(.chip:active){transform:translate(2px,2px);box-shadow:none}.chip{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:3px 12px;margin-left:-1px;border:1px solid var(--ink);border-radius:0;background:var(--ground);color:var(--ink);font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-size:16px;line-height:24px;font-weight:500;text-decoration:none;white-space:nowrap;transition:background-color 150ms ease}.chip:first-child{margin-left:0;border-top-left-radius:2px;border-bottom-left-radius:2px}.chip:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px}.chip:hover{background:var(--surface)}.chip:active{background:var(--ink);color:var(--ground)}.chip:active::after,.chip:active .chip-meta{color:var(--ground)}.chip:focus-visible{position:relative;z-index:1}@media screen and (max-width:768px),screen and (pointer:coarse){.chip{min-height:44px}}.chip--external::after{content:"↗";color:var(--ink-faint)}.chip--file::after{content:"↓";color:var(--ink-faint)}.chip-meta{color:var(--ink-faint)}@media screen and (max-width:1024px){.resource-strip,.strip{display:flex;gap:12px;box-shadow:none}.resource-strip:has(.chip:active),.strip:has(.chip:active){transform:none}.chip,.chip:first-child,.chip:last-child{margin-left:0;border-radius:2px;box-shadow:2px 2px 0 var(--ink);margin:0 2px 2px 0;transition:transform 80ms ease,box-shadow 80ms ease,background-color 150ms ease;max-width:calc(100% - 2px);flex-wrap:wrap;white-space:normal}.chip:active:not(:disabled):not([aria-disabled=true]),.chip:first-child:active:not(:disabled):not([aria-disabled=true]),.chip:last-child:active:not(:disabled):not([aria-disabled=true]){transform:translate(2px,2px);box-shadow:none}}.files{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:880px}@media screen and (max-width:768px){.files{grid-template-columns:repeat(2,minmax(0,1fr))}}.prose .files{margin:0 0 18px}.file{display:flex;flex-direction:column;align-items:flex-start;min-width:0;padding:12px 14px 14px;margin:0 2px 2px 0;border:1px solid var(--edge);border-radius:2px;background:var(--surface);color:inherit;font-weight:400;text-decoration:none;transition:border-color 150ms ease,background-color 150ms ease,box-shadow 80ms ease,transform 80ms ease}.file:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.file:hover,.file:focus-visible{border-color:var(--ink);background:var(--ground);box-shadow:2px 2px 0 var(--ink);text-decoration:none}.file:active{transform:translate(2px,2px);box-shadow:none}@media screen and (max-width:768px),screen and (pointer:coarse){.file{min-height:44px}}.file-type{display:block;font-family:ibm plex mono,ui-monospace,sf mono,Menlo,monospace;font-size:14px;line-height:20px;font-variant-numeric:tabular-nums;font-feature-settings:"tnum";color:var(--ink-faint)}.file--external .file-type{font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif}.file-name{display:block;margin-top:2px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-size:16px;line-height:24px;font-weight:500}.file-note{display:block;margin-top:2px;font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-muted)}.file-action{display:block;margin-top:6px;font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-faint)}.prose :is(p,li:not(.row),blockquote)>a[href^="/downloads/"]:not(.file){display:inline-block;padding:0 8px;margin:0 1px 1px 0;border:1px solid var(--ink);border-radius:2px;background:var(--ground);color:var(--ink);font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-size:16px;line-height:24px;font-weight:500;text-decoration:none;box-shadow:1px 1px 0 var(--ink);margin:0 1px 1px 0;transition:transform 80ms ease,box-shadow 80ms ease,background-color 150ms ease}.prose :is(p,li:not(.row),blockquote)>a[href^="/downloads/"]:not(.file):active:not(:disabled):not([aria-disabled=true]){transform:translate(1px,1px);box-shadow:none}.prose :is(p,li:not(.row),blockquote)>a[href^="/downloads/"]:not(.file):focus-visible{outline:2px solid var(--signal);outline-offset:2px}.prose :is(p,li:not(.row),blockquote)>a[href^="/downloads/"]:not(.file):hover{background:var(--surface)}.prose :is(p,li:not(.row),blockquote)>a[href^="/downloads/"]:not(.file)::after{content:" ↓";font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-weight:400;color:var(--ink-faint)}.prose :is(p,li:not(.row),blockquote)>a[href^="/downloads/"]:not(.file)[href$=".pdf"]::after{content:" PDF ↓"}.prose :is(p,li:not(.row),blockquote)>a[href^="/downloads/"]:not(.file)[href$=".stl"]::after{content:" STL ↓"}.prose :is(p,li:not(.row),blockquote)>a[href^="/downloads/"]:not(.file)[href$=".zip"]::after{content:" ZIP ↓"}.prose :is(p,li:not(.row),blockquote)>a[href^="/downloads/"]:not(.file)[href$=".glb"]::after{content:" GLB ↓"}.prose :is(p,li:not(.row),blockquote)>a[href^="/downloads/"]:not(.file)[href$=".3mf"]::after{content:" 3MF ↓"}.shell-block{max-width:760px;margin:24px 0;padding:12px 16px;background:var(--term);color:var(--term-ink);border-radius:2px;overflow-x:auto;-webkit-overflow-scrolling:touch;font-family:ibm plex mono,ui-monospace,sf mono,Menlo,monospace;font-size:14px;line-height:22px}.shell-block ::selection{background:var(--highlight);color:#000}@media screen and (prefers-color-scheme:dark){.shell-block ::selection{color:var(--term-ink)}}.shell-line{display:block;white-space:pre;min-width:max-content}.shell-line--comment{color:var(--term-faint)}.shell-copy{background:0 0;border:0;padding:0;font:inherit;color:var(--term-faint);cursor:pointer;user-select:none;transition:color 150ms ease}.shell-copy:hover{color:var(--term-ink)}.sheet{max-width:760px;margin:24px 0;padding:12px 16px;background:var(--surface);color:var(--ink);border:1px solid var(--edge);border-radius:2px;font-family:ibm plex mono,ui-monospace,sf mono,Menlo,monospace;font-size:14px;line-height:22px}.sheet pre{max-width:none;margin:0;overflow:visible;font:inherit}.sheet code{display:block;font:inherit;white-space:pre;min-width:max-content}.sheet .c,.sheet .c1,.sheet .ch,.sheet .cm,.sheet .cs{color:var(--ink-faint)}.sheet__kicker{font-family:ibm plex mono,ui-monospace,sf mono,Menlo,monospace;font-size:14px;line-height:20px;color:var(--ink-faint);margin:-12px -16px 12px;padding:6px 16px;border-bottom:1px solid var(--rule)}.sheet__scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -16px;padding:0 16px;mask-image:linear-gradient(to right,#000 calc(100% - 56px),transparent);mask-size:calc(100% + 56px)100%;mask-repeat:no-repeat;mask-position:0 0;animation:sheet-fade linear both;animation-timeline:scroll(self x)}@keyframes sheet-fade{0%,85%{mask-position:-56px 0}100%{mask-position:0 0}}.table-wrap{max-width:760px;margin:24px 0;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-wrap.wide{max-width:880px}.table-wrap table{border-collapse:collapse;width:100%;font-size:16px;line-height:23px}.table-wrap th,.table-wrap td{padding:8px 16px 8px 0;text-align:left;vertical-align:top}.table-wrap th:last-child,.table-wrap td:last-child{padding-right:0}.table-wrap th{font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-weight:500;color:var(--ink-faint);border-bottom:1px solid var(--ink)}.table-wrap tbody tr+tr td{border-top:1px solid var(--rule)}.table-wrap td code{font-size:14px}.table-wrap .align-right{text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.table-wrap .align-center{text-align:center}.search-overlay{position:fixed;inset:0;z-index:110;display:flex;justify-content:center;align-items:flex-start;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:96px 40px 48px;background:var(--ground)}@media screen and (max-width:768px){.search-overlay{padding:48px 20px 32px}}.search-container{width:100%;max-width:640px}.search-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.search-toolbar label{font-size:18px;line-height:28px;font-weight:600}.search-hint{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:4px 8px;margin:12px 0 24px;font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-faint)}@media screen and (max-width:768px),screen and (pointer:coarse){.search-hint{display:none}}.search-input{display:block;width:100%;margin:0;padding:12px 0;border:0;border-bottom:1px solid var(--ink);border-radius:0;background:0 0;color:var(--ink);font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-size:26px;line-height:34px;-webkit-appearance:none;appearance:none;outline:none}.search-input::-webkit-search-cancel-button,.search-input::-webkit-search-decoration{-webkit-appearance:none}.search-input::placeholder{color:var(--ink-faint);opacity:1;font-size:18px}.search-input:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.search-results{margin-top:8px}.search-results:empty{display:none}.search-results>.row{position:relative;grid-template-columns:128px minmax(0,1fr)auto;padding:8px 0;margin:0;transition:background-color 150ms ease,box-shadow 150ms ease}.search-results>.row>.row-meta{text-align:left}.search-results>.row>.row-tail{text-align:right;margin-left:0}.search-results>.row.is-selected{background:var(--surface);box-shadow:-12px 0 0 var(--surface),12px 0 0 var(--surface)}.search-results .row-title mark,.search-results .row-dek mark{background:var(--highlight);color:inherit}@media screen and (max-width:768px){.search-results>.row{grid-template-columns:minmax(0,1fr)auto;gap:4px 12px}.search-results .row-meta{grid-column:1;grid-row:1;white-space:normal}.search-results .row-tail{grid-column:2;grid-row:1;margin-top:0;text-align:right}.search-results .row-main{grid-column:1/-1;grid-row:2}.search-results .row-dek{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}}.search-status{min-height:20px;margin-top:24px}.search-status.is-error{color:var(--ink-muted)}.search-results:empty+.search-status{margin-top:16px}.lightbox{position:fixed;inset:0;z-index:100;display:grid;grid-template-rows:minmax(0,1fr)auto;background:rgba(0,0,0,.94);color:#fff}.lightbox__figure{display:grid;grid-template-rows:minmax(0,1fr);place-items:center;box-sizing:border-box;height:100%;min-height:0;max-width:none;margin:0;padding:48px 64px 0;pointer-events:none}@media screen and (max-width:768px){.lightbox__figure{padding:64px 20px 0}}.lightbox__image{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;pointer-events:auto}.lightbox__bar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 48px 24px;pointer-events:none}@media screen and (max-width:768px){.lightbox__bar{padding:12px 20px 16px}}.lightbox__bar p{margin:0;font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:rgba(255,255,255,.72)}.lightbox__legend{display:flex;align-items:center;gap:8px}.lightbox__legend kbd{background:0 0;border-color:rgba(255,255,255,.5);color:#fff}@media screen and (max-width:768px){.lightbox__legend{display:none}}.lightbox__button{position:absolute;z-index:1;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid rgba(255,255,255,.5);border-radius:2px;background:rgba(0,0,0,.42);color:#fff;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-size:20px;line-height:1;cursor:pointer;transition:background-color 150ms ease,border-color 150ms ease}.lightbox__button:hover{background:rgba(255,255,255,.16);border-color:#fff}.lightbox__button:active{background:#000;border-color:#fff}.lightbox__button:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.lightbox__button[hidden]{display:none}.lightbox__close{top:20px;right:20px}.lightbox__previous,.lightbox__next{top:50%;transform:translateY(-50%)}.lightbox__previous{left:20px}.lightbox__next{right:20px}@media screen and (max-width:768px){.lightbox__close{top:12px;right:12px}.lightbox__previous{left:8px}.lightbox__next{right:8px}}.photo-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;max-width:880px;margin:32px 0 48px}@media screen and (max-width:768px){.photo-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}}.photo-gallery p{max-width:none;margin:0}.photo-gallery a{display:block;line-height:0;border-radius:2px}.photo-gallery img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border:1px solid var(--edge);border-radius:2px;background:var(--surface);transition:opacity 150ms ease}.photo-gallery a:hover img{opacity:.88}.photo-gallery--single{display:block;max-width:760px}.photo-gallery--single img{aspect-ratio:auto}.clip-frame::after,.viewer-status{position:absolute;z-index:3;left:12px;bottom:12px;max-width:calc(100% - 64px);padding:2px 8px;border-radius:2px;background:rgba(0,0,0,.55);color:#fff;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-size:14px;line-height:20px;font-weight:400;pointer-events:none}@media screen and (max-width:768px),screen and (pointer:coarse){.clip-frame::after,.viewer-status{max-width:calc(100% - 76px)}}.viewer{width:100%;max-width:880px;margin:32px 0 48px}.viewer-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-faint)}.viewer-title{min-width:0}.viewer-controls{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-left:auto}.viewer-controls .btn,.viewer-controls .segmented{flex-shrink:0}.viewer-frame{position:relative;width:100%;aspect-ratio:16/10;overflow:hidden;border:1px solid var(--edge);border-radius:2px;background:#111}.viewer-frame>canvas,.viewer-frame>model-viewer{position:absolute;z-index:1;inset:0;display:block;width:100%;height:100%}.viewer-frame>canvas{cursor:grab;touch-action:none}.viewer-frame>canvas:active{cursor:grabbing}.viewer-frame>canvas:focus-visible,.viewer-frame>model-viewer:focus-visible{outline:2px solid var(--signal);outline-offset:-2px}.viewer-frame .viewer-poster{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover}.viewer-status[hidden]{display:none}.viewer-prompt{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;pointer-events:none;opacity:0;transition:opacity 250ms ease}.viewer-prompt.is-visible{opacity:1}.viewer-prompt[hidden]{display:none}.viewer-prompt svg{display:block;width:25px;height:36px}.viewer-fs{position:absolute;z-index:4;right:12px;bottom:12px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:1px solid rgba(255,255,255,.6);border-radius:2px;background:rgba(0,0,0,.5);color:#fff;cursor:pointer;transition:background-color 150ms ease}.viewer-fs[hidden]{display:none}.viewer-fs:hover{background:rgba(0,0,0,.75)}.viewer-fs:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.viewer-fs:active{background:#000}@media screen and (max-width:768px),screen and (pointer:coarse){.viewer-fs{width:44px;height:44px}}.viewer-fs svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.viewer-fs .viewer-fs-exit{display:none}.viewer-frame:fullscreen,.viewer-frame.is-fullscreen{width:100vw;height:100vh;height:100dvh;max-width:none;aspect-ratio:auto;border:0;border-radius:0}.viewer-frame:fullscreen>canvas,.viewer-frame:fullscreen>model-viewer,.viewer-frame.is-fullscreen>canvas,.viewer-frame.is-fullscreen>model-viewer{touch-action:none}.viewer-frame:fullscreen .viewer-fs,.viewer-frame.is-fullscreen .viewer-fs{right:calc(12px + env(safe-area-inset-right));bottom:calc(12px + env(safe-area-inset-bottom))}.viewer-frame:fullscreen .viewer-status,.viewer-frame.is-fullscreen .viewer-status{left:calc(12px + env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom))}.viewer-frame:fullscreen .viewer-fs-enter,.viewer-frame.is-fullscreen .viewer-fs-enter{display:none}.viewer-frame:fullscreen .viewer-fs-exit,.viewer-frame.is-fullscreen .viewer-fs-exit{display:block}.viewer-frame:fullscreen::backdrop{background:#111}.viewer-frame.is-fullscreen{position:fixed;z-index:100;inset:0}html.model-viewer-fullscreen-active,html.gaussian-splat-fullscreen-active,html.spatial-long-exposure-fullscreen-active{overflow:hidden}.viewer>.legend a[download]{white-space:nowrap}.viewer>.legend,.viewer>noscript>.legend{margin:12px 0 0}.viewer>.legend a,.viewer>noscript>.legend a{color:var(--ink);font-weight:400;text-decoration:underline}.viewer>.legend a::before,.viewer>.legend a::after,.viewer>noscript>.legend a::before,.viewer>noscript>.legend a::after{content:none}.model-viewer-frame model-viewer{background:#111;--poster-color:#111}.clip-frame{position:relative}.clip-frame>video{display:block;width:100%;height:auto;background:var(--surface);border:1px solid var(--edge);border-radius:2px}.clip-frame::after{content:attr(data-badge)}@media(prefers-reduced-motion:reduce){.clip-frame::after{top:12px;bottom:auto}}.pronunciation-name{white-space:nowrap}.pronunciation-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;vertical-align:middle;border:1px solid var(--ink);border-radius:2px;background:var(--ground);color:var(--ink);cursor:pointer;box-shadow:1px 1px 0 var(--ink);margin:0 1px 1px 0;transition:transform 80ms ease,box-shadow 80ms ease,background-color 150ms ease;margin-left:4px}.pronunciation-button:active:not(:disabled):not([aria-disabled=true]){transform:translate(1px,1px);box-shadow:none}.pronunciation-button:focus-visible{outline:2px solid var(--signal);outline-offset:2px}@media screen and (max-width:768px),screen and (pointer:coarse){.pronunciation-button{position:relative}.pronunciation-button::before{content:"";position:absolute;inset:-6px}}.pronunciation-button:hover{background:var(--surface)}.pronunciation-button.is-playing{background:var(--ink);color:var(--ground)}.pronunciation-button__icon{display:block;width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.pronunciation-button__icon--stop,.pronunciation-button.is-playing .pronunciation-button__icon--play{display:none}.pronunciation-button.is-playing .pronunciation-button__icon--stop{display:block}.gaussian-splat__poster{position:absolute;z-index:0;inset:0;display:block;width:100%;height:100%;object-fit:cover;transition:opacity 250ms ease}.gaussian-splat [data-splat-canvas]{opacity:0;transition:opacity 250ms ease}.gaussian-splat.is-loaded [data-splat-canvas]{opacity:1}.gaussian-splat.is-loaded .gaussian-splat__poster{opacity:0;pointer-events:none}.spatial-long-exposure{--spatial-map-connection:0, 0, 0;--spatial-map-place:224, 55, 38}@media screen and (prefers-color-scheme:dark){.spatial-long-exposure{--spatial-map-connection:227, 227, 227;--spatial-map-place:255, 105, 78}}.spatial-long-exposure .viewer-frame{background:#fafafa}@media screen and (prefers-color-scheme:dark){.spatial-long-exposure .viewer-frame{background:#1c1c1c}}.spatial-long-exposure__tiles{position:absolute;inset:0;overflow:hidden;pointer-events:none;filter:grayscale(1)contrast(.72)brightness(1.08);opacity:.72}@media screen and (prefers-color-scheme:dark){.spatial-long-exposure__tiles{filter:grayscale(1)invert(.88)contrast(.72)brightness(.58);opacity:.7}}@media screen and (prefers-contrast:more){.spatial-long-exposure__tiles{filter:grayscale(1);opacity:1}}.spatial-long-exposure__tile{position:absolute;display:block;max-width:none;user-select:none}.viewer-frame .spatial-long-exposure__attribution{position:absolute;z-index:3;top:12px;right:12px;padding:2px 8px;border-radius:2px;background:rgba(0,0,0,.55);color:#fff;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-size:14px;line-height:20px;font-weight:400;text-decoration:none}.viewer-frame .spatial-long-exposure__attribution:hover{text-decoration:underline}.viewer-frame .spatial-long-exposure__attribution:focus-visible{outline:2px solid var(--signal);outline-offset:2px}::target-text{background-color:var(--highlight);color:inherit}.home .page-head h1 a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}.home .home-flaneur .main>.prose{margin-bottom:18px}.home .home-flaneur .main>.rows{margin-top:24px}main article.about{counter-reset:principle}main article.about .block.body>.main{position:relative}main article.about .block.body .portrait{margin:0}@media screen and (min-width:1025px){main article.about .block.body .portrait{position:absolute;top:0;right:0;width:216px}}@media screen and (max-width:1024px){main article.about .block.body .portrait{float:right;width:40%;max-width:216px;margin:0 0 12px 16px}}main article.about .rows.record .row-tail{white-space:normal;max-width:320px}main article.about .rows.record .row-tail a{font-weight:400;text-decoration:none}main article.about .rows.record .row-tail a:hover{color:var(--ink);text-decoration:underline}main article.about .rows.record .row-tail a::before,main article.about .rows.record .row-tail a::after{content:none}main article.about h3.principle{position:relative;font-weight:600;font-style:normal;counter-increment:principle}main article.about h3.principle::before{content:counter(principle,decimal-leading-zero);position:absolute;top:4px;left:-240px;width:192px;font-family:ibm plex mono,ui-monospace,sf mono,Menlo,monospace;font-weight:400;font-size:14px;line-height:20px;font-variant-numeric:tabular-nums;font-feature-settings:"tnum";color:var(--ink-faint)}@media screen and (max-width:1024px){main article.about h3.principle::before{position:static;display:inline-block;width:auto;margin-right:12px}}main .notes-year:nth-child(1 of .notes-year:not([hidden])),main .project-year:nth-child(1 of .project-year:not([hidden])){margin-top:0}@supports selector(:has(input:checked)){.square-crops[hidden]{display:block}.square-crops-fallback{display:none}}.square-crops fieldset{min-width:0;max-width:640px;margin:0;padding:0;border:0}.square-crops legend{padding:0;margin-bottom:8px;font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-faint)}.square-crops__controls{margin-bottom:12px}.square-crops__frame{max-width:320px;padding:4px;border:1px solid var(--edge);border-radius:2px;background:var(--surface)}.square-crops__frame svg{display:block;width:100%;height:auto;overflow:visible}.square-crops__frame path,.square-crops__frame rect,.square-crops__frame circle{vector-effect:non-scaling-stroke}.square-crops__grid{fill:none;stroke:var(--edge);stroke-width:1px}.square-crops__source{fill:none;stroke:var(--ink-faint);stroke-width:1px;stroke-dasharray:4 4}.square-crops__crop{fill:var(--highlight);stroke:var(--ink);stroke-width:2px}.square-crops__point{fill:var(--ink);stroke:var(--ground);stroke-width:2px}.square-crops__selection{margin-top:8px;font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;color:var(--ink-faint)}.square-crops [data-crop]{display:none}.square-crops:has(input[value=portrait]:checked) [data-crop=portrait]{display:block}.square-crops:has(input[value=portrait-wide]:checked) [data-crop=portrait-wide]{display:block}.square-crops:has(input[value=square]:checked) [data-crop=square]{display:block}.square-crops:has(input[value=landscape]:checked) [data-crop=landscape]{display:block}.square-crops:has(input[value=widescreen]:checked) [data-crop=widescreen]{display:block}.square-crops:has(input[value=wide]:checked) [data-crop=wide]{display:block}@media print{.square-crops[hidden]{display:none}.square-crops-fallback{display:block}}.research-pulse{display:inline-flex;align-items:flex-end;gap:2px;height:14px;margin-left:12px;vertical-align:-1px}@media screen and (max-width:768px){.research-pulse{display:flex;margin:8px 0 0}}.research-pulse__cell{display:block;width:4px;height:3px;border-radius:1px;background:var(--edge)}.research-pulse__cell--1{height:6px;background:var(--ink-faint)}.research-pulse__cell--2{height:10px;background:var(--ink-muted)}.research-pulse__cell--3{height:14px;background:var(--ink)}.research-pulse__cell--now{background:var(--signal)}.block.entry .prose>h2::before{content:none}.rows.bench>li{margin-bottom:16px}.rows.bench>li:last-child{margin-bottom:0}.rows.streams .row-title{font-weight:500}:is(.log-hub,.log-month,.home) .prose li{margin-bottom:10px}.log-grid{list-style:none;margin:0;padding:0;max-width:640px;font-family:ibm plex mono,ui-monospace,sf mono,Menlo,monospace;font-size:14px;line-height:20px;font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.log-grid li{display:grid;grid-template-columns:64px repeat(12,minmax(0,1fr));column-gap:8px;align-items:center;padding:6px 0}.log-grid li+li{border-top:1px solid var(--rule)}.log-grid .log-year{color:var(--ink-faint)}.log-grid a.log-month{justify-self:center;color:var(--ink);text-decoration:none}.log-grid a.log-month:hover{text-decoration:underline;text-decoration-thickness:1px}.log-grid a.log-month[aria-current=page]{font-weight:500;box-shadow:inset 0 -2px var(--signal)}.log-grid .log-void{justify-self:center;color:var(--edge);user-select:none}@media screen and (max-width:768px){.log-grid li{grid-template-columns:44px repeat(12,minmax(0,1fr));column-gap:2px}}.newsletter .page-head .subscribe{margin-top:24px}.film{--fade-start:0px;--fade-end:72px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;-webkit-mask-image:linear-gradient(to right,transparent,#000 var(--fade-start),#000 calc(100% - var(--fade-end)),transparent);mask-image:linear-gradient(to right,transparent,#000 var(--fade-start),#000 calc(100% - var(--fade-end)),transparent)}.film::-webkit-scrollbar{display:none}.film[data-more=start]{--fade-start:72px;--fade-end:0px}.film[data-more=both]{--fade-start:72px}.film[data-more=""]{--fade-end:0px}.film-strip{display:flex;width:max-content;list-style:none;margin:0;padding:0}.film-frame,.film-leader{position:relative;height:188px;background:var(--film)}.film-frame::before,.film-frame::after,.film-leader::before,.film-leader::after{content:"";position:absolute;left:0;right:0;height:10.5px;background:var(--ground);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25.375' height='10.5'%3E%3Crect x='5.2' width='15' height='10.5' rx='2'/%3E%3C/svg%3E")repeat-x 0 0/25.375px 10.5px;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25.375' height='10.5'%3E%3Crect x='5.2' width='15' height='10.5' rx='2'/%3E%3C/svg%3E")repeat-x 0 0/25.375px 10.5px}.film-frame::before,.film-leader::before{top:5px}.film-frame::after,.film-leader::after{bottom:5px}.film-frame{flex:none;padding:30px 0 0 11px}.film-frame a{display:block;width:192px;height:128px}.film-frame img{display:block;width:100%;height:100%;object-fit:cover;border-radius:2px}.film-print{position:absolute;font-family:ibm plex sans condensed,ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-size:12px;line-height:12px;font-weight:700;color:var(--ink-faint);white-space:nowrap;font-variant-numeric:tabular-nums;pointer-events:none;transition:color 150ms ease}.film-frame:is(:hover,:focus-within) .film-print{color:var(--ink)}.film-print--title,.film-print--mark{top:16px}.film-print--number,.film-print--date{bottom:16px}.film-print--title{left:13px;max-width:150px;overflow:hidden;text-overflow:ellipsis;font-weight:500}.film-print--mark,.film-print--date{right:2px}.film-print--number{left:13px}.film-leader{flex:0 0 166px;clip-path:path("M0 0 L30 0 C68 0 64 86 104 86 L150 86 Q166 86 166 102 L166 172 Q166 188 150 188 L0 188 Z")}.film+.legend{margin-top:12px}.engraving{display:flex;justify-content:center;padding-top:32px}.engraving a{display:block;line-height:0}.engraving img{display:block;height:120px;width:auto}@media screen and (prefers-color-scheme:dark){.engraving img{filter:grayscale(1)invert(.9)}}@media screen and (max-width:768px){.engraving{padding-top:24px}.engraving img{height:96px}}.dispatch .prose p>img:only-child{border:0;border-radius:0}.flaneur-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:760px;margin:32px 0 48px;align-items:start}.flaneur-gallery img{display:block;width:100%;height:auto}.flaneur-gallery p{display:contents}.dispatch .block.end .main>p:first-child{max-width:640px;margin:0 0 16px}.page-head+.leaves-grid>.block:first-child{margin-top:0}.leaves{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:24px 12px;list-style:none;margin:0;padding:0;max-width:880px}@media screen and (max-width:768px){.leaves{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 8px}}.leaf{min-width:0}.leaf a{display:block;line-height:0;margin:0 2px 2px 0;border:1px solid var(--edge);border-radius:2px;background:var(--surface);box-shadow:2px 2px 0 var(--ink);transition:border-color 150ms ease,box-shadow 80ms ease,transform 80ms ease}.leaf a:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.leaf a:hover,.leaf a:focus-visible{border-color:var(--ink)}.leaf a:active{transform:translate(2px,2px);box-shadow:none}.leaf img{display:block;width:100%;height:auto;aspect-ratio:95/171;object-fit:cover;border-radius:2px}.leaf time{display:block;font-size:14px;line-height:20px;color:var(--ink-faint);margin-top:6px}.links-page{margin:0}.links{max-width:428px;margin:0 auto;padding:48px 20px}.links-head{display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center}.links-head .avatar{display:block;width:96px;height:96px;border-radius:50%;object-fit:cover;border:1px solid var(--edge)}.links-head .links-logo{display:block;line-height:0}.links-head .links-logo img{display:block;height:32px;width:auto}@media screen and (prefers-color-scheme:dark){.links-head .links-logo img{filter:invert(1)}}.links-head .links-dek{margin:0;font-size:16px;line-height:24px;color:var(--ink-muted)}.pills{list-style:none;margin:32px 0 0;padding:0;display:flex;flex-direction:column;gap:12px}.pills li{margin:0}.pills a{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:8px 16px;border:1px solid var(--ink);border-radius:2px;background:var(--ground);color:var(--ink);font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-size:16px;line-height:24px;font-weight:500;text-decoration:none;box-shadow:2px 2px 0 var(--ink);margin:0 2px 2px 0;transition:transform 80ms ease,box-shadow 80ms ease,background-color 150ms ease}.pills a:active:not(:disabled):not([aria-disabled=true]){transform:translate(2px,2px);box-shadow:none}.pills a:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.pills a:hover{background:var(--surface)}.pills .pill-kind{flex:none;font-size:14px;line-height:20px;font-family:ibm plex sans,system-ui,helvetica neue,Arial,sans-serif;font-weight:400;color:var(--ink-faint);white-space:nowrap}.links-body{margin-top:32px;font-size:18px;line-height:28px}.links-body>:first-child{margin-top:0}.links-body>:last-child{margin-bottom:0}.links-body p{margin:0 0 18px}.links-body hr{height:0;margin:32px 0;border:0}.links-body .pills{margin:0 0 18px}.links-more{margin-top:32px;text-align:center;max-width:none}.links-subscribe{margin-top:32px}.links-subscribe .subscribe{flex-direction:column;align-items:stretch}.links-subscribe .legend{text-align:center;max-width:none}.letters{columns:3;column-gap:48px;max-width:880px}@media screen and (max-width:768px){.letters{columns:1}}.letters+.legend{margin-top:8px}.letter{break-inside:avoid;margin:0 0 24px}.letter h3{display:flex;align-items:baseline;column-gap:12px;font-size:18px;line-height:28px;font-weight:600;margin:0 0 4px}.letter ul{list-style:none;margin:0;padding:0}.letter li{font-size:16px;line-height:24px;margin:0 0 4px;padding-left:12px;text-indent:-12px}.letter a{text-decoration:none}.letter a:hover{text-decoration:underline}.letter .env{display:inline-block;margin-left:6px;color:var(--ink-faint);text-indent:0;vertical-align:-2px}.letter .env .icon{width:14px;height:14px}.letters+.legend .env{display:inline-block;margin:0;vertical-align:-2px}.letters+.legend .env .icon{width:14px;height:14px}.letters .nobr{white-space:nowrap}@media print{header.site{display:block!important;padding:0!important;margin:20px 0!important;border:0!important;text-align:center!important}header.site .logo img{height:48px!important;width:auto!important;filter:none!important}nav,.search-key,footer.foot,.category-filter{display:none!important}.layout{padding:0!important}.layout main{padding-top:0!important;max-width:640px!important;margin:0 auto!important}.layout main img{max-width:100%!important}.page-head,.block{display:block!important}.prose>h2::before{position:static!important;display:inline-block!important;width:auto!important;margin-right:12px}body{background:#fff!important;color:#000!important}a{text-decoration:none!important;color:#000!important}}