
:root{--paper:#F7F8F6;--ink:#14212B;--ink2:#3F4C57;--line:#D9DED9;--teal:#0F4C5C;--teal2:#0B3A47;
--acc:#B3261E;--accbg:#FBE9E7;--rej:#2E7D5B;--rejbg:#E6F2EC;--rep:#B26A00;--repbg:#FBF0DC;--na:#8A9199;--nabg:#EFF1F1;
--max:1120px;--sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;--mono:"IBM Plex Mono",ui-monospace,Menlo,monospace}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#0F1518;--ink:#E8EDEA;--ink2:#A9B4B0;--line:#26302E;--teal:#5FB3C3;--teal2:#8BD0DB;--accbg:#3A1A17;--rejbg:#15302A;--repbg:#3A2A0F;--nabg:#1C2426}}
*{box-sizing:border-box}html{scroll-padding-top:env(safe-area-inset-top,0px)}
body{margin:0;background:var(--paper);color:var(--ink);font:400 17px/1.55 var(--sans);-webkit-font-smoothing:antialiased}
a{color:var(--teal);text-decoration-thickness:1px;text-underline-offset:3px}a:hover{color:var(--teal2)}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:var(--ink);color:var(--paper);padding:8px 12px;z-index:9}
.top{display:flex;align-items:center;gap:24px;max-width:var(--max);margin:0 auto;padding:18px 20px;border-bottom:1px solid var(--line);position:sticky;top:0;background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(8px);z-index:5}
.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font-weight:600;white-space:nowrap}
.nav{display:flex;gap:4px;flex-wrap:wrap;margin-left:auto}.nav a{color:var(--ink2);text-decoration:none;padding:6px 8px;border-radius:6px;font-size:15px}
.nav a:hover{background:var(--nabg);color:var(--ink)}.nav a[aria-current=page]{color:var(--ink);background:var(--nabg)}
.gh{color:var(--ink2);text-decoration:none;padding:6px 10px;border:1px solid var(--line);border-radius:6px;white-space:nowrap}
main{max-width:var(--max);margin:0 auto;padding:0 20px}
h1{font-size:clamp(30px,4.6vw,46px);line-height:1.12;letter-spacing:-.015em;font-weight:600;margin:.2em 0 .4em}
h2{font-size:clamp(22px,2.6vw,28px);line-height:1.2;font-weight:600;margin:1.8em 0 .5em;letter-spacing:-.01em}
h3{font-size:19px;margin:0 0 .4em;font-weight:600}
p{max-width:68ch}em{font-style:normal;font-weight:600}
.hero{display:grid;grid-template-columns:1.05fr 1fr;gap:48px;align-items:center;padding:56px 0 24px}
.lede{color:var(--ink2);font-size:19px;margin:0}.sub{color:var(--ink2);font-size:18px}
.cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}
.btn,.btn-quiet{display:inline-block;padding:11px 18px;border-radius:8px;text-decoration:none;font-weight:600}
.btn{background:var(--teal);color:#fff}.btn:hover{background:var(--teal2);color:#fff}.btn-quiet{border:1px solid var(--line);color:var(--ink)}
.hero-fig{margin:0}.hero-fig svg{width:100%;height:auto;display:block}.hero-fig figcaption{color:var(--ink2);font-size:15px;margin-top:10px;max-width:60ch}
.lbl{font:500 13px var(--sans);fill:var(--ink2)}.rt{font:500 15px var(--mono);fill:var(--ink);text-anchor:middle}
.rec{fill:none;stroke:var(--ink2);stroke-width:1.5}.rec-donor{stroke:var(--teal);stroke-width:2}
.rec-victim{stroke:var(--ink2);stroke-dasharray:4 3}.arrow{fill:none;stroke:var(--teal);stroke-width:2;stroke-dasharray:6 4;stroke-linecap:round}
.readbox{fill:none;stroke:var(--line);stroke-width:1.5}.verdict{font:600 15px var(--mono);fill:var(--acc)}.readval{text-anchor:start}
.rec-moved{fill:var(--paper);stroke:var(--teal);stroke-width:2;opacity:0;transform:translateY(-120px)}
.rt-moved{opacity:0;transform:translateY(-120px)}.rt-victim{opacity:1}.read{opacity:0}.arrow2{opacity:0}
@media (prefers-reduced-motion:no-preference){
.rec-moved,.rt-moved{animation:drop 1.1s cubic-bezier(.2,.8,.2,1) 1.2s forwards}
.rt-victim{animation:fadeout .4s 1.9s forwards}.read,.arrow2{animation:fadein .6s 2.6s forwards}
@keyframes drop{to{opacity:1;transform:translateY(0)}}@keyframes fadeout{to{opacity:0}}@keyframes fadein{to{opacity:1}}}
@media (prefers-reduced-motion:reduce){.rec-moved,.rt-moved,.read,.arrow2{opacity:1;transform:none}.rt-victim{opacity:0}}
.howto{padding:24px 0 8px;border-top:1px solid var(--line)}
.routes{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.routes a{display:block;padding:18px;border:1px solid var(--line);border-radius:10px;color:var(--ink);text-decoration:none;line-height:1.45}
.routes a:hover{border-color:var(--teal)}.routes strong{display:block;margin-bottom:6px;color:var(--teal)}
.part{padding:12px 0 24px}.note{color:var(--ink2);font-size:15.5px}
.matrixwrap{overflow-x:auto;margin:18px 0;border:1px solid var(--line);border-radius:10px}
.matrix{border-collapse:separate;border-spacing:0;width:100%;min-width:640px;font-size:14.5px}
.matrix th,.matrix td{padding:0;border-bottom:1px solid var(--line)}
.matrix thead th{background:var(--nabg);font-weight:500;text-align:center;padding:10px 6px;color:var(--ink2);position:sticky;top:0}
.matrix thead th.corner{text-align:left;padding-left:14px}.matrix abbr{text-decoration:none;border:0;cursor:help}
.matrix tbody th{text-align:left;padding:10px 14px;font-weight:500;max-width:320px;background:var(--paper);position:sticky;left:0}
.rowname{display:block}.rowver{display:block;color:var(--ink2);font-size:12.5px;font-family:var(--mono);margin-top:2px}
.matrix td{text-align:center}.cellbtn{all:unset;display:block;width:100%;padding:10px 6px;cursor:pointer;font:500 13.5px var(--mono);text-align:center}
.cellbtn:focus-visible{outline:2px solid var(--teal);outline-offset:-2px}
.v-acc .cellbtn{color:var(--acc);background:var(--accbg)}.v-rej .cellbtn{color:var(--rej);background:var(--rejbg)}
.v-rep .cellbtn{color:var(--rep);background:var(--repbg)}.v-na span{display:block;padding:10px 6px;color:var(--na);background:var(--nabg);font:400 13.5px var(--mono)}
.legend{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:15px;max-width:76ch}
.legend dt{font:500 13.5px var(--mono);padding:2px 8px;border-radius:4px;align-self:start}
.legend dt.v-acc{color:var(--acc);background:var(--accbg)}.legend dt.v-rej{color:var(--rej);background:var(--rejbg)}
.legend dt.v-rep{color:var(--rep);background:var(--repbg)}.legend dt.v-na{color:var(--na);background:var(--nabg)}.legend dd{margin:0}
.findlist{list-style:none;padding:0;margin:0}.findlist li{display:grid;grid-template-columns:110px 1fr;gap:16px;padding:10px 0;border-bottom:1px solid var(--line)}
time{color:var(--ink2);font-family:var(--mono);font-size:13.5px}
.target{border-bottom:1px solid var(--line);padding:10px 0}.target summary{cursor:pointer;display:flex;gap:16px;align-items:baseline;font-weight:500}
.target .mo{color:var(--ink2);font-size:14px}.target ul{font-size:15px}
.editgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;margin:12px 0}
.edit{border:1px solid var(--line);border-radius:10px;padding:18px}.edit p{font-size:15.5px}.why{color:var(--ink2)}
.pict{width:100%;height:auto;margin:6px 0 10px}.pb{fill:none;stroke:var(--ink2);stroke-width:1.5}
.pb-x{stroke:var(--acc);fill:var(--accbg)}.pb-gone{stroke:var(--acc);stroke-dasharray:3 3;fill:none;opacity:.55}.pb-swap{stroke:var(--teal);stroke-width:2}.pb-src{stroke:var(--teal);stroke-width:2;stroke-dasharray:3 3}.pb-moved{stroke:var(--teal);stroke-width:2;fill:var(--paper)}
.parrow{fill:none;stroke:var(--teal);stroke-width:1.5;stroke-dasharray:4 3}.ptiny{font:500 9px var(--sans);fill:var(--teal);text-anchor:middle}
.finding{padding:18px 0;border-bottom:1px solid var(--line)}.finding h2{margin:.2em 0 .4em}
pre{background:var(--nabg);border:1px solid var(--line);border-radius:10px;padding:14px 16px;overflow-x:auto;font:400 14px/1.5 var(--mono)}
code{font-family:var(--mono);font-size:.93em}
.cites{display:grid;grid-template-columns:auto 1fr;gap:8px 18px}.cites dd{margin:0}
.diag{margin:18px 0 28px}.diag svg{width:100%;height:auto;display:block;background:var(--nabg);border:1px solid var(--line);border-radius:12px;padding:10px}
.diag figcaption{color:var(--ink2);font-size:15px;margin-top:10px;max-width:76ch}
.box{fill:var(--paper);stroke:var(--ink2);stroke-width:1.4}.box-agent{stroke:var(--teal);stroke-width:2}.box-attack{stroke:var(--acc);stroke-dasharray:5 4}
.box-store{fill:color-mix(in srgb,var(--teal) 8%,var(--paper))}.box-verdict{stroke:var(--teal);stroke-width:2}.box-rej{stroke:var(--rej)}.box-acc{stroke:var(--acc)}
.chip{fill:var(--paper);stroke:var(--line)}.chip-ref{stroke-dasharray:4 3}
.bt{font:600 14.5px var(--sans);fill:var(--ink);text-anchor:middle}.bs{font:400 12.5px var(--sans);fill:var(--ink2);text-anchor:middle}
.bn{font:400 12.5px var(--sans);fill:var(--ink2);text-anchor:middle}.bv{font:500 13.5px var(--mono);text-anchor:middle}
.v-rej-t{fill:var(--rej)}.v-rep-t{fill:var(--rep)}.v-acc-t{fill:var(--acc)}
.flow{fill:none;stroke:var(--ink2);stroke-width:1.5}.ahead{fill:var(--ink2)}
.rec-x{stroke:var(--acc);fill:var(--accbg)}.tag{font:500 12.5px var(--sans);text-anchor:middle}.tag-acc{fill:var(--acc)}.tag-teal{fill:var(--teal)}
.rules{padding-left:20px}.rules li{margin:8px 0;max-width:76ch}
.eco{display:grid;grid-template-columns:130px 1fr;gap:10px 18px}.eco dt{font-weight:600}.eco dd{margin:0;max-width:76ch}
.roadmap{width:100%;border-collapse:collapse;font-size:15px}.roadmap th,.roadmap td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.roadmap thead th{background:var(--nabg);color:var(--ink2);font-weight:500}.roadmap tbody th{font-weight:600;white-space:nowrap}
.rm-done td:last-child{color:var(--rej)}.rm-next td:last-child{color:var(--teal);font-weight:600}.rm-planned td:last-child{color:var(--ink2)}
@media (max-width:820px){.eco{grid-template-columns:1fr}}
.lede{font-size:19px;line-height:1.5;max-width:72ch;color:var(--ink)}
.legend{display:flex;flex-wrap:wrap;gap:8px 20px;font-size:14px;color:var(--ink2);margin:12px 0 4px}.legend span{display:inline-flex;align-items:center;gap:8px}
.lg{display:inline-block;width:22px;height:14px;border-radius:3px;border:1.5px solid var(--ink2);background:var(--paper)}
.lg-x{border-color:var(--acc);background:repeating-linear-gradient(45deg,var(--accbg) 0 3px,var(--paper) 3px 6px)}.lg-g{border-style:dashed;opacity:.45}.lg-m{border-color:var(--teal);background:color-mix(in srgb,var(--teal) 16%,var(--paper))}.lg-a{border-color:var(--acc);border-style:dashed;background:var(--accbg)}
.rec{fill:var(--paper);stroke:var(--ink2);stroke-width:1.4}.rec-x{stroke:var(--acc);fill:var(--accbg)}.rec-gone{stroke-dasharray:4 3;opacity:.4}.rec-moved{stroke:var(--teal);stroke-width:2;fill:color-mix(in srgb,var(--teal) 16%,var(--paper))}.rec-att{stroke:var(--acc);stroke-dasharray:4 3;fill:var(--accbg)}
.rt{font:500 12px var(--mono);fill:var(--ink);text-anchor:middle}
.pbox{fill:var(--paper);stroke:var(--line);stroke-width:1.2}.pbox-read{stroke:var(--teal);stroke-width:1.6}.pt{font:600 13.5px var(--sans);fill:var(--ink)}
.xedit{padding:26px 0;border-top:1px solid var(--line)}.xedit h3{font-size:24px;margin:0 0 8px}.tcode{font:600 15px var(--mono);color:var(--teal);margin-right:10px;vertical-align:middle}
.story{font-size:17px;max-width:76ch;margin:0 0 6px}.diag-x{margin:12px 0 16px}.diag-x svg{padding:6px}
.xcols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}.xcols h4{margin:0 0 6px;font-size:14px;color:var(--ink2);font-weight:500}.xcols p{margin:0;font-size:15px}
.today{margin:0;font-size:14.5px}.today dt{font:500 13px var(--mono);margin-top:4px}.today dd{margin:0 0 4px}
.repro{margin:14px 0 0}.repro code{font-size:13px}
.edit .today{margin-top:8px}
@media (max-width:820px){.xcols{grid-template-columns:1fr}}
/* motion: figures animate in reading order when scrolled into view */
.diag{position:relative}.diag .replay{position:absolute;top:10px;right:10px;font:500 12px var(--mono);color:var(--ink2);background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:3px 8px;cursor:pointer;opacity:0;transition:opacity .2s}.diag:hover .replay,.diag:focus-within .replay{opacity:1}
@media (prefers-reduced-motion:no-preference){
.diag.arm .step,.diag.arm .xp,.diag.arm .tag,.diag.arm .rec-x,.diag.arm .rec-att,.diag.arm .rec-moved,.diag.arm .rec-gone,.diag.arm .parrow{opacity:0}
.diag.arm .flow{stroke-dasharray:600;stroke-dashoffset:600}
.diag.play .step,.diag.play .xp{animation:rise .5s ease-out forwards}
.diag.play .flow{animation:draw .6s ease-out forwards}
.diag.play .tag,.diag.play .rec-x,.diag.play .rec-att,.diag.play .rec-moved,.diag.play .rec-gone,.diag.play .parrow{animation:rise .45s ease-out forwards}
.diag.play .step:nth-of-type(1),.diag.play .xp:nth-of-type(1){animation-delay:.05s}.diag.play .step:nth-of-type(2),.diag.play .xp:nth-of-type(2){animation-delay:.55s}.diag.play .step:nth-of-type(3),.diag.play .xp:nth-of-type(3){animation-delay:1.05s}.diag.play .step:nth-of-type(4){animation-delay:1.55s}.diag.play .step:nth-of-type(5){animation-delay:2.05s}.diag.play .step:nth-of-type(6){animation-delay:2.55s}
.diag.play .flow:nth-of-type(1){animation-delay:.35s}.diag.play .flow:nth-of-type(2){animation-delay:.85s}.diag.play .flow:nth-of-type(3){animation-delay:1.35s}.diag.play .flow:nth-of-type(4){animation-delay:1.85s}.diag.play .flow:nth-of-type(5){animation-delay:2.35s}.diag.play .flow:nth-of-type(6){animation-delay:2.85s}.diag.play .flow:nth-of-type(n+7){animation-delay:3.1s}
.diag.play .rec-x,.diag.play .rec-att,.diag.play .rec-moved,.diag.play .rec-gone{animation-delay:.9s}.diag.play .tag,.diag.play .parrow{animation-delay:1.1s}
.diag.play .tag:nth-of-type(n+3){animation-delay:1.8s}.diag.play .tag:nth-of-type(n+6){animation-delay:2.5s}
}
@keyframes rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes draw{to{stroke-dashoffset:0}}
.foot{max-width:var(--max);margin:40px auto 0;padding:24px 20px 40px;border-top:1px solid var(--line);color:var(--ink2);font-size:14.5px}
.drawer[hidden]{display:none}.drawer{position:fixed;inset:0;background:rgba(10,20,25,.45);display:grid;place-items:end center;z-index:20;padding:0 0 env(safe-area-inset-bottom,0px)}
.drawer-card{background:var(--paper);color:var(--ink);width:min(720px,100%);border-radius:14px 14px 0 0;padding:22px 24px 28px;position:relative;box-shadow:0 -8px 40px rgba(0,0,0,.2)}
.drawer-close{position:absolute;right:14px;top:10px;font-size:26px;background:none;border:0;color:var(--ink2);cursor:pointer}
.drawer-kicker{color:var(--ink2);margin:0;font-size:14px}.drawer h2{margin:.2em 0 .4em;font-size:22px}
.drawer-verdict{font:600 15px var(--mono);margin:0 0 12px}.drawer-verdict.v-acc{color:var(--acc)}.drawer-verdict.v-rej{color:var(--rej)}.drawer-verdict.v-rep{color:var(--rep)}.drawer dl{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;font-size:15px}
.drawer dt{color:var(--ink2)}.drawer dd{margin:0}.drawer code{background:var(--nabg);padding:4px 8px;border-radius:6px;display:inline-block;word-break:break-all}
@media (max-width:820px){.hero{grid-template-columns:1fr;gap:28px;padding-top:32px}.routes,.editgrid{grid-template-columns:1fr}
.findlist li{grid-template-columns:1fr}.nav{order:3;width:100%;margin-left:0}.top{flex-wrap:wrap;gap:10px}}
