.header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:#1a1a2ee6;border-bottom:1px solid #2a2a4a}.header-left{display:flex;align-items:center;min-width:120px}.header-right{display:flex;align-items:center;gap:12px;min-width:200px;justify-content:flex-end}.algorithm-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid #3b82f6;border-radius:6px;background:#3b82f633;color:#60a5fa;font-size:12px;cursor:pointer;transition:all .2s ease}.algorithm-btn:hover{background:#3b82f64d;color:#93c5fd}.idea-icon{width:16px;height:16px}.github-link{display:flex;align-items:center;gap:6px;color:#e0e0e0;text-decoration:none;padding:6px 10px;border-radius:6px;background:#ffffff0d;transition:all .2s ease}.github-link:hover{background:#ffffff1a;color:#fff}.github-icon{width:20px;height:20px}.star-count{font-size:13px;font-weight:500}.header-center{display:flex;flex-direction:column;align-items:center;gap:2px}.title-link{text-decoration:none;color:inherit}.title-link:hover .title{color:#60a5fa}.title{font-size:18px;font-weight:600;color:#f0f0f0;margin:0;transition:color .2s ease}.subtitle{font-size:12px;color:#888}.difficulty{padding:4px 12px;border-radius:4px;font-size:12px;font-weight:500}.difficulty.medium{background:#fbbf2433;color:#fbbf24}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:2000;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:#1e1e2e;border-radius:12px;border:1px solid #3a3a5a;width:90%;max-width:600px;max-height:80vh;overflow:hidden;animation:slideIn .3s ease}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:#0000004d;border-bottom:1px solid #3a3a5a}.modal-header h2{margin:0;font-size:18px;color:#f0f0f0}.modal-close{width:32px;height:32px;border:none;border-radius:6px;background:#ffffff1a;color:#aaa;font-size:20px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.modal-close:hover{background:#ef44444d;color:#f87171}.modal-body{padding:20px;overflow-y:auto;max-height:calc(80vh - 70px)}.algorithm-content h3{color:#60a5fa;font-size:18px;margin:0 0 12px}.algorithm-content h4{color:#4ade80;font-size:16px;margin:20px 0 12px}.algorithm-content h5{color:#fbbf24;font-size:14px;margin:0 0 8px}.algorithm-content p{color:#ccc;font-size:14px;line-height:1.6;margin:0 0 12px}.algorithm-content ul{margin:0 0 12px;padding-left:20px}.algorithm-content li{color:#bbb;font-size:13px;line-height:1.8}.algorithm-content code{background:#3b82f633;color:#60a5fa;padding:2px 6px;border-radius:4px;font-family:Fira Code,monospace;font-size:12px}.step-section{background:#0003;border-radius:8px;padding:12px 16px;margin-bottom:12px}.highlight-section{background:#4ade801a;border:1px solid rgba(74,222,128,.3)}.highlight-text{color:#4ade80;font-weight:600;text-align:center;margin-top:12px}.data-input{padding:8px 16px;background:#1a1a2eb3;border-bottom:1px solid #2a2a4a}.input-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}.input-label{font-size:13px;color:#aaa;white-space:nowrap}.input-field{flex:1;max-width:400px;padding:6px 10px;border:1px solid #3a3a5a;border-radius:4px;background:#0000004d;color:#e0e0e0;font-size:13px;outline:none;transition:border-color .2s ease}.input-field:focus{border-color:#60a5fa}.input-field.error{border-color:#f87171}.apply-btn,.random-btn{padding:6px 12px;border:none;border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s ease}.apply-btn{background:#3b82f6;color:#fff}.apply-btn:hover{background:#2563eb}.random-btn{background:#10b981;color:#fff}.random-btn:hover{background:#059669}.examples-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.examples-label{font-size:12px;color:#888}.example-btn{padding:4px 10px;border:1px solid #3a3a5a;border-radius:4px;background:#0003;color:#aaa;font-size:11px;cursor:pointer;transition:all .2s ease}.example-btn:hover{border-color:#60a5fa;color:#60a5fa}.example-btn.active{border-color:#60a5fa;background:#60a5fa33;color:#60a5fa}.error-message{margin-top:4px;font-size:12px;color:#f87171}.current-data{margin-top:4px;font-size:11px;color:#666}.code-panel{width:420px;min-width:380px;display:flex;flex-direction:column;background:#1e1e32e6;border-radius:8px;border:1px solid #2a2a4a;overflow:hidden}.code-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:#0000004d;border-bottom:1px solid #2a2a4a}.code-title{font-size:13px;font-weight:500;color:#aaa}.language-tabs{display:flex;gap:4px}.lang-tab{padding:4px 10px;border:none;border-radius:4px;background:transparent;color:#888;font-size:11px;cursor:pointer;transition:all .2s ease}.lang-tab:hover{background:#ffffff1a;color:#ccc}.lang-tab.active{background:#3b82f6;color:#fff}.code-container{flex:1;display:flex;overflow:auto;font-family:Fira Code,Consolas,monospace}.line-numbers{padding:8px 0;background:#0003;border-right:1px solid #2a2a4a;-webkit-user-select:none;user-select:none}.line-number{padding:0 12px;height:20px;line-height:20px;font-size:11px;color:#555;text-align:right}.line-number.highlighted{color:#60a5fa;background:#60a5fa1a}.code-content{flex:1;padding:8px 0;overflow-x:auto}.code-line{display:flex;align-items:center;padding:0 12px;height:20px;line-height:20px;white-space:pre;transition:background .2s ease}.code-line.highlighted{background:#60a5fa26;border-left:2px solid #60a5fa;margin-left:-2px}.variable-annotation{margin-left:16px;padding:1px 6px;background:#4ade8033;border-radius:3px;font-size:10px;color:#4ade80;white-space:nowrap}.step-description{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#0000004d;border-top:1px solid #2a2a4a}.step-badge{padding:2px 8px;background:#3b82f6;border-radius:4px;font-size:11px;color:#fff;white-space:nowrap}.step-text{font-size:12px;color:#ccc;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.canvas-container{flex:1;position:relative;background:#141423e6;border-radius:8px;border:1px solid #2a2a4a;overflow:hidden}.canvas-svg{width:100%;height:100%;cursor:grab}.canvas-svg:active{cursor:grabbing}.canvas-controls{position:absolute;top:10px;right:10px;display:flex;flex-direction:column;gap:4px}.zoom-btn{width:32px;height:32px;border:1px solid #3a3a5a;border-radius:6px;background:#1e1e32e6;color:#aaa;font-size:18px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.zoom-btn:hover{background:#3c3c5ae6;color:#fff;border-color:#60a5fa}.canvas-hint{position:absolute;bottom:10px;left:50%;transform:translate(-50%);padding:4px 12px;background:#00000080;border-radius:4px;font-size:11px;color:#666}.control-panel{padding:10px 16px 12px;background:#1a1a2ef2;border-top:1px solid #2a2a4a}.controls-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.control-buttons{display:flex;gap:8px}.control-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 16px;border:1px solid #3a3a5a;border-radius:6px;background:#0000004d;color:#ccc;cursor:pointer;transition:all .2s ease}.control-btn:hover:not(:disabled){background:#3c3c5a80;border-color:#60a5fa;color:#fff}.control-btn:disabled{opacity:.4;cursor:not-allowed}.control-btn.play-btn{background:#3b82f64d;border-color:#3b82f6}.control-btn.play-btn:hover{background:#3b82f680}.control-btn.reset-btn{background:#ef444433;border-color:#ef4444}.control-btn.reset-btn:hover{background:#ef444466}.btn-icon{font-size:14px}.btn-shortcut{font-size:9px;color:#666;padding:1px 4px;background:#0000004d;border-radius:2px}.step-info{display:flex;align-items:baseline;gap:4px;font-family:Fira Code,monospace}.step-current{font-size:20px;font-weight:600;color:#60a5fa}.step-separator{font-size:14px;color:#555}.step-total{font-size:14px;color:#888}.speed-control{display:flex;align-items:center;gap:8px}.speed-label{font-size:12px;color:#888}.speed-buttons{display:flex;gap:4px}.speed-btn{padding:4px 8px;border:1px solid #3a3a5a;border-radius:4px;background:#0003;color:#888;font-size:11px;cursor:pointer;transition:all .2s ease}.speed-btn:hover{border-color:#60a5fa;color:#ccc}.speed-btn.active{background:#3b82f64d;border-color:#3b82f6;color:#60a5fa}.progress-bar{position:relative;height:8px;background:#ffffff1a;border-radius:4px;cursor:pointer;overflow:visible}.progress-fill{height:100%;background:linear-gradient(90deg,#3b82f6,#60a5fa);border-radius:4px;transition:width .1s ease}.progress-handle{position:absolute;top:50%;transform:translate(-50%,-50%);width:16px;height:16px;background:#60a5fa;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 6px #0000004d;cursor:grab;transition:transform .1s ease}.progress-handle:hover{transform:translate(-50%,-50%) scale(1.2)}.progress-handle:active{cursor:grabbing;transform:translate(-50%,-50%) scale(1.1)}.contact-float{position:fixed;right:20px;bottom:100px;z-index:1000}.float-button{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 12px;background:linear-gradient(135deg,#07c160,#06ad56);border-radius:12px;cursor:pointer;box-shadow:0 4px 12px #07c1604d;transition:all .3s ease}.float-button:hover{transform:translateY(-2px);box-shadow:0 6px 16px #07c16066}.wechat-icon{width:28px;height:28px;color:#fff}.float-text{font-size:11px;color:#fff;font-weight:500}.qr-popup{position:absolute;right:70px;bottom:0;background:#fff;border-radius:12px;box-shadow:0 8px 32px #0000004d;overflow:hidden;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}.qr-content{padding:16px;text-align:center}.qr-image{width:180px;height:auto;border-radius:8px}.qr-hint{margin:8px 0 0;font-size:12px;color:#666}.qr-hint:last-child{margin-top:4px;color:#07c160;font-weight:500}.app{width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.main-content{flex:1;display:flex;min-height:0;gap:12px;padding:0 12px}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}body{background:linear-gradient(135deg,#1a1a2e,#16213e);color:#e0e0e0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#1a1a2e}::-webkit-scrollbar-thumb{background:#4a4a6a;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#5a5a7a}
