:root{color-scheme:light dark;--font-sans:-apple-system, BlinkMacSystemFont, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, Roboto, sans-serif;--font-mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--max-width:58rem;--color-bg:#0e0f12;--color-surface:#16181d;--color-fg:#e8e6e1;--color-muted:#8b8f98;--color-border:#24262c;--color-accent:#d8a24a;--color-accent-strong:#e8b866;--color-negative:#e08b7c;--color-agent:#7fb2d9}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){color-scheme:light;--color-bg:#faf9f6;--color-surface:#f0eee8;--color-fg:#1b1c1f;--color-muted:#63666c;--color-border:#e3e0d8;--color-accent:#9a6c1e;--color-accent-strong:#7a5518;--color-negative:#b3362b;--color-agent:#2f6f9e}}:root[data-theme=light]{color-scheme:light;--color-bg:#faf9f6;--color-surface:#f0eee8;--color-fg:#1b1c1f;--color-muted:#63666c;--color-border:#e3e0d8;--color-accent:#9a6c1e;--color-accent-strong:#7a5518;--color-negative:#b3362b;--color-agent:#2f6f9e}:root[data-theme=dark]{color-scheme:dark}.theme-toggle{font-family:var(--font-mono);border:1px solid var(--color-border);cursor:pointer;width:2.1em;height:2.1em;color:var(--color-muted);background:0 0;border-radius:999px;justify-content:center;align-self:center;align-items:center;padding:0;font-size:1.05rem;line-height:1;transition:color .15s,border-color .15s;display:inline-flex}.theme-toggle:hover{color:var(--color-accent-strong);border-color:var(--color-accent)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-fg);border-top:2px solid var(--color-accent);-webkit-font-smoothing:antialiased;font-size:1.02rem;line-height:1.9}a{color:var(--color-fg);text-decoration:underline;text-decoration-color:var(--color-border);text-underline-offset:4px;transition:text-decoration-color .15s,color .15s}a:hover{text-decoration-color:var(--color-accent)}.wrap{max-width:var(--max-width);margin:0 auto;padding:0 1.4rem}header.site-header{border:0;margin:0}header.site-header .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem 1.2rem;padding-top:2rem;padding-bottom:.4rem;display:flex}.site-title{letter-spacing:.12em;white-space:nowrap;margin:0;font-size:1.35rem;font-weight:700}.site-title a{align-items:center;gap:.55em;text-decoration:none;display:inline-flex}.site-title .logo{border-radius:50%;flex:none;width:40px;height:40px}.site-nav{font-family:var(--font-mono);letter-spacing:.08em;align-items:center;gap:1.4em;font-size:.78rem;display:flex}.site-nav a{color:var(--color-muted);text-decoration:none}.site-nav a:hover{color:var(--color-accent-strong)}.site-nav{flex-wrap:wrap;row-gap:.4em}@media (width<=520px){.site-nav{gap:.9em}}.ai-banner{background:0 0;border:0}.ai-banner .wrap{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-muted);padding-top:.35rem;padding-bottom:2.6rem;font-size:.72rem}.ai-banner a{color:var(--color-muted)}.ai-banner a:hover{color:var(--color-accent-strong)}main.wrap{min-height:55vh;padding-bottom:4rem}.hero{margin:0 0 3rem}.hero h1{letter-spacing:.02em;margin:0 0 .6rem;font-size:1.9rem;font-weight:700;line-height:1.5}.hero p{color:var(--color-muted);margin:0;font-size:.92rem}.post-list{margin:0;padding:0;list-style:none}.post-list>li{border-top:1px solid var(--color-border);grid-template-columns:7.5em 1fr;align-items:baseline;gap:.2em 1em;padding:1.15rem 0;display:grid}.post-list>li:last-child{border-bottom:1px solid var(--color-border)}.post-date{font-family:var(--font-mono);color:var(--color-muted);letter-spacing:.04em;font-size:.78rem}.post-list a{font-weight:600;text-decoration:none}.post-list a:hover{color:var(--color-accent-strong)}.post-excerpt{color:var(--color-muted);grid-column:2;margin:.35em 0 .1em;font-size:.86rem;line-height:1.7}.tag-list{flex-wrap:wrap;grid-column:2;gap:.9em;margin:0;padding:0;list-style:none;display:flex}.tag-list li{font-family:var(--font-mono);color:var(--color-muted);font-size:.72rem}.tag-list li:before{content:"#";color:var(--color-accent);margin-right:1px}.tag-list a{color:inherit;font-weight:400;text-decoration:none}.tag-list a:hover{color:var(--color-accent-strong)}.tag-page-lead{color:var(--color-muted);margin:0 0 2.2rem;font-size:.88rem}.tag-index{flex-wrap:wrap;gap:.9em 1.4em;margin:0;padding:0;list-style:none;display:flex}.tag-index li{font-family:var(--font-mono);font-size:.88rem}.tag-index li:before{content:"#";color:var(--color-accent);margin-right:1px}.tag-index a{text-decoration:none}.tag-index a:hover{color:var(--color-accent-strong)}.tag-count{color:var(--color-muted);margin-left:.45em;font-size:.78rem}@media (width<=560px){.post-list>li{grid-template-columns:1fr}.post-excerpt,.tag-list{grid-column:1}}.empty-state{border:1px dashed var(--color-border);text-align:center;color:var(--color-muted);border-radius:10px;padding:2.4rem 1.6rem;font-size:.92rem}.empty-state p{margin:.3em 0}article header h1,main h1{letter-spacing:.02em;font-size:1.75rem;line-height:1.55}article h2,main h2{border-top:1px solid var(--color-border);letter-spacing:.03em;margin-top:2.6em;padding-top:1.2em;font-size:1.25rem}article h3,main h3{margin-top:2em;font-size:1.05rem}article p{margin:1.3em 0}article blockquote{border-left:2px solid var(--color-accent);color:var(--color-muted);margin:1.6em 0;padding:.2em 0 .2em 1.2em}article code,main code{font-family:var(--font-mono);background:var(--color-surface);border:1px solid var(--color-border);border-radius:4px;padding:.1em .4em;font-size:.86em}article pre{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;padding:1.1em 1.3em;line-height:1.6;overflow-x:auto}article pre code{background:0 0;border:0;padding:0;font-size:.84rem}article img{border-radius:8px;max-width:100%}article hr{border:0;border-top:1px solid var(--color-border);margin:2.5em 0}.diagram{margin:2em 0}.diagram svg{width:100%;height:auto;display:block}.diagram figcaption{color:var(--color-muted);margin-top:.6em;font-size:.82rem;line-height:1.65}.diagram .d-box{fill:var(--color-surface);stroke:var(--color-border);stroke-width:1.2px}.diagram .d-box-a{fill:none;stroke:var(--color-accent);stroke-width:1.4px}.diagram .d-t{fill:var(--color-fg);font-size:13px}.diagram .d-s{fill:var(--color-muted);font-size:11.5px}.diagram .d-a{fill:var(--color-accent);font-size:11.5px}.diagram .d-e{stroke:var(--color-muted);stroke-width:1.2px;fill:none}.diagram .d-e-a{stroke:var(--color-accent);stroke-width:1.4px;fill:none}.diagram .d-dash{stroke-dasharray:5 4}.diagram .d-ah{fill:var(--color-muted)}.diagram .d-ah-a{fill:var(--color-accent)}.diagram .d-ng{stroke:var(--color-negative);stroke-width:2.2px}.diagram .d-ng-t{fill:var(--color-negative);font-size:13px}.diagram .d-box-ag{fill:var(--color-surface);stroke:var(--color-agent);stroke-width:1.6px}.diagram .d-ag-t{fill:var(--color-agent);font-size:11.5px}.diagram .d-box-dash{fill:none;stroke:var(--color-border);stroke-width:1.2px;stroke-dasharray:5 4}.diagram .d-group{fill:var(--color-accent);opacity:.09}.diagram .d-group-b{fill:var(--color-accent);opacity:.035}.diagram .d-glabel{fill:var(--color-fg);font-size:12px;font-weight:650}.post-cta{margin:1.3em 0 0}.post-cta p{margin:0}.post-cta a{color:var(--color-fg);font-weight:600}.post-cta a:hover{color:var(--color-accent-strong)}.related-posts{margin:2.2em 0 0}.related-posts h2{font-size:.82rem;font-family:var(--font-mono);color:var(--color-muted);letter-spacing:.06em;margin:0 0 .7em;font-weight:600}.related-posts ul{margin:0;padding:0;list-style:none}.related-posts li{padding:.35em 0}.related-posts li:before{content:"→";color:var(--color-accent);margin-right:.55em}.related-posts a{font-size:.94rem;text-decoration:none}.related-posts a:hover{color:var(--color-accent-strong)}.post-nav{border-top:1px solid var(--color-border);grid-template-columns:1fr 1fr;gap:1em;margin:1.4em 0 0;padding-top:1.4em;display:grid}.post-nav a{border:1px solid var(--color-border);border-radius:8px;flex-direction:column;gap:.3em;padding:.9em 1em;text-decoration:none;transition:border-color .15s;display:flex}.post-nav a:hover{border-color:var(--color-accent)}.post-nav-next{text-align:right;grid-column:2;align-items:flex-end}.post-nav-label{font-family:var(--font-mono);color:var(--color-muted);letter-spacing:.04em;font-size:.72rem}.post-nav-title{font-size:.9rem;font-weight:600;line-height:1.5}@media (width<=560px){.post-nav{grid-template-columns:1fr}.post-nav-next{text-align:left;grid-column:1;align-items:flex-start}}.mascot{margin:1.6em 0}.about-hero{aspect-ratio:3;border:1px solid var(--color-border);color:#1b1c1f;background:#f6ecdc url(/nejimaki-header.png) 100%/cover no-repeat;border-radius:12px;flex-direction:column;justify-content:center;min-height:18rem;margin:0 0 2em;padding:2.4em 2em;display:flex;position:relative;overflow:hidden}.about-hero>*{max-width:42%;position:relative}.about-hero h1{color:#1b1c1f;margin-top:0}.about-hero p{margin-bottom:0}@media (width<=640px){.about-hero{aspect-ratio:auto;background-position:70%;justify-content:flex-start;min-height:22rem;padding:1.6em 1.2em}.about-hero:before{content:"";background:linear-gradient(#f6ecdcf0 0%,#f6ecdcd9 55%,#f6ecdc00 85%);position:absolute;inset:0}.about-hero>*{max-width:none}}.mascot img{border:1px solid var(--color-border);border-radius:12px;width:100%;height:auto}.mascot figcaption{color:var(--color-muted);margin-top:.7em;font-size:.82rem;line-height:1.8}footer.site-footer{border-top:1px solid var(--color-border)}footer.site-footer .wrap{font-family:var(--font-mono);color:var(--color-muted);letter-spacing:.05em;padding-top:1.4rem;padding-bottom:2.2rem;font-size:.72rem}footer.site-footer p{margin:0}article .link-card{margin:1.6em 0}article .link-card a{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;align-items:stretch;min-height:7.4rem;text-decoration:none;transition:border-color .15s,transform .15s;display:flex;overflow:hidden}article .link-card a:hover{border-color:var(--color-accent);transform:translateY(-1px)}article .link-card span{display:block}article .link-card .lc-body{flex-direction:column;flex:auto;justify-content:center;min-width:0;padding:.9em 1.15em;display:flex}article .link-card .lc-title{overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:650;line-height:1.55;display:-webkit-box;overflow:hidden}article .link-card .lc-desc{color:var(--color-muted);white-space:nowrap;text-overflow:ellipsis;margin-top:.3em;font-size:.82rem;line-height:1.55;overflow:hidden}article .link-card .lc-host{color:var(--color-muted);align-items:center;gap:.45em;margin-top:.55em;font-size:.78rem;display:flex}article .link-card .lc-fav{border-radius:3px;flex:none;width:16px;height:16px}article .link-card .lc-thumb{object-fit:cover;border-left:1px solid var(--color-border);border-radius:0;flex:none;width:14.1rem;max-width:40%}@media (width<=560px){article .link-card a{flex-direction:column-reverse;min-height:0}article .link-card .lc-thumb{aspect-ratio:1200/630;border-left:0;border-bottom:1px solid var(--color-border);width:100%;max-width:none;height:auto}article .link-card .lc-body{padding:.8em 1em}article .link-card .lc-desc{white-space:normal}}article blockquote.twitter-tweet{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-fg);border-radius:12px;margin:1.6em 0;padding:1em 1.2em;font-style:normal}article blockquote.twitter-tweet p{overflow-wrap:anywhere;margin:0 0 .7em;line-height:1.85}article blockquote.twitter-tweet .tw-by{margin-right:.6em;font-weight:650}article blockquote.twitter-tweet a{color:var(--color-muted);font-size:.82rem}article .twitter-tweet-rendered{margin:1.6em auto!important}article .table-wrap{-webkit-overflow-scrolling:touch;margin:1.6em 0;overflow-x:auto}article table{border-collapse:collapse;width:100%;font-size:.92rem;line-height:1.7}article .note-mark{vertical-align:.15em;margin-left:.1em;font-size:.72em}article p.table-note{color:var(--color-muted);margin:-.8em 0 1.3em;font-size:.82rem;line-height:1.65}article p.table-note+p.table-note{margin-top:-.6em}article table+p.table-note{margin-top:.6em}article p.table-note a{color:inherit}article th,article td{text-align:left;vertical-align:top;border-bottom:1px solid var(--color-border);padding:.6em .85em}article th{white-space:nowrap;border-bottom:1px solid var(--color-muted);font-weight:650}article td code{white-space:nowrap}@media (width<=640px){article th,article td{min-width:9em}article th:first-child,article td:first-child{min-width:6em}}article .relay-chat{margin:2em 0 .6em;font-size:.84rem;line-height:1.6;position:relative}article .relay-chat:before,article .relay-chat:after{content:"";border-left:1px dashed var(--color-border);position:absolute;top:0;bottom:0}article .relay-chat:before{left:33.333%}article .relay-chat:after{left:66.666%}article .rc-heads{gap:2%;margin-bottom:.8em;display:flex;position:relative}article .rc-head{text-align:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;flex:1;padding:.45em .5em;font-size:.78rem;font-weight:650;line-height:1.45}article .rc-row{margin:.45em 0;display:flex;position:relative}article .rc-row.rc-l{padding-right:67.6%}article .rc-row.rc-m{padding-left:34.3%;padding-right:34.3%}article .rc-row.rc-r{padding-left:67.6%}article .rc-row.rc-owner{justify-content:flex-end}article .rc-b{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;max-width:100%;padding:.5em .75em}article .rc-owner .rc-b{border-color:var(--color-accent)}article .rc-ai .rc-b{border-color:var(--color-agent)}article .rc-who{color:var(--color-muted);flex-wrap:wrap;align-items:center;gap:.3em;margin-bottom:.3em;font-size:.72rem;display:flex}article .rc-who img.rc-av{border-radius:50%;flex:none;width:24px;height:24px;margin:0}article .rc-who .rc-name{font-weight:650}article .rc-who .rc-role{color:var(--color-muted)}article .rc-owner .rc-who{color:var(--color-accent)}article .rc-ai .rc-who{color:var(--color-agent)}article .rc-tag{color:var(--color-bg);background:var(--color-accent);border-radius:999px;padding:0 .45em;font-size:.68rem;display:inline-block}article .rc-tag.rc-order{background:var(--color-negative)}article .rc-win{display:none}article .relay-chat+p.table-note{margin-top:1.2em}@media (width<=560px){article .relay-chat:before,article .relay-chat:after,article .rc-heads{display:none}article .rc-row.rc-l,article .rc-row.rc-m,article .rc-row.rc-r{padding:0}article .rc-row.rc-owner{padding-left:12%}article .rc-row.rc-ai{padding-right:12%}article .rc-win{color:var(--color-muted);display:inline}}article .mini-chat{border:1px solid var(--color-border);border-radius:10px;margin:1.6em 0;padding:.7em .9em .8em;font-size:.9rem;line-height:1.65}article .mini-chat .mc-head{color:var(--color-muted);text-align:center;margin-bottom:.45em;font-size:.74rem;font-weight:650}article .mini-chat .rc-row,article .mini-chat .rc-row.rc-owner,article .mini-chat .rc-row.rc-ai{padding:0}article .mini-chat .rc-b{flex:1}article figure.shot{margin:1.8em 0}article figure.shot img{border:1px solid var(--color-border);border-radius:8px;margin:0 auto;display:block}article figure.shot figcaption{text-align:center}article figure.shot video{border:1px solid var(--color-border);background:#000;border-radius:8px;width:100%;height:auto;margin:0 auto;display:block}article figure.shot figcaption,article .shot-row figcaption{color:var(--color-muted);margin-top:.6em;font-size:.82rem;line-height:1.65}article .shot-row{grid-template-columns:repeat(4,1fr);align-items:start;gap:.8em;margin:1.8em 0 .4em;display:grid}article .shot-row figure{margin:0}article .shot-row img{border:1px solid var(--color-border);border-radius:8px;width:100%;display:block}article .shot-row figcaption{text-align:center;margin-top:.4em}article .shot-row+p.table-note{margin-top:.6em}@media (width<=560px){article .shot-row{grid-template-columns:repeat(2,1fr)}}article ul.member-list{gap:.7em;margin:1.4em 0;padding:0;list-style:none;display:grid}article ul.member-list li{border:1px solid var(--color-border);background:var(--color-surface);border-radius:10px;align-items:center;gap:.9em;margin:0;padding:.6em .8em;display:flex}article ul.member-list img{border-radius:50%;flex:none;width:52px;height:52px;margin:0}article ul.member-list .ml-name{font-weight:650}article ul.member-list .ml-role{color:var(--color-muted);margin-left:.5em;font-size:.8rem}article ul.member-list .ml-work{color:var(--color-muted);font-size:.88rem;line-height:1.6;display:block}.series-nav{margin:.4em 0 2.2em}.series-nav .series-title{color:var(--color-fg);margin:0 0 .8em;font-size:.95rem;font-weight:650}.series-nav .series-title .st-label{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-accent);margin-right:.7em;font-size:.88rem;font-weight:600}.series-nav ol{grid-template-columns:repeat(4,1fr);gap:0 1.2em;margin:0;padding:0;list-style:none;display:grid}.series-nav li{border-top:2px solid var(--color-border);margin:0;padding-top:.55em}.series-nav li.current{border-top-color:var(--color-accent)}.series-nav li>a,.series-nav li>span{font-size:.82rem;line-height:1.55;text-decoration:none;display:block}.series-nav .sn-no{font-family:var(--font-mono);color:var(--color-muted);font-size:.72rem;display:block}.series-nav li.current .sn-no{color:var(--color-accent)}.series-nav .sn-t{color:var(--color-muted);display:block}.series-nav li.current .sn-t{color:var(--color-fg);font-weight:600}.series-nav li>a:hover .sn-t{color:var(--color-accent-strong)}@media (width<=560px){.series-nav ol{grid-template-columns:repeat(2,1fr);gap:.9em 1em}}article{position:relative}.post-toc{display:none}.post-notice-inline{color:var(--color-muted);margin:1.2em 0 0;font-size:.78rem}@media (width>=1280px){.post-notice-inline{display:none}.post-toc{width:min(16rem, calc((100vw - var(--max-width)) / 2 - 3rem));display:block;position:absolute;bottom:0;left:calc(100% + 2.5rem)}.post-toc .toc-inner{max-height:calc(100vh - 6rem);font-size:.88rem;line-height:1.55;position:sticky;top:5rem;overflow-y:auto}.post-toc .toc-title{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-muted);margin:0 0 .6em;font-size:.72rem}.post-toc ol{border-left:1px solid var(--color-border);margin:0;padding:0;list-style:none}.post-toc li{margin:0}.post-toc ol{counter-reset:toc}.post-toc li.d2{counter-increment:toc}.post-toc li.d2 a:before{content:counter(toc) ". ";font-family:var(--font-mono);color:var(--color-accent);font-size:.8em}.post-toc li.d3 a{padding-left:1.7em;font-size:.82rem}.post-toc a{color:var(--color-muted);border-left:2px solid #0000;margin-left:-1px;padding:.32em 0 .32em .95em;text-decoration:none;display:block}.post-toc a:hover{color:var(--color-fg)}.post-toc a.active{color:var(--color-fg);border-left-color:var(--color-accent)}.post-toc .toc-notice{color:var(--color-muted);margin:1.6em 0 0;font-size:.74rem;line-height:1.6}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}article h2,article h3{scroll-margin-top:1.5rem}.post-body{counter-reset:h2num}.post-body>h2{counter-increment:h2num}.post-body>h2:before{content:counter(h2num) ". ";font-family:var(--font-mono);color:var(--color-accent);margin-right:.15em;font-size:.85em}.post-body.intro0{counter-reset:h2num -1}.post-toc ol.intro0{counter-reset:toc -1}article .post-hero{background:#222 var(--hero) center 30% / cover no-repeat;border-radius:14px;margin:0 0 1.6em;padding:clamp(9rem,30vw,15rem) 1.4rem 1.2rem;position:relative;overflow:hidden}article .post-hero:before{content:"";background:linear-gradient(#0000 25%,#0000008c 60%,#000000d1 100%);position:absolute;inset:0}article .post-hero>*{position:relative}article .post-hero h1{color:#fff;text-shadow:0 1px 4px #0009;margin-top:0}article .post-hero .post-date,article .post-hero .post-notice-inline{color:#ffffffd9}article .post-hero .tag-list a{color:#ffd98a}article .post-hero+hr{display:none}@media (width<=640px){article .post-hero{background:#17191c var(--hero) top center / 100% auto no-repeat;padding:calc(52.5% - 2.5rem) 1.1rem 1.1rem}article .post-hero:before{background:linear-gradient(#17191c00 55%,#17191c 100%);height:0;padding-top:52.5%;inset:0 0 auto}}.hero.hero-kv{background:#222 var(--hero) center 35% / cover no-repeat;border-radius:14px;padding:clamp(10rem,32vw,17rem) 1.4rem 1.3rem;position:relative;overflow:hidden}.hero.hero-kv:before{content:"";background:linear-gradient(#0000 25%,#0000008c 60%,#000000d1 100%);position:absolute;inset:0}.hero.hero-kv>*{position:relative}.hero.hero-kv h1{color:#fff;text-shadow:0 1px 4px #0009}.hero.hero-kv p{color:#ffffffe0}@media (width<=640px){.hero.hero-kv{background:#17191c var(--hero) top center / 100% auto no-repeat;padding:calc(54.6% - 2.5rem) 1.1rem 1.1rem}.hero.hero-kv:before{background:linear-gradient(#17191c00 55%,#17191c 100%);height:0;padding-top:54.6%;inset:0 0 auto}}.hero.hero-kv h1{word-break:auto-phrase}
