:root{color:#f2f4ed;font-synthesis:none;text-rendering:optimizelegibility;--bg:#151817;--panel:#202422;--line:#38413c;--text:#f2f4ed;--muted:#aab3aa;--canvas:#7fc8a9;--pixi:#e8b86d;--danger:#f1a8a0;background:#151817;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Noto Sans CJK SC,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,select,input{font:inherit}button,select{color:var(--text);border:1px solid var(--line);background:#292f2b;border-radius:6px}button{cursor:pointer;min-height:42px;padding:0 16px}button:hover:not(:disabled){border-color:var(--muted)}button:disabled{cursor:wait;opacity:.5}button.primary{color:#15201a;background:var(--canvas);border-color:var(--canvas);font-weight:700}button:focus-visible,select:focus-visible,input:focus-visible,canvas:focus-visible,summary:focus-visible{outline:3px solid var(--pixi);outline-offset:3px}.lab-shell{min-height:100vh}.lab-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:24px;min-height:92px;padding:20px 28px;display:flex}.product{color:var(--canvas);margin:0 0 4px;font-size:13px;font-weight:700}h1{letter-spacing:-.03em;margin:0;font-size:28px;font-weight:650}h2{margin:0 0 20px;font-size:16px;font-weight:650}h3{color:var(--muted);margin:0 0 8px;font-size:13px}.status{color:var(--muted);text-align:right;margin:0;font-size:13px}.workspace{grid-template-columns:250px minmax(420px,1fr) 310px;min-height:calc(100vh - 93px);display:grid}.control-panel,.measurement-panel{background:var(--panel)}.control-panel{border-right:1px solid var(--line)}.measurement-panel{border-left:1px solid var(--line)}.control-section,.measurement-panel{padding:24px}.control-section+.control-section{border-top:1px solid var(--line)}.control-section label{color:var(--muted);justify-content:space-between;margin:18px 0 8px;font-size:13px;display:flex}.control-section select{width:100%;min-height:40px;padding:0 10px}.control-section input[type=range]{width:100%;accent-color:var(--canvas)}.actions{gap:10px;display:grid}.actions h2{margin-bottom:10px}.hint{color:var(--muted);margin:8px 0 0;font-size:12px;line-height:1.6}.methodology{color:var(--muted);margin:24px;font-size:12px;line-height:1.65}.methodology summary{color:var(--text);cursor:pointer}.stage-panel{flex-direction:column;min-width:0;height:calc(100vh - 93px);min-height:480px;display:flex;position:sticky;top:0}.stage-meta{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:68px;padding:14px 22px;display:flex}.stage-meta>div{gap:4px;min-width:0;display:grid}.stage-meta strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.meta-label{color:var(--muted);font-size:11px}.revision-block{text-align:right}.revision-block strong{font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.viewport{background:#191d1b;flex:1;place-items:safe center;min-height:0;padding:36px;display:grid;overflow:auto}.canvas-host{place-items:center;min-width:120px;max-width:none;min-height:120px;display:grid}.canvas-host canvas{background:#fff;max-width:none;height:auto;box-shadow:0 18px 60px #00000059}.selection{min-height:38px;color:var(--muted);border-top:1px solid var(--line);margin:0;padding:10px 22px;font-size:12px}.measurement-heading{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.measurement-heading span{color:var(--muted);font-size:11px}.empty-results{color:var(--muted);border-top:1px solid var(--line);padding-top:20px;font-size:13px;line-height:1.7}table{border-collapse:collapse;width:100%;font-size:12px}th,td{border-bottom:1px solid var(--line);text-align:left;padding:11px 0}td:last-child{text-align:right;font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.raw-results{margin-top:20px}.raw-results summary{cursor:pointer;font-size:12px}pre{white-space:pre-wrap;word-break:break-word;max-height:320px;color:var(--muted);font-size:11px;line-height:1.6;overflow:auto}.environment{border-top:1px solid var(--line);margin-top:28px;padding-top:20px}.environment p{color:var(--muted);word-break:break-word;margin:0;font-size:11px;line-height:1.7}.error-banner{color:#2b1512;background:var(--danger);border-radius:6px;padding:16px 20px;font-size:13px;position:fixed;inset:auto 24px 24px}@media (max-width:1180px){.workspace{grid-template-columns:230px minmax(400px,1fr)}.measurement-panel{border-left:0;border-top:1px solid var(--line);grid-column:1/-1}}@media (max-width:760px){.lab-header{align-items:flex-start;gap:12px;min-height:0;padding:12px 14px}h1{font-size:20px}.status{max-width:55vw;font-size:12px}.workspace{flex-direction:column;min-height:0;display:flex}.stage-panel{height:72vh;order:-1;height:72svh;min-height:360px;position:static}.stage-meta{gap:8px;min-height:0;padding:8px 12px}.fps-block{min-width:0}.fps{font-size:15px!important}.viewport{padding:8px}.control-panel,.measurement-panel{border:0;border-bottom:1px solid var(--line)}.control-section,.measurement-panel{padding:16px}}.hint ul{margin:6px 0 0;padding-left:18px}.hint li{margin:2px 0}.hint p{margin:0}.zoom-presets{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.zoom-presets button{flex:1 0 auto;min-width:52px;min-height:30px;padding:4px 8px;font-size:12px}.fps-block{text-align:center;gap:2px;min-width:170px;display:grid}.fps{font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:18px!important}.fps-detail{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}.fps-good{color:#7fd8a4}.fps-warn{color:#e8c36d}.fps-bad{color:#ff7b7b}.stage-wrap{display:grid;position:relative}.selection-overlay{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.selection-path{fill:none;stroke:#3fa9f5;stroke-width:1.5px;vector-effect:non-scaling-stroke}.marquee{fill:#3fa9f51f;stroke:#3fa9f5;stroke-width:1px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}.toolbar{border-bottom:1px solid var(--line);scrollbar-width:thin;gap:6px;padding:8px 12px;display:flex;overflow-x:auto}.toolbar button{white-space:nowrap;flex:none;min-height:32px;padding:0 10px;font-size:12px}.toolbar button[aria-pressed=true]{color:#15201a;background:var(--canvas);border-color:var(--canvas);font-weight:700}.control-section input[type=text],.control-section input[type=password]{width:100%;min-height:36px;color:var(--text);border:1px solid var(--line);background:#292f2b;border-radius:6px;padding:0 10px}.collab button{width:100%;margin-top:12px}.collab .hint a{color:var(--canvas);word-break:break-all}.peers{gap:4px;margin:8px 0 0;padding:0;font-size:12px;list-style:none;display:grid}.peers li{align-items:center;gap:6px;display:flex}.peers .dot{border-radius:50%;flex:none;width:10px;height:10px}.peer-path{fill:none;stroke-width:2px;vector-effect:non-scaling-stroke;stroke-dasharray:6 3}.peer-tag text{pointer-events:none;font-family:inherit}
