@font-face{font-family:literata;src:url(/fonts/literata.woff2)format("woff2");font-weight:200 900;font-style:normal;font-display:swap}@font-face{font-family:literata;src:url(/fonts/literata-italic.woff2)format("woff2");font-weight:200 900;font-style:italic;font-display:swap}@font-face{font-family:atkinson hyperlegible next;src:url(/fonts/atkinson-hyperlegible-next.woff2)format("woff2");font-weight:200 800;font-style:normal;font-display:swap}@font-face{font-family:atkinson hyperlegible next;src:url(/fonts/atkinson-hyperlegible-next-italic.woff2)format("woff2");font-weight:200 800;font-style:italic;font-display:swap}@font-face{font-family:inconsolata;src:url(/fonts/inconsolata.woff2)format("woff2");font-weight:200 900;font-style:normal;font-display:swap}@font-face{font-family:literata fallback;src:local("Iowan Old Style"),local("IowanOldStyle-Roman");font-weight:200 500;size-adjust:105%}@font-face{font-family:literata fallback;src:local("Iowan Old Style Bold"),local("IowanOldStyle-Bold");font-weight:600 900;size-adjust:104%}@font-face{font-family:"literata fallback 2";src:local("Georgia");font-weight:200 500;size-adjust:106.5%}@font-face{font-family:"literata fallback 2";src:local("Georgia Bold"),local("Georgia-Bold");font-weight:600 900;size-adjust:97.6%}@font-face{font-family:atkinson fallback;src:local("Helvetica Neue"),local("HelveticaNeue"),local("Arial"),local("ArialMT"),local("Roboto");font-weight:200 500;size-adjust:98.5%}@font-face{font-family:atkinson fallback;src:local("Helvetica Neue Bold"),local("HelveticaNeue-Bold"),local("Arial Bold"),local("Arial-BoldMT"),local("Roboto Bold"),local("Roboto-Bold");font-weight:600 900;size-adjust:104%}@font-face{font-family:inconsolata fallback;src:local("Menlo"),local("Menlo-Regular"),local("DejaVu Sans Mono"),local("Droid Sans Mono"),local("Roboto Mono");font-weight:200 500;size-adjust:83%}@font-face{font-family:inconsolata fallback;src:local("Menlo Bold"),local("Menlo-Bold"),local("DejaVu Sans Mono Bold"),local("Roboto Mono Bold");font-weight:600 900;size-adjust:83%}@font-face{font-family:"inconsolata fallback 2";src:local("Consolas");size-adjust:90.9%}:root{--bg:#ffffff;--bg-raised:#f6f5f0;--text:#131311;--muted:#62605a;--rule:#dedcd4;--mark:#ffe14d;--mark-text:#131311;--news-bg:#fbf0bb;--link-rule:#8d8a80;--code-bg:#f5f4ef;--syn-keyword:#b3261e;--syn-string:#1c6b45;--syn-comment:#6f6c63;--syn-number:#8a5a00;--syn-name:#1e4fa8;--syn-builtin:#7b2f8f;--font-serif:"Literata", "Literata Fallback", "Literata Fallback 2", "Iowan Old Style", Georgia, serif;--font-sans:"Atkinson Hyperlegible Next", "Atkinson Fallback", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"Inconsolata", "Inconsolata Fallback", "Inconsolata Fallback 2", ui-monospace, "SF Mono", Menlo, monospace;--font-ui:var(--font-sans);--font-code:var(--font-mono);--page:46rem;--gutter:clamp(1.1rem, 4vw, 2rem);--radius:8px;--hl-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3ClinearGradient id='g'%3E%3Cstop offset='0' stop-color='%23ffdc38'/%3E%3Cstop offset='.18' stop-color='%23ffe870'/%3E%3Cstop offset='.62' stop-color='%23ffe14d'/%3E%3Cstop offset='.85' stop-color='%23ffe870'/%3E%3Cstop offset='1' stop-color='%23ffe14d'/%3E%3C/linearGradient%3E%3Cfilter id='f' filterUnits='userSpaceOnUse' x='0' y='0' width='100%25' height='100%25' color-interpolation-filters='sRGB'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.018 .05' numOctaves='2' seed='4'/%3E%3CfeDisplacementMap in='SourceGraphic' scale='8' xChannelSelector='R' yChannelSelector='G' result='w'/%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.35 .6' numOctaves='2' seed='9'/%3E%3CfeDisplacementMap in='w' scale='3.6' xChannelSelector='R' yChannelSelector='G' result='e'/%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.007 .5' numOctaves='2' seed='2'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.4 0 0 0 -0.62' result='s'/%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='1' seed='7'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .5 0 0 0 .75' result='p'/%3E%3CfeComposite in='e' in2='s' operator='in'/%3E%3CfeComposite in2='p' operator='in'/%3E%3C/filter%3E%3Cmask id='m'%3E%3Crect width='100%25' height='100%25' fill='%23fff'/%3E%3Csvg x='3' overflow='visible' viewBox='0 0 10 20' preserveAspectRatio='xMinYMid meet'%3E%3Cpath d='M-99 0H3.2L-.8 20H-99Z'/%3E%3C/svg%3E%3Csvg x='-3' overflow='visible' viewBox='0 0 10 20' preserveAspectRatio='xMaxYMid meet'%3E%3Cpath d='M99 0H10.8L6.8 20H99Z'/%3E%3C/svg%3E%3C/mask%3E%3C/defs%3E%3Cg filter='url%28%23f%29'%3E%3Crect mask='url%28%23m%29' y='19.4%25' width='100%25' height='61.2%25' fill='url%28%23g%29'/%3E%3C/g%3E%3C/svg%3E")}:root[data-theme=dark]{--bg:#302f2c;--bg-raised:#3a3935;--text:#f4f1e6;--muted:#b5b2a6;--rule:#4b4a45;--mark:#e8cf5e;--news-bg:#e0d6a8;--link-rule:#94918a;--code-bg:#3a3935;--syn-keyword:#ff8f85;--syn-string:#8fd6ad;--syn-comment:#aeab9f;--syn-number:#f2c66b;--syn-name:#9dbcf5;--syn-builtin:#d6a5e3;--hl-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3ClinearGradient id='g'%3E%3Cstop offset='0' stop-color='%23827430'/%3E%3Cstop offset='.18' stop-color='%236b5f23'/%3E%3Cstop offset='.62' stop-color='%23776a27'/%3E%3Cstop offset='.85' stop-color='%236b5f23'/%3E%3Cstop offset='1' stop-color='%23776a27'/%3E%3C/linearGradient%3E%3Cfilter id='f' filterUnits='userSpaceOnUse' x='0' y='0' width='100%25' height='100%25' color-interpolation-filters='sRGB'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.018 .05' numOctaves='2' seed='4'/%3E%3CfeDisplacementMap in='SourceGraphic' scale='8' xChannelSelector='R' yChannelSelector='G' result='w'/%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.35 .6' numOctaves='2' seed='9'/%3E%3CfeDisplacementMap in='w' scale='3.6' xChannelSelector='R' yChannelSelector='G' result='e'/%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.007 .5' numOctaves='2' seed='2'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.8 0 0 0 0.16' result='s'/%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='1' seed='7'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .5 0 0 0 .75' result='p'/%3E%3CfeComposite in='e' in2='s' operator='in'/%3E%3CfeComposite in2='p' operator='in'/%3E%3C/filter%3E%3Cmask id='m'%3E%3Crect width='100%25' height='100%25' fill='%23fff'/%3E%3Csvg x='3' overflow='visible' viewBox='0 0 10 20' preserveAspectRatio='xMinYMid meet'%3E%3Cpath d='M-99 0H3.2L-.8 20H-99Z'/%3E%3C/svg%3E%3Csvg x='-3' overflow='visible' viewBox='0 0 10 20' preserveAspectRatio='xMaxYMid meet'%3E%3Cpath d='M99 0H10.8L6.8 20H99Z'/%3E%3C/svg%3E%3C/mask%3E%3C/defs%3E%3Cg filter='url%28%23f%29'%3E%3Crect mask='url%28%23m%29' y='19.4%25' width='100%25' height='61.2%25' fill='url%28%23g%29'/%3E%3C/g%3E%3C/svg%3E");color-scheme:dark}:root[data-theme=paper]{--bg:#f8f1e3;--bg-raised:#efe6d2;--text:#2b2219;--muted:#6b5c4a;--rule:#dfd3bc;--news-bg:#f3e3a3;--link-rule:#8f8068;--code-bg:#f1e9d7;--syn-keyword:#a8231c;--syn-string:#1a6340;--syn-comment:#6e6455;--syn-number:#7d5200;--syn-name:#1b489a;--syn-builtin:#72298a}:root{--font-body:var(--font-serif)}:root[data-font=sans] .post:not(.is-page){--font-body:var(--font-sans);--body-scale:1.02}:root[data-font=mono] .post:not(.is-page){--font-body:var(--font-mono);--body-tracking:-0.02em;--body-scale:0.96;--title-scale:0.9}:root[data-font=sans] .control-glyph{font-family:var(--font-sans);font-size:1em}:root[data-font=mono] .control-glyph{font-family:var(--font-mono);font-size:1.072em}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:1.5rem}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:1rem;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-wrap:break-word}img,svg,video,iframe{max-width:100%}a{color:inherit}button,input{font:inherit;color:inherit}::selection{background:var(--mark);color:var(--mark-text)}:focus-visible{outline:2px solid var(--text);outline-offset:2px;border-radius:2px}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}kbd{font-family:var(--font-sans);font-size:.92em;font-weight:600;padding:.1em .45em;border:1px solid var(--rule);border-bottom-width:2px;border-radius:4px;background:var(--bg-raised);white-space:nowrap}p,li,dd,blockquote,figcaption{text-wrap:pretty}h1,h2,h3,h4,.post-row,.post-row-desc,.link-list-note,.listing-dek,.hero-lede,.hero-more,.browse-line,.footer-bio,.newsletter-pitch,.home-stats,.prose .site-stats,.prose .start-here-desc{text-wrap:balance}.hl,.marker-link,.hero-more a,.browse-line a,.site-name span,.site-nav a,.post-row-title,.link-list a,.section-more,.footer-links a,.tag,.quiet-link,.toc a{padding-inline:.3em;margin-inline:-.3em;-webkit-box-decoration-break:clone;box-decoration-break:clone}.hl,.marker-link,.hero-more a,.browse-line a,.site-name:hover span,.site-nav a:is(:hover,[aria-current=page]),.post-row-title:hover,.link-list a:hover,.section-more:hover,.footer-links a:hover,:is(.tag,.quiet-link):is(:hover,.is-current),.toc a:hover,.toc-margin a.is-active,.prose a:hover,.timeline a:hover{background-image:var(--hl-image);background-repeat:no-repeat;background-position:0 var(--hl-y,100%);background-size:100% var(--hl-h,96%)}.marker-link,.hero-more a,.browse-line a{text-decoration:none;color:var(--text)}html.is-locked{overflow:hidden;scrollbar-gutter:stable}html:not(.js) :is(#theme-toggle,#font-toggle,.control-search kbd,.footer-keys,.search-box,.keys,.comments){display:none}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link{position:absolute;left:1rem;top:-4rem;z-index:20;padding:.5rem .75rem;background:var(--text);color:var(--bg);border-radius:4px}.skip-link:focus{top:.75rem}.site-header{background:var(--bg)}.site-header-inner,.site-footer-inner{width:min(var(--page),100% - var(--gutter) * 2);margin-inline:auto}.site-header-inner{border-bottom:1.5px solid var(--text);padding-block:.725rem;display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem 1.25rem}.site-name{font-weight:900;font-size:1.4rem;letter-spacing:-.03em;text-decoration:none;margin-right:.4rem}.site-nav{display:flex;align-items:baseline;gap:.25rem 1.1rem;font-size:.95rem;font-weight:600}.site-nav a{text-decoration:none;white-space:nowrap}.reader-controls{display:flex;align-items:center;margin-left:auto;margin-right:-.5rem}.control{display:inline-block;height:2rem;padding:0 .5rem;background:0 0;border:0;border-radius:6px;cursor:pointer;font-size:.95rem;font-weight:600;line-height:2rem;white-space:nowrap;text-decoration:none}.control:hover{background:var(--bg-raised)}.control{min-width:2rem;text-align:center}.control-search{text-align:right}.control>*+*{margin-left:.35rem}.control-glyph{display:inline-block;width:1.3rem;line-height:0;font-family:var(--font-serif);font-size:.953em;text-align:left}.control-label{display:inline-block;min-width:2.45rem;text-align:left;color:var(--muted)}.control svg{width:.66rem;height:.66rem;vertical-align:-.014rem;overflow:visible}.control kbd{border:0;background:0 0;padding:0;font-family:var(--font-sans);font-size:1em;font-weight:600;letter-spacing:.04em}.control .key-sign{font-size:.91em}@media(max-width:52rem){.control-search kbd{display:none}.site-nav{order:3;overflow-x:auto;scrollbar-width:none;margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter);width:calc(100% + var(--gutter) * 2)}.site-nav::-webkit-scrollbar{display:none}}@media(max-width:30rem){.site-nav{justify-content:space-between;gap:.35rem;font-size:clamp(.8rem,4vw,.95rem)}}main{display:block;padding:clamp(2rem,5vw,3.5rem)var(--gutter)4rem}.listing,.home{max-width:var(--page);margin-inline:auto}.tag,.quiet-link{color:var(--muted);font-size:.86rem;font-weight:500;text-decoration:none;white-space:nowrap}.tag{font-family:var(--font-mono);font-size:.9rem;font-weight:500}.tag::before{content:"#";opacity:.55}:is(.tag,.quiet-link):is(:hover,.is-current){color:var(--text)}.tag-line{display:flex;flex-wrap:wrap;gap:.1rem .85rem;margin:0 0 1.1rem}.tag-pair{display:inline-flex;gap:.85rem}@media(pointer:coarse){:is(.tag,.quiet-link,.section-more,.footer-links a){position:relative}:is(.tag,.quiet-link,.section-more,.footer-links a)::after{content:"";position:absolute;inset:-.125rem -.15rem}:is(.footer-links a,.about-social .quiet-link,.about-more .section-more)::after{inset-block:-.2rem}.share .quiet-link::after{inset-inline:-.3rem}.tag-line,.share{row-gap:.25rem}.footer-links,.about-social,.about-more{row-gap:.4rem}}.post-list{list-style:none;margin:0;padding:0}.post-row{padding:.95rem 0;border-top:1px solid var(--rule)}.post-list>.post-row:first-child{border-top:0}.post-row-title{font-size:1.24rem;font-weight:700;letter-spacing:-.012em;line-height:1.2;text-decoration:none}.post-row-desc{margin:.25rem 0 0;font-family:var(--font-serif);font-size:1.04rem;line-height:1.4;color:var(--muted)}.post-row-event{color:var(--text)}.post-row-links{margin:.35rem 0 0;display:flex;flex-wrap:wrap;gap:.2rem 1rem}.post-list.is-compact .post-row{padding:.65rem 0}.post-list.is-compact .post-row-title{font-size:1.12rem}.post-list.is-compact .post-row-desc{display:none}.listing-header{margin-bottom:1.75rem}.listing-title{font-weight:900;font-size:clamp(2.5rem,8vw,3.75rem);letter-spacing:-.035em;line-height:1;margin:0}.listing-dek{margin:.9rem 0 0;font-family:var(--font-serif);font-size:clamp(1.04rem,2.4vw,1.3rem);line-height:1.4}.listing-stats{margin:.6rem 0 0;font-size:.86rem;color:var(--muted)}.listing .post-list{border-top:1.5px solid var(--text)}.search-box{display:block;width:100%;height:2.9rem;margin-bottom:1.5rem;padding:0 1rem;background:var(--bg);border:1px solid var(--muted);border-radius:var(--radius);font-size:1.02rem;text-align:left;color:var(--muted);cursor:text}.search-box:hover{border-color:var(--text)}.hero{margin-bottom:clamp(2.75rem,6vw,4rem)}.hero-title{font-weight:900;font-size:clamp(1.9rem,9.6vw,4.4rem);line-height:1;letter-spacing:-.035em;margin:0 0 1.4rem}.hero-lede{font-family:var(--font-serif);font-size:clamp(1.2rem,2.6vw,1.45rem);line-height:1.35;margin:0 0 .9rem}.hero-more{color:var(--muted);margin:0;font-size:1.06rem}.home-section{margin-bottom:clamp(2.75rem,6vw,4rem)}.section-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:0 1rem;padding-bottom:.45rem;border-bottom:1.5px solid var(--text)}.section-head h2{font-weight:800;font-size:1.55rem;letter-spacing:-.02em;margin:0}.section-more{font-size:.86rem;font-weight:600;text-decoration:none;white-space:nowrap}.browse-line{margin:1rem 0 0;color:var(--muted);font-size:.98rem}.home-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,19rem),1fr));gap:0 2.5rem}.link-list{list-style:none;margin:0;padding:0}.link-list li{padding:.7rem 0;text-wrap:balance}.link-list a{font-weight:700;font-size:1.12rem;letter-spacing:-.012em;text-decoration:none;line-height:1.25}.link-list-note{display:block;margin-top:.15rem;color:var(--muted);font-size:.92rem}.home-stats,.prose .site-stats{text-align:center;color:var(--muted);font-size:.9rem;margin:3rem 0 0}.newsletter{border:1.5px solid #131311;border-radius:var(--radius);padding:1rem 1.2rem;display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;background:var(--news-bg);scroll-margin-top:2rem}.newsletter-pitch{margin:0;flex:1 1 16rem;font-size:.98rem;font-weight:500;color:#131311}.newsletter-pitch strong{font-weight:800}.newsletter-row{display:flex;flex:1 1 min(18rem,100%);min-width:0;gap:.5rem}.newsletter input{flex:1;min-width:0;height:2.5rem;padding:0 .75rem;background:#fff;color:#131311;border:1.5px solid #131311;border-radius:var(--radius)}.newsletter input::placeholder{color:#62605a}.newsletter button{height:2.5rem;padding:0 1rem;background:#131311;color:var(--news-bg);border:0;border-radius:var(--radius);font-weight:700;font-size:.9rem;cursor:pointer;white-space:nowrap}.site-footer{margin-top:2rem}.site-footer-inner{border-top:1.5px solid var(--text);padding-block:1.75rem 2.5rem;color:var(--muted);font-size:.92rem}.footer-bio{margin:0 0 1rem;line-height:1.55}.footer-row{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 1.5rem;margin-bottom:.6rem}.footer-links{list-style:none;display:flex;flex-wrap:wrap;gap:.3rem 1.25rem;margin:0;padding:0;font-size:.88rem;font-weight:600}.footer-links a{text-decoration:none;color:var(--text)}.footer-keys{margin:0;font-size:.95rem}.footer-copy{margin:1rem 0 0;font-size:.82rem;text-align:center}@media(hover:none){.footer-keys{display:none}}@media print{.site-header,.site-footer,.toc,.post-footer,.palette{display:none!important}:root,:root[data-theme]{--bg:#ffffff;--bg-raised:#f6f5f0;--text:#131311;--muted:#62605a;--rule:#dedcd4;--mark:#ffe14d;--mark-text:#131311;--news-bg:#fbf0bb;--link-rule:#8d8a80;--code-bg:#f5f4ef;--syn-keyword:#b3261e;--syn-string:#1c6b45;--syn-comment:#6f6c63;--syn-number:#8a5a00;--syn-name:#1e4fa8;--syn-builtin:#7b2f8f;--hl-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3ClinearGradient id='g'%3E%3Cstop offset='0' stop-color='%23ffdc38'/%3E%3Cstop offset='.18' stop-color='%23ffe870'/%3E%3Cstop offset='.62' stop-color='%23ffe14d'/%3E%3Cstop offset='.85' stop-color='%23ffe870'/%3E%3Cstop offset='1' stop-color='%23ffe14d'/%3E%3C/linearGradient%3E%3Cfilter id='f' filterUnits='userSpaceOnUse' x='0' y='0' width='100%25' height='100%25' color-interpolation-filters='sRGB'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.018 .05' numOctaves='2' seed='4'/%3E%3CfeDisplacementMap in='SourceGraphic' scale='8' xChannelSelector='R' yChannelSelector='G' result='w'/%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.35 .6' numOctaves='2' seed='9'/%3E%3CfeDisplacementMap in='w' scale='3.6' xChannelSelector='R' yChannelSelector='G' result='e'/%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.007 .5' numOctaves='2' seed='2'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.4 0 0 0 -0.62' result='s'/%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='1' seed='7'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .5 0 0 0 .75' result='p'/%3E%3CfeComposite in='e' in2='s' operator='in'/%3E%3CfeComposite in2='p' operator='in'/%3E%3C/filter%3E%3Cmask id='m'%3E%3Crect width='100%25' height='100%25' fill='%23fff'/%3E%3Csvg x='3' overflow='visible' viewBox='0 0 10 20' preserveAspectRatio='xMinYMid meet'%3E%3Cpath d='M-99 0H3.2L-.8 20H-99Z'/%3E%3C/svg%3E%3Csvg x='-3' overflow='visible' viewBox='0 0 10 20' preserveAspectRatio='xMaxYMid meet'%3E%3Cpath d='M99 0H10.8L6.8 20H99Z'/%3E%3C/svg%3E%3C/mask%3E%3C/defs%3E%3Cg filter='url%28%23f%29'%3E%3Crect mask='url%28%23m%29' y='19.4%25' width='100%25' height='61.2%25' fill='url%28%23g%29'/%3E%3C/g%3E%3C/svg%3E");color-scheme:light}}.post{--measure:var(--page);--body-size:1.2rem;--body-leading:1.62;--xh:0.48}.post-header,.toc-inline,.post-footer{max-width:var(--measure);margin-inline:auto}.post-header{margin-bottom:2.1rem;text-align:center}.post-title{font-family:var(--font-body);font-weight:600;font-size:calc(clamp(2.1rem,5.4vw,3.2rem) * var(--title-scale,1));line-height:1.08;letter-spacing:-.02em;margin:0}.post-meta{margin:.9rem 0 0;font-family:var(--font-mono);font-size:.9rem;font-weight:500;line-height:1.7;color:var(--muted);text-wrap:balance}.post-meta>*{display:inline-block;margin-inline:.27rem}.post-meta-time{white-space:nowrap;font-variant-numeric:tabular-nums}.post-header::after,.post.is-page .prose h3::before{content:"";display:block;width:3rem;height:.78rem;background:var(--hl-image)0 0/100% 100% no-repeat}.post-header::after{margin:1.01rem auto -.09rem}.post-layout{position:relative;max-width:var(--measure);margin-inline:auto}.toc ul{list-style:none;margin:0;padding:0}.toc li{margin:0;text-wrap:balance}.toc li{padding:.22rem 0}.toc ul ul li:last-child{padding-bottom:0}.toc a{text-decoration:none;color:var(--muted);line-height:1.35}.toc a:hover{color:var(--text)}.toc ul ul{padding-left:.9rem;font-size:.94em}.toc nav>ul>li:not(:has(>a)){padding:0}.toc nav>ul>li:not(:has(>a))>ul{padding-left:0;font-size:inherit}.toc-inline{margin-bottom:2rem;border:1px solid var(--rule);border-radius:var(--radius);background:var(--bg-raised);font-size:.95rem}.toc-inline summary{cursor:pointer;padding:.7rem 1rem;font-size:.76rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;list-style-position:inside}.toc-inline nav{padding:0 1rem .9rem}.toc-margin{display:none}@media(min-width:78rem){.toc-inline{display:none}.toc-margin{display:block;position:absolute;top:0;bottom:0;left:calc(100% + 2.25rem);width:min(14rem,calc((100vw - var(--page))/2 - 3.5rem));font-size:.84rem}.toc-sticky{position:sticky;top:2rem}.toc-title{margin:0 0 .5rem;font-size:.74rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.toc-sticky>nav{max-height:calc(100vh - 6rem);overflow-y:auto;scrollbar-width:thin;padding-right:.5rem}.toc-margin a.is-active{color:var(--text)}}.prose{font-family:var(--font-body);font-size:calc(var(--body-size) * var(--body-scale,1));line-height:var(--body-leading);letter-spacing:var(--body-tracking,0);font-size-adjust:var(--xh,none);hanging-punctuation:first}.prose>*{margin-block:0 1.25em}.prose>:last-child{margin-bottom:0}.prose a{text-decoration:underline;text-decoration-color:var(--link-rule);text-decoration-thickness:1px;text-underline-offset:.18em}.prose a:hover{text-decoration-color:transparent}.prose h2,.prose h3,.prose h4{font-family:var(--font-body);font-size-adjust:none;letter-spacing:-.012em;line-height:1.2;scroll-margin-top:1.5rem}.prose h2{font-weight:600;font-size:1.5em;margin-top:2.2em;margin-bottom:.6em}.prose h3{font-weight:600;font-style:italic;font-size:1.2em;margin-top:1.9em;margin-bottom:.5em}.prose h4{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.07em;font-size:.8em;font-weight:600;color:var(--muted);margin-top:1.6em;margin-bottom:.4em}.anchor{margin-left:.25em;color:var(--muted);text-decoration:none!important;opacity:0;font-weight:400;font-style:normal}:is(h2,h3,h4):hover .anchor,.anchor:focus-visible{opacity:1}.prose ul,.prose ol{padding-left:1.4em}.prose li{margin-block:.35em}.prose li::marker{color:var(--muted)}.prose blockquote{margin-inline:0;padding:.1em 0 .1em 1.1em;border-left:4px solid var(--mark)}.prose blockquote>:first-child{margin-top:0}.prose blockquote>:last-child{margin-bottom:0}.prose hr{border:0;text-align:center;margin-block:2.5em}.prose hr::after{content:"•  •  •";color:var(--muted);letter-spacing:.3em}.prose strong{font-weight:650}.prose sup{line-height:0}.prose code{font-family:var(--font-code);font-size:.86em;font-size-adjust:none;letter-spacing:0;background:var(--code-bg);padding:.12em .32em;border-radius:4px}.prose a code{color:inherit}.prose pre{position:relative;margin-inline:0;padding:1rem 1.1rem;overflow-x:auto;background:var(--code-bg);border:1px solid var(--rule);border-radius:var(--radius);font-size:.86rem;line-height:1.55;font-size-adjust:none;letter-spacing:0;tab-size:4;text-wrap:nowrap}.prose pre code{background:0 0;padding:0;font-size:inherit;border-radius:0}.highlight{position:relative}.copy-button{position:absolute;top:.45rem;right:.45rem;padding:.2rem .5rem;font-family:var(--font-sans);font-size:.72rem;font-weight:600;background:var(--bg);color:var(--muted);border:1px solid var(--rule);border-radius:4px;cursor:pointer;opacity:0}.highlight:hover .copy-button,.copy-button:focus-visible{opacity:1}.copy-button:hover{color:var(--text)}@media(hover:none){.copy-button{opacity:1}.highlight pre{padding-top:2.3rem}}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kr,.chroma .kt,.chroma .ow{color:var(--syn-keyword)}.chroma .s,.chroma .s1,.chroma .s2,.chroma .sd,.chroma .sa,.chroma .se,.chroma .si{color:var(--syn-string)}.chroma .c,.chroma .c1,.chroma .cm,.chroma .ch,.chroma .cs{color:var(--syn-comment);font-style:italic}.chroma .m,.chroma .mi,.chroma .mf,.chroma .mh{color:var(--syn-number)}.chroma .nf,.chroma .nc,.chroma .nd,.chroma .fm,.chroma .nt{color:var(--syn-name)}.chroma .nb,.chroma .bp,.chroma .na{color:var(--syn-builtin)}.prose table{display:block;width:max-content;max-width:100%;overflow-x:auto;border-collapse:collapse;font-family:var(--font-sans);font-size:.9rem;font-size-adjust:none;letter-spacing:0;line-height:1.45}.prose th,.prose td{padding:.5rem .8rem;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top}.prose td{overflow-wrap:normal}.prose th{font-weight:650;border-bottom-color:var(--text);white-space:nowrap}.prose p:has(>:is(img,video)){text-align:center}.prose img{height:auto;border-radius:3px;vertical-align:middle;cursor:zoom-in}.prose video.loop{height:auto;border-radius:3px;vertical-align:middle}.prose p.img-small>video{max-width:min(100%,20rem)}.prose p.img-medium>video{max-width:min(100%,30rem)}.prose p.img-large>video{max-width:88%}.prose p>:is(img,video)+em,.prose .caption{display:block;margin-top:.7em;font-family:var(--font-sans);font-size:.85rem;font-size-adjust:none;letter-spacing:0;font-style:normal;line-height:1.45;color:var(--muted);text-align:center;text-wrap:balance}.prose .caption{margin-top:-.6em}.prose .caption>em{font-style:normal}.prose p.img-small>img{max-width:min(100%,20rem)}.prose p.img-medium>img{max-width:min(100%,30rem)}.prose p.img-large>img{max-width:88%}.prose p.w-20>img{--w:0.2}.prose p.w-30>img{--w:0.3}.prose p.w-40>img{--w:0.4}.prose p.w-50>img{--w:0.5}.prose p.w-60>img{--w:0.6}.prose p.w-70>img{--w:0.7}.prose p.w-80>img{--w:0.8}.prose p.w-90>img{--w:0.9}.prose p:is([class^=w-],[class*=" w-"])>img{max-width:min(100%,calc(var(--measure) * var(--w,1)))}:root[data-theme=dark] .prose img{background:#fff;box-shadow:0 0 0 .4rem #fff;margin-block:.4rem;filter:brightness(.9)}:root[data-theme=dark] .prose video.loop{filter:brightness(.9)}:root[data-theme=dark] .prose :is(img,video.loop):hover{filter:none}@media print{:root[data-theme=dark] .prose img{box-shadow:none;margin-block:0;filter:none}}.zoom-overlay{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:1.5rem;background:color-mix(in srgb,var(--bg) 92%,transparent);cursor:zoom-out}.zoom-overlay img{max-width:100%;max-height:100%;object-fit:contain;background:#fff;border-radius:3px;box-shadow:0 10px 50px rgb(0 0 0/.25)}.prose iframe{display:block;width:100%;margin-inline:auto;border:0;border-radius:3px}.prose iframe:not([data-embed=fixed]){height:auto;aspect-ratio:16/9}.prose math[display=block]{overflow-x:auto;max-width:100%;padding-block:.25em}.prose .katex:has(>math[display=block]){display:block}.prose :is(p,li):has(>.katex){overflow-x:auto;overflow-y:hidden}.prose math{font-size:1.05em;font-size-adjust:none}.post-footer{margin-top:3.5rem;padding-top:2rem;border-top:1.5px solid var(--text)}.post-footer h2{font-family:var(--font-sans);font-weight:800;font-size:1.55rem;letter-spacing:-.02em;margin:0;padding-bottom:.45rem;border-bottom:1.5px solid var(--text)}.post-footer>*+*{margin-top:2.5rem}#comments{min-height:17rem}.cite{font-size:.92rem;color:var(--muted)}.cite p{margin:0 0 .6rem;text-wrap:balance}.cite blockquote{margin:0 0 .6rem;padding-left:1rem;border-left:4px solid var(--mark);color:var(--text);font-family:var(--font-serif);font-size:1rem}.cite blockquote p{margin:0}.cite-bibtex{margin:0;padding:.9rem 1rem;overflow-x:auto;background:var(--code-bg);border:1px solid var(--rule);border-radius:var(--radius);font-family:var(--font-code);font-size:.8rem;line-height:1.5;color:var(--text)}.share{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem 1rem;font-size:.86rem}.share-label{color:var(--muted)}.post.is-page{--body-size:1.08rem;--body-leading:1.6}.post.is-page .post-header{text-align:left}.post.is-page .post-header::after{content:none}.post.is-page .post-title{font-family:var(--font-sans);font-weight:900;font-size:clamp(2.5rem,8vw,3.75rem);letter-spacing:-.035em;line-height:1}.post.is-page .prose h3{font-family:var(--font-sans);font-style:normal;font-weight:800;font-size:1.5em;letter-spacing:-.02em;margin-top:2.4em;margin-bottom:.2em}.post.is-page .prose h3::before{margin:-.09rem 0 .71rem}.post.is-page .prose .start-here-desc{color:var(--muted);font-style:italic}.prose .in-prose{font-family:var(--font-sans);font-size:1rem;font-size-adjust:none;letter-spacing:0;margin-block:2.5rem}.prose .site-stats{font-family:var(--font-sans);font-size-adjust:none;margin-top:2.5rem}.prose .kind-words{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;align-items:start}.prose .kind-words-column{display:grid;gap:1rem}.prose .kind-words a{display:block;background:0 0}.prose .kind-words img,:root[data-theme=dark] .prose .kind-words img{display:block;width:100%;padding:0;border-radius:0;cursor:pointer}@media(max-width:34rem){.prose .kind-words{grid-template-columns:1fr}}.post.is-page .prose li{text-wrap:balance}.about-intro{display:grid;grid-template-columns:11.5rem minmax(0,1fr);gap:0 2.25rem;align-items:start;margin-bottom:clamp(2rem,4.5vw,2.6rem)}.about .home-section{margin-bottom:clamp(2rem,4.5vw,2.6rem)}main:has(>.about){padding-bottom:1.5rem}.about-photo{display:block;width:100%;height:auto;border-radius:50%}.about-social{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:.1rem .9rem;margin:.9rem 0 0;padding:0}@media(max-width:40rem){.about-intro{grid-template-columns:minmax(0,1fr)}.about-side{display:flex;align-items:center;gap:1.25rem;margin-bottom:1.5rem}.about-photo{width:6.5rem}.about-social{flex-direction:column;margin:0}}.timeline{list-style:none;margin:0;padding:.75rem 0 0}.timeline li{display:grid;grid-template-columns:7rem minmax(0,1fr);gap:0 .75rem;align-items:baseline;padding:.16rem 0;line-height:1.4;text-wrap:balance}.timeline-years{font-family:var(--font-mono);font-size:.95rem;color:var(--muted);white-space:nowrap}.timeline strong{font-weight:650}.timeline-org{white-space:nowrap}.timeline-focus{color:var(--muted)}.timeline a{text-decoration:underline;text-decoration-color:var(--link-rule);text-decoration-thickness:1px;text-underline-offset:.18em}.timeline a:hover{text-decoration-color:transparent}@media(max-width:30rem){.timeline li{display:block;padding:.3rem 0;text-wrap:pretty}.timeline-years{margin-right:.4rem}.timeline-focus{display:inline-block;text-wrap:balance}}.about-more{list-style:none;display:flex;flex-wrap:wrap;gap:.2rem 1.5rem;margin:1.1rem 0 0;padding:0}.about-more .section-more{font-size:.92rem}@media(max-width:26rem){.about-more{flex-direction:column}}.about .about-bio{margin-top:1rem}.palette{position:fixed;inset:0;z-index:60;display:flex;justify-content:center;align-items:flex-start;padding:min(14vh,7rem)1rem 1rem}.palette-backdrop{position:absolute;inset:0;background:color-mix(in srgb,var(--bg) 70%,transparent);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.palette-box{position:relative;width:min(100%,40rem);max-height:min(70vh,34rem);display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--text);border-radius:var(--radius);overflow:hidden}:root[data-theme=dark] .palette-box{border-color:var(--muted)}.palette-field{position:relative;flex:none}.palette-ghost{position:absolute;top:0;right:1rem;overflow:hidden;height:3.25rem;display:flex;align-items:center;font-family:var(--font-mono);font-size:1rem;pointer-events:none;white-space:nowrap}.palette-ghost span{min-width:0;overflow:hidden;text-overflow:ellipsis;font-family:var(--font-sans);color:var(--muted)}.palette-input{display:block;width:100%;height:3.25rem;padding:0 1rem;border:0;border-bottom:1px solid var(--rule);background:0 0;font-family:var(--font-mono);font-size:1rem;outline:none}:root[data-theme=dark] .palette-input{border-bottom-color:var(--rule)}.palette-input::placeholder{color:var(--muted);font-family:var(--font-sans)}.palette-list{list-style:none;margin:0;padding:.35rem;overflow-y:auto;overscroll-behavior:contain}.palette-item{display:flex;align-items:baseline;gap:.75rem;padding:.5rem .65rem;border-radius:5px;cursor:pointer}.palette-item[aria-selected=true]{background:var(--mark);color:var(--mark-text)}.palette-item-main{flex:1;min-width:0}.palette-item-title{display:block;font-weight:600;line-height:1.3}.palette-item-title b{font-weight:800;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.15em}.palette-item-note{display:block;font-size:.84rem;line-height:1.35;opacity:.72;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.palette-item-side{flex:none;font-family:var(--font-mono);font-size:.74rem;opacity:.7;white-space:nowrap}.palette-item[aria-selected=true] kbd{background:0 0;border-color:initial}.palette-empty{padding:1rem .65rem;color:var(--muted);font-size:.92rem}.palette-hint{display:flex;flex-wrap:wrap;gap:.2rem 1rem;margin:0;padding:.55rem 1rem;border-top:1px solid var(--rule);background:var(--bg-raised);font-size:.76rem;color:var(--muted)}.palette-hint code{font-family:var(--font-mono);font-weight:700;color:var(--text)}@media(max-width:36rem){.palette{padding-top:.75rem}.palette-item-side{display:none}}.key-hint{pointer-events:none}.key-hint-row{display:flex;align-items:center;gap:.4rem 1.6rem;min-height:3.25rem;margin:0;padding:0 1rem;font-size:1rem;font-weight:600}.key-hint kbd{font-family:var(--font-sans);font-size:.92rem;font-weight:600;letter-spacing:.04em;margin-right:.25rem}@media print{.key-hint{display:none!important}}.keys{list-style:none;margin:0;padding:0}.keys li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem 1rem;padding:.7rem 0;border-top:1px solid var(--rule)}.keys li:first-child{border-top:0}.keys-combo{flex:0 0 11rem}.keys-what{flex:1 1 14rem;text-wrap:balance;font-family:var(--font-serif);font-size:1.08rem}.palette-chat{flex:1;min-height:0;display:flex;flex-direction:column}.chat-log{flex:1;min-height:6rem;overflow-y:auto;overscroll-behavior:contain;padding:.4rem 1rem 1rem;outline:none}.chat-turn{padding-top:.9rem}.chat-turn+.chat-turn{margin-top:1rem;border-top:1px solid var(--rule)}.chat-q{margin:0 0 .5rem;font-weight:700;line-height:1.35;text-wrap:balance}.chat-a{font-size:.97rem;line-height:1.55}.chat-a p,.chat-a ul,.chat-a ol,.chat-a pre{margin:0 0 .65rem;text-wrap:pretty}.chat-a ul,.chat-a ol{padding-left:1.2rem}.chat-a li+li{margin-top:.25rem}.chat-a a,.chat-read a{color:inherit;text-decoration:underline;text-decoration-color:var(--muted);text-decoration-thickness:1px;text-underline-offset:.18em}.chat-a a:hover,.chat-a a:focus-visible,.chat-read a:hover,.chat-read a:focus-visible{background:var(--mark);color:var(--mark-text);text-decoration-color:transparent;outline:none}.chat-a code{font-family:var(--font-mono);font-size:.88em}.chat-a pre{overflow-x:auto;padding:.6rem .75rem;background:var(--bg-raised);border-radius:5px;font-size:.85rem;line-height:1.45}.chat-status,.chat-error,.chat-read,.chat-empty{margin:0 0 .5rem;font-size:.86rem;line-height:1.45;color:var(--muted);text-wrap:pretty}.chat-error{color:var(--text)}.chat-empty{margin-top:.9rem;font-size:.95rem}@media(prefers-reduced-motion:no-preference){.chat-status{animation:chat-wait 1.4s ease-in-out infinite}}@keyframes chat-wait{50%{opacity:.45}}.chat-ideas{list-style:none;margin:.75rem 0 0;padding:0}.chat-idea{display:block;width:100%;padding:.5rem .65rem;margin:0 -.65rem;box-sizing:content-box;border:0;border-radius:5px;background:0 0;font:inherit;font-weight:600;text-align:left;color:inherit;cursor:pointer}.chat-idea:hover,.chat-idea:focus-visible{background:var(--mark);color:var(--mark-text);outline:none}.chat-hint{flex:none;align-items:baseline;justify-content:space-between;flex-wrap:nowrap;gap:.2rem 1rem}.chat-actions{flex:none;display:flex;gap:.9rem}.chat-actions button{padding:0;border:0;background:0 0;font:inherit;font-weight:600;color:var(--text);cursor:pointer;text-decoration:underline;text-decoration-color:var(--muted);text-underline-offset:.18em}.chat-actions button:hover,.chat-actions button:focus-visible{background:var(--mark);color:var(--mark-text);text-decoration-color:transparent;outline:none}@media(max-width:36rem){.chat-hint{flex-wrap:wrap}}.chat-idea{text-wrap:balance}