/* ============================================================
   SEI — CHARTE BUREAU D'ÉTUDES — DAMOTIC
   Papier technique, encre, trait fin. Aucune fioriture.
   ============================================================ */
:root{
  --papier:#f1eee8;        /* fond feuille */
  --feuille:#ffffff;       /* panneaux */
  --encre:#18242f;         /* texte principal */
  --encre-2:#41505e;       /* texte secondaire */
  --gris:#6d7a86;          /* libellés */
  --trait:#cdc6b8;         /* filets */
  --trait-fin:#e2ddd3;
  --bleu:#1d3f63;          /* encre de plan */
  --bleu-clair:#e8eef5;
  --rouge:#a8452c;         /* annotation / alerte */
  --rouge-clair:#f7ece8;
  --vert:#2f6b46;
  --vert-clair:#e9f2ec;
  --ocre:#8a6d29;
  --ambre:#8a6320;
  --ambre-clair:#f8f0e0;
  --nav:#16232f;           /* bandeau latéral */
  --nav-2:#1e2e3c;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:var(--papier);
  background-image:
    linear-gradient(rgba(29,63,99,.045) 1px,transparent 1px),
    linear-gradient(90deg,rgba(29,63,99,.045) 1px,transparent 1px);
  background-size:24px 24px;
  color:var(--encre);font-family:var(--sans);font-size:13.5px;line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--bleu);text-decoration:none}
a:hover{text-decoration:underline}
svg.ic{display:inline-block;vertical-align:-2px;flex:0 0 auto}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-thumb{background:#c3bcae;border:3px solid var(--papier)}
::-webkit-scrollbar-track{background:transparent}

/* ---------- CONNEXION ---------- */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:28px}
.login-card{
  width:100%;max-width:430px;background:var(--feuille);border:1px solid var(--trait);
  padding:0;position:relative;
}
.login-inner{padding:30px 28px 24px;position:relative;margin:7px 7px 0;border:1px solid var(--trait-fin)}
.marque{display:flex;align-items:center;gap:11px;padding-bottom:16px;border-bottom:2px solid var(--encre);margin-bottom:22px}
.marque .sigle{
  width:44px;height:44px;border:1.5px solid var(--encre);display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-weight:700;font-size:15px;letter-spacing:.06em;color:var(--encre);
}
.marque .txt .n{font-size:16px;font-weight:700;letter-spacing:.24em;line-height:1.2}
.marque .txt .s{font-size:9px;letter-spacing:.2em;color:var(--gris);text-transform:uppercase;margin-top:3px}

