/* Densité compacte globale — réduction de 35 % des utilitaires d’espacement. */
:root {
  --compact-space-factor: 0.65;
}

[class~="p-0.5"] { padding: calc(.125rem * var(--compact-space-factor)) !important; }
[class~="p-1"] { padding: calc(.25rem * var(--compact-space-factor)) !important; }
[class~="p-1.5"] { padding: calc(.375rem * var(--compact-space-factor)) !important; }
[class~="p-2"] { padding: calc(.5rem * var(--compact-space-factor)) !important; }
[class~="p-2.5"] { padding: calc(.625rem * var(--compact-space-factor)) !important; }
[class~="p-3"] { padding: calc(.75rem * var(--compact-space-factor)) !important; }
[class~="p-3.5"] { padding: calc(.875rem * var(--compact-space-factor)) !important; }
[class~="p-4"] { padding: calc(1rem * var(--compact-space-factor)) !important; }
[class~="p-5"] { padding: calc(1.25rem * var(--compact-space-factor)) !important; }
[class~="p-6"] { padding: calc(1.5rem * var(--compact-space-factor)) !important; }
[class~="p-7"] { padding: calc(1.75rem * var(--compact-space-factor)) !important; }
[class~="p-8"] { padding: calc(2rem * var(--compact-space-factor)) !important; }
[class~="p-9"] { padding: calc(2.25rem * var(--compact-space-factor)) !important; }
[class~="p-10"] { padding: calc(2.5rem * var(--compact-space-factor)) !important; }
[class~="p-12"] { padding: calc(3rem * var(--compact-space-factor)) !important; }
[class~="p-14"] { padding: calc(3.5rem * var(--compact-space-factor)) !important; }
[class~="p-16"] { padding: calc(4rem * var(--compact-space-factor)) !important; }
[class~="p-20"] { padding: calc(5rem * var(--compact-space-factor)) !important; }

[class~="px-1"] { padding-inline: calc(.25rem * var(--compact-space-factor)) !important; }
[class~="px-1.5"] { padding-inline: calc(.375rem * var(--compact-space-factor)) !important; }
[class~="px-2"] { padding-inline: calc(.5rem * var(--compact-space-factor)) !important; }
[class~="px-2.5"] { padding-inline: calc(.625rem * var(--compact-space-factor)) !important; }
[class~="px-3"] { padding-inline: calc(.75rem * var(--compact-space-factor)) !important; }
[class~="px-3.5"] { padding-inline: calc(.875rem * var(--compact-space-factor)) !important; }
[class~="px-4"] { padding-inline: calc(1rem * var(--compact-space-factor)) !important; }
[class~="px-5"] { padding-inline: calc(1.25rem * var(--compact-space-factor)) !important; }
[class~="px-6"] { padding-inline: calc(1.5rem * var(--compact-space-factor)) !important; }
[class~="px-8"] { padding-inline: calc(2rem * var(--compact-space-factor)) !important; }
[class~="px-10"] { padding-inline: calc(2.5rem * var(--compact-space-factor)) !important; }
[class~="px-12"] { padding-inline: calc(3rem * var(--compact-space-factor)) !important; }
[class~="px-16"] { padding-inline: calc(4rem * var(--compact-space-factor)) !important; }
[class~="px-20"] { padding-inline: calc(5rem * var(--compact-space-factor)) !important; }

