/* Research graphics extend the existing editorial typography and spacing. */
.prose .research-visual{--rv-ink:#172019;--rv-muted:#536052;--rv-fill:#66745d;--rv-soft:#e9ede3;--rv-warm:#aa7860;margin:42px 0 46px;border-block:1px solid var(--line);padding:24px 0;max-width:100%;clear:both}
.prose .rv-heading{margin:0 0 22px}.prose .rv-kicker{display:block;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-bottom:9px}
.prose .research-visual h3{font-family:var(--display);font-size:clamp(23px,3vw,30px);line-height:1.14;letter-spacing:-.035em;margin:0;color:var(--ink)}
.prose .research-visual figcaption{font-size:14px;line-height:1.6;color:var(--muted);margin:18px 0 0}.prose .research-visual figcaption a{font-family:inherit;font-size:inherit;text-transform:none;white-space:normal;margin:0}
.prose .rv-image-link{display:block;border:0}.prose .rv-image-link img{display:block;width:100%;height:auto;margin:0;border:0}.prose .rv-image-labels{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:20px;margin-top:20px}
.prose .rv-image-labels strong,.prose .rv-image-labels span{display:block;font-size:14px;line-height:1.45}.prose .rv-image-labels strong{margin-bottom:5px;font-weight:600}.prose .rv-image-labels span{color:var(--muted)}
@media(max-width:680px){.prose .research-visual{margin:32px 0;padding:22px 0}.prose .rv-image-labels{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.prose .research-visual h3{font-size:24px}}
.prose .rv-section-title{display:flex;align-items:baseline;gap:12px}.prose .rv-section-title>svg{width:23px;height:23px;flex:0 0 23px;align-self:flex-start;margin-top:.2em;color:#66745d}.prose .rv-section-title>span{min-width:0}
.prose .rv-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:20px;margin-bottom:26px}.prose .rv-control{display:block;min-width:0;font-size:15px;font-weight:500;line-height:1.5}.prose .rv-control-header{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}.prose .rv-control output{font-family:var(--mono);font-size:14px;font-weight:400}.prose .rv-control input{display:block;width:100%;height:36px;margin:0;accent-color:#53644a;cursor:pointer}.prose .rv-control input:disabled{cursor:default;opacity:.55}.prose .rv-control input:focus-visible{outline:2px solid var(--ink);outline-offset:4px}.prose .rv-range-ends{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);font-weight:400}
.prose .rv-track{display:flex;height:34px;background:#eceee8;overflow:hidden}.prose .rv-track>span{display:block;min-width:0;height:100%;background:var(--rv-fill)}.prose .rv-track>.rv-second{background:var(--rv-warm)}.prose .rv-track>.rv-neutral{background:#bcc4b5}.prose .rv-track-labels{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 18px;font-size:14px;line-height:1.5;margin:10px 0}.prose .rv-swatch{display:inline-block;width:10px;height:10px;margin-right:7px;background:var(--rv-fill)}.prose .rv-swatch.rv-second{background:var(--rv-warm)}.prose .rv-swatch.rv-neutral{background:#bcc4b5}
.prose .rv-results{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:24px;margin-top:26px}.prose .rv-results>div{min-width:0}.prose .rv-results span{display:block;font-size:14px;line-height:1.45;color:var(--muted)}.prose .rv-results output{display:block;font-family:var(--display);font-size:clamp(25px,4vw,39px);font-weight:500;line-height:1.2;letter-spacing:-.04em;margin-top:6px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.prose .rv-results small{display:block;font-size:13px;margin-top:7px;color:var(--muted)}
.prose .rv-steps{list-style:none;padding:0;margin:0;counter-reset:rv-step}.prose .rv-steps>li{position:relative;display:grid;grid-template-columns:38px 1fr;column-gap:16px;margin:0;padding:0 0 25px;counter-increment:rv-step}.prose .rv-steps>li:before{content:counter(rv-step,decimal-leading-zero);font-family:var(--mono);font-size:13px;color:var(--rv-muted);padding-top:3px;border-top:1px solid #8a9484}.prose .rv-steps>li:not(:last-child):after{content:'';position:absolute;left:18px;top:30px;bottom:7px;border-left:1px solid var(--line)}.prose .rv-steps>li:last-child{padding-bottom:0}.prose .rv-steps strong{display:block;font-size:17px;font-weight:600;line-height:1.35;margin:0 0 5px}.prose .rv-steps p{font-size:15px;line-height:1.55;margin:0;color:var(--muted)}
.prose .rv-layer-list{display:grid;gap:12px}.prose .rv-layer{display:grid;grid-template-columns:34px 1fr;gap:13px;background:#f1f3ed;padding:18px}.prose .rv-layer svg{width:26px;height:26px;color:var(--rv-muted)}.prose .rv-layer strong{font-size:17px;line-height:1.4;display:block}.prose .rv-layer p{font-size:15px;line-height:1.55;margin:5px 0 0;color:var(--muted)}.prose .rv-layer .rv-micro{font-family:var(--mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;display:block;margin-bottom:5px;color:var(--muted)}
.prose .rv-bars{display:grid;gap:16px}.prose .rv-bar-label{display:flex;justify-content:space-between;gap:14px;font-size:14px;line-height:1.4;margin-bottom:7px}.prose .rv-bar-label output{font-family:var(--mono);font-size:13px}.prose .rv-bars .rv-track{height:24px}.prose .rv-svg-pair{display:grid;grid-template-columns:1fr 1fr;gap:22px}.prose .rv-svg-pair svg{width:100%;height:auto;overflow:visible}.prose .rv-svg-pair text{font-family:Arial,Helvetica,sans-serif;fill:var(--rv-ink);font-size:14px}.prose .rv-svg-pair .rv-chart-line{stroke:var(--rv-fill);stroke-width:3;fill:none}.prose .rv-svg-pair .rv-chart-line.rv-fail{stroke:var(--rv-warm)}.prose .rv-svg-pair strong{display:block;font-size:16px;margin-bottom:12px}.prose .rv-svg-pair .rv-chart-band{fill:var(--rv-soft)}.prose .rv-svg-pair .rv-chart-rule{stroke:#a5afa0;stroke-width:1}.prose .rv-svg-pair .rv-chart-point{fill:var(--rv-ink)}
.prose .rv-equation{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:14px 24px;padding:24px 0;font-size:20px;font-weight:500;line-height:1.4}.prose .rv-fraction{display:inline-flex;flex-direction:column;text-align:center;font-size:17px}.prose .rv-fraction>span:first-child{border-bottom:1px solid var(--ink);padding-bottom:8px}.prose .rv-fraction>span:last-child{padding-top:8px}.prose .rv-link-row{display:flex;flex-wrap:wrap;gap:12px 25px;margin-top:20px;font-size:14px}.rv-live{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.prose .rv-results small output{display:inline;font:inherit;letter-spacing:normal;margin:0}
@media(max-width:680px){.prose .rv-svg-pair{grid-template-columns:1fr;gap:28px}.prose .rv-results{gap:20px}.prose .rv-section-title{gap:10px}.prose .rv-control input{height:44px}.prose .rv-layer{padding:16px}.prose .rv-steps>li{column-gap:12px}}
@media(prefers-reduced-motion:no-preference){.prose .rv-track>span{transition:width .12s linear}}
@media print{.prose .research-visual{break-inside:avoid}.prose .rv-controls{display:none}.prose .rv-image-link{break-inside:avoid}.prose .rv-section-title>svg{display:none}}

/* Reader-controlled teaching sequences use the same editorial rules and colors. */
.prose .flow-variants,.prose .flow-controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.prose .flow-variants{margin-bottom:24px}
.prose .flow-variants button,.prose .flow-controls button{font:14px/1.4 var(--body);color:var(--ink);background:transparent;border:1px solid var(--line);padding:11px 14px;min-height:44px}
.prose .flow-variants button[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.prose .flow-controls button:disabled{opacity:.45}
.prose .flow-nodes{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:20px;list-style:none;padding:0;margin:0 0 24px}
.prose .flow-nodes>li{position:relative;padding:0;margin:0;min-width:0}
.prose .flow-nodes>li:not(:last-child):after{content:'→';position:absolute;right:-17px;top:19px;color:#7f8977;font-size:17px;line-height:1}
.prose .flow-nodes button{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;position:relative;width:100%;min-height:124px;padding:14px 8px;border:0;border-top:2px solid var(--line);color:var(--muted);background:#f3f4ef;font:14px/1.45 var(--body);text-align:left;overflow-wrap:anywhere}
.prose .flow-nodes button[aria-current="step"]{border-top-color:var(--rv-fill);background:#e4e9dc;color:var(--ink)}
.prose .flow-nodes button[data-passed="true"]{border-top-color:#8d9980}
.prose .flow-number{display:block;font:13px/1.4 var(--mono);margin-bottom:14px}
.prose .flow-detail{min-height:190px;border-left:2px solid var(--rv-fill);padding:18px 22px;background:#f3f4ef;margin-bottom:18px}
.prose .flow-position{display:block;font:12px/1.5 var(--mono);color:var(--muted);margin-bottom:8px}
.prose .flow-detail strong{display:block;font-size:19px;line-height:1.35}
.prose .flow-detail p,.prose .recovery-walkthrough p{font-size:16px;line-height:1.65;margin:9px 0 0;color:var(--muted)}
.prose .flow-motion-note{font-size:13px;line-height:1.5;color:var(--muted)}
.prose .recovery-walkthrough{margin-top:24px;border-top:1px solid var(--line);padding-top:20px}
.prose .rv-bars>div{padding:10px;border-left:2px solid transparent}
.prose .rv-bars>div.recovery-current{border-left-color:var(--rv-fill);background:#e9ede3}
.prose .flow-controls[hidden],.prose .recovery-walkthrough[hidden],.prose .flow-motion-note[hidden]{display:none}
@media(prefers-reduced-motion:no-preference){html:not([data-motion="off"]) .prose .research-flow[data-playing="true"] .flow-nodes button[aria-current="step"]:before{content:'';position:absolute;top:-2px;left:0;height:2px;background:var(--ink);animation:flow-progress 3.8s linear forwards}@keyframes flow-progress{from{width:0}to{width:100%}}}
@media(max-width:680px){.prose .flow-nodes{grid-template-columns:1fr;gap:12px}.prose .flow-nodes button{display:grid;grid-template-columns:30px 1fr;gap:12px;min-height:52px;padding:12px 15px;align-items:center}.prose .flow-number{margin:0}.prose .flow-nodes>li:not(:last-child):after{content:'↓';right:auto;left:24px;top:auto;bottom:-15px;font-size:14px;z-index:1}.prose .flow-detail{min-height:220px;padding:17px}.prose .flow-variants button{flex:1 1 120px}.prose .flow-controls{gap:8px}}
@media print{.prose .flow-controls,.prose .flow-variants{display:none}.prose .flow-nodes{grid-template-columns:repeat(5,minmax(0,1fr))}.prose .flow-nodes button{display:block}.prose .flow-nodes>li:after{display:none}}
