Three presentation faults on the place pages, all found by looking at a rendered page rather than at a test. An unphased place page showed one primary-only measure for a list holding both phases: 8 of 27 rows on /schools/brentwood were blank, because secondaries have no reading-writing-maths score. Picking the other measure would only have inverted which rows were empty, and putting both in one column would have mixed a percentage with a 0-90 score. Each phase now gets its own table, so a blank cell means the school genuinely has no published result — which is worth saying, and now says "Not published" rather than a bare dash. "RWM expected" was invented here. The site already names the measure in METRIC_DEFINITIONS, surfaced at /api/metrics: "Reading, Writing & Maths Combined %". The heading now reads "Reading, writing & maths" with the full definition in the tooltip. Links carried no class at all, so they rendered as default blue underlined browser links beside a site that styles table links as body colour with a brand hover. They now follow RankingsView's convention, and running-copy links take the brand colour. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015mWQnpye9F299NVRCCSRvj
197 lines
3.9 KiB
CSS
197 lines
3.9 KiB
CSS
/* Tokens only — see globals.css. Follows RankingsView's conventions, and in
|
|
particular its link treatment: table links take --text-primary with no
|
|
underline and a brand-coloured hover, not the browser default. The first
|
|
cut used bare <Link> with no class at all, which rendered as default blue
|
|
underlined links and read as unstyled beside the rest of the site. */
|
|
.container {
|
|
width: 100%;
|
|
min-width: 0;
|
|
}
|
|
|
|
.header {
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.header h1 {
|
|
font-size: 2.25rem;
|
|
font-weight: 700;
|
|
color: var(--text-primary);
|
|
margin-bottom: 0.5rem;
|
|
font-family: var(--font-display);
|
|
text-wrap: balance;
|
|
}
|
|
|
|
.summary {
|
|
font-size: 1rem;
|
|
color: var(--text-secondary);
|
|
margin: 0;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
/* Links in running copy: brand colour, underline on hover only. */
|
|
.inlineLink {
|
|
color: var(--brand);
|
|
text-decoration: none;
|
|
transition: color 0.2s ease;
|
|
}
|
|
|
|
.inlineLink:hover {
|
|
color: var(--brand-strong);
|
|
text-decoration: underline;
|
|
}
|
|
|
|
/* Phase variants are separate indexable pages, so the bare place page has to
|
|
link them — a sitemap entry alone leaves them with no internal path in. */
|
|
.phaseLinks {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 0.5rem 0.75rem;
|
|
margin: 0 0 1.25rem;
|
|
}
|
|
|
|
.phaseLink {
|
|
display: inline-block;
|
|
padding: 0.4rem 0.875rem;
|
|
border: 1px solid var(--border-strong);
|
|
border-radius: 999px;
|
|
font-size: 0.875rem;
|
|
font-weight: 500;
|
|
color: var(--text-primary);
|
|
text-decoration: none;
|
|
transition: border-color 0.2s ease, color 0.2s ease;
|
|
}
|
|
|
|
.phaseLink:hover {
|
|
border-color: var(--brand);
|
|
color: var(--brand-strong);
|
|
}
|
|
|
|
/* The one number a list cannot give you, so it gets its own band. */
|
|
.compare {
|
|
background: var(--bg-secondary);
|
|
border: 1px solid var(--border);
|
|
border-radius: 8px;
|
|
padding: 0.875rem 1.125rem;
|
|
margin: 0 0 1.5rem;
|
|
color: var(--text-primary);
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.ofsted {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 0.5rem 1.25rem;
|
|
list-style: none;
|
|
padding: 0;
|
|
margin: 0 0 1.5rem;
|
|
font-size: 0.9375rem;
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
.group {
|
|
margin-bottom: 2rem;
|
|
}
|
|
|
|
.groupHeading {
|
|
display: flex;
|
|
align-items: baseline;
|
|
gap: 0.625rem;
|
|
font-size: 1.25rem;
|
|
font-weight: 600;
|
|
color: var(--text-primary);
|
|
font-family: var(--font-display);
|
|
margin: 0 0 0.75rem;
|
|
}
|
|
|
|
.groupCount {
|
|
font-size: 0.8125rem;
|
|
font-weight: 500;
|
|
color: var(--text-secondary);
|
|
background: var(--bg-secondary);
|
|
border-radius: 999px;
|
|
padding: 0.125rem 0.5rem;
|
|
}
|
|
|
|
/* Wide content scrolls in its own container so the page body never does. */
|
|
.tableWrap {
|
|
overflow-x: auto;
|
|
border: 1px solid var(--border);
|
|
border-radius: 8px;
|
|
background: var(--bg-card);
|
|
}
|
|
|
|
.table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
font-size: 0.9375rem;
|
|
}
|
|
|
|
.table th,
|
|
.table td {
|
|
padding: 0.75rem 1rem;
|
|
text-align: left;
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
|
|
.table th {
|
|
background: var(--bg-secondary);
|
|
color: var(--text-secondary);
|
|
font-weight: 600;
|
|
font-size: 0.8125rem;
|
|
}
|
|
|
|
.table tbody tr:last-child td {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.table th:last-child,
|
|
.num {
|
|
text-align: right;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
/* The measure is spelled out; the tooltip carries the definition. */
|
|
.metricHead {
|
|
text-decoration: none;
|
|
cursor: help;
|
|
border-bottom: 1px dotted var(--border-strong);
|
|
}
|
|
|
|
/* Table links: site convention is body colour, brand on hover. */
|
|
.schoolLink {
|
|
color: var(--text-primary);
|
|
text-decoration: none;
|
|
transition: color 0.2s ease;
|
|
}
|
|
|
|
.schoolLink:hover {
|
|
color: var(--brand-strong);
|
|
}
|
|
|
|
/* "Not published" is a fact about the school, not an error. */
|
|
.noData {
|
|
color: var(--text-muted);
|
|
font-size: 0.8125rem;
|
|
}
|
|
|
|
.neighbours {
|
|
margin-top: 2rem;
|
|
}
|
|
|
|
.neighbours h2 {
|
|
font-size: 1.125rem;
|
|
font-weight: 600;
|
|
color: var(--text-primary);
|
|
margin: 0 0 0.75rem;
|
|
font-family: var(--font-display);
|
|
}
|
|
|
|
.neighbours ul {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 0.5rem 1rem;
|
|
list-style: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|