[class~="py-0.5"] { padding-block: calc(.125rem * var(--compact-space-factor)) !important; }
[class~="py-1"] { padding-block: calc(.25rem * var(--compact-space-factor)) !important; }
[class~="py-1.5"] { padding-block: calc(.375rem * var(--compact-space-factor)) !important; }
[class~="py-2"] { padding-block: calc(.5rem * var(--compact-space-factor)) !important; }
[class~="py-2.5"] { padding-block: calc(.625rem * var(--compact-space-factor)) !important; }
[class~="py-3"] { padding-block: calc(.75rem * var(--compact-space-factor)) !important; }
[class~="py-3.5"] { padding-block: calc(.875rem * var(--compact-space-factor)) !important; }
[class~="py-4"] { padding-block: calc(1rem * var(--compact-space-factor)) !important; }
[class~="py-5"] { padding-block: calc(1.25rem * var(--compact-space-factor)) !important; }
[class~="py-6"] { padding-block: calc(1.5rem * var(--compact-space-factor)) !important; }
[class~="py-7"] { padding-block: calc(1.75rem * var(--compact-space-factor)) !important; }
[class~="py-8"] { padding-block: calc(2rem * var(--compact-space-factor)) !important; }
[class~="py-10"] { padding-block: calc(2.5rem * var(--compact-space-factor)) !important; }
[class~="py-12"] { padding-block: calc(3rem * var(--compact-space-factor)) !important; }
[class~="py-14"] { padding-block: calc(3.5rem * var(--compact-space-factor)) !important; }
[class~="py-16"] { padding-block: calc(4rem * var(--compact-space-factor)) !important; }
[class~="py-20"] { padding-block: calc(5rem * var(--compact-space-factor)) !important; }

[class~="pt-1.5"] { padding-top: calc(.375rem * var(--compact-space-factor)) !important; }
[class~="pt-2"] { padding-top: calc(.5rem * var(--compact-space-factor)) !important; }
[class~="pt-3"] { padding-top: calc(.75rem * var(--compact-space-factor)) !important; }
[class~="pt-4"] { padding-top: calc(1rem * var(--compact-space-factor)) !important; }
[class~="pt-5"] { padding-top: calc(1.25rem * var(--compact-space-factor)) !important; }
[class~="pt-6"] { padding-top: calc(1.5rem * var(--compact-space-factor)) !important; }
[class~="pt-7"] { padding-top: calc(1.75rem * var(--compact-space-factor)) !important; }
[class~="pt-8"] { padding-top: calc(2rem * var(--compact-space-factor)) !important; }
[class~="pt-9"] { padding-top: calc(2.25rem * var(--compact-space-factor)) !important; }
[class~="pt-10"] { padding-top: calc(2.5rem * var(--compact-space-factor)) !important; }
[class~="pt-12"] { padding-top: calc(3rem * var(--compact-space-factor)) !important; }
[class~="pb-2"] { padding-bottom: calc(.5rem * var(--compact-space-factor)) !important; }
[class~="pb-3"] { padding-bottom: calc(.75rem * var(--compact-space-factor)) !important; }
[class~="pb-4"] { padding-bottom: calc(1rem * var(--compact-space-factor)) !important; }
[class~="pb-5"] { padding-bottom: calc(1.25rem * var(--compact-space-factor)) !important; }
[class~="pb-6"] { padding-bottom: calc(1.5rem * var(--compact-space-factor)) !important; }
[class~="pb-8"] { padding-bottom: calc(2rem * var(--compact-space-factor)) !important; }
[class~="pb-10"] { padding-bottom: calc(2.5rem * var(--compact-space-factor)) !important; }
[class~="pl-3"] { padding-left: calc(.75rem * var(--compact-space-factor)) !important; }
[class~="pl-4"] { padding-left: calc(1rem * var(--compact-space-factor)) !important; }
[class~="pl-10"] { padding-left: calc(2.5rem * var(--compact-space-factor)) !important; }
[class~="pr-2"] { padding-right: calc(.5rem * var(--compact-space-factor)) !important; }
[class~="pr-3"] { padding-right: calc(.75rem * var(--compact-space-factor)) !important; }
[class~="pr-4"] { padding-right: calc(1rem * var(--compact-space-factor)) !important; }
[class~="pr-12"] { padding-right: calc(3rem * var(--compact-space-factor)) !important; }

