@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")}@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")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/nunito-latin-700-normal.Dort48En.woff2)format("woff2"),url(/_astro/nunito-latin-700-normal.OcDqTBcA.woff)format("woff")}:root{color-scheme:light dark;--color-bg:#f7f7f7;--color-ink:#111;--color-text:#333;--color-muted:#6b6b6b;--color-line:#e3e3e3;--color-hover:#ededed;--font-sans:"DM Sans", "Yu Gothic UI", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, system-ui, sans-serif;--font-logo:"Nunito", var(--font-sans);--max-width:692px;--pad-x:24px}@media (prefers-color-scheme:dark){:root{--color-bg:#111;--color-ink:#f2f2f2;--color-text:#d4d4d4;--color-muted:#9a9a9a;--color-line:#2b2b2b;--color-hover:#1d1d1d}}.site-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;margin-bottom:clamp(48px,9vw,96px);display:flex}.logo{align-items:center;min-width:0;padding-block:6px;line-height:1;text-decoration:none;display:inline-flex}.site-nav ul{flex-wrap:wrap;gap:0 20px;display:flex}.site-nav a{color:var(--color-muted);padding-block:6px;font-size:14px;line-height:1.4;text-decoration:none;display:inline-block}.site-nav a:hover,.site-nav a[aria-current]{color:var(--color-ink)}.site-nav a[aria-current=page]{text-decoration:underline}@media (width<=640px){.site-nav{flex-basis:100%}}.logo-text{min-width:1ch;min-height:1em;font-family:var(--font-logo);white-space:nowrap;font-variant-ligatures:none;visibility:hidden;align-items:flex-end;font-size:16px;font-weight:700;line-height:1;display:inline-flex;position:relative}.logo-text[data-ready=true]{visibility:visible}.logo-text [data-logo-left],.logo-text [data-logo-right],.logo-label{letter-spacing:.08em}.logo-text [data-logo-right]{display:inline-block;position:relative}.logo-label{height:1em;font-size:inherit;font-weight:inherit;white-space:nowrap;color:var(--color-muted);backface-visibility:hidden;-webkit-font-smoothing:antialiased;margin:0 0 0 1em;padding:0;line-height:1;position:absolute;bottom:0;left:100%;overflow:hidden}.logo-mid{text-align:center;letter-spacing:0;align-self:flex-end;width:0;height:1em;line-height:1;display:inline-block;overflow:hidden;transform:translate(-1px,-1px)}.logo-mid.is-open{width:.5em}.logo-text .logo-dot{will-change:transform;backface-visibility:hidden;line-height:1;display:inline-block}.logo-text .logo-tail-clip{vertical-align:bottom;height:1em;line-height:1;display:inline-block;overflow:hidden}.logo-text .logo-tail-clip.is-detach{position:absolute;top:0;left:100%}.logo-text .logo-tail{will-change:transform;backface-visibility:hidden;line-height:1;display:inline-block}.logo-text .logo-label-clip{width:100%;height:1em;line-height:1;display:block;position:relative}.logo-text .logo-label-item{white-space:nowrap;will-change:transform;backface-visibility:hidden;-webkit-font-smoothing:antialiased;height:1em;line-height:1;display:block;position:absolute;top:0;left:0}@media (width>=641px){.logo-text{font-size:20px}}*,:before,:after{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}.site-header{view-transition-name:site-header}::view-transition-old(site-header){display:none}::view-transition-group(site-header),::view-transition-new(site-header){animation:none}html{background:var(--color-bg);color:var(--color-ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-size-adjust:100%;font-size:16px;line-height:1.6}body{min-height:100vh;margin:0}h1,h2,h3,h4,p,ul,ol,figure,blockquote{margin:0;padding:0}ul,ol{list-style:none}a{color:inherit;text-underline-offset:3px;text-decoration-thickness:1px}button{font:inherit;color:inherit}img{max-width:100%;height:auto;display:block}::selection{background:var(--color-ink);color:var(--color-bg)}:focus-visible{outline:2px solid var(--color-ink);outline-offset:3px}.shell{width:100%;max-width:var(--max-width);padding:64px var(--pad-x) 128px;margin:0 auto}@media (width<=640px){.shell{padding:40px var(--pad-x) 80px}}.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}.skip-link{z-index:10;background:var(--color-ink);color:var(--color-bg);padding:8px 12px;font-size:13px;position:absolute;top:-48px;left:16px}.skip-link:focus{top:16px}.title{letter-spacing:-.01em;margin-bottom:40px;font-size:clamp(1.5rem,4.5vw,2rem);font-weight:500;line-height:1.35}.back{margin-bottom:32px;font-size:13px}.back a{color:var(--color-muted);text-decoration:none}.back a:hover{color:var(--color-ink)}.back a,.more a,.rss-link a,.article-footer a,.site-footer a,.link-list a,.author-links a{padding-block:4px;display:inline-block}.title,.article-title,.section-title,.entry-title,.about-name,.strength-title,.pager-title,.article-body h2,.article-body h3,.entry-desc,.author-desc,.strength-desc,.services li{word-break:auto-phrase}.section+.section{margin-top:clamp(48px,8vw,88px)}.section-title{margin-bottom:16px;font-size:16px;font-weight:500;line-height:1.4}.prose{color:var(--color-text);font-size:16px;line-height:1.85}.prose+.prose{margin-top:1em}.entries{flex-direction:column;gap:2px;display:flex}.entry{border-radius:6px;align-items:flex-start;gap:16px;margin-inline:-16px;padding:12px 16px;text-decoration:none;display:flex}.entry:hover,.entry:active{background:var(--color-hover)}.entry-text{flex-direction:column;gap:4px;min-width:0;display:flex}.entry-thumb{object-fit:cover;background:var(--color-hover);border-radius:4px;flex:none;width:88px;height:88px}.entry-title{color:var(--color-ink);font-size:16px;line-height:1.5}.entry-date{color:var(--color-muted);font-variant-numeric:tabular-nums;font-size:12px;line-height:1.4}.entry-desc{color:var(--color-muted);font-size:16px;line-height:1.65}.entry-meta{color:var(--color-muted);font-size:13px;line-height:1.6}@media (hover:none){.entry-title{text-decoration:underline 1px;text-decoration-color:var(--color-muted);text-underline-offset:4px}}@media (width<=640px){.entries{gap:20px}.entry{gap:14px;margin:0;padding:0}.entry-thumb{width:72px;height:72px}}.article-title{letter-spacing:-.01em;font-size:clamp(1.5rem,4.5vw,2rem);font-weight:500;line-height:1.35}.article-meta{color:var(--color-muted);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:baseline;gap:12px;margin-top:14px;font-size:12px;display:flex}.article-lead{color:var(--color-muted);margin-top:16px;font-size:1.0625rem;line-height:1.85}.article-image{aspect-ratio:1;object-fit:cover;background:var(--color-hover);width:min(100%,560px);height:auto;margin-top:32px}.article-body{margin-top:40px}.article-body>*+*{margin-top:1.2em}.article-body h2{color:var(--color-ink);margin-top:2.6em;font-size:1.125rem;font-weight:500;line-height:1.5}.article-body h3{color:var(--color-ink);margin-top:1.8em;font-size:16px;font-weight:500;line-height:1.6}.article-body p,.article-body li{color:var(--color-text);font-size:16px;line-height:1.9}.article-body ul,.article-body ol{padding-left:1.1em}.article-body ul li{list-style:outside}.article-body ol li{list-style:decimal}.article-body li+li{margin-top:.4em}.article-body a{color:var(--color-ink)}.article-body blockquote{border-left:1px solid var(--color-line);color:var(--color-ink);padding-left:16px}.article-body code{background:var(--color-hover);padding:.1em .35em;font-size:.9em}.article-body pre{background:var(--color-hover);padding:16px;font-size:12px;line-height:1.7;overflow-x:auto}.article-body pre code{background:0 0;padding:0}.article-body img{margin-top:1.2em}.article-body hr{border:0;border-top:1px solid var(--color-line);margin:2.5em 0}.article-body strong{color:var(--color-ink);font-weight:500}.about-inline{align-items:flex-start;gap:20px;display:flex}.about-photo{object-fit:cover;flex:none;width:96px;height:96px}.about-name{color:var(--color-ink);font-size:16px;font-weight:500;line-height:1.5}.intro .about-name{font-size:1.125rem}.about-name+.prose{margin-top:6px}.about-profile{margin-top:24px}.about-profile .prose a{color:var(--color-ink)}.strengths li{border-top:1px solid var(--color-line);padding:14px 0}.strengths li:last-child{border-bottom:1px solid var(--color-line)}.strength-title{color:var(--color-ink);font-size:16px;line-height:1.6;display:block}.strength-desc{color:var(--color-muted);margin-top:2px;font-size:15px;line-height:1.75;display:block}.stack{gap:14px;display:grid}.stack-row{grid-template-columns:150px 1fr;gap:16px;display:grid}.stack-label{color:var(--color-muted);font-size:13px;line-height:1.9}.stack-items{color:var(--color-ink);margin:0;font-size:15px;line-height:1.9}@media (width<=640px){.stack-row{grid-template-columns:1fr;gap:2px}.stack-items,.strength-desc{font-size:16px}}.more{margin-top:12px;font-size:13px}.more a{color:var(--color-muted);text-decoration:none}.more a:hover{color:var(--color-ink)}.contact-email{flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:20px;display:flex}.contact-email a{padding-block:2px;font-size:clamp(1.1rem,3vw,1.25rem);line-height:1.5;text-decoration:none;display:inline-block}.contact-email a:hover{text-decoration:underline}.copy-button{border:1px solid var(--color-line);min-height:32px;color:var(--color-muted);cursor:pointer;background:0 0;border-radius:999px;padding:4px 12px;font-size:13px;line-height:1.4}.copy-button:hover{border-color:var(--color-muted);color:var(--color-ink)}.copy-status{color:var(--color-muted);font-size:13px}.copy-status:empty{display:none}.services li{border-top:1px solid var(--color-line);color:var(--color-text);padding:12px 0;font-size:16px;line-height:1.7}.services li:last-child{border-bottom:1px solid var(--color-line)}.site-footer{border-top:1px solid var(--color-line);color:var(--color-muted);justify-content:space-between;align-items:center;gap:16px;margin-top:clamp(64px,12vw,112px);padding-top:20px;font-size:12px;display:flex}.site-footer a{color:var(--color-muted);text-decoration:none}.site-footer a:hover{color:var(--color-ink)}.note{color:var(--color-muted);margin-top:20px;font-size:13px;line-height:1.8}.work-links{flex-wrap:wrap;gap:4px 24px;margin-top:20px;display:flex}.work-links a{color:var(--color-ink);padding-block:4px;font-size:16px;text-decoration:none;display:inline-block}.work-links a:hover{text-decoration:underline}.work-link-host{color:var(--color-muted);margin-left:8px;font-size:13px}.rss-link{margin-top:32px;font-size:13px}.rss-link a{color:var(--color-muted);text-decoration:none}.rss-link a:hover{color:var(--color-ink)}.article-footer{margin-top:56px;font-size:13px}.article-footer a{color:var(--color-muted);text-decoration:none}.article-footer a:hover{color:var(--color-ink)}.article-body>:first-child{margin-top:0}.article-body h3+p{margin-top:.4em}.article-lead+.section{margin-top:40px}.notes-note{color:var(--color-muted);margin:0 0 32px;font-size:12px;line-height:1.8}.article-note{border-top:1px solid var(--color-line);color:var(--color-muted);margin-top:40px;padding-top:20px;font-size:12px;line-height:1.8}.notes-year+.notes-year{margin-top:40px}.notes-year-title{color:var(--color-muted);font-variant-numeric:tabular-nums;margin-bottom:8px;font-size:13px;font-weight:500;line-height:1.4}.link-list{flex-wrap:wrap;gap:0 20px;margin-top:24px;font-size:14px;display:flex}.link-list a{color:var(--color-muted);text-decoration:none}.link-list a:hover{color:var(--color-ink)}.author{align-items:flex-start;gap:16px;margin-top:40px;display:flex}.author-photo{object-fit:cover;flex:none;width:56px;height:56px}.author-name{color:var(--color-ink);font-size:15px;font-weight:500;line-height:1.5}.author-desc{color:var(--color-muted);margin-top:2px;font-size:14px;line-height:1.7}.author-links{flex-wrap:wrap;gap:0 16px;margin-top:4px;font-size:13px;display:flex}.author-links a{color:var(--color-ink)}.pager{border-top:1px solid var(--color-line);grid-template-columns:1fr 1fr;gap:16px;margin-top:56px;padding-top:20px;display:grid}.pager-link{flex-direction:column;gap:4px;padding:8px 0;text-decoration:none;display:flex}.pager-next{text-align:right;grid-column:2}.pager-label{color:var(--color-muted);font-size:12px;line-height:1.4}.pager-title{color:var(--color-ink);font-size:15px;line-height:1.6}.pager-link:hover .pager-title{text-decoration:underline}@media (width<=640px){.pager{grid-template-columns:1fr;gap:8px}.pager-next{text-align:left;grid-column:auto}}
