:root{--blue:#100a22;--deep:#1a1233;--ink:#100a22;--ln:rgba(239,234,252,.8);--line:rgba(160,148,196,.4);--faint:rgba(160,148,196,.07);--fg:#efeafc;--dim:#a094c4;--mag:#ff2f87;--yel:#ffe14a;--red:#ff2f87;--cyan:#19d3c0;--head:"Dela Gothic One","Zen Kaku Gothic New",Impact,sans-serif;--body:"Zen Kaku Gothic New",system-ui,sans-serif;--mono:"IBM Plex Mono",ui-monospace,monospace;color-scheme:dark}*{box-sizing:border-box}body{margin:0;color:var(--fg);font:17px/1.75 var(--body);padding-inline:max(16px,env(safe-area-inset-left,0px))max(16px,env(safe-area-inset-right,0px));background-color:var(--blue)}.wrap{max-width:980px;margin:0 auto}a{color:var(--yel);text-underline-offset:3px}a:focus-visible,summary:focus-visible{outline:2px solid var(--yel);outline-offset:2px}header{display:grid;grid-template-columns:auto 1fr auto;border:2px solid var(--ln);background:var(--deep);margin-top:16px}.logo{display:block;padding:8px 16px;text-decoration:none;color:var(--ink);background:var(--mag);border-right:2px solid var(--ln);text-align:center}.logo b{display:block;font:28px/1.1 var(--head);letter-spacing:.06em}.logo span{display:block;font:500 10px var(--mono);letter-spacing:.32em;border-top:2px solid var(--ink);margin-top:3px;padding-top:3px}.hmeta{display:flex;flex-direction:column;justify-content:center;padding:6px 16px;font:600 13px/1.5 var(--mono);color:var(--dim);letter-spacing:.08em}header nav{display:flex}header nav a{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:6px 16px;border-left:2px solid var(--ln);color:var(--fg);text-decoration:none;font:500 12px/1.3 var(--mono);letter-spacing:.14em}header nav a i{font:10px var(--body);font-style:normal;color:var(--dim);letter-spacing:.1em}header nav a:hover,header nav a:focus-visible{background:var(--yel);color:var(--ink)}header nav a:hover i,header nav a:focus-visible i{color:var(--ink)}@media(max-width:700px){header{grid-template-columns:1fr}.logo{border-right:0;border-bottom:2px solid var(--ln)}.hmeta{display:none}header nav a{flex:1;border-left:0;border-right:2px solid var(--ln)}header nav a:last-child{border-right:0}}.cover{position:relative;display:grid;grid-template-columns:auto 1fr;align-items:center;margin-top:16px;background:var(--mag);color:var(--ink);overflow:hidden}.cover::before{content:"";position:absolute;inset:0;background:radial-gradient(circle,rgba(0,0,0,.18) 2px,transparent 2.5px)0 0/12px 12px;-webkit-mask:linear-gradient(110deg,#000,transparent 55%);mask:linear-gradient(110deg,#000,transparent 55%)}.cover>*{position:relative;min-width:0}.cover .t{padding:16px 22px 16px 14px}.iss{font:700 12px var(--mono);letter-spacing:.1em}.cover h1{text-transform:uppercase;font:clamp(20px,3.4vw,34px)/1.1 var(--head);margin:6px 0 8px;text-wrap:balance}.cover p{font-weight:700;font-size:16px;line-height:1.5;max-width:38ch;margin:0}.art{padding:14px 0 14px 18px}.cover .ring{position:absolute;right:-90px;top:6px;height:240px;width:auto;max-width:none;pointer-events:none;-webkit-mask-image:linear-gradient(to right,transparent,#000 42%);mask-image:linear-gradient(to right,transparent,#000 42%)}.kana{writing-mode:vertical-rl;font:32px/1 var(--head);color:var(--ink)}@media(max-width:700px){.cover{grid-template-columns:1fr}.art,.cover .ring{display:none}}h2.sec{display:flex;align-items:center;gap:12px;font:500 12px var(--mono);letter-spacing:.2em;color:var(--dim);margin:30px 0 8px}h2.sec::before,h2.sec::after{content:"";flex:1;height:11px;border-left:1px solid var(--dim);border-right:1px solid var(--dim);background:linear-gradient(var(--dim),var(--dim))0/100% 1px no-repeat}.lines{margin-top:4px}.line{display:grid;grid-template-columns:6.5em 1fr 8em;gap:16px;padding:12px 8px;border-bottom:1px solid var(--line);align-items:baseline}.line.head{font:500 11px var(--mono);letter-spacing:.16em;color:var(--dim);border-top:2px solid var(--ln);border-bottom:2px solid var(--ln);padding-block:6px;background:var(--deep)}.line .no b{display:block;font:17px/1.2 var(--head);letter-spacing:.04em;color:var(--mag)}.line .no i{display:block;font:10px var(--mono);letter-spacing:.12em;color:var(--dim);font-style:normal}.line h3{font:21px/1.3 var(--head);margin:0}.line h3 a{color:var(--fg);text-decoration:none}.line h3 a:hover,.line h3 a:focus-visible{color:var(--yel)}.line .k{display:inline-block;border:1px solid var(--yel);color:var(--yel);font:500 10px var(--mono);letter-spacing:.14em;padding:0 6px;margin-right:10px;vertical-align:middle;position:relative;top:-2px}.line p{margin:2px 0 0;color:var(--dim);font-size:15px;line-height:1.55}.line .rev{font:12px var(--mono);color:var(--dim);text-align:right;letter-spacing:.06em}@media(max-width:700px){.line{grid-template-columns:1fr;gap:2px}.line.head{display:none}.line .rev{text-align:left}.line .no b,.line .no i{display:inline;margin-right:8px}}.list-head h1{font:clamp(30px,6vw,44px)/1.1 var(--head);margin:24px 0 8px}.post{margin-top:26px;counter-reset:fig}.post h1{font:clamp(28px,5vw,44px)/1.12 var(--head);margin:0 0 8px;text-wrap:balance}.post h2{display:flex;align-items:center;gap:14px;font:24px/1.25 var(--head);margin:2.6rem 0 .8rem}.post h2::before,.post h2::after{content:"";height:.8em;background:linear-gradient(var(--yel),var(--yel))50%/100% 1px no-repeat}.post h2::before{flex:0 0 26px;border-left:2px solid var(--yel)}.post h2::after{flex:1 1 24px;border-right:2px solid var(--yel);background-image:linear-gradient(var(--line),var(--line))}.post h3{font:700 18px/1.35 var(--body);letter-spacing:.01em;margin:1.8rem 0 .4rem;color:var(--cyan)}.post p,.post li{max-width:70ch}.post{max-width:980px}.post>*{max-width:41rem}.post>h1,.post>.lede{max-width:none}.post::after{content:"";display:block;clear:both}.post>.secbody{max-width:none}.secbody{display:flow-root}.secbody>*{max-width:41rem}.secbody>figure.shot{float:right;clear:right;width:256px;max-width:256px;margin:.3rem 0 .8rem 24px}.post>h2{max-width:none}.shot .crt{display:block}.secbody>figure.shot img{width:100%;height:auto}.post p,.post li{line-height:1.65}.lede{font-size:19px;line-height:1.55;color:var(--fg);margin:.4rem 0 1rem}.post blockquote{margin:1rem 0;padding:.2rem 1rem;border-left:3px solid var(--yel);color:var(--dim)}.meta{font:12px var(--mono);color:var(--dim);letter-spacing:.08em;margin:.2rem 0}.tag{font:500 11px var(--mono);border:1px solid var(--line);color:var(--dim);padding:1px 8px;margin-right:6px}img{max-width:100%;height:auto}img.pixel{image-rendering:pixelated}figure{margin:1.6rem 0;counter-increment:fig}figcaption{color:var(--dim);font:13px/1.5 var(--mono);margin-top:10px}figcaption::before{content:"FIG. " counter(fig,decimal-leading-zero)"  ";color:var(--yel);letter-spacing:.08em}.crt{border:1px solid var(--ln);padding:6px;background:var(--deep);outline:1px dashed var(--line);outline-offset:5px;line-height:0}.crt img{display:block}.shot .crt{display:inline-block;max-width:100%}.compare{display:flex;gap:18px;flex-wrap:wrap}.compare>div{flex:1 1 220px;min-width:0}.compare span{display:block;font:500 11px var(--mono);letter-spacing:.16em;color:var(--cyan);margin-top:8px}.compare figcaption{flex-basis:100%;margin-top:0}pre{overflow-x:auto;padding:12px;font:14px/1.5 var(--mono);border:1px solid var(--line);background:var(--deep)}code{font-family:var(--mono)}:not(pre)>code{background:rgba(160,148,196,.16);padding:.04em .32em;font-size:.88em;line-height:1}table{border-collapse:collapse;display:block;overflow-x:auto;font-size:15px}td,th{border:1px solid var(--line);padding:6px 10px;text-align:left}th{background:var(--deep);font:500 12px var(--mono);letter-spacing:.1em}.patchbox{position:relative;border:2px solid var(--ln);background:var(--deep);margin:34px 0 26px;padding:34px 18px 14px;display:flex;flex-wrap:wrap;gap:6px 18px;align-items:baseline}.patchbox::before{content:"仕様書 / PATCH SPECIFICATION";position:absolute;top:0;left:0;right:0;padding:3px 12px;background:var(--mag);font:500 11px var(--mono);letter-spacing:.18em;color:var(--ink)}.patchbox strong{font:21px/1.25 var(--head)}.patchbox span{font:13px var(--mono);color:var(--dim)}.patchbox small{flex-basis:100%;color:var(--dim);font-size:14px}.patchbox a.btn{margin-left:auto;border:2px solid var(--yel);color:var(--yel);font:600 14px var(--mono);letter-spacing:.14em;padding:5px 16px;text-decoration:none}.patchbox a.btn:hover,.patchbox a.btn:focus-visible{background:var(--yel);color:var(--deep)}.tape{flex-basis:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));margin:8px 0 2px;border:1px solid var(--line)}.tape div{padding:6px 10px;border-right:1px solid var(--line)}.tape div:last-child{border-right:0}.tape dt{font:500 10px var(--mono);letter-spacing:.16em;color:var(--dim)}.tape dd{margin:0;font:15px/1.3 var(--head)}.toc{border:1px solid var(--ln);background:var(--deep);padding:12px 18px;margin:1.5rem 0}.toc summary{font:500 12px/1.8 var(--mono);letter-spacing:.18em;color:var(--dim);cursor:pointer}.toc nav{display:block;margin-top:10px}.toc ul{list-style:none;margin:0;padding:0}.toc li{padding:4px 0;line-height:1.35}.toc li ul{padding-left:18px;margin-top:4px}.toc a{color:var(--fg);text-decoration:none}.toc a:hover,.toc a:focus-visible{color:var(--yel)}.toc nav>ul{counter-reset:toc}.toc nav>ul>li{counter-increment:toc;display:grid;grid-template-columns:2.6em 1fr;align-items:baseline}.toc nav>ul>li::before{content:counter(toc,decimal-leading-zero);font:500 12px var(--mono);color:var(--yel)}.toc nav>ul>li>ul{grid-column:2}.pagination{display:flex;gap:8px;list-style:none;padding:0;font:500 13px var(--mono)}.ko{font:clamp(50px,13vw,110px)/1 var(--head);color:var(--mag);margin:30px 0 8px}footer{margin:44px 0 24px;border:2px solid var(--ln);background:var(--deep);display:grid;grid-template-columns:1fr auto;font-size:13px;color:var(--dim)}footer p{margin:0;padding:10px 16px}footer .fs{padding:0 16px;border-left:2px solid var(--ln);font:11px/1.5 var(--mono);letter-spacing:.1em;display:flex;align-items:center}@media(max-width:700px){footer{grid-template-columns:1fr}footer .fs{border-left:0;border-top:2px solid var(--ln)}}table.ptable{display:table;width:100%;overflow:visible;border-collapse:collapse;table-layout:fixed;margin-top:4px;font-size:15px}.ptable th,.ptable td{border:0;border-bottom:1px solid var(--line);padding:10px 8px;text-align:left;vertical-align:baseline}.ptable thead th{background:var(--deep);border-top:2px solid var(--ln);border-bottom:2px solid var(--ln);padding:0}.ptable th button{all:unset;box-sizing:border-box;display:block;width:100%;cursor:pointer;padding:6px 8px;font:500 11px var(--mono);letter-spacing:.16em;color:var(--dim)}.ptable th button:hover,.ptable th button:focus-visible{color:var(--yel)}.ptable th[aria-sort] button{color:var(--fg)}.ptable th[aria-sort=ascending] button::after{content:" ▲"}.ptable th[aria-sort=descending] button::after{content:" ▼"}.ptable td{font:13px var(--mono);color:var(--dim)}.ptable td:first-child{font:16px/1.4 var(--head)}.ptable td:first-child a{color:var(--fg);text-decoration:none}.ptable td:first-child a:hover,.ptable td:first-child a:focus-visible{color:var(--yel)}.ptable td.yes{color:var(--cyan)}.ptable col,.ptable th:nth-child(2){width:9em}.ptable th:nth-child(3){width:7em}.ptable th:nth-child(4){width:9em}.ptable th:nth-child(5){width:5.5em}@media(max-width:700px){.ptable th:nth-child(2){width:6.5em}.ptable th:nth-child(3){width:5em}.ptable th:nth-child(4){width:4.5em}.ptable td{font-size:12px}.ptable td:first-child{font-size:14px}}.demo .dbody{border:1px solid var(--line);background:var(--deep);padding:14px}.dcv{display:block;width:100%;max-width:704px;image-rendering:pixelated;background:var(--ink);border:1px solid var(--line)}.dlabel{font:500 11px var(--mono);letter-spacing:.14em;color:var(--cyan);margin:12px 0 4px}.dread{font:13px/1.6 var(--mono);color:var(--dim);margin-top:10px}.dread b{color:var(--fg)}.dread .k1{color:var(--yel)}.dread .k2{color:var(--mag)}.drow{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:end;margin-bottom:8px}.dfield{display:flex;flex-direction:column;font:500 11px var(--mono);letter-spacing:.1em;color:var(--dim);gap:4px}.demo input[type=text],.demo select{font:15px var(--mono);background:var(--ink);color:var(--fg);border:1px solid var(--line);padding:6px 8px;min-width:0}.demo input[type=text]:not(.dshort){width:100%;max-width:560px}.dshort{width:3.2em;text-align:center}.demo input[type=range]{accent-color:var(--yel);min-width:180px}.demo output{font:13px var(--mono);color:var(--fg)}.demo button{font:600 13px var(--mono);letter-spacing:.1em;background:var(--yel);color:var(--ink);border:0;padding:7px 16px;cursor:pointer}.demo button:focus-visible,.demo input:focus-visible,.demo select:focus-visible{outline:2px solid var(--yel);outline-offset:2px}.dtype{margin:0;min-height:3.4em;white-space:pre-wrap;color:var(--fg)}.dticks{color:var(--dim);margin-left:8px}.code{margin:1.4rem 0;border:1px solid var(--line);background:var(--deep)}.code .chead{display:flex;justify-content:space-between;gap:12px;padding:5px 12px;border-bottom:1px solid var(--line);font:500 12px/1.5 var(--mono);color:var(--dim)}.code .ctag{letter-spacing:.12em;font-size:11px;white-space:nowrap}.code-original .ctag{color:var(--yel)}.code-patched .ctag{color:var(--cyan)}.code-patched{border-left:3px solid var(--cyan)}.code-original{border-left:3px solid var(--yel)}.code pre{margin:0;border:0;background:linear-gradient(90deg,var(--deep) 30%,rgba(26,18,51,0))0/36px 100% no-repeat local,linear-gradient(270deg,var(--deep) 30%,rgba(26,18,51,0))100%/36px 100% no-repeat local,linear-gradient(90deg,rgba(160,148,196,.5),rgba(160,148,196,0))0/10px 100% no-repeat,linear-gradient(270deg,rgba(160,148,196,.5),rgba(160,148,196,0))100%/10px 100% no-repeat;background-color:var(--deep);scrollbar-color:var(--line)transparent}.code .m{color:var(--cyan)}.code .a{color:var(--dim)}.code .l{color:var(--yel)}.code .c{color:var(--dim);font-style:italic}.code .c .m,.code .c .a,.code .c .l{color:inherit}.demo .dhead{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:5px 12px;border:1px solid var(--line);border-bottom:0;background:var(--faint);font:500 12px/1.5 var(--mono);color:var(--dim)}.demo .dhead b{color:var(--cyan);font-weight:500;letter-spacing:.12em;font-size:11px}.demo .dhead button{background:0 0;color:var(--fg);border:1px solid var(--line);padding:2px 10px;font:500 12px var(--mono);letter-spacing:.06em}.demo .dhead button:hover{border-color:var(--yel);color:var(--yel)}.demo button:disabled{opacity:.5;cursor:default}.demo input[type=range]{-webkit-appearance:none;appearance:none;height:22px;background:0 0;accent-color:var(--yel)}.demo input[type=range]::-webkit-slider-runnable-track{height:4px;background:var(--line)}.demo input[type=range]::-moz-range-track{height:4px;background:var(--line)}.demo input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:20px;margin-top:-8px;background:var(--yel);border:0;border-radius:0}.demo input[type=range]::-moz-range-thumb{width:14px;height:20px;background:var(--yel);border:0;border-radius:0}.demo select{-webkit-appearance:none;appearance:none;padding-right:28px;background-image:linear-gradient(45deg,transparent 50%,var(--yel) 50%),linear-gradient(135deg,var(--yel) 50%,transparent 50%);background-position:calc(100% - 15px)55%,calc(100% - 10px)55%;background-size:5px 5px;background-repeat:no-repeat}.demo input[type=checkbox]{accent-color:var(--yel);width:18px;height:18px}.demo noscript img{display:block;max-width:100%;height:auto}@media(prefers-reduced-motion:reduce){.demo *{transition:none!important}}.tbl{display:flex;justify-content:center}.tbl table{display:table;min-width:26rem;max-width:100%;margin:1.2rem 0}.dsvg{display:block;width:100%;max-width:704px;margin-top:6px}.dflow{font:14px/1.6 var(--body);color:var(--fg);margin-top:8px;min-height:4.8em}.dflow b{font:600 13px var(--mono);letter-spacing:.08em;color:var(--yel)}.dcode{font:12px var(--mono);color:var(--dim);margin-left:8px}.post>.wide{max-width:none}.wide .code,.wide figure.demo{clear:both}.wide p,.wide li{max-width:none}.dsvg{max-width:none}.dcols{display:flex;gap:20px;align-items:flex-start}.dcols>div{flex:1;min-width:0}.dcols .dcv{max-width:none}.dstamp>canvas{flex:0 0 58%;max-width:58%}.dstamp .dside{flex:1}.dstamp .dread{margin-top:0}.about .byline{display:flex;gap:36px;align-items:center;margin:18px 0 8px}.about .who{flex:none;display:flex;flex-direction:column;align-items:center;gap:10px}.about .avatar{width:200px;height:200px;border-radius:50%;border:2px solid var(--mag);image-rendering:pixelated}.about .name{font:24px/1.2 var(--head)}.about .icons{display:flex;gap:18px}.about .icons a{color:var(--yel);display:flex}.about .icons a:hover,.about .icons a:focus-visible{color:var(--mag)}.about .intro{flex:1}.about .intro p{font-size:19px;margin:0;max-width:none}.about .intro .k{font:500 12px var(--mono);letter-spacing:.2em;color:var(--mag);margin-bottom:8px}.about .intro .k i{font:11px var(--body);font-style:normal;color:var(--dim);margin-left:8px}