:root{
  --vert:#1E3A2F; --orange:#D65A1E; --creme:#F4F1EA;
  --gris:#6E7671; --ligne:#DCD7CC; --blanc:#FBFAF7;
  --rouge:#B3341C; --max:960px; --pad:clamp(1.25rem,5vw,2.5rem);
}
*{box-sizing:border-box}
body{
  margin:0; background:var(--creme); color:var(--vert);
  font-family:'Archivo',system-ui,-apple-system,'Segoe UI',sans-serif;
  font-size:1rem; line-height:1.6;
}
a{color:var(--vert)}
a:hover{color:var(--orange)}
.wrap{max-width:var(--max); margin:0 auto; padding:0 var(--pad)}
.narrow{max-width:480px; margin:0 auto}

header.site{background:rgba(244,241,234,.94);border-bottom:1px solid var(--ligne);position:sticky;top:0;z-index:10}
.bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:64px}
.brand{display:block;line-height:0}
.logo{width:130px;height:auto}
.logo .lg{font-weight:700;fill:var(--vert)}
.logo .bl{font-weight:600;fill:var(--vert)}
header nav{display:flex;align-items:center;gap:1rem;font-size:.95rem}

main{max-width:var(--max);margin:0 auto;padding:2rem var(--pad) 4rem}
h1{font-size:1.9rem;margin:0 0 .3rem}
h2{font-size:1.25rem;margin:2.2rem 0 1rem;padding-top:.5rem;border-top:1px solid var(--ligne)}
h2:first-of-type{border-top:0;margin-top:0}
h3{font-size:1.05rem;margin:0 0 .6rem}
.lead{color:var(--gris);margin:0 0 1.5rem}
.small{font-size:.85rem;color:var(--gris)}
.hero.small{margin-bottom:0}

.card{background:var(--blanc);border:1px solid var(--ligne);border-radius:8px;padding:1.3rem 1.5rem;margin-bottom:1rem}
.grid-2{display:grid;gap:2rem;grid-template-columns:1fr}
@media(min-width:760px){.grid-2{grid-template-columns:1fr 1fr}}

.flash{padding:.9rem 1.1rem;border-radius:6px;margin-bottom:1.2rem;font-size:.95rem}
.flash.ok{background:#E4EEE6;border:1px solid var(--vert)}
.flash.err{background:#F7E3DD;border:1px solid var(--rouge);color:var(--rouge)}

.form{max-width:520px}
.form label{display:block;margin-bottom:1rem;font-weight:600;font-size:.92rem}
.form input[type=text],.form input[type=email],.form input[type=password],.form input[type=date],.form textarea{
  display:block;width:100%;margin-top:.35rem;padding:.65rem .8rem;font:inherit;font-weight:400;
  border:1px solid var(--ligne);border-radius:4px;background:var(--creme);color:var(--vert)}
.form input[type=file]{margin-top:.35rem}
.form .check{font-weight:400;display:inline-flex;align-items:center;gap:.4rem;margin-right:1rem}
.form button{background:var(--orange);color:#fff;border:0;border-radius:4px;font:inherit;font-weight:600;
  padding:.75rem 1.4rem;cursor:pointer;margin-top:.3rem}
.form button:hover{background:var(--vert)}
.form button.danger,button.danger{background:var(--rouge)}
code{background:var(--blanc);border:1px solid var(--ligne);border-radius:3px;padding:.1rem .4rem;font-size:.9em}
.cta{display:inline-block;background:var(--orange);color:#fff;text-decoration:none;font-weight:600;
  padding:.85rem 1.5rem;border-radius:4px;margin-top:.5rem}
.cta:hover{background:var(--vert);color:#fff}

/* Onglets par discipline */
.tab-nav{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1.3rem;border-bottom:1px solid var(--ligne)}
.tab-btn{font:inherit;font-weight:600;font-size:.92rem;background:none;border:0;border-bottom:3px solid transparent;
  padding:.7rem .3rem;margin-right:1.2rem;color:var(--gris);cursor:pointer}
.tab-btn:hover{color:var(--vert)}
.tab-btn.active{color:var(--vert);border-bottom-color:var(--orange)}
.js-tabs .tab-panel{display:none}
.js-tabs .tab-panel.active{display:block}
.tab-panel{margin-bottom:2rem}

/* Progression */
.progress-list{list-style:none;padding:0;margin:0}
.progress-list li{display:flex;align-items:center;gap:.7rem;padding:.5rem 0;border-bottom:1px solid var(--ligne)}
.progress-list li:last-child{border-bottom:0}
.dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto;background:var(--ligne)}
.status-en_cours .dot{background:var(--orange)}
.status-acquis .dot{background:var(--vert)}
.ex-name{flex:1}
.ex-status{font-size:.85rem;color:var(--gris)}
.status-acquis .ex-status{color:var(--vert);font-weight:600}
.status-en_cours .ex-status{color:var(--orange);font-weight:600}

.inline-form{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.5rem 0;border-bottom:1px solid var(--ligne)}
.inline-form:last-child{border-bottom:0}
.inline-form select{font:inherit;padding:.3rem .5rem;border:1px solid var(--ligne);border-radius:4px;background:var(--creme)}

/* Documents */
.doc-list{list-style:none;padding:0}
.doc-list li{display:flex;justify-content:space-between;padding:.6rem 0;border-bottom:1px solid var(--ligne)}

/* Messagerie */
.thread{display:flex;flex-direction:column;gap:.7rem;margin-bottom:1.3rem}
.msg{max-width:70%;padding:.7rem 1rem;border-radius:10px;background:var(--blanc);border:1px solid var(--ligne)}
.msg-admin{align-self:flex-start}
.msg-client{align-self:flex-end;background:var(--vert);color:var(--creme);border-color:var(--vert)}
.msg-client .msg-meta{color:#C9D6CD}
.msg-body{white-space:pre-wrap}
.msg-meta{margin-top:.3rem}

/* Liste clients (admin) */
.client-list{list-style:none;padding:0}
.client-list li{border-bottom:1px solid var(--ligne)}
.client-list a{display:flex;justify-content:space-between;align-items:center;padding:.8rem 0;text-decoration:none}
.badge{background:var(--orange);color:#fff;border-radius:99px;padding:.1rem .55rem;font-size:.78rem;font-weight:700}

footer.site{background:var(--vert);color:var(--creme);padding:1.5rem 0;margin-top:2rem}
footer.site a{color:var(--creme)}
