:root{--vert:#c6efce;--orange:#ffeb9c;--rouge:#ffc7ce;--gris:#d9d9d9;--vert-texte:#006100;--orange-texte:#7a5b00;--rouge-texte:#9c0006;--gris-texte:#3a3a3a;--bleu:#1f4e79;--bleu-clair:#dce6f1;--texte:#1c1c1c;--discret:#5a5a5a;--bordure:#c8c8c8;--fond:#fff;color:var(--texte);background:var(--fond);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5}*,:before,:after{box-sizing:border-box}body{margin:0}.app{max-width:1100px;margin:0 auto;padding:16px}h1{color:var(--bleu);margin:.2em 0}h2{margin-top:1.2em}.discret{color:var(--discret);font-size:.92em}.etapes{counter-reset:etape;color:var(--discret);flex-wrap:wrap;gap:4px 16px;margin:8px 0 0;padding:0;font-size:.92em;list-style:none;display:flex}.etapes li{counter-increment:etape}.etapes li:before{content:counter(etape) ". "}.etapes li[aria-current=step]{color:var(--bleu);font-weight:700}.depot{border:2px dashed var(--bordure);text-align:center;cursor:pointer;border-radius:8px;flex-direction:column;gap:8px;padding:32px 16px;display:flex}.depot-survol{border-color:var(--bleu);background:var(--bleu-clair)}.depot input{align-self:center;max-width:100%}.grille-mapping{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;display:grid}.champ{flex-direction:column;gap:4px;display:flex}select{max-width:100%;font:inherit;padding:6px}.defilement{overflow-x:auto}.apercu{border-collapse:collapse;width:100%;font-size:.92em}.apercu th,.apercu td{border:1px solid var(--bordure);text-align:left;vertical-align:top;padding:4px 8px}.apercu th{background:var(--bleu-clair)}.actions{flex-wrap:wrap;gap:8px;margin:16px 0;display:flex}button{font:inherit;border:1px solid var(--bleu);background:var(--fond);color:var(--bleu);cursor:pointer;border-radius:6px;padding:8px 16px}button.principal{background:var(--bleu);color:#fff}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,select:focus-visible,input:focus-visible{outline-offset:2px;outline:3px solid #4a90d9}.message-erreur,.message-avertissement{border-radius:6px;padding:8px 12px}.message-erreur{background:var(--rouge);color:var(--rouge-texte)}.message-avertissement{background:var(--orange);color:var(--orange-texte)}progress{width:100%;height:20px}.compteurs{flex-wrap:wrap;gap:8px 16px;padding:0;list-style:none;display:flex}.badge{border-radius:10px;padding:1px 8px;font-size:.88em;font-weight:600;display:inline-block}.badge-vert{background:var(--vert);color:var(--vert-texte)}.badge-orange{background:var(--orange);color:var(--orange-texte)}.badge-rouge{background:var(--rouge);color:var(--rouge-texte)}.badge-gris{background:var(--gris);color:var(--gris-texte)}.liste-revue{padding:0;list-style:none}.ligne-revue{border:1px solid var(--bordure);border-radius:8px;margin-bottom:12px;padding:12px}.entete-ligne{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.origine{grid-template-columns:max-content 1fr;gap:2px 12px;margin:8px 0;display:grid}.origine dt{color:var(--discret)}.origine dd{overflow-wrap:anywhere;margin:0}.candidats{gap:8px;padding:0;list-style:none;display:grid}.candidat{border-left:4px solid var(--bleu-clair);overflow-wrap:anywhere;padding:4px 12px}.candidat-retenu{border-left-color:var(--vert-texte)}.candidat .badge{margin-left:8px}.candidat button{margin-top:4px}
