blindspot / frontend /src /pages /Start.module.css
yashwrites's picture
Volumetric CT/MR: scan types, volume viewer, 3D grading, provenance badges (part 2)
7e30344 verified
Raw History Blame Contribute Delete
4.85 kB
/* /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; }