:root{--ground:rgb(18, 18, 28);--surface:rgb(28, 28, 42);--panel:rgb(24, 24, 36);--ink:rgb(245, 245, 250);--soft:rgb(220, 220, 230);--dim:rgb(180, 180, 195);--faint:rgb(80, 80, 100);--line:rgb(30, 30, 45);--ui:var(--ink);--ui-ink:var(--ground);--lb:rgba(12, 12, 20, .97);--rule:rgb(45, 45, 60);--proj:rgb(28, 28, 42);--proj-line:rgb(45, 45, 60);--proj-accent:var(--ink);color-scheme:dark}:root[data-theme=light]{--ground:rgb(255, 255, 255);--surface:rgb(245, 245, 245);--panel:rgb(245, 245, 245);--ink:rgb(30, 30, 30);--soft:rgb(31, 31, 31);--dim:rgb(108, 108, 108);--faint:rgb(190, 190, 190);--line:rgb(238, 238, 238);--lb:rgba(255, 255, 255, .97);--rule:rgb(214, 214, 214);--proj:rgb(245, 245, 245);--proj-line:rgb(238, 238, 238);--proj-accent:var(--ink);color-scheme:light}:root{--sys:-apple-system, BlinkMacSystemFont, "segoe ui", Roboto, Oxygen, Ubuntu, Cantarell, "open sans", "helvetica neue", sans-serif;--f-display:var(--sys);--f-title:var(--sys);--f-text:var(--sys);--mono:var(--sys);--w-display:700;--tr-display:-0.03em;--ds:.9;--lh-display:1;--w-title:600;--tr-title:-0.01em;--ts:1.05;--w-mark:700;--tr-mark:-0.01em;--ms:1.1;--w-text:400;--xs:1.02;--m-s:.98;--m-trx:0em;--m-case:uppercase;--w-mono:500}.meta,.kind,.part,.coll-from,.column figcaption,.lb-fig figcaption{font-variant-numeric:tabular-nums}:root{--gap:6px;--gutter:14px;--wide:1072px;--vh:100vh}@media(min-width:900px){:root{--gap:10px;--gutter:24px}}*{box-sizing:border-box}html{background:var(--ground);-webkit-text-size-adjust:100%}body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--f-text);font-weight:var(--w-text);font-size:16px;line-height:1.5;overflow-x:hidden;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}button{font:inherit;color:inherit}.lb-open{overflow:hidden}.skiplink{position:absolute;left:-9999px;top:8px;z-index:60;background:var(--ink);color:var(--ground);padding:8px 12px;font-family:var(--mono);font-size:12px}.skiplink:focus{left:8px}:focus-visible{outline:1px solid var(--ink);outline-offset:3px}.top{--bar-logo:rgb(255, 255, 255);--bar-menu:rgb(220, 220, 230);--bar-hover:rgb(255, 100, 230);--bar-line:rgba(255, 255, 255, .06);background:radial-gradient(ellipse 70% 50% at 50% 25%,rgba(147,51,234,.15) 0%,transparent 70%),radial-gradient(ellipse 90% 60% at 50% 0%,rgba(217,70,239,.12) 0%,transparent 60%),linear-gradient(180deg,#181223 0%,#12121c 40%,#10121a 100%);background-attachment:fixed}:root[data-theme=light] .top{--bar-logo:rgb(30, 30, 30);--bar-menu:rgb(30, 30, 30);--bar-hover:rgb(108, 108, 108);--bar-line:rgb(238, 238, 238);background:#fff}.top{position:relative;z-index:30;border-bottom:1px solid var(--bar-line);--pm-gap:24px;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen,Ubuntu,Cantarell,open sans,helvetica neue,sans-serif;font-size:18px;letter-spacing:normal}@media(max-width:768px){.top{--pm-gap:14px}}@media(min-width:769px){.top{position:sticky;top:0}}@media(max-width:440px){.top #menu li+li{margin-inline-start:10px!important}.top #menu a{font-size:15px!important}}@media(max-width:380px){.top #menu li+li{margin-inline-start:7px!important}}.top .search-icon{display:none}@media(max-width:440px){.top .search-word{display:none}.top .search-icon{display:block}.top #menu a[aria-label=Search]{display:flex;align-items:center;height:60px}}.top .nav{display:flex;flex-wrap:wrap;justify-content:space-between;max-width:calc(1024px + var(--pm-gap) * 2);margin:0 auto;line-height:60px}.top .logo,.top #menu{display:flex;margin:auto var(--pm-gap)}.top .logo a{font-size:24px;font-weight:700;color:var(--bar-logo)}.top #menu{list-style:none;padding:0;word-break:keep-all;overflow-x:auto;white-space:nowrap;scrollbar-width:none}.top #menu::-webkit-scrollbar{display:none}.top #menu li+li{margin-inline-start:var(--pm-gap)}.top #menu li:has(.theme){display:flex;align-items:center}.top #menu a{font-size:16px;font-weight:600;color:var(--bar-menu)}.top #menu a:hover{color:var(--bar-hover)}.top #menu .active{font-weight:500;border-bottom:2px solid}.theme{display:none;align-items:center;background:0 0;border:0;padding:0;margin:0;cursor:pointer;color:var(--bar-logo)}.js .theme{display:flex}.theme:hover{color:var(--bar-hover)}.theme .moon,:root[data-theme=light] .theme .sun{display:none}:root[data-theme=light] .theme .moon{display:block}.page-header{max-width:var(--wide);margin:0 auto;padding:calc(var(--gutter) + 24px)var(--gutter)0}.ph-row{display:flex;justify-content:space-between;align-items:center;gap:16px}.ph-title{margin:0;font-family:var(--f-display);font-weight:var(--w-display);letter-spacing:var(--tr-display);font-size:calc(42px * var(--ds));line-height:1.1;color:var(--ink)}a.ph-title:hover{color:var(--soft)}.ph-links{display:flex;align-items:center;gap:20px;font-family:var(--mono);font-weight:var(--w-mono);font-size:calc(11.5px * var(--m-s));letter-spacing:.08em;text-transform:var(--m-case)}.ph-links a{color:var(--dim);display:flex;align-items:center}.ph-links a:hover,.ph-links a[aria-current]{color:var(--ink)}.ph-links a[aria-current]{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}.colls-intro{max-width:var(--wide);margin:0 auto;padding:0 var(--gutter)40px;color:var(--soft);font-size:calc(17px * var(--xs))}.foot a:hover{color:var(--ink)}.theme-anim,.theme-anim *{transition:background-color .25s ease,color .25s ease,border-color .25s ease!important}@media(prefers-reduced-motion:reduce){.theme-anim,.theme-anim *{transition:none!important}}.feed{padding:24px 0 40px}.block{margin:0 auto 88px;max-width:var(--wide)}@media(min-width:900px){.feed{padding-top:40px}.block{margin-bottom:150px;padding:0 var(--gutter)}}.kind{font-family:var(--mono);font-weight:var(--w-mono);font-size:calc(11.5px * var(--m-s));letter-spacing:.1em;text-transform:var(--m-case);color:var(--dim);display:flex;flex-wrap:wrap;align-items:baseline}.kind b{font-weight:inherit;color:var(--ink)}.kind span::before{content:"\00b7";margin:0 .6em;color:var(--faint)}.meta{font-family:var(--mono);font-weight:var(--w-mono);font-size:calc(11.5px * var(--m-s));letter-spacing:.03em;color:var(--dim);text-transform:var(--m-case);display:flex;flex-wrap:wrap;row-gap:2px}.meta span{white-space:nowrap}.meta span:not(:last-child)::after{content:"\00b7";margin:0 .6em;color:var(--faint)}.tagline{margin:0;color:var(--dim);font-size:calc(14.5px * var(--xs));max-width:60ch}.part{font-family:var(--mono);font-weight:var(--w-mono);font-size:calc(11px * var(--m-s));color:var(--dim);letter-spacing:.03em;text-transform:var(--m-case)}.part a{color:var(--ink);border-bottom:1px solid var(--faint)}h2 a:hover{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}.f{position:relative;display:block;background:var(--surface);cursor:zoom-in;overflow:hidden}.f img{width:100%;height:100%;object-fit:cover}.js .fade{opacity:0;transform:translateY(14px);transition:opacity .9s ease,transform .9s ease}.js .fade.in{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.js .fade,.js .fade.in{opacity:1;transform:none;transition:none}.strip{scroll-behavior:auto!important}}.single .hero{display:flex;justify-content:center}.single .hero .f{width:100%}.single .cap{padding:12px var(--gutter)0;display:grid;gap:4px}.single .cap h2{margin:0;font-family:var(--f-title);font-size:calc(16px * var(--ts));font-weight:var(--w-title);letter-spacing:var(--tr-title);line-height:1.3;overflow-wrap:break-word}@media(min-width:900px){.single .hero .f{width:min(100%,calc((var(--vh) - 110px) * var(--a)))}.single .cap{max-width:var(--wide);margin:0 auto;padding:14px 0 0;grid-template-columns:auto 1fr;column-gap:24px;align-items:baseline}.single .cap .tagline,.single .cap .part{grid-column:1/-1}}.set-head{margin:0 var(--gutter);padding:16px 0 18px;border-top:1px solid var(--rule);display:grid;grid-template-columns:1fr;gap:6px;align-items:baseline}.set-head h2{margin:2px 0 0;font-family:var(--f-title);font-size:calc(22px * var(--ts));font-weight:var(--w-title);letter-spacing:var(--tr-title);line-height:1.2;overflow-wrap:break-word}.set-foot{margin:0 var(--gutter);padding:14px 0 0;display:flex;justify-content:space-between;align-items:center;gap:16px}.openall{font-size:calc(15px * var(--xs));border-bottom:1px solid var(--faint);padding-bottom:2px}.openall .n{color:var(--dim)}.openall:hover{border-color:var(--ink)}@media(min-width:900px){.set-head,.set-foot{margin-left:0;margin-right:0}.set-head{grid-template-columns:1fr auto;column-gap:40px;row-gap:4px;padding-top:18px;padding-bottom:22px}.set-head .kind{grid-column:1/-1}.set-head .meta{grid-column:2;grid-row:2;justify-content:flex-end}.set-head .tagline{grid-column:1}.set-head .part{grid-column:2;justify-content:flex-end}}.mosaic{display:flex;flex-direction:column;gap:var(--gap)}.row{display:flex;gap:var(--gap);align-items:stretch}.row>.f,.row>.stack{flex-basis:0;min-width:0}.stack{display:flex;flex-direction:column;gap:var(--gap)}.mosaic.wide{display:none}@media(min-width:900px){.mosaic.wide{display:flex}.mosaic.narrow{display:none}}.stripwrap{position:relative}.strip{display:flex;gap:var(--gap);overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;padding:0 var(--gutter);scroll-padding:0 var(--gutter)}.strip::-webkit-scrollbar{display:none}.strip .f{flex:none;height:min(58vw,calc(var(--vh) * .64));scroll-snap-align:start}.strip .f img{width:100%;height:100%}.strip .more{flex:none;height:min(58vw,calc(var(--vh) * .64));aspect-ratio:2/3;scroll-snap-align:start;display:flex;flex-direction:column;justify-content:flex-end;padding:18px;border:1px solid var(--line);background:var(--panel)}.strip .more b{font-family:var(--f-display);font-size:calc(34px * var(--ts));font-weight:400;letter-spacing:-.02em;line-height:1}.strip .more span{font-family:var(--mono);font-weight:var(--w-mono);font-size:calc(11px * var(--m-s));color:var(--dim);text-transform:var(--m-case);margin-top:8px;letter-spacing:.03em}.strip .more:hover{border-color:var(--faint)}@media(min-width:900px){.strip{padding:0;scroll-padding:0}.strip .f,.strip .more{height:min(560px,calc(var(--vh) * .62))}}.arrows{display:none;gap:8px;align-items:center}@media(min-width:900px) and (hover:hover){.js .arrows{display:flex}}.arrows button{width:38px;height:38px;border-radius:50%;border:1px solid var(--faint);background:0 0;cursor:pointer;font-size:16px}.arrows button:hover:not(:disabled){border-color:var(--ink)}.arrows button:disabled{opacity:.3;cursor:default}.projblock .panel{background:var(--proj);border:1px solid var(--proj-line);margin:0 10px;padding:30px 18px 24px}.projblock .kind b{color:var(--proj-accent)}.projblock h2{font-family:var(--f-display);font-weight:var(--w-display);letter-spacing:var(--tr-display);line-height:var(--lh-display);overflow-wrap:break-word}.projblock h2{margin:14px 0 0;font-size:calc(clamp(40px,11.5vw,112px) * var(--ds))}.projblock h2 a:hover{text-underline-offset:.12em}.statement{margin:16px 0 0;max-width:46ch;color:var(--soft);font-size:calc(16px * var(--xs));font-style:normal}.projblock .inset{display:flex;justify-content:center;margin-top:26px}.projblock .inset .f{width:100%;cursor:pointer}.panel-foot{margin-top:18px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px 20px}.enter{font-size:calc(15px * var(--xs));border-bottom:1px solid var(--ink);padding-bottom:2px}.enter:hover{color:var(--proj-accent);border-color:var(--proj-accent)}.projblock .part{margin-top:12px}@media(min-width:900px){.projblock .panel{margin:0;padding:64px 64px 48px}.projblock .inset{margin-top:44px}.projblock .inset .f{width:min(100%,calc(var(--vh) * .68 * var(--a)))}.panel-head{max-width:1100px}.panel-foot{margin-top:24px}}.part{display:flex;flex-wrap:wrap;gap:6px}.part .chip{display:inline-flex;align-items:baseline;border:1px solid var(--faint);border-bottom:1px solid var(--faint);color:var(--soft);padding:3px 8px 2px}.part .chip span{color:var(--dim)}.part .chip span::before{content:"\00b7";margin:0 .6em;color:var(--faint)}.part .chip:hover{border-color:var(--ink);color:var(--ink)}.kind-collection b{color:var(--ink)}.coll-head h1{font-size:calc(clamp(34px,7vw,72px) * var(--ds))}.coll-body{max-width:var(--wide);margin:0 auto;display:grid;gap:64px}.coll-group{display:grid;gap:var(--gap)}.coll-from{padding:0 var(--gutter)6px;font-family:var(--mono);font-weight:var(--w-mono);font-size:calc(11px * var(--m-s));letter-spacing:.03em;text-transform:var(--m-case);color:var(--dim);display:flex;flex-wrap:wrap;gap:4px 14px}.coll-from a{color:var(--ink);border-bottom:1px solid var(--faint)}.coll-from a:hover{border-color:var(--ink)}.coll-from .of{color:var(--faint)}.coll-solo{display:flex;justify-content:center}.coll-solo .f{width:100%}@media(min-width:900px){.coll-body{padding:0 var(--gutter);gap:110px}.coll-from{padding-left:0;padding-right:0}.coll-solo .f{width:min(100%,calc((var(--vh) - 110px) * var(--a)))}}.cards{max-width:var(--wide);margin:0 auto;padding:0 var(--gutter)40px;display:grid;gap:48px 24px;grid-template-columns:1fr;align-items:start}@media(min-width:600px){.cards{grid-template-columns:repeat(2,1fr)}}@media(min-width:900px){.cards{grid-template-columns:repeat(3,1fr);gap:64px 32px}}.card{display:grid;gap:6px}.card .f{cursor:pointer;margin-bottom:6px}.card-title{font-family:var(--f-title);font-size:calc(19px * var(--ts));font-weight:var(--w-title);letter-spacing:var(--tr-title);line-height:1.2}.card:hover .card-title{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}.shelf-one{padding-top:24px}@media(min-width:900px){.shelf-one{padding-top:40px}}.shelf-one .block{margin-bottom:64px}@media(min-width:900px){.shelf-one .block{margin-bottom:100px}}.shelf-row{max-width:var(--wide);margin:24px auto 72px}.shelf-kind{padding:0 var(--gutter)12px}.shelf-cards{display:flex;gap:16px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;padding:0 var(--gutter);scroll-padding:0 var(--gutter)}.shelf-cards::-webkit-scrollbar{display:none}.shelf-card{flex:0 0 72%;scroll-snap-align:start;display:grid;gap:6px;align-content:start;background:var(--proj);border:1px solid var(--proj-line);padding:12px 12px 16px}.shelf-card .f{cursor:pointer;margin-bottom:8px}.shelf-title{font-family:var(--f-display);font-weight:var(--w-display);letter-spacing:var(--tr-display);font-size:calc(26px * var(--ds));line-height:1.05}.shelf-card:hover .shelf-title{color:var(--proj-accent)}@media(min-width:900px){.shelf-row{margin-top:40px;margin-bottom:120px}.shelf-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));overflow:visible}.shelf-card{padding:16px 16px 20px}.shelf-title{font-size:calc(32px * var(--ds))}}.pin-label{max-width:var(--wide);margin:0 auto 10px;padding:0 var(--gutter);font-family:var(--mono);font-weight:var(--w-mono);font-size:calc(11.5px * var(--m-s));letter-spacing:.1em;text-transform:var(--m-case);color:var(--proj-accent)}.pinned{padding-top:24px}@media(min-width:900px){.pinned{padding-top:40px}.pin-label{margin-bottom:14px}}.pinned+.feed{padding-top:0}.post{padding:28px 0 60px}.post-head{max-width:var(--wide);margin:0 auto;padding:36px var(--gutter)40px}@media(min-width:900px){.post-head{padding-top:44px;padding-bottom:56px}}.post-head h1{margin:10px 0 14px;font-family:var(--f-display);font-size:calc(clamp(34px,6vw,60px) * var(--ds));font-weight:var(--w-display);letter-spacing:var(--tr-display);line-height:1.05;overflow-wrap:break-word}.text{margin:16px 0 0;font-size:calc(17px * var(--xs));color:var(--soft);max-width:56ch;line-height:1.55}.text p{margin:0 0 .8em}.text p:last-child{margin-bottom:0}.post .part{margin-top:18px}.proj-panel{background:var(--proj);border:1px solid var(--proj-line);padding:26px 20px 24px}.proj-panel .kind b{color:var(--proj-accent)}.proj-head h1{font-size:calc(clamp(42px,9vw,96px) * var(--ds));line-height:1;margin-top:14px}.proj-panel .meta{margin-top:22px}@media(min-width:900px){.proj-panel{padding:48px 56px 44px}}.post-single .single-head{padding-top:18px}.post-single .single-head h1{margin-top:0}@media(min-width:900px){.post-single .single-head{padding-top:26px;text-align:center}.post-single .single-head .meta{justify-content:center}.post-single .single-head .text{margin-left:auto;margin-right:auto}}.column{display:flex;flex-direction:column;align-items:center;gap:56px}@media(min-width:900px){.column{gap:96px;padding:0 var(--gutter)}}.post-project .column{gap:72px}@media(min-width:900px){.post-project .column{gap:140px}}.column figure{margin:0;width:100%;max-width:calc(var(--wide) - 2 * var(--gutter));display:flex;flex-direction:column;align-items:center;scroll-margin-top:64px}.column .f{width:100%}@media(min-width:900px){.column .f{width:min(100%,calc((var(--vh) - 90px) * var(--a)))}}.column figcaption{align-self:stretch;padding:10px var(--gutter)0;font-family:var(--mono);font-weight:var(--w-mono);font-size:calc(11px * var(--m-s));color:var(--dim);letter-spacing:.03em;display:flex;gap:12px}@media(min-width:900px){.column figcaption{padding-left:0;padding-right:0;justify-content:center}}.column figcaption a{color:var(--soft)}.column figcaption a:hover{color:var(--ink)}.column figcaption .of{color:var(--faint)}.post-end{max-width:var(--wide);margin:110px auto 0;padding:0 var(--gutter);display:flex;justify-content:space-between;gap:20px;font-size:calc(15px * var(--xs))}.post-end a{border-bottom:1px solid var(--faint);padding-bottom:2px}.post-end a:hover{border-color:var(--ink)}.post-end .dir{display:block;font-family:var(--mono);font-weight:var(--w-mono);font-size:calc(11px * var(--m-s));color:var(--dim);text-transform:var(--m-case);letter-spacing:.03em;margin-bottom:4px;border:0}.post-end .older{text-align:right}.foot{margin-top:48px;font-family:var(--sys)}.foot-links{padding:24px var(--gutter);border-top:1px solid var(--line);text-align:center;font-size:12.8px;color:var(--dim)}.foot-links a{color:var(--dim)}.foot-links a:hover{color:var(--ink)}.foot-sep{margin:0 8px;opacity:.4}.lb{position:fixed;inset:0;z-index:50;background:var(--lb);display:flex;align-items:center;justify-content:center}.lb[hidden]{display:none}.lb-fig{margin:0;display:flex;flex-direction:column;align-items:center;max-width:100%}.lb-fig img{max-width:100vw;max-height:calc(100dvh - 70px);width:auto;height:auto;object-fit:contain}@media(min-width:900px){.lb-fig img{max-width:calc(100vw - 160px);max-height:calc(100dvh - 90px)}}.lb-fig figcaption{padding-top:12px;font-family:var(--mono);font-weight:var(--w-mono);font-size:calc(11px * var(--m-s));color:var(--dim);letter-spacing:.03em;text-transform:var(--m-case);text-align:center;padding-left:16px;padding-right:16px}.lb-x{position:absolute;top:12px;right:14px;background:0 0;border:0;cursor:pointer;font-family:var(--mono);font-weight:var(--w-mono);font-size:calc(11.5px * var(--m-s));text-transform:var(--m-case);letter-spacing:.05em;color:var(--dim);padding:8px;z-index:2}.lb-x:hover{color:var(--ink)}.lb-nav{position:absolute;top:0;bottom:0;width:22%;max-width:160px;background:0 0;border:0;cursor:pointer;display:flex;align-items:center;opacity:.55}.lb-nav span{font-size:22px;padding:0 22px}.lb-nav:hover{opacity:1}.lb-prev{left:0;justify-content:flex-start}.lb-next{right:0;justify-content:flex-end}@media(max-width:899px){.lb-nav span{display:none}}.skip{padding:30vh 16px;text-align:center;color:var(--dim);font-family:var(--mono);font-size:12px}.skip a{color:var(--ink);border-bottom:1px solid var(--faint)}.shelf .kind b{color:var(--proj-accent)}