[class~="mb-1"] { margin-bottom: calc(.25rem * var(--compact-space-factor)) !important; }
[class~="mb-1.5"] { margin-bottom: calc(.375rem * var(--compact-space-factor)) !important; }
[class~="mb-2"] { margin-bottom: calc(.5rem * var(--compact-space-factor)) !important; }
[class~="mb-3"] { margin-bottom: calc(.75rem * var(--compact-space-factor)) !important; }
[class~="mb-4"] { margin-bottom: calc(1rem * var(--compact-space-factor)) !important; }
[class~="mb-5"] { margin-bottom: calc(1.25rem * var(--compact-space-factor)) !important; }
[class~="mb-6"] { margin-bottom: calc(1.5rem * var(--compact-space-factor)) !important; }
[class~="mb-7"] { margin-bottom: calc(1.75rem * var(--compact-space-factor)) !important; }
[class~="mb-8"] { margin-bottom: calc(2rem * var(--compact-space-factor)) !important; }
[class~="mb-10"] { margin-bottom: calc(2.5rem * var(--compact-space-factor)) !important; }
[class~="mb-12"] { margin-bottom: calc(3rem * var(--compact-space-factor)) !important; }
[class~="mt-0.5"] { margin-top: calc(.125rem * var(--compact-space-factor)) !important; }
[class~="mt-1"] { margin-top: calc(.25rem * var(--compact-space-factor)) !important; }
[class~="mt-1.5"] { margin-top: calc(.375rem * var(--compact-space-factor)) !important; }
[class~="mt-2"] { margin-top: calc(.5rem * var(--compact-space-factor)) !important; }
[class~="mt-3"] { margin-top: calc(.75rem * var(--compact-space-factor)) !important; }
[class~="mt-4"] { margin-top: calc(1rem * var(--compact-space-factor)) !important; }
[class~="mt-5"] { margin-top: calc(1.25rem * var(--compact-space-factor)) !important; }
[class~="mt-6"] { margin-top: calc(1.5rem * var(--compact-space-factor)) !important; }
[class~="mt-7"] { margin-top: calc(1.75rem * var(--compact-space-factor)) !important; }
[class~="mt-8"] { margin-top: calc(2rem * var(--compact-space-factor)) !important; }
[class~="mt-9"] { margin-top: calc(2.25rem * var(--compact-space-factor)) !important; }
[class~="mt-10"] { margin-top: calc(2.5rem * var(--compact-space-factor)) !important; }
[class~="mt-12"] { margin-top: calc(3rem * var(--compact-space-factor)) !important; }
[class~="mt-14"] { margin-top: calc(3.5rem * var(--compact-space-factor)) !important; }
[class~="mt-16"] { margin-top: calc(4rem * var(--compact-space-factor)) !important; }
[class~="ml-1"] { margin-left: calc(.25rem * var(--compact-space-factor)) !important; }
[class~="ml-2"] { margin-left: calc(.5rem * var(--compact-space-factor)) !important; }
[class~="mx-2"] { margin-inline: calc(.5rem * var(--compact-space-factor)) !important; }
[class~="mx-4"] { margin-inline: calc(1rem * var(--compact-space-factor)) !important; }
[class~="mx-6"] { margin-inline: calc(1.5rem * var(--compact-space-factor)) !important; }
[class~="my-2"] { margin-block: calc(.5rem * var(--compact-space-factor)) !important; }
[class~="my-4"] { margin-block: calc(1rem * var(--compact-space-factor)) !important; }
[class~="my-6"] { margin-block: calc(1.5rem * var(--compact-space-factor)) !important; }

