:root { --fond: #f6f7f9; --carte: #fff; --texte: #1c2430; --muted: #6b7280; --bord: #d9dee5;
  --principal: #1f5aa6; --vert: #1e8449; --vert-clair: #e6f4ec; --orange: #c5680f; --orange-clair: #fff1e3;
  --rouge: #b42318; --rouge-clair: #fdecea; --gris: #9aa3ad; }
* { box-sizing: border-box; }
body { margin: 0; font: 15px/1.45 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; color: var(--texte); background: var(--fond); }
.entete { display: flex; justify-content: space-between; align-items: center; padding: 10px 24px; background: #fff; border-bottom: 1px solid var(--bord); }
.marque { font-weight: 600; color: var(--texte); text-decoration: none; }
.entete .droite { display: flex; align-items: center; gap: 12px; }
.entete .utilisateur { font-size: 13px; color: var(--muted); }
.entete .deconnexion { margin: 0; } .entete .deconnexion button { padding: 4px 10px; font-size: 13px; }
.connexion { max-width: 420px; margin: 40px auto; }
.connexion form { display: flex; flex-direction: column; gap: 12px; padding: 18px; }
.connexion label { display: flex; flex-direction: column; gap: 4px; font-size: 14px; }
.connexion input { font: inherit; padding: 8px 10px; border: 1px solid var(--bord); border-radius: 6px; }
.connexion .petit { font-size: 12px; margin: 0; }
.etat-modele { font-size: 13px; padding: 3px 10px; border-radius: 12px; }
.etat-modele.ok { background: var(--vert-clair); color: var(--vert); }
.etat-modele.ko { background: var(--rouge-clair); color: var(--rouge); }
.contenu { max-width: 1400px; margin: 0 auto; padding: 20px 24px 60px; }
h1 { font-size: 22px; margin: 8px 0 12px; } h2 { font-size: 17px; margin: 18px 0 8px; }
.muted { color: var(--muted); } code { background: #eef1f4; padding: 1px 5px; border-radius: 4px; font-size: 13px; }
a { color: var(--principal); }
.barre-titre { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
button, .bouton { display: inline-block; padding: 8px 14px; border-radius: 6px; border: 1px solid var(--bord); background: #fff; color: var(--texte); text-decoration: none; font: inherit; cursor: pointer; }
.principal, button.principal { background: var(--principal); border-color: var(--principal); color: #fff; }
.creation.bouton { background: var(--vert); border-color: var(--vert); color: #fff; }
.secondaire { background: #fff; }
button.grand { padding: 12px 22px; font-size: 16px; }
button:disabled, .bouton.desactive { opacity: .5; cursor: not-allowed; pointer-events: none; }
.encadre { background: var(--carte); border: 1px solid var(--bord); border-radius: 8px; padding: 12px 16px; margin: 12px 0; }
.encadre.erreur { background: var(--rouge-clair); border-color: var(--rouge); }
.encadre.succes { background: var(--vert-clair); border-color: var(--vert); }
.encadre.avertissement { background: var(--orange-clair); border-color: var(--orange); }
table.postes { width: 100%; border-collapse: collapse; background: var(--carte); border: 1px solid var(--bord); border-radius: 8px; }
table.postes th, table.postes td { padding: 10px 12px; border-bottom: 1px solid var(--bord); text-align: left; vertical-align: middle; }
table.postes th { font-size: 13px; color: var(--muted); font-weight: 600; }
table.postes .num { text-align: right; }
table.postes tr.generique td.intitule { border-left: 4px solid var(--gris); }
table.postes tr.dedie td.intitule { border-left: 4px solid var(--vert); }
.pastille { display: inline-block; width: 10px; height: 10px; border-radius: 50%; vertical-align: middle; }
.pastille.verte { background: var(--vert); } .pastille.grise { background: var(--gris); }
.etiquette { display: inline-block; background: #eef1f4; border-radius: 10px; padding: 1px 8px; font-size: 13px; margin-right: 4px; }
.legende { margin-top: 10px; font-size: 13px; }
.bandeau { padding: 10px 14px; border-radius: 8px; margin: 10px 0; border-left: 6px solid; }
.bandeau.creation { background: var(--vert-clair); border-color: var(--vert); }
.bandeau.maj { background: var(--orange-clair); border-color: var(--orange); }
.lien-discret { margin-left: 10px; font-size: 13px; }
.bandeau-fort { padding: 16px 18px; border-radius: 8px; margin: 10px 0 18px; font-size: 16px; border: 2px solid; }
.bandeau-fort.creation { background: var(--vert-clair); border-color: var(--vert); }
.bandeau-fort.maj { background: var(--orange-clair); border-color: var(--orange); }
.bandeau-fort .mot { display: inline-block; font-weight: 800; letter-spacing: .5px; padding: 2px 10px; border-radius: 4px; color: #fff; margin-right: 10px; }
.bandeau-fort.creation .mot { background: var(--vert); } .bandeau-fort.maj .mot { background: var(--orange); }
details.prompt-actuel { margin: 10px 0; } details.prompt-actuel summary { cursor: pointer; color: var(--principal); }
pre { white-space: pre-wrap; word-wrap: break-word; background: var(--carte); border: 1px solid var(--bord); border-radius: 8px; padding: 12px; font-size: 13px; max-height: 60vh; overflow: auto; }
.deux-colonnes { display: grid; grid-template-columns: 3fr 2fr; gap: 20px; align-items: start; }
@media (max-width: 900px) { .deux-colonnes { grid-template-columns: 1fr; } }
.fil { background: var(--carte); border: 1px solid var(--bord); border-radius: 8px; padding: 12px; height: 55vh; overflow-y: auto; }
.message { margin: 8px 0; padding: 10px 12px; border-radius: 8px; max-width: 95%; }
.message.user { background: #e8f0fb; margin-left: auto; }
.message.assistant { background: #f1f3f5; }
.message.erreur { background: var(--rouge-clair); color: var(--rouge); }
.message .auteur { font-size: 12px; color: var(--muted); margin-bottom: 3px; }
.message .texte { white-space: pre-wrap; }
.saisie { margin-top: 10px; } .saisie textarea { width: 100%; font: inherit; padding: 10px; border: 1px solid var(--bord); border-radius: 8px; resize: vertical; }
.saisie .actions { display: flex; gap: 10px; align-items: center; margin-top: 8px; flex-wrap: wrap; }
.attente { color: var(--muted); font-style: italic; }
.colonne-proposition pre { max-height: 60vh; }
.colonne-proposition .bouton { margin-top: 10px; }
ul.controles { list-style: none; padding: 0; margin: 0 0 12px; }
ul.controles li { padding: 8px 12px 8px 36px; margin: 6px 0; border-radius: 6px; position: relative; background: var(--carte); border: 1px solid var(--bord); }
ul.controles li::before { position: absolute; left: 12px; font-weight: 700; }
ul.controles li.ok { background: var(--vert-clair); border-color: var(--vert); } ul.controles li.ok::before { content: "✓"; color: var(--vert); }
ul.controles li.ko { background: var(--rouge-clair); border-color: var(--rouge); } ul.controles li.ko::before { content: "✗"; color: var(--rouge); }
ul.controles li.avert { background: var(--orange-clair); border-color: var(--orange); } ul.controles li.avert::before { content: "!"; color: var(--orange); }
.diff-conteneur { overflow-x: auto; max-height: 65vh; overflow-y: auto; border: 1px solid var(--bord); border-radius: 8px; background: var(--carte); }
table.diff { width: 100%; border-collapse: collapse; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 12.5px; table-layout: fixed; }
table.diff th { position: sticky; top: 0; background: #eef1f4; text-align: left; padding: 8px; font-family: system-ui, sans-serif; }
table.diff td { width: 50%; padding: 1px 8px; vertical-align: top; white-space: pre-wrap; word-break: break-word; border-bottom: 1px solid #f0f2f4; }
table.diff tr.ajoute td:last-child, table.diff tr.modifie td:last-child { background: #e3f6e8; }
table.diff tr.supprime td:first-child, table.diff tr.modifie td:first-child { background: #fde8e6; }
table.diff tr.ajoute td:first-child, table.diff tr.supprime td:last-child { background: #fafafa; }
form.publier { margin-top: 18px; display: flex; gap: 12px; align-items: center; }

/* Panneau artefact */
.colonne-artefact { background: var(--carte); border: 1px solid var(--bord); border-radius: 8px; padding: 12px; }
.onglets { display: flex; gap: 4px; border-bottom: 1px solid var(--bord); margin-bottom: 10px; }
.onglet { border: none; background: none; padding: 8px 12px; border-bottom: 2px solid transparent; border-radius: 0; color: var(--muted); font-weight: 600; }
.onglet.actif { color: var(--principal); border-bottom-color: var(--principal); }
.puce-neuf { color: var(--vert); font-size: 10px; vertical-align: middle; }
.vues { display: flex; gap: 14px; flex-wrap: wrap; font-size: 13px; margin-bottom: 8px; }
.vues label { cursor: pointer; }
.artefact-texte { max-height: 62vh; margin: 0 0 10px; }
.artefact-texte ins { background: #d9f2df; text-decoration: none; }
.artefact-texte del { background: #f9d6d2; text-decoration: line-through; }
/* Bloc « Format obligatoire » en lecture seule : grisé, étiqueté, jamais modifiable. */
.artefact-texte .lecture-seule { display: block; background: #eef1f4; border-left: 3px solid var(--muted); padding: 4px 8px; margin-top: 2px; color: var(--muted); }
.artefact-texte .lecture-seule::before { content: "lecture seule"; display: block; font-size: 11px; letter-spacing: .04em; text-transform: uppercase; margin-bottom: 2px; }
.legende-verrou { font-size: 13px; margin: 0 0 10px; }
table.diff tr.verrou td { background: #eef1f4 !important; color: var(--muted); }
.candidature { border: 1px solid var(--bord); border-radius: 8px; padding: 10px 12px; margin-bottom: 10px; }
.candidature header { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 6px; }
.candidature details { margin: 4px 0; } .candidature summary { cursor: pointer; color: var(--principal); }
.candidature .artefact-texte { max-height: 40vh; margin-top: 6px; }
.etiquette.score { background: var(--principal); color: #fff; }
.ajout-document { border: 1px dashed var(--bord); border-radius: 8px; padding: 10px 12px; margin-bottom: 12px; }
.ajout-document label { font-weight: 600; display: block; margin-bottom: 6px; }
.ajout-document .ligne { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.ajout-document .muted { font-size: 13px; margin-top: 6px; }
.erreur-document { color: var(--rouge); margin: 6px 0 0; }
.candidature header .retirer-document { margin-left: auto; padding: 3px 8px; font-size: 13px; }
/* Fenêtre par-dessus la page : une candidature en grand, CV et analyse côte à côte */
.candidature header .agrandir-candidature { margin-left: auto; padding: 3px 8px; font-size: 13px; }
[hidden] { display: none !important; }
.voile { position: fixed; inset: 0; background: rgba(20, 28, 38, .55); z-index: 50; display: flex; align-items: center; justify-content: center; padding: 24px; }
.fenetre { background: var(--carte); border-radius: 10px; width: min(1500px, 100%); height: min(92vh, 100%); display: flex; flex-direction: column; box-shadow: 0 20px 60px rgba(0,0,0,.35); }
.fenetre header { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 12px 18px; border-bottom: 1px solid var(--bord); }
.fenetre header .fermer { margin-left: auto; }
.fenetre .corps { flex: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 16px; padding: 14px 18px; min-height: 0; }
.fenetre .corps > div { display: flex; flex-direction: column; min-height: 0; }
.fenetre .corps h3 { margin: 0 0 6px; font-size: 14px; color: var(--muted); }
.fenetre .corps pre { flex: 1; max-height: none; margin: 0; overflow: auto; font-size: 14px; }
@media (max-width: 900px) { .fenetre .corps { grid-template-columns: 1fr; } }
.bouton.petit { padding: 3px 8px; font-size: 13px; }
.bascule-cv { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; font-size: 13px; margin-bottom: 6px; }
.bascule-cv h3 { margin: 0; }
.bascule-cv a { margin-left: auto; }
.fenetre .corps iframe { flex: 1; width: 100%; border: 1px solid var(--bord); border-radius: 8px; background: #fff; min-height: 0; }
.cv-original iframe.cv-pdf { width: 100%; height: 70vh; border: 1px solid var(--bord); border-radius: 8px; background: #fff; margin-top: 6px; }
