.spectroscopy-animation{--spec-bg:#f7f7f2;--spec-blue:#005a93;--spec-blue-surface:#d9eaf4;--spec-amber:#965000;--spec-amber-surface:#f4e5cd;--spec-teal:#00685e;--spec-teal-surface:#d9eee6;--spec-purple:#724388;--spec-purple-surface:#ece0f1;--spec-red:#ad3e39;--spec-red-surface:#f4deda;--spec-steel:#4f5d65;--spec-steel-surface:#e0e6e7}.dark .spectroscopy-animation,.spectroscopy-animation[data-theme=dark]{--spec-bg:#111815;--spec-blue:#79bfff;--spec-blue-surface:#203e50;--spec-amber:#ffc168;--spec-amber-surface:#4a3520;--spec-teal:#69d3be;--spec-teal-surface:#1d4038;--spec-purple:#d5a6ed;--spec-purple-surface:#402e4a;--spec-red:#ff9b8e;--spec-red-surface:#4b2b28;--spec-steel:#b6c7cd;--spec-steel-surface:#2d373c}.spectroscopy-animation{color:rgb(var(--color-ink))}.spec-tone-blue{--tone:var(--spec-blue);--tone-surface:var(--spec-blue-surface)}.spec-tone-amber{--tone:var(--spec-amber);--tone-surface:var(--spec-amber-surface)}.spec-tone-teal{--tone:var(--spec-teal);--tone-surface:var(--spec-teal-surface)}.spec-tone-purple{--tone:var(--spec-purple);--tone-surface:var(--spec-purple-surface)}.spec-tone-red{--tone:var(--spec-red);--tone-surface:var(--spec-red-surface)}.spec-tone-steel{--tone:var(--spec-steel);--tone-surface:var(--spec-steel-surface)}.spec-tone-ink{--tone:rgb(var(--color-ink));--tone-surface:rgb(var(--color-ink) / .08)}.spec-tone-muted{--tone:rgb(var(--color-ink) / .42);--tone-surface:rgb(var(--color-ink) / .05)}.spec-chapters{flex-wrap:wrap;gap:.4rem;margin-bottom:1rem;display:flex}.spec-chapters button{border:1px solid rgb(var(--color-ink) / .18);min-height:44px;color:rgb(var(--color-ink));cursor:pointer;text-align:left;background:0 0;align-items:baseline;gap:.5rem;padding:.55rem .85rem;font-size:.875rem;display:inline-flex}.spec-chapters button>span{font-variant-numeric:tabular-nums;color:rgb(var(--color-ink) / .6);font-size:.75rem}.spec-chapters button:hover{border-color:rgb(var(--color-ink) / .55)}.spec-chapters button[aria-pressed=true]{background:rgb(var(--color-ink));color:rgb(var(--color-paper));border-color:rgb(var(--color-ink))}.spec-chapters button[aria-pressed=true]>span{color:rgb(var(--color-paper) / .75)}.spectroscopy-animation :is(button,input):focus-visible{outline:2px solid rgb(var(--color-moss));outline-offset:3px}.spec-layout{grid-template-columns:minmax(0,55fr) minmax(0,45fr);align-items:start;gap:clamp(1.25rem,3vw,2.5rem);display:grid}.spec-layout[data-expanded]{grid-template-columns:minmax(0,1fr)}.spec-layout[data-expanded] .spec-stage,.spec-layout[data-expanded] .spec-stage-stack{position:relative;top:0}.spec-layout[data-expanded] .spec-stage-view{height:clamp(28rem,52vw,44rem)}@media (max-width:1000px){.spec-expand{display:none}}.spec-stage,.spec-stage-stack{min-width:0;position:sticky;top:1rem}.spec-stage-stack>.spec-stage{margin-bottom:.75rem;position:relative;top:0}.spec-stage-tools{flex-wrap:wrap;justify-content:space-between;gap:.4rem .75rem;margin-bottom:.5rem;display:flex}.spec-bookmarks{flex-wrap:wrap;gap:.3rem;display:flex}.spec-bookmarks button{border:1px solid rgb(var(--color-ink) / .16);min-height:36px;color:rgb(var(--color-ink));cursor:pointer;background:0 0;padding:.3rem .7rem;font-size:.8125rem}.spec-bookmarks button[aria-pressed=true]{background:rgb(var(--color-mist) / .7);border-color:rgb(var(--color-moss))}.spec-bookmarks button:disabled{opacity:.4;cursor:default}.spec-stage-view{border:1px solid rgb(var(--color-ink) / .12);background:var(--spec-bg);height:clamp(24rem,44vw,35rem);position:relative;overflow:hidden}.spec-stage-canvas{touch-action:pan-y;position:absolute;inset:0}.spec-stage-canvas canvas{cursor:grab;width:100%;height:100%;display:block}.spec-stage-canvas canvas:active{cursor:grabbing}.spec-stage-fallback{padding:.5rem .5rem 4.2rem;position:absolute;inset:0;overflow:auto}.spec-stage-status~.spec-stage-badges,.spec-stage[data-state=diagram] .spec-stage-badges{background:linear-gradient(to top, var(--spec-bg) 70%, transparent);padding-top:.4rem}.spec-stage-fallback .iso-figure{margin:0}.spec-stage-fallback .iso-plate{padding:28px 4px 12px}.spec-stage-status{pointer-events:none;padding:.6rem .8rem;position:absolute;inset:0 auto auto 0}.spec-stage-status p{background:rgb(var(--color-paper) / .9);border:1px solid rgb(var(--color-ink) / .14);pointer-events:auto;max-width:30rem;padding:.45rem .7rem;font-size:.8125rem;line-height:1.5;display:inline-block}.spec-stage-status button{border:1px solid rgb(var(--color-ink) / .3);min-height:32px;color:inherit;cursor:pointer;background:0 0;margin-left:.4rem;padding:.2rem .6rem}.spec-stage-badges{pointer-events:none;flex-wrap:wrap;gap:.3rem;display:flex;position:absolute;bottom:.5rem;left:.5rem;right:.5rem}.spec-stage[data-state=ready] .spec-stage-status,.spec-stage[data-state=loading] .spec-stage-badges{display:none}.spec-badge{border:1px solid rgb(var(--color-ink) / .16);background:rgb(var(--color-paper) / .88);color:rgb(var(--color-ink));align-items:center;gap:.35rem;padding:.2rem .5rem;font-size:.75rem;line-height:1.3;display:inline-flex}.spec-badge[data-on]{border-color:var(--tone);box-shadow:inset 3px 0 0 var(--tone)}.spec-badge[data-off]{opacity:.55}.spec-labels{pointer-events:none;position:absolute;inset:0;overflow:hidden}.spec-inset{border:1px solid rgb(var(--color-ink) / .28);cursor:zoom-in;background:0 0;position:absolute}.spec-inset>span{background:rgb(var(--color-paper) / .88);color:rgb(var(--color-ink) / .85);pointer-events:none;padding:.1rem .4rem;font-size:.68rem;line-height:1.35;position:absolute;top:0;left:0}.spec-label.is-inset{padding:0 .25rem;font-size:.62rem}.spec-label{background:rgb(var(--color-paper) / .82);color:rgb(var(--color-ink));white-space:nowrap;margin-left:0;padding:.1rem .35rem;font-size:.72rem;line-height:1.3;position:absolute;top:0;left:0;translate:-50% -50%}.spec-label[data-tone]{border-left:3px solid var(--tone)}.spec-label.is-axis{background:0 0;font-weight:600}.spec-label.is-note{color:rgb(var(--color-ink) / .8);font-size:.68rem}.spec-panel{min-width:0}.spec-step-head{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.spec-step-head h3{font-size:1.125rem;font-weight:600;line-height:1.35}.spec-step-head span{color:rgb(var(--color-ink) / .65);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.75rem}.spec-caption{min-height:3.2rem;margin-top:.35rem;font-size:.9375rem;line-height:1.65}.spec-action{color:rgb(var(--color-ink) / .72);margin-top:.25rem;font-size:.8125rem;line-height:1.55}.spec-controls{flex-wrap:wrap;align-items:center;gap:.4rem .5rem;margin-top:.75rem;display:flex}.spec-controls>span{margin-right:.2rem;font-size:.8125rem;font-weight:500}.spec-controls button{border:1px solid rgb(var(--color-ink) / .2);min-height:40px;color:rgb(var(--color-ink));font-variant-numeric:tabular-nums;cursor:pointer;background:0 0;padding:.4rem .75rem;font-size:.8125rem}.spec-controls button[aria-pressed=true]{background:rgb(var(--color-mist) / .7);border-color:rgb(var(--color-moss));font-weight:600}.spec-controls label{flex-direction:column;flex:14rem;gap:.15rem;min-width:min(100%,16rem);font-size:.8125rem;display:flex}.spec-controls label>span{justify-content:space-between;gap:.5rem;display:flex}.spec-controls output{font-variant-numeric:tabular-nums;font-weight:600}.spec-controls input[type=range]{width:100%;min-height:36px;accent-color:rgb(var(--color-moss))}.spec-plot{margin:.9rem 0 0}.spec-plot-title{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem .75rem;margin-bottom:.2rem;font-size:.8125rem;font-weight:600;display:flex}.spec-plot-title small{color:rgb(var(--color-ink) / .7);font-weight:400}.spec-plot-frame{width:100%}.spec-plot-frame svg{display:block;overflow:visible}.spec-plot-area{fill:rgb(var(--color-ink) / .015)}.spec-grid{stroke:rgb(var(--color-ink) / .08);stroke-width:1px}.spec-axis{stroke:rgb(var(--color-ink) / .45);stroke-width:1px}.spec-zero{stroke:rgb(var(--color-ink) / .6);stroke-width:1px;stroke-dasharray:3 3}.spec-tick{fill:rgb(var(--color-ink) / .72);font-variant-numeric:tabular-nums;font-size:11px}.spec-axis-label{fill:rgb(var(--color-ink) / .85);font-size:11.5px}.spec-note{fill:rgb(var(--color-ink));paint-order:stroke;stroke:var(--spec-bg);stroke-width:3px;stroke-linejoin:round;font-size:11px}.spec-trace{fill:none;stroke:var(--tone,rgb(var(--color-ink)));stroke-linecap:round;stroke-linejoin:round}.spec-trace[data-dash=dashed]{stroke-dasharray:7 4;stroke-linecap:butt}.spec-trace[data-dash=dotted]{stroke-dasharray:1.2 3.6;stroke-width:2.4px}.spec-stick{stroke:var(--tone);stroke-linecap:butt}.spec-marker{stroke:var(--spec-bg);stroke-width:1.2px}.spec-marker.is-filled{fill:var(--tone)}.spec-marker.is-open{fill:none;stroke:var(--tone);stroke-width:1.8px}.spec-band{fill:var(--tone)}.spec-bracket{fill:none;stroke:var(--tone);stroke-width:1.4px}.spec-plot-area-fill{fill:var(--tone-surface)}.spec-meter-fill{fill:var(--tone)}.spec-meter-frame{fill:none;stroke:rgb(var(--color-ink) / .45)}.spec-legend{flex-wrap:wrap;align-items:center;gap:.25rem .75rem;margin-top:.45rem;font-size:.78rem;line-height:1.35;display:flex}.spec-legend-title{margin-right:.1rem;font-weight:600}.spec-legend>span,.spec-legend>button{align-items:center;gap:.3rem;display:inline-flex}.spec-legend>button{border:1px solid rgb(var(--color-ink) / .16);min-height:32px;color:rgb(var(--color-ink));cursor:pointer;background:0 0;padding:.15rem .5rem;font-size:.78rem}.spec-legend>button[aria-pressed=true]{border-color:rgb(var(--color-moss));background:rgb(var(--color-mist) / .6)}.spec-legend>button[aria-pressed=false]{opacity:.6}.spec-swatch{flex:none;width:26px;height:12px;overflow:visible}.spec-readouts{grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr));gap:.4rem .8rem;margin-top:.75rem;font-size:.8125rem;display:grid}.spec-readouts>div{border-left:3px solid var(--tone,rgb(var(--color-ink) / .2));padding-left:.55rem}.spec-readouts dt{color:rgb(var(--color-ink) / .7);font-size:.75rem}.spec-readouts dd{font-variant-numeric:tabular-nums;font-weight:600}.spec-secondary{margin-top:.4rem}.spec-secondary-toggle{border:1px solid rgb(var(--color-ink) / .2);min-height:40px;color:rgb(var(--color-ink));cursor:pointer;background:0 0;margin-top:.6rem;padding:.3rem .7rem;font-size:.8125rem;font-weight:600;display:none}.spec-provenance{border-left:3px solid rgb(var(--color-ink) / .25);color:rgb(var(--color-ink) / .8);margin-top:.9rem;padding:.55rem .7rem;font-size:.78rem;line-height:1.55}.spec-provenance strong{color:rgb(var(--color-ink))}.spec-transport{border-top:1px solid rgb(var(--color-ink) / .12);margin-top:1rem;padding-top:.75rem}.spec-steps{flex-wrap:wrap;gap:.3rem;margin:0 0 .5rem;padding:0;list-style:none;display:flex}.spec-steps button{border:1px solid rgb(var(--color-ink) / .14);min-height:36px;color:rgb(var(--color-ink));cursor:pointer;background:0 0;align-items:baseline;gap:.4rem;padding:.3rem .65rem;font-size:.8125rem;display:inline-flex}.spec-steps button>span{color:rgb(var(--color-ink) / .6);font-variant-numeric:tabular-nums;font-size:.7rem}.spec-steps button[data-done]{border-color:rgb(var(--color-ink) / .3)}.spec-steps button[aria-current=step]{background:rgb(var(--color-mist) / .75);border-color:rgb(var(--color-moss));font-weight:600}.spec-transport-row{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;display:flex}.spec-transport-buttons{gap:.3rem;display:flex}.spec-transport-buttons button{border:1px solid rgb(var(--color-ink) / .2);min-width:44px;min-height:44px;color:rgb(var(--color-ink));cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:.4rem;padding:0 .65rem;font-size:.875rem;display:inline-flex}.spec-transport-buttons button:disabled{opacity:.35;cursor:default}.spec-transport-buttons svg{fill:currentColor;stroke:currentColor;stroke-width:1.2px;width:14px;height:14px}.spec-transport-buttons .spec-play{background:rgb(var(--color-ink));min-width:7.5rem;color:rgb(var(--color-paper));border-color:rgb(var(--color-ink));font-weight:600}.spec-scrubber{flex:14rem}.spec-scrubber input{width:100%;min-height:44px;accent-color:rgb(var(--color-moss))}.spec-clock{font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:.2rem 1rem;margin-top:.35rem;font-size:.8125rem;line-height:1.5;display:flex}.spec-clock span{color:rgb(var(--color-ink) / .72)}.spec-parts{margin-top:1.25rem}.spec-parts .figure-note-text{min-height:0}.spec-parts-list{flex-wrap:wrap;gap:.35rem;margin-top:.75rem;display:flex}.spec-parts-list button{border:1px solid rgb(var(--color-ink) / .16);min-height:40px;color:rgb(var(--color-ink));cursor:pointer;background:0 0;align-items:center;gap:.45rem;padding:.3rem .65rem;font-size:.8125rem;display:inline-flex}.spec-parts-list button[aria-pressed=true]{border-color:var(--tone);box-shadow:inset 0 -3px 0 var(--tone);background:var(--tone-surface)}.spec-figure-note{max-width:52rem;color:rgb(var(--color-ink) / .8);margin-top:1.25rem;font-size:.8125rem;line-height:1.7}@media (max-width:1000px){.spec-layout{grid-template-columns:minmax(0,1fr)}.spec-stage,.spec-stage-stack{position:relative;top:0}.spec-stage-view{height:clamp(20rem,70vw,30rem)}}@media (max-width:640px){.spec-stage-view{height:21rem;margin:0 -.25rem}.spec-caption{min-height:0}.spec-secondary-toggle{align-items:center;display:inline-flex}.spec-secondary:not([data-open]) .spec-secondary-body{display:none}.spec-chapters{scrollbar-width:thin;flex-wrap:nowrap;padding-bottom:.25rem;overflow-x:auto}.spec-chapters button{flex:none;max-width:13.5rem;font-size:.8125rem}.spec-stage-badges{gap:.2rem}.spec-badge{padding:.1rem .35rem;font-size:.68rem}.spec-badge[data-focus]{display:none}.spec-stage-legend{font-size:.72rem}.spec-transport-buttons .spec-play{min-width:6rem}}.spec-bloch{flex-wrap:wrap;justify-content:flex-start;gap:.75rem;display:flex}.spec-bloch svg{display:block;overflow:visible}.spec-multiples{grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem;margin-top:.9rem;display:grid}.spec-mini{margin:0}.spec-mini .spec-plot-title{min-height:2.2em;font-size:.75rem}.spec-mini svg{width:100%;max-width:180px;height:auto;display:block;overflow:visible}.spec-diagram{height:100%}.spec-diagram .iso-svg{max-height:100%}.spec-diagram-figure{flex-direction:column;height:100%;display:flex}.spec-diagram-figure .iso-plate{flex:1;min-height:0}.spec-diagram-note{color:rgb(var(--color-ink) / .75);margin-top:.4rem;font-size:.75rem;line-height:1.5}.spec-stage-legend{margin-top:.5rem}.spec-stage-legend .spec-swatch{width:18px}.spec-measurement{border-left-color:rgb(var(--color-moss))}.spec-measurement .spec-readouts{margin-top:.5rem}.spec-flag{color:var(--spec-red);font-weight:600}.spec-trace-chip{vertical-align:-.1rem;border:1px solid rgb(var(--color-ink) / .3);width:.8rem;height:.8rem;margin-right:.3rem;display:inline-block}@media (max-width:640px){.spec-multiples{grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem}.spec-mini .spec-plot-title{font-size:.68rem}}
