/* BRIEF #84 Sprint A — Layout split éditeur ↔ PDF preview
 * Activable via .split-pdf-mode-{edit|split|preview} sur #pg-dossier.
 * Cible : onglet `dos-offres` (et plus tard d'autres onglets éditables).
 */

/* Conteneur global injecté dans #dos-offres */
.split-pdf-layout {
  position: relative;
  display: flex;
  flex-direction: row;
  width: 100%;
  min-height: 0;
}

/* Barre de contrôle (toggle 3 modes + reload) */
.split-pdf-toolbar {
  position: sticky;
  top: 0;
  z-index: 60;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  background: var(--color-bg-card, #fff);
  border-bottom: 1px solid var(--color-border, #e5e7eb);
}
.split-pdf-modes {
  display: inline-flex;
  border: 1px solid var(--color-border, #e5e7eb);
  border-radius: 8px;
  overflow: hidden;
  background: var(--color-bg-soft, #f9fafb);
}
.split-pdf-modes button {
  border: 0;
  background: transparent;
  padding: 6px 14px;
  font-size: 12px;
  font-weight: 500;
  color: var(--color-text-muted, #6b7280);
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.split-pdf-modes button:hover {
  background: var(--color-bg-soft, #f3f4f6);
  color: var(--color-text, #111827);
}
.split-pdf-modes button.active {
  background: var(--color-primary, #042C53);
  color: #fff;
}
.split-pdf-toolbar .split-pdf-spacer { flex: 1; }

/* BRIEF #84 Sprint C — Sommaire (dropdown jump-to-page) */
.split-pdf-toolbar .split-pdf-sommaire {
  border: 1px solid var(--color-border, #e5e7eb);
  border-radius: 6px;
  padding: 5px 8px;
  font-size: 12px;
  background: var(--color-bg-card, #fff);
  color: var(--color-text, #374151);
  cursor: pointer;
  max-width: 200px;
}
.split-pdf-toolbar .split-pdf-sommaire:hover {
  border-color: var(--color-primary, #042C53);
}
body.dark .split-pdf-toolbar .split-pdf-sommaire {
  background: #1f2937;
  border-color: #374151;
  color: #d1d5db;
}
.split-pdf-toolbar .split-pdf-reload,
.split-pdf-toolbar .split-pdf-dl {
  border: 1px solid var(--color-border, #e5e7eb);
  background: var(--color-bg-card, #fff);
  border-radius: 6px;
  padding: 5px 10px;
  font-size: 12px;
  cursor: pointer;
  color: var(--color-text, #374151);
}
.split-pdf-toolbar .split-pdf-reload:hover,
.split-pdf-toolbar .split-pdf-dl:hover {
  background: var(--color-bg-soft, #f9fafb);
}

/* Panneau éditeur (gauche) — héberge le contenu original de #dos-offres */
.split-pdf-editor {
  flex: 0 0 60%;
  min-width: 0;
  overflow: auto;
  transition: flex-basis 0.18s ease;
}
/* Panneau preview (droite) — iframe PDF */
.split-pdf-preview {
  flex: 0 0 calc(40% - 6px);
  min-width: 0;
  position: relative;
  background: var(--color-bg-soft, #f3f4f6);
  border-left: 1px solid var(--color-border, #e5e7eb);
  display: flex;
  flex-direction: column;
  transition: flex-basis 0.18s ease;
}
.split-pdf-preview iframe {
  flex: 1;
  width: 100%;
  height: 100%;
  border: 0;
  background: #fff;
  min-height: 600px;
}
.split-pdf-preview-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1;
  font-size: 13px;
  color: var(--color-text-muted, #6b7280);
  text-align: center;
  padding: 24px;
}

/* Resize handle (entre les deux panneaux) */
.split-pdf-handle {
  flex: 0 0 6px;
  background: var(--color-border, #e5e7eb);
  cursor: col-resize;
  position: relative;
  user-select: none;
  transition: background 0.12s;
}
.split-pdf-handle:hover,
.split-pdf-handle.dragging {
  background: var(--color-primary, #042C53);
}
.split-pdf-handle::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 2px;
  height: 24px;
  background: #fff;
  opacity: 0.5;
  border-radius: 2px;
  transform: translate(-50%, -50%);
}

/* Modes : edit only / preview only */
.split-pdf-layout.mode-edit .split-pdf-preview,
.split-pdf-layout.mode-edit .split-pdf-handle { display: none; }
.split-pdf-layout.mode-edit .split-pdf-editor { flex: 1 1 100%; }

.split-pdf-layout.mode-preview .split-pdf-editor,
.split-pdf-layout.mode-preview .split-pdf-handle { display: none; }
.split-pdf-layout.mode-preview .split-pdf-preview { flex: 1 1 100%; border-left: 0; }

/* Mobile : forcer mode tabs (toggle) */
@media (max-width: 768px) {
  .split-pdf-layout { flex-direction: column; }
  .split-pdf-handle { display: none !important; }
  .split-pdf-editor,
  .split-pdf-preview { flex: 1 1 100%; }
  /* En mode split sur mobile → on bascule force preview au-dessus */
  .split-pdf-layout.mode-split .split-pdf-editor { display: none; }
  .split-pdf-layout.mode-split .split-pdf-preview { flex: 1 1 100%; }
  .split-pdf-toolbar { flex-wrap: wrap; }
}

/* Toolbar mobile : tabs full-width */
@media (max-width: 480px) {
  .split-pdf-modes { flex: 1; }
  .split-pdf-modes button { flex: 1; justify-content: center; padding: 8px 6px; font-size: 11px; }
}

/* Dark mode */
body.dark .split-pdf-toolbar,
body.dark .split-pdf-modes {
  background: var(--color-bg-card, #1f2937);
  border-color: var(--color-border, #374151);
}
body.dark .split-pdf-preview {
  background: var(--color-bg-soft, #111827);
  border-color: var(--color-border, #374151);
}
body.dark .split-pdf-preview iframe { background: #1f2937; }
body.dark .split-pdf-modes button { color: var(--color-text-muted, #9ca3af); }
body.dark .split-pdf-modes button.active {
  background: var(--color-primary, #3b82f6);
  color: #fff;
}
body.dark .split-pdf-handle { background: #374151; }

/* BRIEF #84 Sprint B — Progress bar top + skeleton overlay */
.split-pdf-progress {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: transparent;
  overflow: hidden;
  z-index: 30;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.15s;
}
.split-pdf-progress.active { opacity: 1; }
.split-pdf-progress::after {
  content: '';
  position: absolute;
  top: 0;
  left: -40%;
  width: 40%;
  height: 100%;
  background: linear-gradient(90deg, transparent, var(--color-primary, #042C53), transparent);
  animation: spdf-progress 1.1s infinite ease-in-out;
}
@keyframes spdf-progress {
  0% { left: -40%; }
  100% { left: 100%; }
}

/* Skeleton overlay : 8 lignes grises pendant la régénération */
.split-pdf-skeleton {
  position: absolute;
  top: 3px;
  left: 0;
  right: 0;
  bottom: 0;
  background: var(--color-bg-soft, #f9fafb);
  display: none;
  flex-direction: column;
  gap: 14px;
  padding: 40px 32px;
  z-index: 20;
}
.split-pdf-skeleton.active { display: flex; }
.split-pdf-skeleton .skl-line {
  height: 12px;
  border-radius: 4px;
  background: linear-gradient(90deg, #e5e7eb 0%, #f3f4f6 40%, #e5e7eb 80%);
  background-size: 200% 100%;
  animation: spdf-shimmer 1.4s infinite linear;
}
.split-pdf-skeleton .skl-title { height: 22px; width: 60%; margin-bottom: 14px; }
.split-pdf-skeleton .skl-line.short { width: 70%; }
.split-pdf-skeleton .skl-line.medium { width: 85%; }
.split-pdf-skeleton .skl-line.full { width: 100%; }
@keyframes spdf-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
body.dark .split-pdf-skeleton {
  background: #111827;
}
body.dark .split-pdf-skeleton .skl-line {
  background: linear-gradient(90deg, #1f2937 0%, #374151 40%, #1f2937 80%);
  background-size: 200% 100%;
}

/* Erreur PDF (500) — état error */
.split-pdf-error-banner {
  position: absolute;
  top: 8px;
  left: 8px;
  right: 8px;
  z-index: 25;
  display: none;
  background: #FEF2F2;
  border: 1px solid #FCA5A5;
  color: #991B1B;
  padding: 10px 14px;
  border-radius: 8px;
  font-size: 12px;
}
.split-pdf-error-banner.active { display: flex; align-items: center; gap: 10px; }
.split-pdf-error-banner .err-msg { flex: 1; }
.split-pdf-error-banner .retry-btn {
  background: #DC2626;
  color: #fff;
  border: 0;
  padding: 5px 10px;
  border-radius: 5px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}
.split-pdf-error-banner .retry-btn:hover { background: #B91C1C; }
body.dark .split-pdf-error-banner {
  background: #1f2937;
  border-color: #DC2626;
  color: #FCA5A5;
}

/* Indicateur "cache hit" (futur Sprint B) */
.split-pdf-status {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: var(--color-text-muted, #6b7280);
}
.split-pdf-status .dot {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--color-text-muted, #9ca3af);
}
.split-pdf-status.live .dot { background: #22c55e; animation: spdf-pulse 1.4s infinite; }
.split-pdf-status.loading .dot { background: #f59e0b; animation: spdf-pulse 0.6s infinite; }
.split-pdf-status.error .dot { background: #ef4444; }
@keyframes spdf-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.35; }
}
