:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;color:#eef3f1;background:#0d151c;font-synthesis:none;font-weight:400}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.43}button:focus-visible,input:focus-visible{outline:2px solid #74dbc5;outline-offset:3px}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid #28353c;gap:22px;background:#131e26;flex-shrink:0}.brand{display:flex;align-items:center;gap:15px;min-width:264px}.logo{width:39px;height:39px;border:1px solid #6abcb3;border-radius:9px;display:flex;align-items:flex-end;padding:8px;gap:4px;transform:rotate(0deg)}.logo span{background:#76d1b8;border-radius:1px;width:5px;height:23px}.logo span:nth-child(2){height:14px}.logo span:nth-child(3){height:27px}.brand-small{font-size:9px;letter-spacing:2.3px;color:#88a39e;font-weight:700}.brand-small b{color:#edbe78}.brand-name{font-weight:850;letter-spacing:2.2px;font-size:22px;margin-top:1px}.brand-name span{font-weight:400;font-size:14px;letter-spacing:1.1px;color:#c8d2ce}.top-breadcrumb{font-size:10px;font-weight:700;letter-spacing:1.35px;color:#94a6a6;text-align:center}.top-breadcrumb span{color:#c69e67;padding:0 7px}.header-actions{display:flex;align-items:center;gap:18px}.offline{display:flex;align-items:center;font-size:10px;color:#b0c2bc;letter-spacing:1px;white-space:nowrap}.offline-dot,.live-dot{width:6px;height:6px;display:inline-block;border-radius:50%;background:#72dcb4;box-shadow:0 0 0 4px #2a4842;margin-right:11px}.text-button{border:1px solid #344850;border-radius:6px;background:#1b2a31;color:#e5efec;font-size:10px;font-weight:800;letter-spacing:1.1px;padding:10px 14px;white-space:nowrap}.text-button:hover,.square-button:hover,.cam:hover{border-color:#6bbdb5;background:#273f43}.main-layout{display:grid;grid-template-columns:minmax(0,1fr) 375px;gap:0;flex:1;min-height:0}.viewport-panel{display:flex;flex-direction:column;padding:26px 26px 19px;min-width:0;background:#111b22}.viewport-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:19px}.overline,.section-title{font-size:10px;letter-spacing:2px;font-weight:750;color:#7dc8ba}.viewport-heading h1{font-size:clamp(23px,2.3vw,36px);letter-spacing:-1.3px;line-height:1.18;font-weight:750;margin:5px 0 7px}.viewport-heading p{font-size:12px;color:#8faaa9;margin:0}.scene-mode{border:1px solid #30494a;border-radius:6px;display:flex;align-items:center;padding:11px 14px;color:#d1e7de;font-size:11px;font-weight:800;letter-spacing:1.2px;white-space:nowrap}.scene-mode small{color:#82a9a2;font-size:9px;margin-left:5px}.viewport{min-height:440px;height:min(61vh,740px);position:relative;overflow:hidden;background:linear-gradient(#91aeb0,#cad6bf 75%);border:1px solid #31454b;border-radius:9px}.viewport canvas{width:100%;height:100%;display:block;touch-action:none;cursor:grab}.viewport canvas:active{cursor:grabbing}.scene-top-left{position:absolute;left:19px;top:19px;pointer-events:none;display:flex;flex-direction:column;gap:7px}.scene-label{display:inline-block;width:max-content;background:#12252ac9;border:1px solid #ffffff40;color:#ebf5ee;letter-spacing:2px;font-size:10px;padding:10px 12px;border-radius:4px;font-weight:800}.scene-coordinates{font-size:9px;color:#ecf5f0;background:#1f3a3ab8;border-radius:3px;padding:6px 8px;width:max-content;letter-spacing:1px}.scene-top-right{position:absolute;right:18px;top:18px;display:flex;gap:7px}.square-button{height:35px;width:35px;border:1px solid #71979c73;background:#14262bdc;color:#eaf9ef;border-radius:6px;font-size:20px;display:grid;place-items:center}.marker{position:absolute;transform:translate(-50%,-110%);display:flex;align-items:center;gap:5px;color:white;background:#183c45eb;border:1px solid #8ae4de88;border-radius:4px;padding:6px 8px;font-weight:750;letter-spacing:.7px;box-shadow:0 2px 10px #0006;white-space:nowrap;font-size:9px;pointer-events:none}.marker b{font-size:8px;color:#072e31;border-radius:2px;background:#74d4c8;padding:3px 4px}.marker.alt{border-color:#e6c595a3}.marker.alt b{background:#d9bb82;color:#34251c}.marker.machinery{background:#4b463cd9}.marker.machinery b{background:#ddd5c3}.viewport-bottom-left{position:absolute;bottom:21px;left:18px;display:flex;flex-direction:column;gap:9px;pointer-events:none}.indicator-line{display:flex;align-items:center;gap:9px;color:#f2fbf6;letter-spacing:.6px;font-size:10px;font-weight:750;text-shadow:0 1px 3px #244}.legend-line{width:17px;height:3px;display:inline-block}.aqua{background:#4dd9bd}.gold{background:#f0bb63;margin-left:9px}.navhelp{font-size:9px;letter-spacing:.6px;color:#f0f8f1;text-shadow:0 1px 5px #000}.camera-dock{position:absolute;right:18px;bottom:22px;display:flex;background:#10252ddc;border:1px solid #5c8388a1;border-radius:5px;padding:3px}.cam{background:none;border:1px solid transparent;color:#a8c8c6;font-weight:750;font-size:9px;letter-spacing:.8px;padding:10px 11px;border-radius:3px}.cam.active{background:#70c9b1;color:#102c2f}.compass{position:absolute;right:19px;top:75px;border:1px solid #fff6;color:white;border-radius:100%;width:35px;height:35px;display:flex;align-items:center;justify-content:center;flex-direction:column;font-size:9px;line-height:12px;pointer-events:none;background:#244148aa}.compass span{font-size:16px}.canvas-error{position:absolute;inset:20%;background:#111f26ed;border:1px solid #e6a694;color:#f5eeeb;padding:25px;border-radius:8px;line-height:1.8;z-index:6}.bottom-panel{background:#18262e;padding:22px 24px;border:1px solid #2a3d43;border-top:none;border-radius:0 0 8px 8px}.travel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;font-size:11px;font-weight:750;letter-spacing:1.35px;color:#b4ccc8}.travel-header b{color:#79d2bd;font-size:17px;letter-spacing:0}.route{display:flex;align-items:center;gap:16px}.route-terminal{font-size:9px;color:#89a49f;letter-spacing:.6px;white-space:nowrap;font-weight:700}.route-line{flex:1;padding:7px 0}.route-line-bg{height:4px;background:#394b4f;border-radius:9px;position:relative}.route-line-bg span{display:block;height:100%;border-radius:9px;width:0;background:linear-gradient(90deg,#65cfb3,#bed8a1)}.route-line-bg b{position:absolute;top:50%;left:0;transform:translate(-50%,-50%);width:13px;height:13px;background:#76d9b9;border:3px solid #e4f7e9;border-radius:50%;box-shadow:0 0 0 3px #132922}.telemetry-row{display:grid;grid-template-columns:repeat(4,1fr);margin-top:20px;gap:8px}.telemetry-row>div{border-right:1px solid #2b4249;display:flex;gap:7px;flex-direction:column;padding-right:10px}.telemetry-row>div:last-child{border-right:none}.telemetry-row span{font-size:9px;letter-spacing:1px;color:#809c9b;font-weight:750}.telemetry-row strong{font-size:19px;font-weight:700;white-space:nowrap}.telemetry-row small{font-size:11px;color:#98b1ae;font-weight:500}.sidebar{border-left:1px solid #2c3d44;background:#16222a;padding:26px 23px 18px;display:flex;flex-direction:column;min-width:0}.side-head{display:flex;align-items:center;justify-content:space-between}.side-head h2{font-size:24px;letter-spacing:-.65px;margin:4px 0 0}.status-chip{font-size:10px;font-weight:800;letter-spacing:1px;padding:8px 9px;border:1px solid #536e72;border-radius:4px;color:#b6cacc}.status-chip.running{background:#1c443d;border-color:#439c85;color:#a7f7cf}.status-chip.stalled{border-color:#bd765a;color:#f6b894}.status-chip.finished{border-color:#7bd5bd;color:#a7f7d9}.control-note{display:flex;gap:11px;background:#1f3439;border:1px solid #305150;padding:13px;margin-top:22px;border-radius:6px}.control-note-icon{font-size:22px;color:#86d6c3}.control-note p{font-size:11px;line-height:1.65;color:#a8bfba;margin:0}.control-note b{color:#e1f5ed}.control-section{margin-top:24px}.section-title{display:flex;justify-content:space-between;padding-bottom:13px;border-bottom:1px solid #30414a;align-items:center}.section-title>b{font-size:9px;color:#7e9a97;letter-spacing:1.3px}.control{margin-top:20px}.control-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.control-head label{font-size:12px;color:#cfddda;font-weight:550}.control-head output{font-size:13px;font-weight:750;color:#8bddc5;font-variant-numeric:tabular-nums}.control input[type=range],.playback input[type=range]{width:100%;margin:16px 0 0;accent-color:#78d3ba;cursor:pointer;height:5px}.scale{display:flex;align-items:center;justify-content:space-between;font-size:9px;color:#74918d;letter-spacing:1px;font-weight:700;margin-top:6px}.direction-row{display:flex;justify-content:space-between;align-items:center;gap:9px;margin-top:24px}.direction-row>span{color:#8aa39d;font-size:10px;letter-spacing:1px;font-weight:700}.direction-row>div{display:flex;gap:6px}.toggle{border:1px solid #3b575a;background:#1c3137;color:#a2c2bc;padding:9px 12px;border-radius:5px;font-size:10px;font-weight:750}.toggle.active{background:#69c5ac;color:#122c2e;border-color:#69c5ac}.run-controls{display:flex;gap:7px;margin-top:22px}.run-button{min-height:44px;padding:12px 10px;background:#81d6b6;color:#092927;border:none;border-radius:5px;font-size:11px;letter-spacing:1.3px;font-weight:900;flex:1;transition:background .15s}.run-button:hover{background:#aaefd1}.pause-button,.reset-button{min-width:44px;background:#253840;border:1px solid #3e555b;color:#d7e7e2;border-radius:5px;font-size:18px}.notice{font-size:11px;color:#a1b9b0;min-height:17px;line-height:1.5;margin:12px 0 0}.notice.warning{color:#f2b18d}.metrics{margin-top:23px}.metrics-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:14px}.metric{background:#1d2d35;border:1px solid #2b4148;border-radius:6px;padding:13px 11px 11px;display:flex;flex-direction:column;gap:7px}.metric>span:first-child{font-size:9px;letter-spacing:.9px;color:#86aaa4;font-weight:800}.metric strong{font-size:24px;white-space:nowrap;font-weight:650;letter-spacing:-.7px;font-variant-numeric:tabular-nums}.metric strong small{color:#b1c1bb;font-weight:400;font-size:12px}.metric .metric-sub{font-size:9px;color:#75908c}.chart-section{margin-top:22px}.chart-wrap{position:relative;height:108px;margin-top:13px;background:linear-gradient(#1b2b33,#1a282f);border:1px solid #2e4149;border-radius:5px;overflow:hidden}.chart-wrap canvas{width:100%;height:100%}.chart-empty{position:absolute;left:0;right:0;top:47%;color:#648884;text-align:center;font-size:9px;letter-spacing:1px;pointer-events:none}.playback{margin-top:20px}.side-footer{margin-top:auto;padding-top:25px;display:flex;justify-content:space-between;gap:5px;font-size:8px;letter-spacing:1px;color:#64817e}.side-footer b{color:#97b4ab}.footer{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:14px 28px;border-top:1px solid #29363c;color:#75908c;font-size:9px;letter-spacing:.6px}.footer b{color:#d6e3db}.footer span:last-child{color:#a98d6c}dialog{border:1px solid #41605d;border-radius:13px;background:#172831;color:#eef9f3;max-width:min(680px,calc(100vw - 26px));box-shadow:0 25px 100px #000c;padding:0}dialog::backdrop{background:#08141cd9;backdrop-filter:blur(6px)}.dialog-content{padding:28px}.dialog-header{display:flex;justify-content:space-between}.dialog-content h2{font-size:28px;margin:14px 0}.dialog-content>p{font-size:13px;color:#b9d1ca;line-height:1.8}.dialog-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:20px 0}.dialog-grid>div{padding:16px;border:1px solid #36504f;border-radius:7px;background:#1d343a}.dialog-grid b{color:#88deca;font-size:11px;letter-spacing:1px}.dialog-grid p{font-size:12px;line-height:1.65;color:#b6cac3}.dialog-accuracy{border-top:1px solid #334b4b;padding-top:15px}kbd{background:#35504e;padding:1px 5px;border-radius:3px;color:#fff}@media(max-width:1170px){.main-layout{grid-template-columns:minmax(0,1fr) 342px}.sidebar{padding:22px 16px}.viewport-panel{padding:22px 17px}.top-breadcrumb{display:none}.telemetry-row strong{font-size:16px}.camera-dock{bottom:54px}}@media(max-width:850px){.main-layout{display:block}.sidebar{border-left:0;border-top:1px solid #34504e;display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.side-head,.control-note,.control-section,.run-controls,.notice,.metrics,.chart-section,.playback,.side-footer{grid-column:auto}.side-head,.control-note,.run-controls,.notice,.side-footer{grid-column:1 / -1}.metrics{margin-top:24px}.chart-section{margin-top:24px}.viewport{height:55vh;min-height:390px}.topbar{padding:0 18px}.footer{flex-direction:column;align-items:flex-start}.side-footer{margin-top:15px}}@media(max-width:570px){.topbar{height:69px;padding:0 13px}.brand{min-width:auto}.brand-name{font-size:18px}.brand-small{font-size:8px;letter-spacing:1.2px}.logo{width:33px;height:34px;padding:6px}.header-actions{gap:6px}.offline{display:none}.text-button{font-size:9px;padding:9px}.viewport-panel{padding:17px 10px}.viewport-heading h1{font-size:25px}.scene-mode{padding:8px}.scene-mode small{display:none}.viewport{min-height:420px;height:57vh}.scene-top-left{left:10px;top:12px}.scene-label{font-size:8px;letter-spacing:1px}.scene-coordinates{font-size:8px}.scene-top-right{right:9px;top:12px}.marker{font-size:8px;max-width:140px}.marker span{white-space:normal}.camera-dock{right:9px;bottom:12px}.cam{padding:8px;font-size:8px}.viewport-bottom-left{bottom:59px;left:10px}.navhelp{max-width:185px;line-height:1.7}.indicator-line{font-size:8px}.compass{right:11px;top:62px}.bottom-panel{padding:19px 12px}.route-terminal{font-size:8px;max-width:50px}.route{gap:8px}.telemetry-row{grid-template-columns:1fr 1fr;gap:17px}.telemetry-row>div:nth-child(2){border-right:none}.sidebar{display:block;padding:22px 15px}.control-note,.metrics,.chart-section{margin-top:20px}.dialog-content{padding:19px}.dialog-grid{grid-template-columns:1fr}.dialog-content h2{font-size:24px}}
