*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:#0f172a;color:#f1f5f9;overflow-x:hidden}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}::selection{background:rgba(59,130,246,.3);color:#fff}.app{--bg-app: #0f172a;--bg-card: #1e293b;--bg-input: #1e293b;--text-primary: #f1f5f9;--text-secondary: #e2e8f0;--text-muted: #94a3b8;--text-placeholder: #475569;--border: #1e293b;--border-input: #334155;--accent: #3b82f6;--accent-hover: rgba(59, 130, 246, .1);--canvas-bg: #0c1222;--node-fill: #1e293b;--node-fill-selected: #1e40af;--node-stroke: #475569;--node-stroke-selected: #3b82f6;--node-text: #f1f5f9;--edge-stroke: #64748b;--selection-ring: #3b82f6;--traversal-ring: #eab308;--ghost-bg: #1e40af;--ghost-border: #3b82f6;--danger: #ef4444;--warning: #f97316}.app[data-theme=light]{--bg-app: #f1f5f9;--bg-card: #ffffff;--bg-input: #ffffff;--text-primary: #0f172a;--text-secondary: #1e293b;--text-muted: #64748b;--text-placeholder: #94a3b8;--border: #e2e8f0;--border-input: #cbd5e1;--accent: #2563eb;--accent-hover: rgba(37, 99, 235, .08);--canvas-bg: #e2e8f0;--node-fill: #ffffff;--node-fill-selected: #dbeafe;--node-stroke: #94a3b8;--node-stroke-selected: #2563eb;--node-text: #0f172a;--edge-stroke: #64748b;--selection-ring: #2563eb;--traversal-ring: #ca8a04;--ghost-bg: #2563eb;--ghost-border: #3b82f6;--danger: #dc2626;--warning: #ea580c}.app[data-theme=leetcode]{--bg-app: #f5f5f5;--bg-card: #ffffff;--bg-input: #ffffff;--text-primary: #1a1a1a;--text-secondary: #262626;--text-muted: #737373;--text-placeholder: #a3a3a3;--border: #e5e5e5;--border-input: #d4d4d4;--accent: #ffa116;--accent-hover: rgba(255, 161, 22, .12);--canvas-bg: #eaeaea;--node-fill: #ffffff;--node-fill-selected: #fff7ed;--node-stroke: #a3a3a3;--node-stroke-selected: #ffa116;--node-text: #1a1a1a;--edge-stroke: #737373;--selection-ring: #ffa116;--traversal-ring: #0f9d58;--ghost-bg: #ffa116;--ghost-border: #e09000;--danger: #d93025;--warning: #ea8600}.app{min-height:100vh;display:flex;flex-direction:column;background:var(--bg-app);color:var(--text-primary)}.app-header{padding:1.25rem 1.5rem .75rem;text-align:center;border-bottom:1px solid var(--border)}.app-header h1{margin:0;font-size:1.5rem;font-weight:700;color:var(--text-secondary);letter-spacing:-.02em}.subtitle{margin:.25rem 0 0;font-size:.85rem;color:var(--text-muted)}.structure-switcher{display:inline-flex;margin-top:.85rem;border:1px solid var(--border-input);border-radius:10px;overflow:hidden;background:var(--bg-card)}.structure-switcher-btn{padding:.45rem 1rem;font-size:.8rem;font-weight:500;border:none;background:transparent;color:var(--text-muted);cursor:pointer;transition:background .15s,color .15s}.structure-switcher-btn:hover{color:var(--text-secondary);background:var(--accent-hover)}.structure-switcher-btn.is-active{background:var(--accent-hover);color:var(--accent);font-weight:600}.graph-input-hint{margin:0;font-size:.72rem;color:var(--text-muted);line-height:1.4}.graph-input-hint code{font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:.68rem;padding:.1rem .25rem;border-radius:4px;background:var(--canvas-bg);color:var(--text-secondary)}.graph-mode-note{margin:0;font-size:.78rem;color:var(--text-muted)}.graph-mode-note kbd{font-family:inherit;font-size:.72rem;padding:.12rem .35rem;border-radius:4px;border:1px solid var(--border-input);background:var(--bg-card)}.graph-parse-banner{background:rgba(239,68,68,.12);color:var(--danger);padding:.5rem .75rem;border-radius:8px;font-size:.82rem;margin-bottom:.5rem;border:1px solid rgba(239,68,68,.25)}.graph-node-circle{fill:var(--node-fill);stroke:var(--node-stroke)}.graph-node-selected{fill:var(--node-fill-selected);stroke:var(--node-stroke-selected)}.graph-node-label{fill:var(--node-text);pointer-events:none;-webkit-user-select:none;user-select:none}.graph-edge-weight-bg{fill:var(--bg-card);stroke:var(--border-input);stroke-width:1}.graph-edge-weight-text{fill:var(--text-secondary)}.bottom-bar-spacer{flex:1;min-width:0}.graph-build-toolbar{display:flex;flex-direction:column;gap:.5rem;padding:.65rem .85rem;border-radius:10px;border:1px solid var(--border-input);background:var(--bg-card)}.graph-build-toolbar-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem}.graph-build-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.graph-mode-toggle{display:inline-flex;border:1px solid var(--border-input);border-radius:8px;overflow:hidden}.graph-mode-btn{padding:.35rem .65rem;font-size:.78rem;font-weight:500;border:none;background:transparent;color:var(--text-muted);cursor:pointer;transition:background .15s,color .15s}.graph-mode-btn:hover{color:var(--text-secondary);background:var(--accent-hover)}.graph-mode-btn.is-active{background:var(--accent-hover);color:var(--accent);font-weight:600}.graph-weight-row{align-items:center}.graph-weight-label{font-size:.72rem;color:var(--text-muted);white-space:nowrap}.graph-weight-input{width:140px;max-width:100%;padding:.35rem .5rem;border:1px solid var(--border-input);border-radius:6px;background:var(--bg-input);color:var(--text-primary);font-family:SF Mono,Fira Code,monospace;font-size:.8rem;outline:none}.graph-weight-input:focus{border-color:var(--accent)}.graph-build-hint{margin:0;font-size:.72rem;color:var(--text-muted);line-height:1.35}.app-main{flex:1;display:flex;flex-direction:column;padding:1rem 1.5rem;gap:1rem;max-width:1000px;width:100%;margin:0 auto}.input-panel{display:flex;flex-direction:column;gap:.4rem}.input-label{font-size:.75rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.input-row{display:flex;gap:.5rem}.tree-input{flex:1;padding:.6rem .85rem;border:1px solid var(--border-input);border-radius:8px;background:var(--bg-input);color:var(--text-primary);font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:.9rem;outline:none;transition:border-color .2s}.tree-input:focus{border-color:var(--accent)}.tree-input::placeholder{color:var(--text-placeholder)}.btn{padding:.5rem 1rem;border:1px solid var(--border-input);border-radius:8px;background:var(--bg-card);color:var(--text-primary);font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s;white-space:nowrap}.btn:hover{background:var(--border-input)}.btn:active{transform:scale(.97)}.btn-copy{color:var(--accent);border-color:var(--accent)}.btn-copy:hover{background:var(--accent-hover)}.btn-clear{color:var(--warning);border-color:var(--warning)}.btn-clear:hover{background:rgba(249,115,22,.1)}.btn-danger{color:var(--danger);border-color:var(--danger)}.btn-danger:hover{background:rgba(239,68,68,.1)}.btn-settings{color:var(--text-muted);border-color:var(--border-input);font-size:.8rem}.btn-settings:hover{color:var(--text-primary)}.theme-options{display:flex;gap:.35rem;flex-wrap:wrap}.theme-btn{flex:1;min-width:5.5rem;white-space:nowrap}.theme-btn-active{border-color:var(--accent);color:var(--accent);background:var(--accent-hover)}.tree-canvas-container{flex:1;min-height:300px;min-width:280px;border:1px solid var(--border);border-radius:12px;background:var(--canvas-bg);position:relative;overflow:hidden;resize:both;display:flex;flex-direction:column}.tree-canvas-zoom-wrapper{flex:1;min-height:0;overflow:hidden;position:relative;touch-action:none;isolation:isolate}.tree-canvas-svg{width:100%;height:100%;min-height:300px;display:block}.canvas-empty-text{fill:var(--text-muted)}.canvas-drag-preview circle{fill:var(--ghost-bg);stroke:var(--ghost-border)}.canvas-drag-preview text{fill:#fff}.node-actions{position:absolute;top:.75rem;right:.75rem;z-index:10;display:flex;gap:.5rem}.tree-node-circle{fill:var(--node-fill);stroke:var(--node-stroke);transition:fill .15s,stroke .15s}.tree-node-group.tree-node-selected .tree-node-circle,.tree-node-group:hover .tree-node-circle{fill:var(--node-fill-selected);stroke:var(--node-stroke-selected)}.tree-node-text{fill:var(--node-text)}.tree-node-edit-input{color:var(--node-text)!important;caret-color:var(--accent)}.selection-ring{animation:pulse-ring 1.5s ease-in-out infinite}@keyframes pulse-ring{0%,to{opacity:1}50%{opacity:.5}}.tree-edge{transition:stroke .2s}.drop-ghost-circle{animation:ghost-pulse 1s ease-in-out infinite}@keyframes ghost-pulse{0%,to{opacity:.6}50%{opacity:1}}.bottom-bar{display:flex;gap:1rem;align-items:flex-end}.node-source{flex:1;display:flex;flex-direction:column;gap:.4rem}.node-source-row{display:flex;align-items:center;gap:.75rem}.node-value-input{width:80px;padding:.5rem .65rem;border:1px solid var(--border-input);border-radius:8px;background:var(--bg-input);color:var(--text-primary);font-family:SF Mono,Fira Code,monospace;font-size:.9rem;outline:none;transition:border-color .2s}.node-value-input:focus{border-color:var(--accent)}.node-chip{display:flex;align-items:center;gap:.5rem;padding:.35rem .85rem .35rem .35rem;border:2px dashed var(--border-input);border-radius:24px;cursor:grab;-webkit-user-select:none;user-select:none;transition:all .2s;background:var(--bg-card)}.node-chip:hover{border-color:var(--accent);background:var(--accent-hover)}.node-chip:active{cursor:grabbing}.node-chip-dragging{opacity:.4}.node-chip-circle{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--bg-card);border:2px solid var(--accent);color:var(--text-primary);font-size:.85rem;font-weight:700}.node-chip-label{font-size:.8rem;color:var(--text-muted);font-weight:500}.config-panel{position:relative}.config-dropdown{position:absolute;bottom:calc(100% + .5rem);right:0;background:var(--bg-card);border:1px solid var(--border-input);border-radius:10px;padding:1rem;min-width:260px;z-index:20;box-shadow:0 8px 32px #0003}.config-item{display:flex;flex-direction:column;gap:.35rem}.config-item label{font-size:.75rem;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.config-input{padding:.45rem .6rem;border:1px solid var(--border-input);border-radius:6px;background:var(--bg-app);color:var(--text-primary);font-size:.85rem;outline:none}.config-input:focus{border-color:var(--accent)}.floating-drag-ghost{position:fixed;width:40px;height:40px;border-radius:50%;background:var(--ghost-bg);border:2px solid var(--ghost-border);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;pointer-events:none;z-index:9999;opacity:.85;box-shadow:0 4px 20px #0003}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.toolbar-group{display:flex;gap:.5rem}.toolbar .btn:disabled{opacity:.5;cursor:not-allowed}.panels-row{display:flex;flex-wrap:wrap;gap:1rem}.traversal-panel{display:flex;flex-direction:column;gap:.4rem}.traversal-panel .traversal-values{padding:.5rem .75rem;background:var(--bg-card);border:1px solid var(--border-input);border-radius:8px;color:var(--text-primary);font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:.9rem}.traversal-highlight-ring{animation:pulse-ring 1.5s ease-in-out infinite}.validation-panel{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;padding:.6rem .85rem;border-radius:8px;background:var(--bg-card);color:var(--text-primary)}.validation-item{display:flex;flex-direction:column;gap:.15rem}.validation-panel .input-label{display:block;margin-bottom:.2rem}.validation-value{font-size:.9rem;font-weight:500;color:var(--text-primary)}@media (max-width: 600px){.app-main{padding:.75rem}.app-header h1{font-size:1.2rem}.bottom-bar{flex-direction:column;align-items:stretch}.config-dropdown{right:auto;left:0}.tree-canvas-container{min-height:250px}}
