:root{
  --bg:#fbf8f1;--card:#ffffff;--ink:#1f2a27;--muted:#5b6b66;--line:#e5dfd1;
  --g:#0b6b57;--g2:#0f8a70;--gl:#e3f2ed;--acc:#f2a33a;--accl:#fff3df;--red:#b3402a;--redl:#fde9e4;--blue:#1d6fa5;--bluel:#e5f1f9;
  --r:16px;--sh:0 1px 3px rgba(31,42,39,.08),0 4px 14px rgba(31,42,39,.05);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme=light]){--bg:#121816;--card:#1b2420;--ink:#eef3f0;--muted:#a3b3ad;--line:#2e3b36;--g:#3fc3a0;--g2:#58d4b3;--gl:#17332b;--acc:#f2b25a;--accl:#3a2d14;--red:#ff9a82;--redl:#3b1d17;--blue:#7cc0ea;--bluel:#142b3a}
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:18px/1.55 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;padding-bottom:84px}
a{color:var(--g)}
h1{font-size:1.6rem;line-height:1.2;margin:.4rem 0 .6rem}
h2{font-size:1.25rem;margin:1.4rem 0 .6rem}
h3{font-size:1.05rem;margin:.2rem 0 .5rem}
h4{margin:.9rem 0 .3rem}
p{margin:.35rem 0 .7rem}
.wrap{max-width:760px;margin:0 auto;padding:12px 16px 24px}
.top{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:10px 16px;background:var(--g);color:#fff}
.top .brand{display:flex;gap:8px;align-items:center;color:#fff;text-decoration:none;font-weight:700}
.top img{border-radius:6px}
#lock{font-size:.8rem;background:rgba(255,255,255,.18);padding:2px 10px;border-radius:99px}
#lock:empty{display:none}
nav.tabs{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
nav.tabs a{flex:1;text-align:center;text-decoration:none;color:var(--muted);font-size:.72rem;padding:8px 2px;min-height:56px}
nav.tabs a i{display:block;font-style:normal;font-size:1.35rem;line-height:1.2}
nav.tabs a.on{color:var(--g);font-weight:700;background:var(--gl)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin:12px 0;box-shadow:var(--sh)}
.hero{background:linear-gradient(140deg,var(--g),var(--g2));color:#fff;border-radius:22px;padding:20px 18px;margin:6px 0 12px}
.hero h1{color:#fff;font-size:1.75rem}
.hero .eyebrow{color:#cdeee4}
.hero .hi{font-weight:700;font-size:1.1rem}
.hero .small{color:#e3f6ef}
.eyebrow{font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0}
.lead{color:var(--muted)}
.small{font-size:.86rem;color:var(--muted)}
.prog{height:12px;background:rgba(0,0,0,.12);border-radius:99px;overflow:hidden;margin:10px 0}
.prog i{display:block;height:100%;background:var(--acc);border-radius:99px;transition:width .3s}
.card .prog{background:var(--line)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:48px;padding:10px 18px;border-radius:14px;border:0;background:var(--g);color:#fff;font:inherit;font-weight:700;text-decoration:none;cursor:pointer}
.btn.big{width:100%;background:var(--acc);color:#2b1c00;margin-top:6px;font-size:1.05rem}
.btn.ghost{background:transparent;color:var(--g);border:2px solid var(--g)}
.btn.danger{color:var(--red);border-color:var(--red)}
.btn:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible,.choice:focus-visible{outline:3px solid var(--acc);outline-offset:2px}
.row{display:flex;gap:8px}.row.wrap{flex-wrap:wrap}.row input{flex:1}
input[type=text],input[type=number],input[type=password],input:not([type]),textarea,select{width:100%;font:inherit;padding:10px 12px;border-radius:12px;border:1.5px solid var(--line);background:var(--bg);color:var(--ink);min-height:46px}
label{display:block;font-weight:600;font-size:.95rem;margin:.5rem 0}
label.chk{display:flex;gap:10px;align-items:flex-start;font-weight:500;margin:.4rem 0;min-height:36px}
input[type=checkbox],input[type=radio]{width:24px;height:24px;flex:none;accent-color:var(--g);margin:2px 0 0}
.namebox{background:rgba(255,255,255,.14);padding:10px;border-radius:14px;margin:8px 0}
.namebox label{color:#fff}
.honest{background:var(--accl);border-color:var(--acc)}
.verif{display:inline-block;font-size:.7rem;font-weight:700;background:var(--acc);color:#2b1c00;border-radius:6px;padding:1px 6px;vertical-align:middle;white-space:nowrap}
.ph{margin-top:1.6rem}
.mods{display:grid;gap:10px}
.mcard{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;text-decoration:none;color:var(--ink);box-shadow:var(--sh);min-height:64px}
.mcard.done{border-color:var(--g);background:var(--gl)}
.mcard .mi{font-size:1.8rem}
.mcard .mt{font-weight:700;line-height:1.25}
.mcard small{display:block;color:var(--muted);font-weight:500}
.mcard .mb{font-size:.78rem;color:var(--g);font-weight:700;text-align:right}
.back{display:inline-block;margin:6px 0;text-decoration:none;font-weight:600}
.mhead{text-align:left;margin-bottom:8px}
.big-i{font-size:2.4rem}
.res{background:var(--gl);padding:10px 14px;border-radius:12px;font-weight:600}
details.sec{padding:0}
details.sec>summary{cursor:pointer;font-weight:700;padding:14px 16px;list-style:none;display:flex;justify-content:space-between;min-height:52px;align-items:center}
details.sec>summary::after{content:"＋";color:var(--g);font-size:1.3rem}
details.sec[open]>summary::after{content:"－"}
details.sec>summary::-webkit-details-marker{display:none}
details.sec .body{padding:0 16px 14px}
.idea{border-left:4px solid var(--g);padding:2px 12px;margin:10px 0;background:var(--gl);border-radius:0 12px 12px 0}
.idea p{margin:.2rem 0 .5rem}
ol.steps{padding-left:0;list-style:none;counter-reset:s}
ol.steps li{counter-increment:s;position:relative;padding:6px 0 6px 38px;border-bottom:1px dashed var(--line)}
ol.steps li::before{content:counter(s);position:absolute;left:0;top:8px;width:28px;height:28px;border-radius:50%;background:var(--g);color:#fff;display:grid;place-items:center;font-weight:700;font-size:.9rem}
ol.steps label.chk{margin:0}
.shot{margin:6px 0 4px;padding:8px 10px;border:2px dashed var(--line);border-radius:10px;font-size:.84rem;color:var(--muted);background:var(--bg)}
.boxes{display:grid;gap:10px;margin:12px 0}
.box{border-radius:14px;padding:10px 14px}.box p{margin:.2rem 0}
.box.tip{background:var(--bluel);border-left:5px solid var(--blue)}
.box.warn{background:var(--redl);border-left:5px solid var(--red)}
.ex{border:1px solid var(--line);border-radius:14px;padding:12px;margin:12px 0;border-left:6px solid var(--g)}
.ex.lv2{border-left-color:#3b9ac5}.ex.lv3{border-left-color:var(--acc)}.ex.lv4{border-left-color:#d4683d}.ex.lv5{border-left-color:#8a4fb0}
.exh{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
.lvb{font-weight:700;font-size:.78rem;background:var(--gl);color:var(--g);border-radius:99px;padding:2px 10px}
.ex h4{margin:.4rem 0}
.trainer{margin-top:10px;background:var(--accl);border:1px dashed var(--acc);border-radius:12px;padding:8px 12px}
.trainer p{margin:.2rem 0}
.trainer-sec{border:2px solid var(--acc)}
.tbl{width:100%;border-collapse:collapse;font-size:.92rem}
.tbl th,.tbl td{border:1px solid var(--line);padding:8px;text-align:left;vertical-align:top}
.tbl th{background:var(--gl)}
.tbl td.url{word-break:break-all}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.scroll .tbl{min-width:560px}
.jal{display:inline-block;background:var(--accl);border-radius:8px;padding:1px 8px;font-size:.82rem}
.pager{display:flex;justify-content:space-between;gap:10px;margin:18px 0}
.foot{background:var(--bg);border-style:dashed}
.foot h3{color:var(--muted)}
.quizcard{text-align:center;background:var(--gl)}
.qq .qt{font-size:1.2rem;font-weight:700}
.choices{display:grid;gap:10px;margin-top:12px}
.choice{min-height:56px;text-align:left;padding:12px 16px;border-radius:14px;border:2px solid var(--line);background:var(--card);color:var(--ink);font:inherit;cursor:pointer}
.choice:hover,.choice:active{border-color:var(--g);background:var(--gl)}
.result{text-align:center}.score{font-size:3rem;font-weight:800;color:var(--g)}
.rl{padding-left:20px}.rl li{margin:8px 0}.rl .ok{color:var(--g)}.rl .ko{color:var(--red)}
.rl li>div{color:var(--ink)}
.chips{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0 8px}
.chip{flex:0 0 auto;padding:6px 14px;border-radius:99px;border:1.5px solid var(--line);background:var(--card);text-decoration:none;color:var(--ink);font-size:.9rem}
.chip.on{background:var(--g);color:#fff;border-color:var(--g)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:420px){.grid2{grid-template-columns:1fr}}
.out{background:var(--gl);border-radius:12px;padding:8px 14px;margin-top:10px}
.out p{margin:.3rem 0}.out .big{font-size:1.15rem}
.big{font-size:1.15rem}
pre.tpl{white-space:pre-wrap;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:12px;font:inherit;font-size:.92rem}
.chklist{list-style:none;padding:0}
.lex{display:grid;gap:8px}
.lw{display:flex;gap:12px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 12px}
.lw>span{font-size:1.8rem}.lw p{margin:0;font-size:.92rem;color:var(--muted)}
.suivi input{min-width:70px;padding:6px 8px;min-height:40px}
.suivi td.cv,.suivi td.pm{white-space:nowrap}
.rate{margin:10px 0}.stars{display:flex;gap:8px}
.stars label{margin:0}.stars input{position:absolute;opacity:0}
.stars span{display:grid;place-items:center;width:46px;height:46px;border-radius:12px;border:2px solid var(--line);font-weight:700;cursor:pointer}
.stars input:checked+span{background:var(--g);color:#fff;border-color:var(--g)}
.stars input:focus-visible+span{outline:3px solid var(--acc)}
.att{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin:8px 0}
.att .a{border:1.5px solid var(--line);background:var(--card);border-radius:10px;padding:6px 0;font:inherit;font-size:.78rem;color:var(--ink);cursor:pointer;min-height:44px}
.att .a b{display:block;font-size:1rem}
.att .a1{background:#ffe9c4}.att .a2{background:#d6efe6}.att .a3{background:var(--g);color:#fff}
.cert{border:10px double var(--g);padding:10px;background:#fff;color:#1f2a27;text-align:center;margin:12px 0}
.cert-in{border:2px solid var(--acc);padding:28px 16px}
.cert h1{font-size:2rem;color:#0b6b57}.cert .cname{font-size:1.8rem;font-weight:700;border-bottom:2px solid #1f2a27;display:inline-block;padding:0 24px;margin:8px 0}
.cert .eyebrow{color:#5b6b66}
.sign{display:flex;justify-content:space-around;margin-top:30px;gap:12px}
#toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%) translateY(20px);background:#1f2a27;color:#fff;padding:10px 18px;border-radius:99px;opacity:0;pointer-events:none;transition:.25s;z-index:50;font-size:.95rem}
#toast.show{opacity:1;transform:translateX(-50%)}
@media print{
  .top,nav.tabs,.noprint,#toast{display:none!important}
  body{background:#fff;padding:0}.wrap{max-width:none;padding:0}
  .cert{break-inside:avoid}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
@media (min-width:700px){.mods{grid-template-columns:1fr 1fr}.boxes{grid-template-columns:1fr 1fr}body{font-size:19px}}
/* --- Comptes et rôles --- */
.top{gap:8px;flex-wrap:wrap}
#who{display:flex;align-items:center;gap:6px;font-size:.8rem;flex-wrap:wrap;justify-content:flex-end}
#who:empty{display:none}
.whoname{font-weight:700;max-width:9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.linkbtn{background:rgba(255,255,255,.2);color:#fff;border:0;border-radius:99px;padding:4px 12px;font:inherit;font-size:.8rem;cursor:pointer;min-height:32px}
.role{display:inline-block;font-size:.72rem;font-weight:700;border-radius:99px;padding:1px 9px;background:var(--gl);color:var(--g)}
.top .role{background:rgba(255,255,255,.9);color:#0b6b57}
.role.r-admin{background:#fde9e4;color:#8f2f1c}.role.r-formatrice{background:var(--accl);color:#7a4a00}
.role.r-off{background:#e5e5e5;color:#555}.role.r-tmp{background:var(--accl);color:#7a4a00}
.login{max-width:420px;margin:28px auto}
.login-ico{font-size:3rem;text-align:center}
.login h1,.login .lead{text-align:center}
.ucard{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;margin:10px 0}
.ucard.off{opacity:.65}.uhead{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.uacts{margin-top:8px}.btn.small{min-height:40px;padding:6px 12px;font-size:.88rem}
.mono{font-family:ui-monospace,Menlo,Consolas,monospace;letter-spacing:.04em}
.rbac td.c{text-align:center;font-weight:700;color:var(--g)}
.pill{display:inline-block;min-width:26px;text-align:center;border-radius:8px;border:1px solid var(--line);padding:0 6px;font-size:.85rem}
.pill.ok{background:var(--g);color:#fff;border-color:var(--g)}
nav.tabs[hidden]{display:none}
.admincard{border:2px solid var(--g);background:var(--gl)}.admincard .btn{min-height:44px}
/* --- Langues et sens de lecture --- */
.top{justify-content:flex-start}.top .spacer{flex:1}
.langsw{display:flex;gap:4px}
.lg{background:rgba(255,255,255,.18);color:#fff;border:0;border-radius:99px;padding:3px 11px;font:inherit;font-size:.8rem;font-weight:700;min-height:32px;cursor:pointer}
.lg.on{background:#fff;color:#0b6b57}
html[data-lang=ar] body{font-family:"Noto Naskh Arabic","Geeza Pro","Segoe UI","Tahoma",system-ui,sans-serif;line-height:1.75}
html[dir=rtl] body{text-align:start}
html[dir=rtl] .idea{border-left:0;border-right:4px solid var(--g);border-radius:12px 0 0 12px}
html[dir=rtl] .box.tip{border-left:0;border-right:5px solid var(--blue)}
html[dir=rtl] .box.warn{border-left:0;border-right:5px solid var(--red)}
html[dir=rtl] .ex{border-left:1px solid var(--line);border-right:6px solid var(--g)}
html[dir=rtl] .ex.lv2{border-right-color:#3b9ac5}html[dir=rtl] .ex.lv3{border-right-color:var(--acc)}html[dir=rtl] .ex.lv4{border-right-color:#d4683d}html[dir=rtl] .ex.lv5{border-right-color:#8a4fb0}
html[dir=rtl] ol.steps li{padding-left:0;padding-right:38px}
html[dir=rtl] ol.steps li::before{left:auto;right:0}
html[dir=rtl] .tbl th,html[dir=rtl] .tbl td{text-align:right}
html[dir=rtl] .mcard .mb{text-align:left}
html[dir=rtl] input[dir=ltr],html[dir=rtl] .url{text-align:left}
html[dir=rtl] details.sec>summary::after{margin-inline-start:8px}

/* --- Version avec serveur --- */
.sync{font-size:.95rem;color:#fff;min-width:1.4em;text-align:center}
.sync[data-st=pending]{opacity:.85}.sync[data-st=offline]{background:#f2a33a;color:#2b1c00;border-radius:99px;padding:0 8px}
