/* Recital identities are voices, not gravitational body or pitch-class colors. */
.recital-invitation { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); gap:36px; padding:28px 32px; margin-bottom:32px; background:var(--tint); border-block:1px solid var(--line); align-items:center; }
.recital-invitation .eyebrow { margin-bottom:10px; }
.recital-invitation p { margin-bottom:0; }
.recital-invitation-action { min-width:0; }
#recital-program-play { display:flex; justify-content:space-between; gap:24px; width:100%; min-height:54px; padding:16px 22px; border:1px solid var(--accent); color:var(--paper); background:var(--accent); text-align:left; }
#recital-program-status { margin-top:12px; }
.recital-program { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-bottom:28px; }
.recital-program button { text-align:left; background:transparent; border:1px solid var(--line); border-top:3px solid var(--line); color:var(--ink); padding:20px; transition:background-color var(--fade),border-color var(--fade); }
.recital-program button[aria-pressed="true"] { background:var(--tint); border-color:var(--accent); }
.recital-program span,.recital-program strong,.recital-program small { display:block; }
.recital-program span { font-size:.875rem; color:var(--accent); margin-bottom:14px; }
.recital-program strong { font:1.5rem/1.3 Georgia,serif; margin-bottom:10px; }
.recital-program small { font-size:.9375rem; line-height:1.6; }
.recital-room { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,1fr); border:1px solid var(--line); }
.recital-figure { margin:0; padding:24px; background:var(--dark); color:var(--on-dark); display:flex; flex-direction:column; justify-content:center; }
.recital-figure svg { width:100%; overflow:visible; }
.recital-figure figcaption { padding:20px 12px 4px; font-size:1rem; line-height:1.7; border-top:1px solid var(--on-dark); }
.recital-track { fill:none; stroke:var(--on-dark); stroke-width:1; }
.recital-tick { stroke:var(--on-dark); stroke-width:1.5; }
.recital-origin { fill:var(--on-dark); }
.recital-hand { stroke:currentColor; stroke-width:3; }
.recital-marker { fill:currentColor; }
.recital-voice-a { color:var(--on-dark); }
.recital-voice-b { color:var(--body-2); }
.recital-label { fill:currentColor; font:22px Georgia,serif; }
.recital-desk { min-width:0; padding:30px; background:var(--paper); }
.recital-desk .eyebrow { margin-bottom:12px; }
.recital-desk h3 { font:1.75rem/1.25 Georgia,serif; }
.recital-score { margin:28px 0; }
.recital-score-row { display:grid; grid-template-columns:1.6em repeat(13,minmax(0,1fr)); align-items:center; text-align:center; line-height:2; }
.recital-score-row b { text-align:left; }
.recital-score-row span { border-bottom:2px solid transparent; color:var(--muted); }
.recital-score-row .is-strike { color:var(--ink); font-size:.75rem; }
.recital-score-row .is-current { border-bottom-color:var(--accent); background:var(--tint); }
.recital-score-scale { display:flex; justify-content:space-between; margin-left:1.6em; font-size:.75rem; }
.recital-controls { display:flex; flex-wrap:wrap; gap:12px; align-items:center; }
.recital-transport { display:flex; flex-wrap:wrap; gap:12px; width:100%; }
.recital-settings { width:100%; min-width:0; margin:10px 0; padding:16px 0; border:0; border-block:1px solid var(--line); display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.recital-settings legend { font:1.1875rem Georgia,serif; padding:0 12px 0 0; }
.recital-settings label { display:block; font-size:.875rem; margin-bottom:6px; }
.recital-settings select { width:100%; min-width:0; min-height:44px; border:1px solid var(--muted); padding:7px 4px; color:var(--ink); background:var(--paper); font-size:.9375rem; }
#recital-volume { width:100%; min-height:44px; accent-color:var(--accent); }
.recital-instructions { font-size:.9375rem; margin:20px 0 0; padding-top:16px; border-top:1px solid var(--line); }
.recital-controls button { min-height:44px; padding:8px 16px; background:var(--paper); border:1px solid var(--accent); color:var(--ink); }
#recital-play { background:var(--accent); color:var(--paper); }
#recital-position { width:100%; min-height:44px; accent-color:var(--accent); }
#recital-readout { font-size:.9375rem; font-variant-numeric:tabular-nums; min-height:3.4em; }
#recital-status { margin:16px 0 0; min-height:3.5em; }
.recital-bridge { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:40px; margin:36px 0; }
.recital-bridge .eyebrow { margin-bottom:12px; }
.recital-notes { border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:16px 0; }
.recital-notes summary { min-height:44px; padding:8px 0; }
.recital-notes p { margin:16px 0; }
.recital-notes code { font-size:.9em; overflow-wrap:anywhere; }
@media(max-width:900px) { .recital-room { grid-template-columns:1fr; } .recital-figure svg { max-height:360px; } }
@media(max-width:600px) { .recital-program,.recital-bridge,.recital-invitation,.recital-settings { grid-template-columns:1fr; } .recital-invitation { padding:22px 16px; gap:22px; } .recital-program { gap:10px; } .recital-program button { padding:16px; } .recital-program span { margin-bottom:6px; } .recital-desk { padding:20px 16px; } .recital-figure { padding:20px 10px; } .recital-score-scale { font-size:.6875rem; } }
@media(prefers-reduced-motion:reduce) { .recital-program button { transition:none; } }
@media(forced-colors:active) { .recital-figure { background:Canvas; color:CanvasText; } .recital-voice-a,.recital-voice-b { color:CanvasText; } .recital-track,.recital-tick { stroke:CanvasText; } .recital-origin { fill:CanvasText; } .recital-program button[aria-pressed="true"],.recital-score-row .is-current { outline:2px solid Highlight; } }
