* { box-sizing: border-box; }
html { min-height: 100%; background: var(--color-ink-50); }
body { margin: 0; min-height: 100vh; font-family: var(--font-sans); color: var(--color-ink-950); background: var(--color-ink-50); }
a { color: var(--color-primary-700); text-decoration: none; }
a:hover { text-decoration: underline; }
input, textarea, select, button { font: inherit; }
input, textarea, select { width: 100%; border: 1px solid var(--color-ink-200); border-radius: var(--radius-sm); background: var(--color-white); padding: .72rem .85rem; color: var(--color-ink-950); transition: border-color var(--transition), box-shadow var(--transition); }
textarea { resize: vertical; }
input:focus, textarea:focus, select:focus { outline: 0; border-color: var(--color-primary-500); box-shadow: 0 0 0 4px var(--color-primary-100); }
button { cursor: pointer; }
input[type='checkbox'] {
	width: 10px !important;
}
.skip-link { position: fixed; top: -100px; left: 16px; z-index: 1000; padding: .8rem 1rem; background: var(--color-primary-700); color: #fff; border-radius: var(--radius-sm); }
.skip-link:focus { top: 16px; }

.app-shell { display: grid; grid-template-columns: var(--sidebar-width) minmax(0, 1fr); min-height: 100vh; }
.sidebar { position: sticky; top: 0; height: 100vh; padding: var(--space-6); background: linear-gradient(180deg, var(--color-primary-900), var(--color-primary-700)); color: #fff; display: flex; flex-direction: column; gap: var(--space-8); }
.brand { display: flex; gap: .85rem; align-items: center; }
.brand strong { display: block; letter-spacing: .05em; font-size: 1.05rem; }
.brand span { display: block; color: rgba(255,255,255,.74); font-size: .85rem; }
.brand-mark { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 13px; background: #fff; color: var(--color-primary-800); font-weight: 900; box-shadow: var(--shadow-md);padding: 10px; }
.brand-large .brand-mark { width: 56px; height: 56px; font-size: 1.35rem; }
.side-nav { display: grid; gap: .35rem; }
.nav-link { color: rgba(255,255,255,.9); padding: .85rem 1rem; border-radius: var(--radius-md); }
.nav-link:hover { background: rgba(255,255,255,.12); text-decoration: none; color: #fff; }
.sidebar-footer { margin-top: auto; padding-top: var(--space-6); border-top: 1px solid rgba(255,255,255,.18); display: grid; gap: .25rem; }
.user-pill { font-weight: 700; }

.app-main { min-width: 0; }
.topbar { min-height: var(--topbar-height); display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); padding: var(--space-5) var(--space-8); background: rgba(255,255,255,.86); backdrop-filter: blur(18px); border-bottom: 1px solid var(--color-ink-100); position: sticky; top: 0; z-index: 20; }
.topbar h1 { margin: 0; font-size: clamp(1.15rem, 2vw, 1.65rem); }
.topbar-actions, .page-actions, .form-actions { display: flex; gap: .75rem; align-items: center; flex-wrap: wrap; }
.content { padding: var(--space-8); display: grid; gap: var(--space-6); }
.eyebrow { margin: 0 0 .2rem; color: var(--color-primary-700); font-weight: 800; font-size: .74rem; text-transform: uppercase; letter-spacing: .12em; }
.muted { color: var(--color-ink-600); }
.microcopy { color: var(--color-ink-500, var(--color-ink-600)); font-size: .82rem; }

.page-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--space-4); }
.page-heading h2 { margin: 0; font-size: clamp(1.35rem, 2.4vw, 2.15rem); }
.card, .filters-card { background: var(--color-white); border: 1px solid var(--color-ink-100); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: var(--space-6); }
.card-header { display: flex; justify-content: space-between; align-items: center; gap: var(--space-4); margin-bottom: var(--space-4); }
.card-header h3 { margin: 0; }

.button { display: inline-flex; align-items: center; justify-content: center; gap: .45rem; min-height: 42px; padding: .68rem 1rem; border-radius: 999px; border: 1px solid transparent; font-weight: 800; transition: transform var(--transition), box-shadow var(--transition), background var(--transition); }
.button:hover { text-decoration: none; transform: translateY(-1px); }
.button-primary { background: var(--color-primary-700); color: #fff; box-shadow: 0 10px 22px rgba(8,116,82,.22); }
.button-primary:hover { background: var(--color-primary-800); color: #fff; }
.button-secondary { background: var(--color-primary-50); color: var(--color-primary-800); border-color: var(--color-primary-100); }
.button-ghost { background: transparent; color: var(--color-ink-800); border-color: var(--color-ink-200); }
.button-small { min-height: 34px; padding: .45rem .75rem; font-size: .88rem; }
.button-full { width: 100%; }
.icon-button { border: 0; border-radius: 12px; background: var(--color-primary-50); padding: .6rem .8rem; }
.mobile-only { display: none; }

.alert { padding: .9rem 1rem; border-radius: var(--radius-md); border: 1px solid transparent; font-weight: 700; }
.alert-success { background: var(--color-success-soft); color: var(--color-success); }
.alert-danger { background: var(--color-danger-soft); color: var(--color-danger); }
.alert-warning { background: var(--color-warning-soft); color: var(--color-warning); }

.kpi-grid, .summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-4); }
.kpi-card, .summary-card { padding: var(--space-5); border-radius: var(--radius-lg); background: var(--color-white); border: 1px solid var(--color-ink-100); box-shadow: var(--shadow-sm); display: grid; gap: .35rem; }
.kpi-card strong, .summary-card strong { font-size: clamp(1.35rem, 2.8vw, 2.2rem); line-height: 1; }
.kpi-label, .summary-card span { color: var(--color-ink-600); font-weight: 800; font-size: .85rem; text-transform: uppercase; letter-spacing: .06em; }
.kpi-card.danger { border-color: var(--color-danger-soft); background: linear-gradient(135deg, var(--color-white), var(--color-danger-soft)); }
.kpi-card.warning { border-color: var(--color-warning-soft); background: linear-gradient(135deg, var(--color-white), var(--color-warning-soft)); }

.grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-5); }
.grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-5); }
.span-2 { grid-column: span 2; }
.stack-sm { display: grid; gap: var(--space-3); }

