:root{color-scheme:light dark;--paper:light-dark(#fafafa, #171717);--ink:light-dark(#252525, #efefef);--muted:light-dark(#616161, #b5b5b5);--blue:light-dark(#0072b2, #56b4e9);--selection:light-dark(#dedede, #404040);--measure:36rem;--small:.875rem;--prose-size:1rem;--prose-leading:1.625rem;--entry-prose-size:.9375rem;--entry-leading:1.4375rem;--note-size:.9375rem;--control-size:32px;--reading-top:calc(var(--toolbar-height, calc(var(--control-size) + 8px)) + 16px);--hand:"Bradley Hand", "Segoe Print", cursive;font-family:-apple-system,BlinkMacSystemFont,hiragino sans,hiragino kaku gothic pron,ibm plex sans jp,segoe ui,yu gothic,sans-serif;letter-spacing:.03em;color:var(--ink);background:var(--paper);scroll-behavior:auto;scroll-padding-top:var(--reading-top)}:root:lang(ja){--prose-size:.9375rem;--entry-prose-size:.875rem;line-break:strict}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}*{box-sizing:border-box}body{margin:0;font-size:var(--prose-size);font-weight:400;line-height:var(--prose-leading);overflow-wrap:anywhere;font-kerning:normal;text-autospace:normal;-webkit-font-smoothing:antialiased}[hidden]{display:none!important}.translating{overflow-anchor:none}h1,h2,h3,p,ul,ol{margin:0;padding:0}::selection{color:var(--ink);background:var(--selection)}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.22em}a:hover{color:var(--ink);text-decoration-thickness:2px}a:focus-visible,button:focus-visible,summary:focus-visible,h2:focus-visible{outline:2px solid var(--blue);outline-offset:4px}button{font:inherit;letter-spacing:inherit;line-height:1.5;color:inherit;border:0;background:0 0;cursor:pointer}main:focus{outline:none}.layout{width:min(var(--measure),calc(100% - 48px));margin:0 auto}.page{min-width:0;padding:32px 0 24px}.ann{--ann-font:var(--hand)}.ann.ann-blue{--ann-color:var(--blue)}.ann.ann-no-mark{--ann-mark:transparent}.ann::before,.ann::after{opacity:1}.name-note{--ann-target-gap:8px;--ann-label-max-width:6em;max-width:100%;line-height:inherit}.name-note::after{font-size:var(--note-size)}.entry-heading{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}.entry-heading .entry-title{min-width:0;max-width:100%}.bounty-note{flex:none;padding-inline-start:1.75rem;color:var(--blue);font-family:var(--hand);font-size:var(--note-size);font-weight:400;line-height:1.5;white-space:nowrap;font-variant-numeric:tabular-nums}.bounty-note::before{width:1.25rem;height:1rem;left:0;top:calc(50% - .5rem)}.bounty-note.ann-nw::before{width:1.5rem;height:1.5rem;top:-.5rem;transform:none}.bounty-note::after{display:none}.contribution{--ann-color:var(--muted);width:fit-content;max-width:100%}.contribution-text{display:block}.text-note{--ann-color:var(--muted);display:block;width:fit-content;max-width:calc(100% - 1.75rem);margin-top:.25rem;margin-inline:auto 1.75rem;color:var(--muted);background:0 0;box-shadow:none;font-family:var(--hand);font-size:var(--note-size);font-weight:400;line-height:1.5}.text-note::before{width:1.5rem;height:1.5rem;left:calc(100% + .25rem);top:-.5rem;transform:none}.text-note.ann-nw::before{left:-1.75rem}.text-note.ann-n{max-width:100%;margin-top:1.25rem;margin-inline-end:0}.text-note.ann-n::before{left:max(0px,calc(var(--note-end) - .75rem));right:auto;top:-1.5rem}.text-note::after{display:none}.contribution-mark,.summary-target{--ann-color:var(--muted);color:inherit;background:light-dark(color-mix(in srgb,var(--ann-color) 10%,transparent),color-mix(in srgb,var(--ann-color) 24%,transparent));border-radius:2px;box-decoration-break:clone;-webkit-box-decoration-break:clone}.summary-text{display:block;word-break:keep-all}.summary-note{margin-inline:1.75rem 0}.summary-note a{display:inline-block;max-width:100%;min-height:24px}.sidebar{--small:.875rem;position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;align-items:start;gap:0 16px;margin-inline:-24px;padding:4px 24px;font-size:var(--small);font-weight:400;line-height:1.5}.sidebar::after{content:"";position:absolute;position-anchor:--contents;inset:0 0 auto;height:calc(100% + anchor-size(--contents height,0) + 24px);z-index:-1;pointer-events:none;background:color-mix(in srgb,var(--paper) 75%,transparent);backdrop-filter:blur(8px);mask-image:linear-gradient(to right,transparent,#000 24px,#000 calc(100% - 24px),transparent),linear-gradient(#000 calc(100% - 24px),transparent);mask-composite:intersect}.toc{flex:1 1 5rem;min-width:0}.toc summary{display:flex;align-items:center;gap:8px;min-height:var(--control-size);cursor:pointer;font-size:var(--small);line-height:1.5;list-style:none}.toc summary::-webkit-details-marker{display:none}.toc summary svg{flex:none}.toc-label{white-space:nowrap}.toc-chevron{flex:none}.toc[open] .toc-chevron{transform:rotate(180deg)}.toc nav{position:absolute;top:100%;inset-inline:0;padding:8px 24px 16px;max-height:calc(100dvh - var(--reading-top));overflow-y:auto}.toc[open] nav{anchor-name:--contents}.toc-links{list-style:none;font-size:var(--small);line-height:1.5}.toc-links a{display:flex;align-items:center;padding:4px 0;min-height:var(--control-size);color:var(--muted);line-height:1.5;text-decoration:none}.toc-links a:hover{color:var(--ink);text-decoration:underline}.toc-links a[aria-current=location]{color:var(--ink);text-decoration:underline}.preferences{display:flex;flex:none;align-items:center;gap:16px;margin-inline-start:auto}.language-switch{display:flex;gap:12px;font-size:var(--small);line-height:1.5}.language-switch a,.theme-toggle{display:grid;place-items:center;min-width:var(--control-size);min-height:var(--control-size);padding:0}.language-switch a{color:var(--muted);text-decoration:none}.language-switch a:hover{color:var(--ink);text-decoration:underline}.language-switch a[aria-current]{color:var(--ink);text-decoration:underline}.theme-moon{display:none}[data-theme=dark] .theme-sun{display:none}[data-theme=dark] .theme-moon{display:block}.masthead{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:16px}.identity{min-width:0}.portrait{display:block;width:48px;height:48px;border-radius:4px;object-fit:cover}h1{font-size:clamp(1.5rem,3vw,1.75rem);line-height:1.25;font-weight:400;text-wrap:balance}.profile-handle{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.intro-text{margin-top:16px;font-family:Georgia,hiragino mincho pron,yu mincho,noto serif cjk jp,serif;font-size:.75rem;font-weight:400;line-height:1.5}.intro-text p+p{margin-top:8px}.social-links{display:flex;flex-wrap:wrap;gap:0 8px;margin:12px -8px 0;list-style:none;font-size:var(--small);line-height:1.5}.social-links a{display:inline-flex;align-items:center;min-width:24px;min-height:32px;padding-inline:8px}.note-section{margin-top:48px}h2{margin-bottom:12px;font-size:1.5rem;line-height:2rem;font-weight:400}:root:lang(ja) h2{font-size:1.4375rem}.entries{list-style:none;font-size:var(--entry-prose-size);line-height:var(--entry-leading)}.entry+.entry{margin-top:24px}.entry-title{font-size:1.1875rem;line-height:1.6875rem;font-weight:400}:root:lang(ja) .entry-title{font-size:1.125rem}.identifier{font-family:ui-monospace,sfmono-regular,Consolas,monospace;font-size:inherit;font-weight:inherit;font-variant-numeric:tabular-nums}.entry-title .identifier{display:inline-block;max-width:100%}.research-group+.research-group{margin-top:32px}.entry-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 12px;margin-top:4px;color:var(--muted);font-size:.8125rem;line-height:1.25rem}.entry-meta>span{min-width:0}.entry-date{font-variant-numeric:tabular-nums}.entry-cve{font-weight:400}.entry-date time,.date-end{display:inline-block}.summary,.summaries{margin-top:8px}.summaries{padding-inline-start:1em;list-style:disc}.summaries>li::marker{color:var(--muted);font-size:.7em}.summaries>li+li{margin-top:4px}.references{display:grid;gap:4px;margin-top:8px;list-style:none;color:var(--muted);font-size:.8125rem;line-height:1.25rem}.references a{display:inline-flex;align-items:center;min-width:24px;min-height:24px}.site-footer{margin-top:32px;color:var(--muted);font-size:.75rem;line-height:1.5}.footer-links{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:8px;font-size:var(--small)}.footer-links a{display:inline-flex;align-items:center;justify-content:center;min-width:var(--control-size);min-height:var(--control-size)}.skip-link{position:fixed;top:12px;left:12px;z-index:10;padding:10px 16px;background:var(--paper);transform:translateY(-180%)}.skip-link:focus{transform:none}@media(max-width:40rem){:root{--prose-size:.9375rem;--small:.8125rem}:root:lang(ja){--prose-size:.875rem}h1{font-size:1.4375rem;line-height:1.875rem}h2{font-size:1.375rem}:root:lang(ja) h2{font-size:1.3125rem}.entry-title{font-size:1.125rem}:root:lang(ja) .entry-title{font-size:1.0625rem}.name-note::before,.name-note::after{display:none}.profile-handle{position:static;width:auto;height:auto;margin-top:4px;clip-path:none;overflow:visible;font-family:var(--hand);font-size:var(--note-size);line-height:1.5;color:var(--blue)}}@media(prefers-reduced-transparency:reduce),(forced-colors:active){.sidebar::after{height:calc(100% + anchor-size(--contents height,0));background:var(--paper);backdrop-filter:none;mask-image:none}}@media(min-width:64rem){:root{--reading-top:2rem}.layout{display:grid;width:100%;grid-template-columns:minmax(0,1fr)minmax(0,var(--measure))minmax(0,1fr)}.page{grid-column:2;grid-row:1;padding-top:48px}.sidebar{--rail-gap:clamp(24px, calc(5vw - 40px), 48px);grid-column:3;grid-row:1;align-self:start;flex-direction:column;flex-wrap:nowrap;gap:16px;top:24px;width:min(16rem,calc(100% - var(--rail-gap) - 24px));margin:48px 0 0 var(--rail-gap);padding:0;max-height:calc(100dvh - 48px)}.sidebar::after{content:none}.preferences{order:-1;margin-inline-start:0}.toc{width:100%;min-height:0;flex:initial;overflow-y:auto}.toc summary:not(:focus){display:none}.toc-links a:focus-visible{outline-offset:-2px}.toc nav{position:static;padding:0;max-height:none;overflow:visible}}@media(pointer:coarse){:root{--control-size:40px}}@media(forced-colors:active){.ann{box-shadow:none}.toc-links a[aria-current]{outline:1px solid Highlight;outline-offset:-2px}}@media print{:root,:root[data-theme=dark]{color-scheme:light;--paper:#fff;--ink:#000;--muted:#333;--blue:#333;--selection:transparent}.layout{display:block;width:100%}.page{width:100%;padding:0}.sidebar,.footer-links,.skip-link{display:none}.name-note::before,.name-note::after{display:none}.profile-handle{position:static;width:auto;height:auto;clip-path:none}.entry{break-inside:avoid}}