: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}html,body{overflow:hidden}.grid{display:flex;flex-direction:column;align-items:center;background-color:#f5f5f5;padding:10px;overflow:hidden;width:100%;box-sizing:border-box;color:#000;-webkit-user-select:none;user-select:none}.row{display:flex;height:22px}.row>div{width:20px;height:20px;margin:1px;transition:background-color .2s ease-in-out;border-radius:3px;cursor:pointer;box-sizing:border-box;position:relative;text-align:center;font-size:.8rem}.unvisited-node{background-color:#fff;border:1px solid #e0e0e0}.unvisited-node:hover{background-color:#f0f0f0;border-color:#ccc}.barrier-node{background-color:#34495e;border:1px solid #2c3e50}.start-node{background-color:#27ae60;border:1px solid #2ecc71}.target-node{background-color:#e74c3c;border:1px solid #c0392b}.visited-node{background-color:#3498db;border:1px solid #2980b9;position:relative}.configureStats{background-color:#80afb4}.visited-node:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:3px;animation:visitedPulse .8s ease-out;pointer-events:none}.path-node{background-color:#f39c12;border:1px solid #e67e22;position:relative}.path-node:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:3px;animation:pathPulse .5s ease-out;pointer-events:none}@keyframes visitedPulse{0%{box-shadow:0 0 #8e44adb3;background-color:#8e44ad66}70%{box-shadow:0 0 0 5px #8e44ad00;background-color:#3498db33}to{box-shadow:0 0 #8e44ad00;background-color:transparent}}@keyframes pathPulse{0%{box-shadow:0 0 #f1c40fb3;background-color:#f1c40f66}70%{box-shadow:0 0 0 5px #f1c40f00;background-color:#f39c1233}to{box-shadow:0 0 #f1c40f00;background-color:transparent}}.drawing-select{display:flex;flex-direction:column;padding:.5rem;background:linear-gradient(to right,#2c3e50,#1a2a38);box-shadow:0 4px 20px #0003;width:100%;box-sizing:border-box;position:relative;top:0}.title{width:100%;text-align:center;margin-bottom:.5rem}.header{font-size:1.5rem;font-weight:700;color:#fff;margin:0;letter-spacing:1px;text-shadow:0 2px 4px rgba(0,0,0,.2);background:linear-gradient(to right,#3498db,#9b59b6);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.controls-container{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;width:100%}.button-group{display:flex;flex-direction:column;background:#ffffff0d;border-radius:8px;padding:.5rem;box-shadow:0 2px 8px #0000001a;min-width:180px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);margin:3px}.button-group-title{font-size:.75rem;font-weight:600;color:#fffc;text-transform:uppercase;letter-spacing:1px;margin-bottom:.4rem;padding-bottom:.3rem;border-bottom:1px solid rgba(255,255,255,.1)}.button-row{display:flex;flex-wrap:wrap;gap:.3rem;margin-bottom:.3rem}.drawing-select button{flex:1;min-width:70px;padding:.4rem .6rem;color:#fff;border:none;border-radius:6px;cursor:pointer;font-weight:600;font-size:.75rem;transition:all .2s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 4px #0000001a;position:relative;overflow:hidden;text-transform:uppercase;letter-spacing:.5px;margin:3px}.drawing-select button:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to bottom,rgba(255,255,255,.1),transparent);opacity:0;transition:opacity .2s ease}.drawing-select button:hover:not(:disabled):before{opacity:1}.drawing-select button:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 6px 12px #00000026}.drawing-select button:active:not(:disabled),.drawing-select button.active{transform:translateY(1px);box-shadow:0 2px 3px #00000026 inset}.drawing-select button.active:after{content:"";position:absolute;bottom:0;left:0;width:100%;height:3px;background:#ffffff80;border-radius:3px}.drawing-select button:disabled{background:#95a5a6!important;cursor:not-allowed;opacity:.6;box-shadow:none!important;transform:none!important;color:#fffc!important}.select-container{position:relative;width:100%;margin-bottom:.3rem;margin:3px}.algorithm-select{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:.5rem .7rem;color:#fff;background-color:#3498db;border:none;border-radius:6px;cursor:pointer;font-weight:600;font-size:.8rem;box-shadow:0 2px 4px #0000001a;transition:all .2s cubic-bezier(.4,0,.2,1)}.algorithm-select:hover:not(:disabled){background-color:#2980b9;box-shadow:0 6px 12px #00000026;transform:translateY(-2px)}.algorithm-select:disabled{background-color:#95a5a6!important;cursor:not-allowed;opacity:.7;box-shadow:0 2px #0000001a!important;border-bottom:3px solid #7f8c8d!important;transform:none!important;color:#fffc!important}.select-container:after{content:"";position:absolute;right:15px;top:50%;transform:translateY(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid white;pointer-events:none}.button-barrier,.drawing-select button[onClick*=barrier-node]{background:linear-gradient(to bottom,#34495e,#2c3e50);border-bottom:3px solid #2c3e50}.button-barrier:hover:not(:disabled),.drawing-select button[onClick*=barrier-node]:hover:not(:disabled){background:linear-gradient(to bottom,#2c3e50,#1a2530)}.button-barrier:active:not(:disabled),.button-barrier.active,.drawing-select button[onClick*=barrier-node]:active:not(:disabled),.drawing-select button[onClick*=barrier-node].active{background:linear-gradient(to bottom,#1a2530,#2c3e50);border-bottom-color:#1a2530}.button-start,.drawing-select button[onClick*=start-node]{background:linear-gradient(to bottom,#27ae60,#219955);border-bottom:3px solid #219955}.button-start:hover:not(:disabled),.drawing-select button[onClick*=start-node]:hover:not(:disabled){background:linear-gradient(to bottom,#219955,#1b7943)}.button-start:active:not(:disabled),.button-start.active,.drawing-select button[onClick*=start-node]:active:not(:disabled),.drawing-select button[onClick*=start-node].active{background:linear-gradient(to bottom,#1b7943,#219955);border-bottom-color:#1b7943}.button-target,.drawing-select button[onClick*=target-node]{background:linear-gradient(to bottom,#e74c3c,#c0392b);border-bottom:3px solid #c0392b}.button-target:hover:not(:disabled),.drawing-select button[onClick*=target-node]:hover:not(:disabled){background:linear-gradient(to bottom,#c0392b,#a82315)}.button-target:active:not(:disabled),.button-target.active,.drawing-select button[onClick*=target-node]:active:not(:disabled),.drawing-select button[onClick*=target-node].active{background:linear-gradient(to bottom,#a82315,#c0392b);border-bottom-color:#a82315}.button-erase,.drawing-select button[onClick*=unvisited-node]{background:linear-gradient(to bottom,#7f8c8d,#6c7a7b);border-bottom:3px solid #6c7a7b}.button-erase:hover:not(:disabled),.drawing-select button[onClick*=unvisited-node]:hover:not(:disabled){background:linear-gradient(to bottom,#6c7a7b,#5c686a)}.button-erase:active:not(:disabled),.button-erase.active,.drawing-select button[onClick*=unvisited-node]:active:not(:disabled),.drawing-select button[onClick*=unvisited-node].active{background:linear-gradient(to bottom,#5c686a,#6c7a7b);border-bottom-color:#5c686a}.button-run,.run-algorithm-button{background:linear-gradient(to bottom,#3498db,#2980b9);border-bottom:3px solid #2980b9}.button-run:hover:not(:disabled),.run-algorithm-button:hover:not(:disabled){background:linear-gradient(to bottom,#2980b9,#1f6da8)}.button-run:active:not(:disabled),.button-run.active,.run-algorithm-button:active:not(:disabled),.run-algorithm-button.active{background:linear-gradient(to bottom,#1f6da8,#2980b9);border-bottom-color:#1f6da8}.button-maze,.drawing-select .generate-maze-button{background:linear-gradient(to bottom,#8e44ad,#7d3c98);border-bottom:3px solid #7d3c98}.button-maze:hover:not(:disabled),.drawing-select .generate-maze-button:hover:not(:disabled){background:linear-gradient(to bottom,#7d3c98,#6a3381)}.button-maze:active:not(:disabled),.button-maze.active,.drawing-select .generate-maze-button:active:not(:disabled),.drawing-select .generate-maze-button.active{background:linear-gradient(to bottom,#6a3381,#7d3c98);border-bottom-color:#6a3381}.button-weights,.drawing-select .generate-weights-button{background:linear-gradient(to bottom,#16a085,#138a72);border-bottom:3px solid #138a72}.button-weights:hover:not(:disabled),.drawing-select .generate-weights-button:hover:not(:disabled){background:linear-gradient(to bottom,#138a72,#0e6655)}.button-weights:active:not(:disabled),.button-weights.active,.drawing-select .generate-weights-button:active:not(:disabled),.drawing-select .generate-weights-button.active{background:linear-gradient(to bottom,#0e6655,#138a72);border-bottom-color:#0e6655}.button-remove-weights,.drawing-select .remove-weights-button{background:linear-gradient(to bottom,#ea3761,#c2162d);border-bottom:3px solid #c2162d}.button-remove-weights:hover:not(:disabled),.drawing-select .remove-weights-button:hover:not(:disabled){background:linear-gradient(to bottom,#c2162d,#a11324)}.button-remove-weights:active:not(:disabled),.button-remove-weights.active,.drawing-select .remove-weights-button:active:not(:disabled),.drawing-select .remove-weights-button.active{background:linear-gradient(to bottom,#a11324,#c2162d);border-bottom-color:#a11324}.button-stats,.configureStats{background:linear-gradient(to bottom,#80afb4,#69979b);border-bottom:3px solid #69979b}.button-stats:hover:not(:disabled),.configureStats:hover:not(:disabled){background:linear-gradient(to bottom,#69979b,#588286)}.button-stats:active:not(:disabled),.button-stats.active,.configureStats:active:not(:disabled),.configureStats.active{background:linear-gradient(to bottom,#588286,#69979b);border-bottom-color:#588286}.button-clear,.drawing-select .clear-visualization-button{background:linear-gradient(to bottom,#e74c3c,#c0392b);border-bottom:3px solid #c0392b}.button-clear:hover:not(:disabled),.drawing-select .clear-visualization-button:hover:not(:disabled){background:linear-gradient(to bottom,#c0392b,#a82315)}.button-clear:active:not(:disabled),.button-clear.active,.drawing-select .clear-visualization-button:active:not(:disabled),.drawing-select .clear-visualization-button.active{background:linear-gradient(to bottom,#a82315,#c0392b);border-bottom-color:#a82315}.button-reset,.drawing-select .reset-grid-button{background:linear-gradient(to bottom,#c0392b,#a82315);border-bottom:3px solid #a82315}.button-reset:hover:not(:disabled),.drawing-select .reset-grid-button:hover:not(:disabled){background:linear-gradient(to bottom,#a82315,#961e12)}.button-reset:active:not(:disabled),.button-reset.active,.drawing-select .reset-grid-button:active:not(:disabled),.drawing-select .reset-grid-button.active{background:linear-gradient(to bottom,#961e12,#a82315);border-bottom-color:#961e12}.status-container{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:.5rem;padding-top:.5rem;border-top:1px solid rgba(255,255,255,.1);width:100%}.status-info{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;color:#fff;margin:0}.status-info span{margin:0;padding:.3rem .5rem;background:#00000040;border-radius:4px;font-size:.75rem;font-weight:500;color:#ffffffe6;display:inline-flex;align-items:center;gap:.4rem;border:1px solid rgba(255,255,255,.05)}.status-info span:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background-color:#3498db}.status-info span.status-start:before{background-color:#27ae60}.status-info span.status-target:before{background-color:#e74c3c}.status-info span.status-algorithm:before{background-color:#f39c12}.status-info span.status-stats:before{background-color:#80afb4}.node-revisited{animation:revisitedPulse .6s ease-out}@keyframes revisitedPulse{0%{transform:scale(.95);box-shadow:0 0 #6495edcc}70%{transform:scale(1.05);box-shadow:0 0 10px 5px #6495ed4d}to{transform:scale(1);box-shadow:0 0 #6495ed00}}@media (max-width: 768px){.grid{display:none}body:before{content:"This visualization is not compatible with mobile devices. Please use a desktop or laptop computer.";display:block;position:fixed;top:0;left:0;right:0;bottom:0;background:linear-gradient(to right,#2c3e50,#1a2a38);color:#fff;padding:2rem;text-align:center;font-size:1.2rem;display:flex;align-items:center;justify-content:center;z-index:9999}.drawing-select{display:none}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{display:flex;flex-direction:column;background-color:#fff;color:#000;padding:20px;border-radius:10px;position:relative;width:400px;overflow-y:auto;max-width:50%;max-height:60%;box-shadow:0 4px 8px #0003}button{padding:10px 20px;background-color:#007bff;color:#fff;border:none;cursor:pointer;border-radius:5px;margin-top:10px;font-size:16px}.modal-content p{font-size:1rem;font-weight:500;margin-bottom:0}.modal-content ul{font-size:1rem}.modal-content span{color:#168dfd}button:hover{background-color:#0056b3}.stats-modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0000;z-index:999;-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);opacity:0;visibility:hidden;transition:background-color .3s ease,backdrop-filter .4s ease,opacity .3s ease,visibility .3s ease}.stats-modal-overlay.active{background-color:#000000b3;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);opacity:1;visibility:visible}.stats{background:linear-gradient(135deg,#2c3e50,#34495e);color:#ecf0f1;z-index:1000;position:fixed;top:50%;left:50%;transform:translate(-50%,-55%);padding:25px 30px;border-radius:15px;box-shadow:0 15px 35px #00000040;display:flex;flex-direction:column;max-width:400px;width:90%;border-left:5px solid #3498db;opacity:0;visibility:hidden;transform-origin:center center;transition:transform .4s cubic-bezier(.175,.885,.32,1.275),opacity .3s ease,visibility .3s ease;scale:.95}.stats.active{transform:translate(-50%,-50%);opacity:1;visibility:visible;scale:1}.stats h1,.stats p,.stats button{opacity:0;transform:translateY(10px);transition:opacity .3s ease,transform .3s ease}.stats.active h1{opacity:1;transform:translateY(0);transition-delay:.1s}.stats.active .foundStats p:nth-child(1),.stats.active>p{opacity:1;transform:translateY(0);transition-delay:.2s}.stats.active .foundStats p:nth-child(2){opacity:1;transform:translateY(0);transition-delay:.25s}.stats.active .foundStats p:nth-child(3){opacity:1;transform:translateY(0);transition-delay:.3s}.stats.active button{opacity:1;transform:translateY(0);transition-delay:.35s}.stats h1{text-align:center;font-size:1.8rem;margin-bottom:15px;position:relative;padding-bottom:10px}.stats h1:before{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:60px;height:3px;background-color:#3498db;border-radius:3px}.stats p{text-align:center;margin:10px 0;display:flex;align-items:center;justify-content:center}.stats p:before{margin-right:8px;font-size:1.1em}.stats button{text-align:center;background-color:#3498db;color:#fff;border:none;padding:10px 20px;margin-top:15px;border-radius:30px;cursor:pointer;font-weight:700;transition:all .3s ease;align-self:center}.stats button:hover{background-color:#2980b9;transform:translateY(-2px);box-shadow:0 5px 15px #3498db66}.stats button:after{content:" →"}
