@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/public-sans-vietnamese-wght-normal.CtlIRbEm.woff2)format("woff2-variations");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:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/public-sans-latin-ext-wght-normal.MQgHevqp.woff2)format("woff2-variations");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:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/public-sans-latin-wght-normal.DdeTHZLK.woff2)format("woff2-variations");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:Public Sans Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/public-sans-vietnamese-wght-italic.B7WYVnNy.woff2)format("woff2-variations");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:Public Sans Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/public-sans-latin-ext-wght-italic.Dw_CFXJO.woff2)format("woff2-variations");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:Public Sans Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/public-sans-latin-wght-italic.DGZ7iaiu.woff2)format("woff2-variations");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:Atkinson Hyperlegible Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/atkinson-hyperlegible-mono-latin-400-normal.CmMGer93.woff2)format("woff2"),url(/_astro/atkinson-hyperlegible-mono-latin-400-normal.Cmjm2dBj.woff)format("woff")}@font-face{font-family:Atkinson Hyperlegible Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/atkinson-hyperlegible-mono-latin-600-normal.BiYyYOKJ.woff2)format("woff2"),url(/_astro/atkinson-hyperlegible-mono-latin-600-normal.CuPF9o0F.woff)format("woff")}:root{--font-reading:"Public Sans Variable", Arial, sans-serif;--font-ui:var(--font-reading);--font-mono:"Atkinson Hyperlegible Mono", ui-monospace, monospace;--bg:#fafafa;--bg2:#f0f0f0;--text:#171717;--muted:#525252;--faint:#a3a3a3;--border:#e5e5e5;--accent:#c2410c;color-scheme:light}:root.dark{--bg:#101927;--bg2:#182232;--text:#f4f4f4;--muted:#8799b5;--faint:#7f92ad;--border:#242f40;--accent:#5e94f3;--code-bg:#1e2939;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font:16px/1.5 var(--font-ui);margin:0}button{font:inherit}a{color:inherit}a:hover{color:var(--accent)}.shell{max-width:768px;margin:auto;padding:80px 24px 0}.site-header{justify-content:space-between;align-items:center;gap:20px;margin-bottom:64px;display:flex}.brand,.site-header nav{font:400 14px/1.3 var(--font-mono);text-transform:uppercase;letter-spacing:.11em;text-decoration:none}.brand{white-space:nowrap;font-weight:600}.site-header nav{align-items:center;gap:20px;display:flex}.site-header nav a{color:var(--faint);text-decoration:none}.site-header nav a[aria-current]{color:var(--accent);text-underline-offset:5px;text-decoration:underline}.site-header nav button{color:var(--faint);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:6px}.site-header nav button:hover{background:var(--bg2)}.site-header nav button .theme-sun,.dark .site-header nav button .theme-moon{display:none}.dark .site-header nav button .theme-sun{display:block}.site-footer{border-top:1px solid var(--border);font:14px/1.4 var(--font-ui);color:var(--faint);flex-wrap:wrap;gap:24px;margin-top:72px;padding:32px 0 48px;display:flex}.site-footer a{text-decoration:none}.section{margin-bottom:80px}.eyebrow{font:600 13px/1.4 var(--font-mono);text-transform:uppercase;letter-spacing:.1em;margin:0 0 24px}.muted{color:var(--muted)}.faint{color:var(--faint)}.link{text-decoration:underline;text-decoration-color:var(--faint);text-underline-offset:4px}.row-link{justify-content:space-between;align-items:baseline;gap:18px;padding:9px 0;text-decoration:none;display:flex}.row-link:hover .row-title{color:var(--accent)}.row-title{line-height:1.4}.row-date{font:14px var(--font-ui);color:var(--faint);flex:none}.list-plain{margin:0;padding:0;list-style:none}.section-heading{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.section-heading a{font:14px var(--font-mono);color:var(--faint);text-decoration:none}.hero{align-items:center;gap:32px;margin-bottom:80px;display:flex}.hero img{object-fit:cover;border-radius:5px;width:112px;height:112px}.hero p{font:1.125rem/1.625 var(--font-reading);color:var(--muted);max-width:610px;margin:0}.work-item{cursor:pointer;border-radius:6px;grid-template-columns:120px 1fr;gap:24px;margin:0 -8px;padding:8px;display:grid}.work-item:hover{background:var(--bg2)}.work-item:hover h3{color:var(--accent)}.work-item:focus-visible{outline:1px solid var(--accent)}.work-details{margin-top:12px}.work-details p{margin:0 0 8px}.work-item time{font:14px var(--font-ui);color:var(--faint)}.work-item h3{margin:0;font-size:17px;font-weight:500}.work-item p,.project p{color:var(--muted);margin:4px 0}.project{margin-bottom:20px}.project a{font-weight:600}.page-title{font:700 clamp(40px,7vw,60px)/1.1 var(--font-ui);letter-spacing:-.04em;margin:0 0 40px}.post-header{margin-bottom:42px}.post-header h1{font:600 clamp(26px,4vw,34px)/1.25 var(--font-ui);letter-spacing:-.02em;margin:0}.post-meta{justify-content:space-between;align-items:baseline;gap:20px;display:flex}.post-header time{font:15px var(--font-ui);white-space:nowrap;color:var(--faint)}.post-summary{font-family:var(--font-reading);color:var(--muted);margin:14px 0 0;font-size:19px}.back-link{font:13px var(--font-ui);color:var(--faint);margin-bottom:32px;text-decoration:none;display:inline-block}.prose{font:clamp(1.125rem, 1rem + .5vw, 1.25rem)/1.6 var(--font-reading);color:var(--muted)}.prose h1,.prose h2,.prose h3,.prose h4{font-family:var(--font-ui);color:var(--text);line-height:1.3}.prose h2{margin:44px 0 18px;font-size:1.75rem}.prose h3{margin:32px 0 14px;font-size:1.375rem}.prose p{margin:0 0 22px}.prose strong{color:var(--text)}.prose a{color:inherit;text-decoration-color:var(--faint);text-underline-offset:4px}.prose a:hover{color:var(--accent)}.prose img{border-radius:5px;max-width:100%;height:auto;margin:28px 0;display:block}.prose pre{background:var(--bg2);max-width:100%;font:.875rem/1.6 var(--font-mono);border-radius:5px;padding:18px;overflow:auto}.prose code{font-family:var(--font-mono)}.prose :not(pre)>code{background:var(--code-bg,var(--bg2));border-radius:3px;padding:2px 4px;font-size:.88em}.dark .prose :not(pre)>code{color:var(--accent)}.dark .prose .astro-code{background-color:var(--bg2)!important}.prose blockquote{border-left:2px solid var(--border);margin:24px 0;padding-left:18px;font-style:italic}.prose li{margin-bottom:7px}.prose table{border-collapse:collapse;margin:22px 0;display:block;overflow:auto}.prose td,.prose th{border:1px solid var(--border);padding:7px 10px}.contact-item{margin-bottom:22px}.contact-item small{font:12px var(--font-ui);color:var(--faint);margin-bottom:3px;display:block}.contact-item a{font-size:20px}.book-section{margin-bottom:48px}.book-year{margin-bottom:40px}.book-year h3{margin:0 0 16px;font-size:18px;line-height:1.3}.book-section h2{font:13px var(--font-ui);color:var(--faint);margin:0 0 20px}.book-row{gap:16px;padding:10px 0;display:flex}.book-row img,.book-cover{object-fit:cover;background:var(--bg2);border-radius:3px;flex:none;width:48px;height:72px}.book-row p{margin:0}.book-row .author{font:14px var(--font-ui);color:var(--muted)}.book-row .date{font:12px var(--font-ui);color:var(--faint);margin-top:4px}hr{border:0;border-top:1px solid var(--border)}.now-updated{font:14px var(--font-ui);margin-bottom:32px}.visually-hidden{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=600px){.shell{padding:48px 20px 0}.site-header{align-items:center;gap:8px;margin-bottom:64px}.site-header nav{flex-wrap:nowrap;justify-content:flex-end;gap:10px}.hero{flex-direction:column;align-items:flex-start;gap:20px;margin-bottom:64px}.row-date{display:none}.work-item{grid-template-columns:88px 1fr;gap:16px}.post-meta{display:block}.post-header time{margin-top:8px;display:block}}@media (width<=389px){.brand,.site-header nav{letter-spacing:.04em;font-size:12px}.site-header nav{gap:8px}}