/* ---------- STRUCTURE ---------- */
.shell{display:flex;min-height:100vh}
aside{
  width:236px;flex:0 0 236px;background:var(--nav);color:#dfe6ec;
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;
}
aside .head{padding:18px 16px 14px;border-bottom:1px solid rgba(255,255,255,.16)}
aside .head .sigle{
  width:36px;height:36px;border:1.4px solid rgba(255,255,255,.75);display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-weight:700;font-size:13px;letter-spacing:.06em;margin-bottom:10px;
}
aside .head .n{font-size:14px;font-weight:700;letter-spacing:.26em}
aside .head .s{font-size:8.5px;letter-spacing:.16em;color:#94a4b2;text-transform:uppercase;margin-top:4px;line-height:1.5}
nav{padding:8px 0 14px;flex:1}
nav .grp{
  font-size:8.5px;letter-spacing:.22em;color:#7f8fa0;text-transform:uppercase;
  padding:16px 16px 7px;margin-top:4px;border-top:1px solid rgba(255,255,255,.10);
}
nav .grp:first-child{border-top:0;margin-top:0}
nav a{
  display:flex;align-items:center;gap:10px;padding:7px 16px;color:#cfd8e1;
  font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;border-left:3px solid transparent;
}
nav a:hover{background:rgba(255,255,255,.06);color:#fff;text-decoration:none}
nav a.on{background:rgba(255,255,255,.09);color:#fff;border-left-color:#c9a227}
nav a svg{opacity:.85}
aside .foot{
  padding:12px 16px;border-top:1px solid rgba(255,255,255,.16);
  font-family:var(--mono);font-size:9px;letter-spacing:.06em;color:#8b9aa8;line-height:1.85;text-transform:uppercase;
}

main{flex:1;min-width:0;display:flex;flex-direction:column}
header.top{
  display:flex;align-items:center;gap:12px;padding:0 20px;height:52px;
  background:var(--feuille);border-bottom:1px solid var(--trait);position:sticky;top:0;z-index:20;
}
header.top h1{font-size:14px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;flex:1}
.content{padding:20px;flex:1}

/* ---------- ÉTIQUETTES ---------- */
.pill{
  display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border:1px solid var(--trait);
  background:#fbfaf7;font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--encre-2);white-space:nowrap;
}
.pill.ok{color:var(--vert);border-color:#b8d2c2;background:var(--vert-clair)}
.pill.warn{color:var(--ambre);border-color:#e0cfa8;background:var(--ambre-clair)}
.pill.err,.pill.acc{color:var(--rouge);border-color:#e0bdb2;background:var(--rouge-clair)}

/* ---------- FEUILLES ---------- */
.card{background:var(--feuille);border:1px solid var(--trait);padding:0;margin-bottom:16px}
.card h2{
  display:flex;align-items:center;gap:8px;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--encre);font-weight:700;padding:11px 16px;border-bottom:1px solid var(--trait);background:#faf8f4;
}
.card h2 svg{color:var(--bleu)}
.card > *:not(h2){margin-left:16px;margin-right:16px}
.card > *:not(h2):first-child{margin-top:16px}
.card::after{content:"";display:block;height:16px}

.grid{display:grid;gap:14px;align-items:start}
.g2c{grid-template-columns:repeat(auto-fit,minmax(310px,1fr))}
.g3c{grid-template-columns:repeat(auto-fit,minmax(215px,1fr))}
.g4c{grid-template-columns:repeat(auto-fit,minmax(168px,1fr))}

/* ---------- INDICATEURS ---------- */
.kpi{background:var(--feuille);border:1px solid var(--trait);padding:13px 14px;position:relative}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--bleu)}
.kpi .v{font-family:var(--mono);font-size:24px;font-weight:600;color:var(--encre);letter-spacing:-.02em;line-height:1.1}
.kpi .l{font-size:8.5px;letter-spacing:.16em;color:var(--gris);text-transform:uppercase;margin-top:6px;line-height:1.5}

/* ---------- FORMULAIRES ---------- */
label{display:block;font-size:8.5px;letter-spacing:.15em;color:var(--gris);text-transform:uppercase;margin:0 0 5px;font-weight:600}
input,select,textarea{
  width:100%;padding:8px 10px;border:1px solid var(--trait);background:#fdfcfa;color:var(--encre);
  font-size:13px;font-family:inherit;outline:none;border-radius:0;
}
input:focus,select:focus,textarea:focus{border-color:var(--bleu);background:#fff;box-shadow:inset 0 0 0 1px var(--bleu)}
input[type=checkbox]{width:15px;height:15px;accent-color:var(--bleu)}
textarea{min-height:110px;resize:vertical;line-height:1.65;font-family:var(--mono);font-size:12px}
.field{margin-bottom:12px}
.row{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(195px,1fr))}

.btn{
  display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border:1px solid var(--encre);
  background:var(--feuille);color:var(--encre);font-size:10.5px;font-weight:700;letter-spacing:.11em;
  text-transform:uppercase;cursor:pointer;font-family:inherit;transition:background .12s,color .12s;
}
.btn:hover{background:var(--encre);color:#fff;text-decoration:none}
.btn:hover svg{color:#fff}
.btn.pri{background:var(--bleu);border-color:var(--bleu);color:#fff}
.btn.pri:hover{background:#15304c;border-color:#15304c}
.btn.sm{padding:4px 9px;font-size:9.5px;gap:5px}
.btn.dang{border-color:var(--rouge);color:var(--rouge)}
.btn.dang:hover{background:var(--rouge);color:#fff}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}

/* ---------- NOMENCLATURES ---------- */
table{width:100%;border-collapse:collapse;font-size:12.5px}
th{
  text-align:left;font-size:8.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--encre);font-weight:700;
  padding:8px 9px;background:#f0ece4;border-bottom:1.5px solid var(--encre);border-right:1px solid var(--trait-fin);
  white-space:nowrap;position:sticky;top:0;z-index:2;
}
th:last-child{border-right:0}
td{padding:7px 9px;border-bottom:1px solid var(--trait-fin);border-right:1px solid var(--trait-fin);vertical-align:top}
td:last-child{border-right:0}
tbody tr:hover td,tr:hover td{background:#faf8f3}
td.num,th.num{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl-wrap{border:1px solid var(--trait);max-height:60vh;overflow:auto;background:var(--feuille)}
.scroll-inf{max-height:60vh;overflow:auto}

/* ---------- MESSAGES ---------- */
.flash{padding:9px 13px;margin-bottom:12px;font-size:12px;border:1px solid;border-left-width:4px}
.flash.ok{background:var(--vert-clair);border-color:#b8d2c2;border-left-color:var(--vert);color:#1e4a30}
.flash.err{background:var(--rouge-clair);border-color:#e0bdb2;border-left-color:var(--rouge);color:#7c2e1c}
.flash.warn{background:var(--ambre-clair);border-color:#e0cfa8;border-left-color:var(--ambre);color:#6a4c14}
.note{font-size:11.5px;color:var(--encre-2);line-height:1.65}
.mention{
  background:#fbf7ef;border:1px solid var(--trait);border-left:4px solid var(--ambre);
  padding:11px 13px;font-size:11.5px;color:#5c4a22;line-height:1.7;
}

.badge{
  display:inline-block;padding:1.5px 6px;font-family:var(--mono);font-size:9px;letter-spacing:.06em;
  text-transform:uppercase;border:1px solid var(--trait);background:#f7f5f0;color:var(--encre-2);
}
.badge.ok{color:var(--vert);border-color:#b8d2c2;background:var(--vert-clair)}
.badge.warn{color:var(--ambre);border-color:#e0cfa8;background:var(--ambre-clair)}
.badge.err{color:var(--rouge);border-color:#e0bdb2;background:var(--rouge-clair)}
.badge.acc{color:var(--bleu);border-color:#b9c9dc;background:var(--bleu-clair)}

.bar{height:5px;background:#e6e1d7;border:1px solid var(--trait-fin);overflow:hidden}
.bar i{display:block;height:100%;background:var(--bleu)}

/* ---------- DÉPÔT DE FICHIERS ---------- */
.drop{
  border:1.5px dashed var(--trait);background:#fbfaf7;padding:30px 18px;text-align:center;cursor:pointer;
  transition:border-color .12s,background .12s;
}
.drop:hover,.drop.over{border-color:var(--bleu);background:var(--bleu-clair)}
.drop svg{color:var(--bleu);margin-bottom:8px}
.drop .t{font-size:12px;font-weight:700;letter-spacing:.11em;text-transform:uppercase}
.drop .s{font-family:var(--mono);font-size:10px;color:var(--gris);margin-top:7px;letter-spacing:.02em;line-height:1.7}
.filelist{margin-top:12px;display:flex;flex-direction:column;gap:1px;max-height:260px;overflow:auto;border:1px solid var(--trait-fin)}
.filerow{display:flex;align-items:center;gap:9px;padding:6px 10px;background:var(--feuille);font-size:12px;border-bottom:1px solid var(--trait-fin)}
.filerow .n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--mono);font-size:11px}

/* ---------- PHOTOTHÈQUE ---------- */
.gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:12px}
.ph{position:relative;aspect-ratio:4/3;overflow:hidden;border:1px solid var(--trait);background:#e8e4db}
.ph img{width:100%;height:100%;object-fit:cover;animation:kb 24s ease-in-out infinite alternate;transform-origin:center}
.ph:nth-child(3n) img{animation-delay:-8s;animation-duration:28s}
.ph:nth-child(3n+1) img{animation-delay:-15s;animation-duration:32s}
@keyframes kb{0%{transform:scale(1) translate(0,0)}50%{transform:scale(1.12) translate(-2%,2%)}100%{transform:scale(1.06) translate(2%,-2%)}}
.ph .cap{
  position:absolute;left:0;right:0;bottom:0;padding:7px 9px;font-size:9.5px;letter-spacing:.05em;
  background:rgba(24,36,47,.88);color:#eef2f5;text-transform:uppercase;font-family:var(--mono);line-height:1.5;
}
@media (prefers-reduced-motion:reduce){.ph img{animation:none}}

/* ---------- CARTOUCHE DE PIED ---------- */
.verfoot{
  display:flex;flex-wrap:wrap;background:var(--feuille);border-top:1px solid var(--trait);
  font-family:var(--mono);font-size:9px;letter-spacing:.05em;color:var(--encre-2);text-transform:uppercase;
}
.verfoot .c{padding:8px 14px;border-right:1px solid var(--trait-fin);display:flex;flex-direction:column;gap:2px;min-width:132px;flex:1 1 auto}
.verfoot .c:last-child{border-right:0}
.verfoot .k{font-size:7.5px;letter-spacing:.16em;color:var(--gris)}
.verfoot .v{font-size:10px;color:var(--encre);font-weight:600}

/* ---------- ONGLETS ---------- */
.tabs{display:flex;gap:0;flex-wrap:wrap;margin-bottom:14px;border-bottom:1px solid var(--trait)}
.tabs a{
  padding:7px 13px;border:1px solid transparent;border-bottom:0;margin-bottom:-1px;
  font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--gris);font-family:var(--mono);
}
.tabs a.on{color:var(--encre);border-color:var(--trait);background:var(--feuille)}
.tabs a:hover{text-decoration:none;color:var(--encre)}

/* ---------- DIVERS ---------- */
.mono{font-family:var(--mono)}
h3.sect{font-size:9.5px;letter-spacing:.16em;color:var(--gris);text-transform:uppercase;margin:16px 0 8px;
  display:flex;align-items:center;gap:7px;font-weight:700}
.chk{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;border:1px solid var(--trait-fin);
  background:#fbfaf7;cursor:pointer;text-transform:none;letter-spacing:0;font-size:12px;color:var(--encre)}
.chk:hover{border-color:var(--bleu);background:var(--bleu-clair)}
.chk input{width:15px;height:15px;margin-top:1px;flex:0 0 15px}
.chk .cod{font-family:var(--mono);font-weight:700;font-size:11px;letter-spacing:.05em}
.chk .lib{font-size:10.5px;color:var(--encre-2);display:block;margin-top:2px;line-height:1.45}

@media(max-width:900px){
  .shell{flex-direction:column}
  aside{width:100%;flex:none;height:auto;position:static}
  nav{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:0}
  nav .grp{grid-column:1/-1}
  .content{padding:14px}
  header.top{height:auto;padding:10px 14px;flex-wrap:wrap}
}

/* ---------- PARCOURS DE PRODUCTION ---------- */
.etape{display:flex;gap:10px;align-items:flex-start}
.etape .no{
  font-family:var(--mono);font-size:11px;font-weight:700;color:#fff;background:var(--bleu);
  width:22px;height:22px;display:flex;align-items:center;justify-content:center;flex:0 0 22px;
}
.etape .tt{display:flex;align-items:center;gap:7px;font-size:11.5px;font-weight:700;letter-spacing:.11em;text-transform:uppercase}
.etape .tt svg{color:var(--bleu)}
.etape .note{margin-top:4px}
