.anti-sway{background:#fff;border:1px solid #ddd;border-radius:.2vw;padding:.5rem;flex:3 1;display:flex;flex-direction:column;position:relative}.anti-sway-content{display:flex;gap:1rem;align-items:stretch}.toggle-section{display:flex;flex:1 1;gap:.4vw}.toggle-button{display:flex;flex:1 1;flex-direction:row;align-items:center;justify-content:center;gap:.2vw;padding:.5rem .8rem;background:#f8f9fa;border:1px solid #ddd;border-radius:.2vw;cursor:pointer;transition:all .3s ease;font-size:1.3rem;color:#333;min-height:44px;height:44px;position:relative}.toggle-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 2px 4px rgba(0,0,0,.1)}.toggle-button:disabled{opacity:.6;cursor:not-allowed}.toggle-button.active{background:linear-gradient(135deg,#28a745,#1e7e34);color:#fff;border-color:#1e7e34;box-shadow:0 0 10px rgba(40,167,69,.4)}.toggle-button.off.active{background:linear-gradient(135deg,#dc3545,#c82333);border-color:#c82333;box-shadow:0 0 10px rgba(220,53,69,.4)}.toggle-indicator{width:1.04vw;height:1.04vw;border-radius:50%;background:#ccc;border:2px solid #999;transition:all .3s ease}.toggle-indicator.active{background:#fff;border-color:#fff;box-shadow:0 0 10px hsla(0,0%,100%,.8)}.position-displays{display:flex;flex:1 1;gap:.4vw}.position-display{background:#f8f9fa;color:#333;padding:.4vw 1rem;border-radius:.2vw;text-align:center;flex:1 1;display:flex;flex-direction:row;justify-content:center;align-items:center}.position-label{font-size:1.3rem;color:#333;margin-right:.5vw}.position-value{font-size:1.3rem;font-weight:600;color:#f39c12}.control{background:#fff;border:1px solid #ddd;border-radius:.2vw;flex:7 1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.control-header{display:flex;justify-content:space-between;align-items:center;flex-shrink:0;padding:.5rem}.settings-icon{background:none;border:none;font-size:1.5rem!important;cursor:pointer!important;transition:opacity .2s}.control-content{position:relative;display:flex;flex-direction:row;gap:.5vw;align-items:stretch;flex:1 1;min-height:0;overflow:hidden;padding:0 .5rem .5rem}.direction-controls{display:flex;justify-content:center;flex-shrink:0;flex-direction:column;justify-content:space-around}.direction-grid{flex-direction:column;justify-content:space-between}.direction-center,.direction-grid{display:flex;align-items:center;gap:.2vw}.direction-btn{width:4vw;height:4vw;background:linear-gradient(145deg,#b8d4e8,#a0c4dd);border:1px solid #7ba7c4;border-radius:.4vw;cursor:pointer;font-size:1.4vw;color:#333;transition:all .2s;display:flex;align-items:center;justify-content:center}.direction-btn:hover{background:linear-gradient(145deg,#a0c4dd,#8bb4d0)}.direction-btn:active{transform:scale(.95)}.stop-btn{width:4vw;height:4vw;background:#dc3545;border:none;border-radius:.4vw;color:#fff;font-size:1.1vw;font-weight:700;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.stop-btn:hover{background:#c82333}.speed-controls{gap:.4vw;flex-shrink:0}.speed-column,.speed-controls{display:flex;flex-direction:column}.speed-column{align-items:flex-start}.traversing-numbers{display:flex;flex-direction:column;gap:.1vw}.traversing-speed-controls{display:flex;flex-direction:column;justify-content:center;align-items:center}.speed-label{font-size:1.3rem;color:#333;text-align:center;margin-bottom:.2vw;height:1rem;line-height:1rem;white-space:nowrap}.speed-numbers{display:flex;flex-direction:row;gap:.1vw}.speed-number{width:2vw;height:2vw;background:#f8f9fa;border:1px solid #ddd;border-radius:.2vw;display:flex;align-items:center;justify-content:center;font-size:1.3rem;font-weight:600;color:#333;cursor:pointer;transition:all .2s}.speed-number:hover{background:#e9ecef;border-color:#adb5bd}.speed-number.selected{background:linear-gradient(145deg,#28a745,#218838);color:#fff;border-color:#1e7e34;font-weight:600;box-shadow:0 0 .3vw rgba(40,167,69,.5)}.parameters{display:flex;flex-direction:column;gap:.3vw;flex:1 1;min-width:0;overflow:hidden;justify-content:center}.param-header{display:flex;align-items:center;gap:.3vw;padding:.5vw .4vw;background:#e3f2fd;border-radius:.2vw;flex-shrink:0;height:2.5rem}.progress-placeholder{flex-shrink:0}.param-row{gap:.3vw;padding:.5vw .4vw;background:#f8f9fa;border-radius:.2vw;height:2.5rem}.param-label,.param-row{display:flex;align-items:center;flex-shrink:0}.param-label{font-size:1.3rem;font-weight:600;min-width:1.5vw;color:#333;height:100%;min-height:2.5rem;justify-content:center}.param-values{gap:.4vw;flex:1 1}.param-group,.param-values{display:flex;align-items:center;min-width:0}.param-group{flex-direction:column;gap:.1vw;flex:1 1}.param-title{color:#333;line-height:1.1;white-space:nowrap}.param-title,.param-value{font-size:1.3rem;text-align:center}.param-value{font-weight:600;color:#f39c12}.progress-bar{position:relative;height:2.5rem;background:#e0e0e0;border-radius:.2vw;overflow:hidden;flex-shrink:0}.progress-fill{height:100%;background:linear-gradient(90deg,#e74c3c,#f39c12);transition:width .3s}.progress-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:1.3rem;font-weight:600;color:#333}.direction-buttons{display:flex;flex-direction:column;gap:.2vw;flex-shrink:0}.dir-btn{width:3.125vw;height:2.34vw;border-radius:.4vw;border:1px solid #7ba7c4;font-size:1.11rem;font-weight:700;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.dir-btn.c,.dir-btn.d,.dir-btn.o,.dir-btn.u{background:linear-gradient(145deg,#b8d4e8,#a0c4dd);color:#fff}.dir-btn.stop-red{background:#dc3545;color:#fff;border:none}.dir-btn:hover{opacity:.9;transform:translateY(-2px)}.dir-btn:active{transform:scale(.95)}.info-display{flex-direction:column;gap:.3vw;min-width:7vw;overflow:hidden}.info-display,.info-row{display:flex;flex-shrink:0}.info-row{justify-content:space-between;padding:.3vw .5vw;background:#fff8e1;border-radius:.2vw}.info-label{font-size:1.3rem;color:#333;white-space:nowrap}.info-value{font-size:1.3rem;font-weight:600;color:#f39c12}.control-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.control-modal-content{background:#fff;width:500px;max-width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 4px 20px rgba(0,0,0,.15)}.control-modal-header{background-color:#d0d0d0;padding:10px 20px;border-bottom:1px solid #999;display:flex;justify-content:space-between;align-items:center}.control-modal-header h2{margin:0;font-size:1.3rem;font-weight:600;color:#333}.control-modal-close{background:none;border:none;font-size:1.11rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;color:#333;font-weight:600}.control-modal-close:hover{color:#333}.control-modal-body{padding:24px}.control-modal-section{margin-bottom:20px}.control-section-title{font-size:1.3rem;font-weight:600;color:#333;margin:0 0 20px;padding-bottom:10px;border-bottom:1px dotted #ddd}.control-form-row{display:flex;align-items:center;margin-bottom:1rem;gap:12px}.control-form-row label{flex:0 0 140px;font-size:1.3rem;color:#333;min-width:150px;text-align:left}.control-form-row input{flex:1 1;padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:1.3rem;text-align:right}.control-form-row input:focus{outline:none;border-color:#007bff}.control-unit{flex:0 0 40px;font-size:1.3rem;color:#333}.control-modal-footer{justify-content:flex-end;gap:12px;padding:1rem 20px;display:flex;align-items:center;background-color:#d0d0d0}.control-modal-btn{padding:10px 20px;border:none;font-size:1.3rem;cursor:pointer;border-radius:0}.control-modal-btn.cancel{background:#dc3545;color:#fff}.control-modal-btn.cancel:hover{background:#c82333}.control-modal-btn.save{background:#007bff;color:#fff}.control-modal-btn.save:hover{background:#0056b3}@media (max-width:600px){.control-modal-content{width:95%}.control-form-row{flex-direction:column;align-items:flex-start}.control-form-row label{flex:none}.control-form-row input{width:100%}}.crane-selector{background:#fff;border:1px solid #ddd;border-radius:.2vw;padding:.5rem;flex:0.5 1;display:flex;flex-direction:column;position:relative}.crane-buttons{display:flex;gap:1rem}.crane-button{flex:1 1;padding:.5rem .8rem;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:.3vw;background:#f8f9fa;border:1px solid #ddd;border-radius:.2vw;cursor:pointer;transition:all .3s ease;font-size:1.3rem;min-height:44px;height:44px;position:relative;color:#333}.crane-button:hover:not(:disabled){background:#e9ecef;transform:translateY(-2px);box-shadow:0 2px 4px rgba(0,0,0,.1)}.crane-button:disabled{opacity:.6;cursor:not-allowed}.crane-button.active{background:linear-gradient(135deg,#d4edda,#c3e6cb);border-color:#28a745;box-shadow:0 0 10px rgba(40,167,69,.3)}.crane-indicator{width:1.2vw;height:1.2vw;border-radius:50%;background:#ccc;border:2px solid #999;transition:all .3s ease}.crane-indicator.active{background:#28a745;border-color:#1e7e34;box-shadow:0 0 10px rgba(40,167,69,.6)}.header{background-color:#333;color:#fff;padding:.4vw 1.25vw;justify-content:space-between;border-bottom:2px solid #34495e}.header,.header-left{display:flex;align-items:center}.header-left{gap:2rem;flex-shrink:0}.header-logo{height:40px;width:auto;object-fit:contain}.header-operator-section{display:grid;grid-template-columns:auto auto auto auto auto;grid-gap:1rem;gap:1rem;align-items:center;background:hsla(0,0%,100%,.08);padding:.5rem 1.5rem;border-radius:8px;border:1px solid hsla(0,0%,100%,.15)}.operator-label{font-size:1.3rem;font-weight:600;color:hsla(0,0%,100%,.7)}.operator-name-display{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:.4rem 1rem;border-radius:6px;font-size:1.3rem;font-weight:600;min-width:100px;text-align:center;box-shadow:0 2px 6px rgba(102,126,234,.3)}.operator-time-label{font-size:1.3rem;font-weight:600;color:hsla(0,0%,100%,.7)}.operator-time-display{font-size:1.3rem;font-weight:600;color:#fff;font-family:Pretendard,monospace;background:hsla(0,0%,100%,.1);padding:.4rem .8rem;border-radius:6px;min-width:90px;text-align:center}.operator-change-btn{background:hsla(0,0%,100%,.15);color:#fff;border:1px solid hsla(0,0%,100%,.25);border-radius:6px;padding:.4rem 1rem;font-size:1.3rem;font-weight:600;cursor:pointer;transition:all .3s ease;white-space:nowrap}.operator-change-btn:hover:not(:disabled){background:hsla(0,0%,100%,.25);border-color:hsla(0,0%,100%,.4);transform:translateY(-1px)}.operator-change-btn:disabled{opacity:.4;cursor:not-allowed}.header-right{display:flex;align-items:center;gap:.83vw;flex-shrink:0}.header-datetime{font-size:1.3rem;font-weight:500;background:hsla(0,0%,100%,.08);padding:.4rem .8rem;border-radius:6px}.header-settings{background:none;border:none;color:#fff;font-size:1.5rem!important;cursor:pointer!important;transition:opacity .2s}.header-settings:hover{opacity:.7}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background-color:#d0d0d0;border-radius:0;width:90%;max-width:1050px;box-shadow:0 4px 20px rgba(0,0,0,.3);position:relative}.modal-header{background-color:#d0d0d0;padding:10px 20px;border-bottom:1px solid #999;display:flex;justify-content:space-between;align-items:center}.modal-title{font-size:1.3rem;margin:0}.modal-close,.modal-title{font-weight:600;color:#333}.modal-close{background:none;border:none;font-size:1.11rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.modal-close:hover{color:#666}.modal-body{display:flex;gap:10px;padding:10px;background:#fff}.modal-section{flex:1 1;border:1px solid #999;padding:20px;background-color:#fff}.section-title{font-size:1.3rem;font-weight:600;margin:0 0 20px;padding-bottom:10px;border-bottom:1px solid #ddd;color:#333}.form-group{display:flex;align-items:center;margin-bottom:1rem}.form-group label{font-size:1.3rem;color:#333;min-width:150px;text-align:left}.input-with-unit{display:flex;align-items:center;gap:8px;flex:1 1}.input-with-unit input{flex:1 1;padding:8px 12px;border:1px solid #999;border-radius:0;font-size:1.3rem;text-align:right;background-color:#fff}.input-with-unit input:focus{outline:none;border-color:#666}.input-with-unit .unit{font-size:1.3rem;color:#333;font-weight:500;min-width:50px}.modal-footer{padding:1rem 20px;display:flex;justify-content:space-between;align-items:center;background-color:#d0d0d0}.btn-sample{padding:10px 24px;border:1px solid #666;background-color:#666;color:#fff;font-size:1.3rem;cursor:pointer;border-radius:0;font-weight:500}.btn-sample:hover{background-color:#333}.modal-actions{display:flex;gap:12px}.modal-actions button{padding:10px 20px;border:none;font-size:1.3rem;border-radius:0;cursor:pointer;transition:all .2s}.btn-cancel{background-color:#dc3545;color:#fff}.btn-cancel:hover{background-color:#c82333}.btn-save{background-color:#007bff;color:#fff}.btn-save:hover{background-color:#0056b3}@media (max-width:1600px){.modal-content{max-width:970px}.form-group label{min-width:150px;font-size:1.3rem}.input-with-unit input{font-size:1.3rem}}@media (max-width:1366px){.modal-content{max-width:900px}.form-group label{min-width:120px}}.alert-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:10000}.alert-modal-content{background:#fff;border-radius:.4vw;padding:2vw;min-width:20vw;max-width:30vw;box-shadow:0 .5vw 2vw rgba(0,0,0,.3);display:flex;flex-direction:column;align-items:center;gap:1.2vw}.alert-modal-icon{width:3vw;height:3vw;border-radius:50%;background:linear-gradient(135deg,#28a745,#20873a);color:#fff;display:flex;align-items:center;justify-content:center;font-size:2vw;font-weight:700}.alert-modal-message{font-size:1vw;color:#333;text-align:center;font-weight:500}.alert-modal-btn{padding:.5vw 2vw;background:linear-gradient(135deg,#007bff,#0056b3);color:#fff;border:none;border-radius:.3vw;font-size:1.3rem;font-weight:600;cursor:pointer;transition:all .2s;min-width:8vw}.alert-modal-btn:hover{background:linear-gradient(135deg,#0056b3,#003d82);transform:translateY(-.1vw);box-shadow:0 .3vw 1rem rgba(0,123,255,.3)}.layout-view{background:#fff;border:1px solid #ddd;border-radius:.2vw;flex:7 1;display:flex;flex-direction:column;min-height:0;overflow:hidden;position:relative}.layout-header{display:flex;justify-content:space-between;align-items:flex-start;flex-shrink:0;padding:.5rem}.layout-toggle{display:flex;gap:.2vw;border:1px solid #ddd;border-radius:.2vw;overflow:hidden}.layout-btn{padding:.5vw 1rem;background:#fff;border:none;cursor:pointer;font-size:1.3rem;font-weight:600;transition:all .2s;display:flex;align-items:center;gap:.3vw}.layout-btn:hover{background:#f8f9fa}.layout-btn.active{background:#333;color:#fff}.layout-value{font-size:1.3rem;font-weight:600;color:#f39c12}.layout-btn.active .layout-value{color:gold}.layout-content{position:relative;flex:1 1;background:#d0d0d0;border:1px solid #ddd;border-radius:.2vw;display:flex;align-items:center;justify-content:center;min-height:0}.layout-iframe{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:.2vw}.iframe-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4vw;color:#666;font-size:1.3rem;font-weight:600;pointer-events:none;z-index:1}.layout-footer{flex-shrink:0;margin-top:.4vw}.gate-section{padding:.5vw}.gate-label{min-width:2.5vw}.gates{gap:.5rem}.gate{gap:.5vw}.gate-indicator{width:1vw;height:1vw}.gate-indicator.active{box-shadow:0 0 .4vw rgba(231,76,60,.6)}.gate-text{font-size:1.3rem;color:#333}.action-btn{padding:.2vw .6vw;background:linear-gradient(145deg,#28a745,#218838);color:#fff;border:1px solid #1e7e34;border-radius:.3vw;font-size:1.3rem;cursor:pointer;transition:all .2s;min-width:4vw}.action-btn:hover{background:linear-gradient(145deg,#218838,#1e7e34)}.hopper-section{gap:.5rem;justify-content:center;padding:.5rem;background:#f8f9fa;border-radius:.2vw}.hopper,.hopper-section{display:flex;align-items:center}.hopper{flex-direction:column;gap:.3vw;padding:.5rem 1.25vw;background:#fff;border:2px solid #333;border-radius:.2vw}.hopper-label{font-size:1.3rem;font-weight:600;color:#333}.hopper-indicator{width:.625vw;height:.625vw;border-radius:50%;background:#007bff;border:2px solid #0056b3}.crane-position{width:2.08vw;height:2.08vw;background:#95a5a6;border-radius:.2vw}.grid-layout{display:flex;flex-direction:column;gap:.2vw}.grid-labels-top{display:flex;gap:.1vw;padding-left:1.56vw}.grid-label{flex:1 1;text-align:center;font-size:1.3rem;font-weight:600;color:#333;min-width:2.08vw}.grid-container{display:flex;gap:.2vw}.grid-labels-left{display:flex;flex-direction:column;gap:.1vw;justify-content:space-around}.grid-cells{display:grid;grid-template-columns:repeat(9,1fr);grid-gap:.1vw;gap:.1vw;flex:1 1}.grid-cell{aspect-ratio:1;background:#fff;border:1px solid #ddd;min-width:1.56vw}.grid-cell:nth-child(-n+18){border-bottom:2px solid #e74c3c}.gate-section{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#f8f9fa;border-radius:.2vw}.gate-label{font-size:1.3rem;font-weight:600;color:#333}.gates{display:flex;gap:.83vw;flex:1 1;justify-content:space-around}.gate{display:flex;flex-direction:column;align-items:center;gap:.3vw}.gate-indicator{width:1.25vw;height:1.25vw;border-radius:50%;background:#95a5a6;border:2px solid #7f8c8d}.gate-indicator.active{background:#e74c3c;border-color:#c0392b}.loading-overlay{z-index:100}.action-btn:disabled{cursor:not-allowed;opacity:.6}.layout-setup-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.layout-setup-modal{background:#fff;border-radius:8px;width:90%;max-width:950px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 20px rgba(0,0,0,.15);position:relative}.layout-setup-header{background-color:#d0d0d0;padding:10px 20px;border-bottom:1px solid #999;display:flex;justify-content:space-between;align-items:center}.layout-setup-header h2{margin:0;font-size:1.3rem;font-weight:600;color:#333}.close-btn{background:none;border:none;font-size:1.11rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;color:#333;font-weight:600}.close-btn:hover{color:#333}.layout-setup-content{display:flex;gap:24px;padding:24px;overflow-y:auto;flex:1 1}.layout-setup-section{flex:1 1;display:flex;flex-direction:column}.layout-setup-section h3{margin:0 0 1rem;font-size:1.3rem;font-weight:600;color:#333;padding-bottom:8px;border-bottom:2px solid #e0e0e0}.layout-setup-form{display:flex;flex-direction:column;gap:12px;padding-bottom:1rem}.form-row{display:flex;align-items:center;gap:12px}.form-row label{flex:1 1;font-size:1.3rem;color:#333;min-width:140px}.form-row input[type=number]{flex:1 1;padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:1.3rem;text-align:right;min-width:100px}.form-row input[type=number]:focus{outline:none;border-color:#007bff}.form-row .unit{font-size:1.3rem;color:#666;min-width:40px}.toggle-row,.toggle-switch{align-items:center}.toggle-switch{display:flex;gap:8px;flex:1 1}.toggle-switch span{font-size:1.3rem;color:#999;font-weight:500}.toggle-switch span.active{color:#333;font-weight:600}.toggle{position:relative;width:48px;height:24px;background:#ccc;border:none;border-radius:12px;cursor:pointer;transition:background .3s}.toggle.on{background:#4caf50}.toggle.off{background:#ccc}.toggle-slider{position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .3s}.toggle.on .toggle-slider{transform:translateX(24px)}.gate-row{display:flex;align-items:center;gap:12px}.gate-row label{min-width:100px}.area-btn{padding:6px 1rem;background:#007bff;color:#fff;border:none;border-radius:4px;font-size:1.3rem;cursor:pointer;transition:background .2s;white-space:nowrap}.area-btn:hover{background:#0056b3}.layout-setup-footer{display:flex;justify-content:flex-end;gap:12px;padding:1rem 24px;border-top:1px solid #e0e0e0;background:#d0d0d0}.cancel-btn,.save-btn{padding:10px 20px;border:none;font-size:1.3rem;cursor:pointer;border-radius:0}.cancel-btn{background:#dc3545;color:#fff}.cancel-btn:hover{background:#c82333}.save-btn{background:#007bff;color:#fff}.save-btn:hover{background:#0056b3}.layout-setup-modal .loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.9);display:flex;align-items:center;justify-content:center;z-index:200;border-radius:8px}.layout-setup-modal .spinner{width:3vw;height:3vw;border:4px solid #f3f3f3;border-top-color:#007bff;border-radius:50%;animation:spin 1s linear infinite}.success-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#28a745;color:#fff;padding:20px 40px;border-radius:8px;font-size:1.3rem;font-weight:600;box-shadow:0 4px 12px rgba(0,0,0,.2);z-index:300;animation:fadeInOut 1.5s ease-in-out}@keyframes fadeInOut{0%{opacity:0;transform:translate(-50%,-50%) scale(.8)}20%{opacity:1;transform:translate(-50%,-50%) scale(1)}80%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(.8)}}.cancel-btn:disabled,.save-btn:disabled{cursor:not-allowed;opacity:.6}@media (max-width:768px){.layout-setup-content{flex-direction:column}.form-row{flex-wrap:wrap}.form-row label{min-width:100%}}.manual{background:#fff;border:1px solid #ddd;border-radius:.2vw;padding:.5rem;flex:3 1;display:flex;flex-direction:column;min-height:0;overflow:hidden;position:relative}.manual-header{display:flex;justify-content:space-between;align-items:flex-start;flex-shrink:0}.times-label{font-size:1.3rem;color:#333;font-weight:600}.manual-options{display:flex;flex-direction:column;gap:.3vw;flex:1 1;overflow:hidden;min-height:0}.manual-option{display:flex;align-items:center;gap:.4vw;padding:.3vw .5vw;background:#f8f9fa;border:none;border-radius:.2vw;cursor:pointer;transition:all .2s;font-size:1.3rem;flex-shrink:0;position:relative;text-align:left;width:100%;height:2.5rem;color:#333}.manual-option:hover:not(:disabled){background:#e9ecef}.manual-option:disabled{cursor:not-allowed;opacity:.6}.manual-option.active{background:linear-gradient(135deg,#4a90e2,#357abd);border-color:#357abd;color:#fff;font-weight:600}.manual-option.active:hover{background:linear-gradient(135deg,#357abd,#2c5aa0)}.manual-option.active .radio-indicator{background:#fff;border-color:#fff}.manual-option.active .radio-indicator:after{background:#357abd}.radio-indicator{width:1rem;height:1rem;border:2px solid #adb5bd;border-radius:50%;flex-shrink:0;position:relative;transition:all .2s}.radio-indicator:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:.4vw;height:.4vw;border-radius:50%;background:#4a90e2;opacity:0;transition:opacity .2s}.manual-option.active .radio-indicator:after{opacity:1}.loading-overlay{background:hsla(0,0%,100%,.8);z-index:10}.spinner{width:2vw;height:2vw;border:3px solid #f3f3f3;border-top-color:#4a90e2}.operation-mode{background:#fff;border:1px solid #ddd;border-radius:.2vw;padding:.5rem;flex:1 1;display:flex;flex-direction:column;position:relative}.panel-header{font-size:1.3rem;font-weight:600;color:#333;padding-bottom:.4vw}.mode-buttons{display:flex;gap:.4vw}.mode-button{flex:1 1;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:.3vw;padding:.5rem .8rem;background:#f8f9fa;border:1px solid #ddd;border-radius:.2vw;cursor:pointer;transition:all .3s ease;font-size:1.3rem;min-height:44px;height:44px;position:relative;color:#333}.mode-button:hover:not(:disabled){background:#e9ecef;transform:translateY(-2px);box-shadow:0 2px 4px rgba(0,0,0,.1)}.mode-button:disabled{opacity:.6;cursor:not-allowed}.mode-button.active{background:linear-gradient(135deg,#d4edda,#c3e6cb);border-color:#28a745;box-shadow:0 0 10px rgba(40,167,69,.3)}.mode-button.active[data-mode=reset]{animation:blinkBlue 1s ease-in-out infinite}@keyframes blinkBlue{0%,to{background:linear-gradient(135deg,#cce5ff,#b3d7ff);border-color:#007bff;box-shadow:0 0 1rem rgba(0,123,255,.5)}50%{background:linear-gradient(135deg,#007bff,#0056b3);border-color:#0056b3;box-shadow:0 0 25px rgba(0,123,255,.8)}}.mode-indicator{width:1.25vw;height:1.25vw;border-radius:50%;background:#ccc;border:2px solid #999;transition:all .3s ease}.mode-indicator.active{background:#28a745;border-color:#1e7e34;box-shadow:0 0 10px rgba(40,167,69,.6)}.mode-button.active[data-mode=reset] .mode-indicator.active{background:#007bff;border-color:#0056b3;box-shadow:0 0 10px rgba(0,123,255,.6)}.option{position:relative;flex:5 1;background:#fff;border:1px solid #ddd;border-radius:.2vw;display:flex;gap:.6vw;overflow:hidden;min-height:0}@media (min-width:1024px) and (max-width:1440px){.option{flex:6 1}}.loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000;border-radius:.2vw}.spinner{border:4px solid #f3f3f3;border-top-color:#007bff;border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.option-section{background:#f8f9fa;padding:.5vw;border-radius:.2vw;display:flex;flex-direction:column;gap:.4vw;min-height:0;overflow:hidden}.option-section-left{flex:2 1}.option-section-right{flex:4 1}.option-title{font-size:1.3rem;font-weight:600;color:#333;text-align:center;padding:.3vw;background:#fff;border-radius:.2vw;border:1px solid #dee2e6;flex-shrink:0;height:2.5rem;display:flex;align-items:center;justify-content:center}.option-box{display:flex;flex-direction:row;gap:.5vw;flex:1 1;overflow:hidden}.option-row{gap:.5vw;flex-wrap:nowrap}.hopper-container{display:flex;flex-direction:column;justify-content:space-between}.hopper-box,.option-radio-box{display:flex;flex-direction:row;gap:.4vw}.option-radio-group{height:100%;flex-direction:column;justify-content:space-between}.option-content{display:flex;flex-wrap:wrap;gap:.4vw;align-items:center;flex:1 1;overflow:hidden;min-height:0;align-content:flex-start}.option-btn{padding:.4vw 1rem;background:linear-gradient(145deg,#b8d4e8,#a0c4dd);border:1px solid #7ba7c4;border-radius:.3vw;font-size:1.3rem;font-weight:600;cursor:pointer;transition:all .2s;color:#333;flex-shrink:0;white-space:nowrap}.option-btn:hover{background:linear-gradient(145deg,#a0c4dd,#8bb4d0)}.option-btn.active{outline:2px solid #e53935;background-color:rgba(229,57,53,.12);font-weight:600}.option-btn.primary{background:linear-gradient(145deg,#28a745,#218838);color:#fff;border-color:#1e7e34}.option-btn.primary:hover{background:linear-gradient(145deg,#218838,#1e7e34)}.option-input-wrapper{display:flex;align-items:center;gap:.3vw;flex-shrink:0}.option-label{white-space:nowrap;display:flex;align-items:center}.option-label,.option-unit{font-size:1.3rem;font-weight:600;color:#333}.option-input{width:3vw;padding:.3vw .5vw;border:1px solid #ced4da;border-radius:.2vw;font-size:1.3rem;font-weight:600;text-align:center;background:#fff}.option-input:focus{outline:none;border-color:#80bdff}.option-hopper-group,.option-priority-group{display:flex;align-items:center;gap:.4vw;width:100%;flex-wrap:wrap}.option-toggle-group{display:flex;gap:0;border:1px solid #dee2e6;border-radius:.2vw;overflow:hidden}.option-toggle-btn{padding:.3vw .6vw;background:#fff;border:none;cursor:pointer;font-size:1.3rem;font-weight:600;transition:all .2s;color:#333;width:50%}.option-toggle-btn:not(:last-child){border-right:1px solid #dee2e6}.option-toggle-btn:hover{background:#f8f9fa}.option-toggle-btn.active{background:#333;color:#fff}.option-area-radio{min-width:auto}.option-radio-group{display:flex;gap:.4vw;font-size:.7vw;flex-shrink:0;flex-wrap:wrap}.option-radio-group label{display:flex;align-items:center;gap:.3vw;cursor:pointer;padding:.3vw .5vw;background:#fff;border:1px solid #dee2e6;border-radius:.2vw;transition:all .2s;font-weight:500;white-space:nowrap}.option-radio-group label:hover{background:#f1f3f5;border-color:#adb5bd}.option-radio-group input[type=radio]{cursor:pointer;width:1rem;height:1rem;margin:0;flex-shrink:0}.option-radio-group span{font-size:1.3rem;font-weight:600}.option-section label{display:flex;align-items:center;gap:.3vw;cursor:pointer;padding:.3vw .5vw;background:#fff;border:1px solid #dee2e6;border-radius:.2vw;transition:all .2s;font-weight:500;white-space:nowrap;font-size:1.3rem}.option-section label:hover{background:#f1f3f5;border-color:#adb5bd}.option-section label input[type=radio]{cursor:pointer;width:1rem;height:1rem;margin:0;flex-shrink:0}.option-section label span{font-size:1.3rem;font-weight:600;color:#333}.option-section label input[type=radio]:checked+span{font-weight:600;color:#333}.storage-status{background:#fff;border:1px solid #ddd;border-radius:.2vw;padding:.5rem;display:flex;flex-direction:column;min-height:0;overflow:hidden;flex:3 1}.storage-header{display:flex;justify-content:space-between;align-items:center;flex-shrink:0}.header-actions{display:flex;gap:.3vw;align-items:center}.report-btn{padding:.2vw .6vw;background:#6c757d;color:#fff;border:none;border-radius:.2vw;font-size:1.3rem;cursor:pointer;transition:all .2s}.report-btn:hover{background:#5a6268}.storage-content{gap:.5vw;flex:1 1;overflow:hidden;min-height:0}.storage-left,.storage-right{display:flex;flex-direction:column;gap:.5vw;justify-content:space-between;margin-top:.5vw}.stat-row{display:flex;flex-direction:column;gap:.2vw}.stat-row.no-label{margin-top:0}.stat-label{font-size:1.3rem;font-weight:600;color:#333;line-height:1;margin-bottom:.1vw}.stat-values{display:flex;gap:.5vw;flex-wrap:wrap}.stat-box{display:flex;align-items:center;justify-content:center;gap:.5vw;padding:.4vw .5vw;background:#e0e0e0;border-radius:.15vw;flex:1 1;min-width:4vw;height:2.5rem}.stat-box.highlight{background:#e3f2fd;border:1px solid #90caf9}.stat-box.highlight .stat-value{color:#1976d2}.stat-value{font-weight:600;color:#333}.stat-unit,.stat-value{font-size:1.3rem;line-height:1}.stat-unit{color:#666}.report-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:1000}.report-modal-content{background:#fff;border-radius:8px;width:400px;max-width:90%;box-shadow:0 4px 20px rgba(0,0,0,.15)}.report-modal-header{background-color:#d0d0d0;padding:10px 20px;border-bottom:1px solid #999;display:flex;justify-content:space-between;align-items:center}.report-modal-header h2{margin:0;font-size:1.3rem;font-weight:600;color:#333}.report-close-btn{background:none;border:none;font-size:1.11rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;color:#333;font-weight:600}.report-close-btn:hover{color:#333}.report-modal-body{padding:24px;display:flex;flex-direction:column;gap:20px}.report-form-group{display:flex;flex-direction:column;gap:8px}.report-form-group label{font-size:1.3rem;font-weight:600;color:#333}.report-select{padding:10px 12px;border:1px solid #ddd;border-radius:4px;font-size:1.3rem;color:#333;background:#fff;cursor:pointer;transition:all .2s}.report-select:hover{border-color:#007bff}.report-select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px rgba(0,123,255,.1)}.report-modal-footer{justify-content:flex-end;gap:12px;padding:1rem 20px;display:flex;align-items:center;background-color:#d0d0d0}.report-cancel-btn,.report-generate-btn{padding:10px 20px;border:none;font-size:1.3rem;cursor:pointer;border-radius:0}.report-cancel-btn{background:#6c757d;color:#fff}.report-cancel-btn:hover{background:#5a6268}.report-generate-btn{background:#007bff;color:#fff}.report-generate-btn:hover{background:#0056b3}@media (max-width:1600px){.report-modal-content{width:360px}.report-modal-header h2{font-size:20px}.report-modal-body{padding:20px}}.storage-status-setup-modal{background:#fff;min-width:490px;max-width:90vw;max-height:90vh;overflow:auto;box-shadow:0 4px 20px rgba(0,0,0,.15)}.storage-status-setup-modal .modal-header{background-color:#d0d0d0;padding:10px 20px;border-bottom:1px solid #999;display:flex;justify-content:space-between;align-items:center}.storage-status-setup-modal .modal-header h2{margin:0;font-size:1.3rem;font-weight:600;color:#333}.storage-status-setup-modal .close-btn{background:none;border:none;font-size:1.11rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;color:#333;font-weight:600}.storage-status-setup-modal .close-btn:hover{color:#333}.storage-status-setup-modal .modal-body{padding:24px}.storage-status-setup-modal .form-section{display:flex;flex-direction:column;gap:1rem}.storage-status-setup-modal .section-title{margin:0 0 12px;font-size:1.3rem;font-weight:600;color:#333;padding-bottom:8px;border-bottom:1px dotted #ccc}.storage-status-setup-modal .form-row{display:flex;justify-content:space-between;align-items:center;gap:1rem}.storage-status-setup-modal .form-row label{font-size:1.3rem;color:#333;min-width:140px;flex-shrink:0}.storage-status-setup-modal .input-group{display:flex;align-items:center;gap:8px;flex:1 1}.storage-status-setup-modal .input-group input{flex:1 1;padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:1.3rem;text-align:right;min-width:0}.storage-status-setup-modal .input-group input:focus{outline:none;border-color:#007bff}.storage-status-setup-modal .input-group .unit{font-size:1.3rem;color:#333;min-width:50px}.storage-status-setup-modal .modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:1rem 24px;border-top:1px solid #e0e0e0;background:#d0d0d0}.storage-status-setup-modal .cancel-btn,.storage-status-setup-modal .save-btn{padding:10px 20px;border:none;font-size:1.3rem;cursor:pointer;border-radius:0}.storage-status-setup-modal .cancel-btn{background:#dc3545;color:#fff}.storage-status-setup-modal .cancel-btn:hover{background:#c82333}.storage-status-setup-modal .save-btn{background:#007bff;color:#fff}.storage-status-setup-modal .save-btn:hover{background:#0056b3}@media (max-width:1600px){.storage-status-setup-modal{max-width:430px}.storage-status-setup-modal .form-row label{min-width:120px;font-size:14px}.storage-status-setup-modal .input-group input{padding:6px 10px;font-size:1.3rem}}.system-message{flex:3 1;background:#fff;border:1px solid #ddd;border-radius:.2vw;padding:.5rem;display:flex;flex-direction:column;min-height:0}.system-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.log-data-btn{padding:.2vw .6vw;background:#6c757d;color:#fff;border:none;border-radius:.2vw;font-size:1.3rem;cursor:pointer;transition:all .2s}.log-data-btn:hover{background:#5a6268}.message-list{display:flex;flex-direction:column;gap:.4vw;flex:1 1;overflow-y:auto;max-height:150px}.message-item{padding:.4vw .5rem;background:#f8f9fa;border-left:3px solid #6c757d;border-radius:.2vw;font-size:1.3rem;line-height:1.4}.message-item.info{border-left-color:#28a745}.message-item.err{border-left-color:#dc3545;background:#fff5f5}.message-time{color:#666}.message-item.info .message-type{color:#28a745}.message-item.err .message-type{color:#dc3545}.message-text{color:#666}*{margin:0;padding:0;box-sizing:border-box;font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}html{font-size:clamp(14px,1.5vw,1rem)}body{font-family:Pretendard;font-size:1.3rem}.crane-container{width:100%;min-height:100vh;background:#ecf0f1}.main-grid{padding:.4vw;display:flex;flex-direction:column;gap:.4vw;box-sizing:border-box}.top-row{flex-wrap:nowrap}.middle-row,.top-row{width:100%;display:flex;gap:.4vw}.middle-row{flex:1 1;min-height:0}.bottom-row,.option-row{display:flex;gap:.4vw;width:100%;flex:1 1;min-height:0}.center-column,.right-column{display:flex;flex-direction:column;gap:1rem}.right-column{flex:1 1}::-webkit-scrollbar{width:.4vw;height:.4vw}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:.2vw}::-webkit-scrollbar-thumb{background:#888;border-radius:.2vw}::-webkit-scrollbar-thumb:hover{background:#333}@media (min-width:1024px) and (max-width:1440px){*{font-size:1rem!important}}