.login-container{align-items:center;background:radial-gradient(ellipse 90% 70% at 30% 20%,#9fc66e1a,#0000 55%),radial-gradient(ellipse 80% 60% at 80% 80%,#749e501f,#0000 55%),linear-gradient(180deg,#171d15,#12170f);display:flex;justify-content:center;min-height:100vh;min-height:100dvh;overflow:hidden;position:relative;transition:background .3s var(--ease);width:100%}:root[data-theme=light] .login-container{background:radial-gradient(ellipse 90% 70% at 30% 20%,#5c844224,#0000 55%),radial-gradient(ellipse 80% 60% at 80% 80%,#749e5029,#0000 55%),linear-gradient(180deg,#f2f3e8,#e4e7d4)}.login-form{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);max-width:420px;padding:2.5rem 2.25rem;position:relative;transition:background-color .3s var(--ease),border-color .3s var(--ease);width:100%;z-index:1}.login-language-switch{margin-bottom:1.25rem;margin-left:auto}.login-form h2{color:var(--text-primary);font-family:var(--font-display);font-size:1.5rem;font-weight:700;letter-spacing:.01em;margin-bottom:.5rem;text-align:left}.login-form h2:after{background:linear-gradient(90deg,var(--accent),#0000);border-radius:2px;content:"";display:block;height:2px;margin-top:.6rem;width:36px}.form-group{margin-bottom:.9rem}.form-group label{color:var(--text-secondary);display:block;font-size:.78rem;font-weight:600;letter-spacing:.02em;margin-bottom:.4rem}.form-group input{background:var(--bg-inset);border:1px solid var(--border-strong);border-radius:var(--radius-md);color:var(--text-primary);font-size:.95rem;padding:.78rem .95rem;transition:border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease),background var(--duration) var(--ease);width:100%}:root[data-theme=light] .form-group input{background:var(--bg-surface-2)}.form-group input::placeholder{color:var(--text-tertiary)}.form-group input:hover{border-color:var(--border-strong)}.form-group input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.error-message{background:var(--danger-soft);border:1px solid #d95f434d;border-radius:var(--radius-md);color:var(--danger);font-size:.85rem;font-weight:500;margin-bottom:.85rem;padding:.7rem .85rem;text-align:left}.login-button{background:var(--accent-button);border:1px solid #0000;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-size:.95rem;font-weight:700;letter-spacing:.02rem;margin-top:.5rem;padding:.85rem 1rem;transition:transform var(--duration) var(--ease),filter var(--duration) var(--ease),background var(--duration) var(--ease);width:100%}.login-button:hover:not(:disabled){background:var(--accent-button-hover);transform:translateY(-1px)}.login-button:active:not(:disabled){filter:brightness(.95);transform:translateY(0)}.login-button:disabled{cursor:not-allowed;opacity:.55}@media (max-width:480px){.login-form{margin:1rem;padding:2rem 1.5rem}}.robot-video-container,.video-content{position:relative;width:100%}.video-content{align-items:center;aspect-ratio:16/9;background:#0b0f0a;border-radius:var(--radius-md);display:flex;justify-content:center;overflow:hidden}.video-feed{height:100%;object-fit:cover;width:100%}.video-state{color:var(--text-tertiary);font-size:.95rem;padding:1rem;text-align:center}.video-state-overlay{align-items:center;background:#0b0f0a99;display:flex;inset:0;justify-content:center;position:absolute}.video-state-error{color:var(--danger)}.video-debug{align-items:center;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);background:#0b0f0ab8;border-radius:var(--radius-pill);bottom:.9rem;color:var(--text-secondary);display:inline-flex;font-size:.8rem;font-weight:500;gap:.5rem;left:.9rem;max-width:calc(100% - 1.8rem);padding:.45rem .95rem;position:absolute}.video-debug-active{color:var(--accent)}.video-debug-dot{animation:ws-pulse 2.4s ease-in-out infinite;background:var(--success);border-radius:50%;box-shadow:0 0 8px var(--success-glow);flex-shrink:0;height:8px;width:8px}.sidebar{display:flex;flex-direction:column;flex-shrink:0;gap:1rem;min-height:0;overflow-y:auto;width:300px}.sidebar-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:1.1rem}.sidebar-card h3{color:var(--text-primary);font-family:var(--font-display);font-size:1.15rem;font-weight:700;margin:0}.sidebar-header{align-items:baseline;display:flex;gap:.6rem;margin-bottom:.9rem}.sidebar-subtitle{color:var(--text-tertiary);font-size:.75rem;margin-left:auto;white-space:nowrap}.close-sidebar{align-items:center;background:var(--bg-surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;display:none;font-size:1.1rem;height:28px;justify-content:center;line-height:1;width:28px}.robots-list{display:flex;flex-direction:column;gap:.7rem}.loading{color:var(--text-tertiary);font-size:.88rem;padding:1rem 0;text-align:center}.robot-item{align-items:center;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;display:flex;gap:.8rem;overflow:hidden;padding:.85rem .9rem;position:relative;transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease)}.robot-item:before{background:#0000;border-radius:0 4px 4px 0;bottom:12%;content:"";left:0;position:absolute;top:12%;transition:background var(--duration) var(--ease);width:4px}.robot-item:hover{background:var(--bg-surface-2);border-color:var(--border-strong)}.robot-item.selected{background:var(--bg-surface-2);border-color:var(--border-accent)}.robot-item.selected:before{background:var(--accent);box-shadow:0 0 10px var(--accent-glow)}.robot-icon{align-items:center;background:var(--accent-soft);border-radius:12px;color:var(--accent);display:inline-flex;flex-shrink:0;height:46px;justify-content:center;width:46px}.robot-icon.offline{background:var(--bg-surface-2);color:var(--text-tertiary)}.robot-info{flex:1 1;min-width:0}.robot-name-row{align-items:center;display:flex;gap:.5rem;justify-content:space-between;margin-bottom:.3rem}.robot-name-row h4{color:var(--text-primary);font-family:var(--font-display);font-size:1.05rem;font-weight:700;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.robot-info p{color:var(--text-secondary);font-size:.78rem;line-height:1.45;margin:0}.farm-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:.7rem}.farm-icon{align-items:center;color:var(--warning);display:inline-flex}.farm-status{align-items:center;border-top:1px solid var(--border);color:var(--text-secondary);display:flex;font-size:.88rem;gap:.5rem;padding-top:.7rem}.farm-status-dot{background:var(--success);border-radius:50%;box-shadow:0 0 8px var(--success-glow);flex-shrink:0;height:8px;width:8px}.messages-card h3{margin-bottom:.8rem}.messages-empty{color:var(--text-tertiary);font-size:.85rem;margin:0}.messages-list{display:flex;flex-direction:column;gap:.7rem}.message-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);display:flex;gap:.7rem;padding:.8rem .9rem}.message-card.warning{border-color:#d9a44159}.message-card.error{border-color:#d95f4366}.message-card-icon{color:var(--warning);flex-shrink:0;margin-top:.1rem}.message-card.error .message-card-icon{color:var(--danger)}.message-card-body{min-width:0}.message-card-body p{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:var(--text-primary);display:-webkit-box;font-size:.85rem;line-height:1.4;margin:0 0 .35rem;overflow:hidden}.message-card-body time{color:var(--text-tertiary);font-size:.72rem}.sidebar-overlay{display:none}@media (max-width:768px){.sidebar{background:var(--bg-base);border-right:1px solid var(--border);bottom:0;left:0;overflow-y:auto;padding:.9rem;position:fixed;top:0;transform:translateX(-105%);transition:transform .25s var(--ease-out);width:min(320px,85vw);z-index:100}.sidebar.sidebar-open{box-shadow:var(--shadow-xl);transform:translateX(0)}.close-sidebar{display:inline-flex}.sidebar-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0000008c;display:block;inset:0;position:fixed;z-index:90}}.robot-workspace{display:flex;flex-direction:column;gap:1.1rem}.robot-header-card{align-items:center;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);display:flex;gap:1rem;justify-content:space-between;padding:1.1rem 1.4rem}.robot-header-info{min-width:0}.robot-kicker{color:var(--text-tertiary);font-size:.68rem;font-weight:600;letter-spacing:.14em;margin:0 0 .15rem;text-transform:uppercase}.robot-title-row{align-items:baseline;display:flex;flex-wrap:wrap;gap:1.4rem}.robot-title-row h2{color:var(--text-primary);font-family:var(--font-display);font-size:1.7rem;font-weight:700;letter-spacing:.01em;margin:0}.robot-meta{color:var(--text-secondary);font-size:.9rem;white-space:nowrap}.submenu-tabs{align-items:center;display:flex;flex-wrap:wrap;gap:.4rem}.submenu-tab{background:#0000;border-radius:var(--radius-pill);color:var(--text-secondary);cursor:pointer;font-size:.95rem;font-weight:600;padding:.6rem 1.5rem;transition:background var(--duration) var(--ease),color var(--duration) var(--ease)}.submenu-tab:hover{background:var(--bg-surface-2);color:var(--text-primary)}.submenu-tab.active{background:var(--accent);box-shadow:0 4px 14px var(--accent-glow);color:var(--text-inverse)}.workspace-columns{align-items:flex-start;display:flex;gap:1.1rem}.workspace-main{display:flex;flex:1 1;flex-direction:column;gap:1.1rem;min-width:0}.submenu-panel{padding:1.25rem 1.4rem}.status-strip,.submenu-panel{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.status-strip{align-items:stretch;display:flex;gap:1rem;padding:.9rem 1.4rem}.status-strip-item{align-items:center;display:flex;flex:1 1;gap:.7rem;min-width:0}.status-strip-item+.status-strip-item{border-left:1px solid var(--border);padding-left:1.4rem}.status-strip-icon{align-items:center;background:var(--bg-surface-2);border-radius:10px;color:var(--text-secondary);display:inline-flex;flex-shrink:0;height:38px;justify-content:center;width:38px}.status-strip-icon-success{background:var(--accent-soft);color:var(--accent)}.status-strip-label{color:var(--text-tertiary);display:block;font-size:.66rem;font-weight:600;letter-spacing:.12em;margin-bottom:.1rem;text-transform:uppercase}.status-strip-item strong{color:var(--text-primary);font-family:var(--font-display);font-size:1.05rem}.status-online-text{color:var(--accent)!important}.status-strip-value-row{align-items:center;display:flex;gap:.6rem}.status-strip-note{color:var(--text-tertiary);font-size:.78rem;white-space:nowrap}.battery-bar{background:var(--bg-track);border-radius:var(--radius-pill);display:inline-block;height:7px;overflow:hidden;width:90px}.battery-bar-fill{background:linear-gradient(90deg,var(--accent-button),var(--accent));border-radius:inherit;display:block;height:100%}.video-shell{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:.9rem}.no-robot-selected{align-items:center;display:flex;justify-content:center;min-height:60vh}.empty-content{color:var(--text-secondary);max-width:360px;text-align:center}.empty-icon{align-items:center;background:var(--bg-surface);border:1px solid var(--border);border-radius:28px;color:var(--text-tertiary);display:inline-flex;height:110px;justify-content:center;margin-bottom:1.2rem;width:110px}.empty-content h3{color:var(--text-primary);font-family:var(--font-display);font-size:1.25rem;margin:0 0 .4rem}.empty-content p{font-size:.9rem;margin:0}@media (max-width:900px){.status-strip{flex-direction:column;gap:.8rem}.status-strip-item+.status-strip-item{border-left:none;border-top:1px solid var(--border);padding-left:0;padding-top:.8rem}}@media (max-width:480px){.robot-header-card{align-items:flex-start;flex-direction:column;gap:.8rem}.robot-title-row h2{font-size:1.35rem}.submenu-tab{font-size:.88rem;padding:.5rem 1rem}}.velocity-block{border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:.55rem;padding-bottom:1rem}.velocity-block-header{align-items:baseline;color:var(--text-secondary);display:flex;font-size:.9rem;justify-content:space-between}.velocity-block-header strong{color:var(--text-primary);font-family:var(--font-display);font-size:1.05rem}.velocity-slider{-webkit-appearance:none;appearance:none;background:linear-gradient(90deg,var(--accent) 0,var(--accent) 10%,var(--bg-track) 10%,var(--bg-track) 100%);background:linear-gradient(90deg,var(--accent) 0,var(--accent) var(--fill,10%),var(--bg-track) var(--fill,10%),var(--bg-track) 100%);border-radius:var(--radius-pill);cursor:pointer;height:8px;outline:none;width:100%}.velocity-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:var(--text-primary);border:3px solid var(--accent);border-radius:50%;box-shadow:0 2px 8px #00000059;height:22px;-webkit-transition:transform var(--duration) var(--ease);transition:transform var(--duration) var(--ease);width:22px}.velocity-slider::-webkit-slider-thumb:hover{transform:scale(1.1)}.velocity-slider::-moz-range-thumb{background:var(--text-primary);border:3px solid var(--accent);border-radius:50%;box-shadow:0 2px 8px #00000059;height:16px;width:16px}.velocity-slider::-moz-range-track{background:var(--bg-track);border-radius:var(--radius-pill);height:8px}.velocity-grid{grid-gap:.7rem;display:grid;gap:.7rem;grid-template-columns:repeat(3,1fr)}.velocity-button{align-items:center;aspect-ratio:1.35;background:var(--bg-surface-2);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;display:flex;font-size:1.5rem;justify-content:center;line-height:1;transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease),transform .1s var(--ease)}.velocity-button:hover:not(:disabled){background:var(--bg-surface-3);border-color:var(--border-strong)}.velocity-button:active:not(:disabled){transform:scale(.96)}.velocity-button:disabled{cursor:not-allowed;opacity:.5}.velocity-stop{background:var(--danger);border-color:#0000;color:#fff}.velocity-stop:hover:not(:disabled){background:var(--danger);border-color:#0000;filter:brightness(1.1)}.drive-command-strip{grid-gap:.7rem;display:grid;gap:.7rem;grid-template-columns:1fr 1fr 1fr}.command-button{border:1px solid #0000;border-radius:var(--radius-md);cursor:pointer;font-size:.95rem;font-weight:700;padding:.75rem .5rem;transition:filter var(--duration) var(--ease),transform .1s var(--ease),background var(--duration) var(--ease)}.command-button:active:not(:disabled){transform:translateY(1px)}.command-button:disabled{cursor:not-allowed;opacity:.55}.start-btn{background:var(--accent-button);color:#fff}.start-btn:hover:not(:disabled){background:var(--accent-button-hover)}.stop-btn{background:var(--danger);color:#fff}.stop-btn:hover:not(:disabled){filter:brightness(1.1)}.reset-btn{background:var(--bg-surface-2);border-color:var(--border);color:var(--text-secondary)}.reset-btn:hover:not(:disabled){background:var(--bg-surface-3);color:var(--text-primary)}.drive-hints{display:flex;flex-direction:column;gap:.15rem;text-align:center}.drive-hints p{color:var(--text-tertiary);font-size:.78rem;margin:0}.schedule-section{display:flex;flex-direction:column;gap:1rem}.schedule-header{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between}.schedule-header h3{color:var(--text-primary);font-family:var(--font-display);font-size:1.2rem;font-weight:700;margin:0}.schedule-actions{display:flex;flex-wrap:wrap;gap:.6rem}.schedule-button{background:var(--bg-surface-2);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--text-primary);cursor:pointer;font-size:.88rem;font-weight:600;padding:.55rem 1.1rem;transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease)}.schedule-button:hover:not(:disabled){background:var(--bg-surface-3);border-color:var(--border-strong)}.schedule-button:disabled{cursor:not-allowed;opacity:.5}.schedule-button.save{background:var(--accent-button);border-color:#0000;color:#fff}.schedule-button.save:hover:not(:disabled){background:var(--accent-button-hover)}.schedule-button.secondary{background:#0000}.schedule-table-wrap{overflow-x:auto}.schedule-sheet-name{color:var(--text-tertiary);font-size:.78rem;font-weight:600;letter-spacing:.08em;margin-bottom:.6rem;text-transform:uppercase}.schedule-table{border-collapse:initial;border-spacing:0 .6rem;width:100%}.schedule-table thead th{color:var(--text-tertiary);font-size:.7rem;font-weight:600;letter-spacing:.1em;padding:0 .9rem .2rem;text-align:left;text-transform:uppercase}.schedule-table tbody tr{background:var(--bg-surface)}.schedule-table tbody tr:hover{background:var(--bg-surface-2)}.schedule-table tbody td{border-bottom:1px solid var(--border);border-top:1px solid var(--border);padding:.55rem .4rem}.schedule-table tbody td:first-child{border-left:1px solid var(--border);border-radius:var(--radius-md) 0 0 var(--radius-md);padding-left:.9rem}.schedule-table tbody td:last-child{border-radius:0 var(--radius-md) var(--radius-md) 0;border-right:1px solid var(--border);padding-right:.6rem;text-align:right;white-space:nowrap;width:1%}.schedule-input{background:#0000;border:1px solid #0000;border-radius:var(--radius-sm);color:var(--text-primary);font-size:.92rem;min-width:70px;padding:.45rem .6rem;transition:border-color var(--duration) var(--ease),background var(--duration) var(--ease);width:100%}.schedule-input:hover{border-color:var(--border)}.schedule-input:focus{background:var(--bg-inset);border-color:var(--border-accent);outline:none}.schedule-delete{align-items:center;background:#0000;border-radius:var(--radius-sm);color:var(--danger);cursor:pointer;display:inline-flex;height:34px;justify-content:center;transition:background var(--duration) var(--ease);width:34px}.schedule-delete:hover:not(:disabled){background:var(--danger-soft)}.schedule-delete:disabled{cursor:not-allowed;opacity:.45}.next-launch{border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:.1rem;padding-bottom:.9rem}.next-launch strong{color:var(--text-primary);font-family:var(--font-display);font-size:2.2rem;font-weight:700;line-height:1.1}.next-launch span{color:var(--text-secondary);font-size:.88rem}.next-launch-none strong{color:var(--text-tertiary)}.daily-launches-track{background:var(--bg-track);border-radius:var(--radius-pill);height:6px;margin-top:.4rem;position:relative}.daily-launch-dot{background:var(--text-tertiary);border:2px solid var(--bg-elevated);border-radius:50%;height:11px;position:absolute;top:50%;transform:translate(-50%,-50%);width:11px}.daily-launch-dot.next{background:var(--warning);box-shadow:0 0 8px var(--warning-glow)}.daily-launches-scale{color:var(--text-tertiary);display:flex;font-size:.72rem;justify-content:space-between;margin-top:.4rem}.logs-section{display:flex;flex-direction:column;gap:1rem}.logs-header{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between}.logs-header h3{color:var(--text-primary);font-family:var(--font-display);font-size:1.2rem;font-weight:700;margin:0}.logs-live-indicator{align-items:center;background:var(--accent-soft);border-radius:var(--radius-pill);color:var(--accent);display:inline-flex;font-size:.8rem;font-weight:600;gap:.5rem;padding:.4rem .95rem}.logs-live-dot{animation:ws-pulse 2.4s ease-in-out infinite;background:var(--accent);border-radius:50%;box-shadow:0 0 8px var(--accent-glow);height:8px;width:8px}.logs-list{display:flex;flex-direction:column;gap:.55rem;max-height:60vh;overflow-y:auto;padding-right:.3rem}.log-row{align-items:baseline;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);display:flex;gap:.8rem;padding:.7rem .95rem}.log-row.log-error{background:var(--danger-soft);border-color:#d95f434d}.log-row.log-warning{background:var(--warning-soft);border-color:#d9a4414d}.log-icon{align-items:center;align-self:center;display:inline-flex;flex-shrink:0}.log-icon-error{color:var(--danger)}.log-icon-warning{color:var(--warning)}.log-icon-ok{color:var(--success)}.log-row time{color:var(--text-secondary);flex-shrink:0;font-family:var(--font-mono);font-size:.8rem;white-space:nowrap}.log-row p{color:var(--text-primary);flex:1 1;font-size:.88rem;line-height:1.45;margin:0;min-width:0;word-break:break-word}.log-row.log-error p{color:var(--danger);font-weight:600}.log-repeat{align-self:center;background:var(--warning-soft);border-radius:var(--radius-pill);color:var(--warning);flex-shrink:0;font-size:.72rem;font-weight:700;padding:.15rem .55rem}.log-repeat-error{background:var(--danger-soft);color:var(--danger)}.log-filter-buttons{display:flex;flex-wrap:wrap;gap:.5rem}.log-filter-buttons button{background:var(--bg-surface-2);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--text-secondary);cursor:pointer;font-size:.85rem;font-weight:600;padding:.45rem 1.05rem;transition:background var(--duration) var(--ease),color var(--duration) var(--ease)}.log-filter-buttons button:hover{color:var(--text-primary)}.log-filter-buttons button.active{background:var(--accent);border-color:#0000;color:var(--text-inverse)}.repeated-events{display:flex;flex-direction:column;gap:.55rem}.repeated-event{align-items:center;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);display:flex;gap:.6rem;padding:.65rem .85rem}.repeated-event-text{color:var(--text-primary);flex:1 1;font-size:.85rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.download-log-button{align-items:center;background:var(--bg-surface-2);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;display:flex;font-size:.92rem;font-weight:600;gap:.55rem;justify-content:center;padding:.8rem 1rem;transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease)}.download-log-button:hover:not(:disabled){background:var(--bg-surface-3);border-color:var(--border-strong)}.download-log-button:disabled{cursor:not-allowed;opacity:.5}.other-section{display:flex;flex-direction:column;gap:1rem}.other-header h3{color:var(--text-primary);font-family:var(--font-display);font-size:1.2rem;font-weight:700;margin:0}.lidar-view{display:flex;flex-direction:column;gap:.6rem}.lidar-view img{background:#fff;border:1px solid var(--border);border-radius:var(--radius-md);width:100%}.lidar-meta{color:var(--text-tertiary);display:flex;flex-wrap:wrap;font-size:.8rem;gap:1rem;justify-content:space-between}.lidar-radius-block{display:flex;flex-direction:column;gap:.45rem}.lidar-stepper{align-items:center;background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-md);display:flex;gap:.6rem;justify-content:space-between;padding:.4rem}.lidar-stepper button{background:var(--bg-surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;font-size:1.25rem;height:40px;line-height:1;transition:background var(--duration) var(--ease);width:40px}.lidar-stepper button:hover{background:var(--bg-surface-3)}.lidar-stepper strong{color:var(--text-primary);font-family:var(--font-display);font-size:1.4rem}.lidar-toggle-button,.lidar-update-button{align-items:center;border-radius:var(--radius-md);cursor:pointer;display:flex;font-size:.92rem;font-weight:700;gap:.55rem;justify-content:center;padding:.8rem 1rem;transition:background var(--duration) var(--ease),filter var(--duration) var(--ease)}.lidar-update-button{background:var(--accent-button);border:1px solid #0000;color:#fff}.lidar-update-button:hover:not(:disabled){background:var(--accent-button-hover)}.lidar-update-button:disabled{cursor:not-allowed;opacity:.55}.lidar-toggle-button{background:var(--bg-surface-2);border:1px solid var(--border);color:var(--text-primary)}.lidar-toggle-button:hover{background:var(--bg-surface-3)}.lidar-legend{border-top:1px solid var(--border);display:flex;flex-direction:column;gap:.5rem;padding-top:.9rem}.lidar-legend-item{align-items:center;color:var(--text-secondary);display:flex;font-size:.86rem;gap:.6rem}.legend-dot{border-radius:50%;flex-shrink:0;height:11px;width:11px}.legend-dot-wall{background:#3a3f38;border:1px solid var(--border-strong)}.legend-dot-obstacle{background:var(--danger)}.legend-dot-robot{background:var(--info)}.lidar-info-note{background:var(--warning-soft);border:1px solid #d9a4414d;border-radius:var(--radius-md);display:flex;gap:.7rem;padding:.8rem .9rem}.lidar-info-note p{color:var(--text-primary);font-size:.82rem;line-height:1.45;margin:0}.lidar-info-icon{align-items:center;background:var(--warning);border-radius:50%;color:var(--text-inverse);display:inline-flex;flex-shrink:0;font-size:.72rem;font-style:normal;font-weight:700;height:20px;justify-content:center;width:20px}.control-panel{background:var(--bg-base);background-attachment:fixed;background-image:var(--bg-canvas);display:flex;flex-direction:column;height:100vh;height:100dvh}.panel-header{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);flex-shrink:0;margin:.9rem 1.1rem 0;padding:.6rem 1.1rem;position:relative;transition:background-color .3s var(--ease),border-color .3s var(--ease);z-index:50}.header-content,.panel-header{align-items:center;display:flex}.header-content{gap:1rem;justify-content:space-between;width:100%}.brand{align-items:center;display:flex;gap:.75rem;min-width:0}.brand-logo{align-items:center;background:var(--accent-soft);border:1px solid var(--border-accent);border-radius:12px;color:var(--accent);display:inline-flex;flex-shrink:0;height:42px;justify-content:center;width:42px}.brand-text{display:flex;flex-direction:column;min-width:0}.brand-text h1{color:var(--text-primary);font-family:var(--font-display);font-size:1.12rem;font-weight:700;letter-spacing:.01em;margin:0;white-space:nowrap}.brand-subtitle{color:var(--text-tertiary);font-size:.66rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap}.header-actions{align-items:center;display:flex;flex-shrink:0;gap:.6rem}.header-clock{align-items:flex-end;border-right:1px solid var(--border);display:flex;flex-direction:column;line-height:1.15;margin-right:.15rem;padding-right:.7rem}.header-clock strong{color:var(--text-primary);font-family:var(--font-mono);font-size:.92rem;font-weight:700;letter-spacing:-.01em}.header-clock span{color:var(--text-tertiary);font-size:.62rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.ws-indicator{align-items:center;border-radius:50%;cursor:default;display:inline-flex;height:28px;justify-content:center;transition:background var(--duration) var(--ease);width:28px}.ws-indicator:hover{background:var(--bg-surface-2)}.ws-dot{background:var(--text-tertiary);border-radius:50%;height:8px;transition:background var(--duration) var(--ease),box-shadow var(--duration) var(--ease);width:8px}.ws-connected .ws-dot{animation:ws-pulse 2.4s ease-in-out infinite;background:var(--success);box-shadow:0 0 8px var(--success-glow),0 0 0 3px var(--success-soft)}.ws-disconnected .ws-dot{background:var(--danger);box-shadow:0 0 6px var(--danger-glow)}@keyframes ws-pulse{0%,to{box-shadow:0 0 8px var(--success-glow),0 0 0 3px var(--success-soft)}50%{box-shadow:0 0 12px var(--success-glow),0 0 0 5px var(--success-soft)}}.theme-toggle{align-items:center;background:var(--bg-surface-2);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--warning);cursor:pointer;display:inline-flex;height:36px;justify-content:center;transition:all var(--duration) var(--ease);width:36px}.theme-toggle:hover{background:var(--bg-surface-3);border-color:var(--border-strong);transform:rotate(20deg)}.panel-language-switch{color:var(--text-secondary)}.menu-toggle{background:var(--bg-surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;display:none;line-height:1;padding:.5rem;transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease)}.menu-toggle:hover{background:var(--bg-surface-3);border-color:var(--border-strong)}.logout-button{background:var(--danger-soft);border:1px solid #0000;border-radius:var(--radius-pill);color:var(--danger);cursor:pointer;font-size:.85rem;font-weight:600;letter-spacing:.01em;padding:.5rem 1rem;transition:background var(--duration) var(--ease),color var(--duration) var(--ease)}.logout-button:hover{background:var(--danger);color:var(--text-inverse)}.panel-content{display:flex;flex:1 1;gap:1.1rem;min-height:0;overflow:hidden;padding:1.1rem;position:relative}.main-content{background:#0000;flex:1 1;min-width:0;overflow-y:auto}.error-banner{background:var(--danger-soft);border-bottom:1px solid var(--danger);color:var(--danger);flex-shrink:0;font-size:.88rem;font-weight:500;padding:.65rem 1rem;text-align:center}.side-panel{flex-shrink:0;position:-webkit-sticky;position:sticky;top:0;width:330px}.side-panel-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);display:flex;flex-direction:column;gap:1rem;padding:1.25rem}.side-panel-title{align-items:center;color:var(--text-primary);display:flex;font-family:var(--font-display);font-size:1.15rem;font-weight:700;justify-content:space-between;margin:0}.side-panel-title-icon{align-items:center;color:var(--warning);display:inline-flex}.side-panel-caption{color:var(--text-tertiary);font-size:.72rem;font-weight:600;letter-spacing:.08em;margin:0 0 .45rem;text-transform:uppercase}.side-panel-stats{border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:.3rem;padding-bottom:.9rem}.side-panel-stat-row{align-items:center;color:var(--text-secondary);display:flex;font-size:.9rem;justify-content:space-between}.side-panel-stat-row strong{color:var(--text-primary);font-size:.95rem}.stat-danger{color:var(--danger)!important}.stat-warning{color:var(--warning)!important}.side-panel-note{color:var(--text-tertiary);font-size:.8rem;line-height:1.45;margin:0}.side-panel-footnote{text-align:center}.status-pill{align-items:center;border-radius:var(--radius-pill);display:inline-flex;font-size:.75rem;font-weight:600;gap:.4rem;padding:.28rem .8rem;white-space:nowrap}.status-pill-dot{background:currentColor;border-radius:50%;height:7px;width:7px}.status-pill.online{background:var(--accent-soft);color:var(--accent)}.status-pill.offline{background:var(--bg-surface-2);color:var(--text-tertiary)}.status-pill-lg{font-size:.88rem;padding:.55rem 1.3rem}.schedule-message{align-items:center;background:var(--accent-soft);border:1px solid var(--border-accent);border-radius:var(--radius-md);color:var(--accent);display:flex;font-size:.88rem;font-weight:600;gap:.55rem;padding:.65rem .95rem}.schedule-message-dot{background:var(--accent);border-radius:50%;box-shadow:0 0 8px var(--accent-glow);flex-shrink:0;height:8px;width:8px}.schedule-message-time{color:var(--text-tertiary);font-size:.68rem;font-weight:600;letter-spacing:.08em;margin-left:auto;text-transform:uppercase;white-space:nowrap}.schedule-empty{border:1px dashed var(--border-strong);border-radius:var(--radius-md);color:var(--text-tertiary);font-size:.9rem;padding:2rem 1rem;text-align:center}.panel-title-icon{align-items:center;color:var(--warning);display:inline-flex;margin-right:.5rem;vertical-align:-2px}@media (max-width:1280px){.workspace-columns{flex-direction:column}.side-panel{position:static;width:100%}}@media (max-width:768px){.menu-toggle{align-items:center;display:inline-flex;justify-content:center}.panel-header{margin:.6rem .7rem 0}.panel-content{gap:.7rem;padding:.7rem}}@media (max-width:480px){.brand,.header-content{gap:.5rem}.brand{margin-right:auto}.brand-text{display:none}.brand-logo{height:34px;width:34px}.header-clock{display:none}.header-actions{gap:.35rem}.theme-toggle,.ws-indicator{height:30px;width:30px}.ws-dot{height:7px;width:7px}.language-switch button{font-size:.7rem;padding:4px 8px}.logout-button{font-size:.75rem;padding:.4rem .6rem}}@media (max-width:380px){.brand{display:none}.header-actions{gap:.3rem;margin-left:auto}}.App{display:flex;flex-direction:column;height:100vh;height:100dvh;min-height:100vh;min-height:100dvh}.language-switch{background:var(--bg-surface-2);border:1px solid var(--border);border-radius:var(--radius-pill);display:inline-flex;gap:2px;padding:4px}.language-switch button{background:#0000;border:none;border-radius:var(--radius-pill);color:var(--text-secondary);cursor:pointer;font-size:.78rem;font-weight:700;letter-spacing:.04em;padding:6px 12px;transition:color var(--duration) var(--ease),background var(--duration) var(--ease)}.language-switch button:hover{color:var(--text-primary)}.language-switch button.active{background:var(--accent);box-shadow:0 0 12px var(--accent-glow);color:var(--text-inverse)}@media (max-width:480px){.language-switch button{font-size:.72rem;padding:5px 10px}}:root{--bg-base:#161c14;--bg-canvas:radial-gradient(ellipse 90% 60% at 50% -20%,#9fc66e12,#0000 60%),linear-gradient(180deg,#171d15,#141a12);--bg-surface:#232d20;--bg-surface-solid:#232d20;--bg-surface-2:#2a3626;--bg-surface-3:#33422c;--bg-elevated:#1e271b;--bg-inset:#1a2217;--bg-track:#ece9dd24;--border:#ece9dd14;--border-strong:#ece9dd29;--border-accent:#9fc66e73;--text-primary:#ece9dd;--text-secondary:#a8b09b;--text-tertiary:#7d8772;--text-inverse:#1c2418;--accent:#9fc66e;--accent-2:#b8d989;--accent-button:#749e50;--accent-button-hover:#82b05b;--accent-glow:#9fc66e4d;--accent-soft:#9fc66e24;--success:#8fbf5f;--success-glow:#8fbf5f59;--success-soft:#8fbf5f24;--danger:#d95f43;--danger-glow:#d95f4359;--danger-soft:#d95f4324;--warning:#d9a441;--warning-glow:#d9a44159;--warning-soft:#d9a44124;--info:#5b8dd9;--info-soft:#5b8dd924;--shadow-sm:0 1px 2px #00000040;--shadow-md:0 4px 14px #0000004d;--shadow-lg:0 14px 36px #00000059;--shadow-xl:0 24px 60px #0006;--shadow-glow:0 0 24px var(--accent-glow);--radius-sm:8px;--radius-md:12px;--radius-lg:18px;--radius-xl:24px;--radius-pill:999px;--font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--font-display:Georgia,"PT Serif","Times New Roman",serif;--font-mono:"JetBrains Mono","SF Mono",Menlo,Monaco,"Courier New",monospace;--ease:cubic-bezier(0.4,0,0.2,1);--ease-out:cubic-bezier(0.16,1,0.3,1);--duration:200ms;color-scheme:dark}:root[data-theme=light]{--bg-base:#eef0e2;--bg-canvas:radial-gradient(ellipse 90% 60% at 50% -20%,#749e501f,#0000 60%),linear-gradient(180deg,#f2f3e8,#e7e9d8);--bg-surface:#fff;--bg-surface-solid:#fff;--bg-surface-2:#f4f5ea;--bg-surface-3:#e9ecda;--bg-elevated:#f8f8f0;--bg-inset:#eceee0;--bg-track:#2a332424;--border:#2a33241f;--border-strong:#2a332438;--border-accent:#5c844280;--text-primary:#26301f;--text-secondary:#55624a;--text-tertiary:#7d8772;--text-inverse:#f4f6ec;--accent:#5c8442;--accent-2:#749e50;--accent-button:#5c8442;--accent-button-hover:#4f7339;--accent-glow:#5c84424d;--accent-soft:#5c84421f;--success:#4f7a36;--success-glow:#4f7a364d;--success-soft:#4f7a361f;--danger:#c14e35;--danger-glow:#c14e354d;--danger-soft:#c14e351a;--warning:#a87b24;--warning-glow:#a87b244d;--warning-soft:#a87b241f;--info:#3d6cb3;--info-soft:#3d6cb31a;--shadow-sm:0 1px 2px #2a33240f;--shadow-md:0 4px 14px #2a332414;--shadow-lg:0 14px 36px #2a33241a;--shadow-xl:0 24px 60px #2a332424;color-scheme:light}*{box-sizing:border-box;margin:0;padding:0}#root,body,html{height:100%;min-height:100vh;min-height:100dvh}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv02","cv03","cv04","cv11";background:#161c14;background:var(--bg-base);background-attachment:fixed;background-image:radial-gradient(ellipse 90% 60% at 50% -20%,#9fc66e12,#0000 60%),linear-gradient(180deg,#171d15,#141a12);background-image:var(--bg-canvas);color:#ece9dd;color:var(--text-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-family:var(--font-sans);font-size:14px;line-height:1.5;margin:0;overflow:hidden;padding:0;text-rendering:optimizeLegibility;transition:background-color .3s cubic-bezier(.4,0,.2,1),color .3s cubic-bezier(.4,0,.2,1);transition:background-color .3s var(--ease),color .3s var(--ease)}#root{position:relative;z-index:1}select{background:#2a3626;background:var(--bg-surface-2);border:1px solid #ece9dd14;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#ece9dd;color:var(--text-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-family:var(--font-sans);font-size:14px;padding:8px 12px}img{display:block;max-width:100%}button,input,select,textarea{color:inherit;font-family:inherit}button{background:#0000;border:none;cursor:pointer;font:inherit}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-track{background:#0000}::-webkit-scrollbar-thumb{background:#ece9dd24;background:var(--bg-track);background-clip:padding-box;border:2px solid #0000;border-radius:10px;-webkit-transition:background .2s cubic-bezier(.4,0,.2,1);transition:background .2s cubic-bezier(.4,0,.2,1);-webkit-transition:background .2s var(--ease);transition:background .2s var(--ease)}::-webkit-scrollbar-thumb:hover{background:#ece9dd29;background:var(--border-strong);background-clip:padding-box;border:2px solid #0000}::selection{background:#9fc66e24;background:var(--accent-soft);color:#ece9dd;color:var(--text-primary)}
/*# sourceMappingURL=main.3c8b6838.css.map*/