@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.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}:root{--page-width:min(842px, max(640px, calc(61.5vw + 42px)));--bg:#fcfcfc;--text:#646464;--strong:#202020;--line:#e8e8e8;--soft:#f0f0f0;--soft-hover:#e8e8e8;--switch-off:#919191;--switch-knob:#fff;--font:"Inter Variable", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", "Yu Gothic", Meiryo, system-ui, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;color-scheme:light}:root[data-theme=dark]{--bg:#111;--text:#b4b4b4;--strong:#eee;--line:#2e2e2e;--soft:#222;--soft-hover:#2a2a2a;--switch-off:#666;--switch-knob:#eee;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme]){--bg:#111;--text:#b4b4b4;--strong:#eee;--line:#2e2e2e;--soft:#222;--soft-hover:#2a2a2a;--switch-off:#666;--switch-knob:#eee;color-scheme:dark}}*,:before,:after{box-sizing:border-box}h1,h2,h3,p,ul,ol,figure,blockquote{margin:0;padding:0}ul{list-style:none}h1,h2,h3{font:inherit}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}:focus-visible{outline:2px solid var(--strong);outline-offset:2px;border-radius:4px}body{background:var(--bg);color:var(--text);font-family:var(--font);font-synthesis:none;-webkit-font-smoothing:antialiased;line-break:strict;margin:0;font-size:16px;line-height:1.75}p,.row-title{text-wrap:pretty}.row-title,.post-title,.kv-title,.intro p,.kv-description,.post-head p,.footer-note{word-break:auto-phrase}.prose p,.prose li{text-align:justify;text-wrap:wrap}.intro p,.post-head p,.footer-note{text-align:justify;text-wrap:wrap;word-break:normal}@media (width>=1301px){.intro p,.post-head p,.footer-note{word-break:auto-phrase}}:lang(en) .intro p,:lang(en) .footer-note{text-align:left;text-wrap:pretty}.icon{flex:none;display:block}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.page{min-height:100dvh;max-width:var(--page-width);flex-direction:column;margin:0 auto;padding:84px 21px 28px;display:flex}.page-main{flex:1}.site-header{justify-content:space-between;align-items:center;gap:14px;margin-bottom:28px;display:flex}.site-header:has(.avatar){margin-bottom:0}.site-header-left{flex:1;min-width:0}.site-tools{flex:none;align-items:center;gap:6px;display:flex}.theme-toggle{gap:2px;display:flex}.tool-button{border-radius:7px;place-items:center;width:28px;height:28px;transition:background-color .15s,color .15s;display:grid}.tool-button:hover,.tool-button[aria-pressed=true]{background:var(--soft);color:var(--strong)}.lang-switch{align-items:center;gap:3px;margin-left:4px;font-size:14px;line-height:1;display:flex}.lang-switch [aria-current=true]{color:var(--strong);font-weight:500}.lang-switch a:hover{color:var(--strong)}.breadcrumb{align-items:center;gap:4px;min-width:0;font-size:14px;line-height:28px;display:flex}.breadcrumb a:hover{color:var(--strong)}.breadcrumb>span{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.avatar{border-radius:9px;width:36px;height:36px;display:block}.profile-name{color:var(--strong);margin-top:14px;font-weight:500}.intro{flex-direction:column;gap:14px;display:flex}.section{margin-top:72px}.section-head{align-items:center;gap:6px;margin-bottom:14px;display:inline-flex}a.section-head:hover{color:var(--strong)}.row-list{flex-direction:column;gap:14px;display:flex}.row{grid-template-columns:20px minmax(0,1fr) auto;align-items:start;column-gap:10px;display:grid}.posts-note{margin-bottom:14px;font-size:13px}.writing-head{justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px;display:flex}.writing-head .section-head{margin-bottom:0}.switch{cursor:pointer;flex:none;align-items:center;gap:10px;padding-block:5px;font-size:14px;line-height:22px;display:inline-flex}.switch-track{background:var(--switch-off);border-radius:11px;flex:none;width:36px;height:22px;transition:background-color .2s;position:relative}.switch-track:after{content:"";background:var(--switch-knob);border-radius:50%;width:18px;height:18px;transition:transform .2s,background-color .2s;position:absolute;top:2px;left:2px}.switch input:checked+.switch-track{background:var(--strong)}.switch input:checked+.switch-track:after{background:var(--bg);transform:translate(14px)}.switch input:focus-visible+.switch-track{outline:2px solid var(--strong);outline-offset:2px}.writing [data-extra]{display:none}.writing:has(#writing-all:checked) [data-extra]{display:revert}.row-favicon{outline:1px solid var(--line);outline-offset:-1px;border-radius:5px;width:20px;height:20px;margin-top:4px;display:block}.row:hover .row-title{text-underline-offset:3px;text-decoration:underline}.row-title{color:var(--strong);font-weight:500}.row-arrow{vertical-align:-1px;opacity:0;margin-left:4px;transition:opacity .15s,transform .15s;display:inline-block;transform:translate(-4px)}.row:hover .row-arrow,.row:focus-visible .row-arrow{opacity:1;transform:none}.row-date{font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:14px;font-size:14px;line-height:28px}.more-link{align-items:center;gap:4px;margin-top:18px;font-size:14px;display:inline-flex}.more-link .external-arrow{margin-left:0}.more-link:hover{color:var(--strong)}.empty{padding:14px 0}.footer{margin-top:72px;font-size:14px}.footer-top{justify-content:space-between;align-items:center;gap:14px;display:flex}.footer-note{margin-top:4px}.footer-link{border-radius:5px;flex:none;align-items:center;gap:5px;height:24px;margin-right:-6px;padding:0 6px;transition:background-color .15s,color .15s;display:flex}.footer-link:hover{background:var(--soft);color:var(--strong)}.kv{gap:28px;display:flex}.kv+.kv{margin-top:21px}.kv-key{white-space:nowrap;color:var(--strong);flex:0 0 100px;font-weight:500}.kv-value{flex:1;min-width:0}.kv-title{color:var(--strong);font-weight:500}.kv--career{gap:16px}.kv--career .kv-key{flex-basis:72px;font-size:12px;line-height:28px}.kv--career+.kv--career{margin-top:32px}.kv--career-compact+.kv--career-compact{margin-top:4px}.kv--career-divider{border-bottom:1px solid var(--line);padding-bottom:32px}.career{grid-template-columns:36px minmax(0,1fr);column-gap:10px;display:grid}.career-body{grid-column:2;min-width:0}.career>.career-app{align-self:start}.career-thumb{outline:1px solid var(--line);outline-offset:-1px;border-radius:8px;width:36px;height:36px;margin-top:4px;display:block}.book-cover{outline:1px solid var(--line);outline-offset:-1px;border-radius:3px;width:36px;height:51px;margin-top:4px;display:block}.kv-description{font-size:13px}.career-apps{flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:10px;display:flex}.career-app-list{flex-wrap:wrap;gap:8px;display:flex}.career-app{border-radius:7px;display:block;position:relative}.career-app-icon{outline:1px solid var(--line);outline-offset:-1px;border-radius:7px;width:32px;height:32px;display:block}.career-app-tip{background:var(--strong);color:var(--bg);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s ease, display .15s allow-discrete;border-radius:5px;padding:2px 8px;font-size:12px;line-height:1.5;display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.career-app:hover .career-app-tip,.career-app:focus-visible .career-app-tip{opacity:1;display:block;@starting-style{opacity:0}}.career-app-list li:last-child .career-app-tip{left:auto;right:0;transform:none}.career-more{font-size:13px}.career-more .external-arrow{width:12px;height:12px}.career-more:hover{color:var(--strong);text-underline-offset:3px;text-decoration:underline}.kv-title a:hover{text-underline-offset:3px;text-decoration:underline}.external-arrow{vertical-align:-1px;color:var(--text);margin-left:2px;display:inline-block}.kv-description a{color:var(--strong);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px;text-decoration-thickness:1px;transition:text-decoration-color .15s}.kv-description a:hover{text-decoration-color:currentColor}.post-head{flex-direction:column;gap:6px;display:flex}.post-title{color:var(--strong);font-size:18px;font-weight:600;line-height:1.5}.post-meta{font-variant-numeric:tabular-nums;font-size:14px}.post-cover{border:1px solid var(--line);border-radius:8px;width:100%;height:auto;margin-top:28px;display:block}.prose{overflow-wrap:anywhere;margin-top:28px;font-size:17px;line-height:2}.prose>*+*{margin-top:1.25em}.prose h2,.prose h3{color:var(--strong);scroll-margin-top:28px}.prose h2{margin-top:3em;font-weight:600}.prose h3{margin-top:2.25em;font-weight:500}.prose a{color:var(--strong);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px;text-decoration-thickness:1px;transition:text-decoration-color .15s}.prose a:hover{text-decoration-color:currentColor}.prose strong{color:var(--strong);font-weight:600}.prose ul,.prose ol{padding-left:1.5em}.prose ul{list-style:outside}.prose ol{list-style:decimal}.prose li+li{margin-top:.35em}.prose blockquote{border-left:2px solid var(--line);padding-left:14px}.prose img{border:1px solid var(--line);border-radius:8px;max-width:100%;height:auto;display:block}.prose hr{border:0;border-top:1px solid var(--line);margin:2.5em 0}.prose code{background:var(--soft);font-family:var(--mono);border-radius:4px;padding:.1em .35em;font-size:.875em}.prose pre{border-radius:8px;padding:14px 16px;font-size:15px;line-height:1.7;overflow-x:auto}.prose pre.astro-code{background-color:var(--soft)!important}.prose pre code{font-size:inherit;background:0 0;padding:0}:root[data-theme=dark] .prose pre.astro-code span{color:var(--shiki-dark)!important}.prose table{border-collapse:collapse;width:100%;font-size:16px}.prose th,.prose td{border-bottom:1px solid var(--line);text-align:left;padding:8px 10px 8px 0}.prose th{color:var(--strong);font-weight:500}.post-next{border-top:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:21px;margin-top:56px;padding-top:21px;display:flex}.post-next-label{flex:none;font-size:14px}.post-next-title{color:var(--strong);text-align:right;font-weight:500}.post-next:hover .post-next-title{text-underline-offset:3px;text-decoration:underline}.toc{display:none}@media (width>=1024px){.toc{width:calc((100vw - var(--page-width)) / 2 - 16px);max-width:200px;display:block;position:fixed;top:126px;left:16px}.toc a{align-items:center;gap:8px;height:24px;font-size:14px;display:flex}.toc-dash{background:var(--line);flex:none;width:8px;height:1.5px;transition:width .15s,background-color .15s}.toc-label{white-space:nowrap;text-overflow:ellipsis;opacity:0;min-width:0;transition:opacity .15s;overflow:hidden}.toc:hover .toc-label,.toc:focus-within .toc-label{opacity:1}.toc a:hover,.toc a[aria-current=true]{color:var(--strong)}.toc a:hover .toc-dash,.toc a[aria-current=true] .toc-dash{background:var(--strong);width:12px}}.not-found{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:6px;min-height:56vh;display:flex}.not-found-code{font-variant-numeric:tabular-nums;font-size:14px}.not-found-title{color:var(--strong);font-size:18px;font-weight:600}.not-found-link{color:var(--strong);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px;margin-top:14px}.not-found-link:hover{text-decoration-color:currentColor}@media (width<=480px){.page{padding:56px 20px 24px}.breadcrumb{overflow:hidden}.row{grid-template-columns:20px minmax(0,1fr)}.row-date{grid-column:2;padding-left:0}.kv{flex-direction:column;gap:2px}.kv-key,.kv--career .kv-key{flex-basis:auto}.kv--career{gap:2px}}@media (prefers-reduced-motion:reduce){*,:before{transition:none!important}}
