body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}*{box-sizing:border-box}.nav-root{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;background:var(--bg-primary);border-bottom:1px solid var(--border-primary);position:fixed;top:0;left:0;right:0;z-index:1200;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;transition:background-color .2s ease,border-color .2s ease}.nav-left{display:flex;align-items:center;gap:32px}.nav-brand{font-size:16px;font-weight:600;color:var(--text-primary);text-decoration:none;letter-spacing:.5px;transition:color .2s ease}.nav-links{display:flex;gap:18px;align-items:center}.nav-links a,.nav-links span{color:var(--text-secondary);text-decoration:none;font-size:13px;font-weight:500;padding:6px 10px;border-radius:6px;transition:all .15s ease;cursor:pointer}.nav-links a:hover,.nav-links span:hover{background:var(--bg-hover);color:var(--text-primary)}.nav-links a.active,.nav-links span.active{background:var(--bg-selected);color:var(--text-primary);box-shadow:inset 0 0 0 1px var(--border-primary)}.external-link{border:1px solid var(--border-primary)}.external-link:hover{border-color:var(--border-primary);background:var(--bg-hover)}.nav-right{display:flex;align-items:center;gap:12px}.theme-toggle{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--btn-secondary-bg);color:var(--text-secondary);border:1px solid var(--btn-secondary-border);border-radius:6px;cursor:pointer;transition:all .15s ease}.theme-toggle:hover{background:var(--btn-secondary-hover);color:var(--text-primary);border-color:var(--border-primary)}.btn-small{background:var(--btn-primary-bg);color:var(--btn-primary-text);font-size:13px;font-weight:500;padding:8px 16px;border:none;border-radius:6px;text-decoration:none;cursor:pointer;transition:all .15s ease}.btn-small:hover{background:var(--btn-primary-hover);transform:translateY(-1px)}:root[data-theme=light] .btn-small{color:#37352f}.reload-btn{background:var(--btn-secondary-bg);color:var(--btn-secondary-text);font-size:12px;font-weight:500;padding:6px 14px;border:1px solid var(--btn-secondary-border);border-radius:6px;cursor:pointer;transition:all .15s ease}.reload-btn:hover{background:var(--btn-secondary-hover);border-color:var(--border-primary);color:var(--text-primary)}.reload-btn:active{transform:translateY(1px)}.download-btn{background:var(--btn-secondary-bg);color:var(--btn-secondary-text);font-size:12px;font-weight:500;padding:6px 14px;border:1px solid var(--btn-secondary-border);border-radius:6px;text-decoration:none;cursor:pointer;transition:all .15s ease}.download-btn:hover{background:var(--btn-secondary-hover);border-color:var(--border-primary);color:var(--text-primary)}@media (max-width: 720px){.nav-links{display:none}.nav-root{justify-content:space-between}}.screenshot-slideshow{margin:60px 0;padding:0 20px}.slideshow-container{position:relative;max-width:1000px;margin:0 auto;background:var(--bg-secondary);border-radius:12px;overflow:hidden;box-shadow:var(--shadow-md);border:1px solid var(--border-primary)}.slides-wrapper{position:relative;width:100%;height:500px;overflow:hidden}.slide{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;transform:translate(100%);transition:all .5s cubic-bezier(.4,0,.2,1);display:flex;align-items:center}.slide.active{opacity:1;transform:translate(0)}.slide-content{display:flex;width:100%;height:100%;align-items:center;gap:40px;padding:40px}.slide-image{flex:1;display:flex;justify-content:center;align-items:center;background:var(--bg-tertiary);border-radius:8px;overflow:hidden;min-height:300px}.slide-image img{width:100%;height:auto;max-height:300px;object-fit:contain;border-radius:8px}.slide-info{flex:1;padding:20px 0}.slide-info h3{font-size:28px;font-weight:600;color:var(--text-primary);margin-bottom:16px;line-height:1.2}.slide-info p{font-size:16px;line-height:1.6;color:var(--text-secondary);margin:0}.nav-btn{position:absolute;top:50%;transform:translateY(-50%);background:var(--bg-primary);color:var(--text-secondary);border:1px solid var(--border-primary);width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;z-index:10;box-shadow:var(--shadow-sm)}.nav-btn:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--border-primary);transform:translateY(-50%) scale(1.05)}.nav-btn:active{transform:translateY(-50%) scale(.95)}.prev-btn{left:20px}.next-btn{right:20px}.slide-indicators{position:absolute;bottom:20px;left:50%;transform:translate(-50%);display:flex;gap:8px;z-index:10}.indicator{width:12px;height:12px;border-radius:50%;background:var(--text-tertiary);border:none;cursor:pointer;transition:all .2s ease;opacity:.5}.indicator:hover{opacity:.8;transform:scale(1.1)}.indicator.active{background:var(--text-primary);opacity:1;transform:scale(1.2)}@media (max-width: 900px){.slide-content{flex-direction:column;gap:20px;padding:30px 20px;text-align:center}.slide-image{min-height:200px}.slide-info h3{font-size:24px}.slide-info p{font-size:14px}.slides-wrapper{height:450px}}@media (max-width: 600px){.screenshot-slideshow{padding:0 10px;margin:40px 0}.slideshow-container{border-radius:8px}.slide-content{padding:20px 15px}.nav-btn{width:40px;height:40px}.prev-btn{left:10px}.next-btn{right:10px}.slides-wrapper{height:400px}}@media (prefers-reduced-motion: reduce){.slide,.nav-btn,.indicator{transition:none}}.comparison-section{margin:2rem 0;padding:0 10%;width:100%}.comparison-section h2{text-align:center;margin-bottom:1.5rem;color:var(--text-primary)}.table-container{overflow-x:auto;border-radius:8px;box-shadow:0 2px 8px #0000001a}.comparison-table{width:100%;border-collapse:collapse;background:var(--bg-primary);color:var(--text-primary);font-size:.9rem}.comparison-table th,.comparison-table td{padding:.75rem;text-align:left;border-bottom:1px solid var(--border-color)}.comparison-table th{background:var(--bg-secondary);font-weight:600;position:sticky;top:0;z-index:1}.comparison-table tr:hover{background:var(--bg-hover)}.comparison-table .highlight{background:#3b82f61a;border-left:4px solid #3b82f6}.tool-name{font-weight:600;color:var(--accent-color)}@media (max-width: 768px){.comparison-table{font-size:.8rem}.comparison-table th,.comparison-table td{padding:.5rem}}.overview-container{margin:0;background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Inter,Ubuntu,sans-serif;transition:background-color .2s ease,color .2s ease}.overview-content{overflow-y:auto;padding-top:60px}.overview-content::-webkit-scrollbar{width:8px}.overview-content::-webkit-scrollbar-track{background:var(--bg-secondary)}.overview-content::-webkit-scrollbar-thumb{background:var(--border-primary);border-radius:4px}.overview-content::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}.overview-content{scrollbar-width:thin;scrollbar-color:var(--border-primary) var(--bg-secondary)}.overview-container *{box-sizing:border-box}.top-nav{position:sticky;top:0;-webkit-backdrop-filter:saturate(140%) blur(12px);backdrop-filter:saturate(140%) blur(12px);background:#0f0f0fc7;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:10px 26px;z-index:50}.nav-left{display:flex;align-items:center;gap:24px}.nav-left a{text-decoration:none;color:var(--muted);font-size:14px;padding:8px 12px;border-radius:6px}.nav-left a:hover{background:#1e1e1e;color:#fff}.brand{font-weight:600;color:#fff!important;letter-spacing:.5px}.nav-right .btn-small{background:var(--surface-alt);border:1px solid var(--border);color:#fff;padding:8px 18px;font-size:12px;font-weight:500;border-radius:10px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:8px}.nav-right .btn-small:hover{filter:brightness(1.08)}.hero-section{padding:48px 28px 24px;max-width:1180px;margin:0 auto}.badge{display:inline-block;padding:4px 10px;font-size:12px;border:1px solid var(--border-primary);border-radius:999px;letter-spacing:.5px;text-transform:uppercase;color:var(--text-secondary);background:var(--bg-hover);transition:all .2s ease}.hero-section h1{font-size:48px;line-height:1.05;margin:18px 0 20px;color:var(--text-primary);font-weight:700}.lead{font-size:18px;max-width:720px;line-height:1.45;color:var(--text-secondary)}.button-row{margin-top:34px;display:flex;gap:16px;flex-wrap:wrap}.btn{background:var(--btn-secondary-bg);border:1px solid var(--btn-secondary-border);color:var(--btn-secondary-text);padding:14px 26px;font-size:14px;font-weight:500;border-radius:10px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:8px;transition:all .2s ease}.btn.primary{background:var(--btn-primary-bg);color:var(--btn-primary-text);border:none}.btn:hover{background:var(--btn-secondary-hover);transform:translateY(-2px);box-shadow:var(--shadow-sm)}.btn.primary:hover{background:var(--btn-primary-hover)}.main-content{max-width:1180px;margin:0 auto;padding:10px 28px 120px}.main-content section{margin-top:70px}.main-content h2{font-size:30px;margin:0 0 24px;letter-spacing:.5px;color:var(--text-primary)}.two-col{display:grid;gap:42px;grid-template-columns:repeat(auto-fill,minmax(420px,1fr))}.card{background:var(--bg-secondary);border:1px solid var(--border-primary);padding:22px 22px 24px;border-radius:14px;transition:all .2s ease}.card:hover{box-shadow:var(--shadow-sm);transform:translateY(-2px)}.card h3{margin:0 0 10px;font-size:17px;color:var(--text-primary)}.card p{margin:0;font-size:13.5px;line-height:1.5;color:var(--text-secondary)}.border-block{border:1px solid var(--border-primary);padding:26px 28px 30px;border-radius:18px;background:var(--bg-secondary);transition:all .2s ease}.border-block p{margin-top:0;font-size:14px;line-height:1.55;color:var(--text-secondary)}.border-block h3{margin:0 0 20px;font-size:18px;color:var(--text-primary)}.feat-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}.feat-list li{background:var(--bg-tertiary);border:1px solid var(--border-secondary);padding:10px 14px;border-radius:8px;font-size:13px;color:var(--text-secondary);transition:all .2s ease}.feat-list li:hover{background:var(--bg-hover);border-color:var(--border-primary)}pre{background:var(--bg-tertiary);border:1px solid var(--border-primary);padding:16px 18px;border-radius:12px;overflow:auto;font-size:13px;line-height:1.5;margin:0;color:var(--text-primary);white-space:pre-wrap}.inline-code{background:var(--bg-tertiary);border:1px solid var(--border-primary);padding:2px 6px;border-radius:6px;font-size:12px;color:var(--text-primary)}.grid{display:grid;gap:28px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.footer{text-align:center;padding:40px 10px 70px;color:var(--text-secondary);font-size:12px}.inline-link{color:var(--text-primary);text-decoration:none;transition:color .2s ease}.inline-link:hover{color:var(--text-secondary);text-decoration:underline}@media (max-width: 760px){.hero-section h1{font-size:40px}.hero-section{padding-top:36px}.two-col{gap:28px;grid-template-columns:1fr}}.mind-map-container{width:100%;height:100%;background-color:var(--bg-primary);position:relative;overflow:hidden;cursor:grab;-webkit-user-select:none;user-select:none;transition:background-color .2s ease}.mind-map-container:active,.mind-map-container.dragging{cursor:grabbing}.mind-map-svg{width:100%;height:100%;min-width:100%;min-height:100%;transition:transform .1s ease-out;cursor:grab;overflow:visible}.mind-map-svg:active{cursor:grabbing}.connection-line{stroke:var(--text-tertiary);stroke-width:2;fill:none;opacity:.8;transition:all .3s ease}.connection-line:hover{stroke:var(--text-secondary);opacity:1}.node{cursor:pointer;pointer-events:all}.node:hover .node-bg{filter:brightness(1.15);stroke-width:3}.node.selected .node-bg{filter:brightness(1.3) drop-shadow(0 0 10px currentColor)}.node-bg{transition:all .2s ease-in-out}.node-text{pointer-events:none;font-family:SF Pro Display,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:500;-webkit-user-select:none;user-select:none}.expand-button{cursor:pointer;pointer-events:all}.expand-button:hover .expand-circle{filter:brightness(1.3);stroke-width:2}.expand-circle{transition:filter .15s ease,stroke-width .15s ease}.expand-icon{pointer-events:none;-webkit-user-select:none;user-select:none}.children-count{pointer-events:none;opacity:.7}.controls{position:absolute;bottom:20px;right:20px;display:flex;gap:8px;z-index:100}.zoom-btn,.reset-btn,.collapse-btn{width:40px;height:40px;border:1px solid var(--btn-secondary-border);border-radius:8px;background-color:var(--btn-secondary-bg);color:var(--btn-secondary-text);font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease-in-out;display:flex;align-items:center;justify-content:center}.reset-btn,.collapse-btn{width:auto;padding:0 12px;font-size:12px}.zoom-btn:hover,.reset-btn:hover,.collapse-btn:hover{background-color:var(--btn-secondary-hover);border-color:var(--border-primary);color:var(--text-primary);transform:translateY(-1px)}.zoom-btn:active,.reset-btn:active,.collapse-btn:active{transform:translateY(0)}.collapse-btn{background-color:var(--btn-primary-bg);color:var(--btn-primary-text);border-color:var(--btn-primary-bg)}.collapse-btn:hover{background-color:var(--btn-primary-hover);border-color:var(--btn-primary-hover)}.node.main .node-bg{stroke:#4f46e5}.node.handler .node-bg{stroke:#dc2626}.node.middleware .node-bg{stroke:#ea580c}.node.config .node-bg{stroke:#16a34a}.node.router .node-bg{stroke:#7c3aed}.node.function .node-bg{stroke:#64748b}@keyframes expandAnimation{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.node{animation:expandAnimation .3s ease-out}:root[data-theme=light]{--bg-primary: #ffffff;--bg-secondary: #f7f7f5;--bg-tertiary: #f1f1ef;--bg-hover: rgba(55, 53, 47, .08);--bg-selected: rgba(55, 53, 47, .16);--text-primary: #37352f;--text-secondary: #787774;--text-tertiary: #9b9a97;--text-inverse: #ffffff;--border-primary: rgba(55, 53, 47, .16);--border-secondary: rgba(55, 53, 47, .09);--btn-primary-bg: #37352f;--btn-primary-text: #ffffff;--btn-primary-hover: #2f2e29;--btn-secondary-bg: transparent;--btn-secondary-text: var(--text-primary);--btn-secondary-hover: var(--bg-hover);--btn-secondary-border: var(--border-primary);--shadow-sm: rgba(15, 15, 15, .05) 0px 0px 0px 1px, rgba(15, 15, 15, .1) 0px 3px 6px, rgba(15, 15, 15, .2) 0px 9px 24px;--shadow-md: rgba(15, 15, 15, .1) 0px 0px 0px 1px, rgba(15, 15, 15, .2) 0px 3px 6px, rgba(15, 15, 15, .4) 0px 9px 24px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-primary);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}*{scrollbar-width:thin;scrollbar-color:var(--border-primary) var(--bg-secondary)}:root[data-theme=dark]{--bg-primary: #191919;--bg-secondary: #2f3437;--bg-tertiary: #373c41;--bg-hover: rgba(255, 255, 255, .055);--bg-selected: rgba(255, 255, 255, .11);--text-primary: rgba(255, 255, 255, .9);--text-secondary: rgba(255, 255, 255, .7);--text-tertiary: rgba(255, 255, 255, .5);--text-inverse: #191919;--border-primary: rgba(255, 255, 255, .13);--border-secondary: rgba(255, 255, 255, .07);--btn-primary-bg: rgba(255, 255, 255, .9);--btn-primary-text: #191919;--btn-primary-hover: rgba(255, 255, 255, .95);--btn-secondary-bg: transparent;--btn-secondary-text: var(--text-primary);--btn-secondary-hover: var(--bg-hover);--btn-secondary-border: var(--border-primary);--shadow-sm: rgba(0, 0, 0, .2) 0px 0px 0px 1px, rgba(0, 0, 0, .3) 0px 3px 6px, rgba(0, 0, 0, .4) 0px 9px 24px;--shadow-md: rgba(0, 0, 0, .3) 0px 0px 0px 1px, rgba(0, 0, 0, .4) 0px 3px 6px, rgba(0, 0, 0, .5) 0px 9px 24px}*{margin:0;padding:0;box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bg-primary);color:var(--text-primary);transition:background-color .2s ease,color .2s ease}.App{height:100vh;display:flex;flex-direction:column;background-color:var(--bg-primary);overflow:hidden}.app-header{background-color:var(--bg-secondary);padding:20px;border-bottom:1px solid var(--border-primary);box-shadow:var(--shadow-sm)}.app-header h1{color:var(--text-primary);font-size:24px;font-weight:600;margin-bottom:8px}.header-content{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px}.app-header p{color:var(--text-secondary);font-size:14px;margin:0}.file-input-section{display:flex;align-items:center;gap:12px}.current-file{color:#e5e5e5;font-size:13px;padding:6px 12px;background-color:#404040;border-radius:6px;border:1px solid #555}.file-input{display:none}.file-input-label{background-color:#4f46e5;color:#fff;padding:8px 16px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:background-color .2s ease;border:none}.file-input-label:hover{background-color:var(--btn-primary-hover)}.file-input-label:active{background-color:var(--btn-primary-hover);transform:translateY(1px)}.server-toggle{display:flex;align-items:center;gap:6px;font-size:12px;background:var(--bg-secondary);padding:6px 10px;border-radius:6px;color:var(--text-primary);border:1px solid var(--border-primary);transition:all .2s ease}.server-controls{display:flex;flex-direction:column;gap:12px}.search-bar{display:flex;align-items:center;gap:8px;background:var(--bg-secondary);border:1px solid var(--border-primary);padding:8px 12px;border-radius:8px}.search-input{flex:1;background:var(--bg-primary);color:var(--text-primary);border:none;outline:none;padding:6px 8px;font-size:14px;border-radius:4px;transition:background-color .2s ease;caret-color:var(--text-primary)}.search-input:focus{background:var(--bg-tertiary);outline:none;caret-color:var(--text-primary)}.search-input:focus-within{background:var(--bg-tertiary)}.search-input::placeholder{color:var(--text-tertiary)}.search-input:disabled{opacity:.6;cursor:not-allowed}.search-btn,.clear-search-btn{background:#6366f1;color:#fff;border:none;padding:6px 12px;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;transition:all .2s ease;min-width:60px}.search-btn:hover:not(:disabled){background:#5855eb;transform:translateY(-1px)}.search-btn:disabled{opacity:.6;cursor:not-allowed}.clear-search-btn{background:var(--btn-secondary-bg);color:var(--btn-secondary-text);border:1px solid var(--btn-secondary-border)}.clear-search-btn:hover:not(:disabled){background:var(--btn-secondary-hover);transform:translateY(-1px)}.pagination-bar{display:flex;align-items:center;gap:8px;background:var(--bg-secondary);border:1px solid var(--border-primary);padding:6px 10px;border-radius:8px}.pg-btn,.pg-refresh{background:var(--btn-secondary-bg);color:var(--btn-secondary-text);border:1px solid var(--btn-secondary-border);padding:6px 10px;font-size:12px;border-radius:6px;cursor:pointer;min-width:40px;transition:all .15s ease}.pg-btn:disabled,.pg-refresh:disabled{opacity:.4;cursor:not-allowed}.pg-btn:hover:not(:disabled),.pg-refresh:hover:not(:disabled){background:var(--btn-secondary-hover);border-color:var(--border-primary);color:var(--text-primary);transform:translateY(-1px)}.pg-btn:active:not(:disabled),.pg-refresh:active:not(:disabled){transform:translateY(1px)}.pg-select{background:#1f1f1f;color:#e5e5e5;border:1px solid #555;padding:5px 8px;font-size:12px;border-radius:6px}.pg-select:focus{outline:none;border-color:#6366f1}.pg-status{font-size:12px;color:#b0b0b0;min-width:110px;text-align:center}.loading-indicator,.error-indicator{position:absolute;top:60px;left:20px;background:#2d2d2d;border:1px solid #404040;padding:10px 14px;border-radius:8px;font-size:12px;z-index:900}.error-indicator{border-color:#dc2626;color:#fca5a5}.app-main{flex:1;position:relative;overflow:hidden}.node-details{position:absolute;top:100px;right:20px;width:300px;background-color:#2d2d2d;border:1px solid #404040;border-radius:8px;padding:20px;box-shadow:0 4px 20px #0000004d;z-index:1000}.node-details-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #404040}.node-details h3{color:#fff;font-size:16px;margin:0}.close-btn{background:none;border:none;color:#b0b0b0;font-size:20px;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s ease}.close-btn:hover{background-color:#404040;color:#fff}.node-details p{color:#e5e5e5;font-size:13px;margin-bottom:8px;line-height:1.4}.node-details strong{color:#fff;font-weight:500}.node-details ul{list-style:none;margin-top:8px;margin-left:16px}.node-details li{color:#b0b0b0;font-size:12px;margin-bottom:4px;padding-left:12px;position:relative}.node-details li:before{content:"";color:#666;position:absolute;left:0}.drag-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#4f46e5e6;display:flex;align-items:center;justify-content:center;z-index:9999;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.drag-message{text-align:center;color:#fff;padding:40px;border:3px dashed rgba(255,255,255,.8);border-radius:12px;background-color:#ffffff1a}.drag-message h2{font-size:32px;margin-bottom:12px;font-weight:600}.drag-message p{font-size:18px;opacity:.9}
