/* ART CONSTRUCTION - outils 3.1 a 3.6 (Pilier 3) : complements au style « Soft SaaS » (outils-salaires.css .os-*, outils-marches.css .om-*). Prefixe .oc-*. */
.oc { --oc-bleu: #2563EB; --oc-bord: #E2E8F0; --oc-txt: #1E293B; --oc-fond: #F8FAFC; }
.oc .os-champ input[type=text], .oc .os-champ input[type=date], .oc .os-champ input[type=search], .oc .os-champ select { width: 100%; min-height: 46px; padding: 9px 12px; border: 1px solid #CBD5E1; border-radius: 12px; background: #fff; color: var(--oc-txt); font: 400 15px/1.3 inherit; font-family: inherit; }
.oc .os-champ input:focus, .oc .os-champ select:focus { outline: none; border-color: var(--oc-bleu); box-shadow: 0 0 0 3px rgba(37,99,235,.16); }
.oc .os-champ .os-saisie input { width: 150px; }
.oc-vide { padding: 20px 14px; color: #64748B; text-align: center; }
.oc-restant { margin: 8px 0 0; padding: 9px 14px; border-radius: 12px; font-size: 14px; font-weight: 700; line-height: 1.5; }
.oc-rouge { background: #FEF2F2; color: #991B1B; border: 1px solid #FECACA; } .oc-ambre { background: #FFFBEB; color: #92400E; border: 1px solid #FDE68A; }
.oc-vert { background: #ECFDF5; color: #065F46; border: 1px solid #A7F3D0; } .oc-bleu { background: #EFF6FF; color: #1E3A8A; border: 1px solid #BFDBFE; }
.oc-preuve { display: grid; gap: 4px; padding: 16px 18px; border-radius: 16px; font-size: 14.5px; line-height: 1.55; }
.oc-preuve strong { font-size: 1.02rem; }
.oc-alerte-rouge { padding: 16px 20px; border: 2px solid #DC2626; border-radius: 16px; background: #FEF2F2; color: #7F1D1D; font-weight: 600; line-height: 1.6; }
.oc-alerte-rouge p { margin: 0; }
.oc-info { padding: 12px 16px; border: 1px solid #BFDBFE; border-radius: 12px; background: #EFF6FF; color: #1E3A8A; font-size: 14px; line-height: 1.6; }
.os-etapes .oc-critique { border-color: #F59E0B; background: #FFFBEB; }
.os-etapes .oc-final { border-color: #DC2626; background: #FEF2F2; }
.oc-cas { display: grid; gap: 4px; padding: 16px 18px; border-radius: 16px; line-height: 1.55; }
.oc-cas-titre { margin: 0; font-weight: 800; font-size: 1.05rem; } .oc-cas-texte { margin: 0; font-size: 14px; }
.oc-cas-1 { background: #ECFDF5; border: 1px solid #A7F3D0; color: #064E3B; } .oc-cas-2 { background: #FFFBEB; border: 1px solid #FDE68A; color: #78350F; } .oc-cas-3 { background: #EEF2FF; border: 1px solid #C7D2FE; color: #312E81; }
.oc-somme { margin: 0; padding: 9px 14px; border-radius: 12px; font-size: 14px; font-weight: 700; }
.oc-perte { margin: 0; padding: 10px 14px; border-radius: 12px; font-weight: 800; }
.oc-table-regie { width: 100%; border-collapse: collapse; font-size: 14px; }
.oc-table-regie th, .oc-table-regie td { padding: 8px 8px; border-bottom: 1px solid var(--oc-bord); text-align: left; vertical-align: middle; }
.oc-table-regie thead th { background: var(--oc-fond); font-size: 12.5px; color: #475569; }
.oc-num, .oc-txt, .oc-sel { min-height: 40px; padding: 6px 10px; border: 1px solid #CBD5E1; border-radius: 10px; background: #fff; font: 400 14px/1.2 inherit; font-family: inherit; }
.oc-num { width: 110px; text-align: right; font-variant-numeric: tabular-nums; } .oc-txt { width: 100%; min-width: 0; } .oc-sel { max-width: 100%; }
.oc-num:focus, .oc-txt:focus, .oc-sel:focus { outline: none; border-color: var(--oc-bleu); box-shadow: 0 0 0 3px rgba(37,99,235,.16); }
.oc-ligne-libre { display: grid; grid-template-columns: minmax(0, 2fr) 100px 120px 40px; gap: 8px; margin-bottom: 8px; }
.oc-x { min-height: 40px; border: 1px solid #CBD5E1; border-radius: 10px; background: #fff; color: #64748B; font-size: 20px; cursor: pointer; } .oc-x:hover { border-color: #DC2626; color: #DC2626; }
.oc-bloc-lignes { display: grid; gap: 6px; }
.oc-impression-btn { display: flex; flex-wrap: wrap; gap: 10px; }
.oc-clauses { display: grid; gap: 8px; margin: 14px 0; padding: 0; list-style: none; }
.oc-clause { display: grid; gap: 4px; padding: 12px 14px; border: 1px solid var(--oc-bord); border-radius: 12px; background: #fff; }
.oc-clause label { display: flex; align-items: flex-start; gap: 10px; font-size: 14.5px; font-weight: 700; cursor: pointer; }
.oc-clause input { width: 20px; height: 20px; margin-top: 2px; accent-color: var(--oc-bleu); flex: none; }
.oc-clause p { margin: 0 0 0 30px; color: #475569; font-size: 13.5px; line-height: 1.55; }
.oc-clause small { margin-left: 30px; color: #64748B; font-size: 12px; }
.oc-g { display: inline-block; margin-left: 8px; padding: 2px 8px; border-radius: 6px; font-size: 11px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; vertical-align: middle; }
.oc-g-nul { background: #FEE2E2; color: #991B1B; } .oc-g-danger { background: #FFEDD5; color: #9A3412; } .oc-g-negocier { background: #E0F2FE; color: #075985; }
.oc-clause:has(input:checked) { border-color: #A7F3D0; background: #F0FDF9; }
.oc-table-cmp { width: 100%; border-collapse: collapse; font-size: 13.5px; line-height: 1.5; }
.oc-table-cmp th, .oc-table-cmp td { padding: 10px 12px; border-bottom: 1px solid var(--oc-bord); text-align: left; vertical-align: top; }
.oc-table-cmp thead th { background: var(--oc-fond); font-size: 12.5px; color: #475569; }
@media (max-width: 720px) {
  .oc-ligne-libre { grid-template-columns: minmax(0, 1fr) 90px 100px 40px; }
  .oc-num { width: 100%; }
  .oc-table-regie thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
  .oc-table-regie, .oc-table-regie tbody, .oc-table-regie tr, .oc-table-regie td, .oc-table-regie th { display: block; width: 100%; }
  .oc-table-regie tr { padding: 10px 6px; border-bottom: 8px solid var(--oc-fond); }
  .oc-table-regie td, .oc-table-regie th { border: 0; padding: 4px 0; }
  .oc-table-regie td[data-label]::before { content: attr(data-label); display: block; color: #64748B; font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
  .oc-table-cmp thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
  .oc-table-cmp, .oc-table-cmp tbody, .oc-table-cmp tr, .oc-table-cmp td, .oc-table-cmp th { display: block; width: 100%; }
  .oc-table-cmp tr { padding: 10px 12px; border-bottom: 8px solid var(--oc-fond); }
  .oc-table-cmp td, .oc-table-cmp th { border: 0; padding: 5px 0; }
  .oc-table-cmp td[data-label]::before { content: attr(data-label); display: block; color: #64748B; font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
}

/* outils 3.7 a 3.11 (etape 4B) */
.oc-conditions { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 8px 0 14px; }
.oc-conditions label { display: inline-flex; align-items: center; gap: 8px; font-size: 14.5px; font-weight: 600; cursor: pointer; }
.oc-conditions input { width: 20px; height: 20px; accent-color: var(--oc-bleu); flex: none; }
.oc-alertes { display: grid; gap: 8px; margin: 12px 0; padding: 0; list-style: none; }
.oc-alerte-li { padding: 10px 14px; border-radius: 12px; font-size: 14px; line-height: 1.55; }
.oc-alerte-li small { opacity: .75; }
.oc-vert-txt { color: #065F46; font-weight: 700; } .oc-rouge-txt { color: #991B1B; font-weight: 700; }
.oc-total th, .oc-total td { border-top: 2px solid var(--oc-bord); font-weight: 800; }
.oc-liste-simple { margin: 6px 0 0; padding-left: 20px; font-size: 14px; line-height: 1.6; }
.oc-clause .oc-txt { margin: 4px 0 0 30px; width: calc(100% - 30px); }
.oc .os-champ small { display: block; margin-top: 4px; }
.oc-info > strong:first-child { display: block; margin-bottom: 2px; }
.oc-sous-total th, .oc-sous-total td { font-weight: 700; background: #F1F5F9; }
.oc-grise th, .oc-grise td { opacity: .45; }
.oc-range { width: 100%; margin: 6px 0 10px; accent-color: var(--oc-bleu); }
.oc-details { margin: 10px 0 4px; border: 1px solid var(--oc-bord); border-radius: 12px; padding: 10px 14px; background: var(--oc-fond); }
.oc-details > summary { cursor: pointer; font-weight: 700; font-size: 14px; }
.oc-sous { display: block; margin-top: 2px; font-weight: 400; font-size: 12px; color: #64748B; }
.oc-preuve span { display: block; }
.oc-table-cmp th[scope=row] { font-weight: 700; }

/* impression (modele d'avenant 3.3, rapport de regie 3.4, dossier de diligence 3.7) : seule la zone #oc-impression est imprimee */
#oc-impression { display: none; }
@media print {
  body.oc-impression-active > *:not(#oc-impression) { display: none !important; }
  body.oc-impression-active #oc-impression { display: block !important; color: #000; font: 10.5pt/1.45 Arial, sans-serif; background: #fff; }
  #oc-impression h1 { margin: 0 0 6pt; font-size: 15pt; } #oc-impression h2 { margin: 10pt 0 3pt; font-size: 11.5pt; }
  #oc-impression table { width: 100%; border-collapse: collapse; margin: 4pt 0 8pt; }
  #oc-impression th, #oc-impression td { padding: 3.5pt 5pt; border: .5pt solid #777; text-align: left; vertical-align: top; }
  #oc-impression thead th, #oc-impression tr:first-child th { background: #E2E8F0; font-size: 9pt; }
  #oc-impression .n { text-align: right; white-space: nowrap; }
  #oc-impression .oc-p-cadre td:first-child { width: 36%; font-weight: 700; background: #F1F5F9; }
  #oc-impression .oc-p-tot { width: 55%; margin-left: auto; }
  #oc-impression .oc-p-note { color: #444; font-size: 8.5pt; }
  #oc-impression .oc-p-mention { margin: 10pt 0; padding: 6pt 8pt; border: .5pt solid #555; font-size: 9pt; }
  #oc-impression .oc-p-sign { display: flex; gap: 16pt; margin-top: 14pt; }
  #oc-impression .oc-p-sign > div { flex: 1; min-height: 80pt; padding: 6pt 8pt; border: .5pt solid #555; font-size: 9.5pt; }
  #oc-impression .vide { display: inline-block; min-width: 120pt; border-bottom: .5pt solid #777; height: 10pt; }
  #oc-impression tr { page-break-inside: avoid; }
  @page { size: A4 portrait; margin: 14mm; }
}
