.btv-tool{--btv-bg:var(--surface,#fff);--btv-border:var(--border,#e5e7eb);--btv-radius:12px;--btv-primary:var(--primary,#2563eb);--btv-muted:var(--text-muted,#6b7280);background:var(--btv-bg);border:1px solid var(--btv-border);border-radius:var(--btv-radius);padding:1rem;margin-bottom:1.5rem;}
@media (min-width:768px){.btv-tool{padding:1.5rem;}}
.btv-action-bar{display:flex;flex-wrap:wrap;gap:0.75rem 1rem;align-items:flex-end;margin-bottom:1rem;}
.btv-input-group{min-width:0;}
.btv-label{display:block;font-size:0.8125rem;font-weight:500;color:var(--btv-muted);margin-bottom:0.25rem;}
.btv-row{display:flex;gap:0.5rem;align-items:stretch;}
.btv-input{width:5rem;min-width:0;padding:0.5rem 0.75rem;font-size:0.9375rem;border:1px solid var(--btv-border);border-radius:8px;background:var(--btv-bg);}
.btv-input:focus{outline:0;border-color:var(--btv-primary);box-shadow:0 0 0 2px rgba(37,99,235,0.2);}
.btv-btn{padding:0.5rem 0.875rem;font-size:0.875rem;font-weight:500;border:none;border-radius:8px;cursor:pointer;transition:background 0.15s,transform 0.1s;}
.btv-btn:active{transform:scale(0.98);}
.btv-btn-primary{background:var(--btv-primary);color:#fff;}
.btv-btn-primary:hover{filter:brightness(1.08);}
.btv-btn-secondary{background:var(--btv-border);color:var(--text-main,#111);}
.btv-btn-secondary:hover{background:#d1d5db;}
.btv-btn-accent{background:#059669;color:#fff;}
.btv-btn-accent:hover{filter:brightness(1.08);}
.btv-btn-danger{background:#dc2626;color:#fff;}
.btv-btn-danger:hover{filter:brightness(1.08);}
.btv-speed-wrap{min-width:8rem;}
.btv-speed-value{font-variant-numeric:tabular-nums;}
.btv-range{width:100%;height:6px;margin-top:0.25rem;accent-color:var(--btv-primary);}
.btv-actions{display:flex;flex-wrap:wrap;gap:0.5rem;align-items:center;}
.btv-canvas-wrap{margin-bottom:1rem;border-radius:var(--btv-radius);overflow:hidden;background:#f8fafc;}
.btv-canvas-toolbar{display:flex;gap:0.5rem;padding:0.5rem;background:var(--btv-border);}
.btv-icon-btn{width:2.25rem;height:2.25rem;padding:0;font-size:1.125rem;font-weight:600;line-height:1;border:none;border-radius:6px;background:var(--btv-bg);color:var(--text-main,#111);cursor:pointer;transition:background 0.15s;}
.btv-icon-btn:hover{background:#e5e7eb;}
.btv-container{position:relative;min-height:280px;overflow:auto;-webkit-overflow-scrolling:touch;}
@media (min-width:480px){.btv-container{min-height:320px;}}
@media (min-width:768px){.btv-container{min-height:420px;}}
.btv-container canvas{display:block;margin:0 auto;}
.btv-stats{display:flex;flex-wrap:wrap;gap:0.5rem 1rem;margin-bottom:1rem;font-size:0.875rem;color:var(--btv-muted);}
.btv-stat strong{color:var(--text-main,#111);font-variant-numeric:tabular-nums;}
.btv-traversals{margin-bottom:1rem;}
.btv-traversal-label{display:block;font-size:0.8125rem;font-weight:500;color:var(--btv-muted);margin-bottom:0.5rem;}
.btv-traversal-btns{display:flex;flex-wrap:wrap;gap:0.5rem;}
.btv-pill{padding:0.375rem 0.75rem;font-size:0.8125rem;font-weight:500;border:1px solid var(--btv-border);border-radius:999px;background:var(--btv-bg);color:var(--text-main,#111);cursor:pointer;transition:background 0.15s,border-color 0.15s;}
.btv-pill:hover{background:#f3f4f6;border-color:#9ca3af;}
.btv-result{padding:0.75rem;border-radius:8px;background:#f8fafc;border:1px solid var(--btv-border);}
.btv-result-label{font-size:0.8125rem;font-weight:500;color:var(--btv-muted);margin:0 0 0.25rem 0;}
.btv-result-text{font-size:0.9375rem;margin:0;color:var(--text-main,#111);}
.btv-path{display:flex;flex-wrap:wrap;gap:0.375rem;margin-top:0.5rem;}
.btv-path-node{display:inline-flex;align-items:center;justify-content:center;min-width:2rem;padding:0.25rem 0.5rem;font-size:0.8125rem;font-weight:600;border-radius:6px;background:var(--btv-primary);color:#fff;}
.btv-toast{position:fixed;bottom:1rem;left:50%;transform:translateX(-50%) translateY(100px);padding:0.75rem 1.25rem;font-size:0.875rem;font-weight:500;color:#fff;background:#111;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,0.2);opacity:0;visibility:hidden;transition:transform 0.25s,opacity 0.25s,visibility 0.25s;z-index:1000;}
.btv-toast[data-visible]{transform:translateX(-50%) translateY(0);opacity:1;visibility:visible;}
