body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.dashboard-container{background-color:#000;flex-direction:row;height:calc(102.9vh - 100px);overflow:hidden;padding:20px}.panel-25{display:flex;flex-direction:column;gap:20px;overflow-y:auto}.panel-50{overflow:hidden}.gcode-section{background:#1a1a1a;border-radius:12px;box-shadow:0 4px 6px #0000004d;display:flex;flex-direction:column;height:100%}.gcode-header h2{color:#fff}.file-upload-container{gap:10px}.file-upload-label{background:linear-gradient(135deg,#667eea,#764ba2);display:flex}.file-upload-label:hover{box-shadow:0 4px 12px #667eea66}.file-name,.loading-text{font-size:.9rem}.loading-text{animation:pulse 1.5s ease-in-out infinite;color:#ffa07a}.viewer-instructions{background:#252525;margin-bottom:15px;padding:12px}.instructions-row{align-items:center;gap:20px}.instruction-item{color:#ccc}.viewer-container{border-radius:8px;flex:1 1;min-height:0}.empty-viewer{text-align:center}.empty-viewer svg{margin-bottom:20px}.empty-viewer p{font-size:1.1rem}.supported-formats{font-size:.9rem!important}@media (max-width:1200px){.dashboard-container{flex-direction:column;height:auto}.panel-25,.panel-50{flex:1 1 auto;width:100%}.viewer-container{min-height:500px}}.panel-25::-webkit-scrollbar{width:8px}.panel-25::-webkit-scrollbar-track{background:#1a1a1a;border-radius:4px}.panel-25::-webkit-scrollbar-thumb{background:#333;border-radius:4px}.panel-25::-webkit-scrollbar-thumb:hover{background:#444}.App{background:linear-gradient(135deg,#0a0a0a,#1a1a1a);color:#e0e0e0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;min-height:100vh}.dashboard-container{display:flex;gap:7px;margin:0 auto;max-width:1800px;padding:12px}.panel-25{flex:0 0 25%;min-width:300px}.panel-50{display:flex;flex:0 0 50%;flex-direction:column;gap:15px;min-width:400px}.gcode-section{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#14141499;border:1px solid #ffffff1a;border-radius:16px;height:85%;padding:20px}.gcode-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:15px}.gcode-header h2{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#4ecdc4,#45b7d1);-webkit-background-clip:text;font-size:1.5rem;font-weight:600;margin:0}.file-upload-container{align-items:center;display:flex;gap:12px}.file-upload-label{align-items:center;background:linear-gradient(135deg,#4ecdc4,#45b7d1);border-radius:8px;color:#fff;cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:500;gap:8px;padding:10px 20px;transition:all .3s ease}.file-upload-label:hover{box-shadow:0 4px 12px #4ecdc44d;transform:translateY(-2px)}.file-input{display:none}.file-name{color:#4ecdc4}.file-name,.loading-text{font-size:.85rem;font-weight:500}.loading-text{color:#ffd93d}.viewer-instructions{background:#4ecdc41a;border:1px solid #4ecdc433;border-radius:8px;margin-bottom:12px;padding:1px}.instructions-row{display:flex;gap:15px;justify-content:space-around}.instruction-item{align-items:center;color:#b0b0b0;display:flex;font-size:.85rem;gap:8px}.instruction-item .icon{font-size:1.2rem}.instruction-item strong{color:#4ecdc4;font-weight:600}.viewer-container{background:#0a0a0a;border:1px solid #4ecdc433;border-radius:12px;height:400px;overflow:hidden;position:relative}.viewer-container.compact{height:350px}.empty-viewer{align-items:center;color:#666;display:flex;flex-direction:column;height:100%;justify-content:center}.empty-viewer svg{margin-bottom:15px;opacity:.5}.empty-viewer p{font-size:1rem;margin:5px 0}.supported-formats{color:#888;font-size:.85rem}.command-status-box{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#14141499;border:1px solid #ffffff1a}.command-status-content{gap:15px}.command-icon{background:linear-gradient(135deg,#4ecdc4,#45b7d1)}.command-icon svg{stroke:#fff;stroke-width:2}.command-label{font-size:.75rem;letter-spacing:.5px}.command-value{color:#e0e0e0;font-family:Courier New,monospace;font-size:1rem;font-weight:500}.command-indicator{flex-shrink:0;justify-content:center}.pulse-dot{animation:pulse 2s infinite;background:#4ecdc4}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.2)}}@media (max-width:1400px){.dashboard-container{flex-direction:column}.panel-25,.panel-50{flex:1 1 100%;min-width:100%}.viewer-container.compact{height:400px}}@media (max-width:768px){.dashboard-container{gap:15px;padding:10px}.gcode-header{gap:12px}.file-upload-container,.gcode-header{align-items:flex-start;flex-direction:column}.file-upload-container{width:100%}.file-upload-label{justify-content:center;width:100%}.instructions-row{flex-direction:column;gap:8px}.viewer-container.compact{height:300px}.command-status-content{flex-direction:column;text-align:center}.command-text{align-items:center}}.sensor-panel{background:linear-gradient(135deg,#1a1a1a,#2a2a2a);border:1px solid #333;border-radius:12px;box-shadow:0 8px 32px #0006;margin-bottom:1px;overflow:hidden;padding:20px}.panel-header{padding-bottom:5px}.panel-header h3{font-weight:400}.live-indicator{align-items:center;background:#4ecdc41a;border:1px solid #4ecdc44d;border-radius:12px;color:#4ecdc4;display:flex;font-size:11px;font-weight:600;gap:6px;letter-spacing:1px;padding:4px 10px}.pulse{background-color:#666;border-radius:50%;height:8px;transition:all .3s ease;width:8px}.pulse.active{animation:pulse-animation 2s infinite;background-color:#4ecdc4;box-shadow:0 0 8px #4ecdc4cc}.no-connection{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:40px 20px;text-align:center}.no-connection svg{stroke:#444;margin-bottom:15px}.no-connection p{color:#666;font-size:14px}.loading-spinner-small{height:40px;margin-bottom:15px;width:40px}.sensors-container{display:flex;flex-direction:column;gap:8px;margin-bottom:50px}.sensor-row{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(2,1fr)}.sensor-row.single{grid-template-columns:1fr;max-width:50%}.sensor-card{align-items:center;background-color:#1a1a1a;border:1px solid #333;border-left-width:4px;border-radius:8px;display:flex;gap:10px;overflow:hidden;padding:10px 12px;position:relative;transition:all .3s ease}.sensor-card:before{background:linear-gradient(135deg,#0000,#ff8c420d);bottom:0;content:"";left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .3s ease}.sensor-card:hover{background-color:#222;box-shadow:0 4px 12px #ff8c4233;transform:translateY(-2px)}.sensor-card:hover:before{opacity:1}.sensor-card.highlight{background:linear-gradient(135deg,#2a2a2a,#1f1f1f);border-left-color:#ff8c42}.sensor-icon{align-items:center;border-radius:8px;display:flex;flex-shrink:0;height:34px;justify-content:center;position:relative;width:34px;z-index:1}.sensor-icon svg{height:18px;width:18px}.temp-icon{background:#ff6b6b26;border:1px solid #ff6b6b4d}.temp-icon svg{stroke:#ff6b6b}.avg-icon{background:#ff8c4226;border:1px solid #ff8c424d}.avg-icon svg{stroke:#ff8c42}.oxygen-icon{background:#4ecdc426;border:1px solid #4ecdc44d}.oxygen-icon svg{stroke:#4ecdc4}.layers-icon{background:#4ecdc426;border:1px solid #4ecdc44d}.layers-icon svg{stroke:#4ecdc4}.sensor-info{display:flex;flex:1 1;flex-direction:column;gap:3px;position:relative;z-index:1}.sensor-label{color:#888;font-size:11px;font-weight:500;letter-spacing:.5px;text-transform:uppercase}.sensor-value{color:#e0e0e0;font-family:Courier New,monospace;font-size:16px;font-weight:700;letter-spacing:-.5px}@media (max-width:1400px){.sensor-row{grid-template-columns:repeat(2,1fr)}.sensor-row.single{max-width:100%}}@media (max-width:640px){.sensor-panel{padding:15px}.sensor-row{gap:10px;grid-template-columns:1fr}.sensor-row.single{max-width:100%}.panel-header h3{font-size:18px}.sensor-value{font-size:15px}.sensor-card{padding:10px}.sensor-icon{height:30px;width:30px}}.command-status-box{background:linear-gradient(135deg,#1a1a1a,#2d2d2d);border:1px solid #ff8c42;border-radius:12px;box-shadow:0 4px 6px #0000004d,0 0 20px #ff8c421a;margin-bottom:20px;overflow:hidden;padding:16px 20px;position:relative}.command-status-box:before{animation:shimmer 3s ease-in-out infinite;background:linear-gradient(90deg,#ff8c42,#ffb366,#ff8c42);background-size:200% 100%;content:"";height:3px;left:0;position:absolute;right:0;top:0}@keyframes shimmer{0%,to{background-position:200% 0}50%{background-position:-200% 0}}.command-status-content{align-items:center;display:flex;gap:16px}.command-icon{align-items:center;background:linear-gradient(135deg,#ff8c42,#ffb366);border-radius:10px;box-shadow:0 4px 12px #ff8c424d;display:flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.command-icon svg{stroke:#1a1a1a;stroke-width:2.5}.command-text{display:flex;flex:1 1;flex-direction:column;gap:4px}.command-label{color:#888;font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase}.command-value{color:#ff8c42;font-family:Monaco,Courier New,monospace;font-size:18px;font-weight:700;letter-spacing:.5px}.command-indicator{align-items:center;display:flex;gap:8px}.pulse-dot{animation:pulse-animation 2s ease-in-out infinite;box-shadow:0 0 10px #ff8c4280;height:12px;position:relative;width:12px}.pulse-dot,.pulse-dot:before{background:#ff8c42;border-radius:50%}.pulse-dot:before{animation:pulse-ring 2s ease-out infinite;content:"";height:100%;opacity:.6;position:absolute;width:100%}@keyframes pulse-animation{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.1)}}@keyframes pulse-ring{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(2.5)}}@media (max-width:768px){.command-status-box{overflow:wrap;padding:12px 16px}.command-icon{height:36px;width:36px}.command-icon svg{height:18px;width:18px}.command-label{font-size:10px}.command-value{font-size:16px}}.control-panel{background:linear-gradient(135deg,#1a1a1a,#2a2a2a);border:1px solid #333;border-radius:12px;box-shadow:0 8px 32px #0006;display:flex;flex-direction:column;overflow:hidden}.panel-header{align-items:center;background:linear-gradient(135deg,#1a1a1a,#252525);border-bottom:2px solid #333;display:flex;flex-shrink:0;gap:12px;padding:15px 20px}.panel-header.sticky{position:-webkit-sticky;position:sticky;top:0;z-index:10}.panel-header svg{stroke:#ff8c42;flex-shrink:0}.panel-header h3{color:#ff8c42;flex:1 1;font-size:20px;font-weight:600;margin:0}.warning-badge{background:linear-gradient(135deg,#ff6b6b,#c92a2a);border-radius:12px;color:#fff;font-size:12px;font-weight:600;padding:4px 12px}.control-content{flex:1 1;overflow-x:hidden;overflow-y:auto;padding:15px 20px}.control-content::-webkit-scrollbar{width:8px}.control-content::-webkit-scrollbar-track{background:#1a1a1a;border-radius:4px}.control-content::-webkit-scrollbar-thumb{background:#ff8c42;border-radius:4px}.control-content::-webkit-scrollbar-thumb:hover{background:#ff7a2e}.no-connection-control{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:40px 20px;text-align:center}.no-connection-control svg{stroke:#666;margin-bottom:15px}.no-connection-control p{color:#888;font-size:14px}.control-section{margin-bottom:20px}.control-section:last-child{margin-bottom:0}.section-title{align-items:center;border-bottom:1px solid #333;color:#ff8c42;display:flex;font-size:15px;font-weight:600;gap:8px;margin-bottom:10px;padding-bottom:8px}.section-title svg{stroke:#ff8c42;flex-shrink:0}.button-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(3,1fr)}.control-btn{align-items:center;background:linear-gradient(135deg,#2a2a2a,#1f1f1f);border:1px solid #444;border-radius:6px;color:#e0e0e0;cursor:pointer;display:flex;font-size:13px;font-weight:500;gap:6px;justify-content:center;padding:10px 12px;transition:all .3s ease;white-space:nowrap}.control-btn:hover:not(:disabled){border-color:#ff8c42;box-shadow:0 4px 12px #ff8c424d;color:#ff8c42;transform:translateY(-2px)}.control-btn:disabled{cursor:not-allowed;opacity:.5}.control-btn svg{stroke:currentColor;flex-shrink:0}.control-btn span{font-size:14px;font-weight:700}.control-btn.primary{background:linear-gradient(135deg,#ff8c42,#ff6b35);border-color:#ff8c42;color:#fff}.control-btn.primary:hover:not(:disabled){background:linear-gradient(135deg,#ff7a2e,#ff5921);box-shadow:0 4px 12px #ff8c4280}.control-btn.success{background:linear-gradient(135deg,#4ecdc4,#44a08d);border-color:#4ecdc4;color:#fff}.control-btn.success:hover:not(:disabled){background:linear-gradient(135deg,#3db8af,#3a8f7e)}.control-btn.danger{background:linear-gradient(135deg,#ff6b6b,#c92a2a);border-color:#ff6b6b;color:#fff}.control-btn.danger:hover:not(:disabled){background:linear-gradient(135deg,#ff5757,#b52626)}.control-btn.warning{background:linear-gradient(135deg,#ffd93d,orange);border-color:#ffd93d;color:#1a1a1a;font-weight:600}.control-btn.warning:hover:not(:disabled){background:linear-gradient(135deg,#ffc929,#ff9500)}.control-btn.test{background:linear-gradient(135deg,#c084fc,#9333ea);border-color:#c084fc;color:#fff}.control-btn.test:hover:not(:disabled){background:linear-gradient(135deg,#b070f2,#8326d6)}.control-btn.special{background:linear-gradient(135deg,#45b7d1,#2e86ab);border-color:#45b7d1;color:#fff}.control-btn.special:hover:not(:disabled){background:linear-gradient(135deg,#3aa3bd,#2a7a9a)}.control-btn.full{width:100%}.input-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(2,1fr)}.input-group{display:flex;flex-direction:column;gap:6px}.input-group.full-width{grid-column:1/-1}.input-group label{color:#b0b0b0;font-size:12px;font-weight:500;white-space:nowrap}.input-with-button{align-items:stretch;display:flex;gap:6px}.input-group input{background-color:#1a1a1a;border:1px solid #444;border-radius:6px;color:#e0e0e0;flex:1 1;font-size:13px;min-width:0;padding:8px 10px;transition:all .3s ease;width:3%}.input-group input:focus{border-color:#ff8c42;box-shadow:0 0 0 3px #ff8c421a;outline:none}.input-group input::placeholder{color:#666;font-size:12px}.send-btn{align-items:center;background:linear-gradient(135deg,#ff8c42,#ff6b35);border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;flex-shrink:0;justify-content:center;padding:8px 12px;transition:all .3s ease}.send-btn:hover:not(:disabled){box-shadow:0 4px 12px #ff8c4266;transform:translateY(-2px)}.send-btn:disabled{cursor:not-allowed;opacity:.5}.send-btn svg{stroke:currentColor}.loading-spinner-small{animation:spin 1s linear infinite;border:3px solid #333;border-radius:50%;border-top-color:#ff8c42;height:30px;margin:0 auto 10px;width:30px}@keyframes spin{to{transform:rotate(1turn)}}@media (max-width:1600px){.button-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:1400px){.control-panel{max-height:calc(100vh - 380px)}}@media (max-width:1200px){.input-grid{grid-template-columns:1fr}}@media (max-width:968px){.control-panel{max-height:none}.button-grid{grid-template-columns:repeat(3,1fr)}.input-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.control-content,.panel-header{padding:12px 15px}.panel-header h3{font-size:18px}.button-grid{gap:6px;grid-template-columns:repeat(2,1fr)}.control-btn{font-size:12px;padding:8px 10px}.input-grid{gap:8px;grid-template-columns:1fr}.input-group input{font-size:12px;padding:7px 8px}.send-btn{padding:7px 10px}.section-title{font-size:14px}}@media (max-width:480px){.button-grid{grid-template-columns:1fr}.control-btn{width:100%}}.last-command{background:#f8f9fa;border-left:4px solid #007bff;border-radius:6px;color:#333;font-size:.95rem;margin:8px 0;padding:8px 12px}.last-command span{color:#007bff;font-weight:600;margin-left:4px}.connection-panel{background:linear-gradient(135deg,#1a1a1a,#2a2a2a);border-bottom:2px solid #333;box-shadow:0 4px 12px #0006;padding:15px 20px}.logo{height:43px;width:49px}.connection-content{align-items:center;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin:0 auto;max-width:1800px}.connection-left{align-items:center;display:flex;gap:12px}.connection-left svg{stroke:#ff8c42}.connection-left h3{color:#ff8c42;font-size:20px;font-weight:600;margin:0}.connection-controls{align-items:center;display:flex;flex-wrap:wrap;gap:20px}.device-input-group{align-items:center;display:flex;gap:10px}.device-input{background-color:#1a1a1a;border:1px solid #444;border-radius:8px;color:#e0e0e0;font-size:14px;min-width:200px;padding:10px 16px;transition:all .3s ease}.device-input:focus{border-color:#ff8c42;box-shadow:0 0 0 3px #ff8c421a;outline:none}.device-input:disabled{cursor:not-allowed;opacity:.6}.device-input::placeholder{color:#666}.connect-btn,.disconnect-btn{align-items:center;border:none;border-radius:8px;cursor:pointer;display:flex;font-size:14px;font-weight:600;gap:8px;padding:10px 20px;transition:all .3s ease}.connect-btn{background:linear-gradient(135deg,#4ecdc4,#44a08d);color:#fff}.connect-btn:hover:not(:disabled){box-shadow:0 4px 12px #4ecdc466;transform:translateY(-2px)}.connect-btn:disabled{cursor:not-allowed;opacity:.5}.disconnect-btn{background:linear-gradient(135deg,#ff6b6b,#c92a2a);color:#fff}.disconnect-btn:hover{box-shadow:0 4px 12px #ff6b6b66;transform:translateY(-2px)}.connect-btn svg,.disconnect-btn svg{stroke:currentColor}.status-indicator{align-items:center;background-color:#1a1a1a;border:1px solid #333;border-radius:8px;display:flex;gap:8px;padding:8px 16px}.status-dot{animation:pulse-status 2s infinite;border-radius:50%;height:10px;width:10px}.status-dot.connected{background-color:#4ecdc4;box-shadow:0 0 8px #4ecdc499}.status-dot.disconnected{background-color:#666}@keyframes pulse-status{0%,to{opacity:1}50%{opacity:.5}}.status-text{color:#e0e0e0;font-size:14px;font-weight:500}@media (max-width:968px){.connection-content{align-items:flex-start;flex-direction:column}.connection-controls{align-items:stretch;flex-direction:column;width:100%}.device-input-group{width:100%}.device-input{flex:1 1;min-width:0}.status-indicator{justify-content:center;width:100%}}
/*# sourceMappingURL=main.3c29986b.css.map*/