:root{color:#f8fafc;background:#0f172a;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}button{border:0;color:inherit;font:inherit;cursor:pointer;touch-action:manipulation}.app{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,360px);gap:10px;width:100vw;height:100dvh;padding:10px;overflow:hidden;background:linear-gradient(180deg,#0f172aeb,#111827fa),#111827}.mapPanel,.controlPanel{min-width:0;min-height:0}.mapPanel{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;border:1px solid rgba(255,255,255,.12);border-radius:8px;background:#163827}.topBar{position:absolute;z-index:4;top:10px;left:10px;right:10px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.mapTools{position:absolute;z-index:6;top:60px;left:10px;display:grid;gap:6px}.mapTools button{display:inline-grid;place-items:center;min-width:42px;height:38px;padding:0 8px;border:1px solid rgba(255,255,255,.13);border-radius:8px;background:#f8fafcf0;color:#111827;font-size:12px;font-weight:850;box-shadow:0 14px 32px #00000038;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.mapTools button.active{background:#facc15;color:#111827}.mapTools .legendToggle{position:relative;z-index:101;display:inline-grid}.mapLegend{position:absolute;z-index:100;top:60px;left:60px;bottom:auto;display:none;grid-template-columns:1fr;gap:6px 12px;padding:9px 10px;border:1px solid rgba(255,255,255,.13);border-radius:8px;background:#111827c7;color:#e5e7eb;font-size:12px;font-weight:750;box-shadow:0 14px 32px #00000038;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.layerMenuHeader{display:flex;justify-content:space-between;gap:16px;padding-bottom:5px;border-bottom:1px solid rgba(255,255,255,.14)}.layerMenuHeader button{display:grid;place-items:center;width:28px;height:28px;border-radius:6px;background:#ffffff1f}.lightTheme .layerMenuHeader{border-bottom-color:#0f172a29}.lightTheme .layerMenuHeader button{background:#e2e8f0;color:#172033}.mapLegend.open{display:grid}.mapLegend div{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.layerMenu label{display:flex;align-items:center;gap:8px;min-height:28px;padding:2px 4px;cursor:pointer;white-space:nowrap}.layerMenu input{width:18px;height:18px;margin:0;accent-color:#facc15}.lightTheme .layerMenu input{accent-color:#2563eb}.layerMenu .mapBackgroundPicker{margin-top:3px;padding-top:7px;border-top:1px solid rgba(255,255,255,.14)}.layerMenu .mapBackgroundPicker input[type=color]{width:34px;height:26px;padding:1px;border:0;border-radius:5px;background:transparent;cursor:pointer}.lightTheme .layerMenu .mapBackgroundPicker{border-top-color:#0f172a29}.mapAttribution{position:absolute;z-index:4;right:10px;bottom:82px;padding:5px 7px;border-radius:6px;background:#111827b8;color:#e5e7eb;font-size:10px;font-weight:750;pointer-events:none}.field3dView{grid-row:1 / -1;grid-column:1;position:relative;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;background:#163827;touch-action:none}.field3dView canvas{display:block;width:100%;height:100%}.tiltSlider3d{position:absolute;z-index:3;top:128px;right:12px;width:128px;height:34px;transform:rotate(-90deg);transform-origin:right center;accent-color:#facc15;cursor:pointer;touch-action:none}.legendSwatch{display:inline-block;flex:0 0 auto;width:18px;height:4px;border-radius:999px}.gridSwatch{border:1px solid #94a3b8;background:transparent}.perimeterSwatch{background:#7dd3fc}.exclusionSwatch{background:#fb7185}.traceSwatch{background:#2563eb}.transitSwatch{background:#a78bfa}.laneSwatch{background:#facc15}.mowedSwatch{background:#22c55e}.noGoSwatch{background:#fb7185}.grassSwatch{background:#7dd3fc}.mapColorLegend{position:absolute;z-index:19;top:60px;right:10px;display:grid;grid-template-columns:1fr;gap:6px;padding:9px 10px;border:1px solid rgba(255,255,255,.13);border-radius:8px;background:#111827c7;color:#e5e7eb;font-size:11px;font-weight:700;box-shadow:0 14px 32px #00000038;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.mapColorLegend strong{padding-bottom:4px;border-bottom:1px solid rgba(255,255,255,.14)}.mapColorLegend span{display:flex;align-items:center;gap:7px;white-space:nowrap}.lightTheme .mapColorLegend{border-color:#0f172a29;background:#ffffffeb;color:#172033}.lightTheme .mapColorLegend strong{border-bottom-color:#0f172a29}.topBar>*{pointer-events:auto}.brand,.fixBadge,.statusStrip,.autoMode,.captureCard,.telemetryGrid,.actions button,.modeTabs,.drawer{border:1px solid rgba(255,255,255,.13);background:#111827d1;box-shadow:0 18px 50px #00000038;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.brand,.fixBadge{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 12px;border-radius:8px;font-size:14px;font-weight:750}.brandButton{pointer-events:auto}.robotBackButton{height:40px;padding:0 12px;border-radius:8px;background:#f8fafcf5;color:#111827;font-size:13px;font-weight:850;pointer-events:auto}.fixBadge.good{color:#bbf7d0}.fixBadge.warn{color:#fde68a}.iconButton{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:8px;background:#f8fafcf5;color:#111827}.iconButton.dark{background:#ffffff1a;color:#f8fafc}.fieldMap{grid-row:1 / -1;grid-column:1;width:100%;height:100%;min-height:0;cursor:grab;touch-action:none}.fieldMap.panning{cursor:grabbing}.mapGridOverlay,.satelliteLayer{pointer-events:none}.trail{fill:none;stroke:#ffffffa6;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.active{fill:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:18 12}.perimeter,.perimeterLine{fill:#7dd3fc12;stroke:#7dd3fc;stroke-width:5;stroke-linejoin:round}.autoLine{stroke:#2563eb}.exclusion,.exclusionLine{fill:#fb718517;stroke:#fb7185;stroke-width:8;stroke-linejoin:round}.mapZone{stroke-width:3;stroke-linejoin:round;cursor:pointer;pointer-events:auto}.noGoZone{fill:#ef44443d;stroke:#f87171e6}.grassZone{fill:#3b82f638;stroke:#7dd3fceb}.virtualFenceZone{fill:none;stroke-width:4;stroke-dasharray:9 7;stroke-linecap:round}.virtualFenceHitbox,.transitPathHitbox{fill:none;stroke:transparent;stroke-width:24;stroke-linecap:round;stroke-linejoin:round;cursor:pointer;pointer-events:stroke}.selectedZone{filter:drop-shadow(0 0 12px rgba(250,204,21,.95));stroke:#facc15}.zoneHandles{pointer-events:auto}.zoneHandle{fill:#facc15;stroke:#111827;stroke-width:1.5;cursor:grab}.resizeHandle{cursor:nwse-resize}.rotateHandle{cursor:alias}.deleteHandle{fill:#fb7185;cursor:pointer}.zoneHandleIcon,.zoneHandleDeleteIcon{fill:none;stroke:#111827;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.perimeter,.exclusion{cursor:pointer}.selectedGeometry{filter:drop-shadow(0 0 12px rgba(250,204,21,.95));stroke:#facc15}.edgeMowingBand{fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.perimeterEdgeBand,.exclusionEdgeBand{stroke:#facc156b}.selectionRect{fill:#facc151f;stroke:#facc15;stroke-width:1.5;stroke-dasharray:6 5;pointer-events:none}.lane{fill:none;stroke:#facc15;stroke-width:1;stroke-linecap:round;opacity:.72}.laneCompleted{fill:none;stroke:#22c55e;stroke-width:3;stroke-linecap:round;opacity:.95}.laneActive{fill:none;stroke:#f8fafc;stroke-width:3;stroke-linecap:round;stroke-dasharray:5 4;opacity:.95}.peerRobot{pointer-events:none}.peerRobotLabel,.activeRobotLabel{fill:#e0f2fe;stroke:#082f49e6;stroke-width:2.5;paint-order:stroke;font-size:13px;font-weight:900}.transitPath{fill:none;stroke:#a78bfa;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:10 8;opacity:1}.transitPath.selectedGeometry{stroke:#facc15}.statusStrip{position:absolute;z-index:3;left:10px;right:10px;bottom:10px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:9px;border-radius:8px}.statusStrip div,.captureCard,.telemetryGrid div{min-width:0}.label{display:block;margin-bottom:2px;color:#cbd5e1;font-size:11px;line-height:1.1}strong{display:block;overflow:hidden;font-size:13px;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.controlPanel{position:relative;isolation:isolate;display:grid;grid-template-rows:auto auto minmax(150px,1fr) auto auto;gap:10px;overflow:hidden}.selectionBar{position:absolute;z-index:30;top:0;right:0;left:0;display:grid;grid-template-columns:minmax(0,1fr) 38px 38px;align-items:center;gap:6px;min-height:58px;padding:8px;border:1px solid rgba(250,204,21,.45);border-radius:8px;background:#111827f0;box-shadow:0 18px 50px #00000047;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.selectionBar button{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:7px;background:#ffffff1a;color:#f8fafc}.selectionBar .danger{background:#fb7185;color:#111827}.selectionMeta{display:block;margin-top:2px;color:#bbf7d0;font-size:12px;font-weight:800}.modeTabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border-radius:8px}.modeTabs button,.actions button,.drawerItem{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:0;border-radius:7px;background:transparent;color:#cbd5e1;font-size:14px;font-weight:700}.modeTabs button{height:40px}.modeTabs .selected,.drawerItem.selected{background:#f8fafc;color:#111827}.autoMode{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;min-height:50px;padding:0 12px;border-radius:8px;color:#dbeafe;font-size:14px;font-weight:800}.autoMode strong{color:#bbf7d0;text-align:right}.captureCard{position:relative;z-index:10;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-height:64px;padding:10px;border-radius:8px}.captureCard>div{min-width:0}.captureActions{display:grid;grid-template-columns:82px 82px 42px;gap:8px}.recordButton{position:relative;z-index:20;display:inline-flex;align-items:center;justify-content:center;gap:8px;width:82px;height:42px;padding:0 12px;border-radius:7px;background:#e5e7eb;color:#111827;font-weight:800;pointer-events:auto}.recordButton.recording{background:#fb7185;color:#111827}.recordButton.autoButton{background:#bbf7d0;color:#064e3b}.recordButton.autoButton.recording{background:#facc15;color:#111827}.recordButton.cancelTaskButton{width:42px;padding:0;background:#fecaca;color:#7f1d1d}.recordButton.cancelTaskButton:disabled{opacity:.45}.joystickShell{position:relative;z-index:1;display:grid;place-items:center;min-height:0;pointer-events:none}.joystickPad{position:relative;width:min(100%,235px);aspect-ratio:1;border:1px solid rgba(255,255,255,.16);border-radius:50%;background:radial-gradient(circle at center,rgba(248,250,252,.18) 0 17%,transparent 18%),radial-gradient(circle at center,#ffffff0f,#ffffff05);pointer-events:auto;touch-action:none}.axis{position:absolute;background:#ffffff2e}.axisV{top:16px;bottom:16px;left:calc(50% - 1px);width:2px}.axisH{top:calc(50% - 1px);right:16px;left:16px;height:2px}.stick{position:absolute;top:calc(50% - 30px);left:calc(50% - 30px);width:60px;height:60px;border:6px solid #111827;border-radius:50%;background:#f8fafc;box-shadow:0 14px 34px #00000059;transition:transform 80ms linear}.mobileDriveControls,.mobileJoystickToggle{display:none}.axisJoystickShell{display:grid;place-items:center;gap:3px;min-width:0;color:#cbd5e1;font-size:10px;font-weight:800}.axisJoystickPad{position:relative;width:82px;height:auto;aspect-ratio:1;border:1px solid rgba(255,255,255,.16);border-radius:50%;background:radial-gradient(circle at center,#ffffff1a,#ffffff06);touch-action:none}.axisJoystickTrack{position:absolute;border-radius:999px;background:#ffffff2e}.axisJoystickShell.horizontal .axisJoystickTrack{top:calc(50% - 1px);right:12px;left:12px;height:2px}.axisJoystickShell.vertical .axisJoystickTrack{top:12px;bottom:12px;left:calc(50% - 1px);width:2px}.axisJoystickStick{position:absolute;top:calc(50% - 18px);left:calc(50% - 18px);width:36px;height:36px;border:4px solid #111827;border-radius:50%;background:#f8fafc;box-shadow:0 8px 18px #0000004d}.lightTheme .axisJoystickShell{color:#334155}.lightTheme .axisJoystickPad{border:2px solid #64748b;background:radial-gradient(circle at center,#fff,#dbe4ef)}.lightTheme .axisJoystickTrack{background:#0f172a4d}.lightTheme .axisJoystickStick{border-color:#334155;background:#facc15}.telemetryGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px;border-radius:8px}.telemetryGrid div{display:flex;align-items:center;gap:7px;min-height:30px;padding:0 9px;border-radius:7px;background:#ffffff12;color:#dbeafe;font-size:13px;font-weight:700}.telemetryGrid .ok{color:#bbf7d0}.actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.actions button{height:44px}.drawerBackdrop{position:fixed;z-index:10;top:0;right:0;bottom:0;left:0;display:flex;justify-content:flex-start;background:#0f172a8a}.drawer{width:min(86vw,330px);height:100%;padding:12px 18px 12px 12px;border-radius:0;overflow-y:auto;scrollbar-gutter:stable;scrollbar-color:rgba(203,213,225,.72) rgba(255,255,255,.08)}.drawer::-webkit-scrollbar{width:16px}.drawer::-webkit-scrollbar-track{border-radius:999px;background:#ffffff14}.drawer::-webkit-scrollbar-thumb{min-height:52px;border:3px solid transparent;border-radius:999px;background:#cbd5e1b8;background-clip:padding-box}.drawerHeader{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;font-size:18px;font-weight:850}.drawerItem{justify-content:flex-start;width:100%;height:48px;margin-bottom:8px;padding:0 12px}.drawerSummary{display:grid;gap:8px;margin-top:18px;padding:12px;border-radius:8px;background:#ffffff14;color:#cbd5e1;font-size:13px;font-weight:700}.laneSettings{display:grid;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.12)}.settingRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 10px;align-items:center;color:#dbeafe;font-size:13px;font-weight:800}.settingRow output{color:#bbf7d0;font-variant-numeric:tabular-nums}.settingRow input{grid-column:1 / -1;width:100%;accent-color:#facc15}.settingToggle{display:flex;align-items:center;justify-content:space-between;min-height:38px;color:#dbeafe;font-size:13px;font-weight:800}.settingToggle input{width:20px;height:20px;accent-color:#facc15}.zoneToolGroup{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.zoneToolGroup span{grid-column:1 / -1;color:#dbeafe;font-size:13px;font-weight:850}.zoneToolGroup button{min-height:36px;border-radius:7px;background:#ffffff1a;color:#f8fafc;font-size:12px;font-weight:800}.mapManagerHeader,.mapListItem{border-radius:7px;background:#ffffff14}.mapManagerHeader{display:grid;gap:3px;padding:10px;color:#dbeafe;font-size:12px;font-weight:800}.mapManagerHeader strong{color:#f8fafc;font-size:14px}.mapList{display:grid;gap:8px}.mapListItem{display:grid;grid-template-columns:minmax(0,1fr) 38px;gap:6px;padding:6px}.mapListItem button{min-width:0;min-height:38px;border-radius:6px;color:#f8fafc}.mapListItem button:first-child{display:grid;grid-template-columns:18px minmax(0,1fr);gap:8px;align-items:center;padding:8px;text-align:left;background:#0f172a6b}.mapListItem button:last-child{display:grid;place-items:center;background:#fb71852e;color:#fecdd3}.mapListText{display:grid;gap:2px;min-width:0;max-width:100%}.mapListText strong{min-width:0;color:#fff;font-size:13px;font-weight:850;line-height:1.15;overflow-wrap:anywhere}.mapListText small{min-width:0;color:#dbeafe;font-size:11px;font-weight:750;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selectedMapItem{outline:1px solid rgba(250,204,21,.75)}.emptyMapList{color:#cbd5e1;font-size:13px;font-weight:750}.drawerAction{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;height:42px;border-radius:7px;background:#f8fafc;color:#111827;font-size:14px;font-weight:850}.robotPortal{display:grid;place-items:center;width:100vw;height:100dvh;padding:16px;overflow:hidden;background:linear-gradient(180deg,#0f172adb,#111827fa),#111827}.robotPortalPanel{display:grid;gap:18px;width:min(100%,520px);max-height:min(100%,720px);overflow:auto;padding:18px;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:#111827eb;box-shadow:0 22px 70px #00000052}.robotPortalHeader{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center}.themeToggle{display:grid;place-items:center;width:40px;height:40px;border-radius:8px;background:#ffffff1a}.lightTheme{color:#172033}.app.lightTheme,.robotPortal.lightTheme{background:linear-gradient(180deg,#f8fafc,#e8eef5)}.lightTheme .robotPortalPanel,.lightTheme .controlPanel,.lightTheme .drawer,.lightTheme .brand,.lightTheme .fixBadge,.lightTheme .statusStrip,.lightTheme .autoMode,.lightTheme .captureCard,.lightTheme .telemetryGrid,.lightTheme .modeTabs,.lightTheme .adminDashboard,.lightTheme .addRobotForm{border-color:#0f172a29;background:#fffffff0;color:#172033;box-shadow:0 16px 44px #0f172a1f}.lightTheme .robotPortalHeader span,.lightTheme .robotListItem small,.lightTheme .adminVendorItem small,.lightTheme .drawerSummary,.lightTheme .emptyRobotList,.lightTheme .emptyMapList{color:#526176}.lightTheme .robotListItem,.lightTheme .adminVendorItem,.lightTheme .adminUserItem,.lightTheme .drawerSummary,.lightTheme .mapManagerHeader,.lightTheme .mapListItem{background:#e2e8f0db}.lightTheme .robotListItem button:first-child,.lightTheme .loginForm input,.lightTheme .loginForm select,.lightTheme .addRobotForm input,.lightTheme .adminDashboard select{border-color:#0f172a2e;background:#fff;color:#172033}.lightTheme .robotListItem span,.lightTheme .autoMode,.lightTheme .settingRow,.lightTheme .settingToggle,.lightTheme .laneSettings,.lightTheme .zoneToolGroup span,.lightTheme .mapManagerHeader,.lightTheme .mapManagerHeader strong,.lightTheme .adminDashboard h2,.lightTheme .robotGroup h3,.lightTheme .addRobotForm label,.lightTheme .loginForm label{color:#172033}.lightTheme .authModeButton,.lightTheme .logoutButton,.lightTheme .themeToggle,.lightTheme .drawerItem,.lightTheme .zoneToolGroup button{border-color:#0f172a29;background:#e2e8f0;color:#172033}.lightTheme .loginForm button[type=submit]{border:1px solid #1d4ed8;background:#2563eb;color:#fff;box-shadow:0 8px 20px #2563eb3d}.lightTheme .loginForm button[type=submit]:hover:not(:disabled){background:#1d4ed8}.lightTheme .loginForm button[type=submit]:disabled{border-color:#94a3b8;background:#cbd5e1;color:#475569;box-shadow:none}.lightTheme .mapLegend{border-color:#0f172a29;background:#ffffffe6;color:#172033}.lightTheme .robotListItem .robotDeleteButton,.lightTheme .adminUserItem .adminDeleteButton{border:1px solid #e11d48;background:#ffe4e6;color:#9f1239}.lightTheme .joystickPad{border:2px solid #64748b;background:radial-gradient(circle at center,rgba(15,23,42,.12) 0 17%,transparent 18%),radial-gradient(circle at center,#fff,#dbe4ef);box-shadow:inset 0 0 0 1px #ffffffe6,0 12px 30px #0f172a29}.lightTheme .axis{background:#0f172a4d}.lightTheme .stick{border-color:#334155;background:#facc15;box-shadow:0 10px 24px #0f172a47}.lightTheme .telemetryGrid div,.lightTheme .captureCard .label{color:#334155}.lightTheme .statusStrip>div{padding:6px 8px;border:1px solid #cbd5e1;border-radius:6px;background:#f8fafc}.lightTheme .statusStrip .label{color:#475569;font-weight:750}.lightTheme .statusStrip strong{color:#0f172a;font-weight:850}.lightTheme .autoMode strong,.lightTheme .selectionMeta{color:#166534;font-weight:900}.lightTheme .chassisSettings output{color:#14532d;font-weight:900}.lightTheme .chassisSettings input[type=range]{accent-color:#2563eb}.lightTheme .laneSettings output{color:#14532d;font-weight:900}.lightTheme .laneSettings input[type=range],.lightTheme .laneSettings input[type=checkbox]{accent-color:#2563eb}.lightTheme .drawerItem.selected{background:#2563eb;color:#fff}.lightTheme .drawerAction{border:1px solid #1d4ed8;background:#2563eb;color:#fff}.lightTheme .mapListItem button:first-child{border:1px solid #cbd5e1;background:#fff;color:#172033}.lightTheme .mapListText strong{color:#0f172a}.lightTheme .mapListText small{color:#475569}.lightTheme .mapListItem button:last-child{border:1px solid #e11d48;background:#ffe4e6;color:#9f1239}.lightTheme .selectedMapItem{outline-color:#2563eb}.robotPortalHeader h1{margin:0;font-size:22px;line-height:1.1}.robotPortalHeader span{color:#cbd5e1;font-size:13px;font-weight:750}.loginForm,.robotListView,.robotList{display:grid;gap:12px}.loginForm label,.addRobotForm label{display:grid;gap:6px;color:#dbeafe;font-size:13px;font-weight:850}.loginForm input,.loginForm select,.addRobotForm input,.adminDashboard select{height:42px;padding:0 11px;border:1px solid rgba(255,255,255,.14);border-radius:7px;background:#0f172adb;color:#f8fafc;font:inherit}.robotGroup{display:grid;gap:8px}.robotGroup h3,.adminDashboard h2{margin:6px 0 0;color:#dbeafe;font-size:13px}.robotListItem.readOnlyRobot{grid-template-columns:minmax(0,1fr)}.robotListItem.readOnlyRobot button:first-child:last-child{background:#0f172a6b;color:#f8fafc}.adminDashboard,.adminVendorList,.adminUserList{display:grid;gap:8px}.adminDashboard{padding:12px;border:1px solid rgba(255,255,255,.12);border-radius:8px;background:#0f172a8a}.adminDashboard>button,.adminDashboard form>button,.adminUserItem button{min-height:38px;border-radius:7px;background:#f8fafc;color:#111827;font-weight:850}.adminVendorItem,.adminUserItem{display:grid;gap:8px;align-items:center;padding:8px;border-radius:7px;background:#ffffff14}.adminVendorItem{grid-template-columns:minmax(0,1fr) auto}.adminVendorItem span{display:grid}.adminVendorItem small{color:#cbd5e1}.adminUserItem{grid-template-columns:minmax(170px,1fr) 100px 150px auto auto}.adminUserItem .adminDeleteButton{background:#fb71852e;color:#fecdd3}@media(min-width:900px){.adminPortalPanel{width:min(94vw,1380px);max-height:calc(100dvh - 32px)}.adminPortalPanel .adminVendorList{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.adminPortalPanel .robotList{grid-template-columns:repeat(auto-fit,minmax(360px,1fr));align-items:start}.adminPortalPanel .adminDashboard{padding:18px}.adminPortalPanel .adminUserItem{grid-template-columns:minmax(240px,1fr) 120px minmax(170px,240px) auto auto}}@media(max-width:899px){.adminUserItem{grid-template-columns:1fr}.adminUserItem select,.adminUserItem button{width:100%}}.loginForm button,.robotListHeader button,.addRobotActions button,.logoutButton{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;border-radius:7px;background:#f8fafc;color:#111827;font-weight:850}.loginForm button:disabled,.robotListHeader button:disabled,.addRobotActions button:disabled{cursor:not-allowed;opacity:.62}.loginForm .authModeButton{border:1px solid rgba(255,255,255,.16);background:#0f172ab8;color:#e5e7eb}.loginError{color:#fecdd3;font-size:13px}.robotListHeader{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}.robotListHeader strong{font-size:16px}.addRobotForm{display:grid;gap:10px;padding:12px;border:1px solid rgba(255,255,255,.12);border-radius:8px;background:#0f172a8a}.robotKindToggle{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:4px;border-radius:8px;background:#ffffff14}.robotKindToggle button{min-height:36px;border-radius:6px;background:transparent;color:#cbd5e1;font-weight:850}.robotKindToggle button.selected{background:#f8fafc;color:#111827}.addRobotActions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.addRobotActions button:last-child{border:1px solid rgba(255,255,255,.16);background:#ffffff14;color:#e5e7eb}.chassisSettings input[type=range]{width:min(68%,210px);justify-self:start;touch-action:pan-y}.robotListItem{display:grid;grid-template-columns:minmax(0,1fr) 42px;gap:8px;padding:7px;border-radius:8px;background:#ffffff14}.robotListItem button:first-child{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 9px;align-items:center;justify-items:start;min-height:48px;padding:8px 10px;border-radius:7px;background:#0f172a6b;color:#f8fafc;text-align:left}.robotListItem button:last-child{display:grid;place-items:center;border-radius:7px;background:#fb71852e;color:#fecdd3}.robotListItem span,.robotListItem small{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis}.robotListItem span{color:#fff;font-weight:850}.robotListItem small{grid-column:2;color:#cbd5e1;font-size:11px;font-weight:750;white-space:nowrap}.emptyRobotList{padding:16px;border-radius:8px;background:#ffffff12;color:#cbd5e1;font-size:13px;font-weight:750}.logoutButton{background:#ffffff1a;color:#f8fafc}@media(max-width:760px){.app{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) minmax(224px,34dvh);gap:6px;padding:6px}.controlPanel{grid-template-columns:minmax(0,1fr) minmax(0,2fr);grid-template-rows:38px 48px 54px minmax(0,1fr);gap:6px}.modeTabs,.autoMode{grid-column:1 / -1}.modeTabs{grid-row:1}.autoMode{grid-row:2}.captureCard{grid-column:1 / -1;grid-row:3;min-height:0}.desktopJoystick{display:none}.mobileDriveControls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));position:fixed;z-index:150;right:0;bottom:0;left:0;height:33.333dvh;grid-template-rows:minmax(0,1fr) auto;align-items:center;justify-items:center;gap:12px;min-width:0;width:100%;padding:12px 62px 12px 12px;border-top:1px solid rgba(255,255,255,.16);background:#0f172af7;box-shadow:0 -12px 32px #0000004d;touch-action:none}.mobileJoystickToggle{position:fixed;z-index:151;right:14px;bottom:max(14px,env(safe-area-inset-bottom));display:grid;place-items:center;width:48px;height:48px;border-radius:50%;border:1px solid rgba(15,23,42,.18);background:#f8fafc;color:#111827;box-shadow:0 10px 28px #0000004d}.mobileJoystickToggle.active{background:#facc15}.lightTheme .mobileDriveControls{border-top-color:#0f172a29;background:#fffffffa;box-shadow:0 -12px 32px #0f172a2e}.mobileSpeedControl{display:grid;grid-template-columns:auto minmax(100px,1fr) 62px;grid-column:1 / -1;align-items:center;gap:10px;width:min(620px,100%);min-height:34px;color:#e2e8f0;font-size:12px;font-weight:800}.mobileSpeedControl input{width:100%;accent-color:#facc15;touch-action:none}.mobileSpeedControl output{text-align:right}.lightTheme .mobileSpeedControl{color:#172033}.lightTheme .mobileSpeedControl input{accent-color:#2563eb}.joystickShell{grid-column:2;grid-row:4;align-self:stretch}.joystickPad{width:min(132px,100%);max-height:100%}.stick{top:calc(50% - 24px);left:calc(50% - 24px);width:48px;height:48px}.telemetryGrid{grid-column:1;grid-row:4;grid-template-columns:1fr;align-self:stretch;gap:4px;padding:4px}.telemetryGrid div{min-height:0;padding:0 5px;font-size:10px}.axisJoystickPad{width:min(21dvh,38vw,160px)}.axisJoystickShell{width:100%}.actions{grid-column:1;grid-row:4;align-self:stretch;grid-template-columns:1fr;gap:4px}.actions button{height:auto;min-height:0;font-size:12px}.statusStrip{left:62px;right:8px;bottom:8px;grid-template-columns:1fr 1fr;gap:5px;padding:6px}.brand{display:none}.mapTools{top:54px;left:8px;gap:5px}.mapTools button{min-width:38px;height:34px;padding:0 7px}.mapTools .legendToggle{display:inline-grid}.mapLegend{top:54px;left:54px;bottom:auto;max-height:calc(100dvh - 70px);overflow-y:auto;display:none;grid-template-columns:1fr;gap:4px;padding:7px 8px;font-size:11px}.mapLegend.open{display:grid}}@media(max-width:380px),(max-height:690px){.app{grid-template-rows:minmax(0,1fr) minmax(252px,42dvh);padding:4px}.controlPanel{grid-template-columns:minmax(0,1fr) minmax(0,2fr);grid-template-rows:34px 48px 48px minmax(0,1fr);gap:4px}.joystickPad{width:min(108px,100%)}.stick{top:calc(50% - 21px);left:calc(50% - 21px);width:42px;height:42px;border-width:5px}.modeTabs button,.recordButton,.iconButton{height:32px}.captureActions{grid-template-columns:58px 58px 34px;gap:4px}.recordButton{width:58px;padding:0 6px;gap:4px;font-size:12px}.recordButton.cancelTaskButton{width:34px;padding:0}.captureCard{min-height:48px;padding:6px;gap:6px}.captureCard p{font-size:11px;line-height:1.2}.autoMode{min-height:48px;padding:0 8px;gap:6px;font-size:12px}.telemetryGrid div{gap:5px;font-size:10px}.telemetryGrid svg,.actions svg{width:14px;height:14px}.statusStrip strong{font-size:12px}}
