/* Mathematics encyclopedia: lesson layout and lab kit. */
.math-wrap{
 --lab-plate:light-dark(#fdfcf9,#1a1816);
 --lab-ink:var(--ig-ink,light-dark(#1b1917,#ece7df));
 --lab-muted:light-dark(#7b736a,#a0978b);
 --lab-grid:light-dark(#ebe5da,#2b2723);
 --lab-zero:light-dark(#cfc6b8,#4a433b);
 --lab-c1:light-dark(#2f5ea8,#8ab3f0);
 --lab-c2:light-dark(#c2572b,#f2a174);
 --lab-c3:light-dark(#1f8577,#6fd2c1);
 --lab-c4:light-dark(#8a4fb0,#caa3ea);
 --lab-hl:light-dark(#c38c0c,#f1c65a);
 --lab-pos:light-dark(#c2572b,#e98d5f);
 --lab-neg:light-dark(#2f5ea8,#739fe2);
 --lab-accent:var(--ig-accent,#8a4b26);
 --lab-mono:"JetBrains Mono","SF Mono",ui-monospace,Menlo,monospace;
 max-width:1080px;margin:auto;padding:20px 28px 72px}
.lab-probe{position:absolute;visibility:hidden;pointer-events:none}
.lesson-intro{padding:35px 0 20px}.eyebrow,.source{font-size:.8rem;letter-spacing:.04em}
.lesson-intro h1{font-size:clamp(2rem,5vw,3.6rem);line-height:1.1;max-width:850px;margin:14px 0 22px;text-wrap:balance}
.deck{font-size:1.25rem;max-width:65ch}.lesson-nav{display:flex;gap:10px 24px;flex-wrap:wrap;margin:25px 0}.lesson-nav a{font-size:.92rem}
.method{font-size:.9rem;opacity:.8}
.experiment{padding:44px 0 36px;border-top:1px solid var(--ig-rule,#ddd);scroll-margin-top:90px}
.experiment h2{font-size:1.7rem;text-wrap:balance;margin-bottom:.4em}
.experiment>p{max-width:72ch;line-height:1.7}
/* controls */
.controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px 28px;margin:24px 0 10px}
.lab-control{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:6px 10px;font-size:.88rem;color:var(--lab-ink)}
.lab-control output{font:600 .86rem var(--lab-mono);font-variant-numeric:tabular-nums;color:var(--lab-accent);background:color-mix(in srgb,var(--lab-accent) 9%,transparent);padding:1px 7px;border-radius:5px}
.lab-control input[type=range]{grid-column:1/-1;-webkit-appearance:none;appearance:none;width:100%;height:22px;margin:0;background:transparent;cursor:pointer}
.lab-control input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:4px;background:linear-gradient(90deg,var(--lab-accent) var(--fill,0%),var(--lab-grid) var(--fill,0%))}
.lab-control input[type=range]::-moz-range-track{height:4px;border-radius:4px;background:var(--lab-grid)}
.lab-control input[type=range]::-moz-range-progress{height:4px;border-radius:4px;background:var(--lab-accent)}
.lab-control input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;margin-top:-7px;border-radius:50%;background:var(--lab-plate);border:2px solid var(--lab-accent);box-shadow:0 1px 3px rgb(0 0 0/.18);transition:transform .12s}
.lab-control input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--lab-plate);border:2px solid var(--lab-accent)}
.lab-control input[type=range]:hover::-webkit-slider-thumb{transform:scale(1.12)}
.lab-control input[type=range]:focus-visible{outline:2px solid var(--lab-accent);outline-offset:3px;border-radius:6px}
.lab-control.is-choice{grid-template-columns:1fr}
.lab-seg{display:flex;flex-wrap:wrap;gap:0;border:1px solid var(--lab-grid);border-radius:8px;overflow:hidden;width:max-content;max-width:100%}
.lab-seg button{font:inherit;font-size:.84rem;border:0;border-right:1px solid var(--lab-grid);background:transparent;color:var(--lab-ink);padding:6px 12px;cursor:pointer}
.lab-seg button:last-child{border-right:0}
.lab-seg button[aria-checked=true]{background:var(--lab-accent);color:var(--lab-plate)}
.lab-seg button:focus-visible{outline:2px solid var(--lab-accent);outline-offset:-2px}
.lab-tools{display:flex;gap:8px;align-items:center;margin:4px 0 12px}
.lab-tools button,.lab-anim button{font:500 .78rem var(--ig-sans,system-ui);border:1px solid var(--lab-grid);background:transparent;color:var(--lab-muted);border-radius:999px;padding:4px 12px;cursor:pointer}
.lab-tools button:hover,.lab-anim button:hover{color:var(--lab-ink);border-color:var(--lab-muted)}
.lab-status{font-size:.8rem;color:var(--lab-muted)}
/* figure */
.plot{width:100%;max-width:880px;margin:10px 0 6px}
.lab-fig{position:relative;background:var(--lab-plate);border:1px solid var(--lab-grid);border-radius:10px;overflow:hidden;margin:0 0 10px}
.lab-fig+.lab-fig{margin-top:12px}
.lab-svg{display:block;width:100%;height:auto;position:relative;color:var(--lab-ink);font-family:var(--ig-sans,system-ui);touch-action:pan-y}
.lab-raster{position:absolute;display:block}
.lab-grid line{stroke:var(--lab-grid);stroke-width:1}
.lab-frame{fill:none;stroke:var(--lab-grid);stroke-width:1}
.lab-zero{stroke:var(--lab-zero);stroke-width:1.2}
.lab-tick{fill:var(--lab-muted);font:11px var(--lab-mono);font-variant-numeric:tabular-nums}
.lab-axlabel{fill:var(--lab-muted);font:italic 13px var(--ig-serif,Georgia,serif)}
.lab-line{stroke-linecap:round;stroke-linejoin:round}
.lab-dot{stroke:var(--lab-plate);stroke-width:2}
.lab-dot.is-hollow{stroke-width:2}
.lab-label{fill:var(--lab-ink);font:500 12.5px var(--ig-sans,system-ui);paint-order:stroke;stroke:var(--lab-plate);stroke-width:4px;stroke-linejoin:round}
.lab-label.is-math{font:italic 15px var(--ig-serif,Georgia,serif)}
.lab-label.is-small{font-size:11px}
.lab-handle{cursor:grab;outline:none}
.lab-handle.is-dragging{cursor:grabbing}
.lab-handle-hit{fill:transparent}
.lab-handle-dot{stroke:var(--lab-plate);stroke-width:3;filter:drop-shadow(0 1px 2px rgb(0 0 0/.25));transition:r .12s}
.lab-handle:hover .lab-handle-dot,.lab-handle:focus-visible .lab-handle-dot,.lab-handle.is-dragging .lab-handle-dot{r:10.5}
.lab-handle:focus-visible .lab-handle-hit{stroke:var(--lab-accent);stroke-width:2;stroke-dasharray:3 3}
.lab-hit{fill:transparent}
.lab-hover line{stroke:var(--lab-muted);stroke-dasharray:3 3}
.lab-hover rect{fill:var(--lab-ink);opacity:.92}
.lab-tip{fill:var(--lab-plate);font:500 11.5px var(--lab-mono)}
.lab-stream.is-flowing path{stroke-dasharray:6 10;animation:labflow 1.6s linear infinite}
@keyframes labflow{to{stroke-dashoffset:-32}}
.lab-legend{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.84rem;color:var(--lab-muted);margin:2px 2px 8px}
.lab-legend span{display:inline-flex;align-items:center;gap:7px}
.lab-legend .sw{display:inline-block;width:20px;height:0;border-top:2.5px solid var(--sw)}
.lab-legend .sw.is-dash{border-top-style:dashed}
.lab-legend .sw.dot{width:9px;height:9px;border:0;border-radius:50%;background:var(--sw)}
.lab-legend .sw.fill{width:14px;height:10px;border:0;border-radius:2px;background:color-mix(in srgb,var(--sw) 35%,transparent);outline:1.5px solid var(--sw)}
.lab-anim{display:flex;align-items:center;gap:8px;margin:2px 0 8px}
.lab-anim .lab-play{color:var(--lab-plate);background:var(--lab-accent);border-color:var(--lab-accent)}
.lab-anim .lab-play:hover{color:var(--lab-plate)}
.lab-anim-t{font:12px var(--lab-mono);color:var(--lab-muted);font-variant-numeric:tabular-nums}
.lab-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
.lab-row>.lab-col>.lab-cap,.lab-cap{font-size:.82rem;color:var(--lab-muted);margin:2px 4px 6px}
.lab-readout{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:2.2em;margin:4px 0 8px;font-weight:400}
.lab-chip{display:inline-flex;align-items:baseline;gap:8px;border:1px solid var(--lab-grid);background:var(--lab-plate);border-radius:8px;padding:5px 11px}
.lab-chip .k{font-size:.78rem;color:var(--lab-muted)}
.lab-chip .v{font:600 .9rem var(--lab-mono);font-variant-numeric:tabular-nums;color:var(--lab-ink)}
.lab-chip.is-good{border-color:color-mix(in srgb,var(--lab-c3) 55%,transparent)}.lab-chip.is-good .v{color:var(--lab-c3)}
.lab-chip.is-warn{border-color:color-mix(in srgb,var(--lab-c2) 55%,transparent)}.lab-chip.is-warn .v{color:var(--lab-c2)}
.lab-chip.is-key{border-color:color-mix(in srgb,var(--lab-c1) 55%,transparent)}.lab-chip.is-key .v{color:var(--lab-c1)}
.lab-note{font-size:.88rem;color:var(--lab-muted);flex-basis:100%}
.lab-error{color:var(--lab-c2);font-size:.9rem;padding:20px}
.lab-table{border-collapse:collapse;margin:8px auto;font:13px var(--lab-mono);font-variant-numeric:tabular-nums}
.lab-table th,.lab-table td{width:2.3em;height:2.1em;text-align:center;border:1px solid var(--lab-grid)}
.lab-table th{color:var(--lab-muted);font-weight:500;background:color-mix(in srgb,var(--lab-grid) 45%,transparent)}
.formula{overflow-x:auto;padding:14px 0;font-size:1.08rem}.formula .katex-display{margin:0}.formula .katex-display>.katex{text-align:left}
.notes{border-left:3px solid var(--lab-accent);padding-left:20px;max-width:78ch;margin:12px 0 20px}.notes p{line-height:1.75}
.notes summary{cursor:pointer;font-weight:600;padding:10px 0}
.source{display:inline-block;margin-top:8px}
.connections{border-top:1px solid var(--ig-rule,#ddd);padding-top:30px}
@media(max-width:600px){.math-wrap{padding:16px}.lesson-intro{padding-top:15px}.experiment{padding:28px 0}.controls{grid-template-columns:1fr;gap:10px}}
@media(prefers-reduced-motion:reduce){.lab-stream.is-flowing path{animation:none}.lab-handle-dot{transition:none}}
.lab-table.is-rules th,.lab-table.is-rules td{width:auto;min-width:3.4em;padding:0 .6em;white-space:nowrap;transition:background .15s}
.lab-table td.is-active{background:color-mix(in srgb,var(--lab-hl) 32%,transparent);color:var(--lab-ink);font-weight:600;outline:2px solid var(--lab-hl);outline-offset:-2px}
.lab-palette{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}
.lab-sym{min-width:2.4em;height:2.3em;border:1px solid var(--lab-grid);border-radius:8px;background:var(--lab-plate);color:var(--lab-ink);font:500 16px/1 var(--lab-mono);cursor:pointer}
.lab-sym:hover,.lab-sym:focus-visible{border-color:var(--lab-c1);outline:none;background:color-mix(in srgb,var(--lab-c1) 12%,var(--lab-plate))}
.lab-sym.is-wide{padding:0 .8em;font-size:13px}
.lab-bignum{border:1px solid var(--lab-grid);border-radius:10px;background:var(--lab-plate);padding:10px 14px;margin:10px 0}
.lab-bignum-k{font-size:.8rem;color:var(--lab-muted);overflow-wrap:anywhere}
.lab-bignum-v{font:600 15px/1.5 var(--lab-mono);color:var(--lab-c1);overflow-wrap:anywhere;margin:4px 0}
.controls>label{min-width:0}.lab-control.is-choice .lab-seg{width:auto}
