.bass-tools{--surface:var(--bg-elevated);--muted:var(--text-muted);--accent-dim:var(--accent-hover);--success:#2d8a5c;--danger:#c44;--radius:6px;--inset:color-mix(in srgb, var(--border) 35%, var(--bg));font-family:var(--font-sans);color:var(--text);max-width:640px;margin:0 auto;line-height:1.5}.bass-tools *{box-sizing:border-box}.bass-tools button,.bass-tools input,.bass-tools select,.bass-tools textarea{font-family:inherit}.bass-tools .bass-tools-intro h1{letter-spacing:-.02em;margin:0 0 .35rem;font-size:1.75rem;font-weight:600}.bass-tools .tagline{color:var(--muted);margin:0 0 1rem}.bass-tools .view{display:none}.bass-tools .view-active{display:block}.bass-tools .card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1rem;padding:1.25rem 1.25rem 1.5rem}.bass-tools .lead{color:var(--muted);margin-top:0}.bass-tools .home-card h2{margin:0 0 .75rem;font-size:1.15rem}.bass-tools .home-list{color:var(--muted);margin:0 0 1rem;padding-left:1.25rem;font-size:.95rem}.bass-tools .home-list li{margin-bottom:.35rem}.bass-tools .home-start-label{color:var(--muted);margin:0 0 .35rem;font-size:.9rem}.bass-tools .start-row{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}.bass-tools .start-row .btn{margin-top:0;margin-right:0}.bass-tools .btn{cursor:pointer;border:none;border-radius:8px;margin-top:.5rem;margin-right:.5rem;padding:.65rem 1.1rem;font-size:1rem;display:inline-block}.bass-tools .btn-primary{background:var(--accent);color:#fff;font-weight:600}.bass-tools .btn-primary:hover{background:var(--accent-hover)}.bass-tools .btn-secondary{color:var(--text);border:1px solid var(--border);background:0 0}.bass-tools .btn-small{padding:.35rem .75rem;font-size:.875rem}.bass-tools .hidden{display:none!important}.bass-tools .settings-panel h2{margin-top:0}.bass-tools .field-grid{gap:.75rem;margin-bottom:1rem;display:grid}.bass-tools label{color:var(--muted);flex-direction:column;gap:.35rem;font-size:.9rem;display:flex}.bass-tools input,.bass-tools select{border:1px solid var(--border);background:var(--inset);color:var(--text);border-radius:6px;padding:.5rem .6rem;font-size:1rem}.bass-tools label.checkbox{flex-direction:row;align-items:center;gap:.5rem}.bass-tools .advanced{color:var(--muted);margin-bottom:1rem}.bass-tools .hint{color:var(--success);font-size:.9rem}.bass-tools .progress-row{justify-content:space-between;align-items:center;margin-bottom:1rem;font-size:1.1rem;display:flex}.bass-tools .practice-status{margin:.5rem 0;font-size:1.5rem;font-weight:600}.bass-tools .practice-hint{flex-wrap:wrap;justify-content:center;gap:.75rem;margin:.25rem 0;font-size:2.5rem;line-height:1;display:flex}.bass-tools .practice-hint .hint-slot{text-align:center;min-width:1.25em}.bass-tools .practice-hint .hint-slot:not(.hint-correct){color:var(--danger)}.bass-tools .practice-hint .hint-correct{color:var(--success)}.bass-tools .practice-sequence{color:var(--muted);margin:0 0 .25rem;font-size:.95rem}.bass-tools .practice-reveal{color:var(--success);margin:.25rem 0 1rem;font-size:2rem}.bass-tools .practice-live{font-family:var(--font-mono);color:var(--muted);margin:0 0 1rem}.bass-tools .meter-wrap{margin-top:1rem}.bass-tools .meter-label{margin-bottom:.35rem;font-size:.85rem}.bass-tools .meter{background:var(--inset);border:1px solid var(--border);border-radius:999px;height:10px;position:relative;overflow:hidden}.bass-tools .meter-fill{background:linear-gradient(90deg, var(--accent-dim), var(--accent));width:0%;height:100%;transition:width 80ms linear}.bass-tools .meter-fill.above-gate{background:linear-gradient(90deg, color-mix(in srgb, var(--success) 70%, var(--bg)), var(--success))}.bass-tools .meter-gate{background:var(--text);opacity:.85;pointer-events:none;z-index:1;width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}.bass-tools .gate-slider{flex-direction:row;justify-content:space-between;align-items:center;gap:.75rem;margin-top:.65rem;font-size:.85rem}.bass-tools .gate-slider input[type=range]{min-width:0;accent-color:var(--accent);background:0 0;border:none;flex:1;padding:0}.bass-tools .gate-hint{color:var(--muted);margin:.35rem 0 0;font-size:.8rem}.bass-tools .stats-grid{grid-template-columns:1fr 1fr;gap:.75rem 1rem;margin:0 0 1.5rem;display:grid}.bass-tools .stats-grid dt{color:var(--muted);font-size:.85rem}.bass-tools .stats-grid dd{margin:0;font-size:1.25rem;font-weight:600}.bass-tools .per-note-list{margin:0 0 1.5rem;padding:0;list-style:none}.bass-tools .per-note-list li{border-bottom:1px solid var(--border);justify-content:space-between;padding:.4rem 0;font-size:.95rem;display:flex}.bass-tools .per-note-list .wrong{color:var(--danger)}.bass-tools .tuner-title{color:var(--muted);font-size:.95rem}.bass-tools .tuner-note{text-align:center;letter-spacing:.02em;margin:.5rem 0 .25rem;font-size:2.75rem;font-weight:600}.bass-tools .tuner-card.in-tune .tuner-note{color:var(--success)}.bass-tools .tuner-cents{text-align:center;min-height:1.5rem;margin:0 0 .25rem;font-size:1.25rem}.bass-tools .tuner-freq{font-family:var(--font-mono);color:var(--muted);text-align:center;min-height:1.25rem;margin:0 0 1.25rem}.bass-tools .tuner-gauge{background:var(--inset);border:1px solid var(--border);border-radius:999px;height:12px;margin:0 0 1.25rem;position:relative;overflow:hidden}.bass-tools .tuner-center{background:var(--muted);opacity:.6;width:2px;margin-left:-1px;position:absolute;top:0;bottom:0;left:50%}.bass-tools .tuner-needle{background:var(--accent);border-radius:2px;width:4px;margin-left:-2px;transition:left 60ms linear;position:absolute;top:1px;bottom:1px;left:50%}.bass-tools .tuner-card.in-tune .tuner-needle{background:var(--success)}.bass-tools .metronome-title{color:var(--muted);font-size:.95rem}.bass-tools .metronome-controls{flex-direction:column;align-items:center;gap:1.5rem;margin-top:.5rem;display:flex}.bass-tools .metronome-play{min-width:8rem;margin:0}.bass-tools .tempo-dial-wrap{flex-direction:column;align-items:center;gap:.5rem;width:100%;display:flex}.bass-tools .tempo-dial-label{color:var(--muted);font-size:.85rem}.bass-tools .tempo-dial{border:3px solid var(--border);background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--border) 50%, var(--surface)) 0%, var(--surface) 65%);touch-action:none;cursor:grab;user-select:none;border-radius:50%;width:10rem;height:10rem;position:relative}.bass-tools .tempo-dial:active{cursor:grabbing}.bass-tools .tempo-dial:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.bass-tools .tempo-dial-knob{background:var(--accent);transform-origin:50% 4.35rem;pointer-events:none;border-radius:2px;width:4px;height:1.35rem;margin-left:-2px;position:absolute;top:.65rem;left:50%;transform:rotate(0)}.bass-tools .metronome-card.beat-pulse .tempo-dial{border-color:var(--accent-dim)}.bass-tools .tempo-dial-value{letter-spacing:-.03em;pointer-events:none;font-size:1.75rem;font-weight:700;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}.bass-tools .tempo-dial-unit{color:var(--muted);pointer-events:none;font-size:.75rem;position:absolute;top:58%;left:50%;transform:translate(-50%)}.bass-tools .stepper-field{flex-direction:column;align-items:center;gap:.5rem;width:100%;display:flex}.bass-tools .stepper-label{color:var(--muted);font-size:.85rem}.bass-tools .stepper{align-items:center;gap:.35rem;display:flex}.bass-tools .stepper-btn{min-width:2.25rem;margin:0;padding:.35rem .5rem}.bass-tools .stepper-input{text-align:center;border:1px solid var(--border);background:var(--bg);width:3rem;color:var(--text);-moz-appearance:textfield;border-radius:8px;padding:.35rem .25rem;font-size:1.1rem;font-weight:600}.bass-tools .stepper-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.bass-tools .stepper-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.bass-tools .stepper-btn:disabled{opacity:.35;cursor:not-allowed}.bass-tools .metronome-volume{width:100%;max-width:18rem}.bass-tools .drum-title{color:var(--muted);font-size:.95rem}.bass-tools .drum-controls{flex-direction:column;gap:1.25rem;margin-top:.5rem;display:flex}.bass-tools .drum-transport{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.bass-tools .drum-play{min-width:8rem;margin:0}.bass-tools .drum-tempo{width:100%;max-width:20rem;margin:0 auto}.bass-tools .drum-volumes{grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;width:100%;max-width:22rem;margin:0 auto;display:grid}.bass-tools .drum-vol-slider{text-align:center;flex-direction:column;align-items:center;gap:.35rem;margin:0}.bass-tools .drum-vol-mark{color:var(--text);letter-spacing:.02em;font-size:.85rem;font-weight:600}.bass-tools .drum-vol-slider input[type=range]{width:100%}.bass-tools .drum-bpm-readout{text-align:center;margin-top:.35rem;font-size:.95rem;font-weight:600;display:block}.bass-tools .drum-steppers{flex-wrap:wrap;justify-content:center;gap:1rem 1.5rem;width:100%;display:flex}.bass-tools .drum-grid{width:100%;margin-top:.25rem}.bass-tools .drum-grid-scroll{padding-bottom:.25rem;overflow-x:auto}.bass-tools .drum-grid-inner{flex-direction:column;gap:.35rem;min-width:min-content;display:flex}.bass-tools .drum-row{align-items:center;gap:.35rem;display:flex}.bass-tools .drum-row-label{color:var(--muted);text-align:right;flex:0 0 2rem;padding-right:.25rem;font-size:.75rem;line-height:1.2}.bass-tools .drum-steps{gap:.2rem;display:flex}.bass-tools .drum-step{border:1px solid var(--border);background:var(--bg);cursor:pointer;border-radius:6px;flex:0 0 1.35rem;width:1.35rem;height:1.35rem;margin:0;padding:0}.bass-tools .drum-step:hover{border-color:var(--accent-dim)}.bass-tools .drum-step-on{background:var(--accent);border-color:var(--accent);color:#fff}.bass-tools .drum-step-current{box-shadow:0 0 0 2px var(--text)}.bass-tools .drum-step-on.drum-step-current{box-shadow:0 0 0 2px var(--text), inset 0 0 0 1px #0003}.bass-tools .drum-step.drum-beat-mark{border-color:color-mix(in srgb, var(--border) 70%, var(--accent) 30%)}
