:root{
  --font-ui:Inter,system-ui,sans-serif;
  --font-display:"Source Serif 4",Georgia,serif;
  --font-mono:ui-monospace,Menlo,monospace;
}

/* Shared reading rhythm. Tool controls keep their compact type; prose gets
   enough size and leading to remain comfortable through a full lesson. */
body:not(.in-course) .page main > .lede,
body:not(.in-course) .page main .read,
body:not(.in-course) .page main > section.part > p:not(.kicker){
  font-size:16px;
  line-height:1.62;
}

/* Course and reference headings use the same direct sans serif as the app
   chrome. The display serif is reserved for the few large, expressive titles. */
.page main h1,
.page main h2,
.page main h3,
.page main h4,
#course h1,
#course h2,
#course h3,
#course h4,
.course-picker strong,
.lesson-name,
.rail-head strong,
.trc h1,
.trc h2,
.trc h3,
.trc h4,
.trc-lesson-name,
.tool-heading h1{
  font-family:var(--font-ui);
  letter-spacing:-.025em;
}

/* On iOS a tap is held open for a possible double-tap-to-zoom, and a second
   tap that comes quickly on the same control — play then pause, zoom + +,
   tempo −4 −4, an arrow key twice — is taken as the double tap and never
   becomes a click. Every control opts out of that gesture (the page still
   scrolls and pinches), so each tap is a tap. */
button, [role=button], a, label, summary, input, select, textarea{ touch-action:manipulation; }
