:root{color-scheme:light dark;--bg:#f4f4f1;--bg-subtle:#eaeae4;--bg-raised:#fbfbf9;--text:#1a1b1c;--text-muted:#4a4d51;--border:#dcdcd4;--border-strong:#b7b7ac;--accent:#23406b;--accent-hover:#16294a;--flag:#a1301f;--visited:#5c4576;--code-bg:#eaeae4;--mark:#f0e3bd;--font-sans:"Noto Sans JP", -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, "Segoe UI", Roboto, sans-serif;--font-serif:"Hiragino Mincho ProN", "Yu Mincho", YuMincho, "Noto Serif JP", "Times New Roman", serif;--font-mono:"SF Mono", "JetBrains Mono", Menlo, Consolas, "Hiragino Sans", monospace;--measure:42rem;--article-min:42rem;--gutter:clamp(1rem, 4vw, 2rem);--font-scale:1;--step-0:calc(1.0625rem * var(--font-scale));--step-1:calc(1.25rem * var(--font-scale));--step-2:calc(1.5rem * var(--font-scale));--step-3:calc(1.875rem * var(--font-scale));--step-4:calc(2.375rem * var(--font-scale));--step-5:calc(3rem * var(--font-scale));--leading:1.9;--radius:6px;--header-h:6.1rem}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#16171a;--bg-subtle:#1e2024;--bg-raised:#212429;--text:#e6e4df;--text-muted:#b0ada6;--border:#2c2e33;--border-strong:#454850;--accent:#9db8e6;--accent-hover:#bfd2f2;--flag:#e08a7c;--visited:#c1a8dc;--code-bg:#1e2024;--mark:#4a3a1c}}:root[data-theme=dark]{--bg:#16171a;--bg-subtle:#1e2024;--bg-raised:#212429;--text:#e6e4df;--text-muted:#b0ada6;--border:#2c2e33;--border-strong:#454850;--accent:#9db8e6;--accent-hover:#bfd2f2;--flag:#e08a7c;--visited:#c1a8dc;--code-bg:#1e2024;--mark:#4a3a1c}:root[data-font="112"]{--font-scale:1.12}:root[data-font="125"]{--font-scale:1.25}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 1rem)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--step-0);line-height:var(--leading);font-feature-settings:"palt" 1;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0}:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:2px}a{color:var(--accent);text-underline-offset:.2em;text-decoration-line:underline;text-decoration-thickness:1px}a:hover{color:var(--accent-hover);text-decoration-thickness:2px}a:visited{color:var(--visited)}.article-body a[href^=http]:after{content:"↗";vertical-align:super;margin-inline-start:.15em;font-size:.75em}.skip-link{background:var(--bg-raised);border:2px solid var(--accent);z-index:200;padding:.75rem 1rem;position:absolute;top:0;left:-9999px}.skip-link:focus{top:.5rem;left:.5rem}.container{width:100%;max-width:68rem;padding-inline:var(--gutter);margin-inline:auto}.prose-container{width:100%;max-width:var(--measure);padding-inline:var(--gutter);margin-inline:auto}.preview-article{min-width:0;max-width:100rem;padding-block:1.5rem 4rem}.preview-article>article{min-width:0}.site-header{z-index:100;background:color-mix(in srgb, var(--bg) 92%, transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);position:sticky;top:0}.masthead{align-items:center;gap:1rem;min-height:3.25rem;display:flex}.site-title,.site-title:visited{font-family:var(--font-serif);font-weight:700;font-size:var(--step-2);color:var(--text);letter-spacing:.06em;white-space:nowrap;line-height:1.2;text-decoration:none}.masthead-tagline{color:var(--text-muted);margin:0;font-size:.8125rem;line-height:1.5;display:none}@media (width>=60rem){.masthead-tagline{border-inline-start:1px solid var(--border);padding-inline-start:1rem;display:block}}.masthead-tools{align-items:center;gap:.25rem;margin-inline-start:auto;display:flex}.site-nav{scrollbar-width:none;border-block-start:1px solid var(--border);align-items:center;gap:.25rem;min-width:0;display:flex;overflow:auto hidden}.site-nav::-webkit-scrollbar{display:none}.site-nav a{flex:none}.site-nav a,.masthead-tools a,.icon-button{min-width:44px;min-height:44px;color:var(--text-muted);border-radius:var(--radius);white-space:nowrap;justify-content:center;align-items:center;padding-inline:.6rem;font-size:.9375rem;text-decoration:none;display:inline-flex}.site-nav a:hover,.masthead-tools a:hover,.icon-button:hover{background:var(--bg-subtle);color:var(--text)}.site-nav a[aria-current=page]{color:var(--text);box-shadow:inset 0 -2px 0 var(--accent);border-radius:0;font-weight:700}.icon-button{cursor:pointer;color:var(--text-muted);font:inherit;background:0 0;border:1px solid #0000;font-size:.875rem}.icon-button[aria-pressed=true]{border-color:var(--border-strong)}@media (width<=63.99rem){.site-header{position:relative}}.progress{background:var(--accent);transform-origin:0;z-index:150;pointer-events:none;will-change:transform;width:100vw;height:3px;inset:0 auto auto 0;transform:scaleX(0);position:fixed!important}.article-header{margin-block:2.5rem 2rem}.article-header h1{font-family:var(--font-serif);font-size:var(--step-4);letter-spacing:.01em;text-wrap:balance;margin:.6rem 0 1rem;font-weight:700;line-height:1.45}.article-meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;font-size:.875rem;display:flex}.share-buttons{flex-wrap:wrap;align-items:center;gap:.55rem .75rem;margin-block:0 1.25rem;display:flex}.share-buttons-label{font-family:var(--font-mono);letter-spacing:.08em;color:var(--text-muted);font-size:.75rem}.share-buttons-list{flex-wrap:wrap;gap:.45rem;display:flex}.share-button{border:1px solid var(--border-strong);width:36px;height:36px;color:var(--text-muted);border-radius:50%;justify-content:center;align-items:center;padding:0;line-height:1;text-decoration:none;display:inline-flex}.share-icon{fill:currentColor;width:18px;height:18px;display:block}.share-button[data-share=x] .share-icon{width:17px;height:17px}.share-button[data-share=hatena] .share-icon{width:19px;height:19px}.share-button:visited{color:var(--text-muted)}.share-button:hover{background:var(--bg-subtle);color:var(--text);border-color:var(--text-muted)}.list-share-buttons{align-items:center;gap:.3rem;margin-inline-start:.15rem;display:inline-flex}.list-share-buttons .share-button{width:28px;height:28px}.list-share-buttons .share-icon{width:14px;height:14px}.list-share-buttons .share-button[data-share=x] .share-icon{width:13px;height:13px}.eyebrow{letter-spacing:.14em;color:var(--flag);flex-wrap:wrap;align-items:center;gap:.4rem .6rem;margin:0;font-size:.78rem;font-weight:700;display:flex}.eyebrow a{color:inherit;text-decoration:none}.eyebrow a:hover{text-decoration:underline}.eyebrow .sep{color:var(--border-strong);font-weight:400}.eyebrow .format{color:var(--text-muted);letter-spacing:.1em}.eyebrow .pr-flag{letter-spacing:.08em;border:1px solid;border-radius:2px;padding:0 .35rem}.meta-line{font-family:var(--font-mono);letter-spacing:.04em;color:var(--text-muted);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:center;gap:.35rem 1rem;margin:0;font-size:.75rem;display:flex}.meta-line .primary-count{color:var(--accent)}.meta-line .byline{color:var(--text-muted)}.meta-line .byline:hover{color:var(--accent)}.badge{border:1px solid var(--border-strong);color:var(--text-muted);border-radius:999px;padding:.15em .6em;font-size:.8125rem;text-decoration:none;display:inline-block}a.badge:hover{background:var(--bg-subtle);color:var(--text)}.disclosure{border:2px solid var(--accent);border-radius:var(--radius);color:var(--text);background:var(--bg-subtle);margin-block-end:1rem;padding:.6rem .9rem;font-weight:700;display:block}.summary3{background:var(--bg-subtle);border-inline-start:3px solid var(--accent);border-radius:0 var(--radius) var(--radius) 0;margin-block:2rem;padding:1.25rem 1.5rem}.summary3 h2{letter-spacing:.08em;color:var(--text-muted);margin:0 0 .75rem;font-size:.875rem;font-weight:700}.summary3 ul{margin:0;padding-inline-start:1.25rem}.summary3 li{margin-block:.4rem}.lead{font-size:var(--step-1);color:var(--text);margin-block:1.5rem;line-height:1.8}.origin-sources{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-subtle);margin-block:2rem;padding:1rem 1.2rem}.origin-sources h2{font-size:var(--step-1);margin:0;line-height:1.5}.origin-sources-lead{color:var(--text-muted);margin-block:.45rem .75rem;font-size:.875rem;line-height:1.7}.origin-sources ul{margin:0;padding-inline-start:1.2rem}.origin-sources li+li{margin-block-start:.6rem}.origin-source-meta{color:var(--text-muted);flex-wrap:wrap;gap:.25rem .7rem;margin-inline-start:.6rem;font-size:.8125rem;display:inline-flex}.article-body{font-size:calc(1.125rem * var(--font-scale));font-feature-settings:normal;margin-block-start:2rem;line-height:1.9}.article-body :where(p){margin-block:0}.article-body>*+*{margin-block-start:1.6em}.article-body h2{font-size:var(--step-2);border-block-end:1px solid var(--border);margin-block-start:3rem;padding-block-end:.4rem;line-height:1.5}.article-body h3{font-size:var(--step-1);margin-block-start:2.4rem;line-height:1.6}.article-body ul,.article-body ol{padding-inline-start:1.6rem}.article-body li+li{margin-block-start:.5em}.article-body blockquote{border-inline-start:3px solid var(--border-strong);color:var(--text-muted);margin-inline:0;padding:.5rem 0 .5rem 1.25rem}.article-body img{border-radius:var(--radius);max-width:100%;height:auto}:root[data-theme=dark] .article-body img,:root[data-theme=dark] .hero img{filter:brightness(.9)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .article-body img,:root:not([data-theme=light]) .hero img{filter:brightness(.9)}}figure{margin-inline:0}figcaption{color:var(--text-muted);text-align:center;margin-block-start:.5rem;font-size:.875rem}.hero{margin:0 0 2rem}.hero img{aspect-ratio:1200/630;object-fit:cover;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-subtle);width:100%;height:auto;display:block}.hero figcaption{font-family:var(--font-mono);letter-spacing:.04em;color:var(--text-muted);text-align:start;flex-wrap:wrap;justify-content:flex-start;gap:.3rem .75rem;margin-block-start:.6rem;font-size:.72rem;display:flex}.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.article-body table{border-collapse:collapse;width:100%;font-size:.9375rem}.article-body th,.article-body td{border:1px solid var(--border);text-align:start;padding:.5rem .75rem}.article-body th{background:var(--bg-subtle);font-weight:700}.article-body code{font-family:var(--font-mono);background:var(--code-bg);border-radius:4px;padding:.1em .35em;font-size:.9em}.article-body pre{border-radius:var(--radius);border:1px solid var(--border);padding:1rem 1.15rem;font-size:.875rem;line-height:1.7;position:relative;overflow-x:auto}.article-body pre code{font-size:inherit;background:0 0;padding:0}.article-body pre[class*=language-] .token.comment,.article-body pre[class*=language-] .token.prolog,.article-body pre[class*=language-] .token.doctype,.article-body pre[class*=language-] .token.cdata{color:#6a737d}.article-body pre[class*=language-] .token.keyword,.article-body pre[class*=language-] .token.boolean,.article-body pre[class*=language-] .token.constant,.article-body pre[class*=language-] .token.deleted,.article-body pre[class*=language-] .token.tag{color:#d73a49}.article-body pre[class*=language-] .token.function,.article-body pre[class*=language-] .token.class-name,.article-body pre[class*=language-] .token.function-variable{color:#6f42c1}.article-body pre[class*=language-] .token.builtin,.article-body pre[class*=language-] .token.variable{color:#e36209}.article-body pre[class*=language-] .token.string,.article-body pre[class*=language-] .token.char,.article-body pre[class*=language-] .token.regex,.article-body pre[class*=language-] .token.attr-value{color:#032f62}.article-body pre[class*=language-] .token.number,.article-body pre[class*=language-] .token.symbol{color:#005cc5}:root[data-theme=dark] .article-body pre[class*=language-] .token.comment,:root[data-theme=dark] .article-body pre[class*=language-] .token.prolog,:root[data-theme=dark] .article-body pre[class*=language-] .token.doctype,:root[data-theme=dark] .article-body pre[class*=language-] .token.cdata{color:#6a737d}:root[data-theme=dark] .article-body pre[class*=language-] .token.keyword,:root[data-theme=dark] .article-body pre[class*=language-] .token.boolean,:root[data-theme=dark] .article-body pre[class*=language-] .token.constant,:root[data-theme=dark] .article-body pre[class*=language-] .token.deleted,:root[data-theme=dark] .article-body pre[class*=language-] .token.tag{color:#f97583}:root[data-theme=dark] .article-body pre[class*=language-] .token.function,:root[data-theme=dark] .article-body pre[class*=language-] .token.class-name,:root[data-theme=dark] .article-body pre[class*=language-] .token.function-variable{color:#b392f0}:root[data-theme=dark] .article-body pre[class*=language-] .token.builtin,:root[data-theme=dark] .article-body pre[class*=language-] .token.variable{color:#ffab70}:root[data-theme=dark] .article-body pre[class*=language-] .token.string,:root[data-theme=dark] .article-body pre[class*=language-] .token.char,:root[data-theme=dark] .article-body pre[class*=language-] .token.regex,:root[data-theme=dark] .article-body pre[class*=language-] .token.attr-value{color:#9ecbff}:root[data-theme=dark] .article-body pre[class*=language-] .token.number,:root[data-theme=dark] .article-body pre[class*=language-] .token.symbol{color:#79b8ff}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .article-body pre[class*=language-] .token.comment,:root:not([data-theme=light]) .article-body pre[class*=language-] .token.prolog,:root:not([data-theme=light]) .article-body pre[class*=language-] .token.doctype,:root:not([data-theme=light]) .article-body pre[class*=language-] .token.cdata{color:#6a737d}:root:not([data-theme=light]) .article-body pre[class*=language-] .token.keyword,:root:not([data-theme=light]) .article-body pre[class*=language-] .token.boolean,:root:not([data-theme=light]) .article-body pre[class*=language-] .token.constant,:root:not([data-theme=light]) .article-body pre[class*=language-] .token.deleted,:root:not([data-theme=light]) .article-body pre[class*=language-] .token.tag{color:#f97583}:root:not([data-theme=light]) .article-body pre[class*=language-] .token.function,:root:not([data-theme=light]) .article-body pre[class*=language-] .token.class-name,:root:not([data-theme=light]) .article-body pre[class*=language-] .token.function-variable{color:#b392f0}:root:not([data-theme=light]) .article-body pre[class*=language-] .token.builtin,:root:not([data-theme=light]) .article-body pre[class*=language-] .token.variable{color:#ffab70}:root:not([data-theme=light]) .article-body pre[class*=language-] .token.string,:root:not([data-theme=light]) .article-body pre[class*=language-] .token.char,:root:not([data-theme=light]) .article-body pre[class*=language-] .token.regex,:root:not([data-theme=light]) .article-body pre[class*=language-] .token.attr-value{color:#9ecbff}:root:not([data-theme=light]) .article-body pre[class*=language-] .token.number,:root:not([data-theme=light]) .article-body pre[class*=language-] .token.symbol{color:#79b8ff}}.article-body pre,.article-body pre code{background:var(--code-bg)!important;color:var(--text)!important}.article-body pre code span{background:0 0!important}.article-body pre.chroma{color:#24292e;background:#fff}:root[data-theme=dark] .article-body pre.chroma,:root[data-theme=dark] .article-body pre.chroma code{color:#e1e4e8;background:#24292e}:root[data-theme=dark] .article-body pre.chroma .c,:root[data-theme=dark] .article-body pre.chroma .ch,:root[data-theme=dark] .article-body pre.chroma .cm,:root[data-theme=dark] .article-body pre.chroma .cp,:root[data-theme=dark] .article-body pre.chroma .cpf,:root[data-theme=dark] .article-body pre.chroma .c1,:root[data-theme=dark] .article-body pre.chroma .cs{color:#6a737d}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .article-body pre.chroma,:root:not([data-theme=light]) .article-body pre.chroma code{color:#e1e4e8;background:#24292e}:root:not([data-theme=light]) .article-body pre.chroma .k,:root:not([data-theme=light]) .article-body pre.chroma .kc,:root:not([data-theme=light]) .article-body pre.chroma .kd,:root:not([data-theme=light]) .article-body pre.chroma .kn,:root:not([data-theme=light]) .article-body pre.chroma .kp,:root:not([data-theme=light]) .article-body pre.chroma .kr,:root:not([data-theme=light]) .article-body pre.chroma .kt{color:#f97583}:root:not([data-theme=light]) .article-body pre.chroma .nc,:root:not([data-theme=light]) .article-body pre.chroma .nf,:root:not([data-theme=light]) .article-body pre.chroma .fm{color:#b392f0}:root:not([data-theme=light]) .article-body pre.chroma .s,:root:not([data-theme=light]) .article-body pre.chroma .sa,:root:not([data-theme=light]) .article-body pre.chroma .sb,:root:not([data-theme=light]) .article-body pre.chroma .sc,:root:not([data-theme=light]) .article-body pre.chroma .dl,:root:not([data-theme=light]) .article-body pre.chroma .sd,:root:not([data-theme=light]) .article-body pre.chroma .s2,:root:not([data-theme=light]) .article-body pre.chroma .se,:root:not([data-theme=light]) .article-body pre.chroma .sh,:root:not([data-theme=light]) .article-body pre.chroma .si,:root:not([data-theme=light]) .article-body pre.chroma .sx,:root:not([data-theme=light]) .article-body pre.chroma .sr,:root:not([data-theme=light]) .article-body pre.chroma .s1{color:#9ecbff}:root:not([data-theme=light]) .article-body pre.chroma .m,:root:not([data-theme=light]) .article-body pre.chroma .mb,:root:not([data-theme=light]) .article-body pre.chroma .mf,:root:not([data-theme=light]) .article-body pre.chroma .mh,:root:not([data-theme=light]) .article-body pre.chroma .mi,:root:not([data-theme=light]) .article-body pre.chroma .mo{color:#79b8ff}:root:not([data-theme=light]) .article-body pre.chroma .c,:root:not([data-theme=light]) .article-body pre.chroma .ch,:root:not([data-theme=light]) .article-body pre.chroma .cm,:root:not([data-theme=light]) .article-body pre.chroma .cp,:root:not([data-theme=light]) .article-body pre.chroma .cpf,:root:not([data-theme=light]) .article-body pre.chroma .c1,:root:not([data-theme=light]) .article-body pre.chroma .cs{color:#6a737d}}.article-body pre.chroma .k,.article-body pre.chroma .kc,.article-body pre.chroma .kd,.article-body pre.chroma .kn,.article-body pre.chroma .kp,.article-body pre.chroma .kr,.article-body pre.chroma .kt{color:#d73a49!important}.article-body pre.chroma .nc,.article-body pre.chroma .nf,.article-body pre.chroma .fm{color:#6f42c1!important}.article-body pre.chroma .s,.article-body pre.chroma .sa,.article-body pre.chroma .sb,.article-body pre.chroma .sc,.article-body pre.chroma .dl,.article-body pre.chroma .sd,.article-body pre.chroma .s2,.article-body pre.chroma .se,.article-body pre.chroma .sh,.article-body pre.chroma .si,.article-body pre.chroma .sx,.article-body pre.chroma .sr,.article-body pre.chroma .s1{color:#032f62!important}.article-body pre.chroma .m,.article-body pre.chroma .mb,.article-body pre.chroma .mf,.article-body pre.chroma .mh,.article-body pre.chroma .mi,.article-body pre.chroma .mo{color:#005cc5!important}.article-body pre.chroma .c,.article-body pre.chroma .ch,.article-body pre.chroma .cm,.article-body pre.chroma .cp,.article-body pre.chroma .cpf,.article-body pre.chroma .c1,.article-body pre.chroma .cs{color:#6a737d!important}.article-body pre code span[style*="color:#008080"]{color:#b392f0!important}.article-body pre code span[style*="color:#000080"]{color:#f97583!important}.article-body pre code span[style*="color:#0086b3"]{color:#79b8ff!important}.article-body pre code span[style*="color:#d14"]{color:#9ecbff!important}.article-body pre code span[style*="color:#998"]{color:#8b949e!important}.article-body pre code span[style*="color:#bbb"]{color:#7d8590!important}.article-body pre code span[style*="color:#000;"]{color:#e1e4e8!important}:root[data-theme=dark] .article-body pre.chroma .k,:root[data-theme=dark] .article-body pre.chroma .kc,:root[data-theme=dark] .article-body pre.chroma .kd,:root[data-theme=dark] .article-body pre.chroma .kn,:root[data-theme=dark] .article-body pre.chroma .kp,:root[data-theme=dark] .article-body pre.chroma .kr,:root[data-theme=dark] .article-body pre.chroma .kt{color:#f97583!important}:root[data-theme=dark] .article-body pre.chroma .nc,:root[data-theme=dark] .article-body pre.chroma .nf,:root[data-theme=dark] .article-body pre.chroma .fm{color:#b392f0!important}:root[data-theme=dark] .article-body pre.chroma .s,:root[data-theme=dark] .article-body pre.chroma .sa,:root[data-theme=dark] .article-body pre.chroma .sb,:root[data-theme=dark] .article-body pre.chroma .sc,:root[data-theme=dark] .article-body pre.chroma .dl,:root[data-theme=dark] .article-body pre.chroma .sd,:root[data-theme=dark] .article-body pre.chroma .s2,:root[data-theme=dark] .article-body pre.chroma .se,:root[data-theme=dark] .article-body pre.chroma .sh,:root[data-theme=dark] .article-body pre.chroma .si,:root[data-theme=dark] .article-body pre.chroma .sx,:root[data-theme=dark] .article-body pre.chroma .sr,:root[data-theme=dark] .article-body pre.chroma .s1{color:#9ecbff!important}:root[data-theme=dark] .article-body pre.chroma .m,:root[data-theme=dark] .article-body pre.chroma .mb,:root[data-theme=dark] .article-body pre.chroma .mf,:root[data-theme=dark] .article-body pre.chroma .mh,:root[data-theme=dark] .article-body pre.chroma .mi,:root[data-theme=dark] .article-body pre.chroma .mo{color:#79b8ff!important}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .article-body pre.chroma .k,:root:not([data-theme=light]) .article-body pre.chroma .kc,:root:not([data-theme=light]) .article-body pre.chroma .kd,:root:not([data-theme=light]) .article-body pre.chroma .kn,:root:not([data-theme=light]) .article-body pre.chroma .kp,:root:not([data-theme=light]) .article-body pre.chroma .kr,:root:not([data-theme=light]) .article-body pre.chroma .kt{color:#f97583!important}:root:not([data-theme=light]) .article-body pre.chroma .nc,:root:not([data-theme=light]) .article-body pre.chroma .nf,:root:not([data-theme=light]) .article-body pre.chroma .fm{color:#b392f0!important}:root:not([data-theme=light]) .article-body pre.chroma .s,:root:not([data-theme=light]) .article-body pre.chroma .sa,:root:not([data-theme=light]) .article-body pre.chroma .sb,:root:not([data-theme=light]) .article-body pre.chroma .sc,:root:not([data-theme=light]) .article-body pre.chroma .dl,:root:not([data-theme=light]) .article-body pre.chroma .sd,:root:not([data-theme=light]) .article-body pre.chroma .s2,:root:not([data-theme=light]) .article-body pre.chroma .se,:root:not([data-theme=light]) .article-body pre.chroma .sh,:root:not([data-theme=light]) .article-body pre.chroma .si,:root:not([data-theme=light]) .article-body pre.chroma .sx,:root:not([data-theme=light]) .article-body pre.chroma .sr,:root:not([data-theme=light]) .article-body pre.chroma .s1{color:#9ecbff!important}:root:not([data-theme=light]) .article-body pre.chroma .m,:root:not([data-theme=light]) .article-body pre.chroma .mb,:root:not([data-theme=light]) .article-body pre.chroma .mf,:root:not([data-theme=light]) .article-body pre.chroma .mh,:root:not([data-theme=light]) .article-body pre.chroma .mi,:root:not([data-theme=light]) .article-body pre.chroma .mo{color:#79b8ff!important}}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}}.copy-button{background:var(--bg-raised);border:1px solid var(--border-strong);color:var(--text-muted);cursor:pointer;opacity:0;border-radius:4px;padding:.25rem .6rem;font-size:.75rem;transition:opacity .15s;position:absolute;inset-block-start:.5rem;inset-inline-end:.5rem}pre:hover .copy-button,.copy-button:focus-visible{opacity:1}.diagram{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-subtle);margin-block:2.5rem;padding:1.25rem}.diagram-svg{width:min(100%,42rem);margin-inline:auto;display:block;overflow:hidden}.diagram-svg svg{color:var(--text);display:block;background:var(--bg-subtle)!important;width:100%!important;max-width:none!important;height:auto!important}.diagram-svg svg,.diagram-svg svg text,.diagram-svg svg foreignObject{font-size:1rem!important}.diagram-svg svg foreignObject .nodeLabel,.diagram-svg svg foreignObject .nodeLabel p{color:var(--text)!important;-webkit-text-fill-color:var(--text)!important;margin:0!important;font-size:1rem!important;line-height:1.4!important}.diagram-svg svg text{fill:var(--text)!important}.diagram-svg svg .nodeLabel,.diagram-svg svg .edgeLabel{color:var(--text)!important}.diagram-svg svg .edgeLabel rect{fill:var(--bg-subtle)!important}.diagram-svg svg .edgeLabel foreignObject,.diagram-svg svg .edgeLabel .labelBkg,.diagram-svg svg .edgeLabel div,.diagram-svg svg .edgeLabel p,.diagram-svg svg .edgeLabel span{background:var(--bg-subtle)!important;background-color:var(--bg-subtle)!important;color:var(--text)!important}.diagram-svg svg .node rect,.diagram-svg svg .node circle,.diagram-svg svg .node polygon,.diagram-svg svg .node path,.diagram-svg svg .timeline-node .node-bkg{fill:var(--bg-raised)!important;stroke:var(--border-strong)!important}.diagram-svg svg .timeline-node text,.diagram-svg svg .timeline-node tspan{fill:var(--text)!important}.diagram-svg svg .cluster rect,.diagram-svg svg .cluster polygon,.diagram-svg svg .cluster path{fill:var(--bg-subtle)!important;stroke:var(--border-strong)!important}.diagram-svg svg .cluster-label text{fill:var(--text)!important}.diagram-svg svg .edgePath path,.diagram-svg svg .flowchart-link{stroke:var(--text-muted)!important}.diagram-svg svg marker path{fill:var(--text-muted)!important}.diagram>figcaption{margin-block-start:.75rem}.chart{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-subtle);margin-block:2.5rem;padding:1.25rem}.chart-svg{-webkit-overflow-scrolling:touch;width:min(100%,42rem);margin-inline:auto;display:block;overflow-x:auto}.chart-svg svg{color:var(--text);display:block;background:0 0!important;width:100%!important;max-width:none!important;height:auto!important}.chart-svg svg text,.chart-svg svg .role-axis-title,.chart-svg svg .role-axis-label,.chart-svg svg .role-legend-label,.chart-svg svg .role-legend-title{fill:var(--text)!important}.chart-svg svg .role-axis-grid line,.chart-svg svg .role-axis-domain,.chart-svg svg .role-axis-tick{stroke:var(--border-strong)!important}.chart>figcaption{margin-block-start:.75rem}.dialogue{background:var(--bg-subtle);border:1px solid var(--border);border-radius:14px;margin-block:2rem;padding:1rem clamp(.75rem,3vw,1.4rem)}.dialogue-line{grid-template-columns:52px minmax(0,1fr);grid-template-areas:"avatar speaker""avatar say";align-items:center;gap:.1rem .75rem;display:grid;margin-block:.9rem!important}.dialogue-line[data-role=junior]{text-align:start;grid-template-columns:minmax(0,1fr) 52px;grid-template-areas:"speaker avatar""say avatar"}.dialogue-avatar{border:1px solid var(--border-strong);background:var(--bg-raised);width:52px;height:52px;color:var(--accent);border-radius:50%;grid-area:avatar;place-items:center;font-weight:700;line-height:1;display:grid;overflow:hidden}.dialogue-avatar img{object-fit:cover;width:100%;height:100%}.dialogue-line .speaker{color:var(--text-muted);white-space:nowrap;grid-area:speaker;font-size:.8125rem;font-weight:700}.dialogue-line .say{border:1px solid var(--border);background:var(--bg-raised);border-radius:.35rem 1rem 1rem;grid-area:say;justify-self:start;max-width:min(100%,34rem);padding:.55rem .85rem;line-height:1.75}.dialogue-line[data-role=junior] .say{background:color-mix(in srgb, var(--accent) 12%, var(--bg-raised));border-radius:1rem .35rem 1rem 1rem;justify-self:end}@media (width<=30rem){.dialogue-line,.dialogue-line[data-role=junior]{text-align:start;grid-template-columns:44px minmax(0,1fr);grid-template-areas:"avatar speaker""avatar say"}.dialogue-avatar{width:44px;height:44px}.dialogue-line[data-role=junior] .say{justify-self:start}}.article-body sup a{padding-inline:.15em;font-size:.75em;text-decoration:none}.article-layout{max-width:65rem;display:block}.citation-popover,.citation-reference,.citation-link{position:relative}.citation-popover{vertical-align:baseline;display:inline-block}.citation-reference{vertical-align:baseline;padding-inline:.12em;font-size:.62em;line-height:1;text-decoration:none;display:inline-block}.citation-group{white-space:nowrap;vertical-align:baseline;color:var(--accent);margin-inline:.15em;font-size:.62em;line-height:1;display:inline-block}.citation-group .citation-popover{font-size:inherit;vertical-align:baseline}.citation-group .citation-reference{font-size:inherit;vertical-align:baseline;padding-inline:0}.citation-tooltip{z-index:20;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-raised);width:min(28rem,100vw - 2rem);color:var(--text);text-align:start;white-space:normal;padding:.75rem .9rem;font-size:.8125rem;font-weight:400;line-height:1.55;display:none;position:absolute;inset-block-start:calc(100% + .45rem);inset-inline-start:0;box-shadow:0 .5rem 1.5rem #0000002e}.citation-link:hover .citation-tooltip,.citation-popover:hover .citation-tooltip,.citation-popover:focus-within .citation-tooltip,.citation-reference:hover .citation-tooltip,.citation-reference:focus-visible .citation-tooltip,.citation-reference-popover[data-citation-open=true] .citation-tooltip,.citation-reference[data-citation-open=true] .citation-tooltip{gap:.35rem;display:grid}.citation-tooltip-statement{color:var(--text)}.citation-tooltip-meta,.citation-tooltip-source{color:var(--text-muted)}.citation-tooltip-source strong{color:var(--text)}.citation-tooltip-source-link{color:var(--accent)}@media (width<=48rem){.citation-reference-popover .citation-tooltip,.citation-reference .citation-tooltip{width:auto;max-height:min(45vh,18rem);position:fixed;inset-block:auto 1rem;inset-inline:1rem;overflow:auto}}.citations{border-block-start:2px solid var(--border);margin-block-start:3.5rem;padding-block-start:2rem}.citations h2{font-size:var(--step-1);margin-block-start:0}.citations>details>summary{cursor:pointer;font-size:var(--step-1);padding-block:.25rem;font-weight:700;line-height:1.5}.citations>details>summary::marker{color:var(--accent)}.citations ol{padding-inline-start:1.5rem;font-size:.9375rem}.citations li{margin-block:.75rem;line-height:1.7}.citations .publisher{color:var(--text-muted)}.citations .primary{border:1px solid var(--border-strong);color:var(--accent);border-color:var(--accent);border-radius:999px;margin-inline-start:.4em;padding:.05em .5em;font-size:.75rem;display:inline-block}.corrections{border:2px solid var(--accent);border-radius:var(--radius);background:var(--bg-subtle);margin-block-start:2.5rem;padding:1.1rem 1.3rem}.corrections h2{font-size:var(--step-1);margin-block-start:0}.correction+.correction{border-block-start:1px solid var(--border);margin-block-start:1rem;padding-block-start:1rem}.correction time{font-weight:700}.article-body a[rel~=sponsored]:after{content:"PR";vertical-align:super;letter-spacing:.05em;border:1px solid;border-radius:3px;margin-inline-start:.2em;padding:.05em .35em;font-size:.65em}.cover{aspect-ratio:1200/630;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius);display:block;position:relative;overflow:hidden}.cover img{object-fit:cover;width:100%;height:100%;display:block}.cover-fallback{background-color:var(--bg-subtle);background-image:repeating-linear-gradient(-45deg, color-mix(in srgb, var(--border-strong) 45%, transparent) 0 1px, transparent 1px 11px);align-items:flex-end;height:100%;padding:.9rem 1rem;display:flex}.cover-fallback span{font-family:var(--font-mono);letter-spacing:.12em;color:var(--text-muted);background:var(--bg);border:1px solid var(--border);border-radius:2px;padding:.15rem .5rem;font-size:.72rem}:root[data-theme=dark] .cover img{filter:brightness(.88)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .cover img{filter:brightness(.88)}}.lead-story{border-block-end:1px solid var(--border-strong);gap:1.75rem 2.5rem;margin-block:2rem 3rem;padding-block-end:2.5rem;display:grid}@media (width>=64rem){.lead-story{grid-template-columns:minmax(0,1fr) 19rem;align-items:start}}.lead-story .cover{margin-block-end:1.25rem}.lead-story h2{font-family:var(--font-serif);font-weight:700;font-size:var(--step-4);letter-spacing:.01em;text-wrap:balance;margin:.7rem 0 .9rem;line-height:1.42}@media (width>=64rem){.lead-story h2{font-size:var(--step-5)}}.lead-story h2 a{color:var(--text);text-decoration:none}.lead-story h2 a:hover{color:var(--accent);text-decoration:underline}.lead-story .dek{font-size:var(--step-1);color:var(--text-muted);max-width:34rem;margin:0 0 1.25rem;line-height:1.85}.lead-story .meta-line{border-block-start:1px solid var(--border);padding-block-start:.9rem}.lead-summary{background:var(--bg-raised);border:1px solid var(--border);border-block-start:3px solid var(--accent);border-radius:0 0 var(--radius) var(--radius);padding:1.1rem 1.25rem}.lead-summary h3{font-family:var(--font-mono);letter-spacing:.16em;color:var(--accent);margin:0 0 .7rem;font-size:.72rem}.lead-summary ol{color:var(--text-muted);margin:0;padding-inline-start:1.2rem;font-size:.9375rem;line-height:1.85}.lead-summary li+li{margin-block-start:.5rem}@media (width<=47.99rem){.lead-story h2,.article-header h1,.page-header h1{font-size:var(--step-3)}}.card-list{gap:2rem;margin:0;padding:0;list-style:none;display:grid}@media (width>=48rem){.card-list{grid-template-columns:repeat(auto-fill,minmax(19rem,1fr))}}.card{border-block-start:1px solid var(--border-strong);flex-direction:column;gap:.6rem;padding-block-start:1.25rem;display:flex}.card .cover{margin-block-end:.3rem}.card h3{font-family:var(--font-serif);font-weight:700;font-size:var(--step-1);letter-spacing:.01em;margin:0;line-height:1.6}.card h3 a{color:var(--text);text-decoration:none}.card h3 a:hover{color:var(--accent);text-decoration:underline}.card p{color:var(--text-muted);margin:0;font-size:.9375rem;line-height:1.8}.card .meta-line{margin-block-start:auto;padding-block-start:.3rem}.stack{border-block-start:1px solid var(--border);margin:0;padding:0;list-style:none}.stack li{border-block-end:1px solid var(--border);grid-template-columns:4.5rem minmax(0,1fr);gap:.25rem 1.25rem;padding-block:1rem;display:grid}.stack time{font-family:var(--font-mono);color:var(--text-muted);font-variant-numeric:tabular-nums;padding-block-start:.35rem;font-size:.75rem}.stack h3{font-size:var(--step-0);margin:0 0 .3rem;font-weight:700;line-height:1.65}.stack h3 a{color:var(--text);text-decoration:none}.stack h3 a:hover{color:var(--accent);text-decoration:underline}.stack p{color:var(--text-muted);margin:0 0 .4rem;font-size:.875rem;line-height:1.8}.cat-index{background:var(--border);border:1px solid var(--border);gap:1px;margin:0;padding:0;list-style:none;display:grid}@media (width>=46rem){.cat-index{grid-template-columns:1fr 1fr}}@media (width>=68rem){.cat-index{grid-template-columns:repeat(3,1fr)}}.cat-index li{background:var(--bg)}.cat-index a{height:100%;color:var(--text);padding:1.1rem 1.25rem;text-decoration:none;display:block}.cat-index a:hover{background:var(--bg-subtle)}.cat-index strong{align-items:baseline;gap:.6rem;font-size:1rem;display:flex}.cat-index strong span{font-family:var(--font-mono);color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.72rem}.cat-index p{color:var(--text-muted);margin:.35rem 0 0;font-size:.8125rem;line-height:1.75}.section-head{border-block-end:2px solid var(--text);align-items:baseline;gap:1rem;margin-block:3rem 1.5rem;padding-block-end:.6rem;display:flex}.section-head h2{font-size:var(--step-1);letter-spacing:.08em;margin:0;line-height:1.4}.section-head a{font-family:var(--font-mono);letter-spacing:.08em;white-space:nowrap;margin-inline-start:auto;font-size:.75rem}.pagination{flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem;margin-block:3rem;display:flex}.pagination a,.pagination span{border:1px solid var(--border);border-radius:var(--radius);min-width:44px;min-height:44px;color:var(--text);justify-content:center;align-items:center;padding-inline:.75rem;text-decoration:none;display:inline-flex}.pagination [aria-current=page]{background:var(--accent);color:var(--bg);border-color:var(--accent)}.ad-slot{border:1px dashed var(--border);border-radius:var(--radius);background:var(--bg-subtle);contain:layout size;justify-content:center;align-items:center;width:100%;margin-block:2.5rem;display:flex;position:relative;overflow:hidden}.ad-slot[data-slot=site_bottom]{margin-block:3rem 0}.ad-slot:before{content:"広告";letter-spacing:.1em;color:var(--text-muted);margin-block-start:-.5rem;font-size:.6875rem;position:absolute;transform:translateY(-50%)}.ad-slot>*{max-width:100%}.ad-slot .adsbygoogle{align-self:stretch}.site-footer{border-block-start:1px solid var(--border);background:var(--bg-subtle);margin-block-start:5rem;padding-block:2.5rem 3.5rem;font-size:.9375rem}.footer-links{flex-wrap:wrap;gap:.5rem 1.5rem;margin:0 0 1.5rem;padding:0;list-style:none;display:flex}.footer-links a{color:var(--text-muted)}.footer-links .preferred-source-link{border:1px solid var(--border-strong);color:var(--text);border-radius:999px;align-items:center;gap:.35rem;padding:.35rem .7rem;font-size:.82rem;text-decoration:none;display:inline-flex}.footer-links .preferred-source-link:visited{color:var(--text)}.footer-links .preferred-source-link:hover{background:var(--bg-raised);border-color:var(--accent);color:var(--text)}.footer-note{color:var(--text-muted);margin:0;line-height:1.8}.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}.page-header{border-block-end:2px solid var(--text);margin-block:2.5rem 2rem;padding-block-end:1.25rem}.page-header h1{font-family:var(--font-serif);font-weight:600;font-size:var(--step-4);letter-spacing:.02em;text-wrap:balance;margin:0 0 .5rem;line-height:1.4}.page-header p{color:var(--text-muted);max-width:46rem;margin:0}.page-header .meta-line{margin-block-start:.75rem}.empty-state{text-align:center;color:var(--text-muted);padding:4rem 1rem}@media print{.site-header,.site-footer,.progress,.ad-slot{display:none!important}body{color:#000;background:#fff}}@media (width<=63.99rem){.ad-pc-only[data-astro-cid-ygkiugat]{display:none}}@media (width>=64rem){.ad-mobile-only[data-astro-cid-ygkiugat]{display:none}}
