/* Fixed rank positions and a separate transfer lane avoid intersecting arrows. */
.collective-lab{--comm-wine:#742d49;--comm-sky:#e2eff8;--comm-ink:#302333;margin:2rem 0;padding:1.1rem;border:1px solid #c7b8c1;border-radius:12px;background:#fcfaf8;color:var(--comm-ink)}
.collective-lab figcaption{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem}.collective-lab figcaption strong{font-size:1.1rem}.collective-lab figcaption span{font-size:.8rem;color:#62525f}
.collective-controls{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.collective-controls button{border:1px solid #a38d9c;border-radius:5px;padding:.45rem .65rem;background:white;color:var(--comm-wine);font:inherit;cursor:pointer;min-height:40px}.collective-controls button[data-play]{background:var(--comm-wine);color:white}.collective-controls button:disabled{opacity:.45;cursor:default}.collective-controls label{display:flex;align-items:center;gap:.5rem;flex:1 1 160px;font-size:.85rem}.collective-controls label>span{white-space:nowrap;flex-shrink:0}.collective-controls input{flex:1;min-width:60px;width:0;accent-color:var(--comm-wine)}
.collective-lab :is(button,input,summary,[tabindex]):focus-visible{outline:3px solid #742d49;outline-offset:3px}.collective-status{min-height:110px;padding-top:1.1rem}.collective-status>b{font-size:.82rem;color:var(--comm-wine)}.collective-status p{font-size:.9rem;line-height:1.6;margin:.35rem 0!important}.collective-transfer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;background:var(--comm-sky);padding:.8rem;border-radius:6px;min-height:110px;margin:.5rem 0 1rem}.collective-endpoint{display:flex;flex-direction:column;white-space:nowrap}.collective-endpoint small{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}.collective-endpoint strong{font-size:1.05rem}.collective-route{flex:1;min-width:0;text-align:center}.collective-route>span{font-size:.75rem}.collective-arrow{position:relative;width:100%;max-width:160px;height:2px;min-height:2px;margin:.65rem auto;background:var(--comm-wine)}.collective-arrow::after{content:"";position:absolute;right:-1px;top:-4px;border-left:7px solid var(--comm-wine);border-top:5px solid transparent;border-bottom:5px solid transparent}.collective-route>b{display:block;font-size:.78rem;overflow-wrap:anywhere}.collective-idle{width:100%;text-align:center;font-size:.9rem}
.collective-scroll{overflow-x:auto;border-radius:6px}.collective-ranks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;min-width:660px;padding:4px}.collective-rank{border:2px solid #d8d0d5;border-radius:7px;background:white;padding:.65rem;min-height:360px}.collective-rank.is-sender{border-color:var(--comm-wine)}.collective-rank.is-receiver{border-color:#3c6e8b;background:#f1f7fc}.collective-rank header{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.8rem}.collective-rank header span{font-size:.66rem;letter-spacing:.08em;font-weight:700;color:var(--comm-wine);min-height:16px}.collective-rank>small{display:block;font-size:.72rem;margin:.6rem 0 .4rem}.collective-blocks{display:flex;flex-direction:column;gap:.25rem;min-height:128px}.collective-block{display:grid;grid-template-columns:1fr auto;gap:.1rem .5rem;border-left:3px solid #a37b8a;background:#f4e9ef;padding:.25rem .4rem;font: .78rem ui-monospace,monospace;line-height:1.2}.collective-block small{grid-column:1/-1;font: .63rem sans-serif;line-height:1.3}.collective-origin-1{background:#e2eff8;border-color:#51809a}.collective-origin-2{background:#eceaf5;border-color:#80709b}.collective-origin-3{background:#eeefdf;border-color:#7e804b}.collective-sum{background:#742d49;color:white;border-color:#302333}.collective-empty{font-size:.75rem;color:#70646c;border:1px dashed #d8d0d5;padding:.3rem}.collective-lab details{margin-top:.8rem}.collective-lab summary{cursor:pointer;font-size:.88rem}.collective-lab .dense-caption{font-size:.78rem}.collective-lab details li{font-size:.8rem;overflow-wrap:anywhere}
@media(max-width:600px){.collective-lab{padding:.7rem}.collective-controls button{font-size:.8rem;padding:.35rem .45rem}.collective-status{min-height:145px}.collective-transfer{padding:.6rem}.collective-endpoint strong{font-size:.9rem}.collective-endpoint small{font-size:.62rem}.collective-route>b{font-size:.68rem}}

/* FSDP lifecycle: fixed rank lanes, time downward, separate weight/gradient arrows. */
.fsdp-figure{--fsdp-wine:#742d49;--fsdp-blue:#396d88;--fsdp-line:#d8cdd3;margin:2rem 0;color:#302333}
.fsdp-figure figcaption{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.8rem}.fsdp-figure figcaption span{font-size:.8rem;color:#655763}.fsdp-figure>p{font-size:.88rem}
.fsdp-legend{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;margin:1rem 0;font-size:.85rem}.fsdp-legend>span{display:flex;align-items:center;gap:.5rem}.fsdp-weight-key,.fsdp-gradient-key{width:24px;height:4px;background:var(--fsdp-wine)}.fsdp-gradient-key{background:var(--fsdp-blue)}
.fsdp-scroll{overflow-x:auto;border:1px solid var(--fsdp-line);border-radius:12px;background:#fff}.fsdp-scroll:focus-visible{outline:3px solid var(--fsdp-wine);outline-offset:3px}.fsdp-timeline{min-width:640px;padding:20px 22px 30px}.fsdp-rank-head,.fsdp-pair{display:grid;grid-template-columns:1fr 1fr;gap:64px}.fsdp-rank-head{padding-bottom:16px;border-bottom:1px solid var(--fsdp-line)}.fsdp-rank-head strong{display:block;font-size:1.1rem}.fsdp-rank-head small{font-size:.8rem;color:#655763}.fsdp-pair{margin:12px 0}.fsdp-state{padding:12px 14px;border-radius:7px;background:#f4edf0;border-left:3px solid var(--fsdp-wine);font-size:.85rem;line-height:1.55}.fsdp-state strong{display:block}.fsdp-state small{display:block;color:#655763;margin-top:3px;font-size:.75rem}.fsdp-phase{display:flex;align-items:center;gap:10px;margin:26px 0 14px;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.fsdp-phase::after{content:"";height:1px;background:var(--fsdp-line);flex:1}.fsdp-phase>span{background:var(--fsdp-wine);color:white;border-radius:50%;width:26px;height:26px;display:grid;place-items:center;flex-shrink:0;letter-spacing:0}.fsdp-transfer{display:grid;grid-template-columns:100px 1fr 100px;align-items:center;gap:12px;margin:10px 0;color:var(--fsdp-wine)}.fsdp-endpoint{font-size:.78rem}.fsdp-endpoint:last-child{text-align:right}.fsdp-endpoint b{display:block}.fsdp-route{text-align:center;font-size:.83rem}.fsdp-arrow{position:relative;height:2px;background:currentColor;margin:7px 0}.fsdp-arrow::after{content:"";position:absolute;right:0;top:-4px;border-left:8px solid currentColor;border-top:5px solid transparent;border-bottom:5px solid transparent}.fsdp-left .fsdp-arrow::after{right:auto;left:0;border-left:0;border-right:8px solid currentColor}.fsdp-gradient{color:var(--fsdp-blue)}.fsdp-sum{background:#e2eff8;border-color:var(--fsdp-blue)}.fsdp-foot{margin-top:18px;padding:14px 16px;background:#e2eff8;border-radius:8px;font-size:.85rem}.fsdp-figure .dense-caption{font-size:.78rem}
