.lab-experiments{display:flex;flex-wrap:wrap;gap:8px 24px;padding:18px 0;margin-bottom:26px;border-bottom:1px solid var(--rule)}.lab-experiments a{padding:10px 0;color:var(--muted);text-decoration:none;font-size:14px}.lab-experiments a[aria-current]{color:var(--accent);box-shadow:0 1px var(--accent)}#lab-shell>.lab-experiments{margin:0 36px}.channels{max-width:1600px;margin:auto;padding:0 36px 70px}.c-heading h1{font-size:clamp(36px,4.5vw,62px);line-height:1.06;letter-spacing:-.035em;margin:20px 0 14px}.c-heading p{color:var(--muted);max-width:65ch;line-height:1.6}.c-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:36px;margin-top:32px}.c-stage{min-width:0}.c-stage canvas{display:block;width:100%;height:330px;background:var(--transport);touch-action:pan-y}.c-stage figcaption,.c-caption{font-size:13px;line-height:1.6;color:var(--muted);margin:12px 0}.c-stage figure{margin:0}.c-actions{display:flex;flex-wrap:wrap;gap:12px;margin:22px 0}.channels button,.channels select{background:var(--bg);color:var(--ink);border:1px solid var(--rule);padding:11px 15px;font:inherit;min-height:44px}.channels button:hover{border-color:var(--accent)}.channels #c-play{background:var(--accent);color:var(--bg)}.channels label{display:block;margin:24px 0;font-size:14px}.channels label>span{display:flex;justify-content:space-between;gap:12px}.channels input[type=range]{width:100%;margin:15px 0}.channels output{font-variant-numeric:tabular-nums}.channels h2{font-size:24px;font-weight:400;letter-spacing:-.02em}.channels p{line-height:1.65}.c-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;border-top:1px solid var(--rule);margin:24px 0}.c-results p{font-size:13px;color:var(--muted)}.c-results strong{display:block;color:var(--ink);font-weight:400;font-size:20px;font-variant-numeric:tabular-nums}.c-profile{width:100%;height:260px}.c-profile text{font-family:Hanken,sans-serif;font-size:12px;fill:var(--muted);stroke:none}.c-profile .exact{stroke:var(--accent);stroke-width:2;fill:none}.c-profile .sample{fill:var(--warm)}.c-profile .axis{stroke:var(--rule)}.c-legend{display:flex;flex-wrap:wrap;gap:20px;font-size:13px;color:var(--muted)}.c-legend span:first-child{color:var(--accent)}.c-legend span:last-child{color:var(--warm)}.c-bottom{display:grid;grid-template-columns:1fr 1fr;gap:50px;border-top:1px solid var(--rule);padding-top:24px;margin-top:32px}.c-bottom p{max-width:65ch}.channels a{color:var(--accent);text-underline-offset:4px}.c-equation{font:22px Georgia,serif}.channels details{margin-top:30px;border-top:1px solid var(--rule);padding-top:20px}.channels summary{cursor:pointer;min-height:44px}.channels :focus-visible,.lab-experiments a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.c-status{min-height:24px;color:var(--muted);font-size:13px}.c-controls{min-width:0}.c-controls select{width:100%}@media(max-width:760px){.channels{padding:0 20px 50px}.c-layout,.c-bottom{grid-template-columns:1fr;gap:24px}.c-stage canvas{height:270px}.c-results{gap:0 12px}.c-results strong{font-size:18px}.lab-experiments{gap:4px 18px}#lab-shell>.lab-experiments{margin:0 20px}}
.c-profile .axis{fill:none}.channels .lab-experiments a:not([aria-current]){color:var(--muted)}@media(max-width:760px){.c-layout{display:flex;flex-direction:column}.c-stage{display:contents}.c-stage>figure{order:0}.c-stage>.c-actions{order:1}.c-stage>.c-status{order:2}.c-controls{order:3}.c-stage>h2,.c-stage>.c-legend,.c-stage>.c-profile,.c-stage>.c-caption,.c-stage>.c-results{order:4;margin-top:0;margin-bottom:0}}
.c-stage canvas{height:440px;touch-action:none;cursor:grab}.c-stage canvas:active{cursor:grabbing}.c-view-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:16px}.c-view-controls label{margin:0}.c-view-controls button[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}.c-view-controls span{font-size:13px;color:var(--muted)}.channels .c-motion-time{margin:20px 0 0}.c-motion-time output{margin-left:12px;color:var(--accent)}@media(max-width:760px){.c-stage canvas{height:340px}.c-stage>.c-view-controls,.c-stage>.c-motion-time{order:1}.c-view-controls{gap:8px}.c-view-controls span{width:100%}}
.cv-stage{position:relative;max-width:720px;margin:auto}.cavity .cv-stage canvas{width:100%;height:auto;aspect-ratio:1;touch-action:auto;cursor:crosshair}.cv-stage #cv-loading{position:absolute;inset:0;display:grid;place-content:center;background:var(--bg);color:var(--accent);margin:0}.cv-stage #cv-loading[hidden]{display:none}.cavity .c-profile{height:260px}.cavity .c-stage figure{max-width:720px}.cavity .c-actions button:first-child{background:var(--accent);color:var(--bg)}
.ls-controls{display:grid;grid-template-columns:2fr 1fr 1fr;gap:24px;margin:25px 0}.ls-controls input,.ls-controls select{width:100%;box-sizing:border-box;background:var(--bg);color:var(--ink);border:1px solid var(--rule);font:inherit;padding:12px;margin-top:10px;min-height:44px}.ls-path{margin-top:46px}.ls-path>h2{font-size:30px;margin-bottom:25px}.ls-lesson{display:grid;grid-template-columns:1fr 1.4fr;gap:45px;border-top:1px solid var(--rule);padding:24px 0}.ls-lesson h3{font-size:22px;letter-spacing:-.02em;margin:0;font-weight:400}.ls-lesson p{margin:10px 0;max-width:65ch}.ls-state{font-size:13px;color:var(--accent)}@media(max-width:760px){.ls-controls,.ls-lesson{grid-template-columns:1fr;gap:8px}.ls-controls label{margin:4px 0}.ls-lesson{padding:24px 0}.ls-path>h2{font-size:26px}}
.cavity button:disabled{opacity:.45;cursor:not-allowed}
.ls-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px 24px}.ls-lesson{display:flex;flex-direction:column;gap:0;padding:0;border:1px solid var(--rule);background:#0b131a;overflow:hidden}.ls-lesson img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border-bottom:1px solid var(--rule)}.ls-copy{padding:22px;display:flex;flex-direction:column;flex:1}.ls-copy>a{margin-top:auto;padding-top:14px;min-height:44px}.ls-copy h3{font-size:24px}.ls-copy .ls-state{margin:8px 0}.motion-lesson canvas{height:auto;aspect-ratio:1000/650;cursor:default;touch-action:pan-y}@media(max-width:1100px){.ls-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.ls-grid{grid-template-columns:1fr}.ls-copy{padding:20px}}
