/* SchoolFacts static pages — shared stylesheet */
/* Account: signup-first, login folded away */
.buycard{max-width:440px}
.buyhead{margin:0;font-size:11px;text-transform:uppercase;letter-spacing:.05em;
  color:var(--mut);font-weight:600}
.buyprice{margin:2px 0 0;display:flex;align-items:baseline;gap:8px}
.buyprice b{font:700 2.1rem/1 'Bricolage Grotesque',sans-serif;color:var(--ink)}
.buyprice span{color:var(--mut);font-size:.95rem}
.buysub{margin:8px 0 0;font-size:.9rem;color:var(--mut);max-width:44ch}
/* stacked: one control per row, with a real label above it. The side-by-side
   flex row truncated the password placeholder mid-word. */
.acctform.stacked{display:block;max-width:100%;margin:16px 0 4px}
.acctform.stacked label{display:block;font-size:12px;font-weight:600;
  color:var(--ink);margin:12px 0 5px}
.acctform.stacked input{display:block;width:100%;box-sizing:border-box;
  min-width:0;font-size:15px}
.acctform.stacked input:focus{outline:2px solid var(--navy);outline-offset:1px;
  border-color:var(--navy)}
.acctform.stacked .unlockbtn{display:block;width:100%;margin-top:16px;
  padding:12px;font-size:15px}
.formmsg{margin:10px 0 0;font-size:.9rem;color:var(--ink)}
.formmsg:empty{display:none}
.loginfold{margin-top:20px;max-width:440px}
.loginfold summary{cursor:pointer;font-weight:600;font-size:.94rem;
  color:var(--navy);list-style:none;padding:10px 0}
.loginfold summary::-webkit-details-marker{display:none}
.loginfold summary::before{content:"+ ";font-weight:700}
.loginfold[open] summary::before{content:"− "}

/* Free vs Premium comparison */
.planwrap{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:14px;margin:16px 0 4px}
.plan{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 16px}
.plan.prem{border-color:var(--navy);box-shadow:0 0 0 1px var(--navy) inset}
.planhead{margin:0 0 10px;font-weight:700;font-size:1.05rem;
  display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}
