@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/dm-sans-latin-ext-400-normal.BtiwyxMk.woff2)format("woff2"),url(/_astro/dm-sans-latin-ext-400-normal.BjWJ59Pq.woff)format("woff");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:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/dm-sans-latin-400-normal.CW0RaeGs.woff2)format("woff2"),url(/_astro/dm-sans-latin-400-normal.BwCSEQnW.woff)format("woff");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:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/dm-sans-latin-ext-500-normal.BJfUCQsA.woff2)format("woff2"),url(/_astro/dm-sans-latin-ext-500-normal.DR84L5F-.woff)format("woff");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:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/dm-sans-latin-500-normal.B9HHJjqV.woff2)format("woff2"),url(/_astro/dm-sans-latin-500-normal.Dr3UlScf.woff)format("woff");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:DM Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/dm-sans-latin-ext-600-normal.4vooXBpG.woff2)format("woff2"),url(/_astro/dm-sans-latin-ext-600-normal.DRtaDpgU.woff)format("woff");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:DM Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/dm-sans-latin-600-normal.Aqo67rzb.woff2)format("woff2"),url(/_astro/dm-sans-latin-600-normal.BmdmIIQ2.woff)format("woff");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}:root{--paper:#f6f5f3;--surface:#fff;--ink:#22201d;--muted:#6b6763;--line:#e4e1de;--accent:#ff692d;--accent-text:#bb3f09;--accent-soft:#fff5f0;--tint:#fefbe9;--sans:"DM Sans", system-ui, sans-serif;--shadow:0 2px 4px #22201d05, 0 1px 2px #22201d05;font-family:var(--sans);color:var(--ink);background:var(--paper);font-synthesis:none;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-size:1rem;line-height:1.65}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:500;line-height:1.2}a{color:inherit;text-underline-offset:4px;text-decoration-color:#bebbb8;transition:color .15s,background .15s,border-color .15s}a:hover{color:var(--accent-text)}a:focus-visible{outline:2px solid var(--accent-text);outline-offset:5px}img{max-width:100%;height:auto}::selection{background:#ffd7c4}.site-shell{max-width:1280px;margin:auto;padding:0 48px}.site-header{justify-content:space-between;align-items:center;gap:24px;padding:27px 0;display:flex}.identity{letter-spacing:-.025em;font-size:1.5rem;font-weight:600;text-decoration:none}.site-header nav{gap:7px;font-size:.9rem;display:flex}.site-header nav a{border-radius:8px;padding:8px 15px;text-decoration:none}.site-header nav a:hover{color:var(--ink);background:#ebe8e5}.site-header nav a[aria-current=page]{color:var(--accent-text);background:#ffe9de}.hero{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:20px;grid-template-columns:1.35fr 1fr;align-items:center;gap:48px;padding:44px;display:grid}.hero h1{letter-spacing:-.052em;margin-bottom:25px;font-size:clamp(3rem,4.65vw,4.1rem);font-weight:500;line-height:1.07}.hero h1 em{color:var(--accent-text);font-style:normal}.hero-intro{color:var(--muted);max-width:510px;margin-bottom:25px;font-size:1.05rem;line-height:1.7}.hero-intro a{color:var(--ink);font-weight:500}.hero-actions{flex-wrap:wrap;align-items:center;gap:14px 22px;display:flex}.text-link{align-items:center;gap:12px;padding:7px 0;font-size:.875rem;font-weight:500;text-decoration:none;display:inline-flex}.text-link:hover{text-decoration:underline}.primary-link{background:var(--accent);color:var(--ink);border:1px solid #0000;border-radius:9px;padding:12px 18px;font-weight:600;box-shadow:0 1px 2px #592c1d13}.primary-link:hover{color:var(--ink);background:#f35b16;text-decoration:none}.hero-experience{color:var(--muted);border-top:1px solid var(--line);max-width:490px;margin-top:27px;padding-top:20px;font-size:.875rem;line-height:1.65}.hero-photo img{aspect-ratio:4/5;object-fit:cover;object-position:72% center;border-radius:12px;width:100%;display:block}.hero-photo figcaption{color:var(--muted);padding:11px 2px 0;font-size:.75rem}.section{margin-top:24px}.work-grid{grid-template-columns:1.3fr 1fr 1fr;gap:18px;display:grid}.work-item{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;flex-direction:column;padding:26px;text-decoration:none;display:flex}.work-item:first-child{background:var(--accent-soft);border-color:#ffd7c4}.work-item:hover{color:var(--ink);border-color:#bebbb8}.work-item:first-child:hover{border-color:#f48d68}.work-item h2{letter-spacing:-.025em;justify-content:space-between;align-items:center;gap:15px;margin-bottom:15px;font-size:1.35rem;font-weight:600;display:flex}.work-item h2 span{color:var(--muted);font-size:1.2rem;font-weight:400}.work-item:first-child h2{color:var(--accent-text)}.work-item p{color:var(--muted);margin-bottom:21px;font-size:.94rem;line-height:1.65}.domain{color:var(--muted);margin-top:auto;font-size:.8rem}.writing-section{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;margin-top:32px;margin-bottom:45px;overflow:hidden}.section-heading{justify-content:space-between;align-items:center;gap:20px;padding:26px 28px 22px;display:flex}.section-title{letter-spacing:-.025em;font-size:1.4rem;font-weight:600}.section-heading .text-link{color:var(--accent-text)}.writing-row{border-top:1px solid #efecea;grid-template-columns:124px 1fr 24px;align-items:center;gap:22px;padding:23px 28px;text-decoration:none;display:grid}.writing-row:hover{background:#fbfaf8}.writing-row time{color:var(--muted);font-size:.8rem}.writing-row h3{letter-spacing:-.015em;font-size:1.1rem;font-weight:600}.writing-row p{color:var(--muted);margin-top:5px;font-size:.9rem}.row-arrow{color:var(--muted);font-size:1.25rem}.site-footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:25px;padding:24px 0 36px;display:flex}.footer-name{font-size:.9rem;font-weight:600;text-decoration:none}.footer-name span{color:var(--muted);margin-top:4px;font-size:.875rem;font-weight:400;display:block}.footer-links{gap:25px;font-size:.875rem;display:flex}.footer-links a{text-decoration:none}.skip-link{background:var(--ink);color:#fff;z-index:10;border-radius:8px;padding:12px 18px;position:fixed;top:-80px;left:15px}.skip-link:focus{top:15px}.page-intro{max-width:760px;padding:42px 0 35px}.page-intro h1{letter-spacing:-.045em;margin-bottom:21px;font-size:clamp(2.5rem,4.5vw,3.6rem);font-weight:500;line-height:1.1}.lede{color:var(--muted);max-width:660px;font-size:1.1rem}.page-body{padding-bottom:60px}.article-shell{background:var(--surface);border:1px solid var(--line);max-width:830px;box-shadow:var(--shadow);border-radius:16px;margin:15px auto 55px;padding:38px 48px 45px}.article-shell .page-intro{padding-top:8px}.article-header{border-bottom:1px solid var(--line);margin-bottom:30px;padding:28px 0}.article-header h1{letter-spacing:-.04em;margin-bottom:20px;font-size:clamp(2.3rem,4vw,3.2rem);line-height:1.13}.article-meta{color:var(--muted);font-size:.8rem}.prose{overflow-wrap:anywhere;font-size:1.125rem;line-height:1.85}.prose p,.prose ul,.prose ol,.prose blockquote,.prose pre{margin:0 0 1.4em}.prose h2{letter-spacing:-.025em;margin:1.7em 0 .8em;font-size:1.7rem}.prose h3{margin:1.5em 0 .65em;font-size:1.35rem}.prose a{color:var(--accent-text);text-decoration-color:#ffb99c}.prose blockquote{border-left:3px solid var(--accent);color:var(--muted);background:#fff5f0;border-radius:0 10px 10px 0;margin-left:0;padding:22px 25px}.prose blockquote p:last-child{margin-bottom:0}.prose img{object-fit:contain;border-radius:8px;max-height:700px;margin:28px auto;display:block}.prose pre{white-space:pre;overflow-wrap:normal;background:#f6f5f3;border:1px solid #ebe8e5;border-radius:10px;padding:22px;font-size:.85rem;line-height:1.7;overflow:auto}.prose :not(pre)>code{background:#f6f5f3;border-radius:4px;padding:2px 5px;font-size:.8em}.prose li{margin-bottom:.25em}.article-end{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:10px 20px;margin-top:35px;padding-top:22px;display:flex}.blog-entry{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:14px;grid-template-columns:145px 1fr;gap:28px;margin-bottom:16px;padding:28px;display:grid}.blog-entry time{color:var(--muted);padding-top:4px;font-size:.8rem}.blog-entry h2{letter-spacing:-.025em;font-size:1.5rem;font-weight:500}.blog-entry h2 a{text-decoration:none}.blog-entry .summary{color:var(--muted);max-width:630px;margin-top:12px;font-size:.97rem}.blog-entry .text-link{color:var(--accent-text);margin-top:15px}.note-body{max-width:620px;font-size:1.05rem}.note-body img{float:left;border-radius:4px;width:70px;margin:0 22px 12px 0}.note-body p{margin-bottom:15px}.note-body:after{content:"";clear:both;display:table}.archive-link{color:var(--muted);margin-top:28px;font-size:.9rem}.project-detail{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;grid-template-columns:1fr 1.7fr;gap:40px;margin-bottom:18px;padding:30px;display:grid}.project-detail:first-child{background:var(--accent-soft);border-color:#ffd7c4}.project-detail h2{letter-spacing:-.025em;font-size:1.7rem}.project-detail p{color:var(--muted);margin-bottom:16px}.project-detail .text-link{color:var(--accent-text);margin-right:24px}.about-photo{margin:35px 0}.about-photo img{width:100%;display:block}.about-photo figcaption{color:var(--muted);margin-top:10px;font-size:.8rem;line-height:1.5}@media (width<=1000px){.site-shell{padding:0 28px}.hero{grid-template-columns:1.25fr 1fr;gap:32px;padding:32px}.hero h1{font-size:3rem}.hero-intro{font-size:1rem}.hero-photo img{aspect-ratio:3/4}.work-grid{gap:12px}.work-item{padding:22px}.work-item h2{font-size:1.15rem}}@media (width<=700px){.site-shell{padding:0 16px}.site-header{flex-wrap:wrap;gap:14px;padding:20px 3px}.site-header nav{gap:1px;font-size:.875rem}.site-header nav a{padding:7px 10px}.identity{font-size:1.3rem}.hero{border-radius:15px;grid-template-columns:1fr;gap:28px;padding:28px 24px 24px}.hero h1{font-size:clamp(2.7rem,10vw,3.8rem)}.hero-intro{font-size:1rem}.hero-photo img{aspect-ratio:6/5;object-position:center 64%}.hero-experience{margin-top:23px;padding-top:18px}.hero-actions{gap:10px 20px}.work-grid{grid-template-columns:1fr;gap:14px}.work-item{padding:23px}.work-item h2{font-size:1.35rem}.work-item p{margin-bottom:14px}.section-heading{flex-wrap:wrap;gap:5px 16px;padding:22px}.section-title{font-size:1.3rem}.writing-row{grid-template-columns:1fr 20px;gap:7px 12px;padding:20px 22px}.writing-row time{grid-column:1/-1}.writing-row h3{font-size:1.05rem}.writing-row p{font-size:.875rem}.site-footer{flex-direction:column;align-items:flex-start;gap:20px;padding:24px 4px}.footer-links{flex-wrap:wrap;gap:22px}.page-intro{padding:25px 8px 28px}.page-intro h1{font-size:2.65rem}.page-intro .lede{font-size:1rem}.article-shell{margin-top:0;padding:25px 22px 30px}.article-shell .page-intro{padding:0 0 28px}.article-header{padding-top:23px}.article-header h1{font-size:2.25rem}.prose{font-size:1.05rem}.prose pre{padding:16px;font-size:.78rem}.prose blockquote{padding:18px}.blog-entry{grid-template-columns:1fr;gap:10px;padding:24px}.blog-entry h2{font-size:1.4rem}.project-detail{grid-template-columns:1fr;gap:16px;padding:25px}.project-detail h2{font-size:1.5rem}.project-detail .text-link{margin-right:18px}.page-body{padding-bottom:40px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}a{transition:none}}
