:root {
  --marque-primaire: #0f172a;
  --marque-hover: #1e293b;
  --marque-accent: #64748b;
}

body {
  font-family: "Plus Jakarta Sans", sans-serif;
  background-color: #fafafa;
}

.font-serif {
  font-family: "Playfair Display", serif;
}

.loader {
  border: 2px solid rgba(255, 255, 255, 0.3);
  border-radius: 50%;
  border-top: 2px solid white;
  width: 16px;
  height: 16px;
  animation: spin 1s linear infinite;
  display: inline-block;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.tab-panel { display: none; }
.tab-panel.active {
  display: block;
  animation: fadeIn 0.4s ease-out;
}

@keyframes fadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

.custom-scrollbar::-webkit-scrollbar { width: 4px; height: 6px; }
.custom-scrollbar::-webkit-scrollbar-track { background: #f1f5f9; border-radius: 4px; }
.custom-scrollbar::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; }
.custom-scrollbar::-webkit-scrollbar-thumb:hover { background: #94a3b8; }
.hide-scroll-x::-webkit-scrollbar { height: 0; display: none; }

header.portal-header {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
}

#clientChatWidget .chat-dot { animation: chatBounce 1s infinite; }
#clientChatWidget .chat-dot:nth-child(2) { animation-delay: .15s; }
#clientChatWidget .chat-dot:nth-child(3) { animation-delay: .3s; }

@keyframes chatBounce {
  0%, 80%, 100% { transform: translateY(0); opacity: .4; }
  40% { transform: translateY(-3px); opacity: 1; }
}

.pdf-page-canvas {
  width: 100%;
  height: auto;
  display: block;
  background: #fff;
  border-radius: 12px;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .12);
}

.rule-ok { color: #047857; }
.rule-ko { color: #94a3b8; }
