✍️ 연플래닝 오리지널 — 「아하! 보이는 직관수학」 자체 제작. 모든 문제·정답 손검산 완료. 답안을 제출해야 해설·정답이 열립니다(먼저 스스로 풀어 보세요).
💬 더 필요한 게 있나요?
난이도 조절(더 쉽게 / 더 어렵게) · 다른 유형 · 특정 개념 집중 · 문항 수 등 무엇이든 적어 주세요. 선생님이 확인합니다. (공개 아님)
✏️ 손으로 풀어보세요
`; return s;
}
// ── 원의 반지름·지름 ──
function circ(cfg){
const {r=4, showD=false, showR=true, W=260, H=240, note=''} = cfg;
// 개념 설명용 도식 — 반지름 값과 무관하게 원 크기를 고정해 라벨이 밖으로 나가지 않게 한다
const cx=W/2, cy=104, R=64;
let s=``; return s;
}
const P=[
{ tier:'기초', type:'self', kind:'num',
q:'반지름이 2 cm 인 원의 지름은 몇 cm 일까요?',
fig:circ({r:2,showR:true,showD:true,note:'반지름 2 cm — 지름은?'}),
answer:4,
hint:'지름 = 반지름 × 2! 원을 가로질러 지나는 가장 긴 길이예요.',
sol:{ ans:'4 cm', fig:circ({r:2,showR:true,showD:true,note:'지름 = 2 × 2 = 4 cm'}),
steps:['반지름은 중심에서 가장자리까지의 거리.','지름은 반지름의 2배: 2 × 2 = 4 cm.','지름은 원을 가로질러 지나는 가장 긴 선이에요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'반지름이 3 cm 인 원의 지름은 몇 cm 일까요?',
fig:circ({r:3,showR:true,showD:true,note:'반지름 3 cm — 지름은?'}),
answer:6,
hint:'지름 = 반지름 × 2! 원을 가로질러 지나는 가장 긴 길이예요.',
sol:{ ans:'6 cm', fig:circ({r:3,showR:true,showD:true,note:'지름 = 3 × 2 = 6 cm'}),
steps:['반지름은 중심에서 가장자리까지의 거리.','지름은 반지름의 2배: 3 × 2 = 6 cm.','지름은 원을 가로질러 지나는 가장 긴 선이에요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'반지름이 4 cm 인 원의 지름은 몇 cm 일까요?',
fig:circ({r:4,showR:true,showD:true,note:'반지름 4 cm — 지름은?'}),
answer:8,
hint:'지름 = 반지름 × 2! 원을 가로질러 지나는 가장 긴 길이예요.',
sol:{ ans:'8 cm', fig:circ({r:4,showR:true,showD:true,note:'지름 = 4 × 2 = 8 cm'}),
steps:['반지름은 중심에서 가장자리까지의 거리.','지름은 반지름의 2배: 4 × 2 = 8 cm.','지름은 원을 가로질러 지나는 가장 긴 선이에요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'반지름이 5 cm 인 원의 지름은 몇 cm 일까요?',
fig:circ({r:5,showR:true,showD:true,note:'반지름 5 cm — 지름은?'}),
answer:10,
hint:'지름 = 반지름 × 2! 원을 가로질러 지나는 가장 긴 길이예요.',
sol:{ ans:'10 cm', fig:circ({r:5,showR:true,showD:true,note:'지름 = 5 × 2 = 10 cm'}),
steps:['반지름은 중심에서 가장자리까지의 거리.','지름은 반지름의 2배: 5 × 2 = 10 cm.','지름은 원을 가로질러 지나는 가장 긴 선이에요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'반지름이 6 cm 인 원의 지름은 몇 cm 일까요?',
fig:circ({r:6,showR:true,showD:true,note:'반지름 6 cm — 지름은?'}),
answer:12,
hint:'지름 = 반지름 × 2! 원을 가로질러 지나는 가장 긴 길이예요.',
sol:{ ans:'12 cm', fig:circ({r:6,showR:true,showD:true,note:'지름 = 6 × 2 = 12 cm'}),
steps:['반지름은 중심에서 가장자리까지의 거리.','지름은 반지름의 2배: 6 × 2 = 12 cm.','지름은 원을 가로질러 지나는 가장 긴 선이에요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'반지름이 7 cm 인 원의 지름은 몇 cm 일까요?',
fig:circ({r:6,showR:true,showD:true,note:'반지름 7 cm — 지름은?'}),
answer:14,
hint:'지름 = 반지름 × 2! 원을 가로질러 지나는 가장 긴 길이예요.',
sol:{ ans:'14 cm', fig:circ({r:6,showR:true,showD:true,note:'지름 = 7 × 2 = 14 cm'}),
steps:['반지름은 중심에서 가장자리까지의 거리.','지름은 반지름의 2배: 7 × 2 = 14 cm.','지름은 원을 가로질러 지나는 가장 긴 선이에요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'반지름이 8 cm 인 원의 지름은 몇 cm 일까요?',
fig:circ({r:6,showR:true,showD:true,note:'반지름 8 cm — 지름은?'}),
answer:16,
hint:'지름 = 반지름 × 2! 원을 가로질러 지나는 가장 긴 길이예요.',
sol:{ ans:'16 cm', fig:circ({r:6,showR:true,showD:true,note:'지름 = 8 × 2 = 16 cm'}),
steps:['반지름은 중심에서 가장자리까지의 거리.','지름은 반지름의 2배: 8 × 2 = 16 cm.','지름은 원을 가로질러 지나는 가장 긴 선이에요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'반지름이 9 cm 인 원의 지름은 몇 cm 일까요?',
fig:circ({r:6,showR:true,showD:true,note:'반지름 9 cm — 지름은?'}),
answer:18,
hint:'지름 = 반지름 × 2! 원을 가로질러 지나는 가장 긴 길이예요.',
sol:{ ans:'18 cm', fig:circ({r:6,showR:true,showD:true,note:'지름 = 9 × 2 = 18 cm'}),
steps:['반지름은 중심에서 가장자리까지의 거리.','지름은 반지름의 2배: 9 × 2 = 18 cm.','지름은 원을 가로질러 지나는 가장 긴 선이에요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'반지름이 10 cm 인 원의 지름은 몇 cm 일까요?',
fig:circ({r:6,showR:true,showD:true,note:'반지름 10 cm — 지름은?'}),
answer:20,
hint:'지름 = 반지름 × 2! 원을 가로질러 지나는 가장 긴 길이예요.',
sol:{ ans:'20 cm', fig:circ({r:6,showR:true,showD:true,note:'지름 = 10 × 2 = 20 cm'}),
steps:['반지름은 중심에서 가장자리까지의 거리.','지름은 반지름의 2배: 10 × 2 = 20 cm.','지름은 원을 가로질러 지나는 가장 긴 선이에요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'반지름이 1 cm 인 원의 지름은 몇 cm 일까요?',
fig:circ({r:1,showR:true,showD:true,note:'반지름 1 cm — 지름은?'}),
answer:2,
hint:'지름 = 반지름 × 2! 원을 가로질러 지나는 가장 긴 길이예요.',
sol:{ ans:'2 cm', fig:circ({r:1,showR:true,showD:true,note:'지름 = 1 × 2 = 2 cm'}),
steps:['반지름은 중심에서 가장자리까지의 거리.','지름은 반지름의 2배: 1 × 2 = 2 cm.','지름은 원을 가로질러 지나는 가장 긴 선이에요!']}},
{ tier:'중급', type:'self', kind:'num',
q:'지름이 4 cm 인 원의 반지름은 몇 cm 일까요?',
fig:circ({r:2,showR:true,showD:true,note:'지름 4 cm — 반지름은?'}),
answer:2,
hint:'이번엔 거꾸로! 반지름 = 지름 ÷ 2 예요.',
sol:{ ans:'2 cm', fig:null,
steps:['지름 = 반지름 × 2 이므로, 반지름 = 지름 ÷ 2.','4 ÷ 2 = 2 cm.','확인: 2 × 2 = 4 ✓']}},
{ tier:'중급', type:'self', kind:'num',
q:'지름이 6 cm 인 원의 반지름은 몇 cm 일까요?',
fig:circ({r:3,showR:true,showD:true,note:'지름 6 cm — 반지름은?'}),
answer:3,
hint:'이번엔 거꾸로! 반지름 = 지름 ÷ 2 예요.',
sol:{ ans:'3 cm', fig:null,
steps:['지름 = 반지름 × 2 이므로, 반지름 = 지름 ÷ 2.','6 ÷ 2 = 3 cm.','확인: 3 × 2 = 6 ✓']}},
{ tier:'중급', type:'self', kind:'num',
q:'지름이 8 cm 인 원의 반지름은 몇 cm 일까요?',
fig:circ({r:4,showR:true,showD:true,note:'지름 8 cm — 반지름은?'}),
answer:4,
hint:'이번엔 거꾸로! 반지름 = 지름 ÷ 2 예요.',
sol:{ ans:'4 cm', fig:null,
steps:['지름 = 반지름 × 2 이므로, 반지름 = 지름 ÷ 2.','8 ÷ 2 = 4 cm.','확인: 4 × 2 = 8 ✓']}},
{ tier:'중급', type:'self', kind:'num',
q:'지름이 10 cm 인 원의 반지름은 몇 cm 일까요?',
fig:circ({r:5,showR:true,showD:true,note:'지름 10 cm — 반지름은?'}),
answer:5,
hint:'이번엔 거꾸로! 반지름 = 지름 ÷ 2 예요.',
sol:{ ans:'5 cm', fig:null,
steps:['지름 = 반지름 × 2 이므로, 반지름 = 지름 ÷ 2.','10 ÷ 2 = 5 cm.','확인: 5 × 2 = 10 ✓']}},
{ tier:'중급', type:'self', kind:'num',
q:'지름이 12 cm 인 원의 반지름은 몇 cm 일까요?',
fig:circ({r:6,showR:true,showD:true,note:'지름 12 cm — 반지름은?'}),
answer:6,
hint:'이번엔 거꾸로! 반지름 = 지름 ÷ 2 예요.',
sol:{ ans:'6 cm', fig:null,
steps:['지름 = 반지름 × 2 이므로, 반지름 = 지름 ÷ 2.','12 ÷ 2 = 6 cm.','확인: 6 × 2 = 12 ✓']}},
{ tier:'중급', type:'self', kind:'num',
q:'지름이 14 cm 인 원의 반지름은 몇 cm 일까요?',
fig:circ({r:6,showR:true,showD:true,note:'지름 14 cm — 반지름은?'}),
answer:7,
hint:'이번엔 거꾸로! 반지름 = 지름 ÷ 2 예요.',
sol:{ ans:'7 cm', fig:null,
steps:['지름 = 반지름 × 2 이므로, 반지름 = 지름 ÷ 2.','14 ÷ 2 = 7 cm.','확인: 7 × 2 = 14 ✓']}},
{ tier:'중급', type:'self', kind:'num',
q:'지름이 16 cm 인 원의 반지름은 몇 cm 일까요?',
fig:circ({r:6,showR:true,showD:true,note:'지름 16 cm — 반지름은?'}),
answer:8,
hint:'이번엔 거꾸로! 반지름 = 지름 ÷ 2 예요.',
sol:{ ans:'8 cm', fig:null,
steps:['지름 = 반지름 × 2 이므로, 반지름 = 지름 ÷ 2.','16 ÷ 2 = 8 cm.','확인: 8 × 2 = 16 ✓']}},
{ tier:'중급', type:'self', kind:'num',
q:'지름이 18 cm 인 원의 반지름은 몇 cm 일까요?',
fig:circ({r:6,showR:true,showD:true,note:'지름 18 cm — 반지름은?'}),
answer:9,
hint:'이번엔 거꾸로! 반지름 = 지름 ÷ 2 예요.',
sol:{ ans:'9 cm', fig:null,
steps:['지름 = 반지름 × 2 이므로, 반지름 = 지름 ÷ 2.','18 ÷ 2 = 9 cm.','확인: 9 × 2 = 18 ✓']}},
{ tier:'중급', type:'self', kind:'num',
q:'지름이 20 cm 인 원의 반지름은 몇 cm 일까요?',
fig:circ({r:6,showR:true,showD:true,note:'지름 20 cm — 반지름은?'}),
answer:10,
hint:'이번엔 거꾸로! 반지름 = 지름 ÷ 2 예요.',
sol:{ ans:'10 cm', fig:null,
steps:['지름 = 반지름 × 2 이므로, 반지름 = 지름 ÷ 2.','20 ÷ 2 = 10 cm.','확인: 10 × 2 = 20 ✓']}},
{ tier:'중급', type:'self', kind:'num',
q:'지름이 2 cm 인 원의 반지름은 몇 cm 일까요?',
fig:circ({r:1,showR:true,showD:true,note:'지름 2 cm — 반지름은?'}),
answer:1,
hint:'이번엔 거꾸로! 반지름 = 지름 ÷ 2 예요.',
sol:{ ans:'1 cm', fig:null,
steps:['지름 = 반지름 × 2 이므로, 반지름 = 지름 ÷ 2.','2 ÷ 2 = 1 cm.','확인: 1 × 2 = 2 ✓']}},
{ tier:'상위', type:'self', kind:'num',
q:'컴퍼스를 4 cm 벌려 원을 그렸습니다. 이 원의 지름은?',
fig:null,
answer:8,
hint:'컴퍼스를 벌린 만큼이 반지름! 지름 = 반지름 × 2',
sol:{ ans:'8 cm', fig:null,
steps:['반지름 ↔ 지름 관계: 지름 = 반지름 × 2.','답은 8 cm.','중심에서 가장자리까지 = 반지름이에요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'접시의 지름이 24 cm 입니다. 반지름은?',
fig:null,
answer:12,
hint:'컴퍼스를 벌린 만큼이 반지름! 지름 = 반지름 × 2',
sol:{ ans:'12 cm', fig:null,
steps:['반지름 ↔ 지름 관계: 지름 = 반지름 × 2.','답은 12 cm.','중심에서 가장자리까지 = 반지름이에요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'자전거 바퀴의 반지름이 30 cm 입니다. 지름은?',
fig:null,
answer:60,
hint:'컴퍼스를 벌린 만큼이 반지름! 지름 = 반지름 × 2',
sol:{ ans:'60 cm', fig:null,
steps:['반지름 ↔ 지름 관계: 지름 = 반지름 × 2.','답은 60 cm.','중심에서 가장자리까지 = 반지름이에요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'시계의 지름이 20 cm 입니다. 중심에서 가장자리까지는?',
fig:null,
answer:10,
hint:'컴퍼스를 벌린 만큼이 반지름! 지름 = 반지름 × 2',
sol:{ ans:'10 cm', fig:null,
steps:['반지름 ↔ 지름 관계: 지름 = 반지름 × 2.','답은 10 cm.','중심에서 가장자리까지 = 반지름이에요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'원의 반지름이 7 cm 일 때 지름은?',
fig:null,
answer:14,
hint:'컴퍼스를 벌린 만큼이 반지름! 지름 = 반지름 × 2',
sol:{ ans:'14 cm', fig:null,
steps:['반지름 ↔ 지름 관계: 지름 = 반지름 × 2.','답은 14 cm.','중심에서 가장자리까지 = 반지름이에요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'반지름이 3 cm 인 원 안에 그을 수 있는 가장 긴 선의 길이는?',
fig:circ({r:3,showR:true,showD:true,note:'가장 긴 선은?'}),
answer:6,
hint:'원 안에서 가장 긴 선은 지름이에요!',
sol:{ ans:'6 cm (지름)', fig:null,
steps:['원 안에서 가장 긴 선 = 지름(중심을 지나는 선).','지름 = 3 × 2 = 6 cm.','중심을 안 지나면 지름보다 짧아져요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'반지름이 5 cm 인 원 안에 그을 수 있는 가장 긴 선의 길이는?',
fig:circ({r:5,showR:true,showD:true,note:'가장 긴 선은?'}),
answer:10,
hint:'원 안에서 가장 긴 선은 지름이에요!',
sol:{ ans:'10 cm (지름)', fig:null,
steps:['원 안에서 가장 긴 선 = 지름(중심을 지나는 선).','지름 = 5 × 2 = 10 cm.','중심을 안 지나면 지름보다 짧아져요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'반지름이 6 cm 인 원 안에 그을 수 있는 가장 긴 선의 길이는?',
fig:circ({r:6,showR:true,showD:true,note:'가장 긴 선은?'}),
answer:12,
hint:'원 안에서 가장 긴 선은 지름이에요!',
sol:{ ans:'12 cm (지름)', fig:null,
steps:['원 안에서 가장 긴 선 = 지름(중심을 지나는 선).','지름 = 6 × 2 = 12 cm.','중심을 안 지나면 지름보다 짧아져요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'반지름이 4 cm 인 원 안에 그을 수 있는 가장 긴 선의 길이는?',
fig:circ({r:4,showR:true,showD:true,note:'가장 긴 선은?'}),
answer:8,
hint:'원 안에서 가장 긴 선은 지름이에요!',
sol:{ ans:'8 cm (지름)', fig:null,
steps:['원 안에서 가장 긴 선 = 지름(중심을 지나는 선).','지름 = 4 × 2 = 8 cm.','중심을 안 지나면 지름보다 짧아져요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'반지름이 2 cm 인 원 안에 그을 수 있는 가장 긴 선의 길이는?',
fig:circ({r:2,showR:true,showD:true,note:'가장 긴 선은?'}),
answer:4,
hint:'원 안에서 가장 긴 선은 지름이에요!',
sol:{ ans:'4 cm (지름)', fig:null,
steps:['원 안에서 가장 긴 선 = 지름(중심을 지나는 선).','지름 = 2 × 2 = 4 cm.','중심을 안 지나면 지름보다 짧아져요!']}},
{ tier:'최상위', type:'self', kind:'choice',
q:'한 원에서 반지름은 몇 개나 그을 수 있을까요?',
fig:null,
choices:['1개','2개','4개','셀 수 없이 많다'], answer:'셀 수 없이 많다',
hint:'중심에서 가장자리까지 — 방향이 몇 가지일까요?',
sol:{ ans:'셀 수 없이 많다', fig:null,
steps:['중심에서 가장자리로 가는 방향은 무수히 많아요.','그 길이는 모두 같아요(원의 성질!).','그래서 반지름은 셀 수 없이 많고, 전부 길이가 같습니다.']}},
{ tier:'최상위', type:'self', kind:'choice',
q:'한 원에서 모든 반지름의 길이는 어떨까요?',
fig:null,
choices:['모두 같다','모두 다르다','2가지뿐','알 수 없다'], answer:'모두 같다',
hint:'원이 동그란 이유가 뭘까요?',
sol:{ ans:'모두 같다', fig:null,
steps:['원은 중심에서 같은 거리에 있는 점들을 모은 모양이에요.','그래서 모든 반지름의 길이가 같아요.','이게 원이 동그란 이유예요!']}},
{ tier:'최상위', type:'self', kind:'choice',
q:'지름이 10 cm 인 원과 반지름이 6 cm 인 원 중 더 큰 원은?',
fig:null,
choices:['지름 10 cm 인 원','반지름 6 cm 인 원','같다','알 수 없다'], answer:'반지름 6 cm 인 원',
hint:'단위를 맞춰 비교! 지름 10cm → 반지름 5cm, vs 반지름 6cm',
sol:{ ans:'반지름 6 cm 인 원 (지름 12 cm)', fig:null,
steps:['지름 10 cm 인 원 → 반지름 5 cm.','반지름 6 cm 인 원 → 지름 12 cm.','5 < 6 이므로 반지름 6 cm 인 원이 더 커요. 반지름끼리 또는 지름끼리 비교해야 해요!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'반지름이 5 cm 인 원 두 개를 딱 붙여 놓으면 전체 길이는 몇 cm 일까요?',
fig:null,
answer:20,
hint:'원 하나의 지름은 10 cm. 두 개를 나란히 붙이면?',
sol:{ ans:'20 cm', fig:null,
steps:['원 하나의 지름 = 5 × 2 = 10 cm.','두 개를 나란히 = 10 + 10 = 20 cm.','지름끼리 더하면 돼요!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'컴퍼스로 지름 14 cm 인 원을 그리려면 컴퍼스를 몇 cm 벌려야 할까요?',
fig:null,
answer:7,
hint:'컴퍼스를 벌린 길이 = 반지름이에요!',
sol:{ ans:'7 cm', fig:null,
steps:['컴퍼스를 벌린 길이 = 반지름.','반지름 = 지름 ÷ 2 = 14 ÷ 2 = 7 cm.','14 cm 로 벌리면 지름 28 cm 원이 돼요 — 함정!']}},
{ tier:'최상위', type:'self', kind:'choice',
q:'반지름 3 cm 인 원 안에서 중심을 지나지 않는 선은 지름보다 길까요, 짧을까요?',
fig:null,
choices:['길다','짧다','같다','알 수 없다'], answer:'짧다',
hint:'가장 긴 선은 중심을 지나는 지름이에요!',
sol:{ ans:'짧다', fig:null,
steps:['원 안에서 가장 긴 선은 중심을 지나는 지름.','중심을 안 지나면 그보다 짧아요.','그래서 지름이 특별한 거예요!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'지름 8 cm 인 원 3개를 나란히 붙이면 전체 길이는?',
fig:null,
answer:24,
hint:'8 × 3 = ?',
sol:{ ans:'24 cm', fig:null,
steps:['원 하나의 지름 = 8 cm.','3개 나란히 = 8 × 3 = 24 cm.','지름을 이어 붙이는 셈!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'반지름이 2배가 되면 지름은 몇 배가 될까요?',
fig:null,
answer:2,
hint:'지름 = 반지름 × 2 이니까요.',
sol:{ ans:'2배', fig:null,
steps:['지름 = 반지름 × 2.','반지름이 2배가 되면 지름도 2배.','예: 반지름 3→6 이면 지름 6→12.']}},
{ tier:'최상위', type:'self', kind:'choice',
q:'원의 중심에서 가장자리까지 거리가 항상 같은 이유는?',
fig:null,
choices:['우연히 그렇다','원의 정의가 그렇기 때문','컴퍼스 때문','알 수 없다'], answer:'원의 정의가 그렇기 때문',
hint:'원은 어떻게 만들어진 모양일까요?',
sol:{ ans:'원의 정의가 그렇기 때문 (중심에서 같은 거리인 점의 모임)', fig:null,
steps:['원 = 중심에서 같은 거리에 있는 점들을 모두 모은 모양.','그래서 반지름이 모두 같아요.','컴퍼스를 고정한 채 돌리면 자동으로 그렇게 돼요!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'지름 12 cm 인 원과 지름 12 cm 인 원을 겹치지 않게 나란히 놓으면 전체 길이는?',
fig:null,
answer:24,
hint:'12 + 12 = ?',
sol:{ ans:'24 cm', fig:null,
steps:['원 하나의 지름 12 cm.','두 개 나란히 = 12 + 12 = 24 cm.','반지름(6cm)으로 착각하지 않게 조심!']}},
];
const TIERS=['기초','중급','상위','최상위'];
const TIER_DESC={기초:'영상만 봐도 바로 풀려요 — 배운 걸 그대로 적용.',중급:'한 번 더 생각 — 거꾸로·변형. 영상 안에 답이 있어요.',상위:'아래 학년 개념(선수 단원)을 함께 써야 풀려요.',최상위:'여러 개념·역발상·함정까지. 최고 난도.'};
let curTier='기초';
function tierProblems(t){ return P.map((p,i)=>({p,i})).filter(o=>o.p.tier===t); }
function renderTabs(){
const tb=document.getElementById('tabs'); tb.innerHTML='';
TIERS.forEach(t=>{ const n=tierProblems(t).length;
const b=document.createElement('button'); b.className='tab'+(t===curTier?' on':''); b.textContent=`${t} (${n})`;
b.onclick=()=>{curTier=t; renderTabs(); renderList();}; tb.appendChild(b); });
document.getElementById('tierNote').textContent=TIER_DESC[curTier];
}
function esc(x){return String(x).replace(/&/g,'&').replace(//g,'>');}
function renderList(){
const L=document.getElementById('list'); L.innerHTML='';
const items=tierProblems(curTier);
if(!items.length){ L.innerHTML='