[class~="gap-0.5"] { gap: calc(.125rem * var(--compact-space-factor)) !important; }
[class~="gap-1"] { gap: calc(.25rem * var(--compact-space-factor)) !important; }
[class~="gap-1.5"] { gap: calc(.375rem * var(--compact-space-factor)) !important; }
[class~="gap-2"] { gap: calc(.5rem * var(--compact-space-factor)) !important; }
[class~="gap-2.5"] { gap: calc(.625rem * var(--compact-space-factor)) !important; }
[class~="gap-3"] { gap: calc(.75rem * var(--compact-space-factor)) !important; }
[class~="gap-4"] { gap: calc(1rem * var(--compact-space-factor)) !important; }
[class~="gap-5"] { gap: calc(1.25rem * var(--compact-space-factor)) !important; }
[class~="gap-6"] { gap: calc(1.5rem * var(--compact-space-factor)) !important; }
[class~="gap-8"] { gap: calc(2rem * var(--compact-space-factor)) !important; }
[class~="gap-10"] { gap: calc(2.5rem * var(--compact-space-factor)) !important; }
[class~="gap-12"] { gap: calc(3rem * var(--compact-space-factor)) !important; }
[class~="gap-x-2"] { column-gap: calc(.5rem * var(--compact-space-factor)) !important; }
[class~="gap-x-3"] { column-gap: calc(.75rem * var(--compact-space-factor)) !important; }
[class~="gap-x-4"] { column-gap: calc(1rem * var(--compact-space-factor)) !important; }
[class~="gap-x-5"] { column-gap: calc(1.25rem * var(--compact-space-factor)) !important; }
[class~="gap-y-2"] { row-gap: calc(.5rem * var(--compact-space-factor)) !important; }
[class~="gap-y-3"] { row-gap: calc(.75rem * var(--compact-space-factor)) !important; }
[class~="gap-y-4"] { row-gap: calc(1rem * var(--compact-space-factor)) !important; }
[class~="gap-y-5"] { row-gap: calc(1.25rem * var(--compact-space-factor)) !important; }

[class~="space-y-0.5"] > :not([hidden]) ~ :not([hidden]) {
  margin-top: calc(.125rem * var(--compact-space-factor)) !important;
  margin-bottom: 0 !important;
}
[class~="space-y-1"] > :not([hidden]) ~ :not([hidden]) {
  margin-top: calc(.25rem * var(--compact-space-factor)) !important;
  margin-bottom: 0 !important;
}
[class~="space-y-1.5"] > :not([hidden]) ~ :not([hidden]) {
  margin-top: calc(.375rem * var(--compact-space-factor)) !important;
  margin-bottom: 0 !important;
}
[class~="space-y-2"] > :not([hidden]) ~ :not([hidden]) {
  margin-top: calc(.5rem * var(--compact-space-factor)) !important;
  margin-bottom: 0 !important;
}
[class~="space-y-2.5"] > :not([hidden]) ~ :not([hidden]) {
  margin-top: calc(.625rem * var(--compact-space-factor)) !important;
  margin-bottom: 0 !important;
}
[class~="space-y-3"] > :not([hidden]) ~ :not([hidden]) {
  margin-top: calc(.75rem * var(--compact-space-factor)) !important;
  margin-bottom: 0 !important;
}
[class~="space-y-4"] > :not([hidden]) ~ :not([hidden]) {
  margin-top: calc(1rem * var(--compact-space-factor)) !important;
  margin-bottom: 0 !important;
}
[class~="space-y-5"] > :not([hidden]) ~ :not([hidden]) {
  margin-top: calc(1.25rem * var(--compact-space-factor)) !important;
  margin-bottom: 0 !important;
}
[class~="space-y-6"] > :not([hidden]) ~ :not([hidden]) {
  margin-top: calc(1.5rem * var(--compact-space-factor)) !important;
  margin-bottom: 0 !important;
}
[class~="space-y-8"] > :not([hidden]) ~ :not([hidden]) {
  margin-top: calc(2rem * var(--compact-space-factor)) !important;
  margin-bottom: 0 !important;
}
[class~="space-y-10"] > :not([hidden]) ~ :not([hidden]) {
  margin-top: calc(2.5rem * var(--compact-space-factor)) !important;
  margin-bottom: 0 !important;
}
[class~="space-y-12"] > :not([hidden]) ~ :not([hidden]) {
  margin-top: calc(3rem * var(--compact-space-factor)) !important;
  margin-bottom: 0 !important;
}

