/* Hands-on learning surfaces: diagrams first, controls second, evidence always. */
.academy-start { width: min(100% - 2rem, 1120px); margin: 1.5rem auto 2.5rem; }
.academy-start h2 { font-size: clamp(1.5rem, 4vw, 2rem); margin: 0 0 .65rem; }
.academy-start > p { max-width: 70ch; }
.phase-path { display: grid; grid-template-columns: 1.4fr 1fr 1fr; list-style: none; padding: 0; gap: 0; border-block: 2px solid var(--ink); }
.phase-path li { padding: 1rem; border-left: 1px solid var(--ink); }
.phase-path li:first-child { border-left: 0; background: #e7efff; }
.phase-path span, .phase-path strong { display: block; }
.phase-path span { font-size: .82rem; }
.learning-contract { padding-block: .3rem 1rem; border-bottom: 2px dashed var(--learn); }
.learning-contract h3, .exit-ticket h3 { font-size: 1.45rem; margin: 0 0 .6rem; }
.learning-contract .make-result { font-size: 1.18rem; font-weight: 750; }
.learning-contract ul { padding-left: 1.25rem; }
.learning-contract li + li { margin-top: .45rem; }
.recall-prompt { color: var(--ink-soft); }
.exit-ticket { padding: 1rem; background: #e8f5e8; border: 2px solid var(--ink); }
.exit-ticket summary { min-height: 44px; padding-block: .5rem; cursor: pointer; font-weight: 750; }
.exit-ticket .transfer-note { border-top: 1px solid var(--ink); padding-top: .7rem; }
.robot-lab { margin-block: 1.3rem; padding: clamp(.75rem, 3cqw, 1.25rem); border: 2px solid var(--ink); border-radius: .5rem; background: #f0f5ff; }
.robot-lab h4, .paper-lab h4 { margin: .2rem 0 .7rem; font: 850 1.35rem/1.2 var(--display); letter-spacing: -.025em; }
.robot-lab .lab-eyebrow { font-size: .7rem; font-weight: 850; letter-spacing: .08em; color: #254f89; }
.robot-lab p { max-width: 100%; }
.lab-field { display: grid; gap: .35rem; margin-block: 1rem; font-size: .9rem; font-weight: 750; }
.lab-field input, .lab-field select { width: 100%; min-width: 0; min-height: 44px; color: var(--ink); accent-color: #254f89; font: inherit; }
.lab-field select { padding: .5rem; background: #fffdf7; border: 2px solid var(--ink); border-radius: .25rem; }
:where(input, select):focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }
.lab-buttons { display: flex; flex-wrap: wrap; gap: .6rem; margin-block: .8rem; }
.lab-result { padding: .75rem; border-left: 4px solid #254f89; background: #fffdf7; font-weight: 650; }
.robot-lab .lab-note { border-top: 1px solid #a5b5cb; padding-top: .75rem; font-size: .84rem; }
.lab-readout { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: .75rem 0; padding: .65rem; background: #fffdf7; border-block: 1px solid #a5b5cb; }
.lab-readout dt { grid-row: 1; font-size: .8rem; }
.lab-readout dd { grid-row: 2; margin: 0; font: 850 clamp(1rem, 4cqw, 1.6rem)/1.5 var(--code); }
.servo-dial { display: grid; justify-items: center; position: relative; padding: 1rem; background: #fffdf7; border-radius: .4rem; }
.servo-shaft { position: relative; width: 120px; height: 120px; margin: .5rem; border: 5px solid #172c52; border-radius: 50%; background: repeating-conic-gradient(#d1dcf0 0deg 2deg, #f0f5ff 2deg 30deg); }
.servo-shaft::after { content: ''; position: absolute; inset: 46px; border-radius: 50%; background: #172c52; }
.servo-horn { position: absolute; width: 18px; height: 56px; left: 46px; bottom: 55px; transform-origin: 50% 100%; border: 3px solid #172c52; background: #ffce45; border-radius: 8px; }
.dial-label { font-size: .7rem; font-weight: 800; letter-spacing: .08em; }
.dial-scale { white-space: pre; font: .85rem var(--code); }
.bus-source { padding: .65rem; background: #ffce45; border: 2px solid var(--ink); text-align: center; font-weight: 800; }
.bus-branch { display: grid; grid-template-columns: 1fr repeat(3, 1fr); align-items: center; gap: .5rem; padding-block: .65rem; border-bottom: 2px solid #a5b5cb; }
.bus-branch > span:first-child { font-size: .8rem; font-weight: 750; }
.bus-motor { position: relative; text-align: center; padding: .4rem .15rem; border: 2px solid var(--ink); border-radius: 2rem; background: #dceee3; font-weight: 850; }
.bus-motor + .bus-motor::before { content: ''; position: absolute; right: 100%; top: 50%; width: .7rem; border-top: 2px solid var(--ink); }
.bus-motor.is-missing { border-style: dashed; color: #772f20; background: #ffded1; }
.motion-stage { display: grid; place-items: center; min-height: 180px; background: #fffdf7; border-bottom: 2px solid #172c52; overflow: hidden; }
.motion-stage img { width: 140px; height: 154px; object-fit: contain; transform-origin: 50% 90%; }
.motion-readout { font-variant-numeric: tabular-nums; font-weight: 750; }
.lab-code { white-space: pre-wrap; overflow-wrap: anywhere; font-size: .8rem; background: #fffdf7; padding: .8rem; }
.paper-lab { padding: .15in; border: 1pt solid #172c52; break-inside: avoid; }
.motor-addresses { width: 100%; border-collapse: collapse; font-size: .87rem; margin-block: .8rem; }
.motor-addresses caption { text-align: left; font-weight: 800; margin-bottom: .4rem; }
.motor-addresses th, .motor-addresses td { padding: .45rem; border-bottom: 1px solid #a5b5cb; text-align: left; overflow-wrap: anywhere; }
@media (max-width: 600px) { .phase-path { grid-template-columns: 1fr; }.phase-path li { border-left: 0; border-top: 1px solid #a5b5cb; }.phase-path li:first-child { border-top: 0; } }
@media print {
  .academy-start { display: none; }
  .learning-contract, .exit-ticket { padding: .1in; break-inside: avoid; }
  .learning-contract h3, .exit-ticket h3, .paper-lab h4 { font-size: 12pt; }
  .learning-contract p, .learning-contract li, .exit-ticket p { margin: .04in 0; }
  .learning-contract .make-result { font-size: 11pt; }
  .learning-contract ul { margin: .04in 0; }
  .motor-addresses { font-size: 8.5pt; }
}
