/* tools views */
.view-tools [hidden] { display: none !important; }
.tl-num { width: 5.5em; }

/* ---------- tuner ---------- */
.tl-tuner { align-items: center; text-align: center; }
.tl-tuner-readout { display: flex; flex-direction: column; align-items: center; gap: 2px; }
.tl-note-row { gap: 4px; align-items: flex-start; justify-content: center; }
.tl-tuner-note { min-width: 1.4ch; transition: color .15s; }
.tl-tuner-oct { font-size: 20px; color: var(--muted); padding-top: 10px; }
.tl-tuner-cents { font-size: 20px; min-height: 1.5em; color: var(--muted); }
.tl-intune .tl-tuner-note { color: var(--good); }
.tl-intune .tl-tuner-cents { color: var(--good); }
.tl-tuner .row.spread { width: 100%; }
.tl-tuner-status { font-size: 13px; padding: 4px 12px; }
.tl-level { flex: 1; max-width: 160px; min-width: 80px; }
.tl-gauge { width: 100%; max-width: 380px; height: auto; display: block; }
.tl-gauge-arc { fill: none; stroke: var(--line); stroke-width: 10; stroke-linecap: round; }
.tl-gauge-zone { fill: none; stroke: var(--good); stroke-width: 10; }
.tl-gauge-tick { stroke: var(--muted); stroke-width: 2; }
.tl-gauge-label { font: 500 12px var(--font-mono); fill: var(--muted); }
.tl-needle {
  stroke: var(--accent); stroke-width: 4; stroke-linecap: round;
  transform-box: view-box; transform-origin: 150px 158px; transition: transform .1s linear;
}
.tl-intune .tl-needle { stroke: var(--good); }
.tl-gauge-hub { fill: var(--fg); }
.tl-strings { display: grid; grid-template-columns: repeat(auto-fill, minmax(72px, 1fr)); gap: 8px; }
.tl-string { flex-direction: column; gap: 0; min-height: 64px; padding: 6px; }
.tl-string b { font: 800 26px/1 var(--font-display); }
.tl-string small { font-size: 11px; color: var(--muted); }
.tl-string.tl-near { border-color: var(--accent); background: var(--accent-soft); }
.tl-string.tl-ok { border-color: var(--good); background: var(--good-soft); }
.tl-string.tl-ok b { color: var(--good); }

/* ---------- metronome ---------- */
.tl-met-display { display: flex; flex-direction: column; align-items: center; gap: 2px; }
.tl-bpm { font-variant-numeric: tabular-nums; }
.tl-met-tempo { flex-wrap: nowrap; }
.tl-met-tempo input[type="range"] { flex: 1; min-width: 0; }
.tl-lights { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; }
.tl-light {
  width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center;
  font: 600 14px var(--font-mono); color: var(--muted);
  background: var(--surface-2); border: 2px solid var(--line); transition: background .06s, transform .06s;
}
.tl-light.tl-group { border-color: var(--cool); }
.tl-light.tl-down { border-color: var(--accent); }
.tl-light.on { background: var(--fg); color: var(--bg); transform: scale(1.08); }
.tl-light.tl-down.on { background: var(--accent); color: var(--accent-ink); }
.tl-light.tl-group.on { background: var(--cool); color: var(--bg); }

/* ---------- explorer / chords ---------- */
.tl-formula { font-size: 15px; }
.tl-tile .chord-box { max-width: 100%; height: auto; }
.tl-tile > span { text-align: center; }
.tl-tile.tl-playing { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-soft); }

/* ---------- chord namer ---------- */
.tl-namer-name { color: var(--accent); min-height: 1.1em; overflow-wrap: anywhere; }

