@font-face{font-family:Source;src:url('/assets/fonts/source-sans-3.woff2') format('woff2');font-display:swap}
@font-face{font-family:Ethiopic;src:url('/assets/fonts/noto-sans-ethiopic.woff2') format('woff2');font-display:swap;font-weight:100 900;unicode-range:U+1200-1399,U+2D80-2DDE,U+AB01-AB2E}
@font-face{font-family:Naskh;src:url('/assets/fonts/noto-naskh-arabic.woff2') format('woff2');font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+0870-08FF,U+200C-200E,U+FB50-FDFF,U+FE70-FEFC}
:root{--ink:#16202e;--muted:#4c5869;--line:#d6dde8;--bg:#f6f8fb;--card:#fff;--brand:#2b4f8a;--brand-dark:#1e3a68;--soft:#e7eef8;--warn:#fff4dc;--bad:#a8321e;--good:#1d6b3f}
*{box-sizing:border-box}
html{color:var(--ink);background:var(--bg);font-family:Source,Ethiopic,'Segoe UI',Roboto,'Noto Sans Ethiopic',Kefa,'Nyala',Arial,sans-serif;font-size:18px;line-height:1.55}
html[dir=rtl]{font-family:Naskh,Source,'Segoe UI',Tahoma,sans-serif;line-height:1.75}
html[dir=rtl] [lang=fr],html[dir=rtl] .exam,html[dir=rtl] .chat,html[dir=rtl] .email,html[dir=rtl] .phone{font-family:Source,'Segoe UI',Roboto,Arial,sans-serif;direction:ltr;text-align:left}
body{margin:0}
a{color:var(--brand);text-underline-offset:3px}
a:hover{color:var(--brand-dark)}
button,input,textarea,select{font:inherit;color:inherit}
button,.button{border:0;cursor:pointer;background:var(--brand);color:#fff;border-radius:10px;padding:12px 20px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:650;text-decoration:none;min-height:48px;touch-action:manipulation}
button:hover,.button:hover{background:var(--brand-dark);color:#fff}
button:disabled{opacity:.5;cursor:not-allowed}
.secondary{background:#fff;border:1px solid var(--line);color:var(--brand)}
.secondary:hover{background:var(--soft);color:var(--brand-dark)}
.wide{width:100%}
.skip{position:absolute;top:-999px;inset-inline-start:12px}.skip:focus{top:12px;background:#fff;padding:8px;z-index:9}
header.site{max-width:1180px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:14px 20px;gap:14px;flex-wrap:wrap;border-bottom:1px solid var(--line)}
.brand{font-weight:750;font-size:21px;text-decoration:none;display:flex;align-items:center;gap:10px;color:var(--ink);white-space:nowrap}
.brand-mark{display:inline-flex;background:var(--brand);color:#fff;font-size:15px;font-weight:800;width:38px;height:38px;align-items:center;justify-content:center;border-radius:10px;letter-spacing:.5px}
nav.main{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
nav.main a{text-decoration:none;font-weight:600;font-size:16px}
.lang-switch{display:flex;align-items:center;gap:6px;font-size:15px}
.track-switch{display:flex;align-items:center;gap:4px;font-size:15px;white-space:nowrap}.track-switch a{text-decoration:none;font-weight:600;padding:6px 8px;border-radius:8px;min-height:40px;display:inline-flex;align-items:center}.track-switch a[aria-current]{background:var(--soft);color:inherit}
.lang-switch select{padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:#fff;min-height:40px}
main{max-width:1180px;margin:auto;padding:18px 20px 60px}
footer{max-width:1180px;margin:auto;padding:28px 20px 50px;border-top:1px solid var(--line);color:var(--muted);font-size:15px}
footer .links{display:flex;flex-wrap:wrap;gap:14px;margin:10px 0}
h1{font-size:2.1rem;line-height:1.15;margin:.4em 0 .3em;letter-spacing:-.01em}
h2{font-size:1.45rem;line-height:1.25;margin:1.4em 0 .5em}
h3{font-size:1.15rem;margin:1.1em 0 .4em}
.hero{padding:22px 0 10px}
.eyebrow{text-transform:uppercase;letter-spacing:.06em;font-size:.78rem;font-weight:700;color:var(--brand);margin:0}
.lead{font-size:1.15rem;color:var(--muted);max-width:760px}
.cta-row{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0}
.small{font-size:.86rem;color:var(--muted)}
.notice{background:var(--warn);border-radius:10px;padding:12px 14px;margin:14px 0}
.error{background:#fde7e3;color:var(--bad);border-radius:10px;padding:12px 14px;margin:10px 0;font-weight:600}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin:14px 0}
.tile{display:block;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;text-decoration:none;color:var(--ink)}
.tile:hover{border-color:var(--brand)}
.tile h2,.tile h3{margin:.2em 0;font-size:1.1rem}
.tile p{margin:.2em 0;color:var(--muted);font-size:.95rem}
.tag{display:inline-block;background:var(--soft);color:var(--brand-dark);border-radius:99px;padding:2px 10px;font-size:.78rem;font-weight:700}
.panel{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;margin:14px 0}
.table-wrap{overflow-x:auto;margin:10px 0}
table{border-collapse:collapse;width:100%;font-size:.95rem}
th,td{border:1px solid var(--line);padding:7px 9px;text-align:start;vertical-align:top}
th{background:var(--soft)}
dl.facts{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px}dl.facts dt{font-weight:700}
details{border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin:10px 0;background:#fff}
summary{cursor:pointer;font-weight:650}
/* runner */
.runner-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap}
.timer{font-variant-numeric:tabular-nums;font-weight:800;font-size:1.3rem;background:var(--soft);border-radius:10px;padding:6px 12px}
.timer.low{background:#fde7e3;color:var(--bad)}
.progress{font-size:.85rem;color:var(--muted)}
.exam{background:#fbfcfa;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:10px 0}
.exam h4{margin:.3em 0}
.clip{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}
.question{margin:12px 0}
.question h3{font-size:1rem;margin:.2em 0 .5em}
.options{display:grid;gap:8px}
.options.inline{grid-template-columns:repeat(auto-fill,minmax(64px,1fr))}
.opt{background:#fff;color:var(--ink);border:1px solid var(--line);justify-content:flex-start;text-align:start;font-weight:500}
.opt[aria-pressed=true]{background:var(--soft);border-color:var(--brand);color:var(--brand-dark);font-weight:700}
.opt:hover{background:var(--soft);color:var(--ink)}
.gap{display:inline-block}
.gap select{min-height:38px;border:1px solid var(--brand);border-radius:8px;padding:2px 6px;background:#fff}
.statements li{margin:4px 0}
.photo{width:100%;max-width:600px;aspect-ratio:3/2;border-radius:12px;border:1px solid var(--line);background:#fff;display:block}
.sheet{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.sheet span{background:var(--soft);border-radius:8px;padding:4px 10px;font-weight:600}
.messages{display:grid;gap:8px;margin:12px 0;max-height:46vh;overflow-y:auto}
.message{border-radius:12px;padding:8px 12px;max-width:88%}
.message p{margin:0}
.message .role{display:block;font-size:.74rem;font-weight:700;color:var(--muted);text-transform:uppercase}
.message.examiner{background:#eef3f8}
.message.partner{background:#f6efe2}
.message.candidate{background:var(--soft);margin-inline-start:auto}
#live{min-height:1.4em;color:var(--muted);font-style:italic}
textarea{width:100%;min-height:110px;border:1px solid var(--line);border-radius:10px;padding:10px;background:#fff}
textarea.letter{min-height:300px}
.controls{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:10px 0}
.recording{background:var(--bad)!important}
.saved{font-size:.85rem;color:var(--muted)}
.result-level{font-size:2.6rem;font-weight:800;color:var(--brand-dark);line-height:1.1}
.result-card{background:var(--soft);border-radius:14px;padding:14px 16px;margin:12px 0}
.criterion{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding:8px 0}
.criterion p{margin:.1em 0}
.right{color:var(--good);font-weight:700}.wrong{color:var(--bad);font-weight:700}
.sentence{border-inline-start:4px solid var(--line);padding-inline-start:10px;margin:10px 0}
.sentence .orig{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1px}
.price-tile{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px}
.price-tile.featured{border:2px solid var(--brand)}
.price{font-size:2rem;font-weight:800}
.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
label{display:block;font-weight:600;margin:8px 0}
input[type=number],input[type=email],input[type=text],input[inputmode]{display:block;width:100%;min-height:46px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fff;font-weight:500;margin-top:4px}
.rtl{direction:rtl;text-align:right;font-family:Naskh,Source,Tahoma,sans-serif}
@media (max-width:640px){html{font-size:17px}h1{font-size:1.7rem}main{padding:12px 14px 50px}header.site{padding:10px 14px}.panel{padding:14px}nav.main{gap:12px}.message{max-width:96%}}
.fb-dialog{border:1px solid var(--line);border-radius:14px;padding:20px;max-width:520px;width:calc(100% - 32px);box-shadow:0 10px 40px rgba(0,0,0,.18)}
.fb-dialog::backdrop{background:rgba(0,0,0,.35)}
.fb-form label{display:block;margin:12px 0}.fb-form textarea,.fb-form input[type=email]{display:block;width:100%;margin-top:6px;box-sizing:border-box}
.fb-form h2{margin-top:0}.fb-msg{min-height:1.2em;color:#9a3412}
.error p{margin:0 0 8px}.error button{min-height:40px;padding:8px 14px}
.error-banner{position:fixed;left:12px;right:12px;bottom:12px;z-index:50;max-width:640px;margin:auto;background:#fde7e3;color:var(--bad);border:1px solid #f2b8ad;border-radius:12px;padding:10px 14px;display:flex;gap:12px;align-items:center;justify-content:space-between;box-shadow:0 6px 24px rgba(0,0,0,.12);font-weight:600}
.error-banner p{margin:0}.error-banner button{min-height:40px;padding:8px 14px}
.pass-box{background:var(--soft);border-radius:12px;padding:12px 16px;margin:12px 0}.pass-box p{margin:4px 0}
.pass-end{background:var(--soft);border-radius:10px;padding:10px 14px}
/* Long words and URLs must wrap on phones instead of widening the page. */
main,footer,.facts dd,.facts dt,td,th{overflow-wrap:break-word;hyphens:auto}.facts>*{min-width:0}

/* fide runners */
.brand-mark{font-size:13px;letter-spacing:0}
.grid.two{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.situation{border-top:2px solid var(--line);margin-top:16px;padding-top:6px}
.qnum{display:inline-flex;align-items:center;justify-content:center;min-width:1.6em;height:1.6em;border-radius:99px;background:var(--brand);color:#fff;font-size:.8rem;font-weight:800;margin-inline-end:4px}
.small-btn{min-height:40px;padding:8px 12px;font-size:.9rem}
.pic-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:10px 0}
.pic{flex-direction:column;background:#fff;color:var(--ink);border:2px solid var(--line);border-radius:14px;min-height:118px;padding:10px 6px;gap:6px}
.pic:hover{background:var(--soft);color:var(--ink)}
.pic .emoji{font-size:2.6rem;line-height:1;font-family:'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif}
.pic .label{font-weight:750;font-size:1rem;white-space:nowrap}
.pic[aria-checked=true]{border-color:var(--brand);background:var(--soft);box-shadow:0 0 0 2px var(--brand) inset}
.pic.right{border-color:var(--good);background:#e3f4ea;opacity:1}.pic.wrong{border-color:var(--bad);background:#fdeceb;opacity:1}.pic:disabled{opacity:.75;cursor:default}
.oral-answer{display:flex;gap:8px;align-items:stretch}.oral-answer input{flex:1;min-width:0;margin:0}
input[type=text],input[type=tel],input:not([type]){display:block;width:100%;min-height:46px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fff;font-weight:500;margin-top:4px}
.task{border-top:2px solid var(--line);margin-top:14px;padding-top:6px}
.chat{background:#e9edf2;border-radius:16px;padding:12px;display:grid;gap:8px;max-width:520px}
.bubble{max-width:85%;border-radius:16px;padding:8px 12px;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,.08)}
.bubble.me{margin-inline-start:auto;background:#d9f2d0}
.bubble .who{display:block;font-size:.72rem;font-weight:700;color:var(--muted)}
.bubble p{margin:0}
.gap-in{display:inline-block;width:auto;min-width:9em;max-width:100%;min-height:38px;margin:2px 0;border:2px dashed var(--brand);border-radius:8px;padding:4px 8px;background:#fff}
.wide-in{width:100%;min-width:0}
.span-qs{display:grid;gap:6px;margin:10px 0}
.span-q{background:#fff;color:var(--ink);border:1px solid var(--line);justify-content:flex-start;text-align:start;font-weight:500;min-height:44px}
.span-q:hover{background:var(--soft);color:var(--ink)}
.span-q[aria-pressed=true]{border:2px solid var(--brand);background:var(--soft)}
.letter-text p{line-height:2.1}
.tok{cursor:pointer;border-radius:4px;padding:1px 0;position:relative}
.tok:hover{background:#eef2f7}
.tok.marked{text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:4px;background:#fff6c9}
.tok.marked::after{content:attr(data-n);font-size:.62rem;font-weight:800;vertical-align:super;margin-inline-start:1px}
.c0{--c:#2b4f8a}.c1{--c:#b4580a}.c2{--c:#1d6b3f}.c3{--c:#8e24aa}.c4{--c:#a8321e}
.qnum.c0,.qnum.c1,.qnum.c2,.qnum.c3,.qnum.c4{background:var(--c)}.tok.marked{text-decoration-color:var(--c)}.tok.marked::after{color:var(--c)}
.fill-list th{width:42%}
.form-sheet{background:#fff;border:1px solid var(--line);border-radius:12px;padding:6px 14px 12px}
.form-sheet textarea{min-height:64px}
.email{border:1px solid var(--line);border-radius:12px;background:#fff;margin:10px 0;overflow:hidden}
.email-head{background:#f1f4f8;padding:8px 12px;font-size:.88rem;color:var(--muted)}
.email-body{padding:10px 12px}
.pre{white-space:pre-wrap}
.phone{max-width:420px;margin:14px auto;border-radius:24px;border:1px solid var(--line);background:linear-gradient(#1f2a3d,#2b3a55);color:#fff;padding:18px;text-align:center}
.phone .small{color:#c9d3e3}
.phone-top{display:flex;gap:12px;align-items:center;justify-content:center;text-align:start}
.avatar{display:inline-flex;width:52px;height:52px;border-radius:99px;background:#5c7cb3;align-items:center;justify-content:center;font-weight:800;font-size:1.3rem}
.call-state{font-weight:700;margin:12px 0}.phone.live .call-state{color:#8fe3a8}
.call-btn{background:#1d8a4a;font-size:1.1rem;padding:14px 28px;border-radius:99px}.call-btn:hover{background:#166b39}
.choice-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}
.choice{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff;font-weight:500}
.choice-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin:12px 0}
.choice-card{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fff}.choice-card.featured{border:2px solid var(--brand)}
.choice-card h3{margin-top:0}
.topics{display:grid;gap:8px}.topic{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff;font-weight:500}
.topic input{width:22px;height:22px;flex:none;margin-top:3px}
.strip{width:100%;max-width:800px;aspect-ratio:800/220;border-radius:12px;border:1px solid var(--line);background:#fff;display:block}
.moves{list-style:none;padding:0}.moves li{margin:4px 0}
.big{font-size:1.3rem;font-weight:700}
#proc{min-height:46px;border:1px solid var(--line);border-radius:10px;padding:8px;background:#fff;width:100%;max-width:520px}
@media (max-width:640px){.pic{min-height:104px}.pic .emoji{font-size:2.2rem}.pic .label{font-size:.9rem}.gap-in{min-width:7em}.oral-answer{flex-wrap:wrap}.oral-answer button{width:100%}}

/* quick level test, offer after a free result, strongest pages */
progress{width:100%;height:6px;accent-color:var(--brand);margin:6px 0 2px}
.offer{border-top:2px solid var(--line);margin-top:18px;padding-top:6px}.offer h3{margin-top:.6em}
.offer .reason{margin:10px 0}
.price-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:10px 0}.price-row button{width:100%;padding:12px 8px}
table.gap td,table.gap th{font-size:.92rem}
.useful-list{columns:2 240px;column-gap:24px;padding-inline-start:18px}.useful-list li{margin:3px 0;break-inside:avoid}
footer .useful ul{display:flex;flex-wrap:wrap;gap:4px 14px;list-style:none;padding:0;margin:4px 0 10px;font-size:.86rem}footer .useful p{margin:8px 0 0}
.print-url{display:none}
@media (max-width:640px){.price-row{grid-template-columns:1fr}}

/* Print (e.g. /test-fide-exemple-pdf as a clean A4 paper): brand line on top, the page URL at the bottom, no navigation or buttons. */
@page{size:A4;margin:16mm 14mm}
@media print{
 html{font-size:11.5pt;background:#fff}body{color:#000}
 header.site{border:0;padding:0 0 6px;border-bottom:1px solid #999}
 header.site nav,header.site .track-switch,header.site .lang-switch,.skip,.cta-row,.inline-try,.offer,.paywall,.button,button,#app,noscript,
 footer .links,footer .useful,#preview-examples,.error-banner,.useful-pages,dialog{display:none!important}
 main{padding:0;max-width:none}.hero{padding:6px 0 0}.lead{color:#000}
 footer{border-top:1px solid #999;padding:6px 0 0;color:#000}.print-url{display:block;font-size:9pt;margin:2px 0 0}
 a{color:#000;text-decoration:none}.panel,.exam,details,.tile{border-color:#999;break-inside:avoid}
 h2,h3{break-after:avoid}table,tr,dl.facts{break-inside:avoid}details>summary{list-style:none}details:not([open])>*:not(summary){display:block}
}
