File size: 4,846 Bytes
2706212
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7e30344
 
 
 
 
 
 
 
 
 
 
 
 
 
2706212
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4b71cdf
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/* /start: one report column, four short questions separated by rules (SPEC §14.2). No cards. */
.block { padding: 20px 0 18px; }
.block + .block { border-top: 1px solid var(--report-rule); }
/* A fieldset's legend would sit on its top border, so the rule belongs to the wrapper and the fieldset is bare. */
.plain { border: none; margin: 0; padding: 0; min-width: 0; }
.q { font-size: var(--fs-2); font-weight: 700; margin: 0 0 10px; padding: 0; }
.hint { color: var(--report-ink-muted); font-size: var(--fs-1); line-height: 1.45; margin: 6px 0 0; }
.input {
  font: inherit;
  padding: 9px 12px;
  border: 1px solid #b9c2ca;
  border-radius: var(--radius);
  background: #fff;
  color: var(--report-ink);
  width: 100%;
  max-width: 380px;
}
.input:focus-visible, .linkBtn:focus-visible, .primary:focus-visible, .select:focus-visible { outline: 2px solid var(--grease-amber); outline-offset: 2px; }
.welcome { margin: 0; font-size: var(--fs-2); }
.linkBtn { background: none; border: none; padding: 0; font: inherit; font-size: var(--fs-1); color: var(--report-ink); text-decoration: underline; cursor: pointer; }

/* The practice choices: ruled rows; the chosen row carries an amber bar on its left edge. */
.choices { margin-bottom: -8px; }
.choice {
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr);
  column-gap: 10px;
  align-items: baseline;
  padding: 11px 10px 11px 12px;
  border-top: 1px solid var(--report-rule);
  border-left: 3px solid transparent;
  cursor: pointer;
}
.choice input { accent-color: var(--report-ink); margin: 0; transform: translateY(2px); }
.choiceOn { border-left-color: var(--grease-amber); background: #fbfcfc; }
.choiceOff { cursor: default; }
.choiceOff .name { color: var(--report-ink-muted); }
.name { font-weight: 700; }
.note { display: block; color: var(--report-ink-muted); font-size: var(--fs-1); line-height: 1.45; margin-top: 2px; }
.pick { display: flex; align-items: center; gap: 8px; margin-top: 8px; font-size: var(--fs-1); color: var(--report-ink-muted); }
.select { font: inherit; font-size: var(--fs-1); color: var(--report-ink); padding: 6px 10px; border: 1px solid #b9c2ca; border-radius: var(--radius); background: #fff; }

/* 5 / 10 / 20: a short segmented row. */
.counts { display: inline-flex; border: 1px solid #b9c2ca; border-radius: var(--radius); overflow: hidden; background: #fff; }
.count { position: relative; }
.count input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.count span { display: inline-flex; align-items: center; justify-content: center; min-width: 64px; padding: 8px 14px; font-variant-numeric: tabular-nums; border-left: 1px solid #b9c2ca; }
.count:first-child span { border-left: none; }
.countOn span { background: var(--report-ink); color: #fff; font-weight: 700; }
.count input:focus-visible + span { outline: 2px solid var(--grease-amber); outline-offset: -2px; }

.scanRow { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
/* Scan-type chips: the chosen one is the ink pill with the amber dot (as the old fixed chip was); the others are
   outlined; a scan type the library does not hold yet is muted and says "coming". */
.chip {
  display: inline-flex; align-items: center; gap: 7px; padding: 6px 14px; border-radius: 999px;
  border: 1px solid #b9c2ca; background: #fff; color: var(--report-ink); font: inherit; font-weight: 700; font-size: var(--fs-1); cursor: pointer;
}
.chip::before { content: ''; width: 8px; height: 8px; border-radius: 50%; background: transparent; border: 1px solid #b9c2ca; box-sizing: border-box; }
.chip:focus-visible { outline: 2px solid var(--grease-amber); outline-offset: 2px; }
.chipOn { background: var(--report-ink); border-color: var(--report-ink); color: #fff; }
.chipOn::before { background: var(--grease-amber); border-color: var(--grease-amber); }
.chipOff { color: var(--report-ink-muted); border-style: dashed; cursor: default; font-weight: 400; }
.chipOff::before { display: none; }
.coming { font-size: 12px; font-weight: 400; color: var(--report-ink-muted); }

.go { border-top: 1px solid var(--report-rule); padding: 20px 0 0; }
.half { margin: 0 0 14px; line-height: 1.5; }
.primary {
  padding: 12px 28px;
  border: none;
  border-radius: var(--radius);
  background: var(--report-ink);
  color: #fff;
  font: inherit;
  font-size: var(--fs-2);
  font-weight: 700;
  cursor: pointer;
}
.primary:disabled { background: #a7b0b8; cursor: default; }
.error { padding: 10px 12px; background: #e7ecef; border-left: 3px solid var(--grease-amber); border-radius: 0 4px 4px 0; font-size: var(--fs-1); margin: 0 0 14px; }
.health { color: var(--report-ink-muted); font-size: 14px; line-height: 1.45; margin: 14px 0 0; }

/* Tutor status, when the AI tutor is not live: above the form, with the form's own rhythm. */
.tutorNotice { margin: 4px 0 12px; }