/* Paired rows share their height, so each wire joins the actual source and
   target at every width. No viewport-specific coordinate simulation. */
.transfer-scene { --transfer-gap: clamp(1.5rem, 6vw, 5rem); padding: var(--s4); border: var(--rule) solid var(--scene-line); }
.transfer-head { display: flex; justify-content: space-between; flex-wrap: wrap; gap: var(--s1) var(--s3); margin-bottom: var(--s3); }
.transfer-map-head, .transfer-pair { display: grid; grid-template-columns: minmax(0, 1fr) var(--transfer-gap) minmax(0, 1fr); }
.transfer-map-head { margin-bottom: var(--s2); }
.transfer-map-head > div:last-child { grid-column: 3; }
.transfer-map-head h3 { font-size: var(--fine); font-weight: 600; color: var(--scene-muted); }
.transfer-map-head p { font: 400 var(--document-size)/1.2 var(--display); margin-top: var(--s1); }
.transfer-pair + .transfer-pair { margin-top: var(--s1); }
.transfer-source, .transfer-choice { min-width: 0; min-height: var(--control-size); padding: var(--s2); background: var(--scene-sheet); border: var(--rule) solid var(--scene-line); border-radius: var(--radius); }
.transfer-source { display: flex; align-items: center; font-size: var(--small); font-weight: 600; }
.transfer-source.is-active { border-color: var(--scene-accent); text-decoration: underline; text-underline-offset: .25em; }
.transfer-source-gap { font-weight: 400; font-style: italic; color: var(--scene-muted); border-style: dashed; }
.transfer-choice { display: flex; align-items: center; justify-content: space-between; gap: var(--s1); width: 100%; color: var(--scene-ink); text-align: left; }
.transfer-choice-title { font-size: var(--small); font-weight: 600; }
.transfer-state { font-size: var(--fine); color: var(--scene-muted); }
.transfer-choice[aria-pressed="true"] { color: var(--scene-selection-ink); background: var(--scene-selection-bg); border-color: var(--scene-selection-bg); }
.transfer-choice[aria-pressed="true"] .transfer-state { color: inherit; }
.transfer-choice[aria-pressed="true"] .transfer-choice-title, .transfer-choice:not(:disabled):hover .transfer-choice-title { text-decoration: underline; text-underline-offset: .25em; }
.transfer-choice:not(:disabled):hover { border-color: var(--scene-accent); }
.transfer-link { width: 100%; height: 100%; min-height: var(--control-size); pointer-events: none; }
.transfer-wire { fill: none; stroke: var(--scene-muted); stroke-width: 1.5; vector-effect: non-scaling-stroke; opacity: .65; transition: stroke var(--fast) var(--ease), opacity var(--fast) var(--ease); }
.transfer-wire-partial { stroke-dasharray: 5 3; }
.transfer-wire-gap { stroke-dasharray: 2 3; }
.transfer-wire.is-active { stroke: var(--scene-accent); stroke-width: 2.5; opacity: 1; }
.transfer-scene .scene-details { margin-top: var(--s3); padding-top: var(--s3); border-top: var(--rule) solid var(--scene-line); }
.transfer-snippet { font: 400 var(--body-large)/1.4 var(--display); color: var(--scene-ink); margin-bottom: var(--s1); }
.transfer-scene .scene-footer { margin-top: var(--s3); }

/* Fixed institutional requirements: read before any comparison, with the
   boundary that faculty feedback never revises these rules. */
.transfer-reqs { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s1) var(--s2); margin-bottom: var(--s3); }
.transfer-reqs .scene-detail-label { margin-bottom: 0; }
.transfer-chips { display: flex; flex-wrap: wrap; gap: var(--s1); margin: 0; padding: 0; list-style: none; }
.transfer-chips li { padding: .15em .6em; background: var(--scene-sheet); border: var(--rule) solid var(--scene-line); border-radius: var(--radius); font-size: var(--fine); }
.transfer-fixed-note { margin-left: auto; font-size: var(--fine); color: var(--scene-muted); }
/* Faculty feedback and the guidance it updates: the adaptive half of the
   research design, visually secondary to the fixed rules and evidence above. */
.transfer-learning { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--s2) var(--s3); margin-top: var(--s3); padding-top: var(--s3); border-top: var(--rule) solid var(--scene-line); }
.transfer-feedback-copy { font: 400 var(--body-large)/1.4 var(--display); color: var(--scene-ink); }
.transfer-guidance-copy { font-size: var(--small); line-height: 1.6; color: var(--scene-muted); }
.transfer-learning-note { grid-column: 1 / -1; font-size: var(--small); font-weight: 600; color: var(--scene-ink); }
@media (max-width: 600px) {
  .transfer-scene { --transfer-gap: var(--s3); padding: var(--s2); }
  .transfer-source, .transfer-choice { padding: var(--s1); }
  .transfer-choice { flex-direction: column; align-items: start; justify-content: center; gap: var(--s0); }
  .transfer-map-head p { font-size: var(--body-large); }
  .transfer-fixed-note { margin-left: 0; }
  .transfer-learning { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) { .transfer-wire { transition: none; } }
@media (forced-colors: active) {
  .transfer-source.is-active { border-color: Highlight; }
  .transfer-choice[aria-pressed="true"] { outline: var(--focus-width) solid Highlight; outline-offset: calc(-1 * var(--focus-width)); }
  .transfer-wire { stroke: CanvasText; opacity: 1; }
  .transfer-wire.is-active { stroke: Highlight; stroke-width: 3; }
}
