.header{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;background-color:#252526;border-bottom:1px solid #3c3c3c}.header-title{color:#4ec9b0;font-size:18px;font-weight:600;text-decoration:none;transition:color .2s}.header-title:hover{color:#6fd9c4;text-decoration:underline}.github-link{color:#d4d4d4;transition:color .2s;display:flex;align-items:center}.github-link:hover{color:#fff}.input-panel{display:flex;align-items:center;gap:16px;padding:12px 20px;background:#1e1e1e;border-bottom:1px solid #333;flex-wrap:wrap}.input-group{display:flex;align-items:center;gap:8px}.input-group label{color:#9cdcfe;font-size:14px;white-space:nowrap}.input-group input{padding:6px 10px;border:1px solid #444;border-radius:4px;background:#2d2d2d;color:#d4d4d4;font-size:14px;font-family:Consolas,Monaco,monospace}.input-group input[type=number]{width:60px}.input-group input[type=text]{width:280px}.input-group input:focus{outline:none;border-color:#007acc}.input-error{color:#f48771;font-size:13px}.run-button,.random-button{padding:6px 16px;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px;transition:background .2s}.run-button{background:#0e639c}.run-button:hover{background:#17b}.run-button:active{background:#0d5a8c}.random-button{background:#6a4c93}.random-button:hover{background:#7d5ba6}.random-button:active{background:#5a3d7a}.code-panel{background-color:#1e1e1e;border-radius:4px;overflow:auto;font-family:Consolas,Monaco,Courier New,monospace;font-size:13px;line-height:1.5;height:100%}.code-container{padding:12px 0;min-width:fit-content}.code-line{display:flex;padding:0 12px;white-space:pre}.code-line.highlighted{background-color:#264f78}.line-number{color:#858585;text-align:right;padding-right:16px;min-width:40px;-webkit-user-select:none;user-select:none}.line-content{flex:1;color:#d4d4d4}.variable-values{color:#4ec9b0;margin-left:20px;font-style:italic;background-color:#2d2d30;padding:0 8px;border-radius:3px}.keyword{color:#569cd6}.type{color:#4ec9b0}.string{color:#ce9178}.number{color:#b5cea8}.comment{color:#6a9955}.method{color:#dcdcaa}.operator{color:#d4d4d4}.graph-view{background-color:#1e1e1e;border-radius:4px;height:100%;width:100%;overflow:hidden;position:relative}.graph-svg{width:100%;height:100%;position:absolute;top:0;left:0;cursor:grab}.graph-svg:active{cursor:grabbing}.graph-overlay{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}.overlay-panel{position:absolute;background:#1e1e1ef2;border:1px solid #3c3c3c;border-radius:8px;padding:12px;pointer-events:auto}.overlay-panel.top-left{top:16px;left:16px}.overlay-panel.top-center{top:16px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;background:#61afef26;border-color:#61afef4d}.overlay-panel.top-right{top:16px;right:16px}.overlay-panel.bottom-left{bottom:16px;left:16px}.panel-title{color:#61afef;font-size:14px;font-weight:600;margin-bottom:8px}.panel-subtitle{color:#6c6c6c;font-size:11px;margin-bottom:12px}.legend{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.legend-item{display:flex;align-items:center;gap:8px;font-size:12px;color:#abb2bf}.legend-dot{width:14px;height:14px;border-radius:50%;border:2px solid}.legend-dot.unvisited{background:#3c3c3c;border-color:#6c6c6c}.legend-dot.in-queue{background:#d19a66;border-color:#e5c07b}.legend-dot.completed{background:#98c379;border-color:#b5e890}.legend-hint{font-size:11px;color:#6c6c6c;line-height:1.5}.legend-hint .highlight{color:#98c379;margin-top:4px}.step-icon{font-size:14px}.top-center{color:#abb2bf;font-size:13px}.stat-row{display:flex;justify-content:space-between;font-size:12px;color:#6c6c6c;margin-bottom:4px}.stat-value{color:#abb2bf;font-weight:600}.progress-section{margin:12px 0}.progress-bar{height:6px;background:#3c3c3c;border-radius:3px;overflow:hidden;margin-bottom:4px}.progress-fill{height:100%;background:linear-gradient(90deg,#98c379,#b5e890);transition:width .3s ease}.progress-text{font-size:11px;color:#abb2bf;text-align:center}.result-badge{padding:6px 10px;border-radius:4px;font-size:12px;text-align:center;margin-top:8px}.result-badge.success{background:#98c37933;color:#98c379}.result-badge.error{background:#e06c7533;color:#e06c75}.result-badge.pending{background:#61afef1a;color:#61afef}.queue-container{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.queue-empty{color:#6c6c6c;font-size:12px;font-style:italic}.queue-item{background:#d19a66;border-radius:6px;padding:6px 12px;text-align:center;min-width:60px}.queue-front{font-size:9px;color:#1e1e1eb3;margin-bottom:2px}.queue-item-id{font-size:12px;font-weight:600;color:#1e1e1e}.queue-item-hint{font-size:9px;color:#1e1e1e99}.node{transition:opacity .3s}.node .node-circle{stroke-width:3px;cursor:grab;transition:fill .3s,stroke .3s}.node.unvisited .node-circle{fill:#3c3c3c;stroke:#6c6c6c}.node.in-queue .node-circle{fill:#d19a66;stroke:#e5c07b}.node.completed .node-circle{fill:#98c379;stroke:#b5e890}.node .node-id{fill:#fff;font-size:14px;font-weight:700;text-anchor:middle}.node .node-state{fill:#ffffffb3;font-size:11px;text-anchor:middle}.node .badge{stroke:#1e1e1e;stroke-width:2px}.node .in-degree-badge{fill:#61afef}.node .in-degree-badge.ready{fill:#98c379}.node .badge-label{fill:#fff9;font-size:8px;text-anchor:middle;dominant-baseline:middle}.node .badge-value{fill:#fff;font-size:11px;font-weight:700;text-anchor:middle;dominant-baseline:middle}.edge{stroke:#6c6c6c;stroke-width:2px;transition:stroke .3s,stroke-width .3s,opacity .5s,stroke-dasharray .3s}.edge.active{stroke:#61afef;stroke-width:3px}.edge.removed{display:none}.edge-arrow{fill:#6c6c6c}.edge-label-bg{fill:#1e1e1ee6;stroke:#3c3c3c;stroke-width:1px;transition:opacity .5s}.edge-label{fill:#abb2bf;font-size:11px;text-anchor:middle;dominant-baseline:middle;transition:opacity .5s}.link-group.removed{display:none}.overlay-panel.bottom-right{bottom:16px;right:16px}.controls-hint{font-size:11px;color:#6c6c6c;padding:8px 12px}.data-structures-panel{background-color:#252526;border-radius:4px;padding:16px;height:100%;overflow:auto;display:flex;flex-direction:column;gap:16px}.data-section{background-color:#1e1e1e;border-radius:4px;padding:12px}.data-section-title{color:#4ec9b0;font-size:14px;font-weight:600;margin-bottom:8px}.in-degree-array{display:flex;flex-wrap:wrap;gap:8px}.in-degree-item{display:flex;flex-direction:column;align-items:center;background-color:#2d2d30;border-radius:4px;padding:6px 10px;min-width:40px;transition:background-color .3s}.in-degree-item.highlighted{background-color:#264f78}.in-degree-index{color:#858585;font-size:11px}.in-degree-value{color:#d4d4d4;font-size:16px;font-weight:700}.queue-container{display:flex;align-items:center;gap:8px;min-height:40px}.queue-label{color:#858585;font-size:12px}.queue-items{display:flex;gap:4px;flex-wrap:wrap}.queue-item{background-color:#d19a66;color:#1e1e1e;border-radius:4px;padding:4px 10px;font-weight:700;font-size:14px}.queue-empty{color:#6c6c6c;font-style:italic}.result-section{display:flex;align-items:center;gap:12px}.learn-count{color:#d4d4d4;font-size:16px}.learn-count-value{color:#98c379;font-weight:700}.result-badge{padding:4px 12px;border-radius:4px;font-weight:700;font-size:14px}.result-badge.success{background-color:#98c379;color:#1e1e1e}.result-badge.failure{background-color:#e06c75;color:#1e1e1e}.control-panel{display:flex;justify-content:center;align-items:center;gap:16px;padding:12px 20px;background-color:#252526;border-top:1px solid #3c3c3c}.control-button{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border:none;border-radius:4px;background-color:#0e639c;color:#fff;font-size:14px;cursor:pointer;transition:background-color .2s;flex-shrink:0}.control-button:hover:not(:disabled){background-color:#17b}.control-button:disabled{background-color:#3c3c3c;color:#6c6c6c;cursor:not-allowed}.control-button.play-pause{min-width:100px}.step-indicator{color:#d4d4d4;font-size:14px;width:100px;text-align:center;flex-shrink:0}.step-current{color:#4ec9b0;font-weight:700}.keyboard-hint{color:#6c6c6c;font-size:12px;margin-left:4px}.step-description{color:#858585;font-size:13px;width:300px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0}.progress-bar{position:fixed;bottom:0;left:0;width:100%;height:24px;background:#1e1e1e;cursor:pointer;z-index:100;display:flex;align-items:center;padding:0 8px;box-sizing:border-box}.progress-track{position:relative;width:100%;height:8px;background:#444;border-radius:4px;overflow:visible}.progress-fill{position:absolute;top:0;left:0;height:100%;background:#4caf50;border-radius:4px 0 0 4px;transition:width .1s ease-out}.progress-thumb{position:absolute;top:50%;width:16px;height:16px;background:#4caf50;border:2px solid #fff;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 2px 4px #0000004d;transition:left .1s ease-out}.progress-bar:hover .progress-thumb{transform:translate(-50%,-50%) scale(1.2)}.progress-bar:active .progress-thumb{transform:translate(-50%,-50%) scale(1.1)}.wechat-float{position:fixed;right:20px;bottom:50px;z-index:200}.wechat-icon{width:56px;height:56px;background:#07c160;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #0000004d;transition:transform .2s,box-shadow .2s;gap:2px}.wechat-icon:hover{transform:scale(1.1);box-shadow:0 6px 16px #0006}.wechat-svg{width:22px;height:22px}.wechat-icon-text{color:#fff;font-size:10px;font-weight:700;text-align:center;line-height:1}.wechat-popup{position:absolute;bottom:60px;right:0;background:#fff;border-radius:12px;padding:16px;box-shadow:0 8px 24px #0000004d;text-align:center;min-width:200px}.wechat-popup img{max-width:220px;height:auto;border-radius:8px}.wechat-popup p{margin:12px 0 0;color:#333;font-size:14px;line-height:1.5}.wechat-popup strong{color:#07c160}.app{display:flex;flex-direction:column;height:100vh;width:100vw;overflow:hidden;background-color:#1e1e1e;padding-bottom:24px;box-sizing:border-box}.main-content{display:grid;grid-template-columns:1fr 1fr 300px;grid-template-rows:1fr;gap:12px;padding:12px;flex:1;overflow:hidden;min-height:0}.code-section,.graph-section,.data-section{overflow:hidden;display:flex;flex-direction:column}.section-title{color:#4ec9b0;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;padding-left:4px}.section-content{flex:1;overflow:hidden;min-height:0}@media(max-width:1200px){.main-content{grid-template-columns:1fr 1fr;grid-template-rows:1fr auto}.data-section{grid-column:1 / -1;max-height:200px}}@media(max-width:800px){.main-content{grid-template-columns:1fr;grid-template-rows:auto auto auto}.code-section,.graph-section,.data-section{max-height:300px}}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;width:100%;overflow:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;background-color:#1e1e1e;color:#d4d4d4}
