.simulation-workspace,.resistivity-workspace{display:grid;gap:1rem}
.simulation-apparatus{border:1px solid var(--line);border-radius:var(--radius);background:var(--pale);padding:1rem;margin:1rem 0}
.simulation-apparatus svg{display:block;width:100%;height:auto;max-height:18rem}
.simulation-reading{font-weight:800;color:var(--navy);margin:.6rem 0}
.simulation-status{border-left:.3rem solid var(--blue);background:var(--pale);padding:.65rem .85rem;margin:1rem 0}
.simulation-status-error{border-left-color:#b42318;background:#fff3f2}
.simulation-controls{display:flex;gap:.65rem;align-items:end;flex-wrap:wrap}
.simulation-controls form{margin:0}
.simulation-table-wrap{overflow-x:auto;margin:1rem 0}
.simulation-table{width:100%;border-collapse:collapse;background:var(--white)}
.simulation-table th,.simulation-table td{padding:.6rem;border:1px solid var(--line);text-align:left;vertical-align:top}
.simulation-table th{background:var(--pale)}
.simulation-graph-wrap{border:1px solid var(--line);border-radius:var(--radius);background:var(--white);padding:1rem;margin:1rem 0}
.simulation-graph{display:block;width:100%;min-height:16rem}
.simulation-graph .axis{stroke:var(--ink);stroke-width:1.5}
.simulation-graph .fit-line{stroke:var(--blue);stroke-width:2}
.simulation-graph .data-point{fill:var(--navy)}
.simulation-graph text{fill:var(--ink);font:12px system-ui,-apple-system,"Segoe UI",sans-serif}
.simulation-help{max-width:60rem}
.simulation-help li{margin:.35rem 0}

.virtual-lab-header{background:linear-gradient(135deg,var(--white),var(--pale))}
.virtual-lab-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(18rem,.75fr);gap:1rem;align-items:start}
.apparatus-panel{overflow:hidden}
.notebook-panel{min-width:0}
.bench-instrument{--wire-heat:0;position:relative;border:1px solid #b8c1c8;border-radius:14px;background:#f6f7f8;padding:1rem;box-shadow:inset 0 1px 0 #fff,0 8px 24px rgba(24,39,52,.08)}
.apparatus-heading{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:.75rem}
.apparatus-heading h3{margin:.15rem 0 0}
.apparatus-status{display:flex;flex-direction:column;gap:.3rem;text-align:right;font-size:.92rem}
.apparatus-readout,.bench-meter-text{display:flex;gap:1rem;flex-wrap:wrap;align-items:center;margin:.65rem 0}
.bench-meter-text{justify-content:center;padding:.65rem;border-radius:8px;background:#182127;color:#eef8ef;font-variant-numeric:tabular-nums}
.compact-field{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem}
.notebook-calculation{display:grid;gap:.45rem;margin-top:1rem}
.notebook-calculation input{max-width:12rem}

.resistivity-bench-svg,.micrometer-svg{display:block;width:100%;height:auto;max-height:38rem;touch-action:none;user-select:none}
.micrometer-svg{max-height:23rem}
.apparatus-case{stroke:#6c747a;stroke-width:2;filter:drop-shadow(0 4px 4px rgba(0,0,0,.13))}
.apparatus-label{font:700 14px system-ui,-apple-system,"Segoe UI",sans-serif;fill:#26333b;letter-spacing:.04em}
.apparatus-small-label{font:12px system-ui,-apple-system,"Segoe UI",sans-serif;fill:#394850}
.digital-display{fill:#16231c;stroke:#6c747a;stroke-width:2}
.digital-display-text{font:700 25px "Courier New",monospace;fill:#a9ffb8;letter-spacing:.04em}
.terminal{fill:#50565a;stroke:#20282d;stroke-width:2}
.terminal-red{fill:#b6342e}.terminal-black{fill:#22282c}
.dial-ring{fill:#d6dadd;stroke:#70787e;stroke-width:2}
.dial-knob{fill:#333d43;stroke:#161d21;stroke-width:2;filter:drop-shadow(0 3px 2px rgba(0,0,0,.25))}
.dial-pointer{stroke:#f2f4f5;stroke-width:4;stroke-linecap:round}
.switch-arm{stroke:#454e53;stroke-width:7;stroke-linecap:round;transition:all .14s ease}
.lead{fill:none;stroke-width:7;stroke-linecap:round;filter:drop-shadow(0 2px 1px rgba(0,0,0,.18))}
.lead-red{stroke:#a92924}.lead-black{stroke:#202428}
.wire-board-base{fill:#dbd3c5;stroke:#817767;stroke-width:2}
.metre-ruler{fill:#f3df9b;stroke:#5a5138;stroke-width:2}
.ruler-graduations{pointer-events:none}
.ruler-tick{stroke:#3c392f;stroke-width:1.4}
.ruler-tick-major{stroke-width:2.3}
.resistance-wire{stroke:#9a6637;stroke-width:6;stroke-linecap:round;filter:drop-shadow(0 0 calc(var(--wire-heat) * 10px) rgba(221,75,39,var(--wire-heat)));transition:filter .2s linear}
.clip-metal{fill:#bdc5c9;stroke:#515a5f;stroke-width:2}
.crocodile-clip{fill:#c9cfd2;stroke:#3e474c;stroke-width:2;filter:drop-shadow(0 3px 2px rgba(0,0,0,.2))}
.clip-pivot{fill:#6c757a;stroke:#30383c;stroke-width:1.5}
.current-dot{fill:#f4ce45;opacity:0;transform-box:fill-box;transform-origin:center}
.current-indicator.is-active .current-dot{opacity:.9;animation:current-pulse .85s ease-in-out infinite alternate}
.current-indicator.is-active .current-dot:nth-child(2){animation-delay:.15s}.current-indicator.is-active .current-dot:nth-child(3){animation-delay:.3s}
@keyframes current-pulse{from{transform:scale(.75);opacity:.35}to{transform:scale(1.3);opacity:1}}

.micrometer-frame{fill:#34434b;stroke:#1e292f;stroke-width:4;filter:drop-shadow(0 5px 4px rgba(0,0,0,.15))}
.micrometer-barrel-support path{fill:#34434b;stroke:#1e292f;stroke-width:4;stroke-linejoin:round}
.micrometer-anvil{fill:#c8ced2;stroke:#535d63;stroke-width:2}
.micrometer-wire-sample{stroke:#9a6637;stroke-width:7;stroke-linecap:round}
.micrometer-reference-line{stroke:#2d3539;stroke-width:2}
.micrometer-scale{stroke:#2e373c;stroke-width:1.5}
.micrometer-spindle-face{fill:#aeb6ba;stroke:#525c61;stroke-width:1.5}
.micrometer-thimble-body{stroke:#59636a;stroke-width:2}
.micrometer-ratchet{fill:#90999e;stroke:#515b60;stroke-width:2}

.scale-reading-window{margin:.8rem 0;padding:.75rem;border:1px solid #aeb8bf;border-radius:10px;background:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}
.scale-reading-heading{display:flex;justify-content:space-between;gap:1rem;align-items:baseline;margin-bottom:.4rem;color:#26333b}
.scale-reading-heading span{font-size:.9rem;color:#53636d}
.scale-reading-svg{display:block;width:100%;height:auto;max-height:14rem;background:#f8fafb;border-radius:8px}
.scale-window-surface{fill:#e5e8ea;stroke:#7c878e;stroke-width:2}
.scale-window-ruler{fill:#f3df9b;stroke:#5a5138;stroke-width:2}
.scale-axis-line{stroke:#394850;stroke-width:2}
.scale-window-tick{stroke:#37434a;stroke-width:2}
.scale-window-tick-medium{stroke-width:3}
.scale-window-tick-major{stroke-width:4}
.scale-window-tick-current{stroke:#9b1c1c;stroke-width:5}
.scale-datum-line,.scale-reference-line{stroke:#9b1c1c;stroke-width:3;stroke-dasharray:7 5;pointer-events:none}
.scale-window-label{font:600 16px system-ui,-apple-system,"Segoe UI",sans-serif;fill:#26333b;font-variant-numeric:tabular-nums}
.scale-window-label-current{font-weight:800;fill:#7f1515}
.scale-window-caption{font:13px system-ui,-apple-system,"Segoe UI",sans-serif;fill:#465760}

[data-crocodile-clip],[data-psu-dial],[data-switch],[data-micrometer-thimble]{cursor:grab;outline:none}
[data-crocodile-clip]:active,[data-psu-dial]:active,[data-micrometer-thimble]:active{cursor:grabbing}
[data-switch]{cursor:pointer}
[data-crocodile-clip]:focus-visible,[data-psu-dial]:focus-visible,[data-switch]:focus-visible,[data-micrometer-thimble]:focus-visible,.simulation-controls button:focus-visible,.simulation-controls input:focus-visible,.simulation-controls select:focus-visible,.resistivity-workspace button:focus-visible,.resistivity-workspace input:focus-visible,.resistivity-workspace select:focus-visible,.simulation-workspace a:focus-visible{outline:3px solid #ffbf47;outline-offset:4px}
.simulation-warning{margin:.75rem 0;padding:.65rem .8rem;border:1px solid #d48a00;border-left:5px solid #d48a00;border-radius:6px;background:#fff8e8;color:#5b3a00;font-weight:700}

@media(max-width:900px){.virtual-lab-grid{grid-template-columns:1fr}.apparatus-status{text-align:left}.resistivity-bench-svg{max-height:none}.apparatus-heading{flex-direction:column}.bench-meter-text{justify-content:flex-start}}
@media(max-width:760px){.simulation-controls{align-items:stretch;flex-direction:column}.simulation-controls form,.simulation-controls button{width:100%}.simulation-graph{min-height:13rem}.scale-reading-heading{flex-direction:column;gap:.2rem}}
@media(max-width:600px){.bench-instrument{padding:.65rem}.resistivity-workspace .content-card{padding:.8rem}.apparatus-readout,.bench-meter-text{flex-direction:column;align-items:flex-start}.simulation-table th,.simulation-table td{padding:.45rem}.micrometer-svg,.resistivity-bench-svg{min-width:42rem}.apparatus-panel{overflow-x:auto}.scale-reading-window{min-width:36rem}}
@media (prefers-reduced-motion: reduce){.simulation-apparatus *,.simulation-graph *,.resistivity-workspace *{animation:none!important;transition:none!important}.current-indicator.is-active .current-dot{opacity:.9}}

/* Keep each practical's identity, access and course labels inside one visible card. */
.practical-catalogue{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;margin-block:1.5rem}
.practical-card{display:flex;flex-direction:column;min-width:0;padding:1.5rem;border:2px solid var(--line);border-radius:var(--radius);background:var(--white);box-shadow:var(--shadow)}
.practical-card-header{border-bottom:1px solid var(--line);padding-bottom:1rem}
.practical-card h2{margin:0 0 .85rem;font-size:1.3rem;line-height:1.35}
.practical-card h2 a{color:var(--navy);text-decoration:none}
.practical-card h2 a:hover{text-decoration:underline}
.practical-metadata{margin:.75rem 0 0}
.practical-access{display:inline-flex;align-items:baseline;flex-wrap:wrap;gap:.35rem;margin:0 0 .85rem;padding:.4rem .7rem;border:1px solid #9aaac6;border-radius:.5rem;background:#edf1fa;color:#18335b;line-height:1.4}
.practical-access-free{background:#eaf6ee;border-color:#75a98a;color:#174b2e}
.practical-suitability>p{margin:.15rem 0 .45rem}
.practical-course-labels{display:flex;flex-wrap:wrap;gap:.45rem;list-style:none;margin:0;padding:0}
.practical-course-labels li{margin:0;max-width:100%}
.practical-course-labels a{display:block;padding:.3rem .55rem;border:1px solid var(--line);border-radius:.4rem;background:var(--pale);color:var(--navy);font-size:.9rem;line-height:1.4;overflow-wrap:anywhere;text-decoration:underline;text-underline-offset:.15em}
.practical-summary{flex:1;margin:1rem 0}
.practical-card-actions{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;margin-top:.5rem}
@media(max-width:760px){.practical-catalogue{grid-template-columns:1fr;gap:1.25rem}.practical-card{padding:1.1rem}}
@media(forced-colors:active){.practical-card,.practical-access,.practical-course-labels a{border-color:CanvasText}}

.practical-filter{display:flex;align-items:end;flex-wrap:wrap;gap:1rem;margin-top:1.5rem}
.practical-filter-field{display:grid;gap:.4rem;min-width:14rem;max-width:100%}
.practical-filter label{font-weight:700}
.practical-filter select{width:100%;min-height:2.75rem;padding:.6rem .8rem;border:1px solid var(--line);border-radius:.4rem;background:var(--white);color:var(--ink);font:inherit}
.practical-filter button{margin:0}
.practical-filter a{align-self:center}
.practical-filter select:focus-visible,.practical-filter button:focus-visible,.practical-filter a:focus-visible{outline:3px solid #ffbf47;outline-offset:3px}
@media(max-width:600px){.practical-filter{align-items:stretch}.practical-filter-field{flex:1 1 100%;min-width:0}.practical-filter button{width:100%}}

/* Collapsed native alternatives to on-bench apparatus controls */
.sim-alt-controls {
  margin: 0.75rem 0;
  padding: 0.5rem 0.75rem;
  border: 1px dashed #c8d6df;
  border-radius: 8px;
  background: #fbfdfe;
}
.sim-alt-controls > summary {
  cursor: pointer;
  font-size: 0.9rem;
  color: #3d5a6c;
}
.sim-alt-controls[open] > summary {
  margin-bottom: 0.5rem;
}
.sim-alt-controls label {
  display: inline-grid;
  gap: 0.3rem;
  margin: 0.25rem 1rem 0.25rem 0;
}
.wire-position-svg{display:block;width:100%;height:auto;max-height:6rem;margin:.25rem 0 .5rem;touch-action:manipulation}
.wire-position-wire{stroke:#b06a2c;stroke-width:5;stroke-linecap:round}
.wire-position{cursor:pointer}
.wire-position-target{fill:#ffffff;stroke:#334f63;stroke-width:2.5}
.wire-position.is-measured .wire-position-target{fill:#d9efe2;stroke:#17633e}
.wire-position.is-selected .wire-position-target{fill:#fde7cf;stroke:#c25e12;stroke-width:4}
.wire-position:focus{outline:none}
.wire-position:focus .wire-position-target{stroke:#e28920;stroke-width:5}
.gas-manual-readings{display:flex;flex-wrap:wrap;gap:.75rem;margin:.75rem 0}.gas-manual-readings label{display:grid;gap:.3rem}.gas-manual-readings input{max-width:12rem;min-height:44px}
