:root{--bleu-fonce: #1f4e79;--bleu: #2e75b6;--bleu-clair: #e8f0f8;--gris-fond: #f4f6f9;--gris-bord: #d8dee6;--texte: #1d2733;--texte-2: #5a6678;--vert: #2e8b57;--orange: #d97706;--rouge: #c0392b;--violet: #6d4fa1}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--gris-fond);color:var(--texte);font-size:15px}.header{background:var(--bleu-fonce);color:#fff;display:flex;align-items:center;gap:16px;padding:0 20px;height:56px;position:sticky;top:0;z-index:50}.header h1{font-size:17px;margin:0;font-weight:600;letter-spacing:.3px}.header .sous-titre{font-size:12px;opacity:.75}.header .spacer{flex:1}.header .user-info{text-align:right;font-size:13px;line-height:1.3}.header .user-info .role{opacity:.75;font-size:11px}.btn-icone{background:none;border:none;color:#fff;cursor:pointer;font-size:20px;position:relative;padding:6px}.badge-notif{position:absolute;top:0;right:0;background:var(--rouge);color:#fff;border-radius:10px;font-size:10px;min-width:16px;height:16px;line-height:16px;text-align:center;font-weight:700}.container{max-width:1180px;margin:0 auto;padding:24px 20px 60px}.page-titre{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;gap:12px;flex-wrap:wrap}.page-titre h2{margin:0;color:var(--bleu-fonce);font-size:21px}.btn{display:inline-flex;align-items:center;gap:6px;background:var(--bleu);color:#fff;border:none;border-radius:6px;padding:9px 16px;font-size:14px;font-weight:600;cursor:pointer}.btn:hover{filter:brightness(1.08)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-secondaire{background:#fff;color:var(--bleu-fonce);border:1px solid var(--gris-bord)}.btn-vert{background:var(--vert)}.btn-rouge{background:var(--rouge)}.btn-petit{padding:5px 10px;font-size:13px}.carte{background:#fff;border:1px solid var(--gris-bord);border-radius:8px;padding:18px;margin-bottom:16px;overflow-x:auto}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--texte-2);padding:8px 10px;border-bottom:2px solid var(--gris-bord)}td{padding:10px;border-bottom:1px solid #edf0f4;vertical-align:middle}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--bleu-clair)}.badge{display:inline-block;padding:3px 10px;border-radius:12px;font-size:12px;font-weight:600;white-space:nowrap}.badge-brouillon{background:#fef3cd;color:#7a5c00}.badge-approuvee{background:#d7e9fb;color:var(--bleu-fonce)}.badge-terminee{background:#d9f2e4;color:#1c6b43}.badge-attente{background:#eef1f5;color:var(--texte-2)}.badge-matiere{background:#e7e1f5;color:var(--violet)}.badge-fabrication{background:#fde8cd;color:#9a5b00}.badge-controle{background:#fce4e4;color:var(--rouge)}.badge-conforme{background:#d9f2e4;color:#1c6b43}.badge-nonconforme{background:#f8d2cd;color:#8c2318}.avancement{display:flex;align-items:center;gap:8px;min-width:130px}.avancement .piste{flex:1;height:8px;background:#e7ebf0;border-radius:4px;overflow:hidden}.avancement .valeur{height:100%;background:var(--vert);border-radius:4px}.avancement .pct{font-size:12px;font-weight:700;color:var(--texte-2);width:42px}.form-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.champ label{display:block;font-size:12px;font-weight:600;color:var(--texte-2);margin-bottom:4px}.champ input,.champ select,.champ textarea{width:100%;padding:8px 10px;border:1px solid var(--gris-bord);border-radius:6px;font-size:14px;font-family:inherit;background:#fff}.champ input:focus,.champ select:focus{outline:2px solid var(--bleu);border-color:transparent}.modale-fond{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1e3273;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:100;overflow-y:auto}.modale{background:#fff;border-radius:10px;width:100%;max-width:720px;padding:22px;box-shadow:0 12px 40px #00000040}.modale h3{margin:0 0 16px;color:var(--bleu-fonce)}.alerte{padding:10px 14px;border-radius:6px;margin-bottom:14px;font-size:14px}.alerte-erreur{background:#fcebe9;color:var(--rouge);border:1px solid #f3c3bd}.alerte-succes{background:#e3f5ea;color:#1c6b43;border:1px solid #bfe5cd}.alerte-info{background:var(--bleu-clair);color:var(--bleu-fonce);border:1px solid #c4d9ee}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--bleu-fonce) 0%,var(--bleu) 100%)}.login-carte{background:#fff;border-radius:12px;padding:36px;width:100%;max-width:380px;box-shadow:0 16px 50px #0000004d}.login-carte h1{color:var(--bleu-fonce);font-size:20px;margin:0 0 4px;text-align:center}.login-carte .sous{text-align:center;color:var(--texte-2);font-size:13px;margin-bottom:24px}.panneau-notifs{position:absolute;right:16px;top:56px;width:380px;max-height:480px;overflow-y:auto;background:#fff;border:1px solid var(--gris-bord);border-radius:0 0 10px 10px;box-shadow:0 12px 30px #0003;z-index:60}.notif{padding:12px 14px;border-bottom:1px solid #eef1f5}.notif.non-lue{background:var(--bleu-clair)}.notif .titre{font-weight:700;font-size:13px;color:var(--bleu-fonce)}.notif .msg{font-size:13px;margin:3px 0}.notif .date{font-size:11px;color:var(--texte-2)}.phases-ligne{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.phase-puce{border:1px solid var(--gris-bord);border-radius:8px;padding:8px 12px;background:#fafbfd;font-size:12.5px;min-width:150px}.phase-puce .nom{font-weight:700;color:var(--bleu-fonce)}.phase-puce .atelier{color:var(--texte-2);font-size:11.5px}.phase-puce .dates{color:var(--texte-2);font-size:11px;margin-top:4px;white-space:pre-line}.grille-etiquettes{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}.etiquette{border:1.5px solid var(--texte);border-radius:6px;padding:12px;text-align:center;background:#fff;page-break-inside:avoid}.etiquette img{width:150px;height:150px}.etiquette .code{font-weight:800;font-size:15px;margin-top:4px}.etiquette .desig{font-size:12px}.etiquette .fiche-num{font-size:11px;color:var(--texte-2)}@media print{.header,.page-titre .actions,.btn,.no-print{display:none!important}body{background:#fff}.container{max-width:none;padding:0}}
