:root{color-scheme:light;
 --page:#f7f7f5;--surface:#ffffff;--sunk:#f0efec;--ink:#151514;--ink2:#4b4a46;--muted:#75736d;
 --line:#e3e1db;--axis:#c3c2b7;--accent:#2457c5;--accent-weak:rgba(36,87,197,.10);--bad:#c4372f;
 --caution:#a86b00;--code:#f0efea;--good:#2c7a4b;--good-weak:rgba(44,122,75,.10);
 --s1:#2a78d6;--s2:#eb6834;--s0:#9b998f;--s1w:rgba(42,120,214,.13);--s2w:rgba(235,104,52,.14);--s0w:rgba(155,153,143,.16);
 --c1:#ffffff;--c0:#161616;--cellb:#8f8d85;--head:#d0312d;
 --kw:#7a3e9d;--tac:#2457c5;--com:#7a786f;--str:#2c7a4b;--num:#9a5f00;--chg:rgba(235,104,52,.16)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){color-scheme:dark;
 --page:#111110;--surface:#1a1a19;--sunk:#232321;--ink:#f2f1ed;--ink2:#c8c6bf;--muted:#98968e;
 --line:#2f2f2c;--axis:#4a4a44;--accent:#82a8f0;--accent-weak:rgba(130,168,240,.15);--bad:#ee6b64;
 --caution:#f0b43c;--code:#272725;--good:#6cc28c;--good-weak:rgba(108,194,140,.12);
 --s1:#3987e5;--s2:#d95926;--s0:#77756e;--s1w:rgba(57,135,229,.20);--s2w:rgba(217,89,38,.22);--s0w:rgba(119,117,110,.22);
 --c1:#f4f4f2;--c0:#050505;--cellb:#6c6a63;--head:#ff5f57;
 --kw:#c79bf0;--tac:#82a8f0;--com:#98968e;--str:#6cc28c;--num:#f0b43c;--chg:rgba(217,89,38,.22)}}
:root[data-theme="dark"]{color-scheme:dark;
 --page:#111110;--surface:#1a1a19;--sunk:#232321;--ink:#f2f1ed;--ink2:#c8c6bf;--muted:#98968e;
 --line:#2f2f2c;--axis:#4a4a44;--accent:#82a8f0;--accent-weak:rgba(130,168,240,.15);--bad:#ee6b64;
 --caution:#f0b43c;--code:#272725;--good:#6cc28c;--good-weak:rgba(108,194,140,.12);
 --s1:#3987e5;--s2:#d95926;--s0:#77756e;--s1w:rgba(57,135,229,.20);--s2w:rgba(217,89,38,.22);--s0w:rgba(119,117,110,.22);
 --c1:#f4f4f2;--c0:#050505;--cellb:#6c6a63;--head:#ff5f57;
 --kw:#c79bf0;--tac:#82a8f0;--com:#98968e;--str:#6cc28c;--num:#f0b43c;--chg:rgba(217,89,38,.22)}
*{box-sizing:border-box}
html{background:var(--page)}
body{margin:0;background:var(--page);color:var(--ink);font:15px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
code,pre,.mono{font-family:ui-monospace,"Cascadia Code",Consolas,Menlo,monospace}
code{font-size:.88em;background:var(--code);padding:0 .25em;border-radius:3px}
p{margin:6px 0}
.muted{color:var(--muted)}.ink2{color:var(--ink2)}
.wrap{max-width:1240px;margin:0 auto;padding:14px 24px 60px}
header.top{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.rank{font-weight:700;font-size:16px;color:var(--muted)}
.tmname{font:600 15px/1.3 ui-monospace,"Cascadia Code",Consolas,monospace;background:none;padding:0;word-break:break-all}
.cls{font-size:13.5px;color:var(--ink2)}
.links{display:flex;flex-wrap:wrap;gap:2px 14px;font-size:13.5px;margin-left:auto}
.state{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-top:10px;padding:7px 12px;border-radius:8px;
 background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--good);font-size:14px}
.gtag{font-weight:700;color:var(--good)}
nav.sec{position:sticky;top:0;z-index:5;background:var(--page);border-bottom:1px solid var(--line);margin:0 -24px;padding:6px 24px;
 display:flex;flex-wrap:wrap;gap:4px 18px;font-size:13.5px}
nav.sec a{color:var(--ink2);font-weight:600}nav.sec a:hover{color:var(--accent)}
nav.sec .sub{color:var(--muted);font-weight:400}
h2.sh{font-size:21px;margin:34px 0 4px;letter-spacing:-.01em;scroll-margin-top:44px}
h2.sh .L{display:inline-block;min-width:28px;color:var(--accent)}
h3{font-size:16px;margin:22px 0 6px;scroll-margin-top:44px}
.lead{color:var(--ink2);max-width:920px;margin:2px 0 12px}
.steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0 6px}
.step{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:13.5px}
.step b{display:block;font-size:14.5px;margin-bottom:2px}.step .n{color:var(--accent);font-weight:700;margin-right:6px}
.callout{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:8px;padding:9px 13px;margin:12px 0;font-size:14px;max-width:1000px}
.callout.good{border-left-color:var(--good)}.callout.warn{border-left-color:var(--caution)}
table.t{border-collapse:collapse;width:100%;font-size:13.5px;background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden}
table.t th{text-align:left;font-weight:650;color:var(--ink2);background:var(--sunk);padding:6px 9px;border-bottom:1px solid var(--line);font-size:12.5px;white-space:nowrap}
table.t td{padding:6px 9px;border-bottom:1px solid var(--line);vertical-align:top}
table.t tr:last-child td{border-bottom:0}
table.t td.r,table.t th.r{text-align:right;font-variant-numeric:tabular-nums}
table.t tr.grp td{background:var(--sunk);font-weight:650;color:var(--ink2);font-size:12.5px;letter-spacing:.03em;text-transform:uppercase}
.tscroll{overflow-x:auto;max-width:100%}
.chip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:0 8px;font-size:12px;white-space:nowrap;color:var(--ink)}
.tag{display:inline-block;border-radius:4px;padding:0 6px;font-size:11.5px;font-weight:650;white-space:nowrap;border:1px solid}
.tag.copied{color:var(--ink2);border-color:var(--s0);background:var(--s0w)}
.tag.adapted{color:var(--ink);border-color:var(--s1);background:var(--s1w)}
.tag.new{color:var(--ink);border-color:var(--s2);background:var(--s2w)}
.who{display:inline-block;font-size:11.5px;border-radius:4px;padding:0 5px;margin:1px 2px 1px 0;background:var(--sunk);color:var(--ink2);white-space:nowrap}
figure.fig{margin:16px 0 22px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
figure.fig>figcaption{font-weight:650;font-size:15px;margin-bottom:6px}
figure.fig>figcaption .fno{color:var(--accent);margin-right:6px}
.flabel{margin-top:10px;padding-top:7px;border-top:1px dashed var(--line);font-size:12.5px;color:var(--ink2);display:flex;flex-wrap:wrap;gap:2px 16px}
.flabel b{color:var(--muted);font-weight:650;margin-right:4px}
.why{font-size:13.5px;color:var(--ink2);margin:0 0 8px;max-width:980px}
/* tape cells */
.tape{display:inline-grid;grid-auto-flow:column;align-items:end;gap:0;margin:2px 0}
.cellcol{display:flex;flex-direction:column;align-items:center;width:21px}
.cell{width:22px;height:22px;border:1px solid var(--cellb);margin-left:-1px;font:10px ui-monospace,monospace;display:flex;align-items:center;justify-content:center}
.cell.c1{background:var(--c1);color:#555}.cell.c0{background:var(--c0);color:#aaa}
.cell.hd{outline:3px solid var(--head);outline-offset:-1px;position:relative;z-index:1}
.hmark{height:16px;font:700 11px ui-monospace,monospace;color:var(--head);white-space:nowrap;width:21px;display:flex;justify-content:center;overflow:visible}.hmark.mk{color:var(--muted);font-weight:600}
.glrow{position:relative;height:20px;font:11.5px ui-monospace,monospace;color:var(--ink2)}
.cellcol:has(.dots){width:26px}.dots{width:26px;text-align:center;color:var(--muted);font:12px ui-monospace,monospace;align-self:center}
.glab{display:grid;grid-auto-flow:column;font:11.5px ui-monospace,monospace;color:var(--ink2)}
.gl{border-top:2px solid var(--axis);margin-top:3px;text-align:center;padding-top:1px;white-space:nowrap}
.gl.L{border-top-color:var(--s1)}.gl.w{border-top-color:var(--muted)}
.tline{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:4px 0}
.tline .tl{min-width:118px;font-size:12.5px;color:var(--ink2)}.tline.w .tl{min-width:180px}
.dg{display:inline-flex;align-items:center;justify-content:center;min-width:19px;height:21px;padding:0 3px;border-radius:4px;font:600 12.5px ui-monospace,monospace;border:1px solid var(--line);background:var(--sunk);color:var(--ink);margin:0 1px}
.dg.L{background:var(--s1w);border-color:var(--s1)}
.dg.ch{outline:2px solid var(--s2);outline-offset:0}
.dg.end{font-weight:400;color:var(--muted);background:none;border-style:dashed}
.word{display:inline-flex;flex-wrap:wrap;align-items:center;gap:0}
.arrow{color:var(--muted);margin:0 6px}
.cl{font:650 12px ui-monospace,monospace;padding:0 5px;border-radius:4px;border:1px solid}
.cl.copied{border-color:var(--s0);background:var(--s0w)}.cl.adapted{border-color:var(--s1);background:var(--s1w)}.cl.new{border-color:var(--s2);background:var(--s2w)}
.cl.none{border-color:var(--bad);color:var(--bad)}
.mode{font:12px ui-monospace,monospace;color:var(--ink2);white-space:nowrap}
.two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
.ok{color:var(--good);font-weight:700}.no{color:var(--bad);font-weight:700}
pre.cmd{background:var(--code);border-radius:6px;padding:7px 62px 7px 10px;margin:4px 0;font-size:12.5px;white-space:pre-wrap;word-break:break-all;position:relative}
button.copy{font:12px system-ui,sans-serif;border:1px solid var(--line);background:var(--surface);color:var(--ink2);border-radius:6px;padding:1px 8px;cursor:pointer;position:absolute;right:6px;top:6px}
.flow{display:flex;flex-wrap:wrap;align-items:stretch;gap:8px}
.fbox{background:var(--sunk);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:13px;flex:1 1 170px;max-width:290px}
.fbox b{display:block;font-size:13.5px}
.fbox.loop{border-color:var(--s1);background:var(--s1w)}
.farr{align-self:center;color:var(--muted);font-size:18px}
.bar{display:flex;height:26px;border-radius:6px;overflow:hidden;gap:2px;background:var(--surface);margin:6px 0}
.bar>div{display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--ink);white-space:nowrap;overflow:hidden}
.bar .copied{background:var(--s0w);border:1px solid var(--s0)}.bar .adapted{background:var(--s1w);border:1px solid var(--s1)}
.bar .new{background:var(--s2w);border:1px solid var(--s2)}.bar .glue{background:var(--sunk);border:1px solid var(--line)}
.legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12.5px;color:var(--ink2);margin:4px 0}
.sw{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-1px;margin-right:4px;border:1px solid}
svg text{font-family:system-ui,-apple-system,"Segoe UI",sans-serif}
.gantt .bg{fill:var(--surface)}.gantt .grid{stroke:var(--line);stroke-width:1}
.gantt .lab{fill:var(--ink2);font-size:12.5px}.gantt .tick{fill:var(--muted);font-size:11px}
.gantt .b1{fill:var(--s1)}.gantt .b2{fill:var(--s2)}.gantt .ok{fill:var(--good)}.gantt .dur{fill:var(--ink2);font-size:11px}
.gantt .ttl{fill:var(--ink);font-size:12.5px;font-weight:650}
.st .c1{fill:var(--c1);stroke:var(--cellb);stroke-width:.5}.st .c0{fill:var(--c0);stroke:var(--cellb);stroke-width:.5}
.st .hd{fill:none;stroke:var(--head);stroke-width:2.2}.st .lab{fill:var(--ink2);font-size:11px;font-family:ui-monospace,monospace}
.st .hl{fill:var(--head);font-size:10px;font-weight:700;font-family:ui-monospace,monospace}
.st .gl{stroke:var(--axis);stroke-width:2}.st .gt{fill:var(--ink2);font-size:11px;font-family:ui-monospace,monospace}
.imgthumb{max-width:100%;height:auto;border:1px solid var(--line);border-radius:6px;background:#000}
details.more{margin:8px 0}details.more summary{cursor:pointer;color:var(--accent);font-size:13.5px}
/* rendered markdown */
.mdbody{max-width:980px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 26px 26px}
.mdbody h1{font-size:22px;margin:18px 0 8px}.mdbody h2{font-size:19px;margin:26px 0 6px;border-bottom:1px solid var(--line);padding-bottom:3px}
.mdbody h3{font-size:16px;margin:20px 0 6px}.mdbody h1,.mdbody h2,.mdbody h3{scroll-margin-top:44px}
.mdbody a.hl{color:var(--axis);font-weight:400;font-size:.8em}
.mdbody pre.md{background:var(--code);padding:9px 12px;border-radius:6px;overflow-x:auto;font-size:12.5px;line-height:1.45}
.mdbody table.md{border-collapse:collapse;font-size:13px;margin:8px 0}
.mdbody table.md th,.mdbody table.md td{border:1px solid var(--line);padding:4px 7px;vertical-align:top;text-align:left}
.mdbody table.md th{background:var(--sunk)}
.mdbody table.md .r{text-align:right}
.mdbody li{margin:2px 0}.mdbody blockquote{margin:8px 0;padding:6px 12px;border-left:3px solid var(--accent);background:var(--accent-weak);border-radius:4px}
.toc{font-size:13px;columns:2;max-width:980px;margin:10px 0}.toc a{display:block;color:var(--ink2)}.toc .l3{padding-left:14px}
/* code view */
.vrow{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:0 14px;border-bottom:1px solid var(--line);scroll-margin-top:40px}
.vrow:target,.vrow.tgt{background:var(--accent-weak)}
pre.code{margin:0;padding:4px 0;font-size:12.5px;line-height:1.5;overflow-x:auto;background:var(--surface)}
pre.code .ln{display:inline-block;width:42px;text-align:right;padding-right:10px;color:var(--muted);user-select:none}
pre.code .ln a{color:inherit}
pre.code .row{display:block;padding-right:8px;scroll-margin-top:60px;white-space:pre}
pre.code .row.chg{background:var(--chg)}
pre.code .row:target{background:var(--accent-weak);outline:1px solid var(--accent)}
.kw{color:var(--kw);font-weight:600}.tac{color:var(--tac)}.com{color:var(--com);font-style:italic}.str{color:var(--str)}.num{color:var(--num)}.bul{color:var(--muted);font-weight:700}
aside.note{font-size:13px;padding:8px 0}
aside.note .card{position:sticky;top:44px;background:var(--sunk);border:1px solid var(--line);border-radius:8px;padding:8px 10px}
aside.note .nt{font-weight:650;font-size:13.5px}
aside.note .nl{margin-top:4px;font-size:12.5px;color:var(--ink2)}
.dl{font:12.5px ui-monospace,monospace}
.dl .a{background:rgba(44,122,75,.14)}.dl .d{background:rgba(196,55,47,.13)}.dl .h{color:var(--accent);background:var(--sunk)}
.dl .row{display:block;white-space:pre-wrap;word-break:break-all;padding:0 8px}
.dl .n{display:inline-block;width:38px;color:var(--muted);text-align:right;margin-right:6px;user-select:none}
@media (max-width:900px){.steps{grid-template-columns:1fr 1fr}.two{grid-template-columns:minmax(0,1fr)}.vrow{grid-template-columns:minmax(0,1fr)}aside.note .card{position:static}.toc{columns:1}}
@media (max-width:700px){.wrap{padding:12px 16px 50px}nav.sec{margin:0 -16px;padding:6px 16px}.steps{grid-template-columns:1fr}table.t{display:block;overflow-x:auto;max-width:100%}figure.fig{padding:10px;overflow-x:auto}pre{max-width:100%;overflow-x:auto}h1,h2,h3,p,li{overflow-wrap:anywhere}td code,td a{overflow-wrap:normal}.mdbody{padding:8px 12px 20px}.mdbody table.md{display:block;overflow-x:auto;max-width:100%}}
