.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 */ .phasePrimary { border-left-color: var(--phase-primary, #5b8cbf); } .phaseAllThrough { border-left-color: var(--phase-all-through, #7a9a6d); } .phaseNursery { border-left-color: var(--phase-nursery, #e0a0b0); } .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); } /* Phase label pill */ .phaseLabel { display: inline-block; padding: 0.0625rem 0.375rem; font-size: 0.6875rem; font-weight: 600; border-radius: 3px; white-space: nowrap; margin-right: 0.25rem; } .phaseLabelPrimary { background: var(--phase-primary-bg); color: var(--phase-primary-text); } .phaseLabelAllThrough { background: var(--phase-all-through-bg); color: var(--phase-all-through-text); } .phaseLabelNursery { background: var(--phase-nursery-bg); color: var(--phase-nursery-text); } /* Line 2: context tags */ .line2 { display: flex; align-items: center; flex-wrap: wrap; gap: 0; font-size: 0.8rem; color: var(--text-muted, #8a847a); } .line2 span:not(:last-child)::after { content: '·'; margin: 0 0.4rem; color: var(--border-color, #e5dfd5); } /* Line 3: stats */ .line3 { display: flex; align-items: center; flex-wrap: wrap; gap: 0 1.25rem; } .stat { display: inline-flex; align-items: baseline; gap: 0.3rem; } .statValue { font-size: 0.9375rem; font-weight: 700; color: var(--text-primary, #1a1612); font-family: var(--font-playfair), 'Playfair Display', serif; display: inline-flex; align-items: center; gap: 0.2rem; } .statLabel { font-size: 0.75rem; color: var(--text-muted, #8a847a); white-space: nowrap; } /* Trend arrows */ .trend { display: inline-flex; align-items: center; margin-left: 1px; } .trendUp { color: var(--accent-teal, #2d7d7d); } .trendDown { color: var(--accent-coral, #e07256); } .trendStable { color: var(--text-muted, #8a847a); } /* Line 4: location */ .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; } /* ── Right actions column ────────────────────────────── */ .rowActions { display: flex; align-items: center; gap: 0.5rem; flex-shrink: 0; } /* Equalise and