.planprice{font-weight:400;font-size:.86rem;color:var(--mut)}
.plan.prem .planprice{color:var(--navy);font-weight:700;font-size:1rem}
.planall{margin:0 0 6px;font-size:.86rem;color:var(--mut);font-weight:600}
.plan ul{list-style:none;padding:0;margin:0}
.plan li{position:relative;padding:4px 0 4px 20px;font-size:.92rem;
  border-bottom:1px solid #f0eee9}
.plan li:last-child{border-bottom:0}
.plan li::before{content:"";position:absolute;left:2px;top:11px;width:9px;
  height:5px;border-left:2px solid var(--g1);border-bottom:2px solid var(--g1);
  transform:rotate(-45deg)}

/* SEND provision pages */
.sendblock .sendunits{margin:12px 0 4px}
.sendblock .sendunits dt{font-size:11px;text-transform:uppercase;
  letter-spacing:.05em;color:var(--mut);margin-top:10px}
.sendblock .sendunits dd{margin:2px 0 0;font-size:15px;font-weight:600}
.sendblock .needlist{list-style:none;padding:0;margin:8px 0 4px;
  display:flex;flex-wrap:wrap;gap:6px}
.sendblock .needlist li{border:1px solid #cfd4dc;border-radius:999px;
  padding:3px 10px;font-size:.88rem;background:#fff}
.sendblock .needlist li:first-child{border-color:var(--navy);font-weight:600}
.sendsec{margin:28px 0}
.sendcompact{font-size:14px;line-height:1.7}
.sendlist li{flex-wrap:wrap}
.sendlist .need{font-weight:600;color:var(--ink)}
.sendlist .nmore{color:#6b7280}
.units{white-space:nowrap;font-variant-numeric:tabular-nums}
.units.u-available{color:#0B7A5C}
.units.u-nearly{color:#8a5a00}
.units.u-full{color:#B33A3A}
.facet{margin:10px 0 14px}
.facetlab{margin:0 0 6px;font-size:.82rem;letter-spacing:.04em;
  text-transform:uppercase;color:#6b7280}
.needchip{font:inherit;font-size:.86rem;padding:3px 10px;margin:0 6px 6px 0;
  border:1px solid #cfd4dc;border-radius:999px;background:#fff;color:var(--ink);
  cursor:pointer}
.needchip:hover{border-color:var(--navy)}
.needchip.on{background:var(--navy);border-color:var(--navy);color:#fff}
.needindex li{justify-content:flex-start}
.empty{background:#fff;border:1px solid #e6e3dc;border-radius:10px;padding:16px}
.lalinks{line-height:2}

:root{
  --ink:#14212B; --paper:#F7F6F2; --chalk:#FFFFFF; --navy:#29538A;
  /* The call-to-action colour, teal, chosen 21 Sep 2026. Navy carries links,
     the nav and the chart bars, so a premium button in navy was one more
     navy thing; teal reads as a different kind of control. It is deliberately
     OUTSIDE the grade palette below - an orange or red button sits between
     g4 "Needs attention" and g5 on a page that colours Ofsted grades, and a
     green one is literally the Outstanding colour. 5.96:1 on white. Free
     controls (the daily postcode check) stay navy, so colour alone says
     which side of the line a button is on. */
  --cta:#0F6E78;
  --line:#DDD9CF; --mut:#5C6670;
  --g1:#0B7A5C; --g2:#3FA34D; --g3:#93B733; --g4:#E39B2D; --g5:#CE4646; --g0:#A2A9B0;
  --shadow:0 2px 14px rgba(20,33,43,.10);
}
*{box-sizing:border-box;margin:0}
body{font-family:'Archivo',sans-serif;color:var(--ink);background:var(--paper);
  line-height:1.55;font-size:15px}
a{color:var(--navy)}
.top{display:flex;justify-content:space-between;align-items:center;gap:16px;
  padding:14px clamp(16px,4vw,40px);border-bottom:1px solid var(--line);
  background:var(--chalk);position:sticky;top:0;z-index:10}
.navmenu{display:flex;flex:1;align-items:center;justify-content:space-between;gap:10px;min-width:0}
.topnav{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.topnav a{font-weight:600;font-size:13.5px;text-decoration:none;color:var(--navy);
  border:1px solid var(--line);border-radius:999px;padding:7px 14px;
  background:var(--paper);white-space:nowrap}
.navtoggle{display:none}
.hamburger{display:none;flex-direction:column;justify-content:center;gap:5px;
  width:44px;height:38px;padding:0 10px;cursor:pointer;flex:none;
  border:1px solid var(--line);border-radius:10px;background:var(--paper)}
.hamburger span{display:block;height:2px;border-radius:2px;background:var(--navy);
  transition:transform .2s,opacity .2s}
@media (max-width:860px){
  .top{padding:12px 14px}
  .hamburger{display:flex}
  .navmenu{display:none;position:absolute;top:100%;right:8px;left:8px;
    flex-direction:column;align-items:stretch;gap:8px;margin-top:6px;padding:12px;
    background:var(--chalk);border:1px solid var(--line);border-radius:12px;
    box-shadow:0 10px 30px rgba(0,0,0,.14)}
  #navtoggle:checked ~ .navmenu{display:flex}
  #navtoggle:checked ~ .hamburger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  #navtoggle:checked ~ .hamburger span:nth-child(2){opacity:0}
  #navtoggle:checked ~ .hamburger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .navmenu .topnav{flex-direction:column;align-items:stretch;width:100%;gap:8px;flex-wrap:nowrap}
  .navmenu .topnav a{text-align:center;font-size:13.5px;padding:9px 14px}
}
.wordmark{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;
  font-size:26px;letter-spacing:-.02em;color:var(--ink);text-decoration:none}
.wordmark span{color:var(--navy)}
/* The .uk carries the full domain in the wordmark, which matters because a
   namesake competitor trades as "School Facts UK" on schoolfacts.co.uk. Set
   lighter and smaller so it reads as the address, not part of the name. */
.wordmark i{font-style:normal;color:var(--mut);font-weight:600;font-size:.62em;
  letter-spacing:0;vertical-align:baseline}
.crumbs{max-width:760px;margin:18px auto 0;padding:0 16px;font-size:12.5px;
  color:var(--mut)}
main{max-width:760px;margin:0 auto;padding:8px 16px 40px}
h1{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;
  font-size:clamp(24px,5vw,34px);letter-spacing:-.02em;line-height:1.1;
  margin-top:10px}
.sub{color:var(--mut);margin:6px 0 18px}
ul.legal{margin:8px 0 0;padding-left:20px}
ul.legal li{margin:6px 0;line-height:1.55}
.faqs .faq{margin:0 0 14px}
.faqs dt{font-weight:600;color:var(--ink);margin-bottom:3px}
.faqs dd{margin:0;color:var(--mut);line-height:1.55}
h2{font-family:'Bricolage Grotesque',sans-serif;font-weight:600;font-size:13px;
  text-transform:uppercase;letter-spacing:.06em;color:var(--mut);
  margin:26px 0 10px}
section.slip{background:repeating-linear-gradient(var(--chalk) 0 27px,#EDF2F7 27px 28px);
  border:1px solid var(--line);border-top:4px solid var(--slip-colour,var(--g0));
  border-radius:10px;box-shadow:var(--shadow);padding:18px 20px;margin:18px 0}
.stamp{display:inline-block;font:500 15px 'IBM Plex Mono',monospace;color:#fff;
  background:var(--slip-colour,var(--g0));padding:6px 14px;border-radius:5px}
/* Contrast (WCAG AA 4.5:1 for this size): white passes only on g1 and g5.
   Ink on the light green, lime, amber and grey is 5.1 to 7.1:1. Same rule
   for every text-bearing chip below (.oversub, .oddsband). Audit 3 Sep 2026. */
.stamp.r0,.stamp.r2,.stamp.r3,.stamp.r4{color:var(--ink)}
/* A grade Ofsted published but has not renewed: outlined, not filled — the
   same not-currently-in-force reading as the outlined premium chips. The
   text is ink (the coloured text on paper failed contrast); the colour
   lives in the border. */
.stamp.dated{background:transparent;color:var(--ink);
  border:2px solid var(--slip-colour,var(--g0));padding:4px 12px}
.concern{margin-top:10px;font-size:13.5px;padding:8px 12px;border-radius:6px;
  background:#FBEDED;border-left:3px solid var(--g5)}
.gauge.over{background:#F3D9D9}
.gauge.over i{background:var(--g5)}
.skip{position:absolute;left:-999px;top:8px;z-index:20;background:var(--navy);
  color:#fff;padding:8px 14px;border-radius:6px;font-weight:600}
.skip:focus{left:8px}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none !important;
  animation:none !important;scroll-behavior:auto !important}}
.regime{font-weight:600;font-size:13.5px;margin-top:10px}
.slip .note{font-size:13px;color:var(--mut);margin-top:4px;max-width:56ch}
.slip .dates{font:400 12px 'IBM Plex Mono',monospace;color:var(--mut);margin-top:10px}
.slip .ofsted{display:inline-block;margin-top:8px;font-weight:600;font-size:13.5px}
.areas{margin-top:12px;display:flex;flex-wrap:wrap;gap:5px}
.areas span{font-size:11.5px;padding:3px 8px;border-radius:4px;background:#EEF1F4;
  border-left:3px solid var(--g0)}
.factsheet{background:var(--chalk);border:1px solid var(--line);border-radius:10px;
  padding:16px 20px;margin:18px 0}
.factsheet dl{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
  gap:10px 18px;margin-top:8px}
.factsheet dt{font-size:11px;text-transform:uppercase;letter-spacing:.05em;
  color:var(--mut)}
.factsheet dd{font-size:14px;overflow-wrap:anywhere}
.gauge{height:6px;background:#E7E4DC;border-radius:3px;margin:8px 0 4px;
  overflow:hidden}
.gauge i{display:block;height:100%;background:var(--navy)}
.gauge-label{font:400 12px 'IBM Plex Mono',monospace;color:var(--mut)}
section.perf{background:var(--chalk);border:1px solid var(--line);
  border-radius:10px;padding:16px 20px;margin:18px 0}
.cohort{font:400 12px 'IBM Plex Mono',monospace;color:var(--mut);margin-bottom:10px}
.metric{margin:12px 0}
.mlabel{font-size:13.5px;font-weight:600}
.mnote{font-size:13px;color:var(--mut)}
.price{margin:14px 0 4px}
.price b{font:700 34px 'Bricolage Grotesque',sans-serif;color:var(--ink);
  letter-spacing:-.02em;line-height:1}
.price .per{font-weight:700;font-size:16px;color:var(--navy);margin-left:4px}
.price .terms{display:block;font-size:13px;color:var(--mut);margin-top:5px}
.bar{position:relative;height:20px;background:#EFEDE6;border-radius:4px;
  margin-top:5px;overflow:hidden}
.bar i{position:absolute;inset:0 auto 0 0;display:block}
.bar.sch i{background:var(--navy)}
.bar.eng i{background:#C4CBD4}
.bar span{position:absolute;right:8px;top:0;line-height:20px;
  font:500 11.5px 'IBM Plex Mono',monospace}
.bar.sch span{color:var(--ink)}
.bar.eng span{color:var(--mut)}
.agrade{font:500 12px 'IBM Plex Mono',monospace;background:#EEF1F4;
  padding:2px 7px;border-radius:4px;margin-left:6px}
.oversub{display:inline-block;font:500 13px 'IBM Plex Mono',monospace;
  color:#fff;padding:5px 12px;border-radius:5px;margin:2px 0 6px}
.oversub.r2,.oversub.r3,.oversub.r4,.oversub.r0{color:var(--ink)}
.bandgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));
  gap:8px 16px;margin:6px 0 4px}
.bandgrid dt{font-size:11px;text-transform:uppercase;letter-spacing:.05em;
  color:var(--mut)}
.bandgrid dd{font:500 13px 'IBM Plex Mono',monospace}
.odds{margin-top:14px;border-top:1px dashed var(--line);padding-top:12px}
.premchip{font:600 10px 'Archivo';text-transform:uppercase;letter-spacing:.06em;
  color:var(--navy);border:1px solid var(--navy);border-radius:999px;
  padding:2px 8px;margin-left:8px;vertical-align:2px}
.premchip.on{background:var(--navy);color:#fff}
.haspass .premchip{display:none}
.topnav .prembtn{background:var(--cta);color:#fff;border-color:var(--cta)}
.topnav .prembtn.on{background:transparent;color:var(--cta);
  border-color:var(--cta)}
.topnav .premchip{font-size:9px;padding:1px 6px;vertical-align:1px}
.unlockbtn{display:inline-block;font:600 13.5px 'Archivo';padding:9px 16px;
  border:0;border-radius:8px;background:var(--cta);color:#fff;cursor:pointer;
  text-decoration:none;margin-top:8px}
.unlockbtn.big{padding:13px 22px;font-size:15.5px}
/* secondary control beside a primary one: same shape, no fill, so "log in"
   reads as the other door rather than a competing offer */
.altbtn{display:inline-block;font:600 15.5px 'Archivo';padding:12px 21px;
  border:1px solid var(--navy);border-radius:8px;background:transparent;
  color:var(--navy);cursor:pointer;text-decoration:none;margin-top:8px}
.ctarow{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin:20px 0 4px}
.oddsform{display:flex;gap:8px;margin:12px 0 6px}
.odds+.perfsrc{margin-top:16px}
.oddsform input{flex:1;max-width:220px;font:400 13.5px 'Archivo';
  padding:8px 10px;border:1px solid var(--line);border-radius:8px;
  background:var(--paper)}
.oddsform button{font:600 13.5px 'Archivo';padding:8px 16px;border:0;
  border-radius:8px;background:var(--navy);color:#fff;cursor:pointer}
.oddsresult{margin-top:10px}
.oddsband{display:inline-block;font:500 13px 'IBM Plex Mono',monospace;
  color:#fff;padding:5px 12px;border-radius:5px;margin-bottom:6px}
.oddsband.g2{background:var(--g2);color:var(--ink)}
.oddsband.g4{background:var(--g4);color:var(--ink)}
.oddsband.g5{background:var(--g5)}
.oddslist{list-style:none;padding:0}
.oddslist li{display:flex;align-items:baseline;gap:8px;padding:6px 0;
  border-bottom:1px solid var(--line);flex-wrap:wrap}
.oddslist a{font-weight:600;text-decoration:none}
.distband{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;
  font-size:15px;text-transform:none;letter-spacing:0;color:var(--ink);
  margin:22px 0 4px;padding-top:14px;border-top:1px solid var(--line)}
.grplab{font-size:12px;font-weight:600;text-transform:uppercase;
  letter-spacing:.05em;color:var(--mut);margin:12px 0 2px}
/* shortlist */
.slbtn{font:600 13px 'Archivo';padding:8px 14px;border:1px solid var(--navy);
  border-radius:999px;background:var(--paper);color:var(--navy);cursor:pointer;
  margin:2px 0 16px}
.slbtn.on{background:var(--navy);color:#fff}
.topnav .slcount{display:none;margin-left:5px;min-width:17px;height:17px;
  padding:0 4px;border-radius:999px;background:var(--navy);color:#fff;
  font:600 11px 'Archivo';line-height:17px;text-align:center}
.topnav .slcount.on{display:inline-block}
.slhead{margin-bottom:4px}
.slbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:6px 0 16px}
.slpcform{display:flex;gap:8px}
.slpcform input{font:400 13.5px 'Archivo';padding:8px 10px;
  border:1px solid var(--line);border-radius:8px;background:var(--paper);min-width:180px}
.slpcform button,.prtbtn{font:600 13.5px 'Archivo';padding:8px 16px;border:0;
  border-radius:8px;cursor:pointer}
.slpcform button{background:var(--navy);color:#fff}
.prtbtn{background:var(--chalk);color:var(--navy);border:1px solid var(--navy)}
.slpcerr{font:600 12.5px 'Archivo';color:var(--g5)}
.slstamp{font:600 15px 'Bricolage Grotesque',sans-serif;color:var(--ink);margin-bottom:10px}
.sltablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.sltable{border-collapse:collapse;width:100%;font-size:13px;min-width:660px}
.sltable th{text-align:left;font:600 11px 'Archivo';text-transform:uppercase;
  letter-spacing:.04em;color:var(--mut);padding:6px 8px;
  border-bottom:2px solid var(--line);white-space:nowrap}
.sltable td{padding:8px;border-bottom:1px solid var(--line);vertical-align:top}
.sltable tr:nth-child(even) td{background:rgba(20,33,43,.02)}
.slname a{font-weight:600;text-decoration:none;display:block}
.slmeta{display:block;font-size:11.5px;color:var(--mut)}
.sltable .chip{display:inline-block;margin-right:5px}
.sltag{display:inline-block;font:600 10px 'Archivo';padding:1px 6px;
  border-radius:999px;margin-left:4px;color:#fff}
.sltag.in{background:var(--g2)}.sltag.out{background:var(--g5)}
.slx{border:0;background:none;color:var(--mut);cursor:pointer;font-size:14px;padding:2px 4px}
.slx:hover{color:var(--g5)}
.slnhead{margin-top:24px}
.slcards{display:grid;gap:10px}
.slcard{border:1px solid var(--line);border-radius:10px;padding:12px 14px;
  background:var(--chalk)}
.slcard h3{font-family:'Bricolage Grotesque',sans-serif;font-size:16px;margin-bottom:6px}
.slcard h3 a{text-decoration:none}
.slnlab{display:block;font:600 11px 'Archivo';text-transform:uppercase;
  letter-spacing:.04em;color:var(--mut);margin-bottom:3px}
.slnote{width:100%;font:400 13.5px 'Archivo';padding:8px 10px;
  border:1px solid var(--line);border-radius:8px;background:var(--paper);resize:vertical}
.slsrc{font-size:11.5px;color:var(--mut);margin-top:16px}
/* account / login */
.acctform{display:flex;gap:8px;flex-wrap:wrap;max-width:420px;margin:14px 0 8px}
.acctform input{flex:1;min-width:160px;font:400 14px 'Archivo';padding:10px 12px;
  border:1px solid var(--line);border-radius:8px;background:var(--chalk)}
.linkbtn{background:none;border:0;color:var(--navy);font:600 13.5px 'Archivo';
  cursor:pointer;padding:4px 0;text-decoration:underline}
/* compare */
.pagebtns{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:2px 0 16px}
.pagebtns .slbtn{margin:0}
.cmpbtn{font:600 13px 'Archivo';padding:8px 14px;border:1px solid var(--line);
  border-radius:999px;background:var(--paper);color:var(--navy);text-decoration:none}
.cmpadd{position:relative;max-width:460px;margin:6px 0 18px}
#cmpsearch{width:100%;font:400 14px 'Archivo';padding:10px 12px;
  border:1px solid var(--line);border-radius:10px;background:var(--chalk)}
.cmpsug{list-style:none;margin:4px 0 0;padding:4px;position:absolute;z-index:20;
  left:0;right:0;background:var(--chalk);border:1px solid var(--line);
  border-radius:10px;box-shadow:var(--shadow);max-height:280px;overflow:auto}
.cmpsug li{padding:8px 10px;border-radius:7px;cursor:pointer;font-weight:600;font-size:13.5px}
.cmpsug li:hover{background:var(--paper)}
.cmpsub{display:block;font-weight:400;font-size:11.5px;color:var(--mut)}
.cmpwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.cmptable{border-collapse:collapse;width:100%;min-width:420px}
.cmptable thead th{vertical-align:bottom;text-align:left;padding:8px 10px;
  border-bottom:2px solid var(--line);font-family:'Bricolage Grotesque',sans-serif;
  font-size:15px;font-weight:700}
.cmptable thead th a{text-decoration:none}
.cmptable td,.cmptable tbody th{padding:9px 10px;border-bottom:1px solid var(--line);
  font-size:13.5px;vertical-align:top}
.cmptable tbody th.cmpc{text-align:left;font:600 11px 'Archivo';text-transform:uppercase;
  letter-spacing:.04em;color:var(--mut);white-space:nowrap}
.cmptable th.cmpc{border-bottom-color:transparent}
.cmptable tbody tr:nth-child(even) td,.cmptable tbody tr:nth-child(even) th.cmpc{background:rgba(20,33,43,.02)}
.cmptable .chip{display:inline-block;margin-right:5px}
.cmpx{border:0;background:none;color:var(--mut);cursor:pointer;font-size:12px;
  margin-left:6px;padding:0 2px}
.cmpx:hover{color:var(--g5)}
.townlink{margin-top:18px;font-size:14px}
.townlink a{font-weight:600;text-decoration:none}
.fbar{display:flex;align-items:center;gap:10px;margin:8px 0}
.fblab{flex:0 0 42%;font-size:13px}
.ftrack{flex:1;height:12px;background:#E7E4DC;border-radius:6px;overflow:hidden}
.ftrack i{display:block;height:100%;background:var(--navy);border-radius:6px}
.fval{flex:0 0 auto;font:600 13.5px 'IBM Plex Mono',monospace}
@media print{
  .top,.crumbs,.slbar,.slbtn,.slx,.maplink,.oddslock{display:none!important}
  body{background:#fff;color:#000}
  a{color:#000}
  main{max-width:none;padding:0}
  .slcard,.sltable tr{break-inside:avoid}
  .slcards{grid-template-columns:1fr 1fr}
  .slnote{border:1px solid #bbb;background:#fff}
}
.trendwrap{margin-top:12px}
.trend{display:flex;align-items:flex-end;gap:10px;margin-top:8px;height:76px}
.tbar{display:flex;flex-direction:column;justify-content:flex-end;
  align-items:center;gap:3px;height:100%}
.tbar i{display:block;width:26px;border-radius:3px 3px 0 0}
.tbar span{font:400 10px 'IBM Plex Mono',monospace;color:var(--mut)}
.perfsrc{font-size:12px;color:var(--mut);margin-top:-6px}
.trendwrap+.perfsrc{margin-top:16px}
/* A note or a rule table ends the cutoff block when there is no chart, and
   the -6px pulled the source line up against it (Greenleas, 28 Sep 2026).
   Scoped to the cutoff section: 17,675 pages have a note above a source line
   in OTHER sections, which were not asked about. */
.cutoffs .mnote+.perfsrc,.cutoffs .bandgrid+.perfsrc{margin-top:16px}
/* The trend chart's upsell. Deliberately louder than a .mnote: the bars
   carry no figures any more, so this block is the only thing on the page
   that says why, and a muted grey line under a chart reads as a footnote. */
/* The council's own priority number beside each rule. The grid wraps, so
   without it "the order printed above" is a claim the reader cannot check. */
.rrank{display:inline-block;min-width:15px;color:var(--cta);font-weight:700}
.trendup{margin-top:16px;padding:12px 14px;border:1px solid var(--line);
  border-left:4px solid var(--cta);border-radius:8px;background:var(--chalk)}
.trendup p{font:600 14px 'Archivo',sans-serif;color:var(--ink);margin:0}
.trendup .unlockbtn{margin-top:10px}
.trendup+.perfsrc{margin-top:16px}
.nearby ul,.schoollist{list-style:none;padding:0}
.nearby li,.schoollist li{display:flex;align-items:baseline;gap:8px;
  padding:7px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}
.nearby a,.schoollist a{font-weight:600;text-decoration:none}
.chip{width:10px;height:10px;border-radius:50%;flex:none;align-self:center;
  box-shadow:0 0 0 1px rgba(0,0,0,.12)}
.chip.dated{background:transparent;border:2px solid var(--g0);box-shadow:none}
.nmeta{font-size:12px;color:var(--mut)}
.schoollist.la li{justify-content:space-between}
footer{max-width:760px;margin:0 auto;padding:20px 16px 48px;font-size:12px;
  color:var(--mut);border-top:1px solid var(--line)}
footer p{margin:6px 0}
/* neighbourhood + peers (21 Aug 2026) */
.statgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));
  gap:12px 18px;margin:10px 0 12px}
.statgrid.four{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
section.area .mnote{margin:4px 0 10px}
section.area .perfsrc{margin-top:10px}
.statgrid dt{font-size:11px;text-transform:uppercase;letter-spacing:.05em;
  color:var(--mut)}
.statgrid dd{font:700 24px 'Bricolage Grotesque',sans-serif;letter-spacing:-.01em;
  line-height:1.1;margin-top:2px}
.statgrid dd .of{font-size:14px;font-weight:600;color:var(--mut);margin-left:1px}
.statsub{display:block;font:400 12px 'Archivo',sans-serif;color:var(--mut);
  margin-top:3px;line-height:1.35}
.areatable,.peertable{border-collapse:collapse;width:100%;font-size:13.5px;margin:12px 0 4px}
.areatable th,.peertable th{text-align:left;font:600 11px 'Archivo',sans-serif;text-transform:uppercase;
  letter-spacing:.04em;color:var(--mut);padding:6px 8px 6px 0;border-bottom:1px solid var(--line)}
.areatable td,.peertable td{padding:6px 8px 6px 0;border-bottom:1px solid var(--line);
  vertical-align:top}
.areatable tbody th{font:400 13.5px 'Archivo',sans-serif;color:var(--ink);text-transform:none;
  letter-spacing:0}
.areatable td{font:500 13.5px 'IBM Plex Mono',monospace;white-space:nowrap}
.areatable td.engcol,.areatable th.engcol{color:var(--mut)}
.peertable td .chip{display:inline-block;margin-right:6px;vertical-align:middle}
.peertable .pname a{font-weight:600;text-decoration:none;display:block}
.peertable .pname .nmeta{display:block}
.peertable .pval{text-align:right;font:500 13.5px 'IBM Plex Mono',monospace;white-space:nowrap}
.cutprice{font-size:13.5px;margin:10px 0 0;padding-top:10px;border-top:1px dashed var(--line)}
section.area .fbar{margin:6px 0}
