.graph-container{background-color:#f5f5f5;cursor:crosshair;height:100vh;position:relative;transition:background-color .3s ease;width:100%}.graph-container.visualizing{background-color:#e2e5ea}.graph-node{align-items:center;background-color:#3498db;border-radius:50%;color:#fff;display:flex;font-size:16px;font-weight:700;height:34px;justify-content:center;position:absolute;transform:translate(-50%,-50%);width:34px}.node-number{pointer-events:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.graph-node:hover{filter:brightness(1.1)}.graph-node.delete-mode{animation:pulse-danger .5s infinite alternate;background-color:#ff6b6b!important;border-color:#ff6b6b!important}@keyframes pulse-danger{0%{transform:translate(-50%,-50%) scale(1)}to{transform:translate(-50%,-50%) scale(1.1)}}.graph-node.start-node{animation:pulse-start 1.5s infinite;background-color:#2ecc71;border-color:#27ae60;box-shadow:0 0 0 3px #2ecc714d}.graph-node.end-node{animation:pulse-end 1.5s infinite;background-color:#e74c3c;border-color:#c0392b;box-shadow:0 0 0 3px #e74c3c4d}@keyframes pulse-start{0%{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.05)}to{transform:translate(-50%,-50%) scale(1)}}@keyframes pulse-end{0%{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.05)}to{transform:translate(-50%,-50%) scale(1)}}.edge{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.edge,.edge-container{pointer-events:none}.edge line{stroke:#7f8c8d;stroke-width:2px}.temp-edge line{stroke:#3498db;stroke-dasharray:5,5;stroke-width:2px}svg{height:100%;left:0;position:absolute;top:0;width:100%}svg marker#arrowhead{fill:#7f8c8d}.weight-circle{pointer-events:auto;transition:all .2s}.weight-circle:hover{stroke-width:2px;fill:#f8f9fa}.weight-text{pointer-events:none;-webkit-user-select:none;user-select:none}.weight-input,.weight-text{font-size:12px;font-weight:700}.weight-input{background:#0000;border:none;height:100%;outline:none;pointer-events:auto;text-align:center;width:100%}.graph-container.visualizing .graph-node:hover,.graph-container.visualizing .weight-circle:hover,.graph-container.visualizing:hover{cursor:not-allowed}.graph-container.alt-key-active{cursor:grab}.graph-container.moving-node:active{cursor:grabbing}.controls-container{align-items:center;display:flex;flex-direction:column;gap:.8rem}.controls-icon-row{gap:1rem;width:100%}.control-button,.controls-icon-row{display:flex;justify-content:center}.control-button{align-items:center;border:none;border-radius:8px;cursor:pointer;font-size:2rem;height:3.5rem;padding:.25rem;transition:all .2s;width:3.5rem}.control-button:disabled{cursor:not-allowed;opacity:.6}.run-button{background-color:#2ecc71;color:#fff}.stop-button{background-color:#e74c3c;color:#fff}.clear-button{background-color:#f1c40f;color:#fff}.input-group{display:flex;flex-direction:column;gap:.3rem;width:100%}.algorithm-select,.node-input{background:#fff;border:2px solid #bdc3c7;border-radius:6px;font-size:.8rem;padding:.2rem;transition:all .2s}.node-input:disabled{cursor:not-allowed;opacity:.6}.algorithm-select:focus,.node-input:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db40;outline:none}.algorithm-section{max-width:300px;width:100%}.algorithm-section .input-label{display:block;text-align:left}.node-inputs{display:flex;gap:1.5rem;justify-content:center;max-width:500px}.input-group.invalid .algorithm-select,.input-group.invalid .node-input{animation:shake .5s;border-color:#ff4757}@keyframes shake{0%,to{transform:translateX(0)}25%{transform:translateX(8px)}75%{transform:translateX(-8px)}}.control-button:hover:not(:disabled){box-shadow:0 2px 8px #00000026;transform:translateY(-2px)}.empty-graph-message{background-color:#f9f9f9;border-radius:8px;color:#1c1c1e;font-size:1.1rem;line-height:2rem;padding:.6rem 3rem;text-align:center}.empty-graph-message .title{font-size:2rem;line-height:1rem;padding:0}.app{display:flex;flex-direction:column;height:100vh}.app-header{background:#2c3e50;color:#fff;display:flex;justify-content:center;padding:1rem;text-align:center}.app-content{flex:1 1;overflow:hidden;position:relative}.source{left:6px;text-decoration:underline;top:2px}.guide,.source{color:#09001f;position:absolute}.guide{bottom:2px;left:0}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;padding:0}
/*# sourceMappingURL=main.3b618abe.css.map*/