:root{--bleu:#2b2f8a;--fond:#f4f5fa;--ok:#1e7d4b;--ko:#b3261e;--gris:#666}
*{box-sizing:border-box}body{margin:0;font:15px/1.45 system-ui,Segoe UI,Roboto,sans-serif;background:var(--fond);color:#1c1c28}
header{display:flex;align-items:center;gap:16px;padding:10px 22px;background:#fff;border-bottom:1px solid #dde}
.logo{font-weight:700;color:var(--bleu);text-decoration:none;font-size:18px}.etab{color:var(--gris);flex:1}
nav a{margin-left:14px;color:var(--bleu);text-decoration:none}nav a.btn,.btn{background:var(--bleu);color:#fff;padding:7px 12px;border-radius:8px}
main{max-width:1100px;margin:22px auto;padding:0 16px}footer{text-align:center;color:var(--gris);font-size:12px;padding:20px}
.carte{background:#fff;border:1px solid #e3e5ef;border-radius:12px;padding:18px 20px;margin-bottom:16px}
.grille3{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-bottom:16px}
.ref h3{margin:0 0 4px}.ref .date{margin:0;color:var(--gris);font-size:13px}.ref .chiffres{margin:6px 0 0}.ref.ok{border-left:5px solid var(--ok)}.ref.manque{border-left:5px solid var(--ko)}
h1{font-size:22px;margin:0 0 10px}h2{font-size:17px;margin:18px 0 8px}h3{font-size:15px;margin:14px 0 6px}
table{width:100%;border-collapse:collapse;font-size:14px}td,th{padding:6px 8px;border-top:1px solid #eef;vertical-align:top;text-align:left}
.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;color:#444}
.tag{display:inline-block;background:#eceefb;color:var(--bleu);padding:2px 8px;border-radius:999px;font-size:12.5px}.tag.type{background:#eef7f0;color:#256a3c}
.ok{color:var(--ok);font-weight:600}.erreur,.en_cours{color:var(--ko);font-weight:600}.traite{color:var(--ok)}.purge,.depose{color:var(--gris)}
.choix{display:block;padding:10px 12px;border:1px solid #e3e5ef;border-radius:10px;margin-bottom:8px;cursor:pointer}.choix:has(input:checked){border-color:var(--bleu);background:#f6f7ff}
.opt{display:block;margin:8px 0}.opt input[type=text]{width:min(420px,100%);padding:6px 8px;border:1px solid #ccd;border-radius:6px}select{padding:5px 8px;border-radius:6px;border:1px solid #ccd}
button{background:var(--bleu);color:#fff;border:0;border-radius:8px;padding:9px 16px;font-size:15px;cursor:pointer}button.grand{padding:12px 24px;font-size:16px;margin-top:10px}button.discret{background:#eee;color:#444;font-size:13px}
.droite{text-align:right}.note{color:var(--gris);font-size:13px}.alerte{color:var(--ko);background:#fdf0ef;padding:8px 10px;border-radius:8px}
pre{background:#f7f7fb;padding:12px;border-radius:8px;overflow:auto;font-size:12.5px;white-space:pre-wrap}.resume{font-size:16px}
.livrables{padding-left:18px}.livrables li{margin:4px 0}.scroll{overflow:auto;max-height:220px}.apercu td,.apercu th{white-space:nowrap;font-size:12px}
.roles td{width:50%}.vide{color:var(--gris)}
body.login{display:grid;place-items:center;min-height:100vh}body.login .carte{width:min(380px,92vw)}body.login label{display:block;margin:12px 0}body.login input{width:100%;padding:9px;border:1px solid #ccd;border-radius:8px;margin-top:4px}
input[type=file]{display:block;margin:14px 0;padding:14px;border:2px dashed #b9bde3;border-radius:10px;width:100%;background:#fafbff}
