/* This page inherits PaperMod's header, typography and light/dark switch. */
body:has(.dr-full) .main{max-width:1320px}
body:has(.dr-full) .post-header{margin-bottom:20px}
body:has(.dr-full) .post-title>.entry-hint{display:none}
.dr-language{display:flex;gap:12px;align-items:center;font-size:14px;margin-bottom:18px;color:var(--secondary)}
.post-content .dr-language a{color:var(--secondary);box-shadow:none;text-decoration:none;padding-block:4px;border-bottom:1px solid transparent}
.post-content .dr-language a[aria-current]{color:var(--primary);border-bottom-color:var(--primary)}
.post-content .dr-language a:hover{color:var(--primary)}
.dr-full{--bg:var(--theme);--surface:var(--entry);--ink:var(--primary);--muted:var(--secondary);--rule:var(--border);--accent:#1d6a86;--accent-soft:#e2eff4;--on-accent:#fff;--reward:#a95a14;--reward-soft:#f7eadb;--pathwise:#c0392b;--frozen-cell:#e4e8ed;--frozen-soft:#eceff3;--opinion:#fbf6e9;--opinion-rule:#d8c48c;--diff:#fff3c9;--font-display:inherit;--font-body:inherit;--font-mono:ui-monospace,SFMono-Regular,Menlo,monospace;--fs-body:1rem;--fs-small:.875rem;--fs-xs:.78rem;--fs-h2:1.6rem;--fs-h3:1.22rem;--fs-h4:1.05rem;color:var(--ink);font-size:17px;line-height:1.85}
body.dark .dr-full{--accent:#83c6da;--accent-soft:#17313c;--on-accent:#071c23;--reward:#e5a35f;--reward-soft:#3a2918;--pathwise:#f07a6a;--frozen-cell:#303945;--frozen-soft:#272d36;--opinion:#29271e;--opinion-rule:#756a49;--diff:#3a351e}
.dr-full *{box-sizing:border-box}
.dr-full a{color:var(--accent);text-underline-offset:3px}
.dr-full .shell{display:grid;grid-template-columns:minmax(0,1fr);gap:24px}
.dr-full .research-content{min-width:0}
@media(min-width:1200px){.dr-full .shell{grid-template-columns:200px minmax(0,1fr);gap:40px}}
.dr-full .toc{ position: relative; font-size: var(--fs-small); min-width: 0; }
@media  (min-width: 1000px) {.dr-full .toc-inner{ position: sticky; top: calc(env(safe-area-inset-top, 0px) + 16px); max-height: calc(100vh - 32px); overflow-y: auto; padding-block: 32px 24px; }
.dr-full .toc summary{ display: none; }}
@media  (max-width: 999px) {.dr-full .toc-inner{ padding-block: 20px 0; }
.dr-full .toc details{ border: 1px solid var(--rule); border-radius: 6px; background: var(--surface); padding: 10px 14px; }
.dr-full .toc summary{ cursor: pointer; font-weight: 600; }}
.dr-full .toc ol{ list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 1px; }
.dr-full .toc ol ol{ margin: 1px 0 6px 12px; }
.dr-full .toc a{ color: var(--muted); text-decoration: none; display: block; padding: 1px 8px; border-left: 2px solid transparent; line-height: 1.5; }
.dr-full .toc a:hover{ color: var(--ink); }
.dr-full .toc a.active{ color: var(--ink); border-left-color: var(--accent); }
.dr-full .toc .label{ font-size: var(--fs-xs); letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); padding-left: 10px; }
.dr-full .toc .lane{ font-size: var(--fs-xs); letter-spacing: 0.04em; color: var(--accent); padding: 6px 0 0 10px; }
.dr-full header.page{ padding-block: 32px 8px; border-bottom: 1px solid var(--rule); margin-bottom: 8px; }
.dr-full .eyebrow{ font-family: var(--font-mono); font-size: var(--fs-xs); letter-spacing: 0.06em; color: var(--muted); }
.dr-full h1, .dr-full h2, .dr-full h3{ font-family: var(--font-display); text-wrap: balance; line-height: 1.3; }
.dr-full h1{ font-size: var(--fs-h1); margin: 8px 0 12px; }
.dr-full h2{ font-size: var(--fs-h2); margin: 56px 0 12px; padding-top: 8px; border-top: 1px solid var(--rule); }
.dr-full h3{ font-size: var(--fs-h3); margin: 32px 0 8px; }
.dr-full h4{ font-size: var(--fs-h4); margin: 0; font-weight: 600; }
.dr-full .lede{ color: var(--muted); max-width: 68ch; }
.dr-full p, .dr-full li{ max-width: 72ch; }
.dr-full .secnum{ font-family: var(--font-mono); font-weight: 500; color: var(--accent); margin-right: 0.4em; font-size: 0.85em; }
.dr-full .katex math, .dr-full math{ font-size: 1.06em; }
.dr-full .eq{ overflow-x: auto; padding: 8px 14px; margin: 10px 0; background: var(--surface); border: 1px solid var(--rule); border-radius: 6px; }
.dr-full code, .dr-full .mono{ font-family: var(--font-mono); font-size: 0.86em; background: var(--code-bg); padding: 1px 5px; border-radius: 4px; }
.dr-full pre{ margin: 0; overflow-x: auto; background: var(--code-bg); border-radius: 6px; padding: 10px 12px; }
.dr-full pre code{ background: none; padding: 0; font-size: 0.8rem; line-height: 1.6; white-space: pre; }
.dr-full .method{ padding-block: 18px; border-top: 1px dashed var(--rule); }
.dr-full .method:first-of-type{ border-top: 0; }
.dr-full .method-head{ display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; margin-bottom: 4px; }
.dr-full .cite{ font-size: var(--fs-small); color: var(--muted); }
.dr-full .tag{ font-family: var(--font-mono); font-size: var(--fs-xs); padding: 1px 6px; border-radius: 3px; border: 1px solid var(--rule); color: var(--muted); white-space: nowrap; }
.dr-full .tag.on{ border-color: var(--accent); color: var(--accent); }
.dr-full .limit{ color: var(--muted); font-size: var(--fs-small); }
.dr-full .limit b{ color: var(--ink); font-weight: 600; }
.dr-full .note{ border-left: 3px solid var(--accent); background: var(--accent-soft); padding: 10px 16px; margin: 16px 0; border-radius: 0 6px 6px 0; }
.dr-full .note p{ margin: 6px 0; }
.dr-full .opinion{ background: var(--opinion); border: 1px solid var(--opinion-rule); border-radius: 8px; padding: 16px 20px; margin: 20px 0; }
.dr-full .opinion-label{ font-family: var(--font-mono); font-size: var(--fs-xs); letter-spacing: 0.08em; text-transform: uppercase; color: var(--reward); font-weight: 500; }
.dr-full .tldr{ background: var(--surface); border: 1px solid var(--rule); border-radius: 8px; padding: 6px 22px 10px; margin: 24px 0; }
.dr-full .tldr ol{ padding-left: 1.3em; }
.dr-full .tldr li{ margin: 6px 0; }
.dr-full .tbl{ overflow-x: auto; margin: 16px 0; border: 1px solid var(--rule); border-radius: 6px; background: var(--surface); }
.dr-full table{ border-collapse: collapse; width: 100%; font-size: var(--fs-small); line-height: 1.5; }
.dr-full th, .dr-full td{ text-align: left; vertical-align: top; padding: 8px 10px; border-bottom: 1px solid var(--rule); }
.dr-full th{ font-weight: 600; background: var(--frozen-soft); white-space: nowrap; }
.dr-full tbody tr:last-child td{ border-bottom: 0; }
.dr-full td.y{ color: var(--accent); font-weight: 500; white-space: nowrap; }
.dr-full td.n{ color: var(--muted); white-space: nowrap; }
.dr-full tr.group td{ background: var(--accent-soft); font-weight: 600; font-size: var(--fs-xs); letter-spacing: 0.05em; }
.dr-full tr.self td{ background: var(--opinion); }
.dr-full .wide-table table{ min-width: 1050px; }
.dr-full figure{ margin: 24px 0; }
.dr-full .fig-frame{ overflow-x: auto; background: var(--surface); border: 1px solid var(--rule); border-radius: 8px; padding: 12px; }
.dr-full .fig-frame svg{ display: block; width: 100%; height: auto; min-width: 720px; color: var(--ink); font-family: var(--font-body); }
.dr-full figcaption{ font-size: var(--fs-small); color: var(--muted); margin-top: 8px; max-width: 72ch; }
.dr-full .svg-muted{ fill: var(--muted); }
.dr-full .svg-ink{ fill: var(--ink); }
.dr-full .svg-accent{ fill: var(--accent); }
.dr-full .svg-reward{ fill: var(--reward); }
.dr-full .gridfig{ overflow-x: auto; }
.dr-full .gridfig svg, .dr-full .fig-frame .gridfig svg{ display: block; max-width: 100%; min-width: 0; width: auto; height: auto; font-family: var(--font-body); color: var(--ink); }
.dr-full .g-label{ fill: var(--muted); font-size: 11px; }
.dr-full .g-colhead{ fill: var(--ink); font-size: 11.5px; font-weight: 600; }
.dr-full .g-cell-frozen{ fill: var(--frozen-cell); stroke: var(--rule); }
.dr-full .g-cell-act{ fill: var(--accent); stroke: var(--accent); }
.dr-full .g-cell-train{ fill: var(--surface); stroke: var(--accent); stroke-width: 2; }
.dr-full .g-cell-data{ fill: var(--surface); stroke: var(--muted); }
.dr-full .g-cell-reuse{ fill: none; stroke: var(--rule); stroke-dasharray: 3 3; }
.dr-full .g-t{ font-size: 10.5px; fill: var(--ink); }
.dr-full .g-t-on{ font-size: 10.5px; fill: var(--on-accent); font-weight: 600; }
.dr-full .g-t-muted{ font-size: 10px; fill: var(--muted); }
.dr-full .g-conn{ stroke: var(--rule); stroke-width: 1.2; }
.dr-full .g-envarrow{ stroke: var(--muted); stroke-width: 1.2; fill: none; }
.dr-full .g-gae{ stroke: var(--accent); stroke-width: 1.5; fill: none; }
.dr-full .g-path{ stroke: var(--pathwise); stroke-width: 2; fill: none; }
.dr-full .g-group{ fill: none; stroke: var(--muted); stroke-dasharray: 4 3; }
.dr-full .g-star{ fill: var(--reward); font-size: 13px; }
.dr-full .g-side{ font-size: 10.5px; fill: var(--muted); }
.dr-full .g-side-acc{ font-size: 10.5px; fill: var(--accent); font-weight: 600; }
.dr-full .g-side-path{ font-size: 10.5px; fill: var(--pathwise); font-weight: 600; }
.dr-full .g-side-rew{ font-size: 10.5px; fill: var(--reward); font-weight: 600; }
.dr-full .g-bracket{ stroke: var(--accent); stroke-width: 1.5; fill: none; }
.dr-full .g-pill{ fill: var(--accent-soft); stroke: var(--accent); }
.dr-full .g-note-c{ fill: var(--reward); }
.dr-full .g-note-t{ fill: var(--surface); font-size: 10px; font-weight: 700; }
.dr-full .flow{ display: flex; flex-wrap: wrap; align-items: stretch; gap: 6px; margin-top: 8px; font-size: var(--fs-xs); line-height: 1.5; }
.dr-full .flow .st{ flex: 1 1 140px; min-width: 0; border: 1px solid var(--rule); border-radius: 5px; padding: 4px 8px; background: var(--surface); }
.dr-full .flow .st b{ display: block; font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: 0.05em; color: var(--muted); font-weight: 500; text-transform: uppercase; }
.dr-full .flow .st.upd b{ color: var(--accent); }
.dr-full .legend{ display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 8px 20px; margin: 12px 0; padding: 0; list-style: none; font-size: var(--fs-small); }
.dr-full .legend li{ display: flex; align-items: flex-start; gap: 10px; }
.dr-full .legend svg{ flex: none; margin-top: 3px; }
.dr-full .legend-num{ list-style: none; padding: 0; display: grid; gap: 4px; font-size: var(--fs-small); }
.dr-full .legend-num li{ display: grid; grid-template-columns: 1.6em minmax(0, 1fr); gap: 6px; }
.dr-full .num{ display: inline-grid; place-items: center; width: 1.35em; height: 1.35em; border-radius: 50%; background: var(--reward); color: var(--surface); font-size: 0.72rem; font-weight: 700; }
.dr-full .lane-intro{ color: var(--muted); }
.dr-full .card{ background: var(--surface); border: 1px solid var(--rule); border-radius: 10px; padding: 16px 20px 8px; margin: 22px 0; scroll-margin-top: 16px; }
.dr-full .card.self{ border-color: var(--opinion-rule); }
.dr-full .card-head{ display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; padding-bottom: 8px; border-bottom: 1px solid var(--rule); }
.dr-full .card-head h3{ margin: 0; font-size: 1.22rem; }
.dr-full .lane-tag{ font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--accent); border: 1px solid var(--accent); border-radius: 3px; padding: 0 6px; }
.dr-full .fields{ display: grid; grid-template-columns: 6.6em minmax(0, 1fr); gap: 0 16px; margin: 0; }
.dr-full .fields dt{ font-size: var(--fs-xs); font-weight: 600; color: var(--muted); letter-spacing: 0.04em; padding-top: 12px; border-top: 1px dashed var(--rule); }
.dr-full .fields dd{ margin: 0; padding-block: 10px; border-top: 1px dashed var(--rule); min-width: 0; font-size: 0.95rem; }
.dr-full .fields dt:first-of-type, .dr-full .fields dt:first-of-type + dd{ border-top: 0; }
.dr-full .fields dd ol, .dr-full .fields dd ul{ margin: 0; padding-left: 1.3em; }
.dr-full .fields dd p{ margin: 0 0 6px; }
@media  (max-width: 640px) {.dr-full .fields{ grid-template-columns: minmax(0, 1fr); }
.dr-full .fields dt{ padding-top: 10px; }
.dr-full .fields dd{ border-top: 0; padding-top: 2px; }
.dr-full .card{ padding: 14px 14px 6px; }}
.dr-full .cmp-controls{ display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: center; margin: 12px 0; }
.dr-full .cmp-controls label{ font-size: var(--fs-small); color: var(--muted); display: flex; align-items: center; gap: 8px; }
.dr-full .cmp-controls select{ font: inherit; font-size: var(--fs-small); padding: 4px 8px; border: 1px solid var(--rule); border-radius: 5px; background: var(--surface); color: var(--ink); max-width: 100%; }
.dr-full .cmp-grids{ display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; }
.dr-full .cmp-grids > div{ min-width: 0; background: var(--surface); border: 1px solid var(--rule); border-radius: 8px; padding: 10px; }
.dr-full .cmp-grids h4{ margin-bottom: 6px; }
.dr-full #cmp-table td:first-child{ white-space: nowrap; font-weight: 600; color: var(--muted); }
.dr-full #cmp-table tr.differs td{ background: var(--diff); }
.dr-full #cmp-table tr.differs td:first-child{ color: var(--ink); }
.dr-full .gen-node rect{ fill: var(--surface); stroke: var(--muted); stroke-width: 1.2; }
.dr-full .gen-node.self rect{ stroke: var(--reward); stroke-width: 1.8; }
.dr-full .gen-node text{ fill: var(--ink); font-size: 12.5px; font-weight: 600; }
.dr-full .gen-node:hover rect, .dr-full .gen-node:focus rect{ stroke: var(--accent); stroke-width: 2; fill: var(--accent-soft); }
.dr-full .gen-edge{ stroke: var(--muted); stroke-width: 1.3; fill: none; }
.dr-full .gen-elabel{ fill: var(--accent); font-size: 10.5px; }
.dr-full .gen-ebg{ fill: var(--surface); }
.dr-full .gen-lane{ fill: var(--frozen-soft); }
.dr-full .gen-lane-t{ fill: var(--muted); font-size: 11px; font-weight: 600; letter-spacing: 0.05em; }
.dr-full .refs{ font-size: var(--fs-small); }
.dr-full .refs li{ margin: 4px 0; }
.dr-full footer{ margin-top: 48px; color: var(--muted); font-size: var(--fs-small); border-top: 1px solid var(--rule); padding-top: 16px; }
/* Reading column, locally scrolling figures, and original full method records. */
.dr-full p,.dr-full li,.dr-full figcaption{max-width:none}
.dr-full h2,.dr-full h3{font-family:inherit}
.dr-full h2{scroll-margin-top:24px}
.dr-full .toc{padding:0;margin:0;border:0;background:none}
.dr-full .toc ol{padding-left:0}
.dr-full .toc li{margin:0}
.dr-full .toc a{box-shadow:none;font-size:13px}
.dr-full .toc details{padding:8px 12px 16px 0}
.dr-full .toc .label{font-size:12px}
.dr-full .toc ol ol{margin-left:8px}
.dr-full .toc-inner{padding-top:0;overscroll-behavior-y:contain}
.dr-full .toc a{padding:4px 10px;line-height:1.55}
.dr-full .toc ol ol a{font-size:12px;padding-block:3px}
.dr-full .toc .label{padding-bottom:10px;letter-spacing:.04em}
.dr-full .toc a.active{background:var(--accent-soft);border-radius:0 3px 3px 0}
.dr-full .card{border:0;border-top:1px solid var(--rule);border-radius:0;padding:26px 0 10px;background:none;margin:30px 0}
.dr-full .card-head{padding-bottom:14px}
.dr-full .fields{grid-template-columns:7em minmax(0,1fr)}
.dr-full .fields dd{font-size:16px}
.dr-full .fields dt{font-size:12px}
.dr-full pre code{display:block;color:var(--primary);background:none;border-radius:0;white-space:pre;font-size:13px;line-height:1.75;padding:0}
.dr-full pre{padding:14px 16px;max-width:100%;background:var(--code-bg)}
.dr-full .eq{max-width:100%;font-size:16px}
.dr-full .eq .katex-display{margin:.6em 0;text-align:left}
.dr-full .eq .katex-display>.katex{text-align:left}
.dr-full .katex{font-size:1.03em}
.dr-full .tbl table{display:table;margin:0}
.dr-full .tbl td{min-width:100px}
.dr-full .tbl th{border-bottom:1px solid var(--rule)}
.dr-full #cmp-table{min-width:600px}
.dr-full .gridfig svg,.dr-full .fig-frame .gridfig svg{max-width:none;width:auto;height:auto;min-width:0;font-family:system-ui,sans-serif}
.dr-full .fig-frame svg{min-width:940px;font-family:system-ui,sans-serif}
.dr-full .gridfig{padding:6px 0}
.dr-full .cmp-grids{grid-template-columns:repeat(2,minmax(0,1fr))}
.dr-full .fig-tools{display:flex;width:fit-content;gap:0;margin:0 0 10px auto;font-size:12px;border:1px solid var(--rule);border-radius:6px;overflow:hidden}
.dr-full .fig-tools button{border:0;background:transparent;color:var(--muted);min-width:34px;min-height:32px;padding:4px 10px;cursor:pointer;font:inherit}
.dr-full .fig-tools button+button{border-left:1px solid var(--rule)}
.dr-full .fig-tools button:hover{background:var(--frozen-soft);color:var(--ink)}
.dr-full .fig-tools button:focus-visible,.dr-full a:focus-visible,.dr-full select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.dr-full .fig-tools button:focus-visible{outline-offset:-3px}
.dr-full .cross-worlds{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:20px 0}
.dr-full .cross-worlds>div{padding:18px;border-left:3px solid var(--accent);background:var(--frozen-soft)}
.dr-full .cross-worlds h3{margin-top:0}
@media(max-width:1199px){.dr-full .toc summary{display:list-item}.dr-full .toc-inner{position:relative;max-height:none;padding:0}.dr-full .toc details{border:1px solid var(--rule)}.dr-full .toc details>ol{columns:2;column-gap:25px}.dr-full .toc details>ol>li{break-inside:avoid}}
@media(max-width:640px){.dr-full{font-size:16px}.dr-full .fields{grid-template-columns:minmax(0,1fr)}.dr-full .fields dd{font-size:15px}.dr-full .fields dt{font-size:13px}.dr-full .card{padding-inline:0}.dr-full .cmp-grids,.dr-full .cross-worlds{grid-template-columns:1fr}.dr-full .toc details>ol{columns:1}.dr-full .eq{padding:8px}.dr-full .legend{grid-template-columns:1fr}.dr-full .tldr{padding:8px 14px}.dr-full .fig-frame{padding:8px}.dr-full .cmp-controls label{max-width:100%}}
@media print{.dr-full .toc,.dr-full .fig-tools{display:none}.dr-full .shell{display:block}.dr-full .fig-frame svg{min-width:0}.dr-full .card{break-inside:auto}}
.dr-full :not(.katex-display)>.katex{display:inline-block;max-width:100%;overflow-x:auto;overflow-y:hidden;vertical-align:middle;padding:2px 0}
.dr-full .katex-mathml{width:1px!important;height:1px!important;overflow:hidden!important}
@media(max-width:800px){.dr-full .cmp-grids{grid-template-columns:1fr}}
.dr-full .fig-frame,.dr-full .gridfig{position:relative;contain:paint}
/* SVG link hit regions can escape a scroller in WebKit; retain local scrollers. */
body:has(.dr-full) .main{overflow-x:clip}
.dr-full .fields dt,.dr-full .fields dd{width:auto;margin-top:0;padding-inline-start:0}
.dr-full pre code{background:transparent!important;color:var(--primary);overflow:visible;word-break:normal}
.dr-full :not(.katex-display)>.katex{scrollbar-width:none}
.dr-full :not(.katex-display)>.katex::-webkit-scrollbar{height:0}
.dr-full > #scope{margin:0 0 36px}
.dr-full .ai-note{margin:0;padding:0;border:0;background:none;color:var(--muted);font-size:14px;line-height:1.7}
.dr-full .ai-note p{margin:0}
.dr-full .ai-note strong{font-weight:500}
.dr-full .tldr{padding:0 0 20px;margin:0;border:0;border-bottom:1px solid var(--rule);border-radius:0;background:none}
.dr-full .tldr>h3{margin-top:0!important}
.dr-full .tldr li{margin-block:12px}
.dr-full .note{background:none;border-left:2px solid var(--rule);border-radius:0;padding:4px 18px}
/* Override PaperMod's 19px scrollbar and dark thumb border inside the article. */
.post-content .dr-full :is(.toc-inner,.fig-frame,.gridfig,.eq,.tbl,pre){scrollbar-width:thin;scrollbar-color:var(--tertiary) transparent}
.post-content .dr-full ::-webkit-scrollbar{width:5px;height:5px;background:transparent}
.post-content .dr-full ::-webkit-scrollbar-track{background:transparent;border:0}
.post-content .dr-full ::-webkit-scrollbar-thumb{background:var(--tertiary);border:0;border-radius:10px}
.post-content .dr-full ::-webkit-scrollbar-thumb:hover{background:var(--secondary)}
.post-content .dr-full ::-webkit-scrollbar-corner{background:transparent}
.post-content .dr-full :not(.katex-display)>.katex::-webkit-scrollbar{height:0}
@media(min-width:1200px){
  body:has(.dr-full) .post-header,.dr-language,.dr-full > #scope{margin-left:240px}
}
@media(max-width:1199px){
  .dr-full .toc details{padding:12px 16px;border:1px solid var(--rule);border-radius:6px;background:none}
  .dr-full .toc .label{display:none}
  .dr-full .toc summary{font-size:14px;font-weight:500;color:var(--muted)}
  .dr-full .toc details[open] summary{margin-bottom:12px}
}
