Build and Push Docker Images / Build Backend (FastAPI) (push) Successful in 17s
Build and Push Docker Images / Build Frontend (Next.js) (push) Successful in 53s
Build and Push Docker Images / Build Pipeline (Meltano + dbt + Airflow) (push) Successful in 12s
Build and Push Docker Images / Trigger Portainer Update (push) Successful in 0s
Replace the faint middot separators on the characteristics line with subtle borderless "quiet chips" so each attribute (type, age, faith, gender) is its own scannable unit. Keep the coloured phase pill as the one accent, and align every chip — including phase and provision tags — to a single size/weight/radius (0.75rem / 600 / 4px). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
269 lines
6.3 KiB
CSS
269 lines
6.3 KiB
CSS
.row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 1rem;
|
|
background: var(--bg-card, white);
|
|
border: 1px solid var(--border-color, #e5dfd5);
|
|
border-left: 3px solid transparent;
|
|
border-radius: 8px;
|
|
padding: 1rem 1.25rem;
|
|
transition: border-color 0.15s ease, box-shadow 0.15s ease;
|
|
animation: rowFadeIn 0.3s ease-out both;
|
|
}
|
|
|
|
.row:hover {
|
|
box-shadow: 0 2px 8px rgba(26, 22, 18, 0.06);
|
|
}
|
|
|
|
/* Phase border colours */
|
|
.phaseSecondary { border-left-color: var(--phase-secondary, #9b6bb0); }
|
|
.phaseAllThrough { border-left-color: var(--phase-all-through, #7a9a6d); }
|
|
.phasePost16 { border-left-color: var(--phase-post16, #c4915e); }
|
|
|
|
.rowInCompare {
|
|
border-left-color: var(--accent-teal, #2d7d7d);
|
|
background: var(--bg-secondary, #f3ede4);
|
|
}
|
|
|
|
@keyframes rowFadeIn {
|
|
from { opacity: 0; transform: translateY(6px); }
|
|
to { opacity: 1; transform: translateY(0); }
|
|
}
|
|
|
|
/* ── Left content column ─────────────────────────────── */
|
|
.rowContent {
|
|
flex: 1;
|
|
min-width: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.35rem;
|
|
}
|
|
|
|
/* Line 1: name + ofsted */
|
|
.line1 {
|
|
display: flex;
|
|
align-items: baseline;
|
|
gap: 0.625rem;
|
|
min-width: 0;
|
|
}
|
|
|
|
.schoolName {
|
|
font-size: 0.9375rem;
|
|
font-weight: 600;
|
|
color: var(--text-primary, #1a1612);
|
|
text-decoration: none;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
flex-shrink: 1;
|
|
min-width: 0;
|
|
}
|
|
|
|
.schoolName:hover {
|
|
color: var(--accent-coral, #e07256);
|
|
}
|
|
|
|
/* Line 2: context tags */
|
|
.line2 {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: 0.35rem;
|
|
}
|
|
|
|
/* Quiet chip — one shared size/weight for every attribute (Ages, type, etc.);
|
|
the phase pill keeps its colour but matches this sizing. */
|
|
.attr {
|
|
display: inline-block;
|
|
padding: 0.0625rem 0.4rem;
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
line-height: 1.4;
|
|
border-radius: 4px;
|
|
white-space: nowrap;
|
|
background: rgba(26, 22, 18, 0.05);
|
|
color: var(--text-secondary, #5c564d);
|
|
}
|
|
|
|
/* Line 3: KS4 stats */
|
|
.line3 {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: 0 1.25rem;
|
|
}
|
|
|
|
.stat {
|
|
display: inline-flex;
|
|
align-items: baseline;
|
|
gap: 0.3rem;
|
|
}
|
|
|
|
.statValueLarge {
|
|
font-size: 1.125rem;
|
|
font-weight: 700;
|
|
color: var(--text-primary, #1a1612);
|
|
font-family: var(--font-playfair), 'Playfair Display', serif;
|
|
}
|
|
|
|
.statValue {
|
|
font-size: 0.9375rem;
|
|
font-weight: 700;
|
|
color: var(--text-primary, #1a1612);
|
|
font-family: var(--font-playfair), 'Playfair Display', serif;
|
|
}
|
|
|
|
.statLabel {
|
|
font-size: 0.75rem;
|
|
color: var(--text-muted, #8a847a);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.delta {
|
|
font-size: 0.8125rem;
|
|
font-weight: 600;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.deltaPositive { color: #3c8c3c; }
|
|
.deltaNegative { color: var(--accent-coral, #e07256); }
|
|
|
|
/* Line 4: location + distance */
|
|
.line4 {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: 0;
|
|
font-size: 0.8rem;
|
|
color: var(--text-muted, #8a847a);
|
|
}
|
|
|
|
.line4 span:not(:last-child)::after {
|
|
content: '·';
|
|
margin: 0 0.4rem;
|
|
color: var(--border-color, #e5dfd5);
|
|
}
|
|
|
|
.distanceBadge {
|
|
display: inline-block;
|
|
padding: 0.0625rem 0.375rem;
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
background: var(--accent-teal, #2d7d7d);
|
|
color: white;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
/* Phase label pill */
|
|
.phaseLabel {
|
|
display: inline-block;
|
|
padding: 0.0625rem 0.4rem;
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
line-height: 1.4;
|
|
border-radius: 4px;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.phaseLabelSecondary { background: var(--phase-secondary-bg); color: var(--phase-secondary-text); }
|
|
.phaseLabelAllThrough { background: var(--phase-all-through-bg); color: var(--phase-all-through-text); }
|
|
.phaseLabelPost16 { background: var(--phase-post16-bg); color: var(--phase-post16-text); }
|
|
|
|
.provisionTag {
|
|
display: inline-block;
|
|
padding: 0.0625rem 0.4rem;
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
line-height: 1.4;
|
|
background: rgba(26, 22, 18, 0.05);
|
|
color: var(--text-secondary, #5c564d);
|
|
border-radius: 4px;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.selectiveTag {
|
|
background: rgba(180, 120, 0, 0.1);
|
|
color: #8a6200;
|
|
}
|
|
|
|
/* ── Ofsted badge ────────────────────────────────────── */
|
|
.ofstedBadge {
|
|
display: inline-block;
|
|
padding: 0.0625rem 0.375rem;
|
|
font-size: 0.6875rem;
|
|
font-weight: 600;
|
|
border-radius: 3px;
|
|
white-space: nowrap;
|
|
flex-shrink: 0;
|
|
line-height: 1.4;
|
|
}
|
|
|
|
.ofstedDate {
|
|
font-weight: 400;
|
|
}
|
|
|
|
.ofsted1 { background: var(--accent-teal-bg); color: var(--accent-teal, #2d7d7d); }
|
|
.ofsted2 { background: rgba(60, 140, 60, 0.12); color: #3c8c3c; }
|
|
.ofsted3 { background: var(--accent-gold-bg); color: #b8920e; }
|
|
.ofsted4 { background: var(--accent-coral-bg); color: var(--accent-coral, #e07256); }
|
|
|
|
/* ── Ofsted badge variants ──────────────────────────────────────────────── */
|
|
.ofstedRc { background: #5a3a6e; color: #fff; }
|
|
/* Inspected but with no overall grade (OEIF post-Sept-2024) — neutral slate,
|
|
distinct from the grey "Not yet inspected" pending state. */
|
|
.ofstedInspected { background: #e6ecf2; color: #45586b; }
|
|
.ofstedPending { background: #e0e0e0; color: #666; }
|
|
|
|
/* ── Right actions column ────────────────────────────── */
|
|
.rowActions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.rowActions > * {
|
|
height: 2rem;
|
|
line-height: 1;
|
|
font-family: inherit;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
/* ── Mobile ──────────────────────────────────────────── */
|
|
@media (max-width: 640px) {
|
|
.row {
|
|
flex-wrap: wrap;
|
|
padding: 0.875rem;
|
|
gap: 0.625rem;
|
|
}
|
|
|
|
.rowContent {
|
|
flex-basis: 100%;
|
|
}
|
|
|
|
.schoolName {
|
|
white-space: normal;
|
|
}
|
|
|
|
/* Promote the headline metric (Attainment 8) onto its own line so
|
|
the secondary stats — delta vs LA, pupils — wrap below it with
|
|
visible row gap instead of crowding the same row. */
|
|
.line3 {
|
|
row-gap: 0.25rem;
|
|
column-gap: 1rem;
|
|
}
|
|
.line3 > .stat:first-child {
|
|
flex-basis: 100%;
|
|
}
|
|
|
|
.rowActions {
|
|
width: 100%;
|
|
gap: 0.375rem;
|
|
}
|
|
|
|
.rowActions > * {
|
|
flex: 1;
|
|
justify-content: center;
|
|
}
|
|
}
|