Files

1159 lines
25 KiB
CSS
Raw Permalink Normal View History

2026-03-28 22:36:00 +00:00
/* SecondarySchoolDetailView — borrows heavily from SchoolDetailView.module.css */
.container {
2026-04-16 11:46:32 +01:00
width: 100%;
2026-03-28 22:36:00 +00:00
}
/* Standalone back link, sits above the header card on the page background. */
.topBack {
display: inline-flex;
align-items: center;
gap: 0.4rem;
margin: 0 0 0.75rem;
padding: 0.25rem 0;
font-size: 1.0625rem;
font-weight: 600;
color: var(--accent-coral-dark, #b04a2e);
background: none;
border: none;
cursor: pointer;
line-height: 1.2;
transition: color 0.15s ease;
}
.topBack:hover {
color: var(--accent-coral-dark, #c85a3e);
text-decoration: underline;
text-underline-offset: 2px;
}
2026-03-28 22:36:00 +00:00
/* ── Header ──────────────────────────────────────────── */
.header {
position: relative;
2026-04-16 11:46:32 +01:00
background: var(--bg-card, white);
border: 1px solid var(--border-color, #e5dfd5);
border-radius: 10px;
/* Padding lives on .headerContent so the map band can bleed to the edges. */
padding: 0;
2026-04-16 11:46:32 +01:00
margin-bottom: 0;
box-shadow: var(--shadow-soft);
overflow: hidden;
2026-03-28 22:36:00 +00:00
}
.headerContent {
2026-04-16 11:46:32 +01:00
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 1.5rem;
padding: 1.25rem 1.5rem;
}
/* With a map band above, slide the title up under the fade so map and title
read as one object; the Compare button floats glassy over the map. */
.headerHasMap .headerContent {
padding-top: 0;
margin-top: -0.5rem;
}
/* The title (not the whole content row) rises above the map fade. Keeping
.headerContent unpositioned matters: .actions must anchor to .header so it
floats over the map band, not over the title. */
.headerHasMap .titleSection {
position: relative;
z-index: 3;
}
.headerHasMap .actions {
position: absolute;
top: 14px;
right: 14px;
z-index: 6;
margin: 0;
/* Beat the mobile `.actions { width: 100% }` rule — a floating button
must never stretch across the title. */
width: auto;
}
.headerHasMap .actions .btnAdd {
background: rgba(255, 255, 255, 0.9);
color: var(--accent-coral-dark, #b04a2e);
border-color: transparent;
-webkit-backdrop-filter: blur(6px);
backdrop-filter: blur(6px);
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.16);
}
.headerHasMap .actions .btnAdd:hover {
background: #fff;
}
/* Full label by default; phones over the map get an icon-only button
(same compact treatment as the section-nav compare icon). */
.btnCompareGlyph {
display: none;
}
@media (max-width: 640px) {
.headerHasMap .actions .btnCompareLabel {
display: none;
}
.headerHasMap .actions .btnCompareGlyph {
display: inline;
}
.headerHasMap .actions .btnAdd,
.headerHasMap .actions .btnRemove {
display: inline-flex;
align-items: center;
justify-content: center;
flex: none;
width: 40px;
height: 40px;
padding: 0;
border-radius: 999px;
font-size: 1.375rem;
line-height: 1;
}
}
/* Inline "View on map ↗" trigger next to the address. */
.mapLink {
border: none;
background: none;
padding: 0;
font: inherit;
font-weight: 600;
color: var(--accent-coral-dark, #b04a2e);
cursor: pointer;
white-space: nowrap;
}
.mapLink:hover {
color: var(--accent-coral-dark, #c45a3f);
text-decoration: underline;
text-underline-offset: 2px;
2026-03-28 22:36:00 +00:00
}
.titleSection {
2026-04-16 11:46:32 +01:00
flex: 1;
2026-03-28 22:36:00 +00:00
}
.schoolName {
2026-04-16 11:46:32 +01:00
font-size: clamp(2rem, 5vw, 3.25rem);
font-weight: 700;
color: var(--text-primary, #1a1612);
margin-bottom: 0.5rem;
line-height: 1.15;
font-family: var(--font-playfair), "Playfair Display", serif;
overflow-wrap: break-word;
2026-03-28 22:36:00 +00:00
}
.badges {
2026-04-16 11:46:32 +01:00
display: flex;
flex-wrap: wrap;
gap: 0.375rem;
margin-bottom: 0.5rem;
2026-03-28 22:36:00 +00:00
}
.badge {
2026-04-16 11:46:32 +01:00
font-size: 0.8125rem;
color: var(--text-secondary, #5c564d);
padding: 0.125rem 0.5rem;
background: var(--bg-secondary, #f3ede4);
border-radius: 3px;
2026-03-28 22:36:00 +00:00
}
.badgeSelective {
2026-04-16 11:46:32 +01:00
background: rgba(180, 120, 0, 0.1);
color: #8a6200;
2026-03-28 22:36:00 +00:00
}
.badgeFaith {
2026-04-16 11:46:32 +01:00
background: rgba(45, 125, 125, 0.1);
color: var(--accent-teal, #2d7d7d);
2026-03-28 22:36:00 +00:00
}
.address {
2026-04-16 11:46:32 +01:00
font-size: 0.875rem;
color: var(--text-muted, #8a847a);
margin: 0 0 0.75rem;
overflow-wrap: break-word;
2026-03-28 22:36:00 +00:00
}
.headerDetails {
2026-04-16 11:46:32 +01:00
display: flex;
flex-wrap: wrap;
gap: 0.5rem 1.25rem;
margin-top: 0.5rem;
2026-03-28 22:36:00 +00:00
}
.headerDetail {
2026-04-16 11:46:32 +01:00
font-size: 0.8125rem;
color: var(--text-secondary, #5c564d);
2026-03-28 22:36:00 +00:00
}
.headerDetail strong {
2026-04-16 11:46:32 +01:00
color: var(--text-primary, #1a1612);
font-weight: 600;
2026-03-28 22:36:00 +00:00
}
.headerDetail a {
2026-04-16 11:46:32 +01:00
color: var(--accent-teal, #2d7d7d);
text-decoration: none;
2026-03-28 22:36:00 +00:00
}
.headerDetail a:hover {
2026-04-16 11:46:32 +01:00
text-decoration: underline;
2026-03-28 22:36:00 +00:00
}
.actions {
2026-04-16 11:46:32 +01:00
display: flex;
gap: 0.5rem;
flex-shrink: 0;
2026-03-28 22:36:00 +00:00
}
.btnAdd,
.btnRemove {
2026-04-16 11:46:32 +01:00
padding: 0.5rem 1rem;
font-size: 0.875rem;
font-weight: 600;
border: none;
border-radius: 6px;
cursor: pointer;
transition: all 0.2s ease;
white-space: nowrap;
2026-03-28 22:36:00 +00:00
}
.btnAdd {
background: var(--accent-coral-dark, #b04a2e);
2026-04-16 11:46:32 +01:00
color: white;
2026-03-28 22:36:00 +00:00
}
.btnAdd:hover {
background: var(--accent-coral-darker, #9c3f26);
2026-04-16 11:46:32 +01:00
transform: translateY(-1px);
2026-03-28 22:36:00 +00:00
}
.btnRemove {
2026-04-16 11:46:32 +01:00
background: var(--accent-teal, #2d7d7d);
color: white;
2026-03-28 22:36:00 +00:00
}
.btnRemove:hover {
2026-04-16 11:46:32 +01:00
opacity: 0.9;
2026-03-28 22:36:00 +00:00
}
/* ── Tab Navigation (sticky) ─────────────────────────── */
.tabNav {
2026-04-16 11:46:32 +01:00
position: sticky;
top: 4rem;
z-index: 10;
background: var(--bg-card, white);
border: 1px solid var(--border-color, #e5dfd5);
border-top: none;
border-radius: 0 0 10px 10px;
padding: 0.5rem 1rem;
margin-bottom: 1rem;
overflow-x: auto;
white-space: nowrap;
-webkit-overflow-scrolling: touch;
scrollbar-width: none;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
2026-03-28 22:36:00 +00:00
}
.tabNav::-webkit-scrollbar {
2026-04-16 11:46:32 +01:00
display: none;
2026-03-28 22:36:00 +00:00
}
.tabNavInner {
2026-04-16 11:46:32 +01:00
display: inline-flex;
gap: 0.25rem;
align-items: center;
2026-03-28 22:36:00 +00:00
}
.backBtn {
2026-04-16 11:46:32 +01:00
display: inline-flex;
align-items: center;
padding: 0.3rem 0.625rem;
font-size: 0.75rem;
font-weight: 600;
color: var(--accent-coral-dark, #b04a2e);
2026-04-16 11:46:32 +01:00
background: none;
border: 1px solid var(--border-color, #e5dfd5);
border-radius: 4px;
cursor: pointer;
white-space: nowrap;
transition: all 0.15s ease;
margin-right: 0.25rem;
2026-03-28 22:36:00 +00:00
}
.backBtn:hover {
2026-04-16 11:46:32 +01:00
background: var(--bg-secondary, #f3ede4);
border-color: var(--accent-coral, #e07256);
2026-03-28 22:36:00 +00:00
}
.tabNavDivider {
2026-04-16 11:46:32 +01:00
width: 1px;
height: 1rem;
background: var(--border-color, #e5dfd5);
margin: 0 0.25rem;
flex-shrink: 0;
2026-03-28 22:36:00 +00:00
}
.tabBtn {
2026-04-16 11:46:32 +01:00
display: inline-block;
padding: 0.3rem 0.75rem;
font-size: 0.75rem;
font-weight: 500;
color: var(--text-secondary, #5c564d);
background: none;
border: none;
border-radius: 4px;
cursor: pointer;
transition: all 0.15s ease;
white-space: nowrap;
text-decoration: none;
2026-03-28 22:36:00 +00:00
}
.tabBtn:hover {
2026-04-16 11:46:32 +01:00
background: var(--bg-secondary, #f3ede4);
color: var(--text-primary, #1a1612);
2026-03-28 22:36:00 +00:00
}
.tabBtnActive {
background: var(--accent-coral-dark, #b04a2e);
2026-04-16 11:46:32 +01:00
color: white;
font-weight: 600;
}
.tabBtnActive:hover {
background: var(--accent-coral-darker, #9c3f26);
2026-04-16 11:46:32 +01:00
color: white;
}
2026-03-28 22:36:00 +00:00
/* ── Card ────────────────────────────────────────────── */
.card {
2026-04-16 11:46:32 +01:00
background: var(--bg-card, white);
border: 1px solid var(--border-color, #e5dfd5);
border-radius: 10px;
padding: 1.25rem 1.5rem;
margin-bottom: 1rem;
box-shadow: var(--shadow-soft);
scroll-margin-top: 6rem;
2026-03-28 22:36:00 +00:00
}
/* ── Section Title ───────────────────────────────────── */
.sectionTitle {
2026-04-16 11:46:32 +01:00
font-size: 1.125rem;
font-weight: 600;
color: var(--text-primary, #1a1612);
margin-bottom: 0.875rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid var(--border-color, #e5dfd5);
font-family: var(--font-playfair), "Playfair Display", serif;
display: flex;
align-items: center;
gap: 0.375rem;
flex-wrap: wrap;
overflow-wrap: break-word;
min-width: 0;
2026-03-28 22:36:00 +00:00
}
.sectionTitle::before {
2026-04-16 11:46:32 +01:00
content: "";
display: inline-block;
width: 3px;
height: 1em;
background: var(--accent-coral, #e07256);
border-radius: 2px;
flex-shrink: 0;
2026-03-28 22:36:00 +00:00
}
.sectionSubtitle {
2026-04-16 11:46:32 +01:00
font-size: 0.85rem;
color: var(--text-muted, #8a847a);
margin: -0.5rem 0 1rem;
2026-03-28 22:36:00 +00:00
}
.subSectionTitle {
2026-04-16 11:46:32 +01:00
font-size: 0.875rem;
font-weight: 600;
color: var(--text-secondary, #5c564d);
margin: 1.25rem 0 0.75rem;
2026-03-28 22:36:00 +00:00
}
/* ── Progress 8 suspension banner ───────────────────── */
.p8Banner {
2026-04-16 11:46:32 +01:00
background: rgba(180, 120, 0, 0.1);
border: 1px solid rgba(180, 120, 0, 0.3);
color: #8a6200;
border-radius: 6px;
padding: 0.625rem 0.875rem;
font-size: 0.825rem;
margin-bottom: 1rem;
line-height: 1.5;
2026-03-28 22:36:00 +00:00
}
/* ── Metrics Grid & Cards ────────────────────────────── */
.metricsGrid {
2026-04-16 11:46:32 +01:00
display: grid;
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
gap: 0.75rem;
2026-03-28 22:36:00 +00:00
}
.metricCard {
2026-04-16 11:46:32 +01:00
background: var(--bg-secondary, #f3ede4);
border: 1px solid var(--border-color, #e5dfd5);
border-radius: 6px;
padding: 0.75rem;
text-align: center;
2026-03-28 22:36:00 +00:00
}
.metricLabel {
2026-04-16 11:46:32 +01:00
font-size: 0.6875rem;
color: var(--text-muted, #8a847a);
margin-bottom: 0.25rem;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.03em;
2026-03-28 22:36:00 +00:00
}
.metricValue {
2026-04-16 11:46:32 +01:00
font-size: 1.25rem;
font-weight: 700;
color: var(--text-primary, #1a1612);
display: flex;
align-items: center;
justify-content: center;
gap: 0.25rem;
overflow-wrap: break-word;
word-break: break-word;
2026-03-28 22:36:00 +00:00
}
.metricHint {
2026-04-16 11:46:32 +01:00
font-size: 0.7rem;
color: var(--text-muted, #8a847a);
margin-top: 0.3rem;
font-style: italic;
2026-03-28 22:36:00 +00:00
}
/* ── Progress score colours ──────────────────────────── */
.progressPositive {
2026-04-16 11:46:32 +01:00
color: var(--accent-teal, #2d7d7d);
font-weight: 700;
2026-03-28 22:36:00 +00:00
}
.progressNegative {
color: var(--accent-coral-dark, #b04a2e);
2026-04-16 11:46:32 +01:00
font-weight: 700;
2026-03-28 22:36:00 +00:00
}
/* ── Status colours ──────────────────────────────────── */
.statusGood {
2026-04-16 11:46:32 +01:00
background: var(--accent-teal-bg);
color: var(--accent-teal, #2d7d7d);
2026-03-28 22:36:00 +00:00
}
.statusWarn {
2026-04-16 11:46:32 +01:00
background: var(--accent-gold-bg);
color: var(--accent-gold-text, #7a6800);
2026-03-28 22:36:00 +00:00
}
/* ── Metric table (row-based) ────────────────────────── */
.metricTable {
2026-04-16 11:46:32 +01:00
display: flex;
flex-direction: column;
gap: 0.375rem;
2026-03-28 22:36:00 +00:00
}
.metricRow {
2026-04-16 11:46:32 +01:00
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.375rem 0.625rem;
background: var(--bg-secondary, #f3ede4);
border-radius: 4px;
2026-03-28 22:36:00 +00:00
}
.metricName {
2026-04-16 11:46:32 +01:00
font-size: 0.75rem;
color: var(--text-secondary, #5c564d);
2026-03-28 22:36:00 +00:00
}
.metricRow .metricValue {
2026-04-16 11:46:32 +01:00
font-size: 0.875rem;
font-weight: 600;
color: var(--accent-teal, #2d7d7d);
2026-03-28 22:36:00 +00:00
}
/* ── Charts & Map ────────────────────────────────────── */
2026-03-28 22:36:00 +00:00
.chartContainer {
2026-04-16 11:46:32 +01:00
width: 100%;
/* Taller on desktop so the trend lines have vertical room to separate
and read clearly. Mobile overrides this to height:auto below (the
max-width:768px query), so this only affects desktop. */
height: 380px;
2026-04-16 11:46:32 +01:00
position: relative;
2026-03-28 22:36:00 +00:00
}
/* ── History table ───────────────────────────────────── */
.tableWrapper {
2026-04-16 11:46:32 +01:00
overflow-x: auto;
margin-top: 0.5rem;
2026-03-28 22:36:00 +00:00
}
.historicalSubtitle {
2026-04-16 11:46:32 +01:00
font-size: 0.8rem;
color: var(--text-muted, #8a847a);
margin: 1.25rem 0 0.25rem;
2026-03-28 22:36:00 +00:00
}
.dataTable {
2026-04-16 11:46:32 +01:00
width: 100%;
border-collapse: collapse;
font-size: 0.8125rem;
2026-03-28 22:36:00 +00:00
}
.dataTable thead {
2026-04-16 11:46:32 +01:00
background: var(--bg-secondary, #f3ede4);
2026-03-28 22:36:00 +00:00
}
.dataTable th {
2026-04-16 11:46:32 +01:00
padding: 0.625rem 0.75rem;
text-align: left;
font-weight: 600;
font-size: 0.6875rem;
text-transform: uppercase;
letter-spacing: 0.03em;
color: var(--text-primary, #1a1612);
border-bottom: 2px solid var(--border-color, #e5dfd5);
2026-03-28 22:36:00 +00:00
}
.dataTable td {
2026-04-16 11:46:32 +01:00
padding: 0.5rem 0.75rem;
border-bottom: 1px solid var(--border-color, #e5dfd5);
color: var(--text-secondary, #5c564d);
2026-03-28 22:36:00 +00:00
}
.dataTable tbody tr:last-child td {
2026-04-16 11:46:32 +01:00
border-bottom: none;
2026-03-28 22:36:00 +00:00
}
.dataTable tbody tr:hover {
2026-04-16 11:46:32 +01:00
background: var(--bg-secondary, #f3ede4);
2026-03-28 22:36:00 +00:00
}
.yearCell {
2026-04-16 11:46:32 +01:00
font-weight: 600;
color: var(--accent-gold, #c9a227);
2026-03-28 22:36:00 +00:00
}
/* ── Ofsted ──────────────────────────────────────────── */
.ofstedHeader {
2026-04-16 11:46:32 +01:00
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 0.75rem;
margin-bottom: 1rem;
2026-03-28 22:36:00 +00:00
}
.ofstedGrade {
2026-04-16 11:46:32 +01:00
display: inline-block;
padding: 0.35rem 0.75rem;
font-size: 1rem;
line-height: 1.4;
font-weight: 700;
border-radius: 6px;
white-space: nowrap;
2026-03-28 22:36:00 +00:00
}
2026-04-16 11:46:32 +01:00
.ofstedGrade1 {
background: var(--accent-teal-bg);
color: var(--accent-teal, #2d7d7d);
}
.ofstedGrade2 {
background: rgba(60, 140, 60, 0.12);
color: #2f7a2f;
2026-04-16 11:46:32 +01:00
}
.ofstedGrade3 {
background: var(--accent-gold-bg);
color: var(--accent-gold-text, #7a6800);
2026-04-16 11:46:32 +01:00
}
.ofstedGrade4 {
background: var(--accent-coral-bg);
color: var(--accent-coral-dark, #b04a2e);
2026-04-16 11:46:32 +01:00
}
2026-03-28 22:36:00 +00:00
2026-04-16 11:46:32 +01:00
.rcGrade1 {
background: var(--accent-teal-bg);
color: var(--accent-teal, #2d7d7d);
}
.rcGrade2 {
background: rgba(60, 140, 60, 0.12);
color: #2f7a2f;
2026-04-16 11:46:32 +01:00
}
.rcGrade3 {
background: var(--accent-gold-bg);
color: var(--accent-gold-text, #7a6800);
2026-04-16 11:46:32 +01:00
}
.rcGrade4 {
background: rgba(249, 115, 22, 0.12);
color: #c2410c;
}
.rcGrade5 {
background: var(--accent-coral-bg);
color: var(--accent-coral-dark, #b04a2e);
2026-04-16 11:46:32 +01:00
}
2026-03-28 22:36:00 +00:00
.safeguardingMet {
2026-04-16 11:46:32 +01:00
display: inline-block;
padding: 0.2rem 0.6rem;
border-radius: 4px;
font-size: 0.8125rem;
font-weight: 600;
background: var(--accent-teal-bg);
color: var(--accent-teal, #2d7d7d);
2026-03-28 22:36:00 +00:00
}
.safeguardingNotMet {
2026-04-16 11:46:32 +01:00
display: inline-block;
padding: 0.2rem 0.6rem;
border-radius: 4px;
font-size: 0.8125rem;
font-weight: 700;
background: var(--accent-coral-bg);
color: var(--accent-coral-dark, #b04a2e);
2026-03-28 22:36:00 +00:00
}
/* ── Ofsted grade grids (Report Card + OEIF) ──
Uniform, vertically-aligned grade chips. Labels reserve two lines so
single- and double-line labels put their chips on the same baseline;
every chip (Met, Strong, Expected standard, …) shares one font size,
padding and min-height regardless of how many lines its text wraps to. */
.gradeGrid .metricCard {
display: flex;
flex-direction: column;
align-items: center;
gap: 0.5rem;
padding: 0.85rem 0.75rem;
}
.gradeGrid .metricLabel {
min-height: 2.6em;
margin: 0;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
}
.gradeGrid .metricValue {
margin-top: auto;
display: inline-flex;
align-items: center;
justify-content: center;
max-width: 100%;
min-height: 2.6em;
padding: 0.3rem 0.7rem;
border-radius: 5px;
font-size: 1rem;
font-weight: 700;
line-height: 1.25;
text-align: center;
}
2026-03-28 22:36:00 +00:00
.ofstedDisclaimer {
2026-04-16 11:46:32 +01:00
font-size: 0.8rem;
color: var(--text-muted, #8a847a);
font-style: italic;
margin: 0 0 1rem;
2026-03-28 22:36:00 +00:00
}
.ofstedDate {
2026-04-16 11:46:32 +01:00
font-size: 0.85rem;
color: var(--text-muted, #8a847a);
2026-03-28 22:36:00 +00:00
}
.ofstedPrevious {
2026-04-16 11:46:32 +01:00
font-size: 0.8125rem;
color: var(--text-muted, #8a847a);
font-style: italic;
2026-03-28 22:36:00 +00:00
}
.ofstedReportLink {
2026-04-16 11:46:32 +01:00
font-size: 0.8125rem;
color: var(--accent-teal, #2d7d7d);
text-decoration: none;
margin-left: auto;
white-space: nowrap;
2026-03-28 22:36:00 +00:00
}
.ofstedReportLink:hover {
2026-04-16 11:46:32 +01:00
text-decoration: underline;
2026-03-28 22:36:00 +00:00
}
/* ── Admissions ──────────────────────────────────────── */
.admissionsTypeBadge {
2026-04-16 11:46:32 +01:00
border-radius: 6px;
padding: 0.5rem 0.875rem;
font-size: 0.8125rem;
margin-bottom: 1rem;
line-height: 1.5;
2026-03-28 22:36:00 +00:00
}
.admissionsSelective {
2026-04-16 11:46:32 +01:00
background: rgba(180, 120, 0, 0.1);
color: #8a6200;
border: 1px solid rgba(180, 120, 0, 0.25);
2026-03-28 22:36:00 +00:00
}
.admissionsFaith {
2026-04-16 11:46:32 +01:00
background: rgba(45, 125, 125, 0.08);
color: var(--accent-teal, #2d7d7d);
border: 1px solid rgba(45, 125, 125, 0.2);
2026-03-28 22:36:00 +00:00
}
.admissionsBadge {
2026-04-16 11:46:32 +01:00
display: inline-flex;
align-items: center;
gap: 0.35rem;
padding: 0.3rem 0.75rem;
border-radius: 6px;
font-size: 0.8125rem;
font-weight: 600;
margin-top: 0.75rem;
2026-03-28 22:36:00 +00:00
}
.sixthFormNote {
2026-04-16 11:46:32 +01:00
margin-top: 1rem;
padding: 0.625rem 0.875rem;
background: var(--bg-secondary, #f3ede4);
border-radius: 6px;
font-size: 0.825rem;
color: var(--text-secondary, #5c564d);
border-left: 3px solid var(--accent-teal, #2d7d7d);
2026-03-28 22:36:00 +00:00
}
/* ── Deprivation ─────────────────────────────────────── */
.deprivationDots {
2026-04-16 11:46:32 +01:00
display: flex;
gap: 0.375rem;
margin: 0.75rem 0 0.5rem;
align-items: center;
2026-03-28 22:36:00 +00:00
}
.deprivationDot {
2026-04-16 11:46:32 +01:00
width: 1.25rem;
height: 1.25rem;
border-radius: 50%;
background: var(--bg-secondary, #f3ede4);
border: 2px solid var(--border-color, #e5dfd5);
flex-shrink: 0;
2026-03-28 22:36:00 +00:00
}
.deprivationDotFilled {
2026-04-16 11:46:32 +01:00
background: var(--accent-teal, #2d7d7d);
border-color: var(--accent-teal, #2d7d7d);
2026-03-28 22:36:00 +00:00
}
.deprivationDesc {
2026-04-16 11:46:32 +01:00
font-size: 0.875rem;
color: var(--text-secondary, #5c564d);
line-height: 1.5;
margin: 0;
2026-03-28 22:36:00 +00:00
}
.deprivationScaleLabel {
2026-04-16 11:46:32 +01:00
display: flex;
justify-content: space-between;
font-size: 0.7rem;
color: var(--text-muted, #8a847a);
margin-top: 0.25rem;
2026-03-28 22:36:00 +00:00
}
/* ── Ofsted all-same collapse ────────────────────────── */
.ofstedAllSame {
2026-04-16 11:46:32 +01:00
font-size: 0.9375rem;
color: var(--text-secondary, #5c564d);
margin: 0.5rem 0 0;
line-height: 1.5;
}
.ofstedAllSame strong {
2026-04-16 11:46:32 +01:00
color: var(--text-primary, #1a1612);
}
/* .heroStatLabel is shared by the GCSE / Pupils stat cards below. */
.heroStatLabel {
2026-04-16 11:46:32 +01:00
font-size: 0.6875rem;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--text-secondary, #5c564d);
}
/* ── GCSE hero stat cards (mirrors primary heroStatCard) ─ */
.heroStatGrid {
2026-04-16 11:46:32 +01:00
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 0.85rem;
margin-bottom: 0.25rem;
}
.heroStatCard {
2026-04-16 11:46:32 +01:00
background: rgba(45, 125, 125, 0.1);
border: 1px solid rgba(45, 125, 125, 0.2);
border-radius: 12px;
padding: 1rem 1.1rem;
display: flex;
flex-direction: column;
gap: 0.25rem;
}
.heroStatCard .heroStatLabel {
2026-04-16 11:46:32 +01:00
font-size: 0.6rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--text-muted, #6d685f);
}
.heroStatCard .heroStatValue {
2026-04-16 11:46:32 +01:00
font-family: var(--font-playfair), "Playfair Display", serif;
font-size: 2.1rem;
font-weight: 700;
line-height: 1;
color: var(--accent-teal, #2d7d7d);
display: flex;
align-items: baseline;
gap: 0.4rem;
flex-wrap: wrap;
}
.heroStatCard .heroStatHint {
2026-04-16 11:46:32 +01:00
font-size: 0.7rem;
color: var(--text-muted, #6d685f);
font-style: normal;
margin-top: 0;
}
/* Gender split — attached beneath the Total pupils stat value */
.genderBar {
display: flex;
height: 4px;
border-radius: 999px;
overflow: hidden;
background: rgba(0, 0, 0, 0.08);
margin-top: 0.45rem;
}
.genderBarGirls {
background: #a04a68;
}
.genderBarBoys {
background: var(--accent-teal, #2d7d7d);
}
.genderSplitHint {
font-size: 0.7rem;
color: var(--text-muted, #6d685f);
margin-top: 0.35rem;
font-weight: 500;
}
.genderSplitGirls {
color: #a04a68;
font-weight: 600;
}
.genderSplitBoys {
color: var(--accent-teal, #2d7d7d);
font-weight: 600;
}
.genderSplitSep {
color: var(--border-color, #e5dfd5);
}
/* ── Attainment 8 visual bar ─────────────────────────── */
.att8Viz {
2026-04-16 11:46:32 +01:00
margin: 1.25rem 0 0.5rem;
}
.att8VizLabel {
2026-04-16 11:46:32 +01:00
font-size: 0.6875rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.07em;
color: var(--text-muted, #6d685f);
margin-bottom: 0.5rem;
}
.att8VizTrack {
2026-04-16 11:46:32 +01:00
position: relative;
height: 14px;
background: rgba(45, 125, 125, 0.08);
border: 1px solid var(--border-color, #e5dfd5);
border-radius: 4px;
overflow: visible;
}
.att8VizFill {
2026-04-16 11:46:32 +01:00
height: 100%;
background: var(--accent-teal, #2d7d7d);
border-radius: 4px 0 0 4px;
transition: width 0.6s ease;
}
.att8VizNatLine {
2026-04-16 11:46:32 +01:00
position: absolute;
top: -4px;
bottom: -4px;
width: 2px;
background: var(--accent-coral, #e07256);
border-radius: 2px;
z-index: 2;
}
.att8VizNatPill {
2026-04-16 11:46:32 +01:00
position: absolute;
top: -20px;
transform: translateX(-50%);
background: var(--accent-coral-dark, #b04a2e);
2026-04-16 11:46:32 +01:00
color: #fff;
font-size: 0.6rem;
font-weight: 700;
padding: 0.1rem 0.3rem;
border-radius: 3px;
white-space: nowrap;
}
.att8VizTicks {
2026-04-16 11:46:32 +01:00
display: flex;
justify-content: space-between;
margin-top: 0.25rem;
font-size: 0.6rem;
color: var(--text-muted, #6d685f);
}
/* ── Progress 8 number line ──────────────────────────── */
.p8Viz {
2026-04-16 11:46:32 +01:00
margin: 1.25rem 0 0.5rem;
}
.p8VizLabel {
2026-04-16 11:46:32 +01:00
font-size: 0.6875rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.07em;
color: var(--text-muted, #6d685f);
margin-bottom: 0.5rem;
}
.p8VizTrack {
2026-04-16 11:46:32 +01:00
position: relative;
height: 14px;
background: rgba(45, 125, 125, 0.06);
border: 1px solid var(--border-color, #e5dfd5);
border-radius: 4px;
overflow: visible;
}
.p8VizCi {
2026-04-16 11:46:32 +01:00
position: absolute;
top: 0;
bottom: 0;
background: rgba(45, 125, 125, 0.18);
border-radius: 3px;
}
.p8VizZero {
2026-04-16 11:46:32 +01:00
position: absolute;
top: -4px;
bottom: -4px;
width: 2px;
background: var(--border-color, #e5dfd5);
z-index: 1;
}
.p8VizDot {
2026-04-16 11:46:32 +01:00
position: absolute;
top: 50%;
transform: translate(-50%, -50%);
width: 12px;
height: 12px;
border-radius: 50%;
background: var(--accent-teal, #2d7d7d);
border: 2px solid white;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
z-index: 3;
}
.p8VizDotNeg {
2026-04-16 11:46:32 +01:00
background: var(--accent-coral, #e07256);
}
.p8VizTicks {
2026-04-16 11:46:32 +01:00
display: flex;
justify-content: space-between;
margin-top: 0.25rem;
font-size: 0.6rem;
color: var(--text-muted, #6d685f);
}
/* ── History accordion ───────────────────────────────── */
.historyDisclosure {
2026-04-16 11:46:32 +01:00
margin-top: 1rem;
}
.historyToggle {
2026-04-16 11:46:32 +01:00
list-style: none;
cursor: pointer;
font-size: 0.8125rem;
font-weight: 600;
color: var(--text-muted, #6d685f);
padding: 0.5rem 0;
display: flex;
align-items: center;
gap: 0.375rem;
user-select: none;
}
2026-04-16 11:46:32 +01:00
.historyToggle::-webkit-details-marker {
display: none;
}
.historyToggle::before {
2026-04-16 11:46:32 +01:00
content: "▶";
font-size: 0.6rem;
transition: transform 0.2s ease;
}
.historyDisclosure[open] .historyToggle::before {
2026-04-16 11:46:32 +01:00
transform: rotate(90deg);
}
2026-03-28 22:36:00 +00:00
/* ── Responsive ──────────────────────────────────────── */
@media (max-width: 768px) {
2026-04-16 11:46:32 +01:00
.header {
padding: 1rem;
}
2026-04-16 11:46:32 +01:00
.headerContent {
flex-direction: column;
gap: 1rem;
}
2026-03-28 22:36:00 +00:00
2026-04-16 11:46:32 +01:00
.actions {
width: 100%;
}
2026-03-28 22:36:00 +00:00
2026-04-16 11:46:32 +01:00
.btnAdd,
.btnRemove {
flex: 1;
}
2026-03-28 22:36:00 +00:00
2026-04-16 11:46:32 +01:00
.schoolName {
word-break: break-word;
}
2026-04-16 11:46:32 +01:00
.badges {
gap: 0.25rem;
}
2026-04-16 11:46:32 +01:00
.badge {
font-size: 0.75rem;
padding: 0.1rem 0.375rem;
}
2026-04-16 11:46:32 +01:00
.headerDetails {
flex-direction: column;
gap: 0.375rem;
}
2026-04-16 11:46:32 +01:00
.metricsGrid {
grid-template-columns: repeat(2, 1fr);
}
2026-04-16 11:46:32 +01:00
.metricValue {
font-size: 1rem;
}
2026-04-16 11:46:32 +01:00
.heroStatGrid {
grid-template-columns: 1fr;
}
2026-04-16 11:46:32 +01:00
.heroStatCard .heroStatValue {
font-size: 1.85rem;
}
/* On mobile let the chart container flow naturally — PerformanceChart's
own .chartWrapper carries the definite canvas height (220px) plus the
chip strip above it. A fixed 220px here double-constrained the two and
clipped the chips onto the plot area. */
2026-04-16 11:46:32 +01:00
.chartContainer {
height: auto;
2026-04-16 11:46:32 +01:00
}
2026-04-16 11:46:32 +01:00
.dataTable {
font-size: 0.75rem;
}
2026-04-16 11:46:32 +01:00
.dataTable th,
.dataTable td {
padding: 0.5rem 0.375rem;
}
2026-04-16 11:46:32 +01:00
.card {
padding: 1rem;
}
2026-04-16 11:46:32 +01:00
.sectionTitle {
font-size: 1rem;
}
2026-03-28 22:36:00 +00:00
2026-04-16 11:46:32 +01:00
.ofstedReportLink {
margin-left: 0;
display: block;
margin-top: 0.25rem;
}
2026-04-16 11:46:32 +01:00
.admissionsTypeBadge {
font-size: 0.75rem;
}
}
@media (max-width: 480px) {
2026-04-16 11:46:32 +01:00
.metricsGrid {
grid-template-columns: 1fr 1fr;
gap: 0.5rem;
}
2026-04-16 11:46:32 +01:00
.metricCard {
padding: 0.5rem;
}
2026-04-16 11:46:32 +01:00
.metricLabel {
font-size: 0.625rem;
}
2026-04-16 11:46:32 +01:00
.card {
padding: 0.75rem;
}
2026-03-28 22:36:00 +00:00
}
/* GIAS "Open, but proposed to close" notice strip */
.closingStrip {
background: #fdf6e3;
border-left: 4px solid #e2c96f;
border-radius: 0 6px 6px 0;
padding: 0.55rem 0.9rem;
margin: 0.5rem 0;
font-size: 0.88rem;
color: #6e5a00;
max-width: 68ch;
}
.closingStrip strong {
color: #8a6200;
}