@font-face { font-family: 'Jacques Francois'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/jacques-francois.ttf') format('truetype'); }
:root { color-scheme: light; --light: #fcfaf3; --line: #e6dfd0; --text: #6a5a4a; --heading: #5b493a; --link: #556b2f; --highlight: rgba(147,173,122,.15); }
@media (prefers-color-scheme: dark) { :root { color-scheme: dark; --light: #161412; --line: #302b26; --text: #a99e91; --heading: #dcd3c5; --link: #93ad7a; } }
* { box-sizing: border-box; }
body { margin: 0; background: var(--light); color: var(--text); font: 1.1rem/1.65 'Jacques Francois', Georgia, serif; }
main { max-width: 720px; margin: 1.75rem auto; padding: 0 1.25rem; }
h1,h2 { font-family: 'Jacques Francois', Georgia, serif; color: var(--heading); line-height: 1.3; }
h1 { font-size: 1.75rem; margin: 0 0 .75rem; font-weight: 600; }
h2 { font-size: 1.25rem; margin: 1rem 0 .25rem; font-weight: 600; }
a { color: var(--link); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: .2em; }
a:focus-visible, button:focus-visible, select:focus-visible, input:focus-visible { outline: 2px solid var(--link); outline-offset: 4px; }
ul { padding-left: 1.4rem; margin: .25rem 0; }
li { margin-bottom: 0; line-height: 1.5; }
.index { column-count: 2; column-gap: 2.5rem; font-size: 1rem; }
.index h1 { column-span: all; }
.index section { break-inside: avoid; padding-top: 1rem; }
.index h2 { margin-top: 0; }
.duration { font-size: .875rem; margin-left: .6rem; white-space: nowrap; }
.back { display: inline-block; margin-bottom: .75rem; }
.player { max-width: 560px; }
.player h1 { margin-bottom: 1rem; font-size: 1.3rem; font-weight: 400; text-align: center; }
.player h1 strong { font-weight: 700; white-space: nowrap; }
.player-art { margin: 1.25rem 0 .5rem; text-align: center; }
.player-art img { display: block; width: 176px; max-width: 100%; height: auto; margin: 0 auto; }
.player-art a { display: inline-block; }
@media (prefers-color-scheme: dark) { .player-art img { filter: invert(1); } }
.timeline { display: block; width: 100%; height: 44px; margin: 0; padding: 0; accent-color: var(--link); cursor: pointer; }
.times { display: flex; justify-content: space-between; font-variant-numeric: tabular-nums; font-size: .9rem; line-height: 1.3; margin: -.5rem 0 .25rem; }
.controls { display: grid; grid-template-columns: 1fr 1fr 3.5rem 1fr 1fr; align-items: center; gap: .4rem; width: 18rem; max-width: 100%; margin: 0 auto; }
button,select { font: inherit; font-size: 1rem; color: var(--heading); background: transparent; border: 0; min-height: 44px; padding: 0; cursor: pointer; }
button:hover,select:hover { color: var(--link); }
button:disabled,input:disabled { opacity: .5; cursor: default; }
.skip { display: grid; place-items: center; width: 100%; }
.skip svg { width: 36px; height: 36px; }
.skip text { font: 600 15px 'Jacques Francois', Georgia, serif; fill: currentColor; }
#play { display: grid; place-items: center; width: 3.5rem; height: 3.5rem; border-radius: 50%; background: var(--link); color: var(--light); }
#play:hover { opacity: .85; }
#play svg { width: 28px; height: 28px; }
#play .pause-icon, #play[data-state="playing"] .play-icon { display: none; }
#play[data-state="playing"] .pause-icon { display: block; }
.speed { display: block; min-width: 0; }
.speed select { width: 100%; text-align: center; appearance: none; font-family: 'Jacques Francois', Georgia, serif; font-size: 1.1rem; font-weight: 400; }
.speed select:focus { outline: none; }
html[data-input="keyboard"] .speed select:focus { outline: 2px solid var(--link); outline-offset: 4px; border-radius: 4px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
#status { min-height: 1.65em; margin-top: 1rem; font-size: .9rem; }
#status:empty { min-height: 0; margin: 0; }
.lesson-description { margin-top: 1.5rem; font-size: 1rem; line-height: 1.65; text-align: left; overflow-wrap: anywhere; }
.lesson-description p, .lesson-description ul { margin: 0 0 .75rem; }
.lesson-description li { margin-bottom: .25rem; }
.lesson-description > :last-child { margin-bottom: 0; }
audio { width: 100%; }
[hidden] { display: none !important; }
::selection { background: var(--highlight); }
@media (max-width: 600px) { main { margin: 1.25rem auto; } .index { column-count: 1; } }

.controls.with-ambient { width: 100%; grid-template-columns: minmax(0, 1fr) 2.75rem 3.5rem 2.75rem minmax(0, 1fr); }
.with-ambient .speed { width: 3.5rem; justify-self: end; }
.ambient { min-width: 0; width: 100%; padding-left: .25rem; }
.ambient select { width: 100%; min-width: 0; font-size: .8rem; }
.ambient select option { background: var(--light); color: var(--text); }
.ambient select:focus { outline: none; }
html[data-input="keyboard"] .ambient select:focus { outline: 2px solid var(--link); outline-offset: 4px; }
#ambient-status { margin: .75rem 0 0; font-size: .9rem; }
#ambient-status:empty { margin: 0; }
@media (max-width: 480px) {
  .controls.with-ambient { width: 18rem; grid-template-columns: 1fr 1fr 3.5rem 1fr 1fr; }
  .with-ambient .speed { width: 100%; }
  .ambient { grid-column: 1 / -1; justify-self: end; width: auto; max-width: 100%; padding-left: 0; }
  .ambient select { width: auto; max-width: 100%; }
}
