
:root{color-scheme:dark;--navy:#0A2A4A;--deep:#071B30;--cyan:#17C3E8;--white:#fff;--muted:#acbdcf;--line:#ffffff20}
*{box-sizing:border-box}body{margin:0;background:var(--deep);color:var(--white);font:15px/1.5 system-ui,sans-serif}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.42;cursor:not-allowed}button:focus-visible,input:focus-visible{outline:3px solid var(--cyan);outline-offset:4px}[hidden]{display:none!important}.viewport video{width:100%;height:100%;object-fit:contain;display:block}
header{border-bottom:1px solid var(--line);padding:20px max(24px,calc((100vw - 1380px)/2));display:flex;align-items:center;justify-content:space-between;gap:20px}header img{width:164px;height:auto}.badge{border:1px solid var(--line);border-radius:30px;padding:5px 12px;font-size:12px;color:var(--muted);letter-spacing:.05em}main{max-width:1428px;margin:auto;padding:32px 24px 48px}.top{display:flex;justify-content:space-between;gap:20px;align-items:end;margin-bottom:25px}h1{font-size:clamp(26px,4vw,38px);font-weight:500;letter-spacing:-.04em;margin:0 0 5px}p{color:var(--muted);margin:0}.eyebrow{color:var(--cyan);font-size:11px;text-transform:uppercase;letter-spacing:.14em;margin-bottom:8px}.button{border:1px solid var(--line);border-radius:8px;background:var(--navy);color:var(--white);padding:11px 17px}.primary{background:var(--cyan);color:var(--deep);border-color:var(--cyan);font-weight:650}.quiet{background:none;color:var(--muted)}.login{max-width:440px;margin:10vh auto;background:var(--navy);padding:32px;border:1px solid var(--line);border-radius:14px}.login h1{font-size:29px}.login label{display:block;margin-top:24px;font-size:13px}.login input{width:100%;margin:8px 0 16px;background:var(--deep);border:1px solid var(--line);border-radius:8px;padding:13px;color:white}.login .button{width:100%}.error{margin-top:12px;color:white;font-size:13px;min-height:20px}.previews{display:grid;grid-template-columns:1fr 1fr;gap:20px}.camera{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--navy)}.camera-head{padding:13px 17px;display:flex;align-items:center;justify-content:space-between}.camera-head strong{font-size:14px;font-weight:500}.camera-head span{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.viewport{aspect-ratio:4/3;background:#030c15;position:relative;overflow:hidden}.viewport img{width:100%;height:100%;object-fit:contain;display:block}.placeholder{position:absolute;inset:0;display:grid;place-content:center;color:var(--muted);font-size:13px;background:#030c15}.camera-footer{padding:9px 17px;font-size:11px;color:var(--muted);display:flex;justify-content:space-between}.control{margin-top:22px;padding:22px;border:1px solid var(--line);border-radius:12px;background:var(--navy)}.control-head{display:flex;align-items:center;gap:12px;justify-content:space-between;flex-wrap:wrap}.control-head h2{font-size:18px;font-weight:500;margin:0}.control-head p{font-size:13px;margin-top:4px}.actions{display:flex;gap:10px;align-items:center}.stop{border:2px solid white;background:transparent;font-weight:650;padding:10px 20px}kbd{font-family:inherit;border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:1px 6px;font-size:11px;margin-left:5px}.status{margin-top:18px;border-top:1px solid var(--line);padding-top:15px;display:flex;align-items:center;gap:10px;font-size:13px;min-height:38px}.dot{width:7px;height:7px;background:var(--muted);border-radius:50%;flex-shrink:0}.dot.active{background:var(--cyan)}.joints{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-top:18px}.joint{border:1px solid var(--line);border-radius:8px;padding:14px 12px}.joint-name{font-size:12px;color:var(--muted);margin-bottom:10px}.joint-value{font-size:21px;font-variant-numeric:tabular-nums}.joint-value small{font-size:10px;color:var(--muted);margin-left:4px}.jog-buttons{display:flex;gap:6px;margin-top:12px}.jog{flex:1;border:1px solid var(--line);background:var(--deep);color:white;border-radius:6px;padding:9px 2px;touch-action:none;user-select:none}.jog.active{border-color:var(--cyan);background:var(--cyan);color:var(--deep)}.jog kbd{margin:0 0 0 3px;padding:0;border:0;font-size:10px}.footnote{margin-top:15px;font-size:12px}.connection{font-size:12px;color:var(--muted)}.connection strong{color:var(--white);font-weight:500}.bottom{display:flex;justify-content:space-between;gap:20px;margin-top:22px;font-size:12px;color:var(--muted)}
@media(max-width:1000px){.joints{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:650px){main{padding:24px 16px}header{padding:16px}.previews{grid-template-columns:1fr}.top{align-items:start}.top>p{display:none}.control{padding:16px}.joints{grid-template-columns:repeat(2,minmax(0,1fr))}.control-head{gap:16px}.actions{width:100%}.actions button{flex:1}.bottom{flex-direction:column;gap:5px}.badge{font-size:10px}}
.jog,.button{transition:transform .1s ease,background .12s ease,box-shadow .12s ease}.jog.pressed,.jog.active{transform:translateY(2px) scale(.94);border-color:var(--cyan);background:var(--cyan);color:var(--deep);box-shadow:0 0 0 4px #17c3e829}.jog.active{animation:control-pulse .7s ease-in-out infinite}.button:active:not(:disabled){transform:translateY(2px) scale(.98)}.joint.motion-confirmed{border-color:var(--cyan);box-shadow:inset 0 0 0 1px #17c3e84d}.joint-value.changed{animation:encoder-change .5s ease}.command-feedback{display:flex;align-items:center;gap:10px;margin-top:14px;min-height:49px;border:1px solid var(--line);border-radius:8px;background:var(--deep);padding:12px 14px;font-size:13px}.command-light{width:9px;height:9px;border:1px solid var(--muted);border-radius:50%;flex-shrink:0}.command-feedback[data-phase="pressed"] .command-light,.command-feedback[data-phase="accepted"] .command-light{background:var(--cyan);border-color:var(--cyan);animation:control-pulse .65s ease-in-out infinite}.command-feedback[data-phase="moving"]{border-color:var(--cyan)}.command-feedback[data-phase="moving"] .command-light{background:var(--cyan);border-color:var(--cyan)}.command-feedback[data-phase="blocked"],.command-feedback[data-phase="unconfirmed"]{border-style:dashed}.command-feedback[data-phase="blocked"] .command-light{border-radius:2px;background:var(--white)}@keyframes control-pulse{50%{box-shadow:0 0 0 7px #17c3e818}}@keyframes encoder-change{0%,50%{color:var(--cyan)}100%{color:var(--white)}}@media(prefers-reduced-motion:reduce){.jog,.button{transition:none}.jog.active,.command-light,.joint-value.changed{animation:none!important}}

.joint-guide{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(240px,1fr);gap:24px;align-items:center;background:var(--deep);border:1px solid var(--line);border-radius:10px;padding:18px;margin-top:18px}.guide-drawing{min-width:0}.guide-drawing svg{display:block;width:100%;max-height:300px;overflow:visible}.guide-caption{font-size:11px;text-align:center;margin-top:2px}.arm-link{stroke:#59718a;stroke-width:24;stroke-linecap:round;fill:none}.arm-detail{stroke:#8ca6bf;stroke-width:7;fill:none;stroke-linecap:round}.joint-marker{cursor:pointer;outline:none}.joint-marker circle{fill:var(--deep);stroke:#8ca6bf;stroke-width:3}.joint-marker text{fill:white;font-size:14px;font-weight:700;text-anchor:middle;dominant-baseline:central;pointer-events:none}.joint-marker.selected circle,.joint-marker:focus circle{stroke:var(--cyan);fill:#135169;stroke-width:4}.joint-marker.selected{filter:drop-shadow(0 0 6px #17c3e855)}.guide-details h3{font-size:21px;font-weight:550;margin:0 0 6px}.guide-details p{font-size:13px}.guide-keys{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}.guide-keys span{border:1px solid var(--line);border-radius:5px;padding:5px 8px;font-size:12px}.guide-limit{font-size:12px!important;margin-top:7px!important;color:white}.guide-meter{width:100%;accent-color:var(--cyan);height:8px}.guide-health{margin-top:9px!important;min-height:20px}.guide-hint{font-size:11px!important;margin-top:10px!important}.joint.selecting{border-color:#17c3e880;background:#103450}.joint-select{display:flex;align-items:center;gap:6px;border:0;background:none;padding:0;color:var(--muted);text-align:left;min-height:32px;width:100%}.joint-number{display:inline-grid;place-items:center;width:20px;height:20px;border:1px solid var(--line);border-radius:50%;color:var(--cyan);flex-shrink:0}.joint-note{font-size:11px;color:var(--muted);margin-top:9px;min-height:32px}.jog[aria-disabled="true"]{opacity:.48;border-style:dashed}.motion-arrow{stroke:var(--cyan);stroke-width:3;fill:none;marker-end:url(#guide-arrow);opacity:0}.guide-drawing[data-selected="shoulder_pan"] .pan-arrow,.guide-drawing[data-selected="shoulder_lift"] .lift-arrow,.guide-drawing[data-selected="elbow_flex"] .elbow-arrow,.guide-drawing[data-selected="wrist_flex"] .pitch-arrow,.guide-drawing[data-selected="wrist_roll"] .roll-arrow,.guide-drawing[data-selected="gripper"] .grip-arrow{opacity:1}.guide-drawing[data-selected="shoulder_pan"] #illustrated-base-turn{animation:demo-pan 2.8s ease-in-out infinite;transform-origin:140px 245px}.guide-drawing[data-selected="shoulder_lift"] #illustrated-shoulder{animation:demo-hinge 2.8s ease-in-out infinite;transform-origin:140px 205px}.guide-drawing[data-selected="elbow_flex"] #illustrated-elbow{animation:demo-hinge 2.8s ease-in-out infinite;transform-origin:255px 90px}.guide-drawing[data-selected="wrist_flex"] #illustrated-wrist{animation:demo-hinge 2.8s ease-in-out infinite;transform-origin:390px 120px}.guide-drawing[data-selected="wrist_roll"] #illustrated-roll{animation:demo-roll 2.8s ease-in-out infinite;transform-origin:435px 135px}.guide-drawing[data-selected="gripper"] .finger-top{animation:demo-finger 2.8s ease-in-out infinite}.guide-drawing[data-selected="gripper"] .finger-bottom{animation:demo-finger 2.8s ease-in-out infinite;animation-delay:-1.4s}@keyframes demo-hinge{0%,100%{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}@keyframes demo-pan{0%,100%{transform:skewX(-6deg)}50%{transform:skewX(6deg)}}@keyframes demo-roll{0%,100%{transform:scaleY(.5)}50%{transform:scaleY(1)}}@keyframes demo-finger{0%,100%{transform:translateY(-5px)}50%{transform:translateY(5px)}}@media(max-width:800px){.joint-guide{grid-template-columns:1fr;gap:12px}.guide-drawing svg{max-height:230px}.guide-health{min-height:0}}@media(prefers-reduced-motion:reduce){.guide-drawing *{animation:none!important}}


.operator-bar{position:sticky;top:0;z-index:20;background:#0a2a4af7;border:1px solid var(--line);border-radius:10px;padding:14px 18px;margin-bottom:22px;backdrop-filter:blur(10px)}.operator-summary{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;margin-bottom:12px;font-size:14px}.operator-summary strong{color:var(--cyan)}#operator-timing{font-size:13px;color:var(--muted)}.operator-bar .actions{flex-wrap:wrap}.operator-bar #stop{min-height:48px;font-size:16px}.operator-bar #stop-description{font-size:12px;margin-top:8px}.operator-bar .status{margin-top:10px;padding-top:10px;line-height:1.45}.readiness{list-style:none;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 14px;font-size:14px;color:var(--muted)}.readiness li[data-ready="true"]{color:var(--cyan)}.jog,.joint-select,.button{min-height:44px}.joint-name{font-size:14px}.joint-note{font-size:12px}.camera-head span,.camera-footer{font-size:12px}.camera-footer{gap:8px;flex-wrap:wrap}.command-feedback{font-size:14px}.guide-details p{font-size:14px}.guide-hint{font-size:12px!important}#reconnect{margin-left:auto;white-space:nowrap}.status[data-level="error"]{border-color:#e8b91788}.status[data-level="error"] .dot{background:#e8b917}@media(max-width:650px){.operator-bar{padding:12px;top:0}.operator-summary{gap:4px 10px;font-size:13px}.operator-bar .actions{gap:8px}.operator-bar .actions button{flex:1 1 auto}.operator-bar #stop{font-size:14px}.operator-bar #stop-description{font-size:11px}.readiness{grid-template-columns:1fr 1fr;gap:10px;font-size:13px}.status{flex-wrap:wrap}.operator-bar .status{font-size:13px}.operator-summary #operator-timing{font-size:12px}}

.jog{padding:8px 5px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:4px;text-align:left;font-size:11px;line-height:1.15}.jog-symbol{font-size:17px;color:var(--cyan)}.jog.active .jog-symbol,.jog.pressed .jog-symbol{color:var(--deep)}.jog kbd{margin:0}.guide-keys small{color:var(--muted);margin-left:4px}.status[data-level="warning"]{border-color:#e8b91788}.status[data-level="warning"] .dot{background:#e8b917}

.jog.blocked{border-color:#ff5d73;background:#6b1d2b;color:white;box-shadow:0 0 0 4px #ff5d7330;animation:control-blocked .38s ease-in-out 2}.jog.blocked .jog-symbol{color:white}.command-feedback[data-phase="blocked"]{border-color:#ff5d73;background:#3d1722;color:white}.command-feedback[data-phase="blocked"] .command-light{background:#ff5d73;border-color:#ff5d73;border-radius:50%}@keyframes control-blocked{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}@media(prefers-reduced-motion:reduce){.jog.blocked{animation:none!important}}

#motion-mode{max-width:100%;margin:8px;padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--deep);color:white;font:inherit}
#visibility-warning{border-left-color:#ffba66;color:#ffe0b3;background:#392a19}
.jog.at-limit{border-color:#ffba66;color:#ffe0b3}
/* Simple operator flow: one selected joint and two large actions. */
.viewport{aspect-ratio:16/9}.control-head .eyebrow{margin-bottom:3px}.control-steps{list-style:none;padding:0;margin:18px 0 14px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;counter-reset:none}.control-steps li{display:grid;grid-template-columns:auto 1fr;column-gap:9px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:#071b3066}.control-steps li>span{grid-row:1/3;display:grid;place-items:center;width:27px;height:27px;border-radius:50%;background:#17c3e820;color:var(--cyan);font-weight:700}.control-steps strong{font-size:13px}.control-steps small{color:var(--muted);font-size:11px}.joint-picker{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.joint-choice{display:grid;grid-template-columns:auto 1fr;align-items:center;text-align:left;column-gap:7px;min-height:56px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--deep);color:white}.joint-choice>span{grid-row:1/3;display:grid;place-items:center;width:23px;height:23px;border:1px solid var(--line);border-radius:50%;color:var(--cyan);font-size:11px}.joint-choice strong{font-size:12px;line-height:1.1}.joint-choice small{font-size:10px;color:var(--muted);line-height:1.1}.joint-choice.selected{border-color:var(--cyan);background:#103f59;box-shadow:inset 0 0 0 1px #17c3e855}.joints{display:block;margin-top:12px}.joint{display:none}.joint.selecting{display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px 18px;padding:18px;border-color:#17c3e880;background:#0b2239}.joint-name{margin:0}.joint-select{min-height:38px}.joint-select>span:last-child{display:grid}.joint-select strong{font-size:18px;color:white;font-weight:600}.joint-select small{font-size:11px;color:var(--muted)}.joint-value{display:grid;grid-template-columns:auto auto;column-gap:5px;align-items:baseline;text-align:right}.joint-value>small:first-child{grid-column:1/3;font-size:10px;text-transform:uppercase;letter-spacing:.08em}.joint-value>span{font-size:21px;color:var(--cyan)}.jog-buttons{grid-column:1/3;display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:0}.jog{min-height:72px;padding:12px 14px;grid-template-columns:auto 1fr auto;font-size:16px;font-weight:600}.jog-symbol{font-size:27px}.jog kbd{font-weight:400;opacity:.7}.joint-note{grid-column:1/3;min-height:0;margin:0}.control-tip{margin-top:12px;padding:10px 12px;border-left:3px solid var(--cyan);background:#071b3070;font-size:13px}.control-tip strong{color:white}.command-feedback{margin-top:12px}.advanced-controls{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}.advanced-controls summary{cursor:pointer;color:var(--muted);font-size:13px;min-height:44px;display:flex;align-items:center;gap:8px}.advanced-controls summary::before{content:'＋';color:var(--cyan);font-size:16px}.advanced-controls[open] summary::before{content:'−'}.advanced-body{padding-top:8px}.joint-guide{margin-top:14px}.stop small{font-size:11px;font-weight:400;opacity:.75;margin-left:4px}
@media(max-width:900px){.joint-picker{grid-template-columns:repeat(3,1fr)}}
@media(max-width:650px){header{padding:11px 14px}header img{width:125px}main{padding:16px 10px 30px}.top{margin-bottom:12px}.top h1{font-size:24px}.top>div>p:last-child{font-size:12px}.operator-bar{position:static;margin-bottom:12px}.operator-summary{margin-bottom:8px}.operator-summary #operator-timing{display:none}.previews{grid-template-columns:1fr 1fr;gap:8px}.camera-head{padding:8px 9px}.camera-head strong{font-size:11px}.camera-footer{display:none}.viewport{aspect-ratio:4/3}.control{margin-top:12px;padding:14px}.control-head h2{font-size:18px}.control-steps{gap:5px;margin:13px 0 10px}.control-steps li{padding:7px;column-gap:5px}.control-steps li>span{width:22px;height:22px}.control-steps small{display:none}.joint-picker{grid-template-columns:repeat(3,1fr);gap:6px}.joint-choice{padding:7px;min-height:48px}.joint-choice small{display:none}.joint.selecting{padding:14px}.joint-select strong{font-size:16px}.jog{min-height:66px;padding:10px 8px;font-size:14px}.jog kbd{display:none}.control-tip{font-size:12px}.advanced-controls .readiness{grid-template-columns:1fr}.joint-guide{padding:12px}.bottom{margin-top:14px}}

.reset-pose{width:100%;min-height:48px;touch-action:none;user-select:none;margin-top:12px}.reset-pose.active{border-color:var(--cyan,#17C3E8);box-shadow:0 0 0 2px #17c3e844}
