const e=React.createElement;
const rct={
sec:{padding:'56px 48px',maxWidth:1020,margin:'0 auto'},
h2:{fontFamily:'var(--font-display)',fontWeight:800,fontSize:27,color:'var(--text-heading)',margin:'0 0 10px'},
h3:{fontFamily:'var(--font-display)',fontWeight:700,fontSize:19,color:'var(--navy-700)',margin:'34px 0 14px'},
p:{fontFamily:'var(--font-body)',fontSize:15.5,color:'var(--text-body)',lineHeight:1.65},
muted:{fontFamily:'var(--font-body)',fontSize:14.5,color:'var(--text-muted)',lineHeight:1.6},
card:{background:'var(--white)',border:'1px solid var(--border-default)',borderRadius:'var(--radius-lg)',padding:'20px 24px',boxShadow:'var(--shadow-sm)'},
th:{fontFamily:'var(--font-body)',fontWeight:700,fontSize:12.5,letterSpacing:'.04em',color:'var(--text-muted)',textAlign:'left',padding:'10px 12px',borderBottom:'2px solid var(--border-default)'},
td:{fontFamily:'var(--font-body)',fontSize:14.5,color:'var(--text-body)',padding:'10px 12px',borderBottom:'1px solid var(--border-default)',verticalAlign:'top',lineHeight:1.55},
mag:{color:'var(--brand-accent)',fontWeight:700}};
function RctTable({cols,rows}){
return e('div',{style:{overflowX:'auto',margin:'14px 0'}},e('table',{style:{width:'100%',borderCollapse:'collapse',background:'var(--white)',borderRadius:'var(--radius-md)'}},
e('thead',null,e('tr',null,cols.map(c=>e('th',{key:c,style:rct.th},c)))),
e('tbody',null,rows.map((r,i)=>e('tr',{key:i},r.map((c,j)=>e('td',{key:j,style:j===0?{...rct.td,fontWeight:700,color:'var(--text-heading)',whiteSpace:'nowrap'}:rct.td},c)))))));}
function WordCard({t}){
return e('div',{style:{padding:'16px 0',borderBottom:'1px solid var(--border-default)'}},
e('div',{style:{fontFamily:'var(--font-display)',fontWeight:700,fontSize:16.5,color:'var(--text-heading)'}},t.w,' ',e('span',{style:{fontFamily:'var(--font-body)',fontWeight:600,fontSize:14.5,color:'var(--brand-accent)'}},'\u2014 ',t.m)),
e('p',{style:{...rct.p,margin:'8px 0 0',fontSize:14.5}},t.d),
t.s?e('p',{style:{...rct.muted,margin:'8px 0 0',fontSize:13.5}},e('b',{style:{color:'var(--navy-700)'}},'Signals: '),t.s):null);}
function GlossaryTab(){
const [fam,setFam]=React.useState(1);
const [q,setQ]=React.useState('');
const {Input}=window.ScorebuddyDesignSystem_ee75f2;
const ql=q.trim().toLowerCase();
const results=ql?window.RCTONE_FAMILIES.flatMap(f=>f.words.filter(t=>t.w.toLowerCase().includes(ql)||t.m.toLowerCase().includes(ql)).map(t=>({...t,fam:f.name}))):null;
const f=window.RCTONE_FAMILIES.find(x=>x.id===fam);
return e('div',null,
e('div',{style:{maxWidth:420,margin:'0 0 20px'}},e(Input,{placeholder:'Search 130+ tone words\u2026 e.g. "wry", "sardonic"',value:q,onChange:ev=>setQ(ev.target.value)})),
results?e('div',null,
e('p',{style:rct.muted},results.length,' word group',results.length===1?'':'s',' match "',q,'"'),
results.map((t,i)=>e('div',{key:i},e('div',{style:{fontFamily:'var(--font-body)',fontWeight:700,fontSize:11.5,letterSpacing:'.05em',color:'var(--text-muted)',marginTop:18}},t.fam.toUpperCase()),e(WordCard,{t})))):
e('div',null,
e('div',{style:{display:'flex',gap:8,flexWrap:'wrap',marginBottom:20}},
window.RCTONE_FAMILIES.map(x=>e('button',{key:x.id,onClick:()=>setFam(x.id),style:{fontFamily:'var(--font-body)',fontWeight:600,fontSize:13,padding:'7px 14px',borderRadius:'var(--radius-pill)',cursor:'pointer',border:x.id===fam?'1px solid var(--brand-accent)':'1px solid var(--border-default)',background:x.id===fam?'var(--magenta-100)':'var(--white)',color:x.id===fam?'var(--brand-accent)':'var(--text-body)'}},x.id,'. ',x.name))),
e('div',{style:{...rct.card,marginBottom:18,background:'var(--gray-50)',border:'none'}},e('p',{style:{...rct.p,margin:0,fontSize:14.5}},e('b',{style:{color:'var(--text-heading)'}},'Family ',f.id,' \u2014 ',f.name,'. '),f.blurb)),
f.words.map((t,i)=>e(WordCard,{key:i,t}))));}
function MethodTab(){
return e('div',null,
e('p',{style:rct.p},'A tone question does not ask what the passage says. It asks ',e('b',{style:rct.mag},'how the author feels about what they are saying'),' \u2014 the emotional and evaluative colouring behind the information. Two authors can report the same fact with alarm, excitement or complete indifference: the facts are the same, the tone is not. Tone lives almost entirely in the author\u2019s ',e('b',null,'adjectives, adverbs, verbs of judgement, punctuation and choice of what to include'),' \u2014 not in the nouns.'),
e('div',{style:{display:'grid',gridTemplateColumns:'repeat(auto-fit,minmax(300px,1fr))',gap:16,margin:'22px 0'}},
e('div',{style:rct.card},e('div',{style:{...rct.h3,margin:'0 0 8px',fontSize:16}},'What CAT does'),e('p',{style:{...rct.p,margin:0,fontSize:14}},'"The tone of the passage can best be described as\u2026", "The author\u2019s attitude towards X is one of\u2026". Passages come from serious long-form journalism and academic books, so the tone is almost always in the restrained middle: analytical, critical, sceptical, appreciative, cautionary, ambivalent. Extreme tones are printed as options to trap you.')),
e('div',{style:rct.card},e('div',{style:{...rct.h3,margin:'0 0 8px',fontSize:16}},'Where the evidence physically sits'),e('ul',{style:{...rct.p,margin:0,fontSize:14,paddingLeft:18,display:'flex',flexDirection:'column',gap:6}},
e('li',null,e('b',null,'Evaluative adjectives & adverbs'),' \u2014 "a clumsy attempt", "remarkably durable". The richest source.'),
e('li',null,e('b',null,'Reporting verbs'),' \u2014 "he claims" vs "he demonstrates" vs "he concedes".'),
e('li',null,e('b',null,'Scare quotes & italics'),' \u2014 a so-called "reform" signals disbelief without one negative adjective.'),
e('li',null,e('b',null,'Concessive connectors'),' \u2014 yet, however, nonetheless: the real attitude is after the pivot.'),
e('li',null,e('b',null,'The last two sentences'),' \u2014 the closing lines carry the author\u2019s position most reliably.')))),
e('h3',{style:rct.h2},'The four-step method for any tone question'),
[['Step 1 \u2014 Fix the polarity first','Positive, negative or neutral? This alone strikes two options immediately.'],
['Step 2 \u2014 Calibrate the intensity','Within a polarity there is a ladder. Negative: sceptical \u2192 critical \u2192 censorious \u2192 scathing \u2192 vitriolic. Positive: appreciative \u2192 admiring \u2192 laudatory \u2192 eulogistic \u2192 fawning. "This argument is not fully persuasive" is bottom rung; "an intellectual embarrassment" is three rungs up. Matching polarity but missing intensity is the second most common way to lose the mark.'],
['Step 3 \u2014 Test the option against the whole passage','Authors routinely explain a theory sympathetically for two paragraphs before demolishing it in the third. Where an option has two parts \u2014 "admiring but qualified" \u2014 both halves must be independently true. A single false half kills the option.'],
['Step 4 \u2014 Prefer the moderate survivor','If two options survive and one is a degree gentler, the gentler one is right far more often. Academic writing is hedged by professional habit. A tiebreaker, not a first principle \u2014 do not override clear textual evidence of anger when it is genuinely on the page.']].map((s,i)=>
e('div',{key:i,style:{...rct.card,marginBottom:12}},e('div',{style:{fontFamily:'var(--font-display)',fontWeight:700,fontSize:15.5,color:'var(--brand-accent)',marginBottom:6}},s[0]),e('p',{style:{...rct.p,margin:0,fontSize:14.5}},s[1]))));}
function VerbsTab(){
const V=window.RCTONE_VERBS;
return e('div',null,
e('p',{style:rct.p},V.intro),
V.groups.map((g,i)=>e('div',{key:i},
e('h3',{style:rct.h3},g.g),
g.items.map((t,j)=>e('div',{key:j,style:{padding:'12px 0',borderBottom:'1px solid var(--border-default)'}},
e('span',{style:{fontFamily:'var(--font-display)',fontWeight:700,fontSize:15,color:'var(--text-heading)'}},t.w,' \u2014 '),
e('span',{style:{...rct.p,fontSize:14.5}},t.d))))));}
function GenresTab(){
return e('div',null,
e('p',{style:rct.p},'CAT and IPMAT draw from a narrow, predictable set of genres. ',e('b',{style:rct.mag},'Knowing the genre in the first thirty seconds tells you which tones are even possible'),' \u2014 half the elimination done before you read the options.'),
window.RCTONE_GENRES.map(g=>e('div',{key:g.n,style:{...rct.card,marginTop:16}},
e('div',{style:{display:'flex',alignItems:'baseline',gap:12,flexWrap:'wrap',marginBottom:8}},
e('span',{style:{fontFamily:'var(--font-display)',fontWeight:800,fontSize:17,color:'var(--text-heading)'}},g.n,' \u00b7 ',g.g),
e('span',{style:{...rct.muted,fontSize:12.5}},'CAT: ',e('b',null,g.cat),' \u00b7 IPMAT: ',e('b',null,g.ipmat),' \u00b7 Difficulty: ',e('b',null,g.diff))),
e('p',{style:{...rct.p,fontSize:14.5,margin:'0 0 12px'}},g.d),
e('div',{style:{display:'flex',flexDirection:'column',gap:5}},
e('div',{style:{...rct.muted,fontSize:13.5}},e('b',{style:{color:'var(--teal-600)'}},'Likely answers: '),g.ans),
e('div',{style:{...rct.muted,fontSize:13.5}},e('b',{style:{color:'var(--brand-accent)'}},'Likely traps: '),g.traps)))));}
function ExamplesTab(){
const [open,setOpen]=React.useState({});
const {Button}=window.ScorebuddyDesignSystem_ee75f2;
return e('div',null,
e('p',{style:rct.p},'Read the snippet, ',e('b',{style:rct.mag},'decide the tone in one word'),', then reveal the analysis. The value is in the "why not" lines \u2014 that is where the marks are actually won.'),
window.RCTONE_EXAMPLES.map(x=>{const o=open[x.n];return e('div',{key:x.n,style:{...rct.card,marginTop:16}},
e('div',{style:{fontFamily:'var(--font-body)',fontWeight:700,fontSize:12,letterSpacing:'.05em',color:'var(--text-muted)',marginBottom:10}},'EXAMPLE ',x.n,' OF 18'),
e('p',{style:{...rct.p,fontSize:14.5,fontStyle:'italic',background:'var(--gray-50)',borderRadius:'var(--radius-md)',padding:'14px 18px',margin:'0 0 14px'}},x.snip),
o?e('div',null,
e('div',{style:{fontFamily:'var(--font-display)',fontWeight:800,fontSize:16,color:'var(--teal-600)',marginBottom:8}},'Answer: ',x.tone,x.vs?e('span',{style:{fontWeight:600,fontSize:13.5,color:'var(--text-muted)'}},' \u00b7 ',x.vs):null),
e('p',{style:{...rct.p,fontSize:14.5,margin:'0 0 10px'}},x.why),
x.nots.map((n,i)=>e('p',{key:i,style:{...rct.muted,fontSize:13.5,margin:'6px 0 0'}},e('b',{style:{color:'var(--brand-accent)'}},'Why not ',n[0],': '),n[1]))):
e(Button,{variant:'secondary',size:'sm',onClick:()=>setOpen({...open,[x.n]:true})},'Reveal answer & reasoning'));}));}
function RulesTab(){
const R=window.RCTONE_RULES;
return e('div',null,
e('p',{style:rct.p},'Every table below represents a real pair of options CAT has placed side by side. Learn the discriminating question in the right-hand column \u2014 that is what you ask yourself in the exam.'),
e('h3',{style:rct.h3},'The irony family, settled once'),
e(RctTable,{cols:['Word','What it actually requires','Discriminating question'],rows:R.irony}),
e('h3',{style:rct.h3},'Doubt: four different things'),
e(RctTable,{cols:['Word','What is being doubted','Discriminating question'],rows:R.doubt}),
e('h3',{style:rct.h3},'Negativity, calibrated'),
e(RctTable,{cols:['Rung','Word','What must be on the page'],rows:R.negLadder}),
e('h3',{style:rct.h3},'Positivity, calibrated'),
e(RctTable,{cols:['Rung','Word','What must be on the page'],rows:R.posLadder}),
e('h3',{style:rct.h3},'Absence of emotion: which word'),
e(RctTable,{cols:['Word','Use when','Do not use when'],rows:R.noEmotion}),
e('h3',{style:rct.h3},'Twelve pairs worth memorising'),
e(RctTable,{cols:['The pair','The difference in one line'],rows:R.pairs}),
e('h3',{style:rct.h3},'The elimination rulebook \u2014 eleven rules that decide most tone questions'),
e('ol',{style:{...rct.p,paddingLeft:22,display:'flex',flexDirection:'column',gap:10,margin:'14px 0'}},
R.rulebook.map((r,i)=>e('li',{key:i},e('b',{style:{color:'var(--brand-accent)'}},r[0]),' ',r[1]))),
e('h3',{style:rct.h3},'Three question stems and what each really wants'),
R.stems.map((s,i)=>e('div',{key:i,style:{...rct.card,marginBottom:12}},e('div',{style:{fontFamily:'var(--font-display)',fontWeight:700,fontSize:15,color:'var(--text-heading)',marginBottom:6}},s[0]),e('p',{style:{...rct.p,fontSize:14.5,margin:0}},s[1]))));}
function RevisionTab(){
const V=window.RCTONE_RULES.revision;
return e('div',null,
e('p',{style:rct.p},e('b',{style:rct.mag},'Read this before every mock.')),
e('h3',{style:rct.h3},'The 30 highest-frequency correct answers in CAT RC'),
e('div',{style:{display:'grid',gridTemplateColumns:'repeat(auto-fit,minmax(280px,1fr))',gap:14}},
V.correct.map((c,i)=>e('div',{key:i,style:rct.card},e('div',{style:{fontFamily:'var(--font-body)',fontWeight:700,fontSize:13,color:'var(--teal-600)',marginBottom:6}},c[0]),e('p',{style:{...rct.p,fontSize:14,margin:0}},c[1])))),
e('h3',{style:rct.h3},'The 15 highest-frequency wrong answers'),
e('div',{style:{...rct.card,border:'1px solid var(--brand-accent)',background:'var(--magenta-100)'}},
e('p',{style:{...rct.p,fontSize:15,fontWeight:600,margin:'0 0 8px',color:'var(--text-heading)'}},V.wrong),
e('p',{style:{...rct.muted,fontSize:13.5,margin:0}},V.wrongNote)),
e('h3',{style:rct.h3},'The four-step method, compressed'),
e(RctTable,{cols:['Step','Ask','Then'],rows:V.method}),
e('h3',{style:rct.h3},'A four-week practice plan'),
V.plan.map((p,i)=>e('div',{key:i,style:{...rct.card,marginBottom:12}},e('div',{style:{fontFamily:'var(--font-display)',fontWeight:700,fontSize:15,color:'var(--brand-accent)',marginBottom:6}},p[0]),e('p',{style:{...rct.p,fontSize:14.5,margin:0}},p[1]))));}
function RcTonePage(){
const {Badge}=window.ScorebuddyDesignSystem_ee75f2;
const TABS=[['method','The Method',MethodTab],['glossary','Tone Glossary (130+ words)',GlossaryTab],['verbs','Purpose Verbs',VerbsTab],['genres','15 Passage Types',GenresTab],['examples','18 Solved Examples',ExamplesTab],['rules','Confusion Pairs & Rules',RulesTab],['revision','Revision Sheet',RevisionTab]];
const [tab,setTab]=React.useState(()=>localStorage.getItem('sb-rctone-tab')||'method');
const pick=t=>{setTab(t);try{localStorage.setItem('sb-rctone-tab',t)}catch(err){}};
const Active=(TABS.find(t=>t[0]===tab)||TABS[0])[2];
return e('div',null,
e('section',{style:{padding:'64px 48px 48px',background:'var(--navy-900)'}},
e('div',{style:{maxWidth:1020,margin:'0 auto'}},
e(Badge,{tone:'accent'},'VARC \u00b7 READING COMPREHENSION'),
e('h1',{style:{fontFamily:'var(--font-display)',fontWeight:800,fontSize:38,color:'var(--on-dark)',margin:'16px 0 12px',lineHeight:1.15}},'The Complete RC Tone & Passage-Type Handbook'),
e('p',{style:{fontFamily:'var(--font-body)',fontSize:16,color:'var(--text-on-inverse)',lineHeight:1.65,maxWidth:720,margin:0}},'Every tone word, attitude word and passage genre that appears in CAT and IPMAT Reading Comprehension \u2014 130+ tone words with the signals that give them away, 60 purpose verbs, 15 passage genres with their traps, 18 solved examples and the full elimination rulebook.'),
e('p',{style:{fontFamily:'var(--font-body)',fontSize:13.5,color:'var(--text-on-inverse)',opacity:.85,margin:'16px 0 0',maxWidth:720}},e('b',null,'How to use it:'),' do not memorise front to back. Read one family a day, then attempt 2 RCs and name the tone in one word before looking at the options. Return to the glossary after every mock.'))),
e('div',{className:'rct-bar',style:{position:'sticky',top:0,zIndex:20,background:'var(--white)',borderBottom:'1px solid var(--border-default)',padding:'12px 48px'}},
e('div',{className:'rct-row',style:{maxWidth:1020,margin:'0 auto',display:'flex',gap:8,flexWrap:'wrap'}},
TABS.map(t=>e('button',{key:t[0],onClick:()=>pick(t[0]),style:{fontFamily:'var(--font-body)',fontWeight:600,fontSize:13.5,padding:'8px 15px',borderRadius:'var(--radius-pill)',cursor:'pointer',border:'none',background:tab===t[0]?'var(--brand-primary)':'var(--gray-100)',color:tab===t[0]?'var(--text-on-brand)':'var(--text-body)'}},t[1])))),
e('section',{style:rct.sec},e(Active,null)));}
window.RcTonePage=RcTonePage;