@media (min-width: 640px) {
  [class~="sm:p-4"] { padding: calc(1rem * var(--compact-space-factor)) !important; }
  [class~="sm:p-5"] { padding: calc(1.25rem * var(--compact-space-factor)) !important; }
  [class~="sm:p-6"] { padding: calc(1.5rem * var(--compact-space-factor)) !important; }
  [class~="sm:p-7"] { padding: calc(1.75rem * var(--compact-space-factor)) !important; }
  [class~="sm:p-8"] { padding: calc(2rem * var(--compact-space-factor)) !important; }
  [class~="sm:p-9"] { padding: calc(2.25rem * var(--compact-space-factor)) !important; }
  [class~="sm:p-10"] { padding: calc(2.5rem * var(--compact-space-factor)) !important; }
  [class~="sm:p-12"] { padding: calc(3rem * var(--compact-space-factor)) !important; }
  [class~="sm:px-3"] { padding-inline: calc(.75rem * var(--compact-space-factor)) !important; }
  [class~="sm:px-4"] { padding-inline: calc(1rem * var(--compact-space-factor)) !important; }
  [class~="sm:px-5"] { padding-inline: calc(1.25rem * var(--compact-space-factor)) !important; }
  [class~="sm:px-6"] { padding-inline: calc(1.5rem * var(--compact-space-factor)) !important; }
  [class~="sm:px-8"] { padding-inline: calc(2rem * var(--compact-space-factor)) !important; }
  [class~="sm:px-9"] { padding-inline: calc(2.25rem * var(--compact-space-factor)) !important; }
  [class~="sm:py-3"] { padding-block: calc(.75rem * var(--compact-space-factor)) !important; }
  [class~="sm:py-4"] { padding-block: calc(1rem * var(--compact-space-factor)) !important; }
  [class~="sm:py-5"] { padding-block: calc(1.25rem * var(--compact-space-factor)) !important; }
  [class~="sm:py-8"] { padding-block: calc(2rem * var(--compact-space-factor)) !important; }
  [class~="sm:py-10"] { padding-block: calc(2.5rem * var(--compact-space-factor)) !important; }
  [class~="sm:py-12"] { padding-block: calc(3rem * var(--compact-space-factor)) !important; }
  [class~="sm:py-14"] { padding-block: calc(3.5rem * var(--compact-space-factor)) !important; }
  [class~="sm:py-16"] { padding-block: calc(4rem * var(--compact-space-factor)) !important; }
  [class~="sm:pt-0"] { padding-top: 0 !important; }
  [class~="sm:pt-5"] { padding-top: calc(1.25rem * var(--compact-space-factor)) !important; }
  [class~="sm:pt-6"] { padding-top: calc(1.5rem * var(--compact-space-factor)) !important; }
  [class~="sm:pt-10"] { padding-top: calc(2.5rem * var(--compact-space-factor)) !important; }
  [class~="sm:mb-4"] { margin-bottom: calc(1rem * var(--compact-space-factor)) !important; }
  [class~="sm:mb-6"] { margin-bottom: calc(1.5rem * var(--compact-space-factor)) !important; }
  [class~="sm:mt-0"] { margin-top: 0 !important; }
  [class~="sm:mt-4"] { margin-top: calc(1rem * var(--compact-space-factor)) !important; }
  [class~="sm:mt-5"] { margin-top: calc(1.25rem * var(--compact-space-factor)) !important; }
  [class~="sm:mt-6"] { margin-top: calc(1.5rem * var(--compact-space-factor)) !important; }
  [class~="sm:mt-7"] { margin-top: calc(1.75rem * var(--compact-space-factor)) !important; }
  [class~="sm:mt-8"] { margin-top: calc(2rem * var(--compact-space-factor)) !important; }
  [class~="sm:mt-10"] { margin-top: calc(2.5rem * var(--compact-space-factor)) !important; }
  [class~="sm:mt-12"] { margin-top: calc(3rem * var(--compact-space-factor)) !important; }
  [class~="sm:gap-2"] { gap: calc(.5rem * var(--compact-space-factor)) !important; }
  [class~="sm:gap-3"] { gap: calc(.75rem * var(--compact-space-factor)) !important; }
  [class~="sm:gap-4"] { gap: calc(1rem * var(--compact-space-factor)) !important; }
  [class~="sm:gap-5"] { gap: calc(1.25rem * var(--compact-space-factor)) !important; }
  [class~="sm:gap-6"] { gap: calc(1.5rem * var(--compact-space-factor)) !important; }
  [class~="sm:gap-8"] { gap: calc(2rem * var(--compact-space-factor)) !important; }
  [class~="sm:space-y-2"] > :not([hidden]) ~ :not([hidden]) {
    margin-top: calc(.5rem * var(--compact-space-factor)) !important;
    margin-bottom: 0 !important;
  }
  [class~="sm:space-y-4"] > :not([hidden]) ~ :not([hidden]) {
    margin-top: calc(1rem * var(--compact-space-factor)) !important;
    margin-bottom: 0 !important;
  }
  [class~="sm:space-y-5"] > :not([hidden]) ~ :not([hidden]) {
    margin-top: calc(1.25rem * var(--compact-space-factor)) !important;
    margin-bottom: 0 !important;
  }
  [class~="sm:space-y-6"] > :not([hidden]) ~ :not([hidden]) {
    margin-top: calc(1.5rem * var(--compact-space-factor)) !important;
    margin-bottom: 0 !important;
  }
}

