@import"https://fonts.googleapis.com/css2?family=SF+Pro+Display:wght@300;400;500;600;700;800;900&display=swap";:root{font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;line-height:1.5;font-weight:400;--apple-blue: #0071e3;--apple-blue-hover: #0077ed;--apple-green: #34c759;--apple-green-hover: #30d158;--apple-red: #ff3b30;--apple-red-hover: #ff453a;--apple-orange: #ff9500;--apple-orange-hover: #ff9f0a;--bg-primary: #f5f5f7;--bg-secondary: #ffffff;--bg-tertiary: #e8e8ed;--text-primary: #1d1d1f;--text-secondary: #6e6e73;--text-muted: #86868b;--border-color: #d2d2d7;--border-hover: #c7c7cc;--cell-empty: #ffffff;--cell-start: var(--apple-green);--cell-end: var(--apple-red);--cell-obstacle: #3a3a3c;--cell-visited: var(--apple-blue);--cell-path: var(--apple-orange);--cell-border: #d2d2d7;--cell-water: #5ac8fa;--cell-forest: #34c759;--cell-mountain: #8e8e93;--primary: var(--apple-blue);--primary-hover: var(--apple-blue-hover);--success: var(--apple-green);--success-hover: var(--apple-green-hover);--danger: var(--apple-red);--danger-hover: var(--apple-red-hover);--warning: var(--apple-orange);--warning-hover: var(--apple-orange-hover);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}.astar-visualizer-root[data-theme=dark]{--bg-primary: #000000;--bg-secondary: #1c1c1e;--bg-tertiary: #2c2c2e;--text-primary: #ffffff;--text-secondary: #98989d;--text-muted: #636366;--border-color: #38383a;--border-hover: #48484a;--cell-empty: #2c2c2e;--cell-start: #30d158;--cell-end: #ff453a;--cell-obstacle: #1c1c1e;--cell-visited: #0a84ff;--cell-path: #ff9f0a;--cell-border: #38383a;--cell-water: #64d2ff;--cell-forest: #30d158;--cell-mountain: #636366;--primary: #0a84ff;--primary-hover: #409cff;--success: #30d158;--success-hover: #34c759;--danger: #ff453a;--danger-hover: #ff6961;--warning: #ff9f0a;--warning-hover: #ffb340}.astar-visualizer-root[data-visual-theme=medieval]{--cell-empty: #90EE90;--cell-start: #4caf50;--cell-end: #8B0000;--cell-obstacle: #696969;--cell-visited: #87CEEB;--cell-path: #FFD700;--cell-border: #556B2F;--cell-water: #4A90D9;--cell-forest: #228B22;--cell-mountain: #8B7355}.astar-visualizer-root[data-visual-theme=medieval][data-theme=dark]{--cell-empty: #2D5A2D;--cell-start: #2E7D32;--cell-end: #5C0000;--cell-obstacle: #3D3D3D;--cell-visited: #4682B4;--cell-path: #B8860B;--cell-border: #3B4A29;--cell-water: #1E3A5F;--cell-forest: #1B4D1B;--cell-mountain: #4A3728}.astar-visualizer-root,.astar-visualizer-root *,.astar-visualizer-root *:before,.astar-visualizer-root *:after{transition:background-color .3s ease,color .3s ease,border-color .3s ease,box-shadow .3s ease}.astar-visualizer-root{width:100%;height:100%;display:flex;flex-direction:column;margin:0;padding:0;overflow:hidden;background:var(--bg-primary);color:var(--text-primary);position:relative}.astar-visualizer-root *{box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.astar-visualizer-root .app-container{display:flex;flex-direction:column;height:100%;width:100%}.astar-visualizer-root .app-header{padding:1rem 1.5rem;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);text-align:center;flex-shrink:0}.astar-visualizer-root .app-title{font-size:1.25rem;font-weight:600;margin:0;color:var(--text-primary);letter-spacing:-.025em}.astar-visualizer-root .app-main{flex:1;display:flex;justify-content:center;align-items:center;padding:.5rem;overflow:hidden;min-height:0}.astar-visualizer-root button{border:1.5px solid var(--border-color);border-radius:8px;padding:.625rem 1.25rem;font-size:.875rem;font-weight:500;font-family:inherit;background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;transition:all .2s ease;outline:none}.astar-visualizer-root button:hover{border-color:var(--border-hover);background:var(--bg-tertiary)}.astar-visualizer-root button:active{transform:translateY(1px)}.astar-visualizer-root button:focus-visible{outline:2px solid var(--primary);outline-offset:2px}@media (max-width: 768px){.astar-visualizer-root .app-header{padding:.75rem 1.5rem}.astar-visualizer-root .app-title{font-size:1.5rem}.astar-visualizer-root .app-main{padding:.25rem}.astar-visualizer-root .app-footer{padding:.75rem 1.5rem}}@media (max-width: 480px){.astar-visualizer-root .app-header{padding:.5rem 1rem}.astar-visualizer-root .app-title{font-size:1.25rem}.astar-visualizer-root .app-main{padding:.125rem}.astar-visualizer-root .app-footer{padding:.5rem 1rem}}@media (max-height: 600px){.astar-visualizer-root .app-header{padding:.5rem 1rem}.astar-visualizer-root .app-title{font-size:1.25rem}.astar-visualizer-root .app-footer{padding:.5rem 1rem}}@media (max-height: 400px){.astar-visualizer-root .app-header{padding:.25rem .5rem}.astar-visualizer-root .app-title{font-size:1rem}.astar-visualizer-root .app-footer{padding:.25rem .5rem}}.astar-visualizer-root #root{width:100%;height:100%;margin:0;padding:0;overflow:hidden;display:flex;flex-direction:column}.astar-visualizer-root .loading{display:flex;justify-content:center;align-items:center;height:100%;font-size:1.5rem;color:var(--text-secondary)}.astar-visualizer-root .error{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:2rem;text-align:center}.astar-visualizer-root .error h2{color:var(--danger);margin-bottom:1rem}.astar-visualizer-root .error p{color:var(--text-secondary);max-width:500px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}*{transition:none!important}}@media (prefers-contrast: high){:root{--cell-border: #000000;--text-primary: #000000;--text-secondary: #000000;--bg-primary: #ffffff;--bg-secondary: #ffffff}[data-theme=dark]{--cell-border: #ffffff;--text-primary: #ffffff;--text-secondary: #ffffff;--bg-primary: #000000;--bg-secondary: #000000}}@media print{.astar-visualizer-root .app-footer{display:none}.astar-visualizer-root .app-header{background:#fff!important;color:#000!important}.astar-visualizer-root .grid-container{box-shadow:none!important;border:2px solid black!important}}.astar-visualizer-root .grid-wrapper{display:flex;justify-content:center;align-items:center;width:100%;height:100%;padding:.5rem;box-sizing:border-box;overflow:hidden}.astar-visualizer-root .grid-container{display:grid;gap:1px;padding:8px;background:var(--bg-secondary);border-radius:12px;box-shadow:0 1px 3px #00000014,0 4px 12px #0000001f;border:1px solid var(--border-color);width:fit-content;height:fit-content}.astar-visualizer-root .grid-cell{position:relative;display:flex;justify-content:center;align-items:center;border:1px solid var(--cell-border);cursor:pointer;transition:transform .15s cubic-bezier(.34,1.56,.64,1),background-color .2s ease,box-shadow .15s ease;border-radius:4px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.astar-visualizer-root .grid-cell:hover{transform:scale(1.05);z-index:1}.astar-visualizer-root .grid-cell:active{transform:scale(.95)}.astar-visualizer-root .cell-values{position:absolute;top:0;left:0;right:0;bottom:0;display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr;font-size:.75rem;font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.9);pointer-events:none}.astar-visualizer-root .value-h{grid-column:1;grid-row:1;display:flex;align-items:center;justify-content:center;font-size:.65rem}.astar-visualizer-root .value-f{grid-column:3;grid-row:1;display:flex;align-items:center;justify-content:center;font-size:.65rem}.astar-visualizer-root .value-g{grid-column:2;grid-row:2;display:flex;align-items:center;justify-content:center;font-size:.65rem}.astar-visualizer-root .cell-indicator{font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.9)}.astar-visualizer-root .cell-indicator.start,.astar-visualizer-root .cell-indicator.end,.astar-visualizer-root .cell-indicator.obstacle{color:#fff}@media (max-width: 768px){.astar-visualizer-root .cell-values{font-size:.6rem}.astar-visualizer-root .value-h,.astar-visualizer-root .value-f,.astar-visualizer-root .value-g{font-size:.5rem}}@media (max-width: 480px){.astar-visualizer-root .cell-values{font-size:.5rem}.astar-visualizer-root .value-h,.astar-visualizer-root .value-f,.astar-visualizer-root .value-g{font-size:.4rem}}.astar-visualizer-root .toolbar{display:flex;align-items:center;gap:.75rem;padding:.875rem 1.5rem;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.astar-visualizer-root .toolbar-section{display:flex;align-items:center;gap:.5rem}.astar-visualizer-root .toolbar-divider{width:1px;height:24px;background:var(--border-color);margin:0 .5rem}.astar-visualizer-root .toolbar-spacer{flex:1}.astar-visualizer-root .toolbar-button{padding:.5rem 1rem;background:transparent;border:1.5px solid var(--border-color);border-radius:8px;font-size:.875rem;font-weight:500;color:var(--text-primary);cursor:pointer;transition:all .2s ease;outline:none}.astar-visualizer-root .toolbar-button:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.astar-visualizer-root .toolbar-button:active:not(:disabled){transform:translateY(1px)}.astar-visualizer-root .toolbar-button:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.astar-visualizer-root .toolbar-button.start.active{background:var(--success);border-color:var(--success);color:#fff}.astar-visualizer-root .toolbar-button.end.active{background:var(--danger);border-color:var(--danger);color:#fff}.astar-visualizer-root .toolbar-button.wall.active{background:var(--text-primary);border-color:var(--text-primary);color:var(--bg-primary)}.astar-visualizer-root .toolbar-button.erase.active{background:var(--text-muted);border-color:var(--text-muted);color:#fff}.astar-visualizer-root .toolbar-button.reset{color:var(--danger);border-color:var(--danger)}.astar-visualizer-root .toolbar-button.reset:hover{background:var(--danger);color:#fff}.astar-visualizer-root .toolbar-button.primary{background:var(--primary);border-color:var(--primary);color:#fff;padding:.625rem 1.5rem;font-weight:600;box-shadow:0 2px 8px #0071e340}.astar-visualizer-root .toolbar-button.primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);transform:translateY(-1px);box-shadow:0 4px 12px #0071e359}.astar-visualizer-root .toolbar-button.primary:active{transform:translateY(0)}@media (max-width: 768px){.astar-visualizer-root .toolbar{flex-wrap:wrap;padding:.75rem 1rem;gap:.5rem}.astar-visualizer-root .toolbar-section.tools{order:1;width:100%;justify-content:center}.astar-visualizer-root .toolbar-divider,.astar-visualizer-root .toolbar-spacer{display:none}.astar-visualizer-root .toolbar-button.reset{order:2}.astar-visualizer-root .toolbar-button.primary{order:3;flex:1;min-width:120px}}@media (max-width: 480px){.astar-visualizer-root .toolbar{padding:.5rem}.astar-visualizer-root .toolbar-button{padding:.375rem .75rem;font-size:.8125rem}.astar-visualizer-root .toolbar-button.primary{width:100%}}.astar-visualizer-root .stats-panel{background:var(--bg-secondary);border-top:1px solid var(--border-color);padding:.75rem 1.5rem}.astar-visualizer-root .stats-container{display:flex;align-items:center;justify-content:center;gap:1.5rem;flex-wrap:wrap}.astar-visualizer-root .stat-item{display:flex;flex-direction:column;align-items:center;gap:.25rem}.astar-visualizer-root .stat-label{font-size:.6875rem;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.astar-visualizer-root .stat-value{font-size:1.125rem;font-weight:600;color:var(--text-primary);font-variant-numeric:tabular-nums}.astar-visualizer-root .stat-divider{width:1px;height:32px;background:var(--border-color)}.astar-visualizer-root .stat-status{font-size:.8125rem;font-weight:500;padding:.25rem .75rem;border-radius:9999px}.astar-visualizer-root .stat-status.animating{color:var(--primary);background:#0071e31a;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@media (max-width: 768px){.astar-visualizer-root .stats-panel{padding:.5rem 1rem}.astar-visualizer-root .stats-container{gap:1rem}.astar-visualizer-root .stat-value{font-size:1rem}.astar-visualizer-root .stat-divider{height:24px}}@media (max-width: 480px){.astar-visualizer-root .stats-container{gap:.75rem}.astar-visualizer-root .stat-label{font-size:.625rem}.astar-visualizer-root .stat-value{font-size:.875rem}.astar-visualizer-root .stat-divider{display:none}}.astar-visualizer-root .settings-container{background:var(--bg-secondary);border-top:1px solid var(--border-color)}.astar-visualizer-root .settings-toggle{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;padding:.75rem 1rem;background:transparent;border:none;color:var(--text-secondary);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease}.astar-visualizer-root .settings-toggle:hover{color:var(--text-primary);background:var(--bg-tertiary)}.astar-visualizer-root .settings-icon{font-size:1rem}.astar-visualizer-root .settings-chevron{font-size:.625rem;transition:transform .2s ease}.astar-visualizer-root .settings-chevron.open{transform:rotate(180deg)}.astar-visualizer-root .settings-panel{border-top:1px solid var(--border-color);padding:1rem 1.5rem 1.5rem;animation:slideDown .2s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.astar-visualizer-root .settings-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem}.astar-visualizer-root .settings-section{display:flex;flex-direction:column;gap:.75rem}.astar-visualizer-root .settings-section-title{font-size:.75rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin:0;padding-bottom:.5rem;border-bottom:1px solid var(--border-color)}.astar-visualizer-root .settings-row{display:flex;align-items:center;justify-content:space-between;gap:1rem}.astar-visualizer-root .settings-row label{font-size:.875rem;font-weight:500;color:var(--text-primary)}.astar-visualizer-root .settings-select{padding:.5rem .75rem;font-size:.875rem;font-weight:500;font-family:inherit;color:var(--text-primary);background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:6px;cursor:pointer;min-width:100px}.astar-visualizer-root .settings-select:hover{border-color:var(--border-hover)}.astar-visualizer-root .settings-select:focus{outline:2px solid var(--primary);outline-offset:2px}.astar-visualizer-root .settings-toggle-group{display:flex;border:1px solid var(--border-color);border-radius:6px;overflow:hidden}.astar-visualizer-root .settings-toggle-btn{padding:.375rem .75rem;font-size:.8125rem;font-weight:500;color:var(--text-secondary);background:transparent;border:none;cursor:pointer;transition:all .2s ease}.astar-visualizer-root .settings-toggle-btn:not(:last-child){border-right:1px solid var(--border-color)}.astar-visualizer-root .settings-toggle-btn:hover:not(.active){color:var(--text-primary);background:var(--bg-tertiary)}.astar-visualizer-root .settings-toggle-btn.active{color:#fff;background:var(--primary)}.astar-visualizer-root .settings-stepper{display:flex;align-items:center;border:1px solid var(--border-color);border-radius:6px;overflow:hidden}.astar-visualizer-root .settings-stepper button{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;font-size:1rem;font-weight:600;color:var(--text-primary);background:transparent;border:none;cursor:pointer;transition:all .2s ease}.astar-visualizer-root .settings-stepper button:hover:not(:disabled){background:var(--primary);color:#fff}.astar-visualizer-root .settings-stepper button:disabled{opacity:.4;cursor:not-allowed}.astar-visualizer-root .stepper-value{display:flex;align-items:center;justify-content:center;min-width:2.5rem;height:2rem;font-size:.875rem;font-weight:600;color:var(--text-primary);background:var(--bg-tertiary);border-left:1px solid var(--border-color);border-right:1px solid var(--border-color)}.astar-visualizer-root .settings-terrain-grid{display:flex;flex-wrap:wrap;gap:.5rem}.astar-visualizer-root .settings-terrain-btn{padding:.5rem .75rem;font-size:.8125rem;font-weight:500;color:var(--text-primary);background:transparent;border:1.5px solid var(--border-color);border-radius:6px;cursor:pointer;transition:all .2s ease}.astar-visualizer-root .settings-terrain-btn:hover{border-color:var(--primary);color:var(--primary)}.astar-visualizer-root .settings-terrain-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.astar-visualizer-root .settings-preset-grid{display:flex;flex-wrap:wrap;gap:.5rem}.astar-visualizer-root .settings-preset-btn{padding:.5rem .75rem;font-size:.8125rem;font-weight:500;color:var(--text-primary);background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:6px;cursor:pointer;transition:all .2s ease}.astar-visualizer-root .settings-preset-btn:hover{background:var(--primary);border-color:var(--primary);color:#fff}@media (max-width: 768px){.astar-visualizer-root .settings-panel{padding:.75rem 1rem 1rem}.astar-visualizer-root .settings-content{grid-template-columns:1fr;gap:1rem}}@media (max-width: 480px){.astar-visualizer-root .settings-panel{padding:.5rem .75rem .75rem}.astar-visualizer-root .settings-row{flex-direction:column;align-items:flex-start;gap:.5rem}.astar-visualizer-root .settings-toggle-group,.astar-visualizer-root .settings-stepper,.astar-visualizer-root .settings-select{width:100%}.astar-visualizer-root .settings-toggle-btn{flex:1}}*{margin:0;padding:0;box-sizing:border-box}:root{--apple-blue: #0071e3;--apple-blue-dark: #007aff;--apple-gray: #86868b;--apple-gray-light: #f5f5f7;--apple-black: #1d1d1f;--apple-white: #ffffff;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--apple-black);background-color:var(--apple-white)}html{scroll-behavior:smooth}body{margin:0;padding:0;overflow-x:hidden;width:100%}#root{width:100%;isolation:isolate}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}@media (prefers-reduced-motion: no-preference){html{scroll-behavior:smooth}}