.filters-card { display: grid; grid-template-columns: 1.4fr 1fr 1fr auto; gap: var(--space-4); align-items: end; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-5); }
.form-section { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); border: 1px solid var(--color-ink-100); border-radius: var(--radius-md); padding: var(--space-5); min-width: 0; }
.form-section legend { padding: 0 .45rem; font-weight: 900; color: var(--color-primary-800); }
.field { display: grid; gap: .42rem; min-width: 0; }
.field span, .check-field span { font-weight: 800; color: var(--color-ink-800); font-size: .9rem; }
.field.inline { display: grid; }
.check-field { display: flex; gap: .6rem; align-items: center; }
.check-field input { width: auto; }
.checkbox-grid, .quantity-grid, .document-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: var(--space-3); }

.table-responsive { overflow-x: auto; }
.data-table { width: 100%; border-collapse: collapse; }
.data-table th, .data-table td { padding: .9rem .75rem; text-align: left; border-bottom: 1px solid var(--color-ink-100); vertical-align: top; }
.data-table th { color: var(--color-ink-600); font-size: .78rem; text-transform: uppercase; letter-spacing: .08em; }
.data-table tr:hover td { background: var(--color-ink-50); }

.status-chip, .badge { display: inline-flex; align-items: center; gap: .35rem; border-radius: 999px; padding: .35rem .65rem; font-size: .78rem; font-weight: 900; white-space: nowrap; }
.status-chip { background: var(--color-ink-100); color: var(--color-ink-800); }
.status-brouillon { background: var(--color-ink-100); }
.status-notifie_services, .status-attente_adv_transport { background: var(--color-info-soft); color: var(--color-info); }
.status-a_controler, .status-documents_prets { background: var(--color-warning-soft); color: var(--color-warning); }
.status-depose_plateforme, .status-clos { background: var(--color-success-soft); color: var(--color-success); }
.status-reprise_a_planifier { background: var(--color-danger-soft); color: var(--color-danger); }
.badge-success { background: var(--color-success-soft); color: var(--color-success); }
.badge-warning { background: var(--color-warning-soft); color: var(--color-warning); }
.badge-info { background: var(--color-info-soft); color: var(--color-info); }

