/* ============================================================
   V2 „Labor“ — Abbildung (Blueprint-Schema), Messcursor, Motivbewegung
   ============================================================ */
.fig{position:relative;margin:0;background:var(--white);border:1px solid var(--ink)}
.fig::before,.fig::after{content:"";position:absolute;width:15px;height:15px;pointer-events:none;z-index:3}
.fig::before{left:-8px;top:-8px;border-right:1px solid var(--ink);border-bottom:1px solid var(--ink);background:linear-gradient(var(--ink),var(--ink)) 0 0/1px 100% no-repeat}
.fig::after{right:-8px;bottom:-8px;border-left:1px solid var(--ink);border-top:1px solid var(--ink)}
.fig__top{display:flex;align-items:center;gap:12px;min-height:42px;padding:0 12px 0 0;border-bottom:1px solid var(--ink);font:500 .75rem/1 var(--mono);text-transform:uppercase;letter-spacing:.06em}
.fig__no{align-self:stretch;display:flex;align-items:center;padding:0 12px;background:var(--ink);color:var(--paper);white-space:nowrap}
.fig__ttl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink2)}
.fig__ro{display:none;align-items:baseline;gap:6px;font-variant-numeric:tabular-nums;color:var(--ink3);text-transform:none;letter-spacing:.02em;white-space:nowrap}
.fig__ro i{font-style:normal;color:var(--a-ink);font-weight:600}
.fig__ro b{font-weight:500;color:var(--ink);min-width:6.2ch;text-align:right;margin-right:6px}
@media (min-width:520px){.fig__ro{display:flex}}
.fig__stage{position:relative;cursor:crosshair;touch-action:pan-y;-webkit-tap-highlight-color:transparent;background-color:var(--white);background-image:linear-gradient(rgba(17,21,26,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(17,21,26,.035) 1px,transparent 1px);background-size:8px 8px}
.fig__stage:focus-visible{outline-offset:-4px;box-shadow:none}
.fig__svg{display:block;width:100%;height:auto;aspect-ratio:640/520;--u:1}
@media (max-width:720px){.fig__svg{--u:1.7}}
@media (max-width:480px){.fig__svg{--u:2}}
.fig__cap{padding:14px 16px 16px;border-top:1px solid var(--ink)}
.fig__leg{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:7px 20px;margin-bottom:14px;font-size:.92rem;line-height:1.38;color:var(--ink2)}
.fig__leg li{display:flex;gap:9px;align-items:baseline}
.fig__leg b{display:inline-grid;place-items:center;flex:none;width:22px;height:22px;border:1px solid var(--ink);border-radius:50%;font:600 .75rem/1 var(--mono);color:var(--ink);transform:translateY(3px)}
.fig__note{display:flex;flex-wrap:wrap;gap:4px 20px;font:400 .8rem/1.5 var(--mono);color:var(--ink3)}
.fig__hint{color:var(--a-ink);font-weight:500}
.fig__log{margin-top:10px;padding:8px 10px;background:var(--paper);border:1px solid var(--rule);font:400 .8rem/1.55 var(--mono);color:var(--ink);font-variant-numeric:tabular-nums}
.fig__sn{position:absolute;left:0;top:0;z-index:4;display:none;pointer-events:none;padding:4px 7px;background:var(--ink);color:var(--paper);font:500 .75rem/1 var(--mono);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;transform:translate(12px,-30px)}

/* ----- Zeichensprache ----- */
.s-fr{fill:none;stroke:var(--ink);stroke-width:calc(var(--u) * .8)}
.s-fr2{fill:none;stroke:var(--ink);stroke-width:calc(var(--u) * 1.3)}
.s-fr3{fill:none;stroke:var(--ink);stroke-width:calc(var(--u) * 1.1);opacity:.8}
.s-t{font:500 9px/1 var(--mono);fill:var(--ink3);letter-spacing:.02em}
.s-lab{font-size:12px;fill:var(--ink2);font-style:italic}
@media (max-width:640px){.s-z,.s-n{display:none}}
.s-k{fill:none;stroke:var(--ink3);stroke-width:calc(var(--u) * .8);opacity:.75}
.s-gr{fill:none;stroke:var(--ink);stroke-width:calc(var(--u) * .7);opacity:.2;stroke-dasharray:calc(var(--u) * 1) calc(var(--u) * 3.4)}
.s-gr.s-solidish{stroke-dasharray:none;opacity:.12}
.s-ax{fill:none;stroke:var(--ink);stroke-width:calc(var(--u) * .8);opacity:.5}
.s-m1{fill:none;stroke:var(--a);stroke-width:calc(var(--u) * 1.7);stroke-linecap:round;stroke-linejoin:round}
.s-m2{fill:none;stroke:var(--b);stroke-width:calc(var(--u) * 1.5);stroke-linecap:round;stroke-linejoin:round}
.s-m3{fill:none;stroke:var(--ink);stroke-width:calc(var(--u) * 1.4);stroke-linecap:round;stroke-linejoin:round}
.s-fa{fill:var(--a);stroke:none}
.s-fb{fill:var(--b);stroke:none}
.s-track{stroke-width:calc(var(--u) * 1.1);opacity:.9}
.s-w{fill:var(--white)}
.s-glow{fill:var(--a);opacity:.13;stroke:none}
.dash{stroke-dasharray:calc(var(--u) * 4) calc(var(--u) * 3)}
.dot{stroke-dasharray:calc(var(--u) * 1) calc(var(--u) * 4)}
.dd{stroke-dasharray:calc(var(--u) * 10) calc(var(--u) * 3) calc(var(--u) * 2) calc(var(--u) * 3)}
.pin circle{fill:var(--white);stroke:var(--ink);stroke-width:calc(var(--u) * 1)}
.pin text{font:600 10px/1 var(--mono);fill:var(--ink)}
.pin{transition:opacity .2s}
.pin circle{transition:fill .2s,stroke .2s}
.pin.is-hot circle{fill:var(--a-ink);stroke:var(--a-ink)}
.pin.is-hot text{fill:#fff}
.fig__svg.has-hot .pin:not(.is-hot){opacity:.35}
.fig__leg li{cursor:default;transition:color .2s}
.fig__leg li:hover,.fig__leg li:focus-visible{color:var(--ink)}
.fig__leg li:hover b,.fig__leg li:focus-visible b{background:var(--a-ink);border-color:var(--a-ink);color:#fff}
.s-band{fill:none;stroke:var(--a);stroke-width:9;opacity:.17}
.s-trail{fill:none;stroke:var(--a);stroke-width:calc(var(--u) * 2.6);stroke-linecap:round;opacity:.5}
.s-water{fill:var(--a);opacity:.1}
.s-wall{stroke:none}
.s-hl{stroke:var(--ink3);stroke-width:1;opacity:.6}
.s-bub{fill:var(--white);stroke:var(--a);stroke-width:calc(var(--u) * 1.2)}
.s-mesh{fill:none;stroke:var(--ink3);stroke-width:calc(var(--u) * .8);opacity:.6}
.s-nd{stroke-width:calc(var(--u) * 1.2)}
.s-cell-f{fill:var(--a);stroke:var(--a);stroke-width:calc(var(--u) * .7)}
.s-cell-p{fill:var(--b)}
.s-dots{fill:none;stroke:var(--ink3);stroke-width:calc(var(--u) * 2.2);stroke-linecap:round;opacity:.55}
.s-shadow{fill:var(--ink);opacity:.1}
.s-curve{fill:none;stroke:var(--b);stroke-width:calc(var(--u) * 1.3);opacity:.85;stroke-linecap:round}
.s-headfill{fill:var(--b);fill-opacity:.4;stroke:var(--b);stroke-width:calc(var(--u) * 1.2);stroke-linejoin:round}
.s-cable{fill:none;stroke:var(--ink);stroke-width:calc(var(--u) * 2.2);stroke-linecap:round}
.s-probe{stroke-linejoin:round}
.s-fine{fill:none;stroke:var(--b);stroke-width:calc(var(--u) * .8);opacity:.5}
.s-cell0{fill:var(--a);fill-opacity:.14}
.s-cell{fill:var(--a);fill-opacity:.05;stroke-width:calc(var(--u) * 1.3)}
.s-cellx{opacity:.9;stroke-width:calc(var(--u) * 1)}
.s-spiral{stroke-width:calc(var(--u) * 2.1)}
.s-side{fill:none;stroke:var(--b);stroke-width:calc(var(--u) * 1.3)}
.s-fibn{font-size:11px}
.s-disc{fill-opacity:.16;stroke-width:calc(var(--u) * .8);stroke-dasharray:calc(var(--u) * 3) calc(var(--u) * 3)}
.s-dl{font-size:10px;fill:var(--ink2);font-weight:600}

/* ----- Zeichnen beim Laden (Plotter) ----- */
.plot{stroke-dasharray:1;stroke-dashoffset:0;animation:plot 1.7s cubic-bezier(.45,.1,.2,1) both var(--pd,0s)}
@keyframes plot{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
.thumb-svg .plot{animation:none}

/* ----- Bewegung ----- */
@keyframes m-spin{from{transform:rotate(var(--a0,0deg))}to{transform:rotate(calc(var(--a0,0deg) + 360deg))}}
.m-spin{animation:m-spin var(--t,40s) linear infinite}
.m-spin.rev{animation-direction:reverse}
@keyframes m-wave{to{transform:translateX(var(--w,-100px))}}
.m-wave{animation:m-wave var(--t,16s) linear infinite}
@keyframes m-ring{0%{transform:scale(.06);opacity:0}10%{opacity:.95}100%{transform:scale(1);opacity:0}}
.m-ring{fill:none;stroke:var(--a);stroke-width:calc(var(--u) * 1.3);animation:m-ring var(--t,6s) cubic-bezier(.2,.5,.3,1) infinite var(--d,0s)}
.m-ring-c{stroke:var(--b)}
@keyframes m-rise{0%{transform:translateY(0);opacity:0}14%{opacity:1}86%{opacity:.9}100%{transform:translateY(var(--h,-100px));opacity:0}}
.m-rise{animation:m-rise var(--t,6s) ease-in infinite var(--d,0s)}
@keyframes m-pulse{0%,100%{opacity:.3}50%{opacity:1}}
.m-pulse{animation:m-pulse var(--t,3.6s) ease-in-out infinite var(--d,0s)}
@keyframes m-flow{to{stroke-dashoffset:calc(var(--u) * -14)}}
.m-flow{fill:none;stroke-width:calc(var(--u) * 1.6);stroke-linecap:round;stroke-dasharray:calc(var(--u) * 3) calc(var(--u) * 11);animation:m-flow 1.5s linear infinite}
@keyframes m-drift{0%,100%{transform:translate(0,0)}50%{transform:translate(6px,-8px)}}
.m-drift{animation:m-drift var(--t,7s) ease-in-out infinite var(--d,0s)}
@keyframes m-ping{0%{transform:scale(.3);opacity:.85}100%{transform:scale(1.5);opacity:0}}
.m-ping{fill:none;stroke:var(--a);stroke-width:calc(var(--u) * 1.2);transform-box:fill-box;transform-origin:center;animation:m-ping var(--t,4s) ease-out infinite var(--d,0s)}

/* Detailausschnitte (<use> auf die eingefrorene Kopie): Bewegung pausiert, Plotter-Aufbau aus */
.sa-defs{position:absolute;width:0;height:0;overflow:hidden}
.sa *{animation-play-state:paused!important}
.sa .plot{animation:none}

/* Pause: unsichtbar / Messmodus / Karten-Vorschau */
.fig.is-off *:not(.plot),.fig.is-measuring *:not(.plot){animation-play-state:paused!important}
.card .thumb-svg *{animation-play-state:paused}
.card:hover .thumb-svg *,.card:focus-within .thumb-svg *{animation-play-state:running}
.thumb-svg{--u:1.15}

/* ----- Messcursor (von JS erzeugt) ----- */
.mc{pointer-events:none}
.mc-l{fill:none;stroke:var(--a-ink);stroke-width:calc(var(--u) * .9);stroke-dasharray:calc(var(--u) * 5) calc(var(--u) * 3)}
.mc-r{fill:none;stroke:var(--a-ink);stroke-width:calc(var(--u) * 1.5)}
.mc-r.is-snap{fill:var(--a-ink);fill-opacity:.15}
.mc-p circle{fill:var(--ink);stroke:var(--white);stroke-width:calc(var(--u) * 1.4)}
.mc-p text{font:600 11px/1 var(--mono);fill:var(--ink);paint-order:stroke;stroke:var(--white);stroke-width:3px}
.mc-d{fill:none;stroke:var(--ink);stroke-width:calc(var(--u) * 1.3)}
.mc-t{font:600 11px/1 var(--mono);fill:var(--ink);paint-order:stroke;stroke:var(--white);stroke-width:4px}

@media (prefers-reduced-motion:reduce){
  .fig__svg *,.thumb-svg *{animation:none!important}
  .m-flow{stroke-dasharray:calc(var(--u) * 3) calc(var(--u) * 5)}
}