@media (min-width: 1024px) {
  [class~="lg:p-6"] { padding: calc(1.5rem * var(--compact-space-factor)) !important; }
  [class~="lg:p-8"] { padding: calc(2rem * var(--compact-space-factor)) !important; }
  [class~="lg:p-9"] { padding: calc(2.25rem * var(--compact-space-factor)) !important; }
  [class~="lg:p-10"] { padding: calc(2.5rem * var(--compact-space-factor)) !important; }
  [class~="lg:p-12"] { padding: calc(3rem * var(--compact-space-factor)) !important; }
  [class~="lg:px-8"] { padding-inline: calc(2rem * var(--compact-space-factor)) !important; }
  [class~="lg:py-8"] { padding-block: calc(2rem * var(--compact-space-factor)) !important; }
  [class~="lg:py-16"] { padding-block: calc(4rem * var(--compact-space-factor)) !important; }
  [class~="lg:gap-6"] { gap: calc(1.5rem * var(--compact-space-factor)) !important; }
  [class~="lg:gap-8"] { gap: calc(2rem * var(--compact-space-factor)) !important; }
}

/* Les cibles tactiles restent confortables malgré les marges réduites. */
@media (max-width: 768px) {
  button, .btn-touch, .touch-target { min-height: 44px; }
}

/* Écrans d’erreur autonomes, compacts et indépendants du CDN Tailwind. */
.error-page {
  min-height: 100vh;
  display: grid;
  place-items: center;
  margin: 0;
  padding: 16px;
  color: #1e293b;
  background: #f8fafc;
  font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.error-card {
  width: min(100%, 560px);
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 24px;
  text-align: center;
}

.error-brand { margin: 0 0 10px; padding: 5px 10px; border-radius: 999px; color: #4338ca; background: #eef2ff; font-size: 12px; font-weight: 700; }
.error-code { margin: 0; color: #94a3b8; font-size: 12px; font-weight: 800; letter-spacing: .2em; }
.error-title { margin: 6px 0 0; font-size: clamp(24px, 5vw, 32px); font-weight: 800; letter-spacing: -.03em; }
.error-message { max-width: 440px; margin: 8px 0 0; color: #64748b; font-size: 14px; line-height: 1.5; }
.error-home { margin-top: 16px; padding: 9px 14px; border-radius: 10px; color: #fff; background: #4f46e5; font-size: 13px; font-weight: 700; text-decoration: none; }

@media (max-width: 540px) {
  .error-card { padding: 16px; }
}

/* Les images sont carrées par défaut ; seuls les portraits de type avatar restent ronds. */
img { border-radius: 0 !important; }
.avatar img,
.avatar-on-dark img,
.photo-upload-circle img,
img.reader-dashboard-portrait,
img.public-person-portrait { border-radius: 50% !important; }