/* Shared hands-on lesson layout: one scene, controls built into it, the equation last. See Design Principles.md. */
.lab{margin-top:30px;border:1px solid #d2ccba;border-radius:14px;background:#fcfaf5;overflow:hidden}
.lab [hidden]{display:none!important}
.lab-steps{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;border-bottom:1px solid #dcd6c8;background:#ede9df}
.lab-steps button{padding:18px 13px;background:transparent;display:flex;align-items:center;justify-content:center;gap:10px;font-size:18px;line-height:1.3;border-bottom:3px solid transparent}
.lab-steps button+button{border-left:1px solid #dcd6c8}
.lab-steps button:hover{background:#f5f2ea}
.lab-steps button[aria-pressed=true]{background:#fcfaf5;border-bottom-color:var(--green);color:var(--green);font-weight:600}
.lab-steps button>span{border:1px solid #b7b7a8;border-radius:50%;width:30px;height:30px;display:grid;place-items:center;flex-shrink:0;font-size:16px}
.lab-steps button[aria-pressed=true]>span{color:#fff;background:var(--green);border-color:var(--green)}
.lab-steps button:focus-visible{outline-offset:-5px}
.lab-instruction{padding:24px 30px 18px}
.lab-instruction h3{font-size:29px;line-height:1.25}
.lab-instruction h3:focus{outline:none}
.lab-instruction p{font-size:19px;margin-top:8px;max-width:820px;color:#4d4b40}

/* Scene */
.lab-scene{margin:0 22px}
.scene-canvas{position:relative}
.lab-scene svg{display:block;width:100%;height:auto;border-radius:12px;border:1px solid #d8dbc9;background:#fbf8f1;user-select:none;-webkit-user-select:none;font-family:var(--sans)}
.lab-scene text{paint-order:stroke;stroke:#fbf8f1;stroke-width:6px;stroke-linejoin:round}
.lab-scene .lbl{font-size:24px;font-weight:700;fill:#3f3e34}
.lab-scene .lbl-big{font-size:32px}
.lab-scene .lbl-sm{font-size:18px;font-weight:400;fill:#5d5a4c}
.lab-scene .lbl-hint{font-size:20px;font-weight:600;fill:#8a6212}
.lab-scene .lbl-in{stroke:none;font-weight:700}
.lab-scene .serif{font-family:var(--serif);font-weight:400}
.lab-scene .green{fill:var(--green)}.lab-scene .copper{fill:var(--copper)}.lab-scene .gold{fill:#86651f}
.lab-scene .pop{transform-box:fill-box;transform-origin:center}
.lab-scene figcaption{display:flex;justify-content:center;flex-wrap:wrap;gap:6px 26px;padding:12px 0 4px;font-size:16px;color:#5f5c4d;line-height:1.5}
.lab-scene figcaption i{display:inline-block;width:18px;height:18px;border-radius:4px;vertical-align:-3px;margin-right:8px}

/* Controls that live on the scene */
.on-graph{position:absolute;transform:translateY(-100%);display:flex;align-items:center;gap:9px;min-height:44px;padding:7px 18px 7px 8px;border-radius:999px;background:var(--copper);color:#fff;font-size:17px;font-weight:600;white-space:nowrap;box-shadow:0 3px 12px #5c341f47;transition:left .45s ease,top .45s ease,background .15s;z-index:2}
.on-graph.centered{transform:translate(-50%,-50%)}
.on-graph.dark{background:var(--ink)}
.on-graph:hover{background:#7d4127}
.on-graph.dark:hover{background:var(--copper)}
.on-graph:focus-visible{outline-offset:3px}
.on-graph .plus{min-width:30px;height:30px;padding:0 4px;border-radius:999px;background:#fff;color:var(--copper);display:grid;place-items:center;font-size:20px;line-height:1;font-weight:700}
.on-graph.dark .plus{color:var(--ink)}
.drag-handle{position:absolute;width:44px;height:44px;margin:-22px 0 0 -22px;border-radius:50%;background:#fff;border:3px solid var(--copper);color:var(--copper);display:grid;place-items:center;font-size:20px;font-weight:700;line-height:1;cursor:grab;touch-action:none;box-shadow:0 2px 8px #5c341f40;z-index:2;transition:background .15s}
.drag-handle:hover,.drag-handle.dragging{background:#f6e3d5}
.drag-handle.dragging{cursor:grabbing}
.drag-handle.green{border-color:var(--green);color:var(--green)}
.drag-handle.green:hover,.drag-handle.green.dragging{background:#dcebe3}
.drag-handle.gold{border-color:#94762d;color:#86651f}
.drag-handle.gold:hover,.drag-handle.gold.dragging{background:#f3e8c6}
.drag-handle:focus-visible{outline:3px solid var(--green);outline-offset:3px}

/* Equation strip: the readouts shaped as the formula */
.lab-equation{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);align-items:stretch;gap:0 10px;margin:18px 30px 0}
.lab-equation:has(>div[hidden]){grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}
.lab-equation>div{padding:12px 18px;display:grid;gap:2px;border:1px solid #d7d2c3;border-radius:8px;background:#fff;min-width:0}
.lab-equation .operator{align-self:center;font:36px var(--serif);color:#6d6a5b;padding-top:18px}
.lab-equation .eq-label{font-size:17px;line-height:1.4;color:#5f5c4d;display:flex;align-items:center;gap:9px}
.lab-equation .eq-label i{display:inline-block;width:18px;height:18px;border-radius:4px;flex-shrink:0}
.lab-equation output{font:34px var(--serif);color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.lab-equation .digits-agree{color:var(--green);font-weight:700;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px}
.lab-equation .eq-result{background:#e9eee5;border-color:#c6d3c4}
.key-green{background:var(--green)}.key-copper{background:var(--copper)}.key-gold{background:#c9a74f}.key-ink{background:var(--ink)}
.lab-observation{margin:18px 30px 22px;max-width:860px;font-size:20px;line-height:1.55;font-weight:500}
.lab-result{margin:0 30px 24px;padding:20px 24px;background:#e6efe7;border-left:4px solid var(--green);border-radius:4px}
.lab-result .equation{text-align:left;font-size:36px;color:var(--green);margin:0 0 6px}
.lab-result p:last-child{font-size:19px;margin:0}
.lab-bottom{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 30px;border-top:1px solid #dcd6c8;background:#f6f3ec}
.lab-bottom-left{display:flex;gap:8px 26px;flex-wrap:wrap;align-items:center}
.lab-bottom .quiet-button{font-size:17px;min-height:44px;color:var(--copper)}
.lab-bottom .quiet-button:hover{text-decoration:underline;text-underline-offset:5px}
.lab-bottom .action{flex-shrink:0;font-size:18px}
.lab-chips{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.lab-chips>span{font-size:17px;color:#5f5c4d;margin-right:4px}
.lab-chips button{min-height:44px;padding:8px 16px;border:1px solid #cdbfa8;border-radius:999px;background:#fff;font-size:17px}
.lab-chips button:hover{border-color:var(--copper)}
.lab-chips button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fcfaf5}
@media(prefers-reduced-motion:reduce){.on-graph,.drag-handle{transition:none}}
@media(max-width:760px){
  .lab-steps button{flex-direction:column;gap:8px;font-size:16px;padding:14px 6px;justify-content:start}
  .lab-instruction{padding:20px 18px 14px}
  .lab-instruction h3{font-size:25px}
  .lab-instruction p{font-size:18px}
  .lab-scene{margin:0}
  .lab-scene svg{border-radius:0;border-left:0;border-right:0}
  .lab-scene .lbl{font-size:38px}
  .lab-scene .lbl-big{font-size:46px}
  .lab-scene .lbl-hint{font-size:36px}
  .lab-scene .lbl-sm{display:none}
  .on-graph{padding:7px 14px 7px 7px;font-size:16px}
  /* On a phone the scene is small: centred scene buttons sit directly under the picture instead of covering it. */
  .on-graph.centered{position:static;transform:none;margin:10px auto 4px;width:max-content;max-width:calc(100% - 28px)}
  .lab-chips{flex-wrap:nowrap;overflow-x:auto;padding-bottom:6px;-webkit-overflow-scrolling:touch}
  .lab-chips button{flex-shrink:0}
  .lab-scene .tile-num{display:none}
  .lab-equation{margin:16px 14px 0;gap:0 6px}
  .lab-equation>div{padding:10px 8px}
  .lab-equation .operator{font-size:26px;padding-top:22px}
  .lab-equation .eq-label{font-size:16px;gap:6px;overflow-wrap:anywhere}
  .lab-equation .eq-label i{display:none}
  .lab-equation output{font-size:22px;white-space:normal;overflow-wrap:anywhere}
  /* The instruction line says what to drag; in-scene hint text would be clipped on a phone. */
  .lab-scene text.lbl-hint{display:none}
  .lab-observation{margin:16px 18px 20px;font-size:19px}
  .lab-result{margin:0 14px 20px;padding:16px}
  .lab-result .equation{font-size:26px}
  .lab-bottom{padding:14px 18px;flex-direction:column-reverse;align-items:stretch;gap:10px}
  .lab-bottom .action{width:100%}
  .lab-bottom-left{justify-content:space-between}
}

/* Keep the real pin head visible inside a full-sized keyboard/touch target. */
#ellipse-pin-a,#ellipse-pin-b{background:transparent;border:2px solid transparent;box-shadow:none}
#ellipse-pin-a span,#ellipse-pin-b span{visibility:hidden}
#ellipse-pin-a:hover,#ellipse-pin-b:hover,#ellipse-pin-a.dragging,#ellipse-pin-b.dragging{background:#ffffff30;border-color:var(--copper)}
#ellipse-pin-a:hover,#ellipse-pin-a.dragging{border-color:var(--green)}
