/*
 * SAZBA ŽALMŮ 2. GENERACE
 * -----------------------
 * Kolegova psalm.css z balíčku Olejník (MisalleBases_Noty2Generace,
 * olejnik/ole_web/shared). Pravidla pro sazbu jsou převzatá beze změny,
 * jen omezená na .psalm — původně to byla samostatná stránka a pravidla
 * pro body, button nebo textarea by v misálu a v redakci rozbila okolí.
 *
 * Sazba not je vygenerována abcjs do SVG a následně opravována psalm.js.
 * Neměňte .score/svg rozměry bez testu na malém mobilním displeji.
 * .psalm-playing je třída právě hrané noty (synchronizace zvuku a SVG).
 * .psalm-audio-hidden je potřebné audio SVG mimo obrazovku – nemažte.
 */

/* Noty jsou na papíře: abcjs kreslí barvou textu a závorky nepovinných not
   jsou černé natvrdo, takže i v tmavém vzhledu zůstává pozadí bílé. */
.psalm { background: #fff; color: #000; border-radius: .4rem; padding: .25rem .5rem; }
.psalm-error { color: #a00; white-space: pre-wrap; }
.psalm-error:empty { display: none; }

/* Každý systém má své přirozené měřítko; na mobilu se jen zmenší. */
.psalm .score { margin: .75rem 0 1.5rem; min-width: 0; overflow: hidden; }
/* Rozměry SVG nastavuje JavaScript přímo, bez transformací a rámečků. */
.psalm .score > svg {
  display: block;
  max-width: none;
  height: auto;
}
.psalm .tune { border-bottom: 1px solid #ddd; padding: .5rem 0; }
.psalm .tune h3 { margin: .6rem 0 .15rem; font: italic normal 0.95rem/1.3 Georgia, serif; color: inherit; }
.psalm .verse-text { margin: 1rem 0 1.5rem 3rem; font-family: Georgia, serif; }
.psalm .verse-text p { margin: .2rem 0; }
/* Druhý a případné další řádky každé textové sloky. */
.psalm .verse-text .verse-indent { padding-left: 2rem; }
.psalm .verse-text .verse-response { margin-top: .8rem; font-size: .9em; font-style: italic; }
.psalm .verse-text u { text-underline-offset: .15em; }
/* LilyPond \skoba / \skobicka: oblouček pod jedinou slabikou. */
.psalm .verse-text .psalm-verse-undertie {
  display: inline-block;
  position: relative;
  white-space: nowrap;
}
.psalm .verse-text .psalm-verse-undertie::after {
  content: '';
  position: absolute;
  left: 1px;
  right: 1px;
  bottom: -0.18em;
  height: 0.22em;
  border-bottom: 1px solid currentColor;
  border-radius: 0 0 50% 50%;
  pointer-events: none;
}

/* Jediné místo, kde měníme barvu právě hrané noty. */
:root { --psalm-playing-color: #d32f2f; }
/* Zvýraznění se aplikuje na viditelnou partituru, nikoli audio kopii. */
.psalm .score .abcjs-note.psalm-playing,
.psalm .score .abcjs-note.psalm-playing * {
  fill: var(--psalm-playing-color) !important;
  stroke: var(--psalm-playing-color) !important;
}
.psalm .audio-message { font-size: .8rem; color: #666; margin: .25rem 0; }

/* Jediný panel Play/Stop a přepínače pro celý žalm. */
.psalm .psalm-player { margin: .7rem 0 1rem; padding: .8rem; background: #f7f7f7; border: 1px solid #ddd; border-radius: .5rem; }
.psalm .psalm-player label { display: flex; align-items: center; gap: .6rem; margin-bottom: .6rem; }
.psalm .psalm-player label[hidden] { display: none; }
.psalm .psalm-player input[type=checkbox] { width: 1.2rem; height: 1.2rem; }
.psalm .psalm-player .audio-message { margin: .5rem 0; }
.psalm .psalm-player .tempo-label { font-size: .85rem; color: #555; }
.psalm .tune:last-child { border-bottom: 0; }
@media (max-width: 680px) { .psalm .verse-text { margin-left: 1rem; } .psalm .verse-text .verse-indent { padding-left: .8rem; } }

.psalm .player-buttons { display: flex; gap: .6rem; }
.psalm .player-buttons button { font-size: 1rem; padding: .55rem 1rem; border: 1px solid #bbb; border-radius: .4rem; background: white; color: #000; cursor: pointer; }
.psalm .player-buttons button:disabled { opacity: .45; }
.psalm .psalm-audio-controls { display: none !important; }

/* Audio SVG musí existovat v DOM kvůli kurzoru abcjs, ale není vidět. */
.psalm-audio-hidden { position: fixed; left: -20000px; top: 0; width: 900px; pointer-events: none; opacity: 0; overflow: hidden; }

/* Olejník: consecutive verses belong to one group, without separator lines.
   Scoped classes preserve existing Korejs rendering and spacing. */
.psalm .tune.psalm-olejnik { border-bottom: 0; }
.psalm .tune.psalm-olejnik-verse { padding-top: .12rem; padding-bottom: .12rem; }
.psalm .tune.psalm-olejnik-verse h3 { margin-top: .2rem; margin-bottom: .05rem; }
.psalm .tune.psalm-olejnik-verse .score { margin-top: .2rem; margin-bottom: .45rem; }
/* LilyPond response repeat: left-anchored 'R:' and thin extending line. */
.psalm .psalm-refrain-separator {
  display: flex;
  align-items: center;
  gap: .7rem;
  margin: .5rem 0 .65rem;
  color: #555;
  font: italic 600 .93rem/1.2 Georgia, serif;
}
.psalm .psalm-refrain-separator::after {
  content: '';
  flex: 1;
  border-top: 1px solid #aaa;
}
