/* Inherit the book's existing Song typeface; no font download or page scrolling. */
.ensemble{--ensemble-green:var(--red,#a33f1f);--ensemble-paper:var(--paper,#eee6d4);--ensemble-ink:var(--ink,#20251e);--ensemble-line:#80644c;container-type:inline-size;color:var(--ensemble-ink);font:inherit;display:grid;grid-template-rows:auto auto minmax(min-content,1fr) auto;gap:6px;width:100%;height:100%;min-width:0}
.ensemble *{box-sizing:border-box}
.ensemble button{font:inherit;font-size:12px;line-height:1.15;min-height:44px;padding:5px;border:1px solid var(--ensemble-line);border-radius:0;color:inherit;background:transparent;cursor:pointer;touch-action:manipulation;letter-spacing:0;min-width:0}
.ensemble button:focus-visible{outline:2px solid var(--ensemble-green);outline-offset:2px}
.ensemble button:active{background:#a33f1f25}
.ensemble button[aria-pressed=true]{box-shadow:inset 0 -3px var(--ensemble-green)}
.ensemble-presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.ensemble-preset.is-pending,.ensemble-chord.is-pending{border-style:dashed}
.ensemble-preset[aria-pressed=true],.ensemble-chord[aria-pressed=true]{font-weight:700}
.ensemble-controls{display:flex;align-items:center;gap:8px;min-height:44px;font-size:12px;line-height:1.3;font-variant-numeric:tabular-nums}
.ensemble .ensemble-play{background:var(--ensemble-green);color:var(--ensemble-paper);font-weight:700;min-width:96px;padding-inline:10px;box-shadow:none}
.ensemble-chords{display:grid;grid-template-columns:repeat(2,44px);gap:4px}.ensemble-meta{display:flex;flex-direction:column;align-items:flex-end;gap:2px;margin-left:auto}.ensemble-tempo,.ensemble-bar{white-space:nowrap}
.ensemble-parts{display:grid;grid-auto-rows:minmax(min-content,1fr);gap:6px;min-width:0}
.ensemble-part{display:grid;grid-template-columns:66px minmax(0,1fr) 44px;align-items:center;gap:8px;min-width:0;min-height:48px;padding:0;margin:0}
.ensemble .ensemble-toggle{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;min-height:48px;padding:4px 6px;text-align:left;border-color:transparent;border-left:3px solid var(--ensemble-green);box-shadow:none;position:relative}
.ensemble-toggle strong{font-size:13px;line-height:1.25}.ensemble-part-state{font-size:12px;line-height:1.25}.ensemble-detail{display:none}
.ensemble .ensemble-toggle[aria-pressed=false]{border-left-style:dashed;background:transparent}
.ensemble .ensemble-solo{width:44px;min-height:44px;padding:3px;font-size:12px}
.ensemble .ensemble-solo[aria-pressed=true]{background:var(--ensemble-green);color:var(--ensemble-paper);box-shadow:none}
.ensemble-graph{min-width:0;display:grid;gap:2px}.ensemble-lane{display:grid;grid-template-columns:22px minmax(0,1fr);gap:3px;align-items:center;min-width:0;height:16px}
.ensemble-lane-name{font-size:12px;line-height:16px;color:var(--ensemble-ink);white-space:nowrap}
.ensemble-steps{display:grid;grid-template-columns:repeat(16,minmax(0,1fr));gap:1px;height:10px;min-width:0}
.ensemble-step{border-bottom:1px solid var(--ensemble-line);position:relative;min-width:0;height:10px}
.ensemble-step.beat-start{border-left:1px solid var(--ensemble-line)}
.ensemble-step.has-note:after{content:'';position:absolute;inset:2px 1px;background:var(--ensemble-green);border:1px solid var(--ensemble-green)}
.ensemble-step.is-current{outline:1px solid var(--ensemble-green);outline-offset:0;background:#a33f1f20}
.ensemble-part.is-muted .ensemble-step.has-note:after{background:transparent;border-style:dotted}
.ensemble-notes{font-size:12px;line-height:1.2;overflow-wrap:anywhere;margin-left:25px}
.ensemble .ensemble-status{font:inherit;font-size:12px;line-height:1.35;min-height:17px;margin:0;padding:0;overflow-wrap:anywhere}
.ensemble-step.is-soft:after{opacity:.45}
@media(max-height:620px){@container (min-width:520px){.ensemble-parts{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px}.ensemble-part{grid-template-columns:74px minmax(0,1fr) 44px}.ensemble-toggle strong{font-size:14px}.ensemble-presets{max-width:420px}.ensemble-controls{max-width:420px}.ensemble-steps{height:14px}.ensemble-step{height:14px}.ensemble-lane{height:17px}}}
@media(min-height:700px){.ensemble{gap:12px}.ensemble-parts{gap:12px}.ensemble-part{min-height:56px;grid-template-columns:74px minmax(0,1fr) 44px}.ensemble .ensemble-toggle{min-height:52px}.ensemble-graph{gap:4px}.ensemble-lane{height:20px}.ensemble-steps,.ensemble-step{height:14px}.ensemble-toggle strong{font-size:14px}.ensemble button{font-size:13px}}
@media(prefers-reduced-motion:reduce){.ensemble *{animation:none!important;transition:none!important}}
.ensemble-part[data-part=bass] .ensemble-lane{grid-template-columns:28px minmax(0,1fr)}
.ensemble-part[data-part=bass] .ensemble-notes{margin-left:31px}

.ensemble-swing{display:grid;grid-template-columns:88px minmax(44px,1fr) 38px;gap:8px;align-items:center;min-height:44px;font-size:12px;line-height:1.3;position:relative}
.ensemble-swing-label{font-weight:700}.ensemble-swing-label small{display:block;font-size:12px;font-weight:400;white-space:nowrap}.ensemble-swing-value{text-align:right;font-variant-numeric:tabular-nums}
.ensemble .ensemble-swing-range{width:100%;min-width:44px;min-height:44px;height:44px;margin:0;padding:0;accent-color:var(--ensemble-green);cursor:pointer;touch-action:none}
.ensemble-swing-range:focus-visible{outline:2px solid var(--ensemble-green);outline-offset:2px}
.ensemble .ensemble-status{position:absolute!important;width:1px;height:1px;min-height:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(max-height:620px){.ensemble{gap:4px}}

.ensemble-step.is-open:after{background:transparent;border-radius:50%;border:1px solid var(--ensemble-green)}
