@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.12tyk43_3sh9u.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.0jzbimsg8vl84.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.0-wfv7uh4i7h9.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.0nx0ww8fni_q3.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_6cb68ad8-module__fsfPSG__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_6cb68ad8-module__fsfPSG__variable{--font-geist:"Geist", "Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/5ce348bf30bf5439-s.0zgw-jeven.3w.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/4fa387ec64143e14-s.0wkzw~je483f-.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/6306c77e7c8268e4-s.0rhz0arwfsn~5.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.0l76wvqk9d84w.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.0k4k9394f2q-k.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/797e433ab948586e-s.p.08e28id.o-okb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5ce348bf30bf5439-s.0zgw-jeven.3w.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/4fa387ec64143e14-s.0wkzw~je483f-.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6306c77e7c8268e4-s.0rhz0arwfsn~5.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.0l76wvqk9d84w.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.0k4k9394f2q-k.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/797e433ab948586e-s.p.08e28id.o-okb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_c0861b60-module__KoorUa__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_c0861b60-module__KoorUa__variable{--font-geist-mono:"Geist Mono", "Geist Mono Fallback"}
@font-face{font-family:Libre Baskerville;font-style:italic;font-weight:400;font-display:swap;src:url(../media/5cd5d3857f94bbd5-s.0m7zxfiqwa80h.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Libre Baskerville;font-style:italic;font-weight:400;font-display:swap;src:url(../media/b40b90bbb986e861-s.p.0k6d_~z0oztdb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Libre Baskerville Fallback;src:local(Times New Roman);ascent-override:76.22%;descent-override:21.22%;line-gap-override:0.0%;size-adjust:127.26%}.libre_baskerville_d72d47cd-module__aM7rDq__className{font-family:Libre Baskerville,Libre Baskerville Fallback;font-style:italic;font-weight:400}.libre_baskerville_d72d47cd-module__aM7rDq__variable{--font-baskerville:"Libre Baskerville", "Libre Baskerville Fallback"}
@font-face{font-family:Nothing You Could Do;font-style:normal;font-weight:400;font-display:swap;src:url(../media/4317bd468b03db68-s.p.0t6c~_3o2jvyn.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nothing You Could Do Fallback;src:local(Arial);ascent-override:86.19%;descent-override:36.58%;line-gap-override:0.0%;size-adjust:108.65%}.nothing_you_could_do_954f932e-module__N_vEEG__className{font-family:Nothing You Could Do,Nothing You Could Do Fallback;font-style:normal;font-weight:400}.nothing_you_could_do_954f932e-module__N_vEEG__variable{--font-hand:"Nothing You Could Do", "Nothing You Could Do Fallback"}
:root{--sans:var(--font-geist), system-ui, sans-serif;--mono:var(--font-geist-mono), ui-monospace, monospace;--serif:var(--font-baskerville), Georgia, serif;--hand:var(--font-hand), cursive;--type-t:.14s;--swift:cubic-bezier(.2, .8, .2, 1);--pen:cubic-bezier(.55, .1, .35, 1);--light:cubic-bezier(.65, 0, .35, 1);--spring:cubic-bezier(.34, 1.56, .64, 1);--paper:#fbfbfa;--ink:#141414;--body:#5e5e5e;--mute:#737373;--faint:#dadada;--line:#eee;--dash:#e2e2e2;--press:#f0f0ef;--note:#4a4a4a;--star:#141414;--glow:transparent;--gold:#d99a2b;--coral:#d9644e;--violet:#7b6cf0}[data-light=night]{--paper:#111;--ink:#ececec;--body:#a2a2a2;--mute:#858585;--faint:#333;--line:#222;--dash:#2c2c2c;--press:#1c1c1c;--note:#c8c8c8;--star:#ececec;--glow:transparent}body{transition:background-color 1.2s linear}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:84px;overflow-y:scroll}body{background:var(--paper);color:var(--ink);font:460 15px/25px var(--sans);letter-spacing:-.1px;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}::selection{background:color-mix(in srgb, var(--ink) 9%, transparent)}a{color:inherit}:focus-visible,.round:focus-visible,.mono-btn:focus-visible{outline:2px solid color-mix(in srgb, var(--ink) 50%, transparent);outline-offset:3px;border-radius:4px}.round:focus-visible,.mono-btn:focus-visible{border-radius:50%}.link{color:var(--ink);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--faint);text-decoration-color:var(--faint);transition:text-decoration-color var(--type-t) ease-out;font-weight:500}.link:hover{-webkit-text-decoration-color:var(--mute);text-decoration-color:var(--mute)}.link .ic{vertical-align:-2px;width:14px;height:14px;color:var(--ink);margin-right:4px}.name{color:var(--ink);font-weight:500}.voice{font-family:var(--serif);letter-spacing:0;font-size:.97em;font-style:italic}.mono-btn{all:unset;cursor:pointer;width:40px;height:40px;color:var(--ink);-webkit-tap-highlight-color:transparent;transition:transform .12s var(--swift);border-radius:50%;flex:none;display:block;position:relative}.mono-btn:active{transform:scale(.95)}.mono{width:100%;height:100%;overflow:visible}.mono .ink,.mono .scribble path{fill:none;stroke:currentColor;stroke-width:2.8px;stroke-linecap:round;stroke-linejoin:round}.mono-star{fill:var(--star);transform-origin:43px 32px;transform-box:view-box;transition:fill .6s var(--light)}.mono-star .glow{fill:var(--glow);filter:blur(3.5px);transition:fill .6s var(--light)}.mono-star.pop{animation:star-in .5s var(--spring) both}.mono-btn.flip .mono-star path{animation:star-turn .5s var(--swift);transform-origin:43px 32px;transform-box:view-box}@keyframes star-in{0%{opacity:0;transform:scale(0)rotate(-60deg)}}@keyframes star-turn{50%{transform:rotate(45deg)scale(1.25)}}body:before{content:"";z-index:9;pointer-events:none;background:linear-gradient(var(--paper) 0%, color-mix(in srgb, var(--paper) 74%, transparent) 19%, color-mix(in srgb, var(--paper) 54%, transparent) 34%, color-mix(in srgb, var(--paper) 38%, transparent) 47%, color-mix(in srgb, var(--paper) 28%, transparent) 56.5%, color-mix(in srgb, var(--paper) 19%, transparent) 65%, color-mix(in srgb, var(--paper) 12.6%, transparent) 73%, color-mix(in srgb, var(--paper) 7.6%, transparent) 80.2%, color-mix(in srgb, var(--paper) 4.2%, transparent) 86.1%, color-mix(in srgb, var(--paper) 2%, transparent) 91%, color-mix(in srgb, var(--paper) 0.8%, transparent) 95.2%, color-mix(in srgb, var(--paper) 0.2%, transparent) 98.2%, transparent);height:96px;position:fixed;top:0;left:0;right:0}@media (max-width:768px){body:before{height:40px}}body:before{transition:opacity .2s}.prose h2{position:relative}.rule-mark{background:var(--ink);transform-origin:0;pointer-events:none;height:1px;position:absolute;top:50%;right:0}.home{max-width:592px;padding:88px max(16px, env(safe-area-inset-right)) 0 max(16px, env(safe-area-inset-left));margin:0 auto;position:relative}.intro-head{align-items:center;gap:14px;margin-bottom:36px;display:flex}.intro-head h1{letter-spacing:-.01em;margin:0;font-size:15px;font-weight:500;line-height:1.35}.intro-head time{color:var(--mute);font-size:14px;display:block}.bio p{color:var(--body);margin:0 0 18px}.trigger{white-space:nowrap;cursor:default;touch-action:manipulation;align-items:baseline;gap:.25em;display:inline-flex}.trigger .label{color:var(--ink);font-weight:500}.trigger .mark{width:18px;height:18px;color:var(--ink);align-self:center;overflow:visible}.handoff .mark{margin-right:-3px}.hop .mark{margin-left:-2px}.handoff .sheet,.trigger .spark{transform-box:fill-box;transform-origin:50%}.handoff .sheet{transition:transform .15s var(--swift)}.handoff .spark{opacity:0}.trigger:is(:hover,.tap,:focus-visible) .label{color:#0000;-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;background-image:linear-gradient(100deg, color-mix(in oklch, var(--ink) 40%, var(--gold)), color-mix(in oklch, var(--ink) 40%, var(--coral)), color-mix(in oklch, var(--ink) 40%, var(--violet)))}.handoff:is(:hover,.tap,:focus-visible) .sheet{transform:translate(2.5px,-1px)rotate(-8deg)}.handoff:is(:hover,.tap,:focus-visible) .spark{animation:twinkle .32s var(--swift) 90ms both}.hop:is(:hover,.tap) .spark{animation:twinkle .32s var(--swift) .26s}@keyframes twinkle{0%{opacity:0;transform:scale(.4)}50%{opacity:1;transform:scale(1.25)}to{opacity:1;transform:scale(1)}}.hop .w{transform-origin:bottom;display:inline-block}.hop:is(:hover,.tap) .w{animation:hop .9s var(--spring)}.hop:is(:hover,.tap) .w:nth-child(2){animation-delay:80ms}.hop:is(:hover,.tap) .w:nth-child(3){animation-delay:.16s}.hop:is(:hover,.tap) .w:nth-child(4){animation-delay:.24s}.hop:is(:hover,.tap) .w:nth-child(5){animation-delay:.32s}.voice-hop{white-space:normal;flex-wrap:wrap;gap:.28em;display:inline-flex}@keyframes hop{28%{transform:translateY(-4px)scale(1.03)}to{transform:none}}.email .ics{vertical-align:-2px;width:14px;height:14px;margin-right:4px;display:inline-block;position:relative}.email .ics .ic{transition:opacity .18s, filter .18s, transform .22s var(--swift);margin:0;position:absolute;inset:0}.email .ics .done,.email.copied .ics .ic:not(.done){opacity:0;filter:blur(3px);transform:scale(.6)}.email.copied .ics .done{opacity:1;filter:none;transform:none}.section{margin-top:56px}.section>h2{color:var(--mute);border-bottom:1px solid var(--line);margin:0;padding-bottom:10px;font-size:14px;font-weight:400}.rows{margin:0;padding:0;list-style:none}.row{grid-template-columns:124px 1fr;align-items:baseline;display:grid}.row .yr{color:var(--mute);font-variant-numeric:tabular-nums;place-self:start;padding-top:10px;font-size:14px}.row .cell{border-bottom:1px solid var(--line);color:var(--ink);align-items:baseline;gap:10px;padding:10px 0;text-decoration:none;transition:opacity .14s;display:flex}.row:last-child .cell{border-bottom-color:#0000}.row .sub{color:var(--mute)}.row .arrow{width:14px;height:10px;color:var(--mute);flex:none;align-self:center;overflow:visible}.row .arrow path{fill:none;stroke:currentColor;stroke-width:1.3px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1px;opacity:0;transition:stroke-dashoffset .12s ease-in,opacity 0s .12s}@media (hover:hover){.rows:has(a.cell:hover) a.cell:not(:hover){opacity:.3}.rows a.cell:hover .arrow path{stroke-dashoffset:0;opacity:1;transition:stroke-dashoffset .22s var(--pen), opacity 0s}.rows a.cell:hover .arrow path:last-child{transition-delay:.12s}}.row a.cell:active{opacity:.6}.row .plain{color:var(--mute);justify-content:space-between}.row .plain .soon,.row .cell .soon{font:17px/1 var(--hand);color:var(--mute)}.row a.cell .soon{margin-left:auto}.entering .home>*{animation:.6s cubic-bezier(.23,1,.32,1) both rise}.entering .home>.intro-head{animation-name:rise-clear}@keyframes rise-clear{0%{opacity:0;transform:translateY(8px)}}.entering .home>:nth-child(2){animation-delay:60ms}.entering .home>:nth-child(3){animation-delay:.12s}.entering .home>:nth-child(4){animation-delay:.18s}.entering .home>:nth-child(5){animation-delay:.24s}.entering .home>:nth-child(n+6){animation-delay:.3s}@keyframes rise{0%{opacity:0;filter:blur(6px);transform:translateY(8px)}}.foot{gap:8px;margin-top:64px;padding:32px 0 96px;display:grid;position:relative}.foot:before{content:"";border-top:1px solid var(--line);width:80px;position:absolute;top:0;left:0}.line.colophon{margin:8px 0 0;display:block}.colophon a{color:inherit;text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--faint);text-decoration-color:var(--faint);transition:color var(--type-t) ease-out, text-decoration-color var(--type-t) ease-out}.colophon a:hover{color:var(--body);-webkit-text-decoration-color:var(--mute);text-decoration-color:var(--mute)}.line{min-height:24px;color:var(--mute);font-variant-numeric:tabular-nums;align-items:center;font-size:14px;line-height:1.65em;display:flex}.sr{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.clock{font-variant-numeric:tabular-nums;display:inline-flex}.ap{color:var(--mute);margin-left:.08em}.where{color:var(--mute);white-space:pre;margin-left:.28em}.cities{cursor:default;outline-offset:4px;-webkit-user-select:none;user-select:none;border-radius:6px}.line.cities{white-space:nowrap;justify-self:start;display:inline-block}.cities .clock{display:inline}.landmark{vertical-align:-.22em;width:2.3em;height:1.45em;color:var(--mute);margin-left:.45em;display:inline-block}.landmark svg{fill:none;stroke:currentColor;stroke-width:1.1px;stroke-linecap:round;stroke-linejoin:round;width:100%;height:100%;display:block;overflow:visible}.landmark path,.landmark circle{stroke-dasharray:1 2}.city{vertical-align:baseline;display:inline-block;position:relative}.city .word{white-space:pre;display:inline-block}.city .word.out{position:absolute;top:0;left:0}.city .ch{white-space:pre;display:inline-block}.yl{color:var(--mute);margin-left:12px}.yl [data-yr]{color:var(--body)}.dg{display:inline-block;position:relative}.dg .ghost{pointer-events:none;position:absolute;top:0;left:0}.year{flex:none;grid-template-columns:repeat(26,4px);grid-auto-rows:4px;gap:2px;width:156px;display:grid}.year i{background:var(--faint);border-radius:50%;transition:background .4s}.roll{vertical-align:top;height:1.65em;line-height:inherit;display:inline-block;position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(#0000,#000 20% 80%,#0000);mask-image:linear-gradient(#0000,#000 20% 80%,#0000)}.roll>span{display:block}.roll>span+span{position:absolute;inset:0}.year i.past{background:var(--mute)}.year i.now{background:var(--ink);animation:2s ease-in-out infinite breathe}[data-light=night] .year i.now{background:var(--star);box-shadow:0 0 6px var(--glow)}@keyframes breathe{50%{opacity:.35}}.post{max-width:592px;padding:88px max(16px, env(safe-area-inset-right)) 120px max(16px, env(safe-area-inset-left));margin:0 auto;position:relative}.topbar{z-index:10;pointer-events:none;justify-content:space-between;margin-bottom:36px;display:flex;position:sticky;top:24px}.topbar>*,.topbar .round{pointer-events:auto}.round{all:unset;box-sizing:border-box;cursor:pointer;background:var(--press);width:40px;height:40px;color:var(--body);transition:color var(--type-t) ease-out, background var(--type-t) ease-out, transform .12s var(--swift);-webkit-tap-highlight-color:transparent;border-radius:50%;place-items:center;display:grid}@media (hover:hover){.round:hover{color:var(--ink);background:color-mix(in srgb, var(--press) 65%, var(--line))}}.round:active{transform:scale(.95)}.round svg{width:18px;height:18px;transition:opacity .18s, filter .18s, transform .22s var(--swift);grid-area:1/1}.round .done,.round.copied .base{opacity:0;filter:blur(3px);transform:scale(.6)}.round.copied .done{opacity:1;filter:none;transform:none}.aside{width:176px;position:absolute;top:164px;bottom:0;right:calc(100% + 28px)}.aside-in{position:sticky;top:88px}.toc h3{opacity:0;margin:0 0 12px;font-size:14px;font-weight:500;line-height:1.4;transition:opacity .3s}.toc.scrolled h3{opacity:1}.toc ul{margin:0;padding:0;list-style:none}.toc li{margin:0 0 8px;line-height:1.4}.toc a{color:var(--mute);font-size:14px;text-decoration:none;transition:color .1s ease-out}.toc a:hover,.toc a[aria-current=true]{color:var(--ink)}.article header time{width:fit-content;color:var(--mute);margin-bottom:6px;font-size:14px;line-height:20px;display:block}.article header h1{letter-spacing:-.02em;text-wrap:balance;width:fit-content;margin:0;font-size:20px;font-weight:600;line-height:28px}.article header .dek{font:italic 400 15px/22px var(--serif);color:var(--mute);margin:6px 0 0}.prose{color:var(--ink);margin-top:44px}.prose p{margin:20px 0 0;position:relative}.prose em{font-family:var(--serif);font-size:.95em}.prose h2{letter-spacing:-.01em;align-items:center;gap:16px;margin:56px 0 0;scroll-margin-top:40px;font-size:15px;font-weight:600;display:flex}.prose h2:first-child{margin-top:0}.prose h2:after{content:"";border-top:1px solid var(--line);flex:1}.prose a{color:var(--ink);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--faint);text-decoration-color:var(--faint);transition:text-decoration-color var(--type-t) ease-out;font-weight:500}.prose a:hover{-webkit-text-decoration-color:var(--mute);text-decoration-color:var(--mute)}.prose :is(ul,ol){margin:20px 0 0;padding-left:1.3em}.prose li{margin:6px 0 0;padding-left:.2em}.prose li::marker{color:var(--mute)}.prose strong,.prose b{font-weight:600}.prose blockquote{font:italic 400 15px/25px var(--serif);color:var(--body);margin:20px 0 0;padding:0 0 0 1.3em}.prose hr{text-align:center;color:var(--mute);border:0;margin:48px 0 0}.prose hr:after{content:"✦";font-size:12px}.prose code{font:13px/1 var(--mono);background:var(--press);border-radius:4px;padding:2px 5px}.prose pre{background:var(--press);font:13px/20px var(--mono);border-radius:8px;margin:20px 0 0;padding:14px 16px;overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose :is(img,video){border-radius:6px;max-width:100%;height:auto;margin:28px 0 0;display:block}.prose figure{margin:28px 0 0}.prose figcaption{color:var(--mute);margin-top:8px;font-size:14px}.prose h3{margin:36px 0 0;font-size:15px;font-weight:600}.prose sup a{color:var(--mute);padding:0 2px;font-size:12px;text-decoration:none}.sidenote{width:220px;color:var(--mute);font-size:14px;line-height:1.5;position:absolute;left:calc(100% + 36px)}.note{width:236px;color:var(--note);pointer-events:none;align-items:center;gap:14px;display:flex;position:absolute;top:0;bottom:0;left:calc(100% + 24px)}.note svg{flex:none;align-self:stretch;width:12px;overflow:visible}.note path{fill:none;stroke:currentColor;stroke-width:1.3px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1px}.note span{text-wrap:balance;font:22px/1.1 var(--hand);letter-spacing:.005em;clip-path:inset(-30% 100% -30% 0)}.note.in path{transition:stroke-dashoffset .45s var(--pen);stroke-dashoffset:0}.note.in span{transition:clip-path var(--write,.9s) var(--pen) .35s;clip-path:inset(-30% -10% -30% 0)}.post-end-wrap{margin-top:96px;container-type:inline-size}.post-nav{justify-content:space-between;gap:24px;display:flex}.pn{min-width:0;color:var(--mute);-webkit-tap-highlight-color:transparent;transition:color var(--type-t) ease-out;align-items:center;gap:10px;text-decoration:none;display:inline-flex}.pn.next{margin-left:auto}.pn .t{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.pn .round{flex:none}.pn .round svg{transition:transform .2s var(--swift)}@media (hover:hover){.pn:hover{color:var(--ink)}.pn:hover .round{color:var(--ink);background:color-mix(in srgb, var(--press) 65%, var(--line))}.pn.prev:hover .round svg{transform:translate(-2px)}.pn.next:hover .round svg{transform:translate(2px)}}.pn:active .round{transform:scale(.95)}@container (max-width:520px){.post-end-wrap .pn .t{display:none}}.thanks-wrap{margin-top:20px;display:inline-block}.thanks-wrap,.chips{transition:opacity .16s ease-out}.tucked{opacity:0;pointer-events:none}.thanks{all:unset;box-sizing:border-box;cursor:pointer;-webkit-user-select:none;user-select:none;height:28px;color:var(--mute);background:var(--press);-webkit-tap-highlight-color:transparent;transition:background var(--type-t) ease-out, color var(--type-t) ease-out;border-radius:99px;align-items:center;gap:4px;padding:0 10px 0 8px;font-size:14px;font-weight:500;display:inline-flex}@media (hover:hover){.thanks:hover,.chip:hover{color:var(--body);background:color-mix(in srgb, var(--press) 65%, var(--line))}}.thanks.given,.thanks.given:hover{color:var(--body)}.thanks:focus-visible,.chip:focus-visible{outline:2px solid color-mix(in srgb, var(--ink) 45%, transparent);outline-offset:2px}.thanks{position:relative}.thanks:after{content:"";position:absolute;inset:-8px -6px}.thanks .ic{width:20px;height:20px;display:block;position:relative}.thanks .heart{width:20px;height:20px;display:block}.thanks .heart svg{fill:currentColor;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px;transition:all .15s cubic-bezier(.4,0,.2,1);display:block}.thanks .count{font-variant-numeric:tabular-nums;line-height:1;display:inline-flex;translate:-1px 1px}.thanks .slot{justify-content:center;align-items:center;width:.6em;height:1em;display:inline-flex;position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(#0000 0%,#000 15% 85%,#0000 100%);mask-image:linear-gradient(#0000 0%,#000 15% 85%,#0000 100%)}.thanks .slot>span{will-change:transform;backface-visibility:hidden;line-height:1;position:absolute}.thanks .burst{pointer-events:none;position:absolute;inset:0}.thanks .burst i{background:var(--mute);border-radius:50%;position:absolute;top:50%;left:50%}.chips{flex-wrap:wrap;gap:8px;margin-top:20px;display:flex}.chip{height:28px;color:var(--body);background:var(--press);-webkit-tap-highlight-color:transparent;transition:background var(--type-t) ease-out, color var(--type-t) ease-out, transform .12s var(--swift);border-radius:99px;align-items:center;gap:6px;padding:0 12px 0 10px;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex}.chip:hover{color:var(--ink)}.chip:active{transform:scale(.97)}.chip .ic{width:14px;height:14px}.project .prose figure{margin:28px 0 0}.project .prose figure img{box-shadow:0 0 0 1px var(--line);border-radius:8px;margin:0}.project figcaption strong{color:var(--body);font-weight:500}.project figcaption a{color:inherit;font-weight:400}.lit-shots,.lit-caps{display:grid}.lit-shots>*,.lit-caps>*{grid-area:1/1}.lit-day,.lit-night{transition:opacity .36s ease-out,visibility .36s}.lit-night,[data-light=night] .lit-day{opacity:0;visibility:hidden}[data-light=night] .lit-night{opacity:1;visibility:visible}[data-light=night] .project img:not([src*=dark]){filter:brightness(.9)}.pair{grid-template-columns:1fr 1fr;gap:12px;display:grid}.pair figcaption{margin-top:8px}.devices-shots{grid-template-columns:698fr 462fr;align-items:end;gap:12px;display:grid}.project .devices .ipad{border-radius:14px}.project .devices .phone{border-radius:22px}@media (max-width:520px){.pair{grid-template-columns:1fr;gap:20px}}.round,.mono-btn,.chip{position:relative}.round:after,.mono-btn:after{content:"";border-radius:50%;position:absolute;inset:-2px}.chip:after{content:"";position:absolute;inset:-8px -4px}@keyframes draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@media (max-width:1179px){.aside{display:none}.note{align-items:flex-start;gap:8px;width:auto;margin:10px 0 0;position:relative;left:auto}.note svg{flex:none;align-self:auto;width:16px;height:22px}.note span{font-size:20px}.sidenote{width:auto;margin-top:8px;display:block;position:static}}@media (max-width:720px){.post{padding-top:76px}.topbar{z-index:10;background:linear-gradient(var(--paper) 55%, color-mix(in srgb, var(--paper) 0%, transparent));margin:0 -16px 24px;padding:12px 16px 20px;position:sticky;top:0}}@media (max-width:520px){.home{padding-top:56px}.post{padding-top:44px}.row{grid-template-columns:60px 1fr}.archive .row{grid-template-columns:96px 1fr}}.dimmer{z-index:40;pointer-events:none;opacity:0;position:fixed;inset:0}.mono-btn.pulling{z-index:41;transition:color .14s ease-out}.mono-btn.pulling .mono-star{transition:fill .14s ease-out}.mono-btn{touch-action:none}.line:has([data-yr]){cursor:default;-webkit-user-select:none;user-select:none;justify-self:start}.yl [data-yr]{font-variant-numeric:tabular-nums}::view-transition-group(*){animation-duration:.42s;animation-timing-function:cubic-bezier(.2,.8,.2,1)}::view-transition-old(root){animation:.16s ease-out both fade-out}::view-transition-new(root){animation:.38s cubic-bezier(.2,.8,.2,1) .12s both page-in}.article .meta{view-transition-name:meta}::view-transition-new(meta):only-child{animation:.3s cubic-bezier(.2,.8,.2,1) .36s both page-in}::view-transition-old(meta):only-child{animation:.16s ease-out both fade-out}::view-transition-old(.vt-date){object-fit:none;width:auto;height:100%}::view-transition-new(.vt-date){object-fit:none;width:auto;height:100%}::view-transition-old(.vt-date){object-position:right center}::view-transition-new(.vt-date){object-position:left center}::view-transition-old(corner){animation:.18s ease-out both fade-out}::view-transition-new(corner){animation:.24s ease-out .1s both fade-in}@keyframes fade-out{to{opacity:0}}@keyframes fade-in{0%{opacity:0}}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}}@property --vr{syntax:"<length>";inherits:false;initial-value:0}.lightswitch::view-transition-old(root){mix-blend-mode:normal;animation:none}.lightswitch::view-transition-new(root){mix-blend-mode:normal;animation:none}.lightswitch::view-transition-new(root){-webkit-mask-image:radial-gradient(circle at var(--vx) var(--vy), #000 calc(var(--vr) - 240px), transparent var(--vr));-webkit-mask-image:radial-gradient(circle at var(--vx) var(--vy), #000 calc(var(--vr) - 240px), transparent var(--vr));mask-image:radial-gradient(circle at var(--vx) var(--vy), #000 calc(var(--vr) - 240px), transparent var(--vr))}.lightswitch *,.lightswitch :before,.lightswitch :after{view-transition-name:none!important}.flipping #app,.flipping #app *{transition:none!important}#app{position:relative}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}::view-transition-group(*){transition:none!important;animation:none!important}::view-transition-new(*){transition:none!important;animation:none!important}::view-transition-old(*){transition:none!important;animation:none!important}.note span{clip-path:none}.note path,.row .arrow path{stroke-dashoffset:0}}
