:root { --bg: #1f2124; --card: #2a2d31; --text: #e8e6e3; --muted: #a3a6ab; --line: #3d4146;
  --accent: #d9534f; --good: #7fb24a; --bad: #e0675f; }
* { box-sizing: border-box; }
html, body { margin: 0; background: var(--bg); color: var(--text);
  font: 17px/1.45 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; }
header { display: flex; align-items: center; gap: 12px; padding: 10px 16px; border-bottom: 1px solid var(--line);
  padding-top: calc(10px + env(safe-area-inset-top, 0px)); }
header .title { font-weight: 600; flex: 1; }
a { color: var(--muted); }
main { max-width: 520px; margin: 0 auto; padding: 14px; }
.card { background: var(--card); border-radius: 10px; padding: 14px 16px; margin-bottom: 14px; }
.card h3 { margin: 4px 0 8px; font-size: 14px; color: var(--muted); font-weight: 600; text-transform: uppercase;
  letter-spacing: .04em; }
.prompt { font-size: 20px; font-weight: 600; margin: 0 0 6px; }
.sub { color: var(--muted); font-size: 14px; margin: 0 0 10px; }
.opt { color: var(--muted); font-weight: 400; font-size: 13px; }
fieldset.reading { border: 1px solid var(--line); border-radius: 8px; margin: 0 0 12px; padding: 8px 10px 12px;
  display: flex; align-items: flex-end; gap: 8px; flex-wrap: wrap; }
legend { padding: 0 4px; font-size: 14px; font-weight: 600; }
label { display: flex; flex-direction: column; font-size: 13px; color: var(--muted); gap: 3px; }
fieldset input { width: 4.2em; font: inherit; font-size: 24px; padding: 6px 8px; border-radius: 6px;
  border: 1px solid var(--line); background: var(--bg); color: var(--text); text-align: center; }
.slash { font-size: 26px; color: var(--muted); padding-bottom: 6px; }
label.pulse { margin-left: auto; }
label.pulse input { width: 3.6em; font-size: 20px; }
label.note { margin-bottom: 14px; }
label.note input { font: inherit; padding: 8px 10px; border-radius: 6px; border: 1px solid var(--line);
  background: var(--bg); color: var(--text); width: 100%; }
input:invalid, input.bad { border-color: var(--bad); }
button.primary { width: 100%; font: inherit; font-weight: 600; font-size: 18px; padding: 12px; border: 0;
  border-radius: 8px; background: var(--accent); color: #fff; }
button.primary:disabled { opacity: .6; }
.row { display: flex; gap: 8px; margin-top: 10px; }
.feedback { min-height: 1.4em; margin: 10px 0 0; font-size: 15px; }
.feedback.ok { color: var(--good); }
.feedback.err { color: var(--bad); }
.avg { font-size: 26px; font-weight: 700; margin: 0 0 14px; }
.avg small { font-size: 14px; font-weight: 400; color: var(--muted); }
table { width: 100%; border-collapse: collapse; font-size: 15px; }
td { padding: 6px 4px; border-top: 1px solid var(--line); vertical-align: top; }
td.when { color: var(--muted); white-space: nowrap; }
td.val { font-weight: 600; white-space: nowrap; }
td.val small, td .note { color: var(--muted); font-weight: 400; font-size: 13px; }
td .note { white-space: normal; margin-top: 2px; }
