@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}.back-to-top[data-astro-cid-vy5be4ad]{right:max(var(--sp-4), env(safe-area-inset-right));bottom:max(var(--sp-4), env(safe-area-inset-bottom));z-index:40;border:1px solid var(--c-line-strong);border-radius:var(--radius-pill);background:var(--c-surface-raised);width:48px;height:48px;color:var(--c-accent);box-shadow:var(--shadow-md);cursor:pointer;opacity:0;visibility:hidden;transition:opacity var(--dur-base) var(--ease-soft), transform var(--dur-base) var(--ease-soft), visibility 0s linear var(--dur-base), background-color var(--dur-fast) var(--ease-soft);place-items:center;padding:0;display:grid;position:fixed;transform:translateY(12px)}.back-to-top[data-astro-cid-vy5be4ad].is-shown{opacity:1;visibility:visible;transition-delay:0s;transform:none}.back-to-top[data-astro-cid-vy5be4ad]:hover{background:var(--c-accent-wash)}.back-to-top[data-astro-cid-vy5be4ad] svg{transition:transform var(--dur-base) var(--ease-soft)}.back-to-top[data-astro-cid-vy5be4ad]:hover svg{transform:translateY(-3px)rotate(-10deg)}.back-to-top[data-astro-cid-vy5be4ad]:active{transform:scale(.92)}:root{--c-bg:#faf8f5;--c-surface:#f2eee9;--c-surface-raised:#fffdfb;--c-text:#2e2a27;--c-text-sub:#5e564f;--c-text-faint:#716963;--c-heading:#26221f;--c-line:#e3dcd4;--c-line-strong:#93877a;--c-accent:#2a6058;--c-accent-hover:#1f4f49;--c-accent-wash:#e6f0ee;--c-on-accent:#fff;--c-accent2:#7e4548;--c-accent2-wash:#f6eaea;--c-focus:#2a6058;--c-shadow:60 45 30;--c-selection:#d6e6e2;--font-heading:var(--font-zen-maru,"Hiragino Maru Gothic ProN", "Yu Gothic", sans-serif);--font-body:var(--font-biz-udp,"Hiragino Sans", "Yu Gothic UI", Meiryo, sans-serif);--font-logo:var(--font-jost,"Avenir Next", "Helvetica Neue", "Segoe UI", sans-serif);--font-code:ui-monospace, "SFMono-Regular", Menlo, Consolas, "BIZ UDGothic", monospace;--fs-xs:.8125rem;--fs-sm:.875rem;--fs-body:1.0625rem;--fs-lead:1.125rem;--fs-h4:1.0625rem;--fs-h3:1.1875rem;--fs-h2:clamp(1.3125rem, 1.15rem + .7vw, 1.5625rem);--fs-h1:clamp(1.5625rem, 1.25rem + 1.5vw, 2.125rem);--fs-display:clamp(2.25rem, 1.6rem + 3.2vw, 3.5rem);--fs-subtitle-en:.75rem;--lh-body:1.85;--lh-heading:1.5;--lh-tight:1.4;--ls-body:.02em;--ls-heading:normal;--ls-logo:.32em;--fw-logo:300;--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.5rem;--sp-6:2rem;--sp-7:2.5rem;--sp-8:3rem;--sp-9:4rem;--sp-10:6rem;--measure:40.5rem;--toc-width:15rem;--container:75rem;--gutter:clamp(1.25rem, 4vw, 2.5rem);--tap:44px;--radius-sm:6px;--radius-md:12px;--radius-lg:20px;--radius-pill:999px;--shadow-sm:0 1px 2px rgb(var(--c-shadow) / .05), 0 1px 1px rgb(var(--c-shadow) / .03);--shadow-md:0 4px 16px rgb(var(--c-shadow) / .07), 0 1px 3px rgb(var(--c-shadow) / .05);--dur-press:.12s;--dur-fast:.2s;--dur-base:.3s;--dur-slow:.5s;--dur-slower:.6s;--ease-soft:cubic-bezier(.22, 1, .36, 1);--ease-inout:cubic-bezier(.65, 0, .35, 1);--reveal-distance:12px}:root[data-theme=dark]{--c-bg:#211f1d;--c-surface:#2a2725;--c-surface-raised:#282523;--c-text:#e9e4de;--c-text-sub:#b3aba3;--c-text-faint:#9a928a;--c-heading:#f2eee9;--c-line:#3a3633;--c-line-strong:#7a736b;--c-accent:#8fc9be;--c-accent-hover:#b5ddd5;--c-accent-wash:#243330;--c-on-accent:#1b2b28;--c-accent2:#e0a8a6;--c-accent2-wash:#3a2a2a;--c-focus:#8fc9be;--c-shadow:0 0 0;--c-selection:#35524c}.prose{max-width:var(--measure);font-size:var(--fs-body);line-height:var(--lh-body)}.prose>*+*{margin-top:var(--sp-5)}.prose h2{margin-top:var(--sp-9);padding-top:var(--sp-6);border-top:1px solid var(--c-line);font-size:var(--fs-h2)}.prose h3{margin-top:var(--sp-7);padding-left:var(--sp-3);border-left:3px solid var(--c-accent);font-size:var(--fs-h3)}.prose :is(h4,h5,h6){margin-top:var(--sp-6);font-size:var(--fs-h4)}.prose :is(h2,h3,h4,h5,h6)+*{margin-top:var(--sp-3)}.prose :is(h2,h3,h4){scroll-margin-top:var(--sp-6)}.prose :is(ul,ol){padding-left:1.5em}.prose li+li,.prose li>:is(ul,ol){margin-top:var(--sp-2)}.prose li::marker{color:var(--c-text-sub)}.prose strong{background:linear-gradient(transparent 62%, var(--c-accent-wash) 62%);font-weight:700}.prose blockquote{padding:var(--sp-4) var(--sp-5);border-left:3px solid var(--c-line-strong);border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--c-surface);color:var(--c-text);margin-inline:0}.prose blockquote>*+*{margin-top:var(--sp-3)}.prose cite{color:var(--c-text-sub);font-size:var(--fs-sm);font-style:normal}.prose hr{margin-block:var(--sp-8);text-align:center;border:0;height:auto;overflow:visible}.prose hr:before{content:"・・・";color:var(--c-text-sub);letter-spacing:.6em}.prose img{border-radius:var(--radius-md)}.prose figure{margin-inline:0}.prose figcaption{margin-top:var(--sp-2);color:var(--c-text-sub);font-size:var(--fs-sm);text-align:center}.prose table{border-collapse:collapse;width:max-content;max-width:100%;font-size:var(--fs-sm);line-height:1.7;display:block;overflow-x:auto}.prose :is(th,td){padding:var(--sp-2) var(--sp-4);border-bottom:1px solid var(--c-line);text-align:left}.prose td:first-child{white-space:nowrap}.prose th{border-bottom:2px solid var(--c-line-strong);white-space:nowrap;font-weight:700}.prose :not(pre)>code{border-radius:var(--radius-sm);background:var(--c-surface);font-family:var(--font-code);letter-spacing:0;overflow-wrap:anywhere;padding:.1em .4em;font-size:.9em}.prose kbd{border:1px solid var(--c-line-strong);border-radius:var(--radius-sm);background:var(--c-surface-raised);min-width:1.8em;font-family:var(--font-code);text-align:center;transition:transform var(--dur-press) var(--ease-soft), border-bottom-width var(--dur-press) var(--ease-soft);border-bottom-width:3px;padding:.05em .45em;font-size:.85em;line-height:1.5;display:inline-block}.prose kbd:active{border-bottom-width:1px;transform:translateY(2px)}.prose .footnotes{margin-top:var(--sp-9);padding-top:var(--sp-5);border-top:1px solid var(--c-line);color:var(--c-text-sub);font-size:var(--fs-sm)}.prose .code-block{border:1px solid var(--c-line);border-radius:var(--radius-md);background:var(--c-surface);overflow:hidden}.code-block__head{justify-content:space-between;align-items:center;gap:var(--sp-2);padding-left:var(--sp-4);border-bottom:1px solid var(--c-line);font-size:var(--fs-xs);color:var(--c-text-sub);letter-spacing:.04em;display:flex}.code-block__copy{align-items:center;gap:var(--sp-1);min-width:var(--tap);min-height:var(--tap);padding:0 var(--sp-4);color:var(--c-text-sub);font-size:var(--fs-xs);cursor:pointer;transition:color var(--dur-fast) var(--ease-soft), background-color var(--dur-fast) var(--ease-soft), transform var(--dur-press) var(--ease-soft);background:0 0;border:0;display:none}.js .code-block__copy{display:inline-flex}.code-block__copy:hover{background:var(--c-accent-wash);color:var(--c-accent)}.code-block__copy:active{transform:scale(.94)}.code-block__copy svg{width:16px;height:16px}.code-block__icon-check,.code-block__copy[data-state=done] .code-block__icon-copy{display:none}.code-block__copy[data-state=done] .code-block__icon-check{display:block}.code-block__copy[data-state=done]{color:var(--c-accent)}.code-block__copy[data-state=done] svg{animation:pop var(--dur-base) var(--ease-soft)}.code-block__copy[data-state=error]{color:var(--c-accent2)}@keyframes pop{0%{opacity:0;transform:scale(.4)}}.prose pre.astro-code{padding:var(--sp-4) var(--sp-5);font-family:var(--font-code);letter-spacing:0;tab-size:2;margin:0;font-size:.875rem;line-height:1.7;overflow-x:auto;background-color:var(--c-surface)!important}.prose pre.astro-code code{font-family:inherit}:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important}.callout{padding:var(--sp-4) var(--sp-5);border-radius:0 var(--radius-md) var(--radius-md) 0;border-left:4px solid}.callout__label{align-items:center;gap:var(--sp-2);font-family:var(--font-heading);font-size:var(--fs-sm);margin:0;font-weight:700;display:flex}.callout__body{margin-top:var(--sp-2)}.callout__body>*+*{margin-top:var(--sp-3)}.callout--note{border-color:var(--c-accent);background:var(--c-accent-wash)}.callout--note .callout__label{color:var(--c-accent)}.callout--tip{border-color:var(--c-line-strong);background:var(--c-surface)}.callout--tip .callout__label{color:var(--c-heading)}.callout--warning{border-color:var(--c-accent2);background:var(--c-accent2-wash)}.callout--warning .callout__label{color:var(--c-accent2)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;color-scheme:light;scroll-padding-top:var(--sp-6)}:root[data-theme=dark]{color-scheme:dark}body{background-color:var(--c-bg);min-height:100vh;color:var(--c-text);font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);letter-spacing:var(--ls-body);line-break:strict;overflow-wrap:anywhere;word-break:normal;font-kerning:normal;-webkit-font-smoothing:antialiased;transition:background-color var(--dur-base) var(--ease-soft), color var(--dur-base) var(--ease-soft);flex-direction:column;margin:0;display:flex}main{flex:1}img,svg,video{max-width:100%;height:auto;display:block}::selection{background-color:var(--c-selection);color:var(--c-heading)}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:700;line-height:var(--lh-heading);letter-spacing:var(--ls-heading);color:var(--c-heading);text-wrap:balance;margin:0}p{margin:0}a{color:var(--c-accent);text-underline-offset:.25em;transition:color var(--dur-fast) var(--ease-soft), text-decoration-color var(--dur-fast) var(--ease-soft);text-decoration-line:underline;text-decoration-thickness:1px}a:hover{color:var(--c-accent-hover);text-decoration-thickness:2px}:focus-visible{outline:3px solid var(--c-focus);outline-offset:3px;border-radius:var(--radius-sm)}:focus:not(:focus-visible){outline:none}button{font:inherit;letter-spacing:inherit;color:inherit}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip-link{top:var(--sp-3);left:var(--sp-3);z-index:100;padding:var(--sp-2) var(--sp-4);background:var(--c-accent);color:var(--c-on-accent);border-radius:var(--radius-pill);transition:transform var(--dur-base) var(--ease-soft);text-decoration:none;position:fixed;transform:translateY(-200%)}.skip-link:focus-visible{color:var(--c-on-accent);transform:translateY(0)}.container{width:100%;max-width:calc(var(--container) + var(--gutter) * 2);padding-inline:var(--gutter);margin-inline:auto}.container--narrow{max-width:calc(var(--measure) + var(--gutter) * 2)}.section-title{align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-5);font-size:var(--fs-h3);display:flex}.section-title svg{color:var(--c-accent)}.section-title:after{content:"";height:1px;margin-left:var(--sp-3);background:var(--c-line);flex:1}.pill-link{align-items:center;gap:var(--sp-2);min-height:var(--tap);padding:var(--sp-2) var(--sp-5);border:1px solid var(--c-line-strong);border-radius:var(--radius-pill);background:var(--c-surface-raised);color:var(--c-accent);font-size:var(--fs-sm);transition:background-color var(--dur-fast) var(--ease-soft), transform var(--dur-press) var(--ease-soft);font-weight:700;text-decoration:none;display:inline-flex}.pill-link svg{transition:transform var(--dur-base) var(--ease-soft)}.pill-link:hover{background:var(--c-accent-wash);color:var(--c-accent-hover)}.pill-link:hover svg{transform:translate(3px)}.pill-link:active{transform:scale(.96)}.js [data-reveal]:not(.is-visible){opacity:0}.js [data-reveal].is-visible{animation:reveal var(--dur-slow) var(--ease-soft) backwards;animation-delay:calc(min(var(--i,0), 5) * 60ms)}@keyframes reveal{0%{opacity:0;transform:translateY(var(--reveal-distance))}}@keyframes vt-fade-out{to{opacity:0}}@keyframes vt-fade-in-up{0%{opacity:0;transform:translateY(8px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}.js [data-reveal]:not(.is-visible){opacity:1}}.coffee[data-astro-cid-qa5puzsr]{color:var(--c-text-sub)}.coffee__steam[data-astro-cid-qa5puzsr]{opacity:0;animation:steam 6s var(--ease-inout) infinite}.coffee__steam[data-astro-cid-qa5puzsr]:nth-child(2){animation-delay:2s}.coffee__steam[data-astro-cid-qa5puzsr]:nth-child(3){animation-delay:4s}@keyframes steam{0%{opacity:0;transform:translateY(4px)}35%{opacity:.5}70%,to{opacity:0;transform:translateY(-5px)}}@media (prefers-reduced-motion:reduce){.coffee__steam[data-astro-cid-qa5puzsr]{opacity:.4;animation:none}}.site-footer[data-astro-cid-jo6i4kqk]{margin-top:var(--sp-10);border-top:1px solid var(--c-line);background:var(--c-surface)}.site-footer__inner[data-astro-cid-jo6i4kqk]{gap:var(--sp-5);padding-block:var(--sp-8) var(--sp-9);display:grid}.site-footer__brand[data-astro-cid-jo6i4kqk]{align-items:center;gap:var(--sp-3);display:flex}.site-footer__title[data-astro-cid-jo6i4kqk]{color:var(--c-heading);font-family:var(--font-logo);font-size:1.125rem;font-weight:var(--fw-logo);letter-spacing:var(--ls-logo);line-height:1.4}.site-footer__sub-en[data-astro-cid-jo6i4kqk]{color:var(--c-text-sub);font-family:var(--font-logo);font-size:var(--fs-subtitle-en);letter-spacing:.14em;line-height:1.5}.site-footer__sub-ja[data-astro-cid-jo6i4kqk]{color:var(--c-text-faint);font-size:var(--fs-xs);line-height:1.6}.site-footer__motto[data-astro-cid-jo6i4kqk]{margin-top:var(--sp-2);color:var(--c-text-faint);font-family:var(--font-logo);font-size:var(--fs-xs);letter-spacing:.06em;line-height:1.6}.site-footer__links[data-astro-cid-jo6i4kqk]{margin:0 calc(var(--sp-3) * -1);flex-wrap:wrap;padding:0;list-style:none;display:flex}.site-footer__links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{align-items:center;gap:var(--sp-1);min-height:var(--tap);padding-inline:var(--sp-3);font-size:var(--fs-sm);display:inline-flex}.site-footer__copy[data-astro-cid-jo6i4kqk]{color:var(--c-text-sub);font-size:var(--fs-sm)}@media (width>=720px){.site-footer__inner[data-astro-cid-jo6i4kqk]{grid-template-columns:1fr auto;align-items:center}.site-footer__copy[data-astro-cid-jo6i4kqk]{grid-column:1/-1}}.nav-link[data-astro-cid-evkijfd6]{align-items:center;gap:var(--sp-1);min-height:var(--tap);padding-inline:var(--sp-3);color:var(--c-text);font-size:var(--fs-sm);white-space:nowrap;font-weight:700;text-decoration:none;display:inline-flex;position:relative}.nav-link[data-astro-cid-evkijfd6]:hover{color:var(--c-accent)}.nav-link[data-astro-cid-evkijfd6]:after{content:"";left:var(--sp-3);right:var(--sp-3);transform-origin:0;height:2px;transition:transform var(--dur-base) var(--ease-soft);background:currentColor;border-radius:2px;position:absolute;bottom:8px;transform:scaleX(0)}.nav-link[data-astro-cid-evkijfd6]:hover:after,.nav-link[data-astro-cid-evkijfd6][aria-current=page]:after{transform:scaleX(1)}.nav-link[data-astro-cid-evkijfd6][aria-current=page]{color:var(--c-accent)}.theme-toggle[data-astro-cid-l6lhmie6]{width:var(--tap);height:var(--tap);border:1px solid var(--c-line);border-radius:var(--radius-pill);background:var(--c-surface-raised);color:var(--c-text);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-soft), border-color var(--dur-fast) var(--ease-soft), transform var(--dur-press) var(--ease-soft);place-items:center;padding:0;display:none}.js .theme-toggle[data-astro-cid-l6lhmie6]{display:grid}.theme-toggle[data-astro-cid-l6lhmie6]:hover{border-color:var(--c-line-strong);background:var(--c-accent-wash);color:var(--c-accent)}.theme-toggle[data-astro-cid-l6lhmie6]:active{transform:scale(.92)}.theme-toggle__icons[data-astro-cid-l6lhmie6]{display:grid}.theme-toggle__icons[data-astro-cid-l6lhmie6] svg{transition:transform var(--dur-slow) var(--ease-soft), opacity var(--dur-base) var(--ease-soft);grid-area:1/1}.theme-toggle__sun{opacity:0;transform:rotate(-90deg)scale(.6)}[data-theme=dark] .theme-toggle__moon{opacity:0;transform:rotate(90deg)scale(.6)}[data-theme=dark] .theme-toggle__sun{opacity:1;transform:none}.site-header[data-astro-cid-nen7h5rs]{border-bottom:1px solid var(--c-line);background:var(--c-surface-raised)}.site-header__inner[data-astro-cid-nen7h5rs]{align-items:center;column-gap:var(--sp-2);padding-block:var(--sp-2);grid-template-columns:1fr auto;grid-template-areas:"logo toggle""nav nav";display:grid}.logo[data-astro-cid-nen7h5rs]{min-height:var(--tap);padding-block:var(--sp-1);color:var(--c-heading);flex-direction:column;grid-area:logo;justify-content:center;justify-self:start;text-decoration:none;display:inline-flex}.logo[data-astro-cid-nen7h5rs]:hover{color:var(--c-heading)}.logo__name[data-astro-cid-nen7h5rs]{font-family:var(--font-logo);font-size:1.375rem;font-weight:var(--fw-logo);letter-spacing:var(--ls-logo);margin-right:calc(var(--ls-logo) * -1);line-height:1.2}.logo__sub[data-astro-cid-nen7h5rs]{color:var(--c-text-sub);font-family:var(--font-logo);font-size:var(--fs-subtitle-en);letter-spacing:.14em;transition:color var(--dur-fast) var(--ease-soft);margin-top:2px;line-height:1.3}.logo[data-astro-cid-nen7h5rs]:hover .logo__sub[data-astro-cid-nen7h5rs]{color:var(--c-accent)}.theme-toggle{grid-area:toggle}.site-nav[data-astro-cid-nen7h5rs]{margin-inline:calc(var(--sp-3) * -1);scrollbar-width:none;grid-area:nav;overflow-x:auto}.site-nav[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs]{margin:0;padding:0;list-style:none;display:flex}@media (width>=720px){.site-header__inner[data-astro-cid-nen7h5rs]{column-gap:var(--sp-5);padding-block:var(--sp-3);grid-template-columns:auto 1fr auto;grid-template-areas:"logo nav toggle"}.site-nav[data-astro-cid-nen7h5rs]{justify-self:end;margin-inline:0}}main[data-astro-cid-z4jru4n3]:focus{outline:none}
