Flipped classroom • claims and evidence — Prepare an original short pre-class explanation and response task, an access/readiness alternative, an in-class application sequence and a…

HTML for this example

Select the code and use your copy shortcut. Changes in this preview are temporary.

<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Flipped classroom • claims and evidence</title><style>*{box-sizing:border-box}body{margin:0;background:var(--bg,#eef3f6);color:#172a39;font:16px/1.5 system-ui,sans-serif}main{max-width:1200px;margin:auto;padding:28px}h1{font-size:clamp(27px,4vw,42px);line-height:1.12;margin:8px 0 12px;letter-spacing:-.035em}h2{font-size:23px;line-height:1.2;margin:0 0 18px}h3{font-size:17px;margin:14px 0 8px}p{margin:8px 0 16px}.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.15em;font-weight:800;color:var(--accent,#176b71)}.lead{max-width:75ch;color:#405568}.panel{background:#fff;border:1px solid #cdd9e1;border-radius:14px;padding:24px;margin:18px 0}.grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.wide{grid-template-columns:1.6fr 1fr}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.metric{border-left:4px solid var(--accent,#176b71);background:#f4f8fa;padding:18px}.big{display:block;font-size:36px;font-weight:800;line-height:1.2}.muted,small{color:#536879;font-size:14px}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}button{background:var(--accent,#176b71);color:white;border:2px solid transparent;border-radius:8px;padding:10px 16px;min-height:44px;cursor:pointer;font:inherit;font-weight:650}button.secondary{background:#e8eff4;color:#172a39}button:disabled{opacity:.48;cursor:default}button[aria-pressed=true]{outline:3px solid #172a39;outline-offset:2px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #de7616;outline-offset:3px}label{display:block;font-weight:650;margin:12px 0 6px}input,select,textarea{font:inherit;color:inherit;border:1px solid #8b9eae;border-radius:6px;background:white;padding:10px;width:100%;min-height:44px}textarea{resize:vertical;min-height:110px}input[type=checkbox]{width:22px;min-height:22px;vertical-align:middle}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;background:#eff4f7;color:#3d5261}th,td{padding:12px;border-bottom:1px solid #dce5eb;vertical-align:top}.scroll{overflow-x:auto}caption{text-align:left;margin-bottom:12px;font-weight:700}.notice{background:#eef5f9;border-left:4px solid #628ba1;padding:14px;margin:14px 0}.error{color:#9c2924;font-weight:650}.pill{display:inline-block;border-radius:30px;padding:4px 10px;background:#e5f3ee;color:#17614f;font-size:13px;font-weight:750}.draft{white-space:pre-wrap;font:17px/1.65 Georgia,serif}.rule{display:block;width:100%;text-align:left;margin:10px 0}.rule strong{font-size:26px}details{margin:18px 0}summary{cursor:pointer;font-weight:700;padding:12px;background:#e9eff3;border-radius:6px;min-height:44px}footer{margin:30px 0;color:#536879;font-size:14px}ol,ul{padding-left:23px}.time-input{max-width:90px}.section-no{font-size:52px;color:#b5c8d5;font-weight:800;line-height:1}.tag{font-weight:700;color:var(--accent,#176b71)}[hidden]{display:none!important}@media(max-width:760px){main{padding:18px}.grid,.wide{grid-template-columns:1fr}.metric-grid{grid-template-columns:1fr}.panel{padding:18px}.big{font-size:30px}th,td{padding:9px}}:root{--accent:#6654a0;--bg:#f1eff8}.votes{display:flex;height:100px;border-radius:10px;overflow:hidden;margin:20px 0}.votes>div{display:grid;place-items:center;color:white;font-size:25px;font-weight:800}.vote-a{width:60%;background:#6b55a5}.vote-b{width:40%;background:#397a8f}.claim{font:23px/1.4 Georgia,serif;padding:18px;border-left:4px solid #c1b8d3;background:#f5f3f9}.supported{border-left-color:#397a8f}.guide{font-size:21px;max-width:65ch}</style></head><body><main>
<span class="eyebrow">Lesson studio / majority and the counted denominator</span><h1>What can this vote actually tell us?</h1><p class="lead">Make a majority claim that names the counted responses and respects the record’s limits.</p>
<nav class="row" aria-label="Lesson phases"><button type="button" id="before" class="secondary">Before · 5 min</button><button type="button" id="during">During · 45 min</button><button type="button" id="after" class="secondary">After · 5 min</button></nav>
<section class="panel"><div id="before-panel" hidden><h2>Before class / read the same guide</h2><p class="guide">A majority means more than half of the counted responses. Identify what was counted before making a claim. Here, 20 is the number of responses in the supplied record; it is not a supplied school population.</p><p>Fictional record: A = 12 responses; B = 8 responses; total = 20.</p><label for="pre-majority">Which option has a majority? Explain.</label><textarea id="pre-majority"></textarea><label for="pre-denominator">What does 20 represent?</label><input id="pre-denominator" type="text" value=""><label for="pre-question">Your unanswered question</label><textarea id="pre-question"></textarea></div>
<div id="during-panel"><div class="grid wide"><div><h2>Compare two claims</h2><div class="votes" aria-label="20 counted responses: 12 A and 8 B"><div class="vote-a">A · 12</div><div class="vote-b">B · 8</div></div><p class="muted">Fictional vote record · 20 counted responses · selection method and school population unknown</p><p class="claim">“Everyone in the school prefers A.”</p><p class="claim supported">“12 of the 20 counted responses prefer A, or 60%.”</p><p>Which claim is supported by this record?</p><div class="row"><button type="button" id="choose-everyone" class="secondary">Everyone in the school</button><button type="button" id="choose-counted">12 of 20 counted responses</button></div><p id="claim-feedback" class="notice" aria-live="polite">Choose a claim and explain what was counted.</p></div><div><h2>Readiness → bridge</h2><p id="readiness" class="notice">Readiness unknown — actual response evidence has not been supplied.</p><button type="button" id="catchup" class="secondary">Use same-guide catch-up</button><div id="catchup-panel" hidden><h3>Inside the 8-minute bridge</h3><p>The same guide is available here: majority means more than half of the counted responses; identify what was counted. In this record, 20 means counted responses, not a supplied school population.</p><p>Read or discuss it, then rejoin the evidence comparison. Access difficulty or missing preparation is not evidence of failure.</p></div><label for="actual-readiness">Teacher’s actual response evidence / support needed</label><textarea id="actual-readiness"></textarea></div></div><div class="grid"><div><label for="rewrite">Your bounded rewrite</label><textarea id="rewrite"></textarea><label for="claim-limit">One limit or unanswered question</label><textarea id="claim-limit"></textarea><button type="button" id="review-rewrite" class="secondary">Review draft completeness</button><p id="rewrite-feedback" aria-live="polite">No rewrite recorded.</p></div><div><h3>Partner check</h3><ol><li>Point to the number supporting “majority.”</li><li>Name the denominator: what was counted?</li><li>Identify a claim the record cannot establish.</li></ol><label for="exit">Exit response: claim + counted group + limit</label><textarea id="exit"></textarea></div></div></div>
<div id="after-panel" hidden><h2>After class / a different fictional record</h2><div class="votes"><div class="vote-a">C · 6</div><div class="vote-b">D · 4</div></div><p>10 counted responses; no school population or selection method is supplied.</p><label for="after-claim">Write a majority claim for this new record</label><textarea id="after-claim"></textarea><label for="after-limit">State one limit of this new record</label><textarea id="after-limit"></textarea><button type="button" id="review-after" class="secondary">Review after-class completeness</button><p id="after-feedback" aria-live="polite">No after-class response recorded.</p></div></section>
<section class="panel"><h2>In-class plan / editable 45-minute sequence</h2><div class="scroll"><table><caption>Editable planned minutes</caption><thead><tr><th>Activity</th><th>Minutes</th><th>Elapsed</th></tr></thead><tbody><tr><td>Readiness evidence</td><td><label class="muted" for="t-0">Readiness evidence minutes</label><input class="time-input" id="t-0" type="number" min="1" max="120" value="5"></td><td id="t-range-0"></td></tr><tr><td>Bridge / same-guide catch-up</td><td><label class="muted" for="t-1">Bridge / same-guide catch-up minutes</label><input class="time-input" id="t-1" type="number" min="1" max="120" value="8"></td><td id="t-range-1"></td></tr><tr><td>Compare evidence</td><td><label class="muted" for="t-2">Compare evidence minutes</label><input class="time-input" id="t-2" type="number" min="1" max="120" value="15"></td><td id="t-range-2"></td></tr><tr><td>Rewrite the claim</td><td><label class="muted" for="t-3">Rewrite the claim minutes</label><input class="time-input" id="t-3" type="number" min="1" max="120" value="12"></td><td id="t-range-3"></td></tr><tr><td>Exit response</td><td><label class="muted" for="t-4">Exit response minutes</label><input class="time-input" id="t-4" type="number" min="1" max="120" value="5"></td><td id="t-range-4"></td></tr></tbody></table></div><p id="t-total" class="tag" aria-live="polite"></p><button type="button" id="t-restore" class="secondary">Restore original timing</button><p id="budget" class="tag"></p><label for="plan-text">Teacher sequence and recorded evidence</label><textarea id="plan-text" readonly></textarea><button type="button" id="select-plan-text" class="secondary">Select text</button><p id="plan-text-status" class="muted">Select the text, then use your device’s copy command. Nothing is saved.</p></section>
<details><summary>Teacher key — separate from learner prompts</summary><p>Original: A has a majority because 12 is more than half of 20 (10), and 12/20 = 60%. Eight counted responses prefer B, so not all 20 prefer A. Neither the school population nor selection method is given; no school-wide finding follows.</p><p>After-class: C has a majority, 6 of 10 counted responses, or 60%. That is not a claim about all students. A learner’s unanswered question must come from the learner; it is not prefilled here.</p></details><footer>These are planned activities and fictional records. Viewing a phase or entering text does not establish preparation, participation or mastery. This local companion does not collect, grade or save learner responses.</footer></main><script>const $=id=>document.getElementById(id);const on=(id,fn)=>$(id).addEventListener('click',fn);const text=(id,value)=>$(id).textContent=value;const bind=(id,fn,event='input')=>$(id).addEventListener(event,fn);const selectText=id=>{if(!$(id).value){text(id+'-status','Complete the required fields before selecting text.');return;}$(id).focus();$(id).select();text(id+'-status','Text selected. Use your device’s copy command; nothing has been sent or saved.');};
let phase='during';function changePhase(p){phase=p;['before','during','after'].forEach(k=>{$(k+'-panel').hidden=k!==p;$(k).setAttribute('aria-pressed',String(k===p));});}['before','during','after'].forEach(k=>on(k,()=>changePhase(k)));on('choose-everyone',()=>text('claim-feedback','Unsupported: 8 of the 20 counted responses prefer B, and the school population is unknown. The record cannot establish everyone in the school.'));on('choose-counted',()=>text('claim-feedback','Supported: 12 ÷ 20 = 60%; 12 is more than half of the 20 counted responses. This does not establish a school-wide preference.'));on('catchup',()=>{$('catchup-panel').hidden=!$('catchup-panel').hidden;});function completeness(fields){return fields.filter(k=>!$(k).value.trim());}function plan(){const s=schedule();text('budget',s?'In class: '+s.total+' min · before: 5 min · after: 5 min · planned total: '+(s.total+10)+' min':'Timing incomplete — class and overall totals unavailable.');const fields=['pre-majority','pre-denominator','pre-question','actual-readiness','rewrite','claim-limit','exit','after-claim','after-limit'];$('plan-text').value=s?'Majority claims lesson\nBefore: 5 min, same readable guide and three learner prompts.\nIn class: '+s.total+' min\n'+timeNames.map((n,i)=>s.blocks[i].start+'–'+s.blocks[i].end+' min: '+n).join('\n')+'\nAfter: 5 min, C6/D4 of10 counted responses.\n'+fields.map(k=>k+': '+($(k).value||'[not recorded]')).join('\n'):'';} const timeNames=["Readiness evidence","Bridge / same-guide catch-up","Compare evidence","Rewrite the claim","Exit response"],timeDefaults=[5,8,15,12,5];function schedule(){let total=0;const blocks=[];for(let i=0;i<timeDefaults.length;i++){const v=$('t-'+i).value;if(!/^\d+$/.test(v)||+v<1||+v>120)return null;blocks.push({start:total,end:total+(+v)});total+=+v;}return {total,blocks};}function updateTiming(){const s=schedule();text('t-total',s?s.total+' minutes':'Timing incomplete');timeDefaults.forEach((_,i)=>text('t-range-'+i,s?s.blocks[i].start+'–'+s.blocks[i].end+' min':'—'));plan();}timeDefaults.forEach((_,i)=>bind('t-'+i,updateTiming));on('t-restore',()=>{timeDefaults.forEach((v,i)=>$('t-'+i).value=String(v));updateTiming();});updateTiming();['pre-majority','pre-denominator','pre-question','actual-readiness','rewrite','claim-limit','exit','after-claim','after-limit'].forEach(k=>bind(k,()=>{text('readiness',$('actual-readiness').value.trim()?'Teacher-entered evidence is available for human review; readiness has not been automatically classified.':'Readiness unknown — actual response evidence has not been supplied.');text('rewrite-feedback','Draft edited — review again.');text('after-feedback','Response edited — review again.');plan();}));on('review-rewrite',()=>text('rewrite-feedback',completeness(['rewrite','claim-limit']).length?'Add both a rewrite and a limit before review.':'Rewrite and limit recorded. Use the partner check; meaning and accuracy require human review.'));on('review-after',()=>text('after-feedback',completeness(['after-claim','after-limit']).length?'Add both a claim and a limit for the new record.':'After-class claim and limit recorded for human review; no score assigned.'));on('select-plan-text',()=>selectText('plan-text'));changePhase('during');globalThis.app={schedule,completeness,get:()=>phase};</script></body></html>