<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Irregular Verbs — Flip Card Drills (30 most common)</title>
<meta name="description" content="30 common irregular verbs (incl. TO BE) with flip-card drills: Infinitive, Simple Present, Simple Past, Present Perfect — real sentences with time markers.">
<style>
:root{
/* Light, high-contrast palette */
--bg:#f6f7fb; --panel:#ffffff; --card:#ffffff; --ink:#0f172a;
--muted:#48556a; --line:#e2e8f0; --accent:#0ea5e9; --accent2:#14b8a6;
--back:#e8fff3; --back-border:#9ae6b4;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;line-height:1.65}
.wrap{max-width:1100px;margin:0 auto;padding:22px}
header{background:linear-gradient(135deg,rgba(14,165,233,.12),rgba(20,184,166,.08));border:1px solid var(--line);border-radius:18px;padding:22px}
header h1{margin:0 0 8px 0;color:#0b3b66}
header p{margin:0;color:var(--muted)}
nav{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 0}
.chip{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:7px 12px;text-decoration:none;color:#0b3b66;font-size:.95rem}
section{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:18px;margin:16px 0}
h2{color:#0b3b66;margin:6px 0 10px}
.muted{color:var(--muted)}
table{width:100%;border-collapse:collapse;border:1px solid var(--line);border-radius:12px;overflow:hidden}
th,td{border-bottom:1px solid var(--line);padding:10px 8px;vertical-align:top}
th{background:#eef6ff;text-align:left;color:#0b3b66}
td{background:#fff}
/* Flip-cards */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.card{background:transparent;border:0;padding:0;cursor:pointer}
.flip{position:relative;height:230px;transform-style:preserve-3d;transition:transform .45s ease;touch-action:manipulation}
.face{position:absolute;inset:0;border:1px solid var(--line);border-radius:12px;background:var(--card);
padding:16px;backface-visibility:hidden;display:flex;flex-direction:column;justify-content:center;box-shadow:0 6px 14px rgba(15,23,42,.06)}
.back{transform:rotateY(180deg);background:var(--back);border-color:var(--back-border)}
.title{font-size:.78rem;color:#33506e;border:1px solid var(--line);padding:2px 8px;border-radius:999px;margin-bottom:8px;align-self:flex-start;background:#f3f7fb}
.q,.a{margin:4px 0}
.q strong,.a strong{color:#0b3b66}
.flipped{transform:rotateY(180deg)}
/* No hover flip at all */
.card:hover .flip{transform:translateZ(0)}
/* Focus ring for keyboard users */
.card:focus-visible .face, .card:focus .face{outline:3px solid rgba(14,165,233,.55); outline-offset:3px}
@media print{
body{background:#fff;color:#000}
section,header{background:#fff;border-color:#ccc;box-shadow:none}
.chip{display:none}
}
</style>
</head>
<body>
<div class="wrap">
<header>
<h1>Irregular Verbs — Flip Card Drills</h1>
<p>30 common irregular verbs (incl. <strong>TO BE</strong>). Click/tap a card to flip. Front = prompts with time markers; back = full sentences (Infinitive • Simple Present • Simple Past • Present Perfect).</p>
<nav>
<a class="chip" href="#list">Verb List</a>
<a class="chip" href="#drill">Flip-Card Drill</a>
<a class="chip" href="#" onclick="window.print()">Print</a>
</nav>
</header>
<section id="list">
<h2>Verb List (Base • Simple Present 3rd • Simple Past • Past Participle)</h2>
<p class="muted">Quick reference for the drills below.</p>
<table>
<tr><th>Base</th><th>SPresent (3rd)</th><th>SPast</th><th>Participle (V3)</th></tr>
<tr><td>be</td><td>is (am/are)</td><td>was/were</td><td>been</td></tr>
<tr><td>have</td><td>has</td><td>had</td><td>had</td></tr>
<tr><td>do</td><td>does</td><td>did</td><td>done</td></tr>
<tr><td>say</td><td>says</td><td>said</td><td>said</td></tr>
<tr><td>go</td><td>goes</td><td>went</td><td>gone</td></tr>
<tr><td>get</td><td>gets</td><td>got</td><td>got/gotten</td></tr>
<tr><td>make</td><td>makes</td><td>made</td><td>made</td></tr>
<tr><td>know</td><td>knows</td><td>knew</td><td>known</td></tr>
<tr><td>think</td><td>thinks</td><td>thought</td><td>thought</td></tr>
<tr><td>take</td><td>takes</td><td>took</td><td>taken</td></tr>
<tr><td>see</td><td>sees</td><td>saw</td><td>seen</td></tr>
<tr><td>come</td><td>comes</td><td>came</td><td>come</td></tr>
<tr><td>give</td><td>gives</td><td>gave</td><td>given</td></tr>
<tr><td>find</td><td>finds</td><td>found</td><td>found</td></tr>
<tr><td>tell</td><td>tells</td><td>told</td><td>told</td></tr>
<tr><td>become</td><td>becomes</td><td>became</td><td>become</td></tr>
<tr><td>show</td><td>shows</td><td>showed</td><td>shown</td></tr>
<tr><td>leave</td><td>leaves</td><td>left</td><td>left</td></tr>
<tr><td>feel</td><td>feels</td><td>felt</td><td>felt</td></tr>
<tr><td>put</td><td>puts</td><td>put</td><td>put</td></tr>
<tr><td>bring</td><td>brings</td><td>brought</td><td>brought</td></tr>
<tr><td>begin</td><td>begins</td><td>began</td><td>begun</td></tr>
<tr><td>keep</td><td>keeps</td><td>kept</td><td>kept</td></tr>
<tr><td>hold</td><td>holds</td><td>held</td><td>held</td></tr>
<tr><td>write</td><td>writes</td><td>wrote</td><td>written</td></tr>
<tr><td>stand</td><td>stands</td><td>stood</td><td>stood</td></tr>
<tr><td>hear</td><td>hears</td><td>heard</td><td>heard</td></tr>
<tr><td>let</td><td>lets</td><td>let</td><td>let</td></tr>
<tr><td>mean</td><td>means</td><td>meant</td><td>meant</td></tr>
<tr><td>set</td><td>sets</td><td>set</td><td>set</td></tr>
</table>
</section>
<section id="drill">
<h2>Flip-Card Drill — Real Sentences</h2>
<p class="muted">Click/tap to flip. Keyboard: focus a card and press Enter/Space.</p>
<div class="cards" id="cards"></div>
</section>
<p style="text-align:center"><a class="chip" href="#top" id="top">Back to top ↑</a></p>
</div>
<script>
/* 30 cards (same content as before) */
const items = [
{v:"be", i:"To be patient before class is helpful.", pr:"Every day, she is patient before class.", pa:"Yesterday, she was very patient.", pp:"This week, she has been patient in every lesson."},
{v:"have", i:"To have a plan makes study easier.", pr:"Every day, he has a simple plan.", pa:"Yesterday, he had a different plan.", pp:"Lately, he has had a better plan."},
{v:"do", i:"To do warm-ups builds fluency.", pr:"Every morning, she does a short warm-up.", pa:"Yesterday, she did two warm-ups.", pp:"This week, she has done great warm-ups."},
{v:"say", i:"To say what you think improves speaking.", pr:"Every day, he says what he thinks.", pa:"Yesterday, he said exactly that.", pp:"Already, he has said it many times."},
{v:"go", i:"To go to class on time matters.", pr:"Every day, she goes to class on time.", pa:"Yesterday, she went to class on time.", pp:"This month, she has gone to class on time."},
{v:"get", i:"To get feedback helps you grow.", pr:"Every week, he gets useful feedback.", pa:"Last week, he got detailed feedback.", pp:"So far, he has gotten helpful feedback."},
{v:"make", i:"To make notes keeps ideas fresh.", pr:"Every day, she makes short notes.", pa:"Yesterday, she made careful notes.", pp:"This week, she has made better notes."},
{v:"know", i:"To know the rules reduces mistakes.", pr:"Every day, he knows a little more.", pa:"Yesterday, he knew the answer.", pp:"So far, he has known the basics well."},
{v:"think", i:"To think in English trains the brain.", pr:"Every day, she thinks in English for five minutes.", pa:"Yesterday, she thought in English at lunch.", pp:"Recently, she has thought in English more often."},
{v:"take", i:"To take breaks prevents fatigue.", pr:"Every hour, he takes a short break.", pa:"Yesterday, he took three breaks.", pp:"This week, he has taken regular breaks."},
{v:"see", i:"To see examples clarifies grammar.", pr:"Every lesson, she sees new examples.", pa:"Yesterday, she saw a great example.", pp:"Already, she has seen many examples."},
{v:"come", i:"To come prepared saves time.", pr:"Every day, he comes prepared.", pa:"Yesterday, he came prepared.", pp:"This term, he has come very prepared."},
{v:"give", i:"To give reasons strengthens answers.", pr:"Every class, she gives clear reasons.", pa:"Yesterday, she gave a strong reason.", pp:"So far, she has given excellent reasons."},
{v:"find", i:"To find patterns boosts memory.", pr:"Every day, he finds small patterns.", pa:"Yesterday, he found a useful pattern.", pp:"This week, he has found several patterns."},
{v:"tell", i:"To tell short stories helps fluency.", pr:"Every day, she tells a short story.", pa:"Yesterday, she told a funny story.", pp:"Recently, she has told great stories."},
{v:"become", i:"To become confident takes practice.", pr:"Every month, he becomes more confident.", pa:"Last month, he became more confident.", pp:"Since January, he has become much more confident."},
{v:"show", i:"To show your work invites feedback.", pr:"Every week, she shows her progress.", pa:"Last week, she showed her notes.", pp:"So far, she has shown steady progress."},
{v:"leave", i:"To leave early avoids traffic.", pr:"Every day, he leaves a bit early.", pa:"Yesterday, he left early.", pp:"This week, he has left earlier than usual."},
{v:"feel", i:"To feel relaxed improves speaking.", pr:"Every class, she feels more relaxed.", pa:"Yesterday, she felt relaxed.", pp:"Lately, she has felt more relaxed in class."},
{v:"put", i:"To put ideas on paper organizes thoughts.", pr:"Every day, he puts his ideas in a notebook.", pa:"Yesterday, he put everything on paper.", pp:"So far, he has put all ideas in his journal."},
{v:"bring", i:"To bring examples makes points clear.", pr:"Every lesson, she brings one example.", pa:"Yesterday, she brought two examples.", pp:"This week, she has brought great examples."},
{v:"begin", i:"To begin early reduces stress.", pr:"Every day, he begins on time.", pa:"Yesterday, he began on time.", pp:"This week, he has begun earlier than usual."},
{v:"keep", i:"To keep a journal tracks progress.", pr:"Every day, she keeps a short journal.", pa:"Yesterday, she kept a short journal.", pp:"Lately, she has kept a daily journal."},
{v:"hold", i:"To hold eye contact shows confidence.", pr:"Every talk, he holds good eye contact.", pa:"Yesterday, he held eye contact well.", pp:"So far, he has held eye contact naturally."},
{v:"write", i:"To write summaries improves recall.", pr:"Every day, she writes a summary.", pa:"Yesterday, she wrote a summary.", pp:"Already, she has written several summaries."},
{v:"stand", i:"To stand up to present builds courage.", pr:"Every week, he stands to present briefly.", pa:"Last week, he stood and presented.", pp:"This year, he has stood to present many times."},
{v:"hear", i:"To hear native speech helps rhythm.", pr:"Every day, she hears English on a podcast.", pa:"Yesterday, she heard two episodes.", pp:"Recently, she has heard many new expressions."},
{v:"let", i:"To let others finish shows respect.", pr:"Every meeting, he lets others finish.", pa:"Yesterday, he let everyone finish.", pp:"So far, he has let people finish before replying."},
{v:"mean", i:"To mean what you say builds trust.", pr:"Every day, she means what she says.", pa:"Yesterday, she meant every word.", pp:"Lately, she has meant her promises."},
{v:"set", i:"To set goals keeps you focused.", pr:"Every week, he sets three goals.", pa:"Last week, he set two goals.", pp:"So far, he has set clear goals each week."}
];
const container = document.getElementById('cards');
items.forEach((it, idx) => {
const card = document.createElement('button');
card.className = 'card';
card.setAttribute('type','button');
card.setAttribute('aria-label', `Card ${idx+1}: ${it.v}`);
card.innerHTML = `
<div class="flip" tabindex="-1">
<div class="face front">
<div class="title">${String(idx+1).padStart(2,'0')} • ${it.v.toUpperCase()}</div>
<p class="q"><strong>INF (purpose):</strong> ${it.i}</p>
<p class="q"><strong>Simple Present (habit):</strong> ${it.pr}</p>
<p class="q"><strong>Simple Past (yesterday/last…):</strong> ${it.pa}</p>
<p class="q"><strong>Present Perfect (this week/already…):</strong> ${it.pp}</p>
</div>
<div class="face back">
<div class="title">Answer — Full sentences</div>
<p class="a">${it.i}</p>
<p class="a">${it.pr}</p>
<p class="a">${it.pa}</p>
<p class="a">${it.pp}</p>
</div>
</div>`;
const f = card.querySelector('.flip');
card.addEventListener('click', () => f.classList.toggle('flipped'));
card.addEventListener('keydown', (e) => {
if(e.key === 'Enter' || e.key === ' '){ e.preventDefault(); f.classList.toggle('flipped'); }
});
container.appendChild(card);
});
</script>
</body>
</html>