:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{width:100%;min-height:100vh;margin:0;padding:0}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;padding:0;min-width:100%;min-height:100vh;width:100%}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;width:100%;overflow-x:hidden}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background:linear-gradient(135deg,#0a0a0a,#1a1a2e,#16213e);color:#fff;min-height:100vh;width:100%}.app{min-height:100vh;width:100%;display:flex;flex-direction:column;overflow-x:hidden}.app-header{background:linear-gradient(90deg,#1e3c72,#2a5298);padding:1rem 2rem;box-shadow:0 4px 20px #0000004d;border-bottom:3px solid #ff6b35}.app-logo h1{font-size:2.5rem;font-weight:700;text-shadow:2px 2px 4px rgba(0,0,0,.5);margin-bottom:.5rem;background:linear-gradient(45deg,#ff6b35,#f7931e);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.app-logo p{font-size:1.1rem;color:#b8c5d6;font-weight:300}.app-main{flex:1;padding:2rem;width:100%;max-width:100%}.control-panel{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-bottom:2rem;width:100%}.dashboard-row{display:grid;grid-template-columns:340px 1fr 400px;gap:1rem;align-items:flex-start;margin-bottom:2rem}.rover-status,.command-section{min-width:0;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 8px 32px #0000004d}.rover-status h2,.command-section h2{color:#ff6b35;margin-bottom:1rem;font-size:1.5rem;border-bottom:2px solid #ff6b35;padding-bottom:.5rem}.status-display{display:flex;flex-direction:column;gap:.8rem}.status-item{display:flex;align-items:center;gap:.5rem;justify-content:space-between;padding:.8rem;background:#ffffff0d;border-radius:8px;border-left:4px solid #4CAF50}.status-item.warning{border-left-color:#ff9800;background:#ff98001a;display:flex;align-items:center;gap:.5rem}.status-item.warning .value{text-align:right;flex-grow:1}.status-item .label{font-weight:600;color:#b8c5d6}.status-item .value{font-weight:700;color:#fff}.status-item.warning .label{white-space:nowrap}.command-help{color:#b8c5d6;margin-bottom:1rem;font-style:italic}.command-inputs{display:flex;flex-direction:column;gap:.8rem;margin-bottom:1rem}.command-input{padding:.8rem;border:2px solid rgba(255,255,255,.2);border-radius:8px;background:#ffffff0d;color:#fff;font-size:1rem;transition:all .3s ease}.command-input:focus{outline:none;border-color:#ff6b35;background:#ffffff1a;box-shadow:0 0 0 3px #ff6b3533}.command-input::placeholder{color:#888}.error-message{background:#f4433633;border:1px solid #f44336;border-radius:8px;padding:1rem;margin-bottom:1rem;color:#ffcdd2}.error-message p{white-space:pre-line}.command-buttons{display:flex;gap:1rem}.execute-btn,.reset-btn{padding:.8rem 1.5rem;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s ease;flex:1;display:flex;align-items:center;justify-content:flex-start;gap:.75em;text-align:left}.execute-btn{background:linear-gradient(45deg,#4caf50,#45a049);color:#fff}.execute-btn:hover{background:linear-gradient(45deg,#45a049,#4caf50);transform:translateY(-2px);box-shadow:0 4px 12px #4caf5066}.reset-btn{background:linear-gradient(45deg,#ff6b35,#f7931e);color:#fff}.reset-btn:hover{background:linear-gradient(45deg,#f7931e,#ff6b35);transform:translateY(-2px);box-shadow:0 4px 12px #ff6b3566}.grid-section{min-width:0;flex:1 1 0;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:.5rem .5rem 1rem;margin-bottom:0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 8px 32px #0000004d;display:flex;flex-direction:column;align-items:center}.grid-section h2{color:#ff6b35;margin-bottom:.5rem;font-size:1.5rem;border-bottom:2px solid #ff6b35;padding-bottom:.5rem}.grid-info{color:#b8c5d6;margin-bottom:1rem;font-style:italic;font-size:.9rem}.grid-container{width:100%;max-width:700px;margin:0 auto;overflow:auto;padding:0}.grid{display:grid;grid-template-columns:repeat(20,1fr);gap:2px;background:#ffffff1a;padding:.5rem;border-radius:8px;border:2px solid rgba(255,255,255,.2);width:fit-content;max-width:none;margin:0 auto;-webkit-user-select:none;user-select:none}.grid-row{display:contents}.grid-cell{width:32px;height:32px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:2px;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;transition:all .3s ease;cursor:pointer;min-width:32px;min-height:32px}.grid-cell:hover{background:#ffffff1a;transform:scale(1.05)}.grid-cell.rover-here{background:#4caf50!important;border-color:#388e3c!important;box-shadow:0 0 10px #4caf50;position:relative;z-index:1}.grid-cell.perimeter{background:#ff980033;border-color:#ff9800}.grid-cell.rover-here.perimeter{background:linear-gradient(45deg,#ff9800,#f57c00);border-color:#ff9800;box-shadow:0 0 10px #ff980080}.grid-cell.out-of-bounds{background:#8080804d;border-color:#80808080;opacity:.5}.rover-indicator{position:absolute;top:2px;left:2px;background:none;border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center;z-index:2}.rover-arrow{color:#fff;font-size:12px;font-weight:700}.square-number{font-size:12px;color:#ffffffb3;position:absolute;bottom:2px;right:2px}.grid-legend{display:flex;gap:2rem;margin-top:1rem;justify-content:center;text-align:center}.legend-item{display:flex;align-items:center;gap:.5rem;color:#b8c5d6}.legend-color{width:20px;height:20px;border-radius:4px;border:1px solid rgba(255,255,255,.2)}.legend-color.rover-here{background:linear-gradient(45deg,#4caf50,#45a049)}.legend-color.perimeter{background:#ff980033;border-color:#ff9800}.legend-color.out-of-bounds{background:#8080804d;border-color:#80808080}.history-section{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 8px 32px #0000004d}.history-section h2{color:#ff6b35;margin-bottom:1rem;font-size:1.5rem;border-bottom:2px solid #ff6b35;padding-bottom:.5rem}.history-container{max-height:300px;overflow-y:auto;background:#0003;border-radius:8px;padding:1rem}.no-history{color:#888;font-style:italic;text-align:center;padding:2rem}.history-entry{background:#ffffff0d;border-left:4px solid #4CAF50;padding:.8rem;margin-bottom:.5rem;border-radius:0 8px 8px 0;font-family:Courier New,monospace;font-size:.9rem}.history-entry:last-child{margin-bottom:0}@media (max-width: 1200px){.dashboard-row{grid-template-columns:1fr}.grid-container{width:100%;margin:0;max-width:none}.grid{width:fit-content;margin:0 auto;gap:1px;max-width:none;padding:0}.grid-cell{width:20px;height:20px}}@media (max-width: 1600px){.dashboard-row{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto auto;grid-template-areas:"rover-status" "grid-section" "command-section"}.rover-status{grid-area:rover-status}.grid-section{grid-area:grid-section}.command-section{grid-area:command-section}.rover-status,.command-section,.grid-section{margin-bottom:1.5rem}}@media (max-width: 900px) and (min-width: 601px){.dashboard-row{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto auto;grid-template-areas:"rover-status" "grid-section" "command-section"}.rover-status{grid-area:rover-status}.grid-section{grid-area:grid-section}.command-section{grid-area:command-section}.rover-status,.command-section,.grid-section{margin-bottom:1.5rem}}@media (max-width: 900px){.rover-status,.command-section,.grid-section{margin-bottom:1.5rem}.grid-container,.grid{max-width:100vw}}@media (max-width: 450px){.app{width:100vw;margin:0 auto}.app-main{width:100vw;margin:0 auto;padding:.5rem 8px;box-sizing:border-box}.dashboard-row{margin:0 auto;display:flex;flex-direction:column;gap:1rem;align-items:center;padding-left:8px;padding-right:8px;box-sizing:border-box}.rover-status,.command-section,.grid-section{padding:1rem}}@media (max-width: 768px){.app-main{padding:1rem}.app-logo h1{font-size:2rem}.grid-cell{width:15px;height:15px}.square-number{font-size:12px}.rover-arrow{font-size:8px}.rover-indicator{width:12px;height:12px}.command-buttons{flex-direction:column}.grid-legend{flex-direction:column;gap:1rem}}@media (max-width: 655px){.grid-legend{margin-bottom:1rem}}@media (max-width: 480px){.grid-cell{width:12px;height:12px}.square-number{font-size:12px}.rover-arrow{font-size:6px}.rover-indicator{width:10px;height:10px}}.history-container::-webkit-scrollbar{width:8px}.history-container::-webkit-scrollbar-track{background:#ffffff1a;border-radius:4px}.history-container::-webkit-scrollbar-thumb{background:#ff6b3580;border-radius:4px}.history-container::-webkit-scrollbar-thumb:hover{background:#ff6b35b3}@keyframes roverMove{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.grid-cell.rover-here{animation:roverMove .5s ease-in-out}.return-to-rover-btn{max-width:420px;width:100%;padding:.8rem 1.5rem;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;background:#1e3c72;color:#fff;transition:all .3s ease;box-shadow:0 4px 12px #1e3c7233;margin:0 auto;display:block}.return-to-rover-btn:hover{background:#2a5298;transform:translateY(-2px);box-shadow:0 6px 16px #1e3c724d}.warning-emoji{vertical-align:middle;position:relative;top:-4px;font-size:1.1em}.reset-emoji{font-size:1.2em;display:inline-block;vertical-align:middle}.button-content{display:flex;align-items:center;gap:.75em;width:100%}
