/*!Shippori Mincho B1 / Noto Sans JP / IBM Plex Mono — SIL OFL 1.1. Licenses: /fonts/OFL-*.txt*/@font-face{font-family:shippori mincho b1;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/shippori-mincho-b1-600.c1d078de2daa91eea53b2df4bcd6f055425b3ce4b64704f58e3782335b2ff2d8.woff2)format('woff2')}@font-face{font-family:shippori mincho b1;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/shippori-mincho-b1-700.76a32938c884704faf6591a1e972be8f7427eb7c95822540bc385d9e11516d32.woff2)format('woff2')}@font-face{font-family:noto sans jp;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sans-jp-400.3a21e776eca48fdf7cb1cf2e99d94f9f8eb3fa0c2ffc698c7da761c8a344bffd.woff2)format('woff2')}@font-face{font-family:noto sans jp;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-sans-jp-500.6ebc64f7e898d3503ba26d0d329baf8d40b9cdebf1beecc41743479199f5041d.woff2)format('woff2')}@font-face{font-family:noto sans jp;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/noto-sans-jp-700.20cd285baf5bab4c224233e69bd45356084b74b9ff2b796f9a9b6f30e534a3f9.woff2)format('woff2')}@font-face{font-family:ibm plex mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400.28c67371d5c33c4c0b7c39a54b9b0c99901fcf5d060cd7578fb3c3f1c10bb3ea.woff2)format('woff2')}@font-face{font-family:ibm plex mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-500.9599e243ca4f8f34c52c7784df510a36fed5f7b77461c25a57da7d76a1fe8478.woff2)format('woff2')}:root{--bg:#ffffff;--surface:#ffffff;--fg:#1a1a1a;--muted:#5e5e5e;--line:#e5e5e5;--line-strong:#c9c9c9;--accent:#9ec179;--cat:#6f9a4a;--link:#652495;--link-hover:#5c145c;--code-bg:#f4fef5;--code-fg:#1a1a1a;--code-label:#5e5e5e;--code-line:#e5e5e5;--serif:'Shippori Mincho B1','Hiragino Mincho ProN','Yu Mincho',serif;--sans:'Noto Sans JP','Hiragino Sans','Yu Gothic',sans-serif;--mono:'IBM Plex Mono',Menlo,Consolas,monospace}[data-theme=dark]{--bg:#14101c;--surface:#1c1626;--fg:#ece8f2;--muted:#a79fb5;--line:#2e2740;--line-strong:#4a4160;--accent:#9ec179;--cat:#b7d69a;--link:#b4ffc0;--link-hover:#d6ffe0;--code-bg:#320a50;--code-fg:#f2e9f7;--code-label:#c9a8dc;--code-line:#2e2740}[data-theme=dark] .chroma{background:0 0}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--sans);font-size:16px;line-height:1.8}a{color:var(--link);text-decoration:none}a:hover{color:var(--link-hover);text-decoration:underline}img{max-width:100%;height:auto}.wrap{max-width:960px;margin:0 auto;padding:0 24px}.mono{font-family:var(--mono)}.muted{color:var(--muted)}.label{margin:0;font-size:13px;font-weight:700;letter-spacing:.1em;color:var(--muted)}.badge{font-size:11px;padding:1px 6px;border:1px solid var(--line-strong);border-radius:2px;color:var(--muted)}.site-header{border-bottom:1px solid var(--line)}.site-header__in{height:72px;display:flex;align-items:center;justify-content:space-between;gap:16px}.site-header__brand{font-family:var(--serif);font-size:24px;font-weight:700;color:var(--fg);letter-spacing:.04em}.site-header__brand:hover{text-decoration:none}.site-nav{display:flex;align-items:center;gap:22px;font-size:14px}.site-nav__link{color:var(--fg);font-weight:500;padding:6px 0;border-bottom:2px solid transparent;white-space:nowrap}.site-nav__link:hover{text-decoration:none;border-bottom-color:var(--line-strong)}.site-nav__link.is-active{border-bottom-color:var(--accent)}.site-nav__icon{display:flex;align-items:center;color:var(--fg);background:0 0;border:0;padding:0;cursor:pointer}.theme-toggle{color:var(--muted)}.theme-toggle .icon-sun{display:none}[data-theme=dark] .theme-toggle .icon-sun{display:block}[data-theme=dark] .theme-toggle .icon-moon{display:none}.main{max-width:960px;margin:0 auto;padding:48px 24px 0}.hero{display:flex;flex-direction:column;gap:10px;padding-bottom:28px}.hero__title{margin:0;font-family:var(--serif);font-size:34px;font-weight:700;line-height:1.35;letter-spacing:.02em}.hero__title .accent{color:var(--link)}.hero__intro{display:flex;flex-direction:column;gap:8px;font-size:14.5px;line-height:1.8;color:var(--muted)}.hero__intro p{margin:0}.hero__rule{height:3px;width:64px;background:var(--accent);margin-top:6px}.list{display:flex;flex-direction:column}.list__head{display:flex;align-items:center;justify-content:space-between;padding-bottom:4px}.more{font-size:13px;display:flex;align-items:center;gap:4px}.card{display:flex;flex-direction:column;gap:8px;padding:28px 0 30px;border-bottom:2px solid var(--line-strong)}.card__meta{display:flex;align-items:center;gap:12px;font-size:12px;color:var(--muted)}.card__bar{width:18px;height:3px;background:var(--accent);display:inline-block;flex-shrink:0}.card__cat a{color:var(--cat);font-weight:600;letter-spacing:.04em}.card__title{margin:0;font-family:var(--serif);font-size:24px;line-height:1.45;font-weight:700}.card__title a{color:var(--fg)}.card__desc{margin:0;font-size:14.5px;line-height:1.8;color:var(--muted)}.card__thumb img{max-height:180px;width:auto;border:1px solid var(--line)}.chips{display:flex;gap:12px;flex-wrap:wrap;padding-top:28px;align-items:center}.chip{color:var(--fg);font-size:14px;padding:6px 14px;border:1px solid var(--line);border-radius:2px}.chip:hover{text-decoration:none;border-color:var(--accent)}.featured{padding:8px 0 24px;display:flex;flex-direction:column;gap:12px}.featured__grid,.related__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.featured__item,.related__item{color:var(--fg);font-family:var(--serif);font-size:16px;line-height:1.5;font-weight:700;padding-top:10px;border-top:2px solid var(--accent)}.page-title{margin:0 0 24px;font-family:var(--serif);font-size:30px;line-height:1.4;font-weight:700}.page-title__count{font-size:14px;font-weight:400}.terms{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px 18px;font-size:15px}.terms a{color:var(--fg);border-bottom:2px solid var(--accent)}.archive-year{margin-bottom:28px}.archive-year__h{margin:0 0 8px;font-family:var(--serif);font-size:22px;padding-bottom:6px;border-bottom:2px solid var(--accent)}.archive-list{list-style:none;margin:0;padding:0}.archive-list li{display:flex;gap:16px;padding:8px 0;border-bottom:1px solid var(--line);font-size:15px}.archive-list time{color:var(--muted);font-size:13px;flex-shrink:0;padding-top:3px}.archive-list a{color:var(--fg)}.pager{display:flex;justify-content:space-between;align-items:center;padding:24px 0;font-size:14px}.article-wrap{display:flex;gap:48px;align-items:flex-start}.article{flex:1;min-width:0;display:flex;flex-direction:column;gap:20px}.crumb{font-size:12px;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap}.crumb a{color:var(--muted)}.crumb a.crumb__cat{color:var(--cat)}.article__title{margin:0;font-family:var(--serif);font-size:36px;line-height:1.4;font-weight:700;letter-spacing:.01em}.article__meta{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--muted);padding-bottom:18px;border-bottom:1px solid var(--line)}.article__meta .ai-note{color:var(--link)}.prose{font-size:16.5px;line-height:2}.prose>*:first-child{margin-top:0}.prose p{margin:0 0 1.2em}.prose h2{margin:40px 0 16px;font-family:var(--serif);font-size:24px;font-weight:700;line-height:1.5;padding-bottom:8px;border-bottom:2px solid var(--accent)}.prose h3{margin:32px 0 12px;font-family:var(--serif);font-size:20px;font-weight:700;line-height:1.5}.prose h4{margin:24px 0 8px;font-size:17px;font-weight:700}.prose ul,.prose ol{padding-left:1.6em;margin:0 0 1.2em}.prose li{margin:.2em 0}.prose blockquote{margin:0 0 1.2em;padding:4px 18px;border-left:3px solid var(--accent);color:var(--muted)}.prose img{display:block;margin:8px auto 1.2em;border:1px solid var(--line)}.prose table{border-collapse:collapse;width:100%;margin:0 0 1.2em;font-size:15px}.prose th,.prose td{border:1px solid var(--line);padding:6px 10px;text-align:left}.prose th{background:var(--code-bg)}.prose code{font-family:var(--mono);font-size:.9em;background:var(--code-bg);padding:1px 5px;border-radius:3px;border:1px solid var(--code-line)}.prose pre code{background:0 0;padding:0;border:0;font-size:13px}.prose hr{border:0;border-top:1px solid var(--line);margin:32px 0}.code{background:var(--code-bg);border:1px solid var(--code-line);border-radius:4px;overflow:hidden;margin:0 0 1.4em}.code__bar{display:flex;justify-content:space-between;align-items:center;padding:6px 12px;border-bottom:1px solid var(--code-line);font-size:11px;color:var(--code-label)}.code__copy{font:inherit;color:inherit;background:0 0;border:1px solid var(--code-line);border-radius:4px;padding:1px 8px;cursor:pointer}.code__copy:hover{border-color:var(--accent)}.code pre{margin:0;padding:14px 16px;font-family:var(--mono);font-size:13px;line-height:1.7;white-space:pre;overflow-x:auto;color:var(--code-fg);background:0 0}.code .chroma{background:0 0}.tags{display:flex;gap:14px;flex-wrap:wrap;margin-top:6px;font-size:13px}.share{display:flex;gap:14px;align-items:center;font-size:13px}.ad{margin:8px 0}.related{margin-top:24px;display:flex;flex-direction:column;gap:12px;border-top:1px solid var(--line);padding-top:24px}.prevnext{display:flex;justify-content:space-between;gap:12px;font-size:13px;color:var(--muted);padding-top:8px}.prevnext a{color:var(--muted)}.prevnext__prev{flex:1}.prevnext__next{flex:1;text-align:right}.prevnext a span{color:var(--fg);font-weight:500}.toc ul{list-style:none;margin:0;padding:0}.toc ul ul{padding-left:12px}.toc li a{display:block;font-size:13px;line-height:1.55;color:var(--fg);padding:3px 0 3px 12px;border-left:2px solid var(--line)}.toc li a:hover{text-decoration:none;color:var(--link)}.toc li a.is-active{color:var(--link);border-left-color:var(--link)}.toc--side{width:220px;flex-shrink:0;position:sticky;top:24px;display:flex;flex-direction:column;gap:10px;padding-top:6px;max-height:calc(100vh - 48px);overflow:auto}.toc--side .label{font-size:12px}.toc--inline{display:none;border:1px solid var(--line);border-radius:4px;padding:8px 14px}.toc--inline summary{cursor:pointer;font-size:13px;font-weight:700;letter-spacing:.1em;color:var(--muted)}.toc--inline ul{margin-top:8px}.article--page .prose{max-width:720px}.related-sites{margin-top:32px}.related-sites ul{margin:8px 0 0;padding-left:1.2em;font-size:14px}.related-sites--compact{margin:12px 0 0;font-size:13px}.related-sites--compact ul{list-style:none;padding:0;display:flex;gap:14px;flex-wrap:wrap}.comments{margin-top:24px}.site-footer{border-top:1px solid var(--line);margin-top:64px}.site-footer__in{padding:28px 24px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--muted)}.site-footer__links{display:flex;gap:18px;flex-wrap:wrap}.site-footer__links a{color:var(--muted)}.site-footer__copy{font-family:var(--serif)}.main--search{min-height:50vh}.pagefind-ui{--pagefind-ui-primary:var(--link);--pagefind-ui-text:var(--fg);--pagefind-ui-background:var(--bg);--pagefind-ui-border:var(--line);--pagefind-ui-tag:var(--code-bg);--pagefind-ui-font:var(--sans)}@media(max-width:959px){.toc--side{display:none}.toc--inline{display:block}.featured__grid,.related__grid{grid-template-columns:1fr}}@media(max-width:640px){.site-header__in{height:auto;min-height:56px;padding-top:10px;padding-bottom:10px;flex-wrap:wrap;row-gap:4px}.site-header__brand{font-size:20px}.site-nav{gap:14px;font-size:13px;margin-left:auto}.main{padding:32px 18px 0}.wrap,.site-footer__in{padding-left:18px;padding-right:18px}.hero__title{font-size:26px}.article__title{font-size:26px}.card__title{font-size:20px}.prose{font-size:15.5px;line-height:1.9}.prose h2{font-size:20px}.site-footer__in{flex-direction:column;align-items:flex-start}}.bg{background-color:#f7f7f7}.chroma{background-color:#f7f7f7;-webkit-text-size-adjust:none}.chroma .err{color:#f6f8fa;background-color:#82071e}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#dedede}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#cf222e}.chroma .kc{color:#cf222e}.chroma .kd{color:#cf222e}.chroma .kn{color:#cf222e}.chroma .kp{color:#cf222e}.chroma .kr{color:#cf222e}.chroma .kt{color:#cf222e}.chroma .na{color:#1f2328}.chroma .nc{color:#1f2328}.chroma .no{color:#0550ae}.chroma .nd{color:#0550ae}.chroma .ni{color:#6639ba}.chroma .nl{color:#900;font-weight:700}.chroma .nn{color:#24292e}.chroma .nx{color:#1f2328}.chroma .nt{color:#0550ae}.chroma .nb{color:#6639ba}.chroma .bp{color:#6a737d}.chroma .nv{color:#953800}.chroma .vc{color:#953800}.chroma .vg{color:#953800}.chroma .vi{color:#953800}.chroma .vm{color:#953800}.chroma .nf{color:#6639ba}.chroma .fm{color:#6639ba}.chroma .s{color:#0a3069}.chroma .sa{color:#0a3069}.chroma .sb{color:#0a3069}.chroma .sc{color:#0a3069}.chroma .dl{color:#0a3069}.chroma .sd{color:#0a3069}.chroma .s2{color:#0a3069}.chroma .se{color:#0a3069}.chroma .sh{color:#0a3069}.chroma .si{color:#0a3069}.chroma .sx{color:#0a3069}.chroma .sr{color:#0a3069}.chroma .s1{color:#0a3069}.chroma .ss{color:#032f62}.chroma .m{color:#0550ae}.chroma .mb{color:#0550ae}.chroma .mf{color:#0550ae}.chroma .mh{color:#0550ae}.chroma .mi{color:#0550ae}.chroma .il{color:#0550ae}.chroma .mo{color:#0550ae}.chroma .o{color:#0550ae}.chroma .ow{color:#0550ae}.chroma .or{color:#0550ae}.chroma .p{color:#1f2328}.chroma .c{color:#57606a}.chroma .ch{color:#57606a}.chroma .cm{color:#57606a}.chroma .c1{color:#57606a}.chroma .cs{color:#57606a}.chroma .cp{color:#57606a}.chroma .cpf{color:#57606a}.chroma .gd{color:#82071e;background-color:#ffebe9}.chroma .ge{color:#1f2328}.chroma .gi{color:#116329;background-color:#dafbe1}.chroma .go{color:#1f2328}.chroma .gl{text-decoration:underline}.chroma .w{color:#fff}[data-theme=dark] .bg{color:#f8f8f2;background-color:#282a36}[data-theme=dark] .chroma{color:#f8f8f2;background-color:#282a36;-webkit-text-size-adjust:none}[data-theme=dark] .chroma .x{color:#f8f8f2}[data-theme=dark] .chroma .err{color:#f8f8f2}[data-theme=dark] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}[data-theme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-theme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}[data-theme=dark] .chroma .hl{background-color:#3d3f4a}[data-theme=dark] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-theme=dark] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-theme=dark] .chroma .line{display:flex}[data-theme=dark] .chroma .k{color:#ff79c6}[data-theme=dark] .chroma .kc{color:#ff79c6}[data-theme=dark] .chroma .kd{color:#8be9fd;font-style:italic}[data-theme=dark] .chroma .kn{color:#ff79c6}[data-theme=dark] .chroma .kp{color:#ff79c6}[data-theme=dark] .chroma .kr{color:#ff79c6}[data-theme=dark] .chroma .kt{color:#8be9fd}[data-theme=dark] .chroma .na{color:#50fa7b}[data-theme=dark] .chroma .nc{color:#50fa7b}[data-theme=dark] .chroma .no{color:#f8f8f2}[data-theme=dark] .chroma .nd{color:#f8f8f2}[data-theme=dark] .chroma .ni{color:#f8f8f2}[data-theme=dark] .chroma .ne{color:#f8f8f2}[data-theme=dark] .chroma .nl{color:#8be9fd;font-style:italic}[data-theme=dark] .chroma .nn{color:#f8f8f2}[data-theme=dark] .chroma .nx{color:#f8f8f2}[data-theme=dark] .chroma .nt{color:#ff79c6}[data-theme=dark] .chroma .nb{color:#8be9fd;font-style:italic}[data-theme=dark] .chroma .bp{font-style:italic}[data-theme=dark] .chroma .nv{color:#8be9fd;font-style:italic}[data-theme=dark] .chroma .vc{color:#8be9fd;font-style:italic}[data-theme=dark] .chroma .vg{color:#8be9fd;font-style:italic}[data-theme=dark] .chroma .vi{color:#8be9fd;font-style:italic}[data-theme=dark] .chroma .vm{color:#8be9fd;font-style:italic}[data-theme=dark] .chroma .nf{color:#50fa7b}[data-theme=dark] .chroma .fm{color:#50fa7b}[data-theme=dark] .chroma .ld{color:#f8f8f2}[data-theme=dark] .chroma .s{color:#f1fa8c}[data-theme=dark] .chroma .sa{color:#f1fa8c}[data-theme=dark] .chroma .sb{color:#f1fa8c}[data-theme=dark] .chroma .sc{color:#f1fa8c}[data-theme=dark] .chroma .dl{color:#f1fa8c}[data-theme=dark] .chroma .sd{color:#f1fa8c}[data-theme=dark] .chroma .s2{color:#f1fa8c}[data-theme=dark] .chroma .se{color:#f1fa8c}[data-theme=dark] .chroma .sh{color:#f1fa8c}[data-theme=dark] .chroma .si{color:#f1fa8c}[data-theme=dark] .chroma .sx{color:#f1fa8c}[data-theme=dark] .chroma .sr{color:#f1fa8c}[data-theme=dark] .chroma .s1{color:#f1fa8c}[data-theme=dark] .chroma .ss{color:#f1fa8c}[data-theme=dark] .chroma .m{color:#bd93f9}[data-theme=dark] .chroma .mb{color:#bd93f9}[data-theme=dark] .chroma .mf{color:#bd93f9}[data-theme=dark] .chroma .mh{color:#bd93f9}[data-theme=dark] .chroma .mi{color:#bd93f9}[data-theme=dark] .chroma .il{color:#bd93f9}[data-theme=dark] .chroma .mo{color:#bd93f9}[data-theme=dark] .chroma .o{color:#ff79c6}[data-theme=dark] .chroma .ow{color:#ff79c6}[data-theme=dark] .chroma .or{color:#ff79c6}[data-theme=dark] .chroma .p{color:#f8f8f2}[data-theme=dark] .chroma .c{color:#6272a4}[data-theme=dark] .chroma .ch{color:#6272a4}[data-theme=dark] .chroma .cm{color:#6272a4}[data-theme=dark] .chroma .c1{color:#6272a4}[data-theme=dark] .chroma .cs{color:#6272a4}[data-theme=dark] .chroma .cp{color:#ff79c6}[data-theme=dark] .chroma .cpf{color:#ff79c6}[data-theme=dark] .chroma .gd{color:#f55}[data-theme=dark] .chroma .ge{text-decoration:underline}[data-theme=dark] .chroma .gr{color:#f8f8f2}[data-theme=dark] .chroma .gh{font-weight:700}[data-theme=dark] .chroma .gi{color:#50fa7b;font-weight:700}[data-theme=dark] .chroma .go{color:#44475a}[data-theme=dark] .chroma .gp{color:#f8f8f2}[data-theme=dark] .chroma .gs{color:#f8f8f2}[data-theme=dark] .chroma .gu{font-weight:700}[data-theme=dark] .chroma .gt{color:#f8f8f2}[data-theme=dark] .chroma .gl{text-decoration:underline}[data-theme=dark] .chroma .w{color:#f8f8f2}