:root{--ref-color-neutral-0: #ffffff;--ref-color-neutral-100: #f4f7fa;--ref-color-neutral-200: #e6ebf0;--ref-color-neutral-300: #cbd3dc;--ref-color-neutral-400: #8794a3;--ref-color-neutral-500: #667384;--ref-color-neutral-600: #5a6675;--ref-color-neutral-900: #16202b;--ref-color-neutral-950: #0c131b;--ref-color-blue-50: #f5f8ff;--ref-color-blue-100: #e7eefa;--ref-color-blue-200: #cfdbf5;--ref-color-blue-300: #5ca9ff;--ref-color-blue-600: #2957d0;--ref-color-blue-700: #1d42a0;--ref-color-blue-800: #173681;--ref-color-yellow-100: #fff2a8;--color-background-canvas: var(--ref-color-neutral-0);--color-background-subtle: var(--ref-color-neutral-100);--color-background-subtle-hovered: var(--ref-color-neutral-200);--color-background-inverse: var(--ref-color-neutral-950);--color-background-accent: var(--ref-color-blue-600);--color-background-accent-subtle: var(--ref-color-blue-100);--color-background-accent-subtle-hovered: var(--ref-color-blue-200);--color-background-info-subtle: var(--ref-color-blue-50);--color-text-default: var(--ref-color-neutral-900);--color-text-subtle: var(--ref-color-neutral-600);--color-text-inverse: var(--ref-color-neutral-0);--color-text-accent: var(--ref-color-blue-700);--color-text-link: var(--ref-color-blue-600);--color-text-link-hovered: var(--ref-color-blue-700);--color-text-link-visited: var(--ref-color-blue-800);--color-border-subtle: var(--ref-color-neutral-200);--color-border-default: var(--ref-color-neutral-300);--color-border-interactive: var(--ref-color-neutral-400);--color-border-accent: var(--ref-color-blue-600);--color-border-accent-hovered: color-mix( in srgb, var(--ref-color-blue-600) 25%, var(--ref-color-neutral-200) );--color-border-focus: var(--ref-color-blue-600);--color-selection-background: var(--ref-color-blue-200);--color-selection-text: var(--ref-color-neutral-900);--color-logo-mark: var(--color-border-accent);--color-category-background: var(--color-background-accent-subtle);--color-category-background-hovered: var( --color-background-accent-subtle-hovered );--color-category-text: var(--color-text-accent);--color-disclosure-background: var(--color-background-subtle);--color-disclosure-text: var(--color-text-subtle);--color-quote-background: var(--color-background-info-subtle);--color-quote-border: var(--color-border-accent);--color-code-background: var(--ref-color-neutral-950);--color-code-text: var(--ref-color-neutral-100);--color-mark-background: var(--ref-color-yellow-100);--color-footer-background: var(--color-background-inverse);--color-footer-text: var(--ref-color-neutral-100);--color-footer-text-muted: var(--ref-color-neutral-400);--color-footer-logo-mark: var(--ref-color-blue-300);--color-footer-border: color-mix( in srgb, var(--ref-color-neutral-400) 25%, var(--ref-color-neutral-950) );--color-footer-separator: color-mix( in srgb, var(--ref-color-neutral-400) 40%, var(--ref-color-neutral-950) );--shadow-1: 0 1px 2px rgb(13 27 46 / .05), 0 4px 16px rgb(13 27 46 / .05);--shadow-2: 0 2px 4px rgb(13 27 46 / .06), 0 12px 32px rgb(13 27 46 / .1);--font-body: "Inter", "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;--font-display: var(--font-body);--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--container: 72rem;--pad-inline: clamp(1rem, 4vw, 2rem);--radius-s: 8px;--radius-m: 16px;--radius-l: 20px;--ease: cubic-bezier(.2, 0, 0, 1);--dur-fast: .14s;--dur-mid: .24s;color-scheme:light}*{box-sizing:border-box}html{font-size:100%;text-size-adjust:100%;-webkit-text-size-adjust:100%;scroll-padding-top:5rem}body{margin:0;min-height:100dvh;display:flex;flex-direction:column;background:var(--color-background-canvas);color:var(--color-text-default);font-family:var(--font-body);font-size:1rem;line-height:1.7;text-align:start;line-break:strict;word-break:normal;overflow-wrap:anywhere;font-synthesis:none}main{flex:1 0 auto}a{color:inherit}::selection{background:var(--color-selection-background);color:var(--color-selection-text)}:where(a,button,input,textarea,select,summary,[tabindex]):focus-visible{outline:3px solid var(--color-border-focus);outline-offset:3px}@media(forced-colors:active){:focus-visible{outline-color:Highlight;box-shadow:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important;transform:none!important}}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link{position:absolute;left:1rem;top:-100%;z-index:100;padding:.5rem 1rem;background:var(--color-background-inverse);color:var(--color-text-inverse);font-size:.875rem;text-decoration:none;border-radius:0 0 var(--radius-s) var(--radius-s)}.skip-link:focus-visible{top:0}.container{max-inline-size:var(--container);margin-inline:auto;padding-inline:var(--pad-inline)}.container-narrow{inline-size:100%;max-inline-size:calc(40em + 2 * var(--pad-inline));min-inline-size:0;margin-inline:auto;padding-inline:var(--pad-inline)}@supports (max-inline-size: 40ic){.container-narrow{max-inline-size:calc(40ic + 2 * var(--pad-inline))}}.container-hero{max-inline-size:62rem;margin-inline:auto;padding-inline:var(--pad-inline)}.site-header{position:sticky;top:0;z-index:50;background:var(--color-background-canvas);border-bottom:1px solid var(--color-border-subtle)}@supports (backdrop-filter: blur(12px)){.site-header{background:color-mix(in srgb,var(--color-background-canvas) 86%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}}.site-header-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.25rem 1.5rem;min-height:4rem;padding-block:.6rem}.wordmark{font-family:var(--font-display);font-size:1.25rem;font-weight:900;letter-spacing:-.01em;line-height:1.2;text-decoration:none}.wordmark .cursor{color:var(--color-logo-mark)}.site-nav{display:flex;flex-wrap:wrap;gap:.25rem 1.4rem}.site-nav a{font-size:.875rem;font-weight:500;color:var(--color-text-subtle);text-decoration:none;transition:color var(--dur-fast) var(--ease)}.site-nav a:hover{color:var(--color-text-default)}.site-nav a[aria-current=page]{color:var(--color-text-default);text-decoration-line:underline;text-decoration-color:var(--color-logo-mark);text-decoration-thickness:2px;text-underline-offset:.35em}.pill{display:inline-block;padding:.35em .85em;border-radius:999px;background:var(--color-category-background);color:var(--color-category-text);font-size:.75rem;font-weight:600;line-height:1;letter-spacing:.02em;white-space:nowrap}.date{font-size:.875rem;color:var(--color-text-subtle)}.entry-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin:0}.section-title{margin:3.5rem 0 1.25rem;font-family:var(--font-display);font-size:1.125rem;font-weight:700;letter-spacing:0;line-height:1.5}.stretched{color:inherit;text-decoration:none}.stretched:after{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit}.stretched:focus-visible{outline:none}.stretched:focus-visible:after{outline:2px solid var(--color-text-inverse);outline-offset:2px;box-shadow:0 0 0 5px var(--color-border-focus)}.hero{position:relative;display:grid;grid-template-columns:7fr 5fr;gap:clamp(1.5rem,3vw,3rem);align-items:center;margin-block-start:2.5rem;border-radius:var(--radius-l)}.hero-media{overflow:hidden;border-radius:var(--radius-l);border:1px solid var(--color-border-subtle);background:var(--color-background-subtle)}.hero-image{display:block;width:100%;height:auto;aspect-ratio:16 / 9;object-fit:cover;transition:transform var(--dur-mid) var(--ease)}.hero:hover .hero-image{transform:scale(1.03)}.hero-body{display:flex;flex-direction:column;align-items:flex-start;gap:.9rem}.hero-title{margin:0;font-family:var(--font-display);font-size:clamp(1.625rem,1.2rem + 1.8vw,2.5rem);font-weight:900;line-height:1.3;letter-spacing:0;font-feature-settings:"palt";text-wrap:balance}.hero:hover .hero-title .stretched{text-decoration:underline;text-decoration-color:var(--color-text-link);text-decoration-thickness:2px;text-underline-offset:.22em}.hero .dek{margin:0;font-size:1rem;line-height:1.75;color:var(--color-text-subtle)}@media(max-width:56em){.hero{grid-template-columns:1fr;align-items:start}}.card-list{display:grid;gap:1rem}.card{position:relative;display:grid;grid-template-columns:168px 1fr;gap:1.25rem;align-items:center;padding:1rem;background:var(--color-background-canvas);border:1px solid var(--color-border-subtle);border-radius:var(--radius-m);box-shadow:var(--shadow-1);transition:box-shadow var(--dur-mid) var(--ease),transform var(--dur-mid) var(--ease),border-color var(--dur-fast) var(--ease)}.card:hover,.card:focus-within{box-shadow:var(--shadow-2);transform:translateY(-2px);border-color:var(--color-border-accent-hovered)}.card-thumb{display:block;width:100%;height:auto;aspect-ratio:16 / 9;object-fit:cover;border-radius:var(--radius-s);background:var(--color-background-subtle)}.card-body{display:flex;flex-direction:column;align-items:flex-start;gap:.45rem;min-inline-size:0}.card-title{margin:0;font-family:var(--font-display);font-size:1.125rem;font-weight:700;line-height:1.55;letter-spacing:0;font-feature-settings:"palt"}.card:hover .card-title .stretched{text-decoration:underline;text-decoration-color:var(--color-text-link);text-decoration-thickness:2px;text-underline-offset:.2em}.card-excerpt{margin:0;font-size:.9375rem;line-height:1.7;color:var(--color-text-subtle);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}@media(max-width:40em){.card{grid-template-columns:96px 1fr;gap:1rem;align-items:start}.card-excerpt{-webkit-line-clamp:3;line-clamp:3}}.feed-empty{padding-block:3.5rem;color:var(--color-text-subtle)}.archive-page{padding-block-start:clamp(3rem,7vw,6rem)}.archive-head{margin-block-end:2.25rem}.archive-kicker{margin:0 0 .75rem;color:var(--color-text-accent);font-size:.75rem;font-weight:700;letter-spacing:.14em}.archive-title-row{display:flex;align-items:end;justify-content:space-between;gap:1rem 2rem;padding-block-end:1.5rem;border-block-end:1px solid var(--color-border-subtle)}.archive-title-row h1{margin:0;font-family:var(--font-display);font-size:clamp(2.25rem,1.7rem + 2.4vw,4rem);font-weight:900;line-height:1.2;letter-spacing:0}.archive-title-row p{margin:0 0 .35rem;color:var(--color-text-subtle);font-size:.875rem;white-space:nowrap}.archive-list{gap:1.25rem}@media(max-width:40em){.archive-page{padding-block-start:2.5rem}.archive-title-row{align-items:start;flex-direction:column}.archive-title-row p{margin:0}}.article-head{padding-block-start:2.75rem}.article-head .entry-meta{margin-block-end:1.1rem}.article-head h1{margin:0;font-family:var(--font-display);font-size:clamp(2rem,1.5rem + 2vw,3.25rem);font-weight:900;line-height:1.25;letter-spacing:0;font-feature-settings:"palt";text-wrap:balance}.article-head .dek{margin:1.2rem 0 0;max-inline-size:40em;font-size:1.0625rem;line-height:1.75;color:var(--color-text-subtle)}.article-meta{margin:1.2rem 0 0;max-inline-size:40em;font-size:.875rem;line-height:1.6;color:var(--color-text-subtle)}.article-meta .sep{margin-inline:.6em;color:var(--color-border-subtle)}.article-hero{margin-block:2rem 2.25rem}.article-hero img{display:block;width:100%;height:auto;aspect-ratio:16 / 9;object-fit:cover;border-radius:var(--radius-l);border:1px solid var(--color-border-subtle)}.affiliate-disclosure{margin-block-end:2.25rem;padding:.8em 1.1em;border-radius:var(--radius-s);background:var(--color-disclosure-background);font-size:.875rem;line-height:1.7;color:var(--color-disclosure-text)}.prose{font-size:clamp(1.0625rem,1rem + .25vw,1.125rem);line-height:1.8;letter-spacing:.01em}.prose p{margin-block:0}.prose p+p{margin-block-start:1.25em}.prose h2{margin-block:3em .9em;font-family:var(--font-display);font-size:clamp(1.375rem,1.25rem + .6vw,1.75rem);font-weight:700;line-height:1.4;letter-spacing:0;font-feature-settings:"palt";text-wrap:balance}.prose h3{margin-block:2.2em .7em;font-family:var(--font-display);font-size:clamp(1.1875rem,1.1rem + .4vw,1.4375rem);font-weight:700;line-height:1.5;letter-spacing:0;font-feature-settings:"palt";text-wrap:balance}.prose h4,.prose h5,.prose h6{margin-block:1.9em .65em;font-family:var(--font-display);font-weight:700;line-height:1.55}.prose h4{font-size:1.125rem}.prose h5,.prose h6{font-size:1rem}@supports (word-break: auto-phrase){.hero-title,.card-title,.article-head h1,.prose h2,.prose h3{word-break:auto-phrase}}.prose a{color:var(--color-text-link);text-decoration-line:underline;text-decoration-color:currentColor;text-decoration-thickness:.08em;text-underline-offset:.18em;text-decoration-skip-ink:auto;transition:color var(--dur-fast) var(--ease),text-decoration-thickness var(--dur-fast) var(--ease)}.prose a:visited{color:var(--color-text-link-visited)}.prose a:hover{color:var(--color-text-link-hovered);text-decoration-thickness:.12em}.prose em{font-style:normal;font-weight:700}.prose strong{color:var(--color-text-default);font-weight:700}.prose del{color:var(--color-text-subtle);text-decoration-thickness:.08em}.prose blockquote{margin-block:2em;margin-inline:0;padding:1em 1.25em;border-inline-start:.25rem solid var(--color-quote-border);border-radius:0 var(--radius-s) var(--radius-s) 0;background:var(--color-quote-background);color:var(--color-text-default)}.prose blockquote p+p{margin-block-start:1em}.prose blockquote>:first-child{margin-block-start:0}.prose blockquote>:last-child{margin-block-end:0}.prose blockquote cite{display:block;margin-block-start:.8em;font-size:.875em}.prose ul,.prose ol{margin-block:1.25em;padding-inline-start:1.5em}.prose li+li{margin-block-start:.45em}.prose li::marker{color:var(--color-text-accent);font-weight:600}.prose :where(ul,ol) :where(ul,ol){margin-block:.5em}.prose .contains-task-list{padding-inline-start:0;list-style:none}.prose .task-list-item{list-style:none}.prose input[type=checkbox]{inline-size:1em;block-size:1em;margin:0 .55em 0 0;accent-color:var(--color-background-accent);vertical-align:-.08em}.prose figure{margin-block:2.5em;margin-inline:0}.prose img{display:block;max-inline-size:100%;block-size:auto;border-radius:var(--radius-m);border:1px solid var(--color-border-subtle)}.prose figcaption{margin-block-start:.75em;color:var(--color-text-subtle);font-size:.875em;line-height:1.6}.prose hr{border:0;border-top:1px solid var(--color-border-subtle);margin-block:3em}.prose :not(pre)>code{font-family:var(--font-mono);font-size:.9em;padding:.12em .32em;border-radius:.25rem;background:var(--color-background-subtle)}.prose pre{max-inline-size:100%;overflow-x:auto;margin-block:1.75em;padding:1rem;border:1px solid var(--color-border-subtle);border-radius:var(--radius-s);background:var(--color-code-background);color:var(--color-code-text);font-family:var(--font-mono);font-size:.875rem;line-height:1.6;tab-size:2}.prose pre code{white-space:pre;overflow-wrap:normal;background:none;padding:0;border-radius:0}.prose kbd{padding:.12em .42em;border:1px solid var(--color-border-subtle);border-block-end-width:2px;border-radius:.3rem;background:var(--color-background-subtle);font-family:var(--font-mono);font-size:.82em}.prose mark{padding-inline:.12em;background:var(--color-mark-background);color:var(--color-text-default)}.prose :where(sub,sup){font-size:.75em;line-height:0}.prose dl{margin-block:1.5em}.prose dt{font-weight:700}.prose dd{margin:.35em 0 1em 1.25em}.prose .markdown-disclosure{margin-block:1.75em;padding:0 1.1rem 1.1rem;overflow:hidden;border:1px solid var(--color-border-subtle);border-radius:var(--radius-s);background:var(--color-background-subtle)}.prose .markdown-disclosure:not([open]){padding-block-end:0}.prose .markdown-disclosure summary{margin-inline:-1.1rem;padding:.85rem 1.1rem;color:var(--color-text-default);font-weight:700;cursor:pointer}.prose .markdown-disclosure[open] summary{margin-block-end:1rem;border-block-end:1px solid var(--color-border-subtle)}.prose .markdown-disclosure summary:hover{background:var(--color-background-subtle-hovered)}.prose .markdown-link-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:1rem;margin-block:1.75em;padding:1.1rem 1.2rem;border:1px solid var(--color-border-subtle);border-radius:var(--radius-m);background:var(--color-background-canvas);box-shadow:var(--shadow-1);color:var(--color-text-default);text-decoration:none;transition:transform var(--dur-mid) var(--ease),box-shadow var(--dur-mid) var(--ease),border-color var(--dur-fast) var(--ease)}.prose .markdown-link-card:hover{transform:translateY(-2px);border-color:var(--color-border-accent-hovered);box-shadow:var(--shadow-2);color:var(--color-text-default);text-decoration:none}.markdown-link-card-icon{display:grid;place-items:center;inline-size:2.75rem;block-size:2.75rem;border-radius:50%;background:var(--color-background-accent-subtle);color:var(--color-text-accent);font-size:1.2rem;font-weight:700}.markdown-link-card-copy{display:grid;min-inline-size:0;gap:.2rem}.markdown-link-card-site{color:var(--color-text-subtle);font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.markdown-link-card-copy strong{overflow:hidden;color:var(--color-text-default);font-size:1rem;line-height:1.5;text-overflow:ellipsis;white-space:nowrap}.markdown-link-card-description{display:-webkit-box;overflow:hidden;color:var(--color-text-subtle);font-size:.8125rem;line-height:1.6;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}.markdown-link-card-arrow{color:var(--color-text-link);font-weight:700}@media(max-width:32em){.prose .markdown-link-card{grid-template-columns:minmax(0,1fr) auto}.markdown-link-card-icon{display:none}}.table-scroll{inline-size:100%;max-inline-size:100%;overflow-x:auto;margin-block:2em;border:1px solid var(--color-border-subtle);border-radius:var(--radius-s)}.prose table{border-collapse:collapse;inline-size:100%;min-inline-size:36rem;font-size:.9375rem;line-height:1.7}.prose caption{padding:.75rem .9rem;color:var(--color-text-subtle);font-size:.875rem;text-align:start}.prose th{background:var(--color-background-subtle);font-size:.875rem;font-weight:600;color:var(--color-text-subtle)}.prose :where(th,td){padding:.65rem .9rem;text-align:start;vertical-align:top;border-block-end:1px solid var(--color-border-subtle)}.prose tr:last-child td{border-block-end:0}.prose .footnotes{margin-block-start:3em;padding-block-start:1.5em;border-block-start:1px solid var(--color-border-subtle);color:var(--color-text-subtle);font-size:.875em}.prose :where(iframe,video){display:block;max-inline-size:100%;margin-block:2em;border:0}.author-profile{display:grid;grid-template-columns:3.75rem minmax(0,1fr);gap:1.25rem;align-items:start;margin-block-start:4rem;padding-block-start:1.75rem;border-block-start:1px solid var(--color-border-subtle)}.author-profile-mark{display:grid;place-items:center;inline-size:3.75rem;block-size:3.75rem;border-radius:50%;background:var(--color-category-background);color:var(--color-category-text);font-family:var(--font-display);font-size:1.25rem;font-weight:900;line-height:1}.author-profile-kicker{margin:0 0 .2rem;color:var(--color-text-accent);font-size:.6875rem;font-weight:700;line-height:1.4;letter-spacing:.12em}.author-profile-name{margin:0;font-family:var(--font-display);font-size:1.125rem;font-weight:700;line-height:1.5}.author-profile-name a{text-decoration-color:var(--color-border-default);text-decoration-thickness:1px;text-underline-offset:.2em;transition:color var(--dur-fast) var(--ease),text-decoration-color var(--dur-fast) var(--ease)}.author-profile-name a:hover{color:var(--color-text-link-hovered);text-decoration-color:currentColor}.author-profile-description{margin:.35rem 0 0;color:var(--color-text-subtle);font-size:.9375rem;line-height:1.7}.related{margin-block-start:1rem}.related .card-list{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.related .card{grid-template-columns:96px 1fr;gap:1rem;align-items:start}.site-footer{margin-block-start:5rem;background:var(--color-footer-background);color:var(--color-footer-text);padding-block:3.5rem 2.5rem;border-block-start:1px solid var(--color-footer-border)}.footer-wordmark{margin:0;font-family:var(--font-display);font-size:clamp(3.5rem,10vw,7rem);font-weight:900;letter-spacing:-.01em;line-height:1;color:var(--color-footer-text)}.footer-wordmark .cursor{color:var(--color-footer-logo-mark)}.footer-nav{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem 1rem;margin-block-start:2rem;font-size:.875rem}.footer-nav a{color:var(--color-footer-text-muted);text-decoration:none;transition:color var(--dur-fast) var(--ease)}.footer-nav a:hover{color:var(--color-footer-text)}.footer-nav .sep{color:var(--color-footer-separator)}.copyright{margin:2rem 0 0;font-size:.8125rem;color:var(--color-footer-text-muted)}
