:root{--bg:#f6f6f3;--fg:#111;--muted:#a3a39d;--rule:#deded8;--tint:#ecece7;--accent:#3047e0;--sans:"Geist", "Helvetica Neue", Arial, sans-serif;--mono:"Geist Mono", ui-monospace, "SFMono-Regular", Consolas, monospace;--strip:clamp(120px, 12vw, 190px);--lens-w:clamp(220px, 30vw, 460px);--lens-h:clamp(170px, 28vh, 260px);--pad:max(16px, 1.6vw);color-scheme:light}*{box-sizing:border-box}html,body{margin:0}html,.sheet{scrollbar-width:none}html::-webkit-scrollbar,.sheet::-webkit-scrollbar{display:none}body.home:not(.grid){overscroll-behavior:none;height:100%;overflow:hidden}body{background:var(--bg);color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:13px;line-height:1.35}img{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;padding:0}a{color:inherit}:focus-visible{outline:1.5px solid var(--accent);outline-offset:3px}::selection{background:var(--accent);color:#fff}.mono{font-family:var(--mono);letter-spacing:.02em;font-size:11px}.ul{border-bottom:1px solid;text-decoration:none}.yr{white-space:nowrap}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}#loader{z-index:50;background:var(--fg);color:var(--bg);place-items:center;transition:transform .9s cubic-bezier(.76,0,.24,1);display:grid;position:fixed;inset:0}#loader canvas{width:96px;height:96px}#loader .count{right:var(--pad);bottom:var(--pad);font-family:var(--mono);font-size:12px;position:absolute}#loader .who{left:var(--pad);bottom:var(--pad);font-family:var(--mono);opacity:.6;font-size:12px;position:absolute}#loader.done{transform:translateY(-100%)}.hud{pointer-events:none;z-index:5;position:fixed;inset:0}.hud>*{pointer-events:auto}.hud:before,.hud:after{content:"";z-index:-1;pointer-events:none;display:none;position:absolute;left:0;right:0}.hud:before{height:var(--band-top,170px);background:linear-gradient(var(--bg) 62%, transparent);top:0}.hud:after{height:var(--band-bottom,72px);background:linear-gradient(transparent, var(--bg) 55%);bottom:0}body.grid .hud:before,body.grid .hud:after{display:block}body.grid{--band-top:calc(var(--pad) + 64px)}.name{left:var(--pad);top:var(--pad);font-weight:500;text-decoration:none;position:absolute}.topbar{top:var(--pad);left:75%;right:var(--pad);grid-template-columns:1fr auto auto;gap:24px;display:grid;position:absolute}.topbar a{text-decoration:none}.topbar a:hover,.name:hover{color:var(--accent)}.topbar .on{text-underline-offset:3px;text-decoration:underline}.bio{top:calc(var(--pad) + 36px);left:75%;right:var(--pad);gap:14px;max-width:30ch;display:grid;position:absolute}.bio p{margin:0}.index{left:var(--pad);pointer-events:none;width:0;height:0;margin:0;padding:0;list-style:none;position:absolute;top:50%}.index li{white-space:nowrap;will-change:transform, opacity;height:18px;position:absolute;top:-9px;left:0}.index button{color:var(--muted);pointer-events:auto;line-height:18px;transition:color .25s}.index button:hover,.index button.on{color:var(--fg)}.lensrow{height:0;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.lensrow .k{right:calc(50% + var(--lens-w) / 2 + 28px);text-align:right;white-space:nowrap;position:absolute;transform:translateY(-50%)}.lensrow .s{max-width:18ch;position:absolute;left:75%;transform:translateY(-50%)}.lensrow .num{right:var(--pad);font-family:var(--mono);position:absolute;transform:translateY(-50%)}.lens{width:var(--lens-w);height:var(--lens-h);pointer-events:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.lens i{border:0 solid var(--fg);width:26px;height:26px;position:absolute}.lens i:first-child{border-width:3px 0 0 3px;top:0;left:0}.lens i:nth-child(2){border-width:3px 3px 0 0;top:0;right:0}.lens i:nth-child(3){border-width:0 0 3px 3px;bottom:0;left:0}.lens i:nth-child(4){border-width:0 3px 3px 0;bottom:0;right:0}.lens .read{font-family:var(--mono);color:var(--muted);justify-content:flex-end;font-size:10px;display:flex;position:absolute;top:calc(100% + 10px);left:0;right:0}.views{left:var(--pad);bottom:var(--pad);gap:4px;display:flex;position:absolute}.views button{color:var(--muted)}.views button.on{color:var(--fg);text-underline-offset:3px;text-decoration:underline}.foot{right:var(--pad);bottom:var(--pad);color:var(--muted);position:absolute}.mobilebar{display:none}.strip{z-index:2;touch-action:none;position:fixed;inset:0;overflow:hidden}.item{width:var(--strip);margin-left:calc(var(--strip) / -2);will-change:transform;display:block;position:absolute;top:0;left:50%}.item .img{background:var(--tint);aspect-ratio:var(--r,1);transition:transform .5s cubic-bezier(.2,.8,.2,1);position:relative;overflow:hidden}.item img{object-fit:cover;filter:grayscale()contrast(1.05);opacity:.85;width:100%;height:100%;transition:filter .5s,opacity .5s}.item.on img{filter:none;opacity:1}.item.on .img{transform:scale(1.04)}.item .t,.ph.empty img,.ph .phl{display:none}.ph.empty,.d-img.ph.empty{background:repeating-linear-gradient(-45deg, transparent 0 7px, var(--rule) 7px 8px), var(--tint)}.ph.empty .phl{text-align:center;font-family:var(--mono);color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:8px;font-size:10px;display:flex;position:absolute;inset:0}.item.on .ph.empty{background:repeating-linear-gradient(-45deg, transparent 0 7px, color-mix(in srgb, var(--accent) 35%, transparent) 7px 8px), color-mix(in srgb, var(--accent) 8%, var(--bg))}.item.on .ph.empty .phl{color:var(--accent)}body.grid .strip{touch-action:auto;max-width:1100px;padding:160px var(--pad) 120px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));align-items:start;gap:28px 14px;margin:0 auto;display:grid;position:relative;inset:auto;overflow:visible}body.grid .item{width:auto;margin:0;position:relative;left:auto;transform:none!important}body.grid .lens,body.grid .lensrow,body.grid .index,body.grid .mobilebar{display:none!important}body.grid .item img{filter:none;opacity:1}body.grid .item .img{transform:none}body.grid .item .t{justify-content:space-between;gap:6px;margin-top:8px;display:flex}body.grid .item .t .mono{color:var(--muted)}body.grid .item:hover .t span:first-child{color:var(--accent)}body.grid .bio{display:none}.cursor{z-index:20;pointer-events:none;font-family:var(--mono);background:var(--fg);color:var(--bg);opacity:0;white-space:nowrap;border-radius:999px;padding:4px 8px;font-size:11px;transition:opacity .2s;position:fixed;top:0;left:0;transform:translate(-50%,-50%)}.cursor.show{opacity:1}@media (hover:none){.cursor{display:none}}.scrim{z-index:30;background:color-mix(in srgb, var(--fg) 25%, transparent);opacity:0;pointer-events:none;transition:opacity .4s;position:fixed;inset:0}.sheet{z-index:31;background:var(--bg);overscroll-behavior:contain;width:50vw;transition:transform .6s cubic-bezier(.76,0,.24,1);position:fixed;top:0;bottom:0;right:0;overflow:hidden auto;transform:translate(100%);container-type:inline-size}body.sheet-open .scrim{opacity:1;pointer-events:auto}body.sheet-open .sheet{transform:none}body.sheet-open{overflow:hidden}.sheet-in{padding:var(--pad);padding-left:max(var(--pad), env(safe-area-inset-left,0px));padding-right:max(var(--pad), env(safe-area-inset-right,0px));padding-bottom:80px}.sheet-top{background:var(--bg);padding-block:var(--pad) 12px;margin-top:calc(-1 * var(--pad));z-index:5;justify-content:space-between;align-items:baseline;display:flex;position:sticky;top:0}.sheet-top:after{content:"";background:linear-gradient(var(--bg), transparent);pointer-events:none;height:28px;position:absolute;top:100%;left:0;right:0}.d{padding:9cqw 0 24px}.sheet .d-title{letter-spacing:-.015em;text-wrap:balance;margin:0;font-size:22px;font-weight:500;line-height:1.25}.sheet .d-lead{color:var(--muted);max-width:46ch;margin:10px 0 0;font-size:15px;line-height:1.55}.d-main{margin-top:9cqw}.d-img{background:var(--tint);aspect-ratio:var(--r,4/3);margin:0;position:relative;overflow:hidden}.d-img img{object-fit:cover;width:100%;height:100%;display:block}.d-main .d-img.is-tall{width:50%}.d-gallery{grid-template-columns:1fr 1fr;gap:10px;margin-top:9cqw;display:grid}.d-gallery .d-img{grid-column:1/-1}.d-gallery .d-img.is-tall{grid-column:auto}.d-row{border-top:1px solid var(--rule);grid-template-columns:24% minmax(0,1fr);gap:16px;margin-top:8cqw;padding-top:14px;display:grid}.sheet .d-lbl{color:var(--muted);margin:0;padding-top:2px;font-weight:400}.sheet .d-text p{max-width:52ch;margin:0 0 12px;font-size:14px;line-height:1.65}.d-meta{gap:10px;margin:0;display:grid}.d-meta div{grid-template-columns:90px minmax(0,1fr);gap:12px;display:grid}.d-meta dt{color:var(--muted);padding-top:1px}.d-meta dd{margin:0;font-size:13px;line-height:1.5}.sheet .d-links{flex-wrap:wrap;gap:6px 20px;margin:0;font-size:13px;display:flex}.d-links a{border-bottom:1px solid var(--fg);text-decoration:none}.d-links a:hover{color:var(--accent);border-color:var(--accent)}.d-next{border-top:1px solid var(--fg);grid-template-columns:24% minmax(0,1fr);gap:16px;width:100%;margin-top:12cqw;padding-top:14px;font-size:13px;display:grid}.d-next .mono{color:var(--muted);padding-top:1px}.d-next:hover>span:last-child{color:var(--accent)}.d [data-reveal]{opacity:0;transition:opacity .6s,translate .6s;translate:0 12px}.d [data-reveal].in{opacity:1;translate:0}@media (prefers-reduced-motion:reduce){.d [data-reveal]{opacity:1;translate:none}}@container (width<=520px){.d-row,.d-next{grid-template-columns:1fr;gap:8px}.d-main .d-img.is-tall{width:72%}}.ph .phl code{font-family:var(--mono);background:var(--bg);color:var(--fg);word-break:break-all;padding:2px 5px}.todo{color:var(--accent);border-bottom:1px dashed var(--accent)}@media (width<=1000px){.sheet{width:min(640px,100vw)}}@media (width<=860px){:root{--strip:42vw;--lens-w:64vw;--lens-h:34vh}.hud:before,.hud:after{display:block}body,body.grid{--band-top:72px;--band-bottom:132px}.index,.lensrow .k,.lensrow .s,.bio{display:none}.topbar{grid-template-columns:auto auto;left:auto}.topbar .clock,.lensrow .num{display:none}.views{bottom:calc(var(--pad) + 40px)}.foot{display:none}.mobilebar{left:var(--pad);right:var(--pad);bottom:var(--pad);letter-spacing:-.01em;justify-content:space-between;gap:12px;font-size:15px;display:flex;position:absolute}.mobilebar .mono{color:var(--muted);padding-top:3px}}