.tabs { display: grid; gap: var(--space-4); }
.tab-list { display: flex; gap: .5rem; flex-wrap: wrap; border-bottom: 1px solid var(--color-ink-100); }
.tab-button { border: 0; background: transparent; padding: .85rem 1rem; font-weight: 900; color: var(--color-ink-600); border-bottom: 3px solid transparent; }
.tab-button.is-active { color: var(--color-primary-800); border-color: var(--color-primary-700); }
.tab-panel { display: none; }
.tab-panel.is-active { display: block; }

.process-steps { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: var(--space-3); list-style: none; padding: 0; margin: 0; counter-reset: step; }
.process-steps li { position: relative; padding: var(--space-4); border-radius: var(--radius-md); background: var(--color-ink-50); border: 1px solid var(--color-ink-100); display: grid; gap: .25rem; }
.process-steps li::before { counter-increment: step; content: counter(step); width: 26px; height: 26px; display: grid; place-items: center; border-radius: 50%; background: var(--color-ink-200); color: var(--color-ink-800); font-weight: 900; }
.process-steps li.done { background: var(--color-success-soft); border-color: transparent; }
.process-steps li.done::before { content: '✓'; background: var(--color-success); color: #fff; }
.process-steps li.current { background: var(--color-warning-soft); border-color: transparent; }

.timeline { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-4); }
.timeline li { position: relative; display: grid; grid-template-columns: 24px minmax(0,1fr); gap: .8rem; }
.timeline-dot { width: 13px; height: 13px; margin-top: .45rem; border-radius: 50%; background: var(--color-primary-700); box-shadow: 0 0 0 5px var(--color-primary-100); }
.timeline-card { border: 1px solid var(--color-ink-100); border-radius: var(--radius-md); padding: var(--space-4); background: #fff; }
.timeline-head { display: flex; justify-content: space-between; gap: var(--space-4); }
.json-diff { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); }
pre { overflow: auto; background: var(--color-ink-50); padding: var(--space-3); border-radius: var(--radius-sm); font-family: var(--font-mono); font-size: .78rem; }

.document-grid { margin: var(--space-4) 0; }
.document-tile { display: grid; gap: .35rem; padding: var(--space-4); border-radius: var(--radius-md); border: 1px solid var(--color-ink-100); background: var(--color-ink-50); }
.document-tile:hover { background: var(--color-primary-50); text-decoration: none; border-color: var(--color-primary-100); }
.file-list { display: grid; gap: .6rem; padding: 0; list-style: none; }
.file-list li { display: flex; justify-content: space-between; gap: var(--space-4); padding: .8rem 0; border-top: 1px solid var(--color-ink-100); }