/* ---------- circle of fifths ---------- */
.tl-circle-panel { align-items: center; }
.tl-circle { width: 100%; max-width: 440px; height: auto; display: block; }
.tl-seg { cursor: pointer; outline: none; }
.tl-seg path { stroke: var(--bg); stroke-width: 2; transition: fill .15s; }
.tl-seg.tl-major path { fill: var(--surface-2); }
.tl-seg.tl-minor path { fill: var(--surface); }
.tl-seg text { fill: var(--fg); font-family: var(--font-display); font-weight: 800; pointer-events: none; }
.tl-seg.tl-minor text { fill: var(--muted); font-family: var(--font-body); font-weight: 600; }
.tl-seg .tl-sig { font: 500 10px var(--font-mono); fill: var(--muted); }
.tl-seg:hover path { fill: var(--accent-soft); }
.tl-seg.tl-rel path { fill: var(--cool-soft); }
.tl-seg.on path { fill: var(--accent); }
.tl-seg.on text, .tl-seg.on .tl-sig { fill: var(--accent-ink); }
.tl-seg:focus-visible path { stroke: var(--accent); stroke-width: 3; }
.tl-circle-key { font: 800 26px var(--font-display); fill: var(--fg); }
.tl-circle-sub { font: 500 12px var(--font-mono); fill: var(--muted); }
.tl-key-chords .btn, .tl-prog-chord { flex-direction: column; gap: 0; }
.tl-key-chords .btn span { color: var(--muted); }

/* ---------- backing ---------- */
.tl-checks { gap: 8px 18px; }
.tl-prog { display: grid; grid-template-columns: repeat(auto-fill, minmax(78px, 1fr)); gap: 8px; }
.tl-prog-chord {
  display: flex; align-items: center; justify-content: center; min-height: 58px; padding: 6px;
  background: var(--surface-2); color: var(--fg); border: 1px solid var(--line); border-radius: 8px;
  cursor: pointer; font: inherit;
}
.tl-prog-chord b { font: 800 22px/1.1 var(--font-display); }
.tl-prog-chord span { color: var(--muted); }
.tl-prog-chord:hover { border-color: var(--accent); }
.tl-prog-chord.tl-current { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
.tl-prog-chord.tl-current span { color: var(--accent-ink); }

/* ---------- drone ---------- */
.tl-drone-target { color: var(--accent); }

/* ---------- capo ---------- */
.tl-capo-input { width: 100%; font-family: var(--font-mono); }
.tl-shift { display: inline-block; min-width: 3ch; text-align: center; font-size: 18px; font-weight: 600; }
.tl-capo-out { gap: 6px; }
.tl-capo-chord { font-family: var(--font-mono); }
.chip.tl-bad { background: var(--bad-soft); color: var(--bad); }
.tl-capo-option { border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; display: flex; flex-direction: column; gap: 6px; }
.tl-capo-option.tl-best { border-color: var(--accent); background: var(--accent-soft); }
.tl-capo-option p { overflow-wrap: anywhere; }
.tl-capo-tiles { align-items: flex-start; }
.tl-capo-tile { background: var(--surface); border: 1px solid var(--line); border-radius: 8px; padding: 4px; }
tr.tl-dim td { color: var(--muted); }

/* ---------- genre pages: how to play it on guitar / bass ---------- */
.gn-gt h3 { margin-top: 8px; }
.gn-gt-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; padding-bottom: 4px; }
.gn-gt-rhythm {
  display: grid; grid-template-columns: repeat(var(--n, 8), minmax(30px, 1fr)); gap: 4px;
  max-width: 640px; min-width: calc(var(--n, 8) * 34px);
}
.gn-gt-slot {
  display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 8px 0;
  border-radius: 8px; background: var(--accent-soft);
}
.gn-gt-slot b { font: 800 16px/1 var(--font-display); color: var(--accent); white-space: nowrap; }
.gn-gt-slot span { font: 600 11px var(--font-mono); color: var(--muted); }
.gn-gt-slot.rest, .gn-gt-slot.ghost { background: var(--surface-2); }
.gn-gt-slot.rest b { color: var(--muted); }
.gn-gt-slot.ghost b { color: var(--fg); }
.gn-gt-tile.on { border-color: var(--accent); background: var(--accent-soft); }
.gn-gt-tab { font-size: 13px; }
.gn-gt-tips { margin: 0; padding-left: 1.2em; display: flex; flex-direction: column; gap: 6px; max-width: 68ch; }
