const {Card,Icon,Button,Badge,Tag}=window.KinroAcademyDesignSystem_f0472d; const STEPS=["Read the question","The student's answer","The real mark scheme","What it scored"]; const SCHEME=[ {text:"rotation",tone:"ok",note:"accept “turn”"}, {text:"90° clockwise",tone:"ok",note:"or 270° anticlockwise"}, {text:"about centre (0, 1)",tone:"ok",note:"coordinates must be stated"}, {text:"ignore “to the right”",tone:"no",note:"direction must be named"}, {text:"do not credit if a second transformation is also given",tone:"no",note:"“single” is examined"}]; const TOP_NOTES=[ ["Command word. “Describe fully” means every part of the transformation, not just the name.","↘"], ["Three marks. Three separate pieces of information are being paid for.","↘"]]; const VERDICT_NOTE="Rotation named, 90° stated. Direction not named and centre missing. Two marks gone on a question the student understood."; function Note({text,arrow,tone,align}){ const c=tone==="coral"?"var(--coral-600)":"var(--violet-600)"; return
{arrow} {text}
; } function Paper({stage}){ const hl=(t,on,tone)=>{t}; return
=1?1:0,transition:"opacity .45s"}}> {TOP_NOTES.map(([t,ar],i)=>)}
(a)

=1?"2px solid var(--violet-500)":"2px solid transparent",borderRadius:4, padding:"1px 4px",transition:"border-color .4s"}}>Describe fully {" the "} =1?"2px solid var(--coral-500)":"2px solid transparent",transition:"border-color .4s"}}>single transformation {" that maps shape "}A{" onto shape "}B.

=1?"2px solid var(--violet-500)":"2px solid transparent",borderRadius:4,padding:"1px 5px", transition:"border-color .4s"}}>(3)
=2?1:0, transform:stage>=2?"none":"translateY(8px)",transition:"opacity .5s,transform .5s"}}>

{hl("Rotated",stage>=3,"ok")} {hl("90 degrees",stage>=3,"ok")} {hl("to the right",stage>=3,"no")}

{stage>=3&&NO CENTRE OF ROTATION GIVEN}

{stage>=3&&
}
; } function SchemePanel({stage}){ return
=3?1:.35,transition:"opacity .5s"}}>
Mark scheme analysis 3 marks
{SCHEME.map((s,i)=>
=3?1:.3,transition:`opacity .45s ease ${i*90}ms`}}> {s.text} {s.note}
)}
; } function ExamCard(){ const [ref,inv]=useInView(); const [stage,setStage]=React.useState(0); const [paused,setPaused]=React.useState(false); const HOLD=[900,3000,3200,4600]; React.useEffect(()=>{ if(!inv||paused)return; const t=setTimeout(()=>setStage(s=>s>=4?1:s+1),HOLD[Math.max(0,Math.min(3,stage-1))]||900); return()=>clearTimeout(t); },[stage,inv,paused]); return
setPaused(true)} onMouseLeave={()=>setPaused(false)} style={{display:"flex",gap:6,padding:4,borderRadius:99,background:"var(--surface-sunken)",flexWrap:"wrap"}}> {STEPS.map((s,i)=>{const on=stage===i+1,done=stage>i+1; return })}
=4?"var(--status-incorrect)":"var(--text-subtle)",transition:"color .4s"}}>{stage>=4?"1":"?"} / 3 marks
{stage>=4?"The student knew it was a rotation of 90 degrees. Naming the direction and the centre is what the other two marks were for, and nobody had ever shown her that." :"This is exactly how we mark every paper your child sits."} {paused?"Paused":"Hover the steps to pause"}
; } const CATS=[ ["Rounding too early",23,"We teach a fixed rule: full accuracy on the working line, round only on the answer line, and write the unrounded value first so the method mark survives."], ["Units and notation",19,"Every answer line gets a unit check before the pen leaves the page. It becomes automatic in about three weeks."], ["Method not shown",21,"Examiners award M marks for visible reasoning. We drill the minimum written line that secures each one."], ["Incomplete descriptions",14,"“Describe fully”, “give reasons”, “explain”. Each command word has a checklist, and students learn to count the marks before they write."], ["Misread the question",23,"Annotate first, then solve: underline the command word, circle the accuracy instruction, box the units."]]; function Categories(){ const {i,setI,ref:cref,bind}=useAutoCycle(CATS.length,3200); const [ref,inv]=useInView(); return
Where the marks actually go

Avoidable marks lost, by cause

{CATS.map(([name,pct],k)=>{const on=k===i; return
setI(k)} style={{cursor:"pointer",display:"grid",gap:6}}>
{name} {pct}%
;})}
How we fix it

{CATS[i][2]}

Share of avoidable marks lost across papers marked in our own cohorts. Percentages are ours, not a published figure. ; } function MarkScheme({onBook}){ return
; } Object.assign(window,{MarkScheme,ExamCard,Categories,Paper,SchemePanel,Note});