.robot .wrap{width:min(1640px,calc(100% - 64px))}.robot-list{gap:30px}.case-head .method-tabs{display:flex;flex-wrap:wrap;gap:5px;background:#f3f6fa;padding:4px;border-radius:9px}.method-tabs button{border:0;border-radius:6px;padding:9px 14px;background:transparent;color:var(--muted);font-size:14px}.method-tabs button[aria-pressed=true]{background:#fff;color:var(--blue);box-shadow:0 1px 5px #16213016;font-weight:650}.robot-player{padding:0 22px 20px;--accent:#b0177e;--line:#dce3ec}.sync-row{display:grid;grid-template-columns:1.7778fr .75fr 1.1fr;aspect-ratio:3.6278;gap:0;border-radius:12px;overflow:hidden;background:#fff;border:1px solid #e6eaf0}.sync-panel{position:relative;min-width:0;min-height:0;overflow:hidden;border-radius:0;background:#fff}.sync-panel video{display:block;width:100%;height:100%;object-fit:contain}.sync-panel.rgb video{object-fit:cover;background:#edf1f6}.sync-panel.sim{background:radial-gradient(ellipse at 50% 20%,#fff,#eef1f6)}.sync-panel canvas{position:absolute;inset:0;display:block;width:100%;height:100%;cursor:grab;touch-action:none}.sync-panel canvas:active{cursor:grabbing}.panel-tag{position:absolute;top:10px;left:10px;padding:4px 9px;border-radius:20px;background:#192330a8;color:#fff;font-size:11px;font-weight:650;pointer-events:none}.orbit-hint{position:absolute;bottom:10px;right:12px;color:#647083;font-size:11px;pointer-events:none}.model-status{position:absolute;inset:0;display:grid;place-items:center;color:#647083;font-size:13px}.transport{display:flex;align-items:center;gap:15px;padding:15px 0 0}.transport button{cursor:pointer}.transport .play{border:0;width:40px;height:40px;flex:none;display:grid;place-items:center;border-radius:50%;background:var(--accent);color:white;font-size:17px}.transport .track{position:relative;flex:1;min-width:40px;height:30px;display:flex;align-items:center;--p:0%}.transport .track::before{content:'';position:absolute;left:8px;right:8px;height:5px;top:12.5px;border-radius:5px;background:linear-gradient(to right,var(--accent) var(--p),var(--line) var(--p));pointer-events:none}.transport input{appearance:none;-webkit-appearance:none;position:relative;background:transparent;width:100%;height:30px;margin:0;cursor:pointer}.transport input::-webkit-slider-runnable-track{height:5px;background:transparent}.transport input::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:16px;height:16px;margin-top:-5.5px;border:3px solid var(--accent);border-radius:50%;background:white;box-shadow:0 1px 4px #0002}.transport input::-moz-range-track{height:5px;background:transparent}.transport input::-moz-range-thumb{box-sizing:border-box;width:16px;height:16px;border:3px solid var(--accent);border-radius:50%;background:white}.transport .time{font:13px ui-monospace,monospace;white-space:nowrap;color:#647083;min-width:118px;text-align:right}.transport .speeds{display:flex;gap:4px}.transport .speeds button{border:1px solid #dce3ec;border-radius:6px;padding:5px 7px;background:white;font-size:12px;color:#647083}.transport .speeds button[aria-pressed=true]{background:#f6e6f1;color:var(--accent);border-color:transparent;font-weight:650}.clip-note{font-size:12px;color:#647083;min-height:18px;margin-top:10px}.player-error{color:#9c382f}.case-head{flex-wrap:wrap}.robot .section-head p{max-width:520px}.robot .visual-key{align-items:center}.robot .visual-key .badge{color:var(--blue);border-color:#d8e3f8;background:#edf3ff}.robot .case-head p{max-width:650px}
@media(max-width:800px){.robot .wrap{width:calc(100% - 32px)}.robot-player{padding:0 12px 16px}.case-head{gap:16px}.method-tabs{width:100%}.method-tabs button{flex:1}.sync-row{grid-template-columns:1fr 1.25fr;aspect-ratio:auto}.sync-panel.rgb{grid-column:1/-1;aspect-ratio:16/9}.sync-panel.tac{aspect-ratio:3/4}.sync-panel.sim{min-height:100%}.transport{gap:8px}.transport .speeds{display:none}.transport .time{font-size:11px;min-width:100px}.panel-tag{font-size:10px;top:7px;left:7px}.orbit-hint{font-size:9px}.robot .case-head{padding:18px 15px}.method-tabs button{padding:9px 7px;font-size:12px}}

/* RGB + tactile share one encoded frame and decoder, so playback cannot drift. */
.sync-panel.media{grid-column:1 / 3;aspect-ratio:1820 / 720}.sync-panel.media video{object-fit:contain;background:white}.tactile-tag{left:calc(70.32967% + 10px)}
@media(max-width:800px){.sync-row{display:block}.sync-panel.media{aspect-ratio:1820 / 720}.sync-panel.sim{aspect-ratio:1.45;min-height:0}.tactile-tag{left:calc(70.32967% + 5px)}.sync-panel.media .panel-tag{font-size:8px;padding:3px 5px}.orbit-hint{font-size:10px}}
