:root{color-scheme:light dark;--bg: #edf2f7;--box: #ffffff;--ink: rgba(0, 0, 0, .82);--muted: #56626d;--line: #e4edf4;--line-strong: #d6e3ed;--soft: #edf2f7;--link: #0b6bcb;--btn: #0b6bcb;--btn-ink: #ffffff;--code-bg: #151e2c;--code-ink: #e1e4e8;--inline-code-bg: #edf2f7;--dot: #bcd6ee;--dot-strong: #3ea8ff;--clear: transparent;--font: -apple-system, system-ui, "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif}@media(prefers-color-scheme:dark){:root{color-scheme:dark;--bg: #0f1722;--box: #1a2535;--ink: #e6edf3;--muted: #9fb0c0;--line: #2a3a4f;--line-strong: #34475f;--soft: #243349;--link: #6cb6ff;--btn: #3ea8ff;--btn-ink: #0f1722;--code-bg: #151e2c;--code-ink: #e1e4e8;--inline-code-bg: #243349;--dot: #3a506b;--dot-strong: #6cb6ff;--clear: transparent;--font: -apple-system, system-ui, "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif}}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:1.5rem}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.9;overflow-wrap:anywhere}a{color:var(--link);text-decoration-thickness:1px;text-underline-offset:.2em}a:hover{text-decoration-thickness:2px}a,button{-webkit-tap-highlight-color:var(--clear)}:focus-visible{outline:2px solid var(--link);outline-offset:3px}img,svg,video{max-width:100%;height:auto}figure{margin:2rem 0}button,input,textarea{font:inherit}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.5;overflow-wrap:anywhere;font-weight:700;word-break:auto-phrase;text-wrap:balance}h1{font-size:1.75rem}h2{font-size:1.5rem}h3{font-size:1.05rem}p+p{margin-top:1em}.container{width:min(1200px,100%);padding-inline:40px;margin-inline:auto}#main{padding-bottom:4rem;min-height:60vh}.skip-link{position:absolute;top:-100px;left:1rem;padding:.5rem 1rem;background:var(--box);z-index:10}.skip-link:focus{top:1rem}.site-header{background:var(--box);border-bottom:1px solid var(--line)}.header-inner{min-height:62px;display:flex;align-items:center;justify-content:space-between;gap:1rem}.brand{display:inline-flex;align-items:center;gap:.5rem;color:var(--ink);font-size:1.25rem;font-weight:700;text-decoration:none;white-space:nowrap;letter-spacing:-.01em}.brand-wrap{display:flex;align-items:center;gap:.6rem;min-width:0}.private-mark{font-size:.6875rem;font-weight:700;line-height:1;padding:.25rem .5rem;border:1px solid var(--line-strong);border-radius:999px;background:var(--soft);color:var(--muted);white-space:nowrap}.brand span:not(.brand-mark){font-weight:400}.brand-mark{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--btn);color:var(--btn-ink);font-size:.95rem;font-weight:700;line-height:1}.header-inner nav{display:flex;column-gap:1.5rem}.header-inner nav a{color:var(--muted);font-size:.875rem;font-weight:700;text-decoration:none;min-height:44px;display:inline-flex;align-items:center;border-bottom:2px solid var(--clear);white-space:nowrap}.header-inner nav a[aria-current=page],.header-inner nav a:hover{color:var(--link);border-bottom-color:var(--link)}.site-footer{background:var(--box);border-top:1px solid var(--line);padding:2.5rem 0}.footer-inner{display:flex;justify-content:space-between;gap:2rem;align-items:end}.footer-inner .brand{font-size:1.1rem}.footer-inner p,.footer-inner small{color:var(--muted);font-size:.75rem}.footer-inner p{margin:.5rem 0}.footer-inner nav{display:flex;gap:1.25rem;flex-wrap:wrap;font-size:.8rem}.footer-inner nav a{color:var(--muted)}.eyebrow,.meta{color:var(--muted);font-size:.8rem;line-height:1.65}.eyebrow{margin-bottom:.4rem}.button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;padding:.5rem 1.5rem;background:var(--btn);color:var(--btn-ink);text-decoration:none;font-size:.9rem;font-weight:700;border-radius:999px}.button:hover{text-decoration:underline}.pill{display:inline-flex;align-items:center;min-height:44px;padding:.5rem 1.25rem;background:var(--box);border:1px solid var(--line-strong);border-radius:999px;color:var(--ink);text-decoration:none;font-size:.875rem;font-weight:700}.pill:hover{border-color:var(--link);color:var(--link)}.tags{display:flex;gap:.5rem;flex-wrap:wrap;list-style:none;padding:0;margin:0}.tags a{display:inline-flex;align-items:center;min-height:28px;font-size:.8rem;line-height:1.4;padding:.2rem .8rem;background:var(--box);border:1px solid var(--line);border-radius:999px;color:var(--ink);text-decoration:none}.tags a:hover{border-color:var(--link)}.tags.plain{gap:.25rem .75rem;margin-top:.3rem}.tags.plain a{min-height:0;padding:0;border:0;background:none;border-radius:0;font-size:.75rem;color:var(--muted)}.tags.plain a:hover{color:var(--link);text-decoration:underline}.breadcrumb{width:min(1200px,100%);margin-inline:auto;padding:1.25rem 40px 0;font-size:.75rem;color:var(--muted);line-height:1.6}.breadcrumb ol{list-style:none;display:flex;flex-wrap:wrap;gap:.25rem .75rem;padding:0;margin:0}.breadcrumb li+li:before{content:"/";margin-right:.75rem;color:var(--muted)}.breadcrumb a{color:var(--muted)}.breadcrumb [aria-current]{overflow-wrap:anywhere}.empty-state{padding:2rem;background:var(--box);border:1px solid var(--line);border-radius:4px}.empty-state p+p{color:var(--muted);font-size:.9rem}.back-link{margin-top:2rem;font-size:.9rem}.top-band{background:var(--box);border-bottom:1px solid var(--line);padding:3rem 0 2.5rem}.top-band-inner{max-width:1200px}.top-band h1{font-size:2rem}.top-lead{font-size:1.1rem;font-weight:700;margin-top:.5rem}.top-text{margin-top:.75rem;max-width:40em;color:var(--muted);font-size:.95rem}.top-links{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.5rem}.section{padding:2.5rem 0 0}.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem;margin-bottom:1.25rem}.section-heading h2{font-size:1.5rem}.section-heading>a{font-size:.85rem}.post-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem 3.5rem}.post-card{display:flex;gap:1rem;align-items:flex-start}.post-emoji{flex:none;display:grid;place-items:center;width:92px;height:92px;background:var(--box);border-radius:14px;font-size:40px;line-height:1;text-decoration:none}.post-card-body{min-width:0}.post-thumb{flex:none;display:block;width:120px;aspect-ratio:1.91 / 1;border-radius:10px;overflow:hidden;background:var(--soft);align-self:flex-start}.post-thumb img{display:block;width:100%;height:100%;object-fit:contain}.post-card.featured{gap:1.5rem;align-items:center}.post-card.featured .post-thumb{width:320px;aspect-ratio:auto;border-radius:12px}.post-card.featured .post-thumb img{height:auto}.post-card.featured h3{font-size:1.3rem}.post-excerpt{margin-top:.4rem;color:var(--muted);font-size:.9rem;line-height:1.75}.post-list>li.is-featured{grid-column:1 / -1}.badges{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.35rem}.article-top .badges{justify-content:center;margin-bottom:.75rem}.badge{display:inline-flex;align-items:center;gap:.25rem;font-size:.75rem;font-weight:700;line-height:1.4;padding:.1rem .6rem;border-radius:999px;border:1px solid var(--line-strong);background:var(--soft);color:var(--ink)}.badge-private{color:var(--muted)}.kind-nav{margin-bottom:1.5rem}.kind-nav ul{display:flex;gap:.5rem;list-style:none;padding:0;margin:0}.kind-nav a{display:inline-flex;align-items:center;min-height:44px;padding:.25rem 1.25rem;border:1px solid var(--line-strong);border-radius:999px;background:var(--box);color:var(--ink);text-decoration:none;font-size:.875rem;font-weight:700}.kind-nav a[aria-current=page]{background:var(--btn);border-color:var(--btn);color:var(--btn-ink)}.post-card h3{font-size:1.0625rem;line-height:1.5}.post-card h3 a{color:var(--ink);text-decoration:none}.post-card h3 a:hover{color:var(--link);text-decoration:underline}.post-card .meta{margin-top:.25rem;font-size:.75rem;line-height:1.5}.page-heading{padding:2.5rem 0 1.75rem}.page-heading>p:last-child:not(.eyebrow){color:var(--muted);margin-top:.5rem;max-width:44em}.tag-filter{margin-bottom:2rem}.tag-filter summary{cursor:pointer;display:inline-flex;align-items:center;min-height:44px;padding:.25rem 1.25rem;border:1px solid var(--line-strong);border-radius:999px;background:var(--box);font-size:.875rem;font-weight:700}.tag-filter[open] summary{margin-bottom:.75rem}.works-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem}.work-card{min-width:0;background:var(--box);border:1px solid var(--line);border-radius:4px;padding:1.25rem}.work-card-copy{padding-top:1rem}.work-card h3{margin:.25rem 0 .5rem;font-size:1.1rem}.work-card h3 a{color:var(--ink);text-decoration:none}.work-card h3 a:hover{color:var(--link);text-decoration:underline}.work-card-copy>p:not(.meta){color:var(--muted);font-size:.875rem;line-height:1.8}.text-link{display:inline-flex;gap:.5rem;font-size:.9rem;margin-top:.75rem}.work-details{display:grid;gap:1.5rem}.work-detail{min-width:0;padding:1.75rem;background:var(--box);border:1px solid var(--line);border-radius:4px}.work-head{display:flex;align-items:center;gap:1rem}.work-icon{flex:none;width:64px;height:64px;border-radius:14px;border:1px solid var(--line)}.work-text{color:var(--muted);margin:1rem 0 1.25rem;max-width:48em;font-size:1.0625rem;line-height:2}.gallery{display:flex;gap:.75rem;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding-bottom:.75rem;margin-inline:-.25rem;padding-inline:.25rem}.gallery img{flex:none;height:420px;width:auto;max-width:none;border-radius:10px;border:1px solid var(--line);scroll-snap-align:start;background:var(--soft)}.work-links{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.25rem}.work-links .button{padding-inline:1.25rem}.cover-link{display:block}.work-cover{display:block;width:100%;height:200px;object-fit:cover;object-position:top;border-radius:4px;background:var(--soft)}.card-links{display:flex;flex-wrap:wrap;gap:.25rem 1rem;margin-top:.5rem;font-size:.85rem}.work-detail h2{margin-top:.1rem;font-size:1.4rem}@media(min-width:961px){.work-detail{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);column-gap:2.5rem;grid-template-rows:auto auto 1fr;align-items:start}.work-detail .work-head{grid-column:1;grid-row:1}.work-detail .work-text{grid-column:1;grid-row:2;margin:1rem 0 0}.work-detail .work-links{grid-column:1;grid-row:3;align-self:end}.work-detail .gallery{grid-column:2;grid-row:1 / span 3;margin-top:0}}.try-panel{padding:1.5rem 2rem;background:var(--box);border:1px solid var(--line);border-left:4px solid var(--btn);border-radius:4px;display:flex;align-items:center;justify-content:space-between;gap:2rem;margin-top:2rem}.try-panel h2{font-size:1.15rem;border:0;padding:0;margin:0}.try-panel p:not(.eyebrow){max-width:44em;font-size:.9rem;color:var(--muted);margin-top:.5rem}.try-links{flex-shrink:0;display:grid;gap:.75rem}.try-links a{font-size:.9rem}.try-links span{margin-left:.75rem}.page-box{max-width:800px;margin:2rem auto 0;padding:2.5rem 40px 3rem;background:var(--box);border-radius:4px;border-bottom:1px solid var(--line)}.page-box .page-heading{padding:0 0 .5rem}.not-found>p:not(.eyebrow){margin-top:1.25rem;color:var(--muted)}.not-found h1{margin-top:.25rem}.actions{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap;margin-top:2rem}.author-card{padding:1.25rem 1.5rem;background:var(--soft);border-radius:4px;margin:1.5rem 0}.prose .author-card h2{border:0;margin:.25rem 0;padding:0;font-size:1.3rem}.author-card .meta{margin:0}.author-card p:last-child{margin-bottom:0}.contact-card{padding:1.25rem 1.5rem;border:1px solid var(--line-strong);background:var(--soft);border-radius:4px;margin:2rem 0}.contact-card .meta{margin:0 0 .5rem}.email-link{font-size:clamp(1rem,4vw,1.4rem)}.prose{line-height:2;font-size:1.0625rem}.prose p{margin:1.7em 0}.prose h2{font-size:1.5rem;margin:2.3em 0 .7em;padding-bottom:.3em;border-bottom:1px solid var(--line-strong)}.prose h3{font-size:1.3rem;margin:2.25em 0 .7em}.prose h4{font-size:1rem;margin:1.8em 0 .5em}.prose>:first-child{margin-top:0}.prose h2,.prose h3,.prose h4{scroll-margin-top:1.5rem}.prose ul,.prose ol{padding-left:1.6em}.prose li{margin:.4em 0}.prose blockquote{margin:1.75rem 0;padding:.25rem 0 .25rem 1.2rem;border-left:4px solid var(--line-strong);color:var(--muted)}.prose blockquote p{margin:.5em 0}.prose pre{margin:1.5em 0;padding:1.1rem 1.25rem;overflow-x:auto;max-width:100%;font-size:.875rem;line-height:1.7;border-radius:4px;background:var(--code-bg);color:var(--code-ink)}.prose code{overflow-wrap:anywhere}.prose :not(pre)>code{background:var(--inline-code-bg);padding:.15em .4em;border-radius:4px;font-size:.85em}.prose pre code{overflow-wrap:normal}.astro-code,.astro-code span{color:var(--shiki-dark)!important;background-color:transparent!important}.astro-code{background-color:var(--code-bg)!important}.astro-code span[style*="--shiki-dark:#6A737D"]{--shiki-dark: #a0aab4 !important}.prose table{display:block;overflow-x:auto;width:100%;border-collapse:collapse;font-size:.9rem;margin:2rem 0}.prose th,.prose td{padding:.6rem .9rem;border:1px solid var(--line-strong);min-width:5em}.prose th{background:var(--soft)}.prose img{display:block;border-radius:4px;margin:1.5rem auto}.prose figcaption{color:var(--muted);font-size:.8rem;text-align:center}.fixed-prose{max-width:none;margin-top:1rem}.fixed-prose h2{font-size:1.4rem}.article-top{max-width:820px;margin:0 auto;padding:3.25rem 40px 2.25rem;text-align:center}.article-emoji{font-size:75px;line-height:1.15}.article-top h1{max-width:780px;margin:1rem auto 0;font-size:2.0625rem;line-height:1.5}.article-layout{width:min(1200px,100%);padding-inline:40px;margin-inline:auto;display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:30px;align-items:stretch}.article-main{min-width:0}.article-box{background:var(--box);border-radius:4px;border-bottom:1px solid var(--line);padding:2.5rem 40px;min-width:0}.article-body>.tags{margin-bottom:1rem}.article-description{color:var(--muted);font-size:.95rem;line-height:1.8;margin-bottom:1.5rem}.hero-image{display:block;width:calc(100% + 80px);max-width:none;height:auto;border-radius:4px 4px 0 0;margin:-2.5rem -40px 2rem;background:var(--soft)}.article-body{max-width:720px;margin-inline:auto}.byline{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.5rem;margin-top:1rem;color:var(--muted);font-size:.875rem;line-height:1.6}.byline-name{color:var(--ink);font-weight:700}.author-avatar.small{width:32px;height:32px;font-size:.95rem}.share{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--line)}.share .side-title{margin-bottom:.5rem}.share-buttons{display:flex;flex-wrap:wrap;gap:.6rem}.share-buttons .pill{cursor:pointer;font-family:inherit}.share-status{min-height:1.6em;margin-top:.4rem}.author-box-end{display:flex;gap:1rem;align-items:flex-start;margin-top:2rem;padding:1.25rem 1.5rem;background:var(--soft);border-radius:8px}.author-box-end .meta{margin:0}.related{margin-top:3rem}.related h2{font-size:1.25rem;margin-bottom:1.25rem}.related .post-list{grid-template-columns:1fr;gap:1.25rem}.toc-mobile{display:none}.article-side{display:flex;flex-direction:column;gap:1.5rem;min-width:0}.side-box{background:var(--box);border:1px solid var(--line);border-radius:4px;padding:1.25rem}.author-box{display:flex;gap:.9rem;align-items:flex-start}.author-avatar{flex:none;display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--btn);color:var(--btn-ink);font-size:1.5rem;font-weight:700;line-height:1}.author-name{font-weight:700;line-height:1.5}.author-bio{margin-top:.25rem!important;font-size:.85rem;line-height:1.7;color:var(--muted)}.author-bio a{margin-left:.5em}.toc{position:sticky;top:1.25rem;align-self:flex-start;width:100%;max-height:calc(100vh - 2.5rem);overflow-y:auto}.side-title,.toc-mobile summary{font-weight:700;font-size:1rem;line-height:1.5;margin-bottom:.75rem}.toc ol,.toc-mobile ol{list-style:none;padding:0;margin:0;position:relative}.toc ol:before,.toc-mobile ol:before{content:"";position:absolute;left:4px;top:.8rem;bottom:.8rem;width:2px;background:var(--line-strong)}.toc li,.toc-mobile li{position:relative;margin:0;padding:.2rem 0 .2rem 1.5rem;font-size:.875rem;line-height:1.6;font-weight:700}.toc li:before,.toc-mobile li:before{content:"";position:absolute;left:0;top:.85rem;width:10px;height:10px;border-radius:50%;background:var(--dot)}.toc li.subheading,.toc-mobile li.subheading{font-weight:400;font-size:.8125rem;padding-left:1.5rem}.toc li.subheading:before,.toc-mobile li.subheading:before{left:3px;top:.95rem;width:4px;height:4px;background:var(--dot-strong)}.toc a,.toc-mobile a{color:var(--muted);text-decoration:none}.toc a:hover,.toc-mobile a:hover{color:var(--link);text-decoration:underline}.post-navigation{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;border-top:1px solid var(--line);margin-top:3rem;padding-top:1.5rem}.post-navigation a{display:block;height:100%;padding:1rem 1.25rem;border:1px solid var(--line);border-radius:4px;color:var(--ink);text-decoration:none}.post-navigation a:hover{border-color:var(--link)}.post-navigation strong{display:block;font-size:.9rem;line-height:1.6;margin-top:.4rem}.ad-space{margin-top:3rem;padding-top:1rem;border-top:1px solid var(--line)}@media(max-width:960px){.container,.article-layout,.breadcrumb{padding-inline:24px}.works-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.try-panel{align-items:flex-start;flex-direction:column}.footer-inner{flex-direction:column;align-items:flex-start}}@media(max-width:800px){.hero-image{width:calc(100% + 40px);margin:-1.5rem -20px 1.5rem;border-radius:0}.prose,.work-text{font-size:1rem;line-height:1.95}.prose p{margin:1.5em 0}.gallery img{height:380px}.post-list>li.is-featured{grid-column:auto}.post-card.featured{flex-direction:column;align-items:stretch;gap:.75rem}.post-card.featured .post-thumb{width:100%;max-height:180px;display:flex;justify-content:center}.post-card.featured .post-thumb img{width:auto;max-width:100%;max-height:180px;object-fit:contain}.article-layout{display:flex;flex-direction:column;gap:1.25rem;padding-inline:0}.article-box{border-radius:0;padding:1.5rem 20px 2rem}.article-side,.article-side .toc{display:none}.toc-mobile{display:block;margin:0 0 1.5rem;padding:.75rem 1rem;background:var(--soft);border-radius:4px}.toc-mobile summary{margin-bottom:0;cursor:pointer;min-height:32px;display:list-item}.toc-mobile[open] summary{margin-bottom:.5rem}.article-top{padding:2rem 20px 1.5rem}.article-emoji{font-size:56px}.article-top{text-align:left}.article-top .badges,.byline{justify-content:flex-start}.article-top h1{font-size:1.5rem;margin-left:0}.post-list{grid-template-columns:1fr;gap:1.5rem}.post-navigation{grid-template-columns:1fr}}@media(max-width:640px){.container,.breadcrumb{padding-inline:20px}.header-inner{gap:0 .5rem;flex-wrap:wrap}.header-inner nav{flex-wrap:wrap}.article-emoji{margin-bottom:.5rem}.header-inner nav{column-gap:.7rem}.header-inner nav a{font-size:.8125rem}.nav-home{display:none!important}.top-links{flex-direction:column;align-items:stretch}.top-links>a{justify-content:center;width:100%}.brand{font-size:1rem;gap:.4rem}.brand-mark{width:24px;height:24px;font-size:.85rem}.top-band{padding:2rem 0 1.75rem}.top-band h1{font-size:1.6rem}.section{padding-top:2rem}.section-heading{align-items:flex-start;flex-direction:column;gap:.25rem;margin-bottom:1rem}.works-grid{grid-template-columns:1fr}.work-detail{padding:1.25rem}.work-icon{width:52px;height:52px;border-radius:12px}.gallery{margin-inline:-1.25rem;padding-inline:1.25rem;scroll-padding-inline:1.25rem}.gallery img{height:340px}.breadcrumb li.crumb-last:not(:nth-child(2)){display:none}.post-thumb{width:104px}.author-box-end{padding:1rem 1.1rem}.share-buttons .pill{padding-inline:1rem}.page-box{margin-top:1rem;padding:1.5rem 20px 2rem;border-radius:0;margin-inline:-20px}.page-heading{padding:1.75rem 0 1.25rem}.try-panel{padding:1.25rem}.author-card{padding:1rem 1.1rem}.prose h2{font-size:1.35rem}.prose h3{font-size:1.15rem}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
