*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.left-0{left:0}.top-0{top:0}.z-10{z-index:10}.m-0{margin:0}.-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.mb-12{margin-bottom:3rem}.mt-24{margin-top:6rem}.mt-\[3px\]{margin-top:3px}.mt-\[4px\]{margin-top:4px}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-48{height:12rem}.h-\[144px\]{height:144px}.h-full{height:100%}.min-h-\[23rem\]{min-height:23rem}.w-60{width:15rem}.w-\[144px\]{width:144px}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.max-w-\[32rem\]{max-width:32rem}.max-w-\[672px\]{max-width:672px}.shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-zoom-in{cursor:zoom-in}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-none{list-style-type:none}.grid-cols-\[3rem_1fr\]{grid-template-columns:3rem 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.whitespace-nowrap{white-space:nowrap}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.rounded-2xl{border-radius:1rem}.rounded-\[14px\]{border-radius:14px}.rounded-\[99px\]{border-radius:99px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-0{border-width:0}.border-b-\[0\.8px\]{border-bottom-width:.8px}.border-zinc-100{--tw-border-opacity:1;border-color:rgb(244 244 245/var(--tw-border-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-cover{background-size:cover}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-8{padding-bottom:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.opacity-0{opacity:0}.opacity-100{opacity:1}.outline{outline-style:solid}.outline-offset-4{outline-offset:4px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.blur{--tw-blur:blur(8px)}.blur,.invert{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root{--ease:cubic-bezier(0.2,0,0,1);--ease-morph:cubic-bezier(0.32,0.72,0,1);--ease-soft:cubic-bezier(0.25,0.46,0.45,0.94);--dur-morph:340ms;--column:672px;--preview-gutter:32px;--surface-fill:#f7f7f8;--surface-bg:linear-gradient(180deg,#fdfdfd,#f2f2f3);--surface-ring:inset 0 1px 0 0 rgb(255 255 255/0.95),inset 0 0 0 1px rgb(0 0 0/0.07),inset 0 -1.5px 0 0 rgb(0 0 0/0.06);--surface-lift:0 1px 1px -0.5px rgb(0 0 0/0.06),0 2px 4px -1px rgb(0 0 0/0.06),0 6px 12px -3px rgb(0 0 0/0.08),0 14px 28px -8px rgb(0 0 0/0.08);--surface-sheen:linear-gradient(105deg,rgb(255 255 255/0.7),rgb(255 255 255/0.2) 32%,rgb(255 255 255/0) 58%)}html{-webkit-text-size-adjust:100%;overscroll-behavior-y:none;scrollbar-gutter:stable}body,html{background-color:#ffffff}body{margin:0;overflow-x:hidden;font-family:var(--font-sans),-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;font-size:16px;line-height:1.5;letter-spacing:-.011em;font-optical-sizing:auto;color:#000000;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.prose-line{line-height:1.65;letter-spacing:-.006em;text-wrap:pretty}@font-face{font-family:Paper Mono;src:url(/fonts/PaperMono-Variable.woff2) format("woff2-variations");font-weight:100 800;font-style:normal;font-display:swap}.font-paper-mono{font-family:Paper Mono,ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:0}a{text-underline-offset:2px;text-decoration-thickness:1px}.tab-hit{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}.page-enter{animation:page-in .72s var(--ease-soft) both}@keyframes page-in{0%{opacity:0;transform:translateY(8px) scale(.994);filter:blur(10px)}to{opacity:1;transform:none;filter:blur(0)}}::-moz-selection{background-color:rgb(0 0 0/.1);color:#000000}::selection{background-color:rgb(0 0 0/.1);color:#000000}.tab-hit:after{content:"";position:absolute;inset:-10px -8px}.smooth-cursor{position:fixed;top:0;left:0;z-index:100;pointer-events:none;opacity:0;transition:opacity .15s ease;will-change:transform}html.has-smooth-cursor,html.has-smooth-cursor *{cursor:none}html.has-smooth-cursor [contenteditable],html.has-smooth-cursor input,html.has-smooth-cursor select,html.has-smooth-cursor textarea{cursor:auto}.peer-cursor-layer{position:fixed;inset:0;z-index:99;pointer-events:none;overflow:hidden}.peer-cursor{position:absolute;top:0;left:0;opacity:0;transition:opacity .26s var(--ease-soft);will-change:transform}.peer-cursor .cursor-shape{filter:drop-shadow(0 1px 2px rgb(0 0 0/.18))}.cursor-shape{position:relative;display:block}.smooth-cursor .cursor-shape{transition:transform .2s cubic-bezier(.2,0,0,1)}.smooth-cursor[data-pressed] .cursor-shape{transform:scale(.82);transition-duration:70ms}.cursor-glyph{position:absolute;inset:0;display:grid;place-items:center;opacity:0;transform:scale(.55);transition:opacity .11s var(--ease-soft),transform .22s cubic-bezier(.34,1.56,.64,1)}.cursor-glyph svg{display:block;width:100%;height:100%;overflow:visible}[data-glyph=hand] svg{transform:translate(6%,44%)}.cursor-spin{display:block;width:100%;height:100%;will-change:transform}[data-shape=arrow]>.cursor-shape>[data-glyph=arrow],[data-shape=hand]>.cursor-shape>[data-glyph=hand],[data-shape=text]>.cursor-shape>[data-glyph=text]{opacity:1;transform:scale(1)}.tool-row{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0 0;padding:0;list-style:none}.tool-badge{position:relative;cursor:pointer;display:grid;place-items:center;width:52px;height:52px;border-radius:13px;background-color:var(--surface-fill);background-image:var(--surface-bg);box-shadow:var(--surface-ring),var(--surface-lift);transition:transform .18s var(--ease),opacity .18s var(--ease)}.tool-badge img{display:block;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tool-badge:after{content:attr(data-label);position:absolute;left:50%;top:calc(100% + 6px);padding:3px 7px;border-radius:6px;background:#111;color:#fff;font-size:12px;line-height:16px;white-space:nowrap;pointer-events:none;opacity:0;transform:translate(-50%,-3px);transition:opacity .14s var(--ease),transform .18s var(--ease)}@media (max-width:639px){.tool-row{max-width:284px}}@media (any-hover:hover) and (any-pointer:fine){.tool-badge:hover{transform:translateY(-2px)}.tool-badge:hover:after{opacity:1;transform:translate(-50%)}.tool-row:hover .tool-badge:not(:hover){opacity:.55}}@media (prefers-reduced-motion:reduce){.tool-badge,.tool-badge:after{transition:opacity .14s linear}.tool-badge:hover{transform:none}}.menu-positioner{outline:0;z-index:50}.menu-popup{min-width:12rem;padding:.25rem;border-radius:14px;outline:none;background-color:var(--surface-fill);background-image:var(--surface-bg);box-shadow:var(--surface-ring),var(--surface-lift);font-size:.875rem;line-height:1.25rem;letter-spacing:-.006em;color:#171717;transform-origin:var(--transform-origin);transition:opacity .16s var(--ease),transform .16s var(--ease)}.menu-popup[data-ending-style],.menu-popup[data-starting-style]{opacity:0;transform:scale(.96)}.menu-item{display:flex;align-items:center;gap:.625rem;padding:.4375rem .625rem;border-radius:9px;outline:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background-color .12s ease,color .12s ease}.menu-item[data-highlighted]{background-color:rgb(0 0 0/.045)}.menu-item[data-disabled]{color:rgb(0 0 0/.35)}.menu-item-icon{display:grid;place-items:center;color:rgb(113 113 122);flex:none}.menu-separator{height:.8px;margin:.25rem .375rem;background-color:rgb(244 244 245)}.menu-label{padding:.375rem .625rem .25rem;font-size:.75rem;line-height:1rem;color:rgb(0 0 0/.4)}@media (prefers-reduced-motion:reduce){.menu-popup{transition:opacity .12s ease}.menu-popup[data-ending-style],.menu-popup[data-starting-style]{transform:none}}.avatar-dialog{position:fixed;inset:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:0;border:0;background:transparent}.avatar-dialog[open]{display:grid;place-items:center;overscroll-behavior:contain}.avatar-dialog[open] .avatar-dialog-img{will-change:transform}.avatar-dialog::backdrop{background:rgb(0 0 0/.85);backdrop-filter:blur(6px);opacity:0;transition:opacity .22s cubic-bezier(.23,1,.32,1)}.avatar-dialog[data-open=true]::backdrop{opacity:1;transition-duration:.3s}.avatar-dialog-img{display:block;width:auto;height:auto;max-width:min(90vw,1200px);max-height:90vh;border-radius:50%;cursor:zoom-out;outline:1px solid oklch(1 1 1/.12);outline-offset:-1px}.avatar-button{border:0;padding:0;background:none}.tab-hover-rail{display:none;width:0;height:0;background-color:rgb(0 0 0/.028);box-shadow:inset 0 0 0 1px rgb(0 0 0/.045),inset 0 1px 0 0 rgb(255 255 255/.7);transition:transform .26s var(--ease-morph),width .26s var(--ease-morph),height .26s var(--ease-morph),opacity .15s ease-out}@media (hover:hover) and (pointer:fine){.tab-hover-rail{display:block}}.tab-hover-rail.is-idle{transition:opacity .22s ease}.tab-rail{transition:transform .32s var(--ease-morph),width .32s var(--ease-morph),height .32s var(--ease-morph)}.list-highlight,.tab-rail{width:0;height:0;background-color:var(--surface-fill);background-image:var(--surface-bg);box-shadow:var(--surface-ring),var(--surface-lift)}.list-highlight{transition:transform var(--dur-morph) var(--ease-morph),width var(--dur-morph) var(--ease-morph),height var(--dur-morph) var(--ease-morph),opacity .14s ease-out}.list-highlight.is-idle{transition:opacity .22s ease}.preview-panel{display:none;position:fixed;top:50%;left:calc(50% + var(--column) / 2 + var(--preview-gutter));transform:translateY(-50%)}@media (hover:hover) and (pointer:fine) and (min-width:1280px){.preview-panel{display:block}}.list-highlight:before,.preview-frame:before,.tab-rail:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:var(--surface-sheen)}.preview-frame{background-color:var(--surface-fill);background-image:var(--surface-bg);box-shadow:var(--surface-ring),0 4px 12px -4px rgb(0 0 0/.1),0 12px 32px -12px rgb(0 0 0/.12),0 28px 56px -20px rgb(0 0 0/.1);opacity:0;transform:scale(.96);filter:blur(4px);transition:opacity .4s var(--ease-soft),transform .4s var(--ease-soft),filter .4s var(--ease-soft)}.preview-frame.is-shown{opacity:1;transform:scale(1);filter:blur(0)}.preview-img{outline:1px solid oklch(0 0 0/.1);outline-offset:-1px;opacity:0;transform:scale(1.015);transition:opacity .26s var(--ease-soft),transform .26s var(--ease-soft)}.preview-img.is-active{opacity:1;transform:scale(1)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.panel-chunk{animation:chunk-in .52s var(--ease-soft) both;animation-delay:calc(min(var(--i, 0), 6) * 50ms)}@keyframes chunk-in{0%{opacity:0;transform:translateY(6px);filter:blur(5px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}.post-list{letter-spacing:-.006em}.post-date,.post-title,.post-year{transition:color .18s ease}.post-row .post-date,.post-row .post-title{transition:color .18s ease,transform .22s cubic-bezier(.2,0,0,1)}.post-row .post-title{transform-origin:left center}.post-row .post-date{transform-origin:right center}.post-row:active .post-date,.post-row:active .post-title{transform:translateY(1px) scale(.985);transition-duration:.18s,70ms}@media (prefers-reduced-motion:reduce){.post-row:active .post-date,.post-row:active .post-title{transform:none}}.post-title{color:#171717}.post-date,.post-year{color:rgb(0 0 0/.4)}@media (hover:hover) and (pointer:fine){.post-list:hover .post-title{color:rgb(0 0 0/.4)}.post-list:hover .post-date{color:rgb(0 0 0/.18)}.post-list .post-row:hover .post-title{color:#171717}.post-list .post-row:hover .post-date{color:rgb(0 0 0/.4)}}.page-shell{padding-left:max(3rem,env(safe-area-inset-left));padding-right:max(3rem,env(safe-area-inset-right));padding-bottom:max(4rem,env(safe-area-inset-bottom))}@media (max-width:639px){.page-shell{padding:2.5rem max(1.5rem,env(safe-area-inset-right)) max(2.5rem,env(safe-area-inset-bottom)) max(1.5rem,env(safe-area-inset-left))}.rhythm-12{gap:2rem}.panel-floor{min-height:0}.row-pad{padding-top:.75rem;padding-bottom:.75rem}.footer-gap{margin-top:3rem}.panel-anim{height:var(--panel-h,auto);overflow:hidden;transition:height .42s var(--ease-morph)}body,html{overflow-x:hidden;overscroll-behavior-x:none;max-width:100%}.page-shell{max-width:100vw}}@media (prefers-reduced-motion:reduce){.list-highlight{transition:opacity .12s ease}.preview-panel{transition:none}.preview-frame{transition:opacity .16s ease}.preview-frame,.preview-frame.is-shown{transform:none;filter:none}.panel-chunk{animation:fade-in .16s ease both;animation-delay:0s}.page-enter{animation:fade-in .24s ease both}.preview-img,.preview-img.is-active{transform:none}.preview-img{transition:opacity .16s ease}.tab-hit:active{transform:none}}.avatar-button,.tab-hit{transition:transform .22s cubic-bezier(.2,0,0,1)}.tool-badge{transition:transform .22s cubic-bezier(.2,0,0,1),opacity .18s var(--ease)}[data-keycap]:active{transform:translateY(2px) scale(.96);transition-duration:70ms}.tool-badge:active{transition-duration:70ms,.18s}@media (prefers-reduced-motion:reduce){[data-keycap]:active{transform:none}}@media (max-width:639px){.tab-scroller{scroll-padding-inline:1.5rem 2.5rem;width:calc(100% + 3rem);margin:-8px -1.5rem -36px;padding:8px 1.5rem 36px;pointer-events:none;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 1.5rem,#000 calc(100% - 2.5rem),transparent);mask-image:linear-gradient(90deg,transparent 0,#000 1.5rem,#000 calc(100% - 2.5rem),transparent)}.tab-scroller::-webkit-scrollbar{display:none}.tab-scroller>ul{width:-moz-max-content;width:max-content;margin-right:1.5rem;pointer-events:auto}}.tip-popup{display:flex;flex-direction:column;gap:2px;max-width:min(22rem,calc(100vw - 24px));padding:10px 12px;border-radius:12px;background-color:var(--surface-fill);background-image:var(--surface-bg);box-shadow:var(--surface-ring),var(--surface-lift);font-size:.8125rem;line-height:1.25rem;letter-spacing:-.006em;color:#171717;transform-origin:var(--transform-origin);transition:opacity .15s var(--ease),transform .15s var(--ease)}.tip-popup[data-ending-style],.tip-popup[data-starting-style]{opacity:0;transform:scale(.97)}.tip-primary,.tip-secondary{font-variant-numeric:tabular-nums;white-space:nowrap}.tip-primary{font-weight:500}.tip-secondary{color:rgb(0 0 0/.5)}.tip-commit{display:flex;align-items:baseline;gap:8px;min-width:0;margin-top:6px;padding-top:6px;border-top:.8px solid rgb(0 0 0/.08)}.tip-sha{flex-shrink:0;font-size:.75rem;color:rgb(0 0 0/.55)}.tip-subject{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tip-hint{margin-top:4px;font-size:.75rem;color:rgb(0 0 0/.4)}@media (prefers-reduced-motion:reduce){.tip-popup[data-ending-style],.tip-popup[data-starting-style]{transform:none}}.toast-viewport{position:fixed;z-index:90;left:50%;bottom:max(1.25rem,env(safe-area-inset-bottom));width:min(22rem,calc(100vw - 2rem));transform:translateX(-50%);outline:none}.toast-root{--gap:8px;--peek:8px;--scale:calc(max(0, 1 - (var(--toast-index) * 0.06)));--shrink:calc(1 - var(--scale));--height:var(--toast-frontmost-height,var(--toast-height));--offset-y:calc(var(--toast-offset-y) * -1 + (var(--toast-index) * var(--gap) * -1) + var(--toast-swipe-movement-y));position:absolute;bottom:0;left:0;width:100%;box-sizing:border-box;height:var(--height);border-radius:14px;background-color:var(--surface-fill);background-image:var(--surface-bg);box-shadow:var(--surface-ring),var(--surface-lift);color:#171717;-webkit-user-select:none;-moz-user-select:none;user-select:none;transform-origin:bottom center;z-index:calc(1000 - var(--toast-index));transform:translateX(var(--toast-swipe-movement-x)) translateY(calc(var(--toast-swipe-movement-y) - (var(--toast-index) * var(--peek)) - (var(--shrink) * var(--height)))) scale(var(--scale));transition:transform .42s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),height .15s cubic-bezier(.23,1,.32,1);outline:none}.toast-root[data-expanded]{transform:translateX(var(--toast-swipe-movement-x)) translateY(var(--offset-y));height:var(--toast-height)}.toast-root[data-ending-style],.toast-root[data-starting-style]{transform:translateY(calc(100% + 1.5rem));opacity:0}.toast-root[data-limited]{opacity:0}.toast-root[data-ending-style][data-swipe-direction=down]{transform:translateY(calc(var(--toast-swipe-movement-y) + 150%))}.toast-root:after{content:"";position:absolute;top:100%;left:0;width:100%;height:calc(var(--gap) + 1px)}.toast-root:focus-visible{box-shadow:var(--surface-ring),var(--surface-lift),0 0 0 2px rgb(0 0 0/.5)}.toast-content{display:flex;align-items:flex-start;gap:10px;padding:11px 12px;overflow:hidden;transition:opacity .25s cubic-bezier(.23,1,.32,1)}.toast-content[data-behind]{opacity:0}.toast-content[data-expanded]{opacity:1}.toast-icon{display:grid;flex-shrink:0;margin-top:1px;color:rgb(0 0 0/.45)}.toast-root[data-type=success] .toast-icon{color:#16a34a}.toast-root[data-type=error] .toast-icon{color:#dc2626}.toast-root[data-type=warning] .toast-icon{color:#d97706}.toast-text{display:flex;flex:1;flex-direction:column;gap:1px;min-width:0}.toast-title{margin:0;font-size:.875rem;font-weight:500;line-height:1.25rem;letter-spacing:-.006em}.toast-description{margin:0;overflow:hidden;font-size:.8125rem;line-height:1.125rem;color:rgb(0 0 0/.55);text-overflow:ellipsis;white-space:nowrap}.toast-description:empty{display:none}.toast-action{flex-shrink:0;align-self:center;padding:4px 10px;border:0;border-radius:99px;background:rgb(0 0 0/.06);color:#171717;font:inherit;font-size:.8125rem;font-weight:500;line-height:1.125rem;cursor:pointer;transition:background-color .12s ease,transform .16s cubic-bezier(.2,0,0,1)}.toast-action:empty{display:none}.toast-action:active{transform:scale(.96)}.toast-close{display:grid;place-items:center;flex-shrink:0;width:20px;height:20px;margin:0 -2px 0 0;padding:0;border:0;border-radius:99px;background:transparent;color:rgb(0 0 0/.35);cursor:pointer;transition:background-color .12s ease,color .12s ease}@media (hover:hover) and (pointer:fine){.toast-action:hover{background:rgb(0 0 0/.1)}.toast-close:hover{background:rgb(0 0 0/.06);color:rgb(0 0 0/.6)}}.toast-spin{animation:toast-spin .9s linear infinite}@keyframes toast-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.toast-root{transition:opacity .2s linear}.toast-root[data-ending-style],.toast-root[data-ending-style][data-swipe-direction=down],.toast-root[data-starting-style]{transform:translateX(var(--toast-swipe-movement-x)) translateY(var(--offset-y))}.toast-spin{animation-duration:2.4s}}.shiba{display:inline-block;width:32px;height:32px;margin:-8px 0 -8px 4px;vertical-align:middle;color:inherit;opacity:0;transition:opacity .3s ease;-webkit-tap-highlight-color:transparent}.shiba[data-mood]{opacity:1}.shiba svg{display:block;overflow:visible}.shiba-line,.shiba-z{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.shiba-mouth{stroke-width:1.4}.shiba-brows,.shiba-eye,.shiba-nose,.shiba-tongue{fill:currentColor}.shiba-nose{stroke:currentColor;stroke-width:1;stroke-linejoin:round}.shiba-breath,.shiba-brows,.shiba-ear,.shiba-eye,.shiba-tail,.shiba-tilt,.shiba-tongue{transform-box:fill-box}.shiba-ear{transform-origin:50% 100%}.shiba-tail{transform-origin:0 100%}.shiba-eye{transform-origin:center}.shiba-tongue{transform-origin:50% 0;transform:scaleY(0)}.shiba-tilt{transform-origin:50% 70%}.shiba-breath{transform-origin:50% 100%}.shiba-brows{transition:transform .25s cubic-bezier(.34,1.56,.64,1)}.shiba-eyes{transition:opacity .12s ease}.shiba-eyes-closed,.shiba-eyes-happy,.shiba[data-happy] .shiba-eyes-open,.shiba[data-mood=asleep] .shiba-eyes-open{opacity:0}.shiba[data-happy] .shiba-eyes-happy,.shiba[data-mood=asleep] .shiba-eyes-closed{opacity:1}.shiba[data-mood=awake] .shiba-glance{animation:shiba-glance 5s ease-in-out infinite}.shiba[data-mood=awake] .shiba-eye{animation:shiba-blink 5s linear infinite}.shiba[data-mood=awake] .shiba-ear-l{animation:shiba-ear-l 12s ease-in-out infinite}.shiba[data-mood=awake] .shiba-ear-r{animation:shiba-ear-r 12s ease-in-out infinite}.shiba[data-mood=awake] .shiba-tail{animation:shiba-wag 12s ease-in-out infinite}.shiba[data-mood=awake] .shiba-tilt{animation:shiba-tilt 12s ease-in-out infinite}.shiba[data-mood=awake] .shiba-tongue{animation:shiba-blep 12s ease-in-out infinite}.shiba[data-happy] .shiba-brows{transform:translateY(-.8px)}.shiba[data-happy] .shiba-ear-l{animation:shiba-wiggle-l .28s ease-in-out infinite alternate}.shiba[data-happy] .shiba-ear-r{animation:shiba-wiggle-r .28s ease-in-out infinite alternate}.shiba[data-happy] .shiba-tail{animation:shiba-wag-happy .16s ease-in-out infinite alternate}.shiba[data-happy] .shiba-tongue{animation:shiba-pant .3s ease-in-out infinite alternate}.shiba[data-happy] .shiba-tilt{animation:shiba-bounce .3s ease-in-out infinite alternate}.shiba[data-mood=asleep] .shiba-ear-l{animation:shiba-sleep-ear-l 4s ease-in-out infinite}.shiba[data-mood=asleep] .shiba-ear-r{animation:shiba-sleep-ear-r 4s ease-in-out infinite}.shiba[data-mood=asleep] .shiba-breath{animation:shiba-breathe 4s ease-in-out infinite}.shiba-z path{opacity:0;transform-box:fill-box;transform-origin:0 100%}.shiba[data-mood=asleep] .shiba-z1{stroke-width:1.5;animation:shiba-z1 3s ease-out infinite both}.shiba[data-mood=asleep] .shiba-z2{stroke-width:1.3;animation:shiba-z2 3s ease-out 1s infinite both}.shiba[data-mood=asleep] .shiba-z3{stroke-width:1.1;animation:shiba-z3 3s ease-out 2s infinite both}@keyframes shiba-glance{0%{transform:translate(0)}10%{transform:translate(.8px)}20%{transform:translate(.8px)}40%{transform:translate(-1px,-.6px)}55%{transform:translate(0)}75%{transform:translate(-.5px,.5px)}to{transform:translate(0)}}@keyframes shiba-blink{0%,19%,23%,52%,56%,to{transform:scaleY(1)}21%,54%{transform:scaleY(.1)}}@keyframes shiba-ear-l{0%,9%{transform:rotate(0)}12%{transform:rotate(-9deg)}16%,34%{transform:rotate(0)}38%{transform:rotate(-14deg)}42%{transform:rotate(-5deg)}48%,to{transform:rotate(0)}}@keyframes shiba-ear-r{0%,9%{transform:rotate(0)}12%{transform:rotate(6deg)}16%,34%{transform:rotate(0)}38%{transform:rotate(11deg)}42%{transform:rotate(4deg)}48%,to{transform:rotate(0)}}@keyframes shiba-tilt{0%,58%{transform:rotate(0)}63%,74%{transform:rotate(-10deg)}79%,to{transform:rotate(0)}}@keyframes shiba-blep{0%,84%{transform:scaleY(0)}87%,95%{transform:scaleY(1)}98%,to{transform:scaleY(0)}}@keyframes shiba-wag{0%,44%{transform:rotate(0)}46%{transform:rotate(-16deg)}48%{transform:rotate(8deg)}50%{transform:rotate(-16deg)}52%{transform:rotate(8deg)}54%,to{transform:rotate(0)}}@keyframes shiba-wag-happy{0%{transform:rotate(-18deg)}to{transform:rotate(10deg)}}@keyframes shiba-wiggle-l{0%{transform:rotate(-4deg)}to{transform:rotate(-14deg)}}@keyframes shiba-wiggle-r{0%{transform:rotate(4deg)}to{transform:rotate(14deg)}}@keyframes shiba-pant{0%{transform:scaleY(.75)}to{transform:scaleY(1.1)}}@keyframes shiba-bounce{0%{transform:translateY(0)}to{transform:translateY(-.7px)}}@keyframes shiba-sleep-ear-l{0%,to{transform:rotate(-9deg) scaleY(.84)}50%{transform:rotate(-6deg) scaleY(.84)}}@keyframes shiba-sleep-ear-r{0%,to{transform:rotate(9deg) scaleY(.84)}50%{transform:rotate(6deg) scaleY(.84)}}@keyframes shiba-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.03,1.015)}}@keyframes shiba-z1{0%{transform:translate(0) scale(.7);opacity:0}10%,80%{opacity:1}to{transform:translate(4px,-14px) scale(1);opacity:0}}@keyframes shiba-z2{0%{transform:translate(0) scale(.6);opacity:0}10%,80%{opacity:1}to{transform:translate(6px,-16px) scale(.9);opacity:0}}@keyframes shiba-z3{0%{transform:translate(0) scale(.5);opacity:0}10%,80%{opacity:1}to{transform:translate(8px,-18px) scale(.8);opacity:0}}@media (prefers-reduced-motion:reduce){.shiba *,.shiba[data-mood] *{animation:none!important}.shiba[data-mood=asleep] .shiba-z1{opacity:1}}@media (min-width:640px){.sm\:h-24{height:6rem}.sm\:w-24{width:6rem}.sm\:grid-cols-\[7rem_1fr\]{grid-template-columns:7rem 1fr}.sm\:py-24{padding-top:6rem;padding-bottom:6rem}}.article-shell{--breakout:min(880px,calc(100vw - 2rem));--ink:#0a0a0a;--ink-2:#52525b;--ink-3:#a1a1aa;--rule:#ececee}.article{color:var(--ink)}.article-nav{margin-bottom:3.5rem}.article-back{display:inline-flex;align-items:center;gap:.4rem;margin:-.35rem -.6rem;padding:.35rem .6rem;border-radius:999px;font-size:14px;color:var(--ink-2);text-decoration:none;transition-property:color,background-color;transition-duration:.15s;transition-timing-function:ease}.article-back span{display:inline-block;transition:translate .2s var(--ease)}@media (hover:hover) and (pointer:fine){.article-back:hover{color:var(--ink);background-color:#f4f4f5}.article-back:hover span{translate:-2px 0}}.article-header{display:flex;flex-direction:column;gap:1rem}.article-eyebrow{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;font-family:Paper Mono,ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:0;font-size:13px;line-height:20px;color:var(--ink-3)}.article-tag{color:var(--ink-2)}.article-title{margin:0;font-size:clamp(2rem,1.35rem + 2.6vw,2.75rem);line-height:1.08;font-weight:600;letter-spacing:-.028em;text-wrap:balance}.article-dek{margin:0;font-size:clamp(1.125rem,1.05rem + .4vw,1.3125rem);line-height:1.45;font-weight:450;letter-spacing:-.016em;color:var(--ink-2);text-wrap:pretty}.article-byline{margin-top:.75rem;display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem;font-size:14px;line-height:20px;color:var(--ink-2)}.article-byline>[aria-hidden]{color:var(--ink-3)}.article-avatar{width:28px;height:28px;border-radius:999px;margin-right:.25rem;outline:1px solid oklch(0 0 0/.1);outline-offset:-1px}.article-author{color:var(--ink);font-weight:500}.article-body .article-figure,.article-cover{width:var(--breakout);max-width:none;margin-left:calc(50% - var(--breakout) / 2);margin-right:0}.article-cover{margin-top:3rem;margin-bottom:0}.article-body img,.article-cover img{display:block;width:100%;height:auto;border-radius:14px;outline:1px solid oklch(0 0 0/.1);outline-offset:-1px;background:#f4f4f5}.article-body figcaption,.article-cover figcaption{width:min(576px,calc(100vw - 3rem));margin:.75rem auto 0;font-size:13px;line-height:20px;color:var(--ink-3);text-align:center;text-wrap:balance}.article-body{margin-top:3rem;font-size:18px;line-height:1.68;letter-spacing:-.012em;color:#27272a}.article-body>*{margin:0}.article-body>*+*{margin-top:1.35em}.article-body p{text-wrap:pretty}.article-body h2,.article-body h3{color:var(--ink);font-weight:600;text-wrap:balance;scroll-margin-top:2rem}.article-body h2{font-size:1.5rem;line-height:1.25;letter-spacing:-.022em}.article-body h3{font-size:1.1875rem;line-height:1.35;letter-spacing:-.018em}.article-body>*+h2{margin-top:2.4em}.article-body>*+h3{margin-top:2em}.article-body>h2+*,.article-body>h3+*{margin-top:.6em}.article-body a{color:var(--ink);text-decoration-line:underline;text-decoration-color:#d4d4d8;text-decoration-thickness:1px;text-underline-offset:3px;transition:text-decoration-color .15s ease}@media (hover:hover) and (pointer:fine){.article-body a:hover{text-decoration-color:currentColor}}.article-body strong{font-weight:600;color:var(--ink)}.article-body ol,.article-body ul{padding-left:1.3em}.article-body ul{list-style:disc}.article-body ol{list-style:decimal}.article-body li+li{margin-top:.4em}.article-body li::marker{color:var(--ink-3)}.article-body blockquote{padding-left:1.25rem;border-left:2px solid var(--rule);font-size:1.1875rem;line-height:1.55;color:var(--ink-2)}.article-body blockquote p+p{margin-top:.8em}.article-body hr{border:0;height:1px;background:var(--rule);margin-block:3em}.article-body code{font-family:Paper Mono,ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:0;font-size:.85em}.article-body :not(pre)>code{padding:.12em .36em;border-radius:6px;background:#f4f4f5;color:var(--ink)}.article-body pre{overflow-x:auto;padding:1rem 1.15rem;border-radius:12px;background:#fafafa;box-shadow:inset 0 0 0 1px var(--rule);font-size:14px;line-height:1.65}.article-body pre code{font-size:inherit;background:none;padding:0}.article-body pre [data-line]{display:block}.article-body pre code span{color:var(--shiki-light)}.article-footer{margin-top:4rem;padding-top:1.5rem;border-top:1px solid var(--rule);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem}.article-tags{display:flex;flex-wrap:wrap;gap:.375rem;margin:0;padding:0;list-style:none}.article-tags li{padding:.2rem .6rem;border-radius:999px;background:#f4f4f5;font-size:13px;line-height:20px;color:var(--ink-2)}.article-share{display:flex;gap:.375rem;margin-left:auto}.share-button{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-width:36px;height:36px;padding:0 .7rem;border:0;border-radius:999px;background:#f4f4f5;color:var(--ink);font:inherit;font-size:14px;text-decoration:none;cursor:pointer;transition-property:background-color,scale;transition-duration:.15s,.16s;transition-timing-function:ease,var(--ease)}@media (hover:hover) and (pointer:fine){.share-button:hover{background:#e9e9ec}}.share-button:active{scale:.96}.article-back:focus-visible,.article-more-row:focus-visible,.share-button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.article-more{margin-top:5rem}.article-more-title{margin:0 0 .5rem;font-size:14px;font-weight:500;color:var(--ink-3)}.article-more ul{margin:0;padding:0;list-style:none}.article-more-row{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem;padding:.8rem 0;border-bottom:1px solid var(--rule);color:var(--ink);text-decoration:none}.article-more-name{text-wrap:balance;transition:color .15s ease}.article-more-row time{flex-shrink:0;font-family:Paper Mono,ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:0;font-size:13px;color:var(--ink-3)}@media (hover:hover) and (pointer:fine){.article-more ul:hover .article-more-name{color:var(--ink-3)}.article-more ul .article-more-row:hover .article-more-name{color:var(--ink)}}.article-shell.page-enter{animation:none}.article-page .article-body,.article-page .article-cover,.article-page .article-footer,.article-page .article-header>*,.article-page .article-more,.article-page .article-nav{animation:page-in .64s var(--ease-soft) both}.article-page .article-header>:first-child{animation-delay:70ms}.article-page .article-header>:nth-child(2){animation-delay:.14s}.article-page .article-header>:nth-child(3){animation-delay:.21s}.article-page .article-header>:nth-child(4){animation-delay:.28s}.article-page .article-cover{animation-name:cover-in;animation-duration:.9s;animation-timing-function:var(--ease);animation-delay:.32s}.article-page .article-body{animation-delay:.4s}.article-page .article-footer,.article-page .article-more{animation-delay:.46s}@keyframes cover-in{0%{opacity:0;clip-path:inset(0 0 14% 0 round 14px);transform:translateY(12px) scale(.985)}to{opacity:1;clip-path:inset(0 0 0 0 round 14px);transform:none}}@media (max-width:639px){.article-nav{margin-bottom:2.5rem}.article-body{font-size:17px}.article-body img,.article-cover img{border-radius:10px}.article-footer{flex-direction:column;align-items:flex-start}.article-share{margin-left:0}}@media (prefers-reduced-motion:reduce){.article-page .article-body,.article-page .article-cover,.article-page .article-footer,.article-page .article-header>*,.article-page .article-more,.article-page .article-nav{animation:article-fade .2s ease both!important}}@keyframes article-fade{0%{opacity:0}to{opacity:1}}.article-shell .article-body h2,.article-shell .article-body h3,.article-shell .article-body h4,.article-shell .article-title{font-family:var(--article-heading-font,inherit)}.article-shell .article-body,.article-shell .article-dek{font-family:var(--article-body-font,inherit)}.article-icon{display:block;width:72px;height:72px;margin:0 0 .25rem -4px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.article-avatars{display:inline-flex;margin-right:.25rem}.article-avatars>*+*{margin-left:-8px}.article-avatars .article-avatar{margin-right:0;box-shadow:0 0 0 2px #fff;-o-object-fit:cover;object-fit:cover}.article-avatar-initial{display:inline-grid;place-items:center;background:#f4f4f5;color:#52525b;font-size:12px;font-weight:600}.article-author-link{color:inherit;text-decoration:none}@media (hover:hover) and (pointer:fine){.article-author-link:hover{text-decoration:underline;text-decoration-color:#d4d4d8;text-underline-offset:3px}}.fe{display:inline-block;width:1.2em;height:1.2em;vertical-align:-.24em;color:transparent;background:var(--fe) center /contain no-repeat;overflow:hidden;line-height:1;text-indent:0}.fe::-moz-selection{color:transparent;background:rgb(37 99 235/.16)}.fe::selection{color:transparent;background:rgb(37 99 235/.16)}.article-body h4{font-size:1.0625rem;line-height:1.4;letter-spacing:-.012em;font-weight:600;color:var(--ink)}.article-body>*+h4{margin-top:1.8em}.article-body>h4+*{margin-top:.5em}.article-body mark{padding:.05em .15em;border-radius:4px;background:#fef3c7;color:inherit}.article-body u{text-decoration-thickness:1px;text-underline-offset:3px}.article-body .callout{display:grid;grid-template-columns:1.6rem 1fr;gap:.75rem;padding:1rem 1.15rem 1rem 1rem;border-radius:14px;background:#f7f7f8;font-size:.95em;line-height:1.6}.article-body .callout[data-type=tip]{background:#f0fdf4}.article-body .callout[data-type=important]{background:#eff6ff}.article-body .callout[data-type=warning]{background:#fffbeb}.article-body .callout[data-type=caution]{background:#fef2f2}.article-body .callout-icon{font-size:1.15rem;line-height:1.6rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.article-body .callout-body>*{margin:0}.article-body .callout-body>*+*{margin-top:.7em}.article-body ul.contains-task-list,.article-body ul[data-type=taskList]{list-style:none;padding-left:.1em}.article-body .task-list-item,.article-body ul[data-type=taskList]>li{display:flex;align-items:flex-start;gap:.6em}.article-body .task-list-item>input,.article-body ul[data-type=taskList]>li>label{flex:none;margin-top:.42em}.article-body ul[data-type=taskList]>li>div{flex:1;min-width:0}.article-body input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1em;height:1em;margin:0;border-radius:5px;box-shadow:inset 0 0 0 1.5px #d4d4d8;background:#fff 50%/70% no-repeat;vertical-align:middle;transition:background-color .15s ease,box-shadow .15s ease}.article-body input[type=checkbox]:checked{background-color:var(--ink);box-shadow:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2 5 8.5l4.5-5' fill='none' stroke='white' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}.article-body .task-list-item:has(>input:checked),.article-body ul[data-type=taskList]>li[data-checked=true]>div{color:var(--ink-3);text-decoration:line-through;text-decoration-color:#d4d4d8}.article-body .table-wrap,.article-body .tableWrapper{overflow-x:auto;margin-inline:-.25rem;padding-inline:.25rem}.article-body table{width:100%;border-collapse:collapse;font-size:.9em;line-height:1.5}.article-body td,.article-body th{padding:.55rem .75rem;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top;min-width:6rem}.article-body th{font-weight:600;color:var(--ink);border-bottom-color:#d4d4d8}.article-body td>p,.article-body th>p{margin:0}.article-body details{padding:.1rem 0}.article-body summary{display:flex;align-items:center;gap:.45rem;cursor:pointer;list-style:none;font-weight:500;color:var(--ink)}.article-body summary::-webkit-details-marker{display:none}.article-body summary:before{content:"";flex:none;width:.9em;height:.9em;background:currentColor;clip-path:polygon(30% 18%,78% 50%,30% 82%);transition:rotate .2s var(--ease)}.article-body details[open]>summary:before{rotate:90deg}.article-body details>:not(summary){margin:.6em 0 0 1.35em}.article-body .embed{display:grid;justify-items:center}.article-body .embed-x .react-tweet-theme{margin:0!important;--tweet-container-margin:0;--tweet-font-family:inherit}.article-body .embed-threads iframe{width:min(100%,540px);height:560px;border:0;border-radius:14px;box-shadow:inset 0 0 0 1px var(--rule);background:#fafafa}.article-body .embed-source{margin-top:.5rem;font-size:13px;color:var(--ink-3)}.article-body .embed-youtube{width:var(--breakout,100%);max-width:none;margin-left:calc(50% - var(--breakout, 100%) / 2)}.article-body .embed-youtube iframe{width:100%;aspect-ratio:16/9;border:0;border-radius:14px;background:#0a0a0a}.reading-progress{position:fixed;inset:0 0 auto;z-index:40;height:2px;background:var(--ink,#0a0a0a);transform-origin:0 50%;transform:scaleX(0);pointer-events:none}@supports (animation-timeline:scroll()){.reading-progress{animation:reading-progress linear both;animation-timeline:scroll(root block)}}@keyframes reading-progress{to{transform:scaleX(1)}}.breadcrumbs{display:flex;flex-wrap:wrap;margin:0;padding:0;list-style:none;font-size:14px;color:var(--ink-3)}.breadcrumbs,.breadcrumbs li{align-items:center;gap:.35rem}.breadcrumbs li{display:inline-flex;min-width:0}.breadcrumbs li+li:before{content:"/";color:#d4d4d8}.breadcrumbs li[aria-current]{overflow:hidden;max-width:22ch;white-space:nowrap;text-overflow:ellipsis;color:var(--ink-3)}.breadcrumbs a{color:var(--ink-2);text-decoration:none;border-radius:6px;transition:color .15s ease}@media (hover:hover) and (pointer:fine){.breadcrumbs a:hover{color:var(--ink)}}.breadcrumbs a:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.article-main{position:relative}.toc{margin-top:2.5rem;padding:1rem 1.1rem;border-radius:14px;background:#fafafa;font-size:14px;line-height:1.45}.toc-title{margin:0 0 .5rem;font-size:12px;font-weight:500;color:var(--ink-3)}.toc ol{display:grid;gap:.15rem;margin:0;padding:0;list-style:none}.toc li[data-depth="3"]{padding-left:.85rem}.toc a{position:relative;display:block;padding:.2rem 0 .2rem .75rem;color:var(--ink-2);text-decoration:none;text-wrap:pretty;transition:color .15s ease}.toc a:before{content:"";position:absolute;left:0;top:.35rem;bottom:.35rem;width:2px;border-radius:2px;background:var(--ink);transform:scaleY(0);opacity:0;transition-property:transform,opacity;transition-duration:.22s;transition-timing-function:var(--ease)}.toc a[data-active]{color:var(--ink)}.toc a[data-active]:before{transform:scaleY(1);opacity:1}@media (hover:hover) and (pointer:fine){.toc a:hover{color:var(--ink)}}@media (min-width:1180px){.toc-rail{position:absolute;top:0;bottom:0;right:calc(100% + 3rem);width:220px}.toc{position:sticky;top:6rem;margin-top:3rem;background:none;max-height:calc(100vh - 8rem);overflow-y:auto;margin-left:-6px;padding:0 0 0 6px}}.article-body h2,.article-body h3,.article-body h4{position:relative}.heading-anchor{margin-left:.4rem;color:#d4d4d8;font-weight:400;text-decoration:none!important;opacity:0;transition-property:opacity,color;transition-duration:.15s}.article-body :is(h2,h3,h4):hover .heading-anchor,.heading-anchor:focus-visible{opacity:1}@media (hover:hover) and (pointer:fine){.heading-anchor:hover{color:var(--ink-2)}}@media (hover:none){.heading-anchor{opacity:.6}}.has-code-copy{position:relative}.code-copy{position:absolute;top:.5rem;right:.5rem;display:grid;place-items:center;width:30px;height:30px;border:0;border-radius:8px;background:rgb(255 255 255/.9);box-shadow:0 0 0 1px var(--rule);color:var(--ink-2);cursor:pointer;opacity:0;transition-property:opacity,scale,color;transition-duration:.15s,.16s,.15s;transition-timing-function:ease,var(--ease),ease}.code-copy:focus-visible,.code-copy[data-copied],.has-code-copy:hover .code-copy{opacity:1}@media (hover:none){.code-copy{opacity:1}}.code-copy:active{scale:.96}.code-copy svg{grid-area:1/1;width:15px;height:15px;transition-property:scale,opacity,filter;transition-duration:.22s;transition-timing-function:cubic-bezier(.2,0,0,1)}.code-copy .check-icon,.code-copy[data-copied] .copy-icon{scale:.25;opacity:0;filter:blur(4px)}.code-copy[data-copied] .check-icon{scale:1;opacity:1;filter:blur(0)}.code-copy[data-copied]{color:#16a34a}.article-body img[data-zoom],.article-cover img[data-zoom]{cursor:zoom-in}.zoom-overlay{position:fixed;inset:0;z-index:60;cursor:zoom-out}.zoom-image{position:fixed;margin:0;-o-object-fit:contain;object-fit:contain;transform-origin:0 0;will-change:transform;border-radius:6px;box-shadow:0 30px 80px -20px rgb(0 0 0/.25)}.author-card{display:grid;gap:1rem;margin-top:2.5rem;padding:1.25rem;border-radius:16px;background:#fafafa}.author-card-row{display:grid;grid-template-columns:56px 1fr;gap:1rem;align-items:start}.author-card-photo{width:56px;height:56px;border-radius:999px;-o-object-fit:cover;object-fit:cover;outline:1px solid oklch(0 0 0/.1);outline-offset:-1px}.author-card-initial{display:grid;place-items:center;background:#f4f4f5;font-weight:600;color:var(--ink-2)}.author-card-text>p{margin:0}.author-card-name{font-weight:600;color:var(--ink)}.author-card-name a{color:inherit;text-decoration:none}.author-card-bio{margin-top:.15rem!important;font-size:15px;line-height:1.5;color:var(--ink-2)}.author-card-bio a{color:inherit}.author-card-links{display:flex;flex-wrap:wrap;gap:.25rem .9rem;margin-top:.5rem!important;font-size:14px}.author-card-links a{color:var(--ink-2);text-decoration-line:underline;text-decoration-color:#d4d4d8;text-underline-offset:3px;transition:text-decoration-color .15s ease,color .15s ease}@media (hover:hover) and (pointer:fine){.author-card-links a:hover{color:var(--ink);text-decoration-color:currentColor}}.article-body .wikilink{text-decoration-style:solid}.article-body .wikilink-missing{color:var(--ink-2);-webkit-text-decoration:underline dotted #d4d4d8;text-decoration:underline dotted #d4d4d8;text-underline-offset:3px;cursor:help}.article-body .callout-title{font-weight:600;color:var(--ink)}.article-body details.callout-fold{display:block;padding:.85rem 1.15rem .85rem 1rem}.article-body details.callout-fold>summary{display:flex;align-items:center;gap:.75rem;font-weight:600}.article-body details.callout-fold>summary:before{order:3;margin-left:auto}.article-body details.callout-fold>.callout-body{margin:.6rem 0 0 2.35rem}.writing-index-meta{display:flex;gap:.5rem;margin:.25rem 0 0;font-size:14px;color:var(--ink-3)}.writing-index-meta a{color:var(--ink-2)}.writing-years{margin-top:3.5rem;display:grid;gap:2.5rem}.writing-year-title{margin:0 0 .25rem;font-family:Paper Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;font-weight:400;letter-spacing:0;color:var(--ink-3)}.writing-year ul{margin:0;padding:0;list-style:none}.writing-row-dek{display:block;margin-top:.15rem;font-size:14px;color:var(--ink-3)}.writing-row-note{cursor:default}.writing-row-note .article-more-name{color:var(--ink-2)}.writing-index .writing-years{animation:page-in .64s var(--ease-soft) .28s both}@media (prefers-reduced-motion:reduce){.code-copy svg,.toc a:before{transition-duration:0s}.writing-index .writing-years{animation:none}}