/* Physik-Labor: full-height stage left, instrument panel right (stacks on phones) */
body{min-height:100vh;display:flex;flex-direction:column}
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--panel);flex-wrap:wrap}
.top .brand{margin:0}
.links{display:flex;gap:4px;flex-wrap:wrap}
.links a{padding:7px 12px;border-radius:9px;color:var(--muted);text-decoration:none;font-weight:600;font-size:.88rem}
.links a:hover{color:var(--ink);background:var(--sunk)}
.links a[aria-current=page]{color:var(--ink);background:var(--sunk);box-shadow:inset 0 0 0 1px var(--line)}
.lab{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:0;min-height:0}
@media (max-width:980px){.lab{grid-template-columns:1fr}}
.stage{position:relative;min-height:62vh;background:radial-gradient(120% 90% at 50% 10%,color-mix(in srgb,var(--panel) 85%,var(--accent-soft)),var(--paper));overflow:hidden}
@media (max-width:980px){.stage{min-height:58vh}}
.stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}
.hud{position:absolute;left:12px;top:12px;display:grid;grid-template-columns:auto auto;gap:2px 12px;font:12px/1.5 var(--f-mono);background:color-mix(in srgb,var(--panel) 86%,transparent);backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-variant-numeric:tabular-nums;box-shadow:var(--shadow)}
.hud span{color:var(--muted)} .hud b{font-weight:600;text-align:right}
.hud .flag{grid-column:1/-1;margin-top:4px}
.feet{position:absolute;right:12px;top:12px;display:grid;grid-template-columns:repeat(2,auto);gap:6px;font:11px var(--f-mono)}
.foot{background:color-mix(in srgb,var(--panel) 86%,transparent);backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:10px;padding:7px 9px;min-width:112px;box-shadow:var(--shadow)}
.foot b{display:flex;justify-content:space-between;font-size:11px}
.bar2{height:6px;border-radius:99px;background:var(--line);overflow:hidden;margin-top:4px}
.bar2 i{display:block;height:100%;border-radius:99px;transition:width .08s}
.foot small{display:flex;justify-content:space-between;color:var(--muted);margin-top:2px}
.foot.sat{border-color:var(--danger)}
.stagebar{position:absolute;left:12px;right:12px;bottom:12px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.stagebar .seg{background:color-mix(in srgb,var(--panel) 86%,transparent);backdrop-filter:blur(6px)}
.tog{display:inline-flex;align-items:center;gap:6px;font-size:.82rem;font-weight:600;padding:7px 10px;border-radius:10px;border:1px solid var(--line);background:color-mix(in srgb,var(--panel) 86%,transparent);backdrop-filter:blur(6px);cursor:pointer}
.tog input{accent-color:var(--accent)}
.panel{border-left:1px solid var(--line);background:var(--panel);display:flex;flex-direction:column;min-height:0;max-height:calc(100vh - 66px);position:sticky;top:0}
@media (max-width:980px){.panel{border-left:0;border-top:1px solid var(--line);max-height:none;position:static}}
.ptabs{display:flex;border-bottom:1px solid var(--line);overflow-x:auto;padding:0 8px}
.ptabs button{all:unset;cursor:pointer;padding:12px 12px;font-weight:600;font-size:.9rem;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap}
.ptabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent)}
.ptabs button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.pbody{padding:16px;overflow:auto;display:flex;flex-direction:column;gap:14px;flex:1}
.pbody h2{font-size:1.05rem}
.pbody .sub{font-size:.86rem;color:var(--muted)}
.gaits{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px}
.gaits button{all:unset;cursor:pointer;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--sunk);font-weight:600;font-size:.88rem;display:flex;flex-direction:column;gap:2px;transition:border-color .15s}
.gaits button small{font-weight:400;color:var(--muted);font-size:.74rem}
.gaits button:hover{border-color:color-mix(in srgb,var(--accent) 60%,var(--line))}
.gaits button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}
.gaits button:focus-visible{outline:2px solid var(--accent)}
.sliders{display:flex;flex-direction:column;gap:10px}
.sl{display:grid;grid-template-columns:1fr auto;gap:2px 10px;align-items:center;font-size:.86rem}
.sl input{grid-column:1/-1;width:100%;accent-color:var(--accent)}
.sl b{font:600 .84rem var(--f-mono)}
.sl small{grid-column:1/-1;color:var(--muted);font-size:.75rem}
table.mt{border-collapse:collapse;width:100%;font-size:.82rem}
table.mt th,table.mt td{padding:6px 6px;border-bottom:1px solid var(--line2);text-align:left;vertical-align:top}
table.mt th{font-size:.68rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
table.mt td.n{font-family:var(--f-mono);white-space:nowrap;text-align:right}
.src{font-size:.68rem;font-weight:700;padding:1px 7px;border-radius:99px;border:1px solid var(--line);white-space:nowrap;color:var(--muted)}
.src.measured{color:var(--ok);border-color:var(--ok);background:var(--ok-soft)}
.src.estimate,.src.scaled{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 50%,transparent)}
.src.listing,.src.manual{color:var(--info);border-color:color-mix(in srgb,var(--info) 50%,transparent)}
.mrow{display:grid;grid-template-columns:1fr 110px;gap:4px 10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line2)}
.mrow label{font-weight:600;font-size:.9rem}
.mrow .how{grid-column:1/-1;font-size:.8rem;color:var(--muted)}
.mrow .inp{display:flex;align-items:center;gap:6px}
.mrow input{width:100%;font:600 .92rem var(--f-mono);padding:7px 8px;border:1px solid var(--line);border-radius:9px;background:var(--sunk);color:var(--ink);text-align:right}
.mrow input:focus{outline:2px solid var(--accent);outline-offset:0}
.mrow .u{font-size:.78rem;color:var(--muted);width:20px}
.mrow .now{grid-column:1/-1;font-size:.74rem;color:var(--muted);font-family:var(--f-mono)}
.mrow.set label::after{content:" ✓";color:var(--ok)}
.res{display:flex;flex-direction:column;gap:6px}
.res .r{display:grid;grid-template-columns:86px 1fr auto;gap:8px;align-items:center;font-size:.82rem}
.res .r .bar2{margin:0;height:10px}
.res .r b{font-family:var(--f-mono);font-size:.78rem}
.mass{display:flex;height:16px;border-radius:6px;overflow:hidden;border:1px solid var(--line)}
.mass i{display:block;height:100%}
.legend{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:.76rem;color:var(--muted)}
.legend span{display:inline-flex;align-items:center;gap:5px}
.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