.document-preview { max-width: 920px; margin: 0 auto; background: #fff; padding: 3rem; border-radius: var(--radius-md); box-shadow: var(--shadow-md); border: 1px solid var(--color-ink-100); }
.document-actions { max-width: 920px; margin: 0 auto; padding-top: var(--space-4); }
.letter { font-family: Georgia, "Times New Roman", serif; line-height: 1.55; color: #111; }
.letter-header {display: flex; justify-content: space-around; gap: 10rem;  margin-bottom: 4rem; }

.letter h1 { font-size: 1.05rem; text-transform: uppercase; letter-spacing: .08em; }
.letter-meta { display: grid; gap: .2rem; margin: 1.5rem 0; }
.signature { margin-top: 3rem; }

.login-page { min-height: 100vh; display: grid; grid-template-columns: 100%; }
.login-hero { padding: clamp(2rem, 7vw, 6rem); background: radial-gradient(circle at 20% 20%, rgba(255,255,255,.22), transparent 28%), linear-gradient(145deg, var(--color-primary-900), var(--color-primary-600)); color: #fff; display: flex; flex-direction: column; justify-content: center; gap: var(--space-6); }
.login-hero h1 { font-size: clamp(2rem, 5vw, 4.6rem); line-height: .98; margin: 0; max-width: 860px; }
.login-hero p { font-size: 1.12rem; max-width: 680px; color: rgba(255,255,255,.82); }
.hero-card { display: flex; gap: .75rem; flex-wrap: wrap; }
.login-panel { display: grid; place-items: center; padding: var(--space-8); }
.form-card { width: min(100%, 440px); display: grid; gap: var(--space-4); }
.form-card h2 { margin: 0; }

.empty-state { text-align: center; padding: var(--space-12); background: #fff; border-radius: var(--radius-lg); }

@media (max-width: 1100px) {
  .kpi-grid, .summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .grid-3 { grid-template-columns: 1fr; }
  .span-2 { grid-column: span 1; }
  .process-steps { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .filters-card { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 820px) {
  .app-shell { grid-template-columns: 1fr; }
  .sidebar { position: fixed; inset: 0 auto 0 0; width: min(86vw, var(--sidebar-width)); transform: translateX(-105%); transition: transform var(--transition); z-index: 80; }
  .app-shell.menu-open .sidebar { transform: translateX(0); }
  .mobile-only { display: inline-flex; }
  .topbar { padding: var(--space-4); align-items: flex-start; }
  .topbar-actions { display: none; }
  .content { padding: var(--space-4); }
  .page-heading { align-items: flex-start; flex-direction: column; }
  .grid-2, .form-grid, .form-section, .filters-card { grid-template-columns: 1fr; }
  .kpi-grid, .summary-grid { grid-template-columns: 1fr; }
  .span-2 { grid-column: span 1; }
  .process-steps { grid-template-columns: 1fr; }
  .json-diff { grid-template-columns: 1fr; }
  .login-page { grid-template-columns: 1fr; }
  .login-hero { min-height: 42vh; }
}

@media (max-width: 620px) {
  .stacked-mobile thead { display: none; }
  .stacked-mobile tr { display: grid; gap: .25rem; padding: .85rem 0; border-bottom: 1px solid var(--color-ink-100); }
  .stacked-mobile td { display: flex; justify-content: space-between; gap: var(--space-4); border-bottom: 0; padding: .35rem 0; }
  .stacked-mobile td::before { content: attr(data-label); font-weight: 900; color: var(--color-ink-600); }
  .file-list li { flex-direction: column; }
}

.mt-md { margin-top: var(--space-5); }
.data-table.compact th, .data-table.compact td { padding: .55rem .65rem; font-size: .9rem; }
.recipient-group { padding: var(--space-4) 0; border-top: 1px solid var(--color-ink-100); }
.recipient-group:first-child { border-top: 0; padding-top: 0; }
.recipient-group h4 { margin: 0 0 var(--space-2); }
.decision-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); }
.decision-grid p { margin: 0; padding: var(--space-3); background: var(--color-ink-50); border: 1px solid var(--color-ink-100); border-radius: var(--radius-sm); }
.letter-page { font-family: var(--font-sans); color: var(--color-ink-900); }
.letter-page h1 { font-size: 1.35rem; margin-top: 0; }

@media (max-width: 820px) {
  .decision-grid { grid-template-columns: 1fr; }
}
.alert-error { background: var(--color-danger-soft); color: var(--color-danger); }

.status-notification-pending { background: var(--color-info-soft); color: var(--color-info); }
.status-notification-sent { background: var(--color-success-soft); color: var(--color-success); }
.status-notification-logged { background: var(--color-warning-soft); color: var(--color-warning); }
.status-notification-failed, .status-notification-blocked_missing_recipient { background: var(--color-danger-soft); color: var(--color-danger); }
.file-list small { display: block; color: var(--color-ink-500); margin-top: .15rem; }
.compact-list li { padding: .55rem 0; }

.contract-type-panels { display: grid; gap: var(--space-4); }
.contract-type-card { display: grid; gap: var(--space-3); padding: var(--space-4); border: 1px solid var(--color-ink-100); border-radius: var(--radius-md); background: var(--color-ink-50); }
.contract-type-card h4 { margin: 0; }
.contract-type-card.is-hidden { display: none; }
.recap-card { background: var(--color-info-soft); border-color: transparent; }
.file-pill { display: flex; justify-content: space-between; gap: var(--space-4); align-items: center; padding: .75rem .85rem; border: 1px solid var(--color-ink-100); border-radius: var(--radius-sm); background: #fff; }
.file-pill strong { display: block; }
.file-pill small { display: block; color: var(--color-ink-500); margin-top: .15rem; }
.file-pill-excel { border-color: transparent; background: var(--color-success-soft); }
.required-copy { color: var(--color-danger); font-weight: 800; }
.notice-card { padding: var(--space-4); border: 1px dashed var(--color-ink-200); border-radius: var(--radius-md); background: #fff; }
.notice-card h4 { margin-top: 0; }
.contract-result-list { display: grid; gap: var(--space-3); }
.contract-result-item { display: grid; gap: .6rem; padding: var(--space-4); border: 1px solid var(--color-ink-100); border-radius: var(--radius-md); background: var(--color-ink-50); }
.contract-result-head { display: flex; justify-content: space-between; gap: var(--space-3); align-items: center; flex-wrap: wrap; }
.contract-result-item p { margin: 0; }

@media (max-width: 620px) {
  .file-pill { flex-direction: column; align-items: flex-start; }
}

.contract-type-section { align-items: start; }
.contract-card { display: grid; gap: var(--space-3); padding: var(--space-4); border: 1px solid var(--color-ink-100); border-radius: var(--radius-md); background: var(--color-ink-50); }
.contract-card.is-disabled { opacity: .58; }
.contract-card-head, .contract-result-head, .excel-recap-card { display: flex; justify-content: space-between; align-items: center; gap: var(--space-3); flex-wrap: wrap; }
.contract-file-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(220px, .55fr); gap: var(--space-4); align-items: end; }
.attachment-summary, .excel-recap-card { padding: var(--space-3); border: 1px solid var(--color-primary-100); border-radius: var(--radius-sm); background: var(--color-white); }
.attachment-summary small, .excel-recap-card small { display: block; margin-top: .18rem; color: var(--color-ink-500); }
.contract-result-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: var(--space-4); margin-top: var(--space-3); }
.contract-result-card { display: grid; gap: var(--space-3); padding: var(--space-4); border: 1px solid var(--color-ink-100); border-radius: var(--radius-md); background: var(--color-white); }
.contract-result-card p { margin: 0; }
.contract-result-card small { color: var(--color-ink-500); }
.excel-highlight, .excel-recap-card { border-color: var(--color-info-soft); background: linear-gradient(135deg, var(--color-white), var(--color-info-soft)); }
.legacy-attachments-box { padding: var(--space-4); border: 1px dashed var(--color-ink-200); border-radius: var(--radius-md); background: var(--color-white); }
.form-section.is-disabled { opacity: .58; }

@media (max-width: 820px) {
  .contract-file-row { grid-template-columns: 1fr; }
}
.contract-type-section, .recap-section { align-items: start; }
.contract-card-head, .contract-file-row { display: grid; gap: var(--space-3); }
.contract-card-head { grid-template-columns: 1fr auto; align-items: center; }
.contract-file-row { grid-template-columns: minmax(0, 1fr) minmax(220px, .6fr); }
.attachment-summary, .excel-recap-card, .legacy-attachments-box { border: 1px solid var(--color-ink-100); border-radius: var(--radius-md); padding: var(--space-4); background: #fff; }
.attachment-summary { display: grid; gap: .35rem; align-content: start; }
.attachment-summary strong, .excel-recap-card strong { display: block; }
.attachment-summary small, .excel-recap-card small { display: block; color: var(--color-ink-500); margin-top: .15rem; }
.excel-recap-card { display: flex; justify-content: space-between; align-items: center; gap: var(--space-4); background: var(--color-success-soft); border-color: transparent; }
.legacy-attachments-box { background: var(--color-ink-50); }

@media (max-width: 820px) {
  .contract-card-head, .contract-file-row, .excel-recap-card { grid-template-columns: 1fr; }
  .excel-recap-card { display: grid; }
}
.contract-type-card.is-disabled { opacity: .58; }

.button-danger { background: var(--color-danger-soft); color: var(--color-danger); border-color: rgba(199,57,47,.22); }
.button-danger:hover { background: var(--color-danger); color: #fff; }
.attachment-actions { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.inline-delete-form { display: inline-flex; margin: 0; }
.inline-delete-form .button { min-height: 32px; }

.certificate-card { border-color: var(--color-info-soft); }
.certificate-status { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-3); }
.certificate-status > div { padding: var(--space-3); border: 1px solid var(--color-ink-100); border-radius: var(--radius-sm); background: var(--color-white); }
.certificate-status span { display: block; color: var(--color-ink-600); font-size: .78rem; font-weight: 900; text-transform: uppercase; letter-spacing: .06em; }
.certificate-status strong { display: block; margin-top: .25rem; }
.archive-table td strong { display: block; }
.archive-table td small { display: block; color: var(--color-ink-500); margin-top: .15rem; }
.table-wrap { overflow-x: auto; }

@media (max-width: 820px) {
  .certificate-status { grid-template-columns: 1fr; }
}
.block { display: block; }
.timeline-summary { margin-top: .35rem; color: var(--color-ink-700); font-weight: 600; }

/* V11 - compte utilisateur et administration utilisateurs */
.info-panel {
    border: 1px solid var(--color-ink-100);
    background: var(--color-ink-50);
    border-radius: var(--radius-lg);
    padding: 1rem;
}
.info-panel h3 { margin: 0 0 .25rem; }
.compact-grid { gap: 1rem; }
.account-card { max-width: 780px; }
.account-summary {
    display: grid;
    gap: .2rem;
    margin-bottom: 1.25rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--color-ink-100);
}
.account-summary span { color: var(--color-muted); }
.account-summary small { color: var(--color-primary-700); font-weight: 700; }

/* V12 - commentaires, échéances BODACC, transport détaillé et édition courrier */
.attachment-actions-stacked { display: grid; align-items: start; justify-items: start; gap: .35rem; }
.transport-items-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: .75rem; margin-top: .75rem; }
.transport-items-grid > div { padding: .75rem; border: 1px solid var(--color-ink-100); border-radius: var(--radius-sm); background: var(--color-ink-50); }
.transport-items-grid span { display: block; color: var(--color-ink-600); font-size: .78rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; }
.transport-items-grid strong { display: block; margin-top: .25rem; font-size: 1.2rem; }
.comment-form { padding-bottom: var(--space-4); border-bottom: 1px solid var(--color-ink-100); }
.comment-list { display: grid; gap: var(--space-3); }
.comment-item { padding: var(--space-4); border: 1px solid var(--color-ink-100); border-radius: var(--radius-md); background: var(--color-white); }
.comment-item p { margin: .6rem 0 0; }
.comment-meta { display: flex; justify-content: space-between; gap: var(--space-3); flex-wrap: wrap; color: var(--color-ink-600); }
.comment-meta time { font-size: .88rem; }
.document-editor-card { margin-top: var(--space-4);    margin-bottom: var(--space-4); }
.document-editor-card textarea { min-height: 520px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .88rem; line-height: 1.45; }

/* V13 - échéances dépassées en synthèse */
.date-overdue {
    color: var(--color-danger-700, #b42318) !important;
    font-weight: 800;
}
.card p.date-overdue,
.card small .date-overdue {
    color: var(--color-danger-700, #b42318) !important;
}


/* V14 - Editeur WYSIWYG de courriers */
.wysiwyg-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  align-items: center;
  padding: .7rem;
  border: 1px solid var(--color-ink-100);
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
  background: var(--color-ink-50);
}
.button-sm { padding: .45rem .65rem; font-size: .84rem; }
.toolbar-separator { width: 1px; height: 28px; background: var(--color-ink-200); margin: 0 .15rem; }
.wysiwyg-editor {
  min-height: 620px;
  padding: 2rem;
  border: 1px solid var(--color-ink-100);
  border-top: 0;
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
  background: #fff;
  color: #111;
  overflow: auto;
  line-height: 1.55;
}
.wysiwyg-editor:focus { outline: 0; border-color: var(--color-primary-500); box-shadow: 0 0 0 4px var(--color-primary-100); }
.wysiwyg-editor .letter { min-height: 560px; }
.wysiwyg-editor ul, .wysiwyg-editor ol { padding-left: 1.4rem; }
.form-help { color: var(--color-ink-500); font-size: .9rem; margin: .7rem 0 0; }


/* V15 - workflows financiers complémentaires */
.workflow-form .checkbox-row {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: center;
}
#workflows .certificate-status {
    margin-top: .75rem;
}

.letter-date { text-align: right; }
.alert-warning { background:#fff7ed; border:1px solid #fed7aa; padding:1rem; border-radius:.75rem; }
.status-controler_declaration_creances,.status-controler_revendication,.status-controler_continuite,.status-suivi_certificat_irrecouvrabilite { background:#e0f2fe; color:#075985; }

/* V18 - administration des interlocuteurs internes */
.check-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: .75rem;
}
.compact-fieldset { margin-top: 0; }

.cerfa-edit-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px 20px;
}

.cerfa-edit-grid .form-group {
    min-width: 0;
}

.cerfa-edit-grid textarea,
.cerfa-edit-grid input {
    width: 100%;
}

@media (max-width: 760px) {
    .cerfa-edit-grid {
        grid-template-columns: 1fr;
    }
}
/* V19 - suivi multi-actions, droits et etats de procedure */
.task-chip{display:block;padding:.6rem .7rem;border:1px solid transparent;border-radius:8px;margin:.2rem 0;color:#243248;text-decoration:none;font-size:.82rem;line-height:1.35;min-width:150px}
.task-chip small,.progress-table td>small{display:block;margin-top:.2rem;font-size:.72rem}
.task-waiting{background:#fff0df;border-color:#f0ba79;color:#794309}
.task-received{background:#e6f5e9;border-color:#92cba0;color:#235d33}
.task-generated{background:#fff7bd;border-color:#d8c653;color:#625508}
.task-todo{background:#fde4e4;border-color:#e99b9b;color:#8c2424;font-weight:700}
.task-legend{display:flex;gap:.7rem;flex-wrap:wrap}.task-legend .task-chip{min-width:0}
.progress-table td{vertical-align:top}.progress-table{min-width:850px}
fieldset:disabled{opacity:.7;background:#f5f6f8}fieldset:disabled input,fieldset:disabled select,fieldset:disabled textarea{cursor:not-allowed;background:#edf0f3}
.contract-family-title{padding:.6rem;border-bottom:2px solid var(--border,#dfe5ea);margin-top:1.2rem}
.comment-revisions{padding:.7rem;background:#f6f7f9;border:1px solid #e0e4ea;border-radius:8px;margin:.6rem 0}
.comment-revisions section{border-top:1px solid #ddd;margin-top:.8rem;padding-top:.8rem}
.document-preview .letter-date{text-align:right;line-height:1.4;margin-bottom:2.8em}
.state-history{margin-bottom:1rem}.procedure-change-confirm{border-left:3px solid #cf8826;padding-left:1rem}
@media(max-width:760px){.task-legend{display:block}.progress-table{min-width:720px}}
