/* ── Base ──────────────────────────────────────────────────────────────── */
* { box-sizing: border-box; }
body { font-family: system-ui, -apple-system, Segoe UI, sans-serif; margin: 0; background: #f5f5f5; color: #222; }

/* ── Header ────────────────────────────────────────────────────────────── */
.site-header { background: #2c3e50; color: #fff; padding: 1rem 2rem; }
.site-header h1 { margin: 0; font-size: 1.25rem; font-weight: 600; }

main { max-width: 1400px; margin: 1.5rem auto; padding: 0 1rem; }

/* ── Login ─────────────────────────────────────────────────────────────── */
.login { max-width: 360px; margin: 0 auto; background: #fff; padding: 2rem; border-radius: 6px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
.login h2 { margin-top: 0; }
.login label { display: block; margin: 1rem 0 0.25rem; font-size: 0.9rem; }
.login input { width: 100%; padding: 0.5rem; border: 1px solid #ccc; border-radius: 3px; }
.login button { margin-top: 1.5rem; width: 100%; padding: 0.75rem; background: #2c3e50; color: #fff; border: 0; border-radius: 3px; cursor: pointer; font-size: 1rem; }
.login button:hover { background: #34495e; }
.error { color: #b40000; background: #fdd; padding: 0.5rem 1rem; border-radius: 3px; margin: 0 0 1rem 0; }
.success { color: #1e6b1e; background: #dfd; padding: 0.5rem 1rem; border-radius: 3px; margin: 0 0 1rem 0; }
.warning { color: #804000; background: #fff0d0; border: 1px solid #d4a060; padding: 0.6rem 1rem; border-radius: 3px; margin: 0 0 1rem 0; line-height: 1.4; }

/* Modal de confirmation custom (alternatif à window.confirm() — stylable) */
.modal-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; z-index: 1000; }
.modal-backdrop[hidden] { display: none; }
.modal-box { background: #fff; border-radius: 6px; padding: 1.5rem 2rem; max-width: 600px; width: 90%; box-shadow: 0 4px 20px rgba(0,0,0,0.3); }
.modal-box h3 { margin-top: 0; color: #b40000; }
.modal-box ul { margin: 0.5rem 0 1rem 0; padding-left: 1.5rem; line-height: 1.5; }
.modal-box .modal-actions { display: flex; justify-content: flex-end; gap: 0.75rem; margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid #eee; }
.btn-danger { background: #b40000; color: #fff; border: 1px solid #800; }
.btn-danger:hover { background: #d00; }

/* Logs — tentatives login */
.admin-logs .succes td { background: #f4fbf4; }
.admin-logs .echec td  { background: #fdf4f4; }
.admin-logs .badge-ok { color: #1e6b1e; background: #dfd; padding: 1px 6px; border-radius: 3px; font-size: 0.8rem; font-weight: 700; }
.admin-logs .badge-ko { color: #b40000; background: #fdd; padding: 1px 6px; border-radius: 3px; font-size: 0.8rem; font-weight: 700; }
.admin-logs td.user-agent { font-size: 0.75rem; color: #666; max-width: 360px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ── Planning page layout ──────────────────────────────────────────────── */
.planning-header { display: flex; align-items: center; margin-bottom: 1rem; gap: 0.8rem; flex-wrap: wrap; }
.semaine-selector { display: flex; align-items: center; gap: 0.4rem; }
.semaine-selector label { font-weight: 600; }
.semaine-selector select { padding: 0.4rem 0.6rem; font-size: 0.95rem; border: 1px solid #ccc; border-radius: 3px; background: #fff; min-width: 220px; }
.nav-arrow { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border: 1px solid #ccc; border-radius: 3px; background: #fff; color: #2c3e50; text-decoration: none; font-size: 0.95rem; cursor: pointer; user-select: none; }
.nav-arrow:hover { background: #eee; }
.nav-arrow.disabled { color: #ccc; background: #f5f5f5; cursor: default; }

/* Badges statut + version */
.badge-statut { padding: 0.35rem 0.75rem; font-size: 0.85rem; font-weight: 700; border-radius: 3px; color: #fff; letter-spacing: 0.03em; }
.badge-statut-previsionnel { background: #0074a0; }
.badge-statut-confirme     { background: #0a7a2e; }
.badge-statut-realise      { background: #666; }
.badge-statut-archive      { background: #999; }
.badge-version { padding: 0.35rem 0.75rem; font-size: 0.85rem; background: #ecf0f1; border-radius: 3px; color: #2c3e50; border: 1px solid #ccc; font-weight: 600; }

/* Congés inline dans le header */
.conges-inline { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.conges-label { font-size: 0.85rem; color: #555; margin-right: 0.2rem; font-weight: 600; }

.logout { margin-left: auto; }
.logout-btn { padding: 0.4rem 0.8rem; font-size: 0.85rem; background: #fff; border: 1px solid #ccc; border-radius: 3px; cursor: pointer; }
.logout-btn:hover { background: #eee; }

/* ── Grille MAR ────────────────────────────────────────────────────────── */
.mar-grid { width: 100%; border-collapse: collapse; background: #fff; font-size: 0.88rem; table-layout: fixed; }
.mar-grid th, .mar-grid td { border: 1px solid #aaa; padding: 0.3rem 0.2rem; text-align: center; height: 2rem; vertical-align: middle; }
.mar-grid thead th { background: #2c3e50; color: #fff; font-weight: 600; }
.mar-grid td.cell-label { background: #ecf0f1; font-weight: 600; width: 110px; text-align: right; padding-right: 0.6rem; }
/* Bordure verticale plus marquée au début de chaque groupe de salles (S2, S4, S6, S8, CS1, OFF) */
.mar-grid th.groupe-debut, .mar-grid td.groupe-debut { border-left: 3px solid #2c3e50; }

/* Couleurs cellules — transposées de MarGridBuilder.COL_* (desktop) */
.cell-attribue    { background: #ffffff; }
.cell-vide        { background: #dcdcdc; }
.cell-alerte      { background: #ffc864; border: 2px solid #b40000; }
.cell-off         { background: #c8dcff; font-size: 0.82rem; text-align: left; padding-left: 0.4rem; }
.cell-cs          { background: #f0f8ff; }
.cell-ferme       { background: #ffaaaa; font-size: 0.78rem; color: #600; }
.cell-ferme::before { content: "FERMÉ"; }
.cell-ferie       { background: #ffd778; font-size: 0.78rem; color: #663; }
.cell-ferie::before { content: "FÉRIÉ"; }
.cell-chir-seul   { background: #eee; color: #777; font-style: italic; font-size: 0.82rem; }
/* Case CS où le MAR est remplacé — fond jaune, même palette que l'alerte correspondante */
.cell-remplacement-cs { background: #fff4b0; }
/* Identifiant chirurgien affiché sous les initiales MAR */
.cell-chir { display: block; font-size: 0.72em; opacity: 0.8; }

/* ── Éléments partagés ──────────────────────────────────────────────────── */
.muted { color: #888; font-size: 0.85rem; margin: 0.25rem 0; }
.conge-carre { display: inline-block; padding: 3px 7px; font-size: 0.8rem; font-weight: 600; border-radius: 3px; min-width: 26px; text-align: center; line-height: 1.3; }

/* ── Liste remplaçants ──────────────────────────────────────────────────── */
.remplacants-liste { margin-top: 0.75rem; font-size: 0.9rem; }
.remplacants-liste h3 { margin: 0 0 0.25rem; font-size: 0.9rem; color: #2c3e50; }
.remplacants-liste ul { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 0.2rem 1.5rem; }

/* ── Alertes CS pied de page ────────────────────────────────────────────── */
.alertes-cs { margin-top: 1.5rem; background: #fff; padding: 1rem; border-radius: 4px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); }
.alertes-cs h3 { margin: 0 0 0.5rem 0; font-size: 0.95rem; color: #2c3e50; border-bottom: 1px solid #aaa; padding-bottom: 0.3rem; }
.alertes-cs ul { list-style: none; margin: 0; padding: 0; }
.alertes-cs li { padding: 0.4rem 0.6rem; border-left: 3px solid; margin: 0.25rem 0; font-size: 0.9rem; }
.alerte-bloquant       { border-color: #b40000; background: #fff0f0; color: #700; }
.alerte-avertissement  { border-color: #a05000; background: #fff8ec; color: #703; }
.alerte-info           { border-color: #0074a0; background: #ecf4ff; color: #036; }
.alerte-remplacement-cs { background: #fff4b0; border-left-color: #b48500; color: #624400; }
.alerte-acq { opacity: 0.55; font-style: italic; }
.alerte-acq .tag { font-weight: 700; font-size: 0.75rem; letter-spacing: 0.05em; margin-right: 0.3rem; }

/* ── Global nav (iter 6) ───────────────────────────────────────────────── */
.site-header { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 1rem; }
.global-nav { display: flex; align-items: center; gap: 1rem; }
.global-nav a { color: #ecf0f1; text-decoration: none; padding: 0.3rem 0.6rem; border-radius: 3px; }
.global-nav a:hover { background: rgba(255,255,255,0.1); }
.global-nav a.active { background: rgba(255,255,255,0.18); font-weight: 600; }

/* Sous-navigation (admin / remplacements) */
.sub-nav { background: #ecf0f1; border-bottom: 1px solid #bdc3c7; padding: 0.4rem 1rem; display: flex; gap: 0.5rem; flex-wrap: wrap; }
.sub-nav a { color: #2c3e50; text-decoration: none; padding: 0.3rem 0.8rem; border-radius: 3px; font-size: 0.9em; }
.sub-nav a:hover { background: #dde4e6; }
.sub-nav a.active { background: #2c3e50; color: #fff; font-weight: 600; }
.global-nav a.active { background: #34495e; }
.global-nav .user { font-size: 0.9rem; opacity: 0.8; }
.global-nav .logout { color: #e74c3c; }

/* ── Remplacements ─────────────────────────────────────────────────────── */
.remplacements-dashboard .card,
.profil .card { background: #fff; padding: 1.25rem; border-radius: 6px; margin-bottom: 1rem; box-shadow: 0 1px 3px rgba(0,0,0,0.08); }
.remplacements-dashboard h3, .profil h3 { margin-top: 0; }
.actions { margin-top: 1rem; }
.actions .btn { display: inline-block; padding: 0.5rem 1rem; background: #3498db; color: #fff; text-decoration: none; border-radius: 3px; margin-right: 0.5rem; }
.actions .btn:hover { background: #2980b9; }
.hint { color: #777; font-size: 0.9em; font-style: italic; }

/* ── Calendrier dispos ─────────────────────────────────────────────────── */
.dispos .legend { margin-bottom: 1rem; }
.chip { display: inline-block; padding: 0.1rem 0.5rem; border-radius: 10px; margin: 0 0.2rem; font-size: 0.85em; }
.chip-dispo { background: #27ae60; color: #fff; }
.chip-indispo { background: #e74c3c; color: #fff; }
.chip-vide { background: #ecf0f1; color: #666; border: 1px solid #bbb; }

.months { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 1rem; }
.month { background: #fff; padding: 1rem; border-radius: 6px; box-shadow: 0 1px 3px rgba(0,0,0,0.08); }
.month h3 { margin: 0 0 0.5rem 0; text-transform: capitalize; }

table.calendar { width: 100%; border-collapse: collapse; table-layout: fixed; }
table.calendar th, table.calendar td { text-align: center; padding: 0.3rem; border: 1px solid #eee; font-size: 0.9em; }
table.calendar th { background: #ecf0f1; font-weight: 600; }
td.cell { cursor: pointer; transition: background 0.1s; position: relative; }
td.cell:hover:not(.out):not(.dispo):not(.indispo):not(.past):not(.mission-mine) { background: #f0f7fc; }
td.cell.out { color: #ccc; cursor: default; background: #fafafa; }
td.cell.past { background: #ececec; color: #b0b0b0; cursor: default; }
td.cell.dispo { background: #27ae60; color: #fff; }
td.cell.indispo { background: #e74c3c; color: #fff; }
td.cell.mission-mine { background: #1e8449; color: #fff; font-weight: 700; cursor: not-allowed; }
td.cell.mission-mine::after { content: "★"; position: absolute; top: 1px; right: 3px; font-size: 0.7em; }
/* Bordures épaisses pour signaler une demande — se combinent avec le fond */
td.cell.demande-ouverte { box-shadow: inset 0 0 0 3px #e67e22; }
td.cell.demande-autre   { box-shadow: inset 0 0 0 3px #3498db; }
/* Sandwich blanc + orange pour détacher la bordure sur fond rouge INDISPO. */
td.cell.indispo.demande-ouverte { box-shadow: inset 0 0 0 2px #fff, inset 0 0 0 5px #e67e22; }
/* today stylé à part : liseré + chiffre gras, sans écraser les bordures "demande" si présentes */
td.cell.today { font-weight: 700; outline: 2px solid #34495e; outline-offset: -2px; }
td.cell.projected::before { content: "⟲"; position: absolute; top: 1px; left: 3px; font-size: 0.7em; opacity: 0.7; }
/* Combinaison INDISPO + demande ouverte : badge ↻ pour inviter au re-think */
td.cell.indispo.demande-ouverte::after { content: "↻"; position: absolute; top: 1px; right: 3px;
    font-size: 0.9em; color: #fff; font-weight: 700; text-shadow: 0 0 2px #e67e22; }

/* Badge "×N" quand plusieurs demandes le même jour. */
.dm-badge { position: absolute; bottom: 1px; left: 3px; font-size: 0.65em; font-weight: 700;
    background: #34495e; color: #fff; padding: 0 3px; border-radius: 6px; line-height: 1.2; }
td.cell.mission-mine .dm-badge { background: #fff; color: #1e8449; }
td.cell.indispo .dm-badge { background: #fff; color: #e74c3c; }

/* Bandeaux d'alerte en tête de /remplacements/dispos */
.alert { padding: 0.6rem 1rem; border-radius: 4px; margin-bottom: 0.8rem; }
.alert-warn { background: #fff4e6; border-left: 4px solid #e67e22; }
.alert-info { background: #eaf5fc; border-left: 4px solid #3498db; }
.alert-rethink { background: #fdecea; border-left: 4px solid #e74c3c; }
.alert-success { background: #e8f6ec; border-left: 4px solid #27ae60; }

/* Navigation mois (calendriers dispos / batch) */
.months-nav { display: flex; gap: 0.5rem; align-items: center; justify-content: center;
    margin-bottom: 1rem; flex-wrap: wrap; background: #f7f7f7; padding: 0.5rem; border-radius: 4px; }
.months-nav span { font-size: 0.9em; color: #555; }
.months-nav .btn-sm { padding: 0.3rem 0.7rem; border: 1px solid #ccc; background: #fff; border-radius: 3px; text-decoration: none; color: #333; }
.months-nav .btn-sm:hover { background: #ecf0f1; }
.alert a { color: #2c3e50; text-decoration: underline; font-weight: 600; }
.alert small { color: #777; }

.dispos-side { margin-top: 1.5rem; background: #fff; padding: 1rem; border-radius: 6px; box-shadow: 0 1px 3px rgba(0,0,0,0.08); }

/* ── Tables génériques ─────────────────────────────────────────────────── */
.tbl { width: 100%; border-collapse: collapse; background: #fff; }
.tbl th, .tbl td { padding: 0.5rem; border-bottom: 1px solid #eee; text-align: left; }
.tbl th { background: #ecf0f1; }
.statut-ouverte td:nth-child(2) { color: #e67e22; font-weight: 600; }
.statut-attribuee td:nth-child(2) { color: #27ae60; font-weight: 600; }
.statut-realisee td:nth-child(2) { color: #7f8c8d; }
.statut-annulee td:nth-child(2) { color: #999; text-decoration: line-through; }

/* ── Espace (choix multi-rôles) ────────────────────────────────────────── */
.espace { max-width: 500px; margin: 2rem auto; background: #fff; padding: 2rem; border-radius: 6px; }
.espace-list { list-style: none; padding: 0; }
.espace-list li { margin: 0.5rem 0; }
.espace-list a { display: block; padding: 0.75rem 1rem; background: #ecf0f1; color: #2c3e50; text-decoration: none; border-radius: 3px; }
.espace-list a:hover { background: #3498db; color: #fff; }

dl { display: grid; grid-template-columns: auto 1fr; gap: 0.3rem 1rem; }
dt { font-weight: 600; }

/* ── Admin (iter 7) ────────────────────────────────────────────────────── */
.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; margin-bottom: 1rem; }
.cards .card { text-align: center; }
.cards .card h3 { font-size: 2.5rem; margin: 0; color: #2c3e50; }
.cards .card p { color: #666; margin: 0.3rem 0 0.8rem 0; }
.card-warn { background: #fff4e6; border-left: 4px solid #e67e22; }

.admin-attribution .attrib-form { display: flex; gap: 0.5rem; align-items: center; }
.admin-attribution .attrib-form select { padding: 0.4rem; border: 1px solid #ccc; border-radius: 3px; }
.btn-primary { background: #27ae60 !important; }
.btn-primary:hover { background: #229954 !important; }

.page-header { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 1rem; flex-wrap: wrap; }
.page-header h2 { margin: 0; }
.page-header .btn { white-space: nowrap; padding: 0.5rem 1rem; background: #27ae60; color: #fff; border-radius: 3px; text-decoration: none; font-weight: 600; }
.page-header .btn:hover { background: #229954; }

/* Filter tabs (worker-jobs dashboard) */
.filter-tabs { display: flex; gap: 0.3rem; flex-wrap: wrap; }
.filter-tab { padding: 0.3rem 0.8rem; border: 1px solid #ccc; border-radius: 3px; text-decoration: none; color: #333; background: #fff; font-size: 0.85em; }
.filter-tab:hover { background: #f0f0f0; }
.filter-tab.active { background: #2c3e50; color: #fff; border-color: #2c3e50; font-weight: 600; }

/* Inline forms in tables (requeue/cancel buttons) */
.tbl-jobs td.actions { white-space: nowrap; }
.tbl-jobs form.inline { display: inline; margin-right: 0.3rem; }
.btn-sm { padding: 0.2rem 0.6rem; font-size: 0.8em; border: 1px solid #aaa; background: #fff; border-radius: 3px; cursor: pointer; }
.btn-requeue { background: #27ae60; color: #fff; border-color: #27ae60; }
.btn-requeue:hover { background: #229954; }
.btn-cancel { background: #e67e22; color: #fff; border-color: #e67e22; }
.btn-cancel:hover { background: #cf6d1a; }
.payload-editor { display: inline-block; margin-left: 0.3rem; }
.payload-editor summary { cursor: pointer; font-size: 0.8em; color: #3498db; }
.payload-editor textarea { font-family: monospace; font-size: 0.8em; width: 100%; margin-top: 0.3rem; }
tr.job-failed { background: #fff0f0; }
tr.job-queued { background: #f7fff7; }
tr.job-cancelled { background: #f4f4f4; color: #888; font-style: italic; }
tr.job-running { background: #fffbe0; }
.error-msg { max-width: 300px; font-size: 0.85em; color: #c0392b; word-break: break-word; }

.invite-form label { display: block; margin-bottom: 0.7rem; }
.invite-form input { width: 100%; padding: 0.4rem; border: 1px solid #ccc; border-radius: 3px; margin-top: 0.2rem; }

.tbl tr.inactif { opacity: 0.55; font-style: italic; }

/* Formulaire fiche remplaçant — grille 2 colonnes */
.remplacant-form .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.7rem 1rem; margin-bottom: 1rem; }
.remplacant-form .form-grid label { display: flex; flex-direction: column; }
.remplacant-form .form-grid label.chk { flex-direction: row; gap: 0.4rem; align-items: center; }
.remplacant-form label input[type="text"], .remplacant-form label input[type="email"],
.remplacant-form label textarea, .remplacant-form label select {
    padding: 0.4rem; border: 1px solid #ccc; border-radius: 3px; margin-top: 0.2rem; font: inherit;
}
.remplacant-form details { margin-bottom: 1rem; }
.remplacant-form details summary { cursor: pointer; color: #3498db; padding: 0.3rem 0; }
.remplacant-form details label { display: block; margin: 0.5rem 0; }
.remplacant-form details textarea { width: 100%; }
.card-warn code { background: #fff; padding: 0.1rem 0.3rem; border-radius: 2px; border: 1px solid #f0c48a; }
a.btn-sm { text-decoration: none; color: #333; }
a.btn-sm:hover { background: #f0f0f0; }

/* /admin/demandes filter + table */
.filter-form { display: flex; gap: 0.8rem; flex-wrap: wrap; align-items: flex-end; background: #f7f7f7; padding: 0.8rem; border-radius: 4px; margin-bottom: 1rem; }
.filter-form label { display: flex; flex-direction: column; font-size: 0.85em; gap: 0.2rem; }
.filter-form select, .filter-form input[type="date"] { padding: 0.3rem; border: 1px solid #ccc; border-radius: 3px; font: inherit; }
.tbl-demandes .actions { display: flex; gap: 0.3rem; flex-wrap: wrap; align-items: center; }
.tbl-demandes .actions form.inline select { max-width: 180px; font-size: 0.85em; padding: 0.2rem; }
.btn-danger { background: #c0392b; color: #fff; border-color: #c0392b; }
.btn-danger:hover { background: #a03020; }
/* Demandes : la classe `demande-<statut>` pose le fond par défaut, mais pour les
   OUVERTE on affine via `pourvoi-bleu/rouge-clair/rouge-fonce` selon l'état des dispos. */
tr.demande-ouverte { background: #f7fff7; }
tr.demande-attribuee { background: #d6f2db; }  /* vert pâle = pourvue */
tr.demande-annulee { background: #f4f4f4; color: #888; text-decoration: line-through; }
tr.demande-realisee { background: #f9f9f9; color: #555; }
tr.pourvoi-bleu        { background: #eaf5fc; }   /* ≥1 rempla DISPO */
tr.pourvoi-rouge-clair { background: #fdecea; }   /* 0 DISPO, certains non répondus */
tr.pourvoi-rouge-fonce { background: #f5b7b1; }   /* 0 DISPO, tous INDISPO */

/* Batch calendrier */
.demandes-batch { display: block; }
.demandes-batch .months { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1rem; margin-bottom: 1rem; }
.demandes-batch td.batch-cell { cursor: pointer; transition: background 0.1s; }
.demandes-batch td.batch-cell:hover:not(.selected) { background: #f0f7fc; }
.demandes-batch td.cell.past { background: #ececec; color: #b0b0b0; cursor: default; }
.demandes-batch td.cell.deja-attribuee { background: #b8e0c3; color: #456c55; cursor: not-allowed;
    box-shadow: inset 0 0 0 2px #27ae60; }
.demandes-batch td.cell.deja-ouverte { background: #fde1c3; color: #8a5a2b; cursor: not-allowed;
    box-shadow: inset 0 0 0 2px #e67e22; }
.demandes-batch td.batch-cell.selected { background: #e67e22; color: #fff; font-weight: 700; }
/* Petit point signalant qu'un autre MAR a déjà demandé un remplaçant ce jour-là */
td.cell { position: relative; }
.autre-mar-dot { position: absolute; top: 1px; right: 3px; color: #8e44ad; font-size: 0.9em; line-height: 1; }
.batch-side { background: #fff; padding: 1rem; border-radius: 6px; box-shadow: 0 1px 3px rgba(0,0,0,0.08); max-width: 400px; }
.batch-side label { display: block; margin: 0.7rem 0; }
.batch-side input[type="text"], .batch-side textarea { width: 100%; padding: 0.4rem; border: 1px solid #ccc; border-radius: 3px; font: inherit; }
.batch-side .btn:disabled { opacity: 0.5; cursor: not-allowed; }
.list-sel { max-height: 200px; overflow-y: auto; font-family: monospace; font-size: 0.85em; padding-left: 1.2rem; }
.header-actions { display: flex; gap: 0.5rem; flex-wrap: wrap; align-items: center; }

.job-queued td { color: #3498db; }
.job-running td { background: #fff9e6; }
.job-done td { color: #27ae60; }
.job-failed td { background: #fdecea; color: #c0392b; }
.job-cancelled td { opacity: 0.5; text-decoration: line-through; }

.error-msg { max-width: 300px; font-size: 0.85em; color: #c0392b; word-break: break-word; }
