:root{--bg: #ffffff;--bg2: #f5f5f5;--bg3: #e8e8e8;--fg: #1a1a2e;--fg2: #555;--fg3: #888;--accent: #4f46e5;--accent2: #7c3aed;--accent3: #06b6d4;--green: #10b981;--red: #ef4444;--orange: #f59e0b;--blue: #3b82f6;--border: #ddd;--shadow: rgba(0,0,0,.08);--code-bg: #f8f8f8;--code-fg: #333;--radius: 8px;--transition: .3s ease}[data-theme=dark]{--bg: #0f172a;--bg2: #1e293b;--bg3: #334155;--fg: #e2e8f0;--fg2: #94a3b8;--fg3: #64748b;--accent: #818cf8;--accent2: #a78bfa;--accent3: #22d3ee;--green: #34d399;--red: #f87171;--orange: #fbbf24;--blue: #60a5fa;--border: #475569;--shadow: rgba(0,0,0,.3);--code-bg: #1e293b;--code-fg: #e2e8f0}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--fg);transition:background var(--transition),color var(--transition);line-height:1.6;min-height:100vh}canvas{border-radius:var(--radius);display:block;max-width:100%}svg text{font-family:-apple-system,sans-serif}input[type=range]{-webkit-appearance:none;width:100%;height:6px;border-radius:3px;background:var(--bg3);outline:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--accent);cursor:pointer}textarea{width:100%;padding:10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--fg);font-size:.9rem;resize:vertical;font-family:inherit;min-height:60px}textarea:focus{outline:none;border-color:var(--accent)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.pulse{animation:pulse .6s ease}@media(max-width:768px){.viz-grid{grid-template-columns:1fr!important}.top-bar{height:auto!important;flex-wrap:nowrap;padding:8px!important}.tab-btn{padding:6px 10px!important;font-size:.78rem!important}.container{padding:16px 10px!important}.card{padding:14px!important}}.top-bar{position:sticky;top:0;z-index:100;background:var(--bg2);border-bottom:1px solid var(--border);box-shadow:0 2px 8px var(--shadow);display:flex;align-items:center;padding:0 16px;height:56px;gap:8px;overflow-x:auto;-webkit-overflow-scrolling:touch}.top-bar .logo{font-weight:700;font-size:1.1rem;color:var(--accent);white-space:nowrap;margin-right:8px}.tab-group{display:flex;align-items:center;gap:2px}.tab-group-label{font-size:.68rem;color:var(--fg3);font-weight:600;text-transform:uppercase;letter-spacing:.5px;padding:0 4px;white-space:nowrap}.tab-group-sep{color:var(--border);font-size:.9rem;margin:0 4px}.tab-btn{padding:6px 10px;border:none;background:transparent;color:var(--fg2);font-size:.8rem;cursor:pointer;border-radius:var(--radius);white-space:nowrap;transition:all var(--transition);font-weight:500}.tab-btn:hover{background:var(--bg3);color:var(--fg)}.tab-btn.active{background:var(--accent);color:#fff}.github-link{margin-left:auto;color:var(--fg2);display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--bg3);border:1px solid var(--border);flex-shrink:0;transition:all var(--transition)}.github-link:hover{border-color:var(--accent);color:var(--accent)}.theme-toggle{background:var(--bg3);border:1px solid var(--border);border-radius:50%;width:36px;height:36px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.1rem;flex-shrink:0;transition:all var(--transition)}.theme-toggle:hover{border-color:var(--accent)}.container{max-width:1100px;margin:0 auto;padding:24px 16px}.section{display:none}.section.active{display:block;animation:fadeIn .3s ease}.section h2{font-size:1.5rem;margin-bottom:8px;color:var(--accent)}.section .desc{color:var(--fg2);margin-bottom:20px;font-size:.95rem}.card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:20px;box-shadow:0 2px 6px var(--shadow)}.card h3{font-size:1.1rem;margin-bottom:12px;color:var(--fg)}.btn{display:inline-flex;align-items:center;gap:4px;padding:6px 16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--fg);cursor:pointer;font-size:.85rem;transition:all var(--transition)}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.primary:hover{opacity:.85}.token-box{display:inline-block;padding:2px 8px;margin:2px;border-radius:4px;font-size:.85rem;font-family:monospace;transition:all .3s}.source-panel{margin-top:12px}.source-toggle{display:flex;align-items:center;gap:6px;cursor:pointer;color:var(--fg3);font-size:.85rem;padding:6px 0;-webkit-user-select:none;user-select:none}.source-toggle:hover{color:var(--accent)}.source-toggle .arrow{transition:transform .3s;display:inline-block}.source-toggle.open .arrow{transform:rotate(90deg)}.source-content{display:none;background:var(--code-bg);border:1px solid var(--border);border-radius:var(--radius);padding:12px;margin-top:6px;overflow-x:auto;font-family:SF Mono,Fira Code,monospace;font-size:.8rem;line-height:1.5;color:var(--code-fg)}.source-content.open{display:block}.viz-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.matrix-table{border-collapse:collapse;font-size:.75rem;font-family:monospace}.matrix-table td,.matrix-table th{padding:4px 8px;border:1px solid var(--border);text-align:center}.matrix-table th{background:var(--bg3)}.matrix-table .highlight{background:var(--accent);color:#fff;transition:background .3s}.flow-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0}.flow-box{padding:8px 16px;border-radius:var(--radius);font-size:.85rem;border:2px solid var(--border);background:var(--bg);text-align:center;min-width:80px;transition:all .3s}.flow-box.active{border-color:var(--accent);background:var(--accent);color:#fff}.flow-arrow{color:var(--fg3);font-size:1.2rem}.label{font-size:.75rem;color:var(--fg3);margin-bottom:4px}.value{font-family:monospace;font-size:.9rem;color:var(--accent)}.bar-chart{display:flex;align-items:flex-end;gap:3px;height:120px;padding:4px 0}.bar{flex:1;background:var(--accent);border-radius:2px 2px 0 0;min-width:4px;transition:height .5s ease;position:relative}.bar:hover{opacity:.8}.tooltip{position:absolute;background:var(--bg2);border:1px solid var(--border);border-radius:4px;padding:4px 8px;font-size:.75rem;pointer-events:none;white-space:nowrap;z-index:50;box-shadow:0 2px 8px var(--shadow)}.step-indicator{display:flex;gap:4px;margin-bottom:12px;flex-wrap:wrap}.step-dot{width:28px;height:28px;border-radius:50%;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:.7rem;color:var(--fg3);transition:all .3s;cursor:pointer}.step-dot.active{border-color:var(--accent);background:var(--accent);color:#fff}.step-dot.done{border-color:var(--green);background:var(--green);color:#fff}.shape-badge{display:inline-block;padding:2px 10px;border-radius:12px;background:var(--bg3);font-family:monospace;font-size:.8rem;color:var(--accent);border:1px solid var(--border)}.silu-demo{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.pg-config{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:16px;display:flex;gap:12px;flex-wrap:wrap;align-items:center}.pg-config label{font-size:.8rem;color:var(--fg3);white-space:nowrap}.pg-config select,.pg-config input[type=text],.pg-config input[type=number]{padding:5px 10px;border:1px solid var(--border);border-radius:4px;font-size:.82rem;background:var(--bg);color:var(--fg)}.pg-config select{cursor:pointer}.pg-config input[type=range]{width:100px;cursor:pointer}.pg-range-group{display:flex;align-items:center;gap:6px}.pg-range-val{font-size:.78rem;font-family:monospace;color:var(--accent);min-width:32px}.pg-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.pg-chip{padding:4px 12px;border:1px solid var(--border);border-radius:16px;font-size:.78rem;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s;background:var(--bg);color:var(--fg2)}.pg-chip:hover{border-color:var(--fg3)}.pg-chip.active{border-color:var(--accent);background:var(--accent);color:#fff}.pg-chat{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:12px}.pg-messages{max-height:460px;overflow-y:auto;padding:14px}.pg-msg{margin-bottom:12px}.pg-msg-role{font-size:.7rem;font-weight:600;text-transform:uppercase;margin-bottom:2px;letter-spacing:.5px}.pg-msg-user .pg-msg-role{color:var(--accent)}.pg-msg-assistant .pg-msg-role{color:var(--green)}.pg-msg-tool .pg-msg-role{color:var(--orange)}.pg-msg-system .pg-msg-role{color:var(--fg3)}.pg-msg-content{font-size:.88rem;line-height:1.6;white-space:pre-wrap;word-break:break-word;color:var(--fg)}.pg-tool-call{background:color-mix(in srgb,var(--orange) 10%,var(--bg));border-left:3px solid var(--orange);padding:8px 12px;border-radius:0 6px 6px 0;margin:4px 0;font-size:.82rem}.pg-tool-call .pg-tc-name{font-weight:600;color:var(--orange)}.pg-tool-call .pg-tc-args{font-family:monospace;font-size:.78rem;color:var(--fg2)}.pg-tool-result{background:color-mix(in srgb,var(--green) 10%,var(--bg));border-left:3px solid var(--green);padding:8px 12px;border-radius:0 6px 6px 0;margin:4px 0;font-size:.82rem;color:var(--fg)}.pg-input-area{display:flex;border-top:1px solid var(--border)}.pg-input-area input{flex:1;border:none;padding:12px 14px;font-size:.88rem;outline:none;background:var(--bg);color:var(--fg)}.pg-input-area button{border:none;background:var(--accent);color:#fff;padding:12px 20px;font-size:.88rem;cursor:pointer;transition:opacity .2s}.pg-input-area button:hover{opacity:.85}.pg-input-area button:disabled{opacity:.4;cursor:not-allowed}.pg-quick-btns{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.pg-quick-btn{padding:5px 14px;border:1px solid var(--border);border-radius:16px;background:var(--bg2);color:var(--fg2);font-size:.78rem;cursor:pointer;transition:all .2s}.pg-quick-btn:hover{border-color:var(--accent);color:var(--accent)}.pg-quick-btn:disabled{opacity:.4;cursor:not-allowed}.pg-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-top:12px}.pg-metric-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:10px;text-align:center}.pg-metric-card .pg-metric-label{font-size:.72rem;color:var(--fg3);margin-bottom:4px}.pg-metric-card .pg-metric-value{font-size:1.2rem;font-weight:700;font-family:monospace;color:var(--accent)}.pg-status{text-align:center;font-size:.78rem;color:var(--fg3);padding:6px}.pg-status.error{color:var(--red)}.pg-status.ok{color:var(--green)}.tm-layout{display:grid;grid-template-columns:320px 1fr;gap:16px;min-height:500px}.tm-sidebar{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:16px;overflow-y:auto;max-height:80vh}.tm-sidebar h4{font-size:.85rem;color:var(--fg);margin:14px 0 8px}.tm-sidebar h4:first-child{margin-top:0}.tm-sidebar label{display:block;font-size:.78rem;color:var(--fg3);margin-bottom:3px}.tm-sidebar select,.tm-sidebar input[type=text],.tm-sidebar input[type=number]{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:4px;font-size:.82rem;background:var(--bg);color:var(--fg);margin-bottom:8px}.tm-sidebar select{cursor:pointer}.tm-field-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tm-switch-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0;margin-bottom:8px}.tm-switch-row span{font-size:.82rem;color:var(--fg)}.tm-toggle{position:relative;width:40px;height:22px;background:var(--bg3);border-radius:11px;cursor:pointer;transition:background .2s;border:none;padding:0}.tm-toggle.active{background:var(--accent)}.tm-toggle:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .2s}.tm-toggle.active:after{transform:translate(18px)}.tm-btn{width:100%;padding:10px;border:none;border-radius:var(--radius);font-size:.88rem;font-weight:600;cursor:pointer;transition:opacity .2s;margin-bottom:6px}.tm-btn:hover{opacity:.85}.tm-btn:disabled{opacity:.4;cursor:not-allowed}.tm-btn-start{background:var(--green);color:#fff}.tm-btn-stop{background:var(--red);color:#fff}.tm-status-row{display:flex;align-items:center;gap:8px;margin-bottom:10px}.tm-status-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.tm-status-dot.green{background:var(--green);box-shadow:0 0 6px var(--green)}.tm-status-dot.red{background:var(--red)}.tm-status-dot.yellow{background:var(--orange);box-shadow:0 0 6px var(--orange)}.tm-status-dot.gray{background:var(--fg3)}.tm-status-text{font-size:.8rem;color:var(--fg2)}.tm-logs{background:#1a1a2a;color:#4ade80;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.78rem;line-height:1.5;border-radius:var(--radius);border:1px solid var(--border);padding:12px;overflow-y:auto;max-height:80vh;white-space:pre-wrap;word-break:break-all}.tm-log-line{padding:1px 0}.tm-log-line.manager{color:#60a5fa}.tm-log-line.error{color:#f87171}.tm-progress{margin-bottom:12px}.tm-progress-label{font-size:.75rem;color:var(--fg3);margin-bottom:3px;display:flex;justify-content:space-between}.tm-progress-bar{height:6px;background:var(--bg3);border-radius:3px;overflow:hidden}.tm-progress-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .3s}.tm-loss-chart{margin:12px 0;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:8px}.tm-loss-chart svg{width:100%;height:80px}.tm-npu-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;margin-top:10px;font-size:.75rem;color:var(--fg2);font-family:monospace;white-space:pre-wrap;max-height:150px;overflow-y:auto}.tm-weights-section{margin-top:12px}.tm-weights-toggle{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:.8rem;color:var(--fg3);-webkit-user-select:none;user-select:none;padding:4px 0}.tm-weights-toggle:hover{color:var(--accent)}.tm-weights-toggle .arrow{transition:transform .2s;display:inline-block}.tm-weights-toggle.open .arrow{transform:rotate(90deg)}.tm-weight-item{display:flex;justify-content:space-between;padding:4px 0;font-size:.78rem;color:var(--fg);border-bottom:1px solid var(--border)}.tm-weight-item:last-child{border-bottom:none}.tm-weight-size{color:var(--fg3);font-family:monospace}.tm-log-search{display:flex;gap:6px;margin-bottom:8px}.tm-log-search input{flex:1;padding:4px 8px;border:1px solid var(--border);border-radius:4px;font-size:.78rem;background:var(--bg);color:var(--fg)}.tm-log-highlight{background:#fbbf244d;color:#fbbf24}.pg-mode-switch{display:inline-flex;border:1px solid var(--border);border-radius:6px;overflow:hidden;margin-left:8px}.pg-mode-switch button{padding:5px 14px;border:none;background:var(--bg);color:var(--fg2);font-size:.78rem;cursor:pointer;transition:all .2s;white-space:nowrap}.pg-mode-switch button+button{border-left:1px solid var(--border)}.pg-mode-switch button.active{background:var(--accent);color:#fff}.pg-mode-switch button:hover:not(.active){background:var(--bg2)}.pg-chip-badge{font-size:.6rem;padding:1px 4px;border-radius:3px;margin-left:4px;font-weight:600;vertical-align:middle;background:var(--accent3);color:#fff}.pg-flow-panel{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;overflow:hidden}.pg-flow-header{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:.8rem;color:var(--fg2);transition:color .2s}.pg-flow-header:hover{color:var(--accent)}.pg-flow-header .arrow{transition:transform .2s;display:inline-block;margin-right:6px}.pg-flow-header.open .arrow{transform:rotate(90deg)}.pg-flow-body{padding:12px 20px 16px;display:flex;align-items:center;justify-content:center;gap:0;overflow-x:auto}.pg-flow-node{display:flex;flex-direction:column;align-items:center;justify-content:center;width:90px;height:56px;border:2px solid var(--border);border-radius:8px;background:var(--bg);font-size:.72rem;color:var(--fg3);transition:all .3s;flex-shrink:0;text-align:center;line-height:1.3;padding:4px}.pg-flow-node.active{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--bg));box-shadow:0 0 12px color-mix(in srgb,var(--accent) 30%,transparent);animation:pg-pulse 1.2s ease-in-out infinite}.pg-flow-node.done{border-color:var(--green);color:var(--green);background:color-mix(in srgb,var(--green) 6%,var(--bg))}.pg-flow-node .pg-flow-icon{font-size:1rem;margin-bottom:2px}@keyframes pg-pulse{0%,to{box-shadow:0 0 12px color-mix(in srgb,var(--accent) 30%,transparent)}50%{box-shadow:0 0 20px color-mix(in srgb,var(--accent) 50%,transparent)}}.pg-flow-arrow{display:flex;align-items:center;padding:0 4px;flex-shrink:0}.pg-flow-arrow svg{width:36px;height:16px}.pg-flow-arrow line,.pg-flow-arrow polygon{stroke:var(--border);fill:var(--border);transition:all .3s}.pg-flow-arrow.active line,.pg-flow-arrow.active polygon{stroke:var(--accent);fill:var(--accent)}.pg-flow-arrow.done line,.pg-flow-arrow.done polygon{stroke:var(--green);fill:var(--green)}.pg-trace{background:var(--bg2);border:1px solid var(--border);border-left:3px solid var(--accent2);border-radius:0 6px 6px 0;padding:10px 14px;margin:8px 0 12px;font-size:.78rem}.pg-trace-title{font-weight:600;color:var(--fg2);margin-bottom:8px;font-size:.8rem;display:flex;align-items:center;gap:6px}.pg-trace-total{font-family:monospace;color:var(--accent);font-weight:400;font-size:.75rem}.pg-trace-step{display:flex;align-items:flex-start;gap:10px;padding:3px 0;position:relative}.pg-trace-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex-shrink:0;margin-top:4px;position:relative;z-index:1}.pg-trace-dot.tool{background:var(--orange)}.pg-trace-dot.mcp{background:var(--accent3)}.pg-trace-dot.result{background:var(--green)}.pg-trace-dot.reply{background:var(--accent2)}.pg-trace-line{position:absolute;left:3.5px;top:14px;bottom:-5px;width:1px;background:var(--border)}.pg-trace-step:last-child .pg-trace-line{display:none}.pg-trace-label{flex:1;color:var(--fg);line-height:1.4}.pg-trace-label code{font-family:monospace;font-size:.74rem;color:var(--fg2);background:var(--bg);padding:1px 4px;border-radius:3px}.pg-trace-time{font-family:monospace;color:var(--fg3);font-size:.72rem;white-space:nowrap;min-width:55px;text-align:right}.pg-mcp-detail{margin:4px 0}.pg-mcp-detail summary{cursor:pointer;font-size:.72rem;color:var(--accent3);-webkit-user-select:none;user-select:none;padding:2px 0}.pg-mcp-detail summary:hover{text-decoration:underline}.pg-mcp-json{background:color-mix(in srgb,var(--accent3) 6%,var(--bg));border:1px solid color-mix(in srgb,var(--accent3) 20%,var(--border));border-radius:4px;padding:8px 10px;margin-top:4px;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.72rem;line-height:1.5;color:var(--fg2);white-space:pre-wrap;word-break:break-all;max-height:200px;overflow-y:auto}.pg-tool-call.mcp{border-left-color:var(--accent3);background:color-mix(in srgb,var(--accent3) 8%,var(--bg))}.pg-tool-call.mcp .pg-tc-name{color:var(--accent3)}.pg-tool-result.mcp{border-left-color:var(--accent3);background:color-mix(in srgb,var(--accent3) 8%,var(--bg))}@media(max-width:768px){.tm-layout{grid-template-columns:1fr}.tm-sidebar{max-height:none}.tm-logs{max-height:400px}.pg-config{flex-direction:column;align-items:stretch}.pg-metrics{grid-template-columns:repeat(2,1fr)}}
