*{box-sizing:border-box}
:root{color-scheme:dark;font-family:Inter,"Segoe UI",ui-sans-serif,system-ui,sans-serif;font-size:13px;color:#dbe2e7;background:#10161c;--line:#2c3741;--dim:#95a3af;--amber:#d7ad68;--panel:#172028;--mono:ui-monospace,"Cascadia Mono",Consolas,monospace}
body{margin:0}button,select,input{font:inherit}button,select{cursor:pointer}button{color:inherit;transition:background .12s,border-color .12s}button:focus-visible,select:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid #ebc58d;outline-offset:3px}button:disabled{opacity:.4;cursor:not-allowed}[hidden]{display:none!important}button:hover:enabled{border-color:#647782;background-color:#293640}
.topbar{height:52px;padding:0 18px;display:flex;align-items:center;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line);background:#131c23}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;color:#eef2f4;font-size:13px;letter-spacing:.09em}.brand img{width:27px;height:27px}.brand b{font-weight:400;color:#a6b4bf}.brand small{display:block;font-size:8px;letter-spacing:.2em;color:var(--dim);margin-top:3px}
.site-label{font-size:10px;letter-spacing:.12em;color:#8fa0ac}.site-label span{color:#536574;margin:0 9px}
.header-status{display:flex;align-items:center;gap:6px;font:10px var(--mono);letter-spacing:.04em;border:1px solid #344550;border-radius:3px;padding:5px 8px;white-space:nowrap;color:#aebbc4}.header-status::before{content:"";width:5px;height:5px;border-radius:50%;background:#72818a}.header-status.active{color:#b4cdbb;border-color:#3b584c}.header-status.active::before{background:#8ab89a}.header-status.stop{color:#efaaa3;border-color:#85514a}.header-status.stop::before{background:#e68c7e}
.workbench{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:14px;padding:14px 18px 8px;max-width:1920px;margin:auto}.visual-workspace{min-width:0}.eyebrow{font-size:9px;letter-spacing:.12em;font-weight:600;color:var(--dim)}
/* Compact playback toolbar; controls keep their intrinsic width. */
.simulation-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 14px;padding:10px 12px;margin-bottom:7px;border:1px solid var(--line);border-radius:4px;background:var(--panel)}
.simulation-heading{display:contents}.simulation-heading>div:first-child{grid-column:1;grid-row:1;display:flex;align-items:center;gap:10px;min-width:0}.simulation-heading .eyebrow{padding-right:10px;border-right:1px solid #40505a;flex-shrink:0}.simulation-heading strong{display:block;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:30px;color:#e4e9ed}
.simulation-actions{grid-column:2;grid-row:1;display:flex;gap:6px;flex-shrink:0}.simulation-actions button{height:30px;border:1px solid #42515e;border-radius:3px;padding:0 11px;font-size:11px;font-weight:600;white-space:nowrap}
#run-simulator{background:var(--amber);color:#202720;border-color:var(--amber);min-width:112px}#run-simulator:hover:enabled{background:#e6be80;border-color:#e6be80}#reset-simulator{background:transparent;color:#aab8c2}
.simulation-toolbar p{grid-column:1;grid-row:2;margin:0;color:#9daeb9;font-size:11px;line-height:1.45}
.simulation-bottom{grid-column:2;grid-row:2;display:flex;align-items:center;gap:7px;justify-content:flex-end}.simulation-bottom progress{width:42px;flex:none;height:3px}.simulation-bottom label{display:flex;align-items:center;gap:5px;margin-left:4px;font-size:10px;white-space:nowrap;color:#aab8c3;cursor:pointer}.simulation-bottom input{accent-color:var(--amber);width:12px;height:12px;margin:0;cursor:pointer}#cycle-value{font:10px var(--mono);color:#bfc9d0;min-width:25px;text-align:right}
.view-toolbar{display:flex;align-items:center;gap:12px;min-height:32px;padding-bottom:5px}.view-toolbar>.eyebrow{white-space:nowrap}.camera-buttons{display:flex;gap:2px;flex-wrap:wrap}.camera-buttons button{border:1px solid transparent;background:transparent;padding:5px 8px;border-radius:3px;font-size:10px;color:#9eaeb9;white-space:nowrap}.camera-buttons button[aria-pressed=true]{color:#e3e9ee;border-color:#44535e;background:#26333d}
#scene{position:relative;overflow:hidden;isolation:isolate;height:clamp(340px,calc(100dvh - 300px),950px);border:1px solid #394650;border-radius:4px;background:#cedbdc}#scene canvas{width:100%;height:100%;display:block;touch-action:none}#loading{position:absolute;inset:0;display:grid;place-items:center;color:#26363d}#scene-error{position:absolute;inset:20px;display:grid;place-items:center;background:#e7dbca;color:#582c1a;z-index:3}
.scene-location{position:absolute;left:14px;top:12px;pointer-events:none;color:#394740;text-shadow:0 1px 6px #f5efdf;z-index:1}.scene-location span{display:block;font-size:9px;font-weight:700;letter-spacing:.14em}.scene-location strong{display:block;font-size:10px;font-weight:500;margin-top:4px}
.scene-footer{position:absolute;bottom:10px;left:10px;right:10px;display:flex;align-items:center;justify-content:space-between;gap:12px;z-index:1;color:#25382e;font-size:10px}.scene-footer span{padding:5px 7px;background:#ece6d8dc;border-radius:3px}.scene-footer button{font-size:10px;color:#25382e;background:#ece6d8e6;border:1px solid #a89d86;padding:4px 7px;border-radius:3px}
.instrument-bar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--line);border-radius:4px;margin-top:8px;background:#151f27}.instrument-bar>div{padding:9px 12px;border-right:1px solid var(--line)}.instrument-bar>div:last-child{border:0}.instrument-bar span{display:block;font-size:10px;color:var(--dim);margin-bottom:4px}.instrument-bar strong{display:block;font:19px var(--mono);letter-spacing:-.04em;white-space:nowrap;color:#e1e7eb}.instrument-bar small{font:10px "Segoe UI",sans-serif;letter-spacing:0;color:#94a6b3}
/* Operation feedback is displayed in the toolbar, above the scene. */
.operation-message{display:none}
.shift-readings{display:flex;align-items:center;flex-wrap:wrap;gap:7px 16px;padding:8px 0 0;color:#8fa0ac;font-size:10px}.shift-readings b{font:10px var(--mono);color:#bbc8d1;margin-left:5px}.shift-readings label{display:flex;align-items:center;gap:7px;margin-left:auto}.shift-readings select{padding:3px 6px;background:#1c2933;color:#cdd9e1;border:1px solid #3b4a55;border-radius:3px;font-size:10px}
/* Dense operator console with inline state indicators. */
.control-panel{background:var(--panel);border:1px solid var(--line);border-radius:4px;align-self:start;overflow:hidden}.panel-heading{padding:12px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}h1{font-size:13px;font-weight:600;margin:0}.panel-tag{font:9px var(--mono);color:#7f929f;letter-spacing:.04em}
.control-section{padding:10px 12px;border-bottom:1px solid var(--line)}.section-label{display:flex;align-items:center;gap:7px;margin-bottom:7px;font-size:10px;color:#b8c5cf;font-weight:600}.section-label>span{font:9px var(--mono);color:#7c909e}
.switch-button{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:29px;padding:4px 0;margin:0 0 4px;text-align:left;background:transparent;border:1px solid transparent;border-bottom-color:#293641;border-radius:0;font-size:11px}.switch-button:hover:enabled{background:#1e2b35;border-color:transparent;border-bottom-color:#435662}.switch-button b{display:flex;align-items:center;justify-content:center;gap:5px;min-width:43px;padding:3px 5px;font:9px var(--mono);color:#8e9ca7;background:#111b23;border:1px solid #34434d;border-radius:3px}.switch-button[aria-pressed=true] b{background:#24382f;border-color:#49614f;color:#b9d0bd}.switch-button[aria-pressed=true] b::before{content:"";width:4px;height:4px;border-radius:50%;background:#91b797}
.range-label{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:10px;color:#97a9b6;margin:8px 0 4px}.range-label output{font:10px var(--mono);color:#c8d3dc}
input[type=range]{appearance:none;-webkit-appearance:none;display:block;width:100%;height:14px;margin:0;background:transparent;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#3d4b56;border-radius:2px}input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:11px;height:11px;margin-top:-4px;border:1px solid #bdc9d1;border-radius:3px;background:#aabac5}input[type=range]::-moz-range-track{height:3px;background:#3d4b56;border-radius:2px}input[type=range]::-moz-range-thumb{width:10px;height:10px;border:1px solid #bdc9d1;border-radius:3px;background:#aabac5}
.primary-button,.secondary-button{width:100%;min-height:29px;padding:6px 9px;border-radius:3px;font-size:11px;font-weight:500;background:#23323d;border:1px solid #465b6a;color:#d0dde6}.primary-button{margin-top:9px;display:flex;justify-content:space-between}.primary-button[aria-pressed=true]{background:#2c3d39;border-color:#5b7765;color:#c6dccd}.secondary-button{margin-top:8px}
.hoist-controls{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-bottom:6px}.hoist-controls button{min-height:28px;padding:5px 3px;background:#1e2b35;border:1px solid #3d4e5b;border-radius:3px;font-size:10px}.hoist-controls button[aria-pressed=true]{background:#354136;border-color:#69735b;color:#d9dfc6}
.stand-progress{display:flex;justify-content:space-between;gap:8px;margin:8px 0 5px;font-size:10px;color:#8fa2b0}.stand-progress output{font:10px var(--mono);color:#c5d1d9}progress{display:block;width:100%;height:3px;border:0;border-radius:2px;background:#31414c;accent-color:var(--amber)}progress::-webkit-progress-bar{background:#31414c;border-radius:2px}progress::-webkit-progress-value{background:var(--amber);border-radius:2px}
.emergency-section{padding:10px 12px}#estop{width:100%;min-height:30px;border:1px solid #815249;border-radius:3px;color:#e5a79c;background:#32272a;padding:6px 9px;font-size:10px}#estop:hover{background:#473035;border-color:#c88678}#reset-estop{margin-top:6px;width:100%;min-height:30px;background:#253541;border:1px solid #6c8392;border-radius:3px;padding:6px 9px;font-size:10px}
footer{display:flex;justify-content:space-between;gap:12px;padding:5px 18px 12px;max-width:1920px;margin:auto;font-size:9px;color:#708592;line-height:1.5}.footer-dot{margin:0 5px}
@media(min-width:1600px){.workbench{grid-template-columns:minmax(0,1fr) 272px}}
@media(max-width:1150px){.workbench{grid-template-columns:minmax(0,1fr) 244px;padding:12px;gap:12px}.view-toolbar>.eyebrow{display:none}.camera-buttons button{padding:5px 6px}.site-label{display:none}.simulation-heading .eyebrow{display:none}}
@media(max-width:979px){.workbench{grid-template-columns:minmax(0,1fr)}.control-panel{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.panel-heading,.emergency-section{grid-column:1/-1}.control-section{border-right:1px solid var(--line)}.control-section:nth-child(4){border-right:0}.emergency-section{display:flex;justify-content:flex-end;gap:8px}.emergency-section button{max-width:180px}#reset-estop{margin-top:0}.simulation-heading .eyebrow{display:block}.view-toolbar>.eyebrow{display:block}}
@media(max-width:620px){.topbar{padding:0 12px}.brand{font-size:11px}.brand small{font-size:7px}.brand img{width:25px;height:25px}.header-status{font-size:9px;padding:5px 6px}.workbench{padding:10px;gap:10px}.simulation-toolbar{padding:9px 10px;gap:7px 8px}.simulation-heading>div:first-child{grid-column:1/-1;grid-row:1}.simulation-heading strong{line-height:20px;font-size:12px}.simulation-actions{grid-column:1;grid-row:2;justify-content:flex-start}.simulation-actions button{height:32px;padding:0 9px;font-size:10px}#run-simulator{min-width:108px}.simulation-bottom{grid-column:2;grid-row:2}.simulation-bottom progress{display:none}.simulation-bottom label{margin:0;font-size:9px}.simulation-toolbar p{grid-column:1/-1;grid-row:3;font-size:10px}.view-toolbar>.eyebrow{display:none}.camera-buttons{gap:2px}.camera-buttons button{padding:6px;font-size:10px}.view-toolbar{padding:2px 0 7px}.control-panel{grid-template-columns:repeat(2,minmax(0,1fr))}.control-section:nth-child(3){border-right:0}.control-section:nth-child(4){grid-column:1/-1}.control-section:nth-child(4) .secondary-button{width:auto;min-width:150px}.instrument-bar>div{padding:9px 8px}.instrument-bar strong{font-size:15px}.instrument-bar span{font-size:9px}.instrument-bar small{font-size:9px}.shift-readings{gap:7px 14px;font-size:9px}.shift-readings b{font-size:9px}.shift-readings label{margin-left:0}.scene-location{left:10px;top:10px}#scene{height:clamp(330px,47dvh,500px)}footer{padding:5px 12px 12px;flex-wrap:wrap;font-size:8px}}
@media(max-width:380px){.simulation-heading .eyebrow{display:none}.simulation-actions button{padding:0 7px}#run-simulator{min-width:98px}#cycle-value{display:none}.instrument-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.instrument-bar>div:nth-child(2){border-right:0}.instrument-bar>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.instrument-bar strong{font-size:18px}.control-panel{grid-template-columns:minmax(0,1fr)}.control-section{grid-column:1!important;border-right:0}.emergency-section{flex-wrap:wrap}.emergency-section button{max-width:none}}
@media(pointer:coarse){.switch-button,.primary-button,.secondary-button,.hoist-controls button{min-height:34px}input[type=range]{height:24px}input[type=range]::-webkit-slider-thumb{height:16px;width:16px;margin-top:-6.5px}input[type=range]::-moz-range-thumb{height:15px;width:15px}.camera-buttons button{min-height:30px}.simulation-actions button,#estop,#reset-estop{min-height:34px}}
@media(prefers-reduced-motion:reduce){button{transition:none}}

.navigation-tools{display:flex;gap:3px;flex-shrink:0;margin-left:auto}.scene-footer .navigation-tools button[aria-pressed=true]{color:#f0f3f1;background:#334840;border-color:#6b7c70}.touch-gesture{display:none}#scene canvas{cursor:grab}#scene canvas:active{cursor:grabbing}#scene canvas[data-navigation-mode=pan]{cursor:move}@media(pointer:coarse){.desktop-gesture{display:none}.touch-gesture{display:block}.navigation-tools button{min-height:30px}}@media(max-width:620px){.scene-footer{flex-wrap:wrap;gap:5px}.scene-footer>span{font-size:9px}.navigation-tools button{font-size:10px}}

.navigation-tools [data-camera-zoom]{min-width:27px;font:15px var(--mono);line-height:1;padding:3px 6px}@media(max-width:620px){.navigation-tools button{min-height:30px;min-width:30px}.desktop-gesture{display:none}.touch-gesture{display:block}}@media(pointer:coarse){.navigation-tools button{min-width:34px;min-height:34px}}

.scene-footer .navigation-tools button:hover:enabled{background:#e4decb;border-color:#6b7c70;color:#25382e}.scene-footer .navigation-tools button[aria-pressed=true]:hover{background:#425b4e;color:#fff}
