/*
 * Module Hommages — composition mémorielle du thème Genocost.
 * Le socle public reste l'unique source pour le hero, les couleurs, les
 * typographies, les boutons et la géométrie des formulaires.
 */

body[data-page="hommages"],
body[data-page="hommage-detail"] {
  background: var(--surface-ivory);
  color: var(--text-on-light);
}

/*
 * Refonte Studio UI 2026 — six chapitres publics.
 * Les règles ci-dessous surchargent l'ancienne composition sans toucher à la
 * fiche publique d'un hommage, qui partage toujours ce fichier de module.
 */
body[data-page="hommages"] {
  background: var(--surface-ivory);
}

body[data-page="hommages"] .tribute-experience {
  overflow: clip;
  background: var(--surface-ivory);
}

body[data-page="hommages"] .tribute-photo,
body[data-page="hommages"] .tribute-photo picture,
body[data-page="hommages"] .tribute-photo img {
  display: block;
  width: 100%;
  height: 100%;
  margin: 0;
}

body[data-page="hommages"] .tribute-photo {
  overflow: hidden;
}

body[data-page="hommages"] .tribute-photo img {
  object-fit: cover;
}

body[data-page="hommages"] [data-tribute-section] {
  scroll-margin-top: 112px;
}

body[data-page="hommages"] .tribute-chapter {
  margin: 0 0 20px;
  color: var(--text-on-light-secondary);
  font-weight: 700;
}

body[data-page="hommages"] .tribute-heading {
  margin-bottom: 56px;
}

body[data-page="hommages"] .tribute-heading h2,
body[data-page="hommages"] .tribute-contribution__heading h2,
body[data-page="hommages"] .tribute-collective__content h2,
body[data-page="hommages"] .tribute-why__copy h2 {
  margin-bottom: 24px;
}

body[data-page="hommages"] .tribute-heading p,
body[data-page="hommages"] .tribute-contribution__heading p,
body[data-page="hommages"] .tribute-collective__content > p,
body[data-page="hommages"] .tribute-why__copy > p {
  color: var(--text-on-light-secondary);
}

/* Hero : la géométrie reste celle du composant reservation-hero. */
body[data-page="hommages"] .tribute-hero {
  isolation: isolate;
}

body[data-page="hommages"] .tribute-hero [data-internal-hero-media] {
  transform-origin: 68% 50%;
}

body[data-page="hommages"] .tribute-hero__light {
  position: absolute;
  z-index: 1;
  right: 12%;
  bottom: 14%;
  width: 190px;
  height: 190px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--color-overlay-image-soft) 0%, transparent 70%);
  pointer-events: none;
}

/* 01 — Une image qui précède le texte dans le rythme d'apparition. */
body[data-page="hommages"] .tribute-why {
  padding: 112px 0;
  background: var(--surface-ivory);
}

body[data-page="hommages"] .tribute-why .row {
  min-height: 620px;
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}

body[data-page="hommages"] .tribute-why__copy {
  max-width: 570px;
  padding: 56px 56px 56px 0;
}

body[data-page="hommages"] .tribute-why__photo {
  min-height: 620px;
}

body[data-page="hommages"] .tribute-text-link {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  margin-top: 16px;
  border-bottom: 1px solid var(--accent-on-light);
  color: var(--accent-on-light);
  font-weight: 700;
}

/* 02 — Mur vivant, asymétrique et sans métrique sociale. */
body[data-page="hommages"] .tribute-wall {
  padding: 112px 0 120px;
  background: var(--color-background-primary);
  color: var(--text-on-dark);
}

body[data-page="hommages"] .tribute-wall .tribute-chapter,
body[data-page="hommages"] .tribute-wall .tribute-heading p {
  color: var(--text-on-dark-secondary);
}

body[data-page="hommages"] .tribute-wall__items > div,
body[data-page="hommages"] .tribute-form-types > div {
  display: flex;
}

body[data-page="hommages"] .tribute-memory-card {
  position: relative;
  display: flex;
  width: 100%;
  min-height: 440px;
  align-items: flex-end;
  overflow: hidden;
  border: 1px solid var(--color-border-dark-default);
  background: var(--color-background-mineral);
  color: var(--text-on-dark);
  isolation: isolate;
}

body[data-page="hommages"] .tribute-memory-card--featured {
  min-height: 610px;
}

body[data-page="hommages"] .tribute-memory-card > img,
body[data-page="hommages"] .tribute-memory-card__shade {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

body[data-page="hommages"] .tribute-memory-card > img {
  z-index: -2;
  object-fit: cover;
  transition: transform 800ms cubic-bezier(0.22, 1, 0.36, 1);
}

body[data-page="hommages"] .tribute-memory-card__shade {
  z-index: -1;
  background: linear-gradient(0deg, var(--color-overlay-text-bottom) 0%, var(--color-overlay-image-medium) 66%, var(--color-overlay-image-soft) 100%);
}

body[data-page="hommages"] .tribute-memory-card__body {
  display: flex;
  width: 100%;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
  padding: 36px;
}

body[data-page="hommages"] .tribute-memory-card__body small,
body[data-page="hommages"] .tribute-memory-card__body time,
body[data-page="hommages"] .tribute-memory-card__body span {
  color: var(--text-on-dark-secondary);
}

body[data-page="hommages"] .tribute-memory-card__body strong {
  font-weight: 400;
}

body[data-page="hommages"] .tribute-memory-card__body span {
  max-width: 540px;
}

body[data-page="hommages"] .tribute-memory-card__body em {
  margin-top: 8px;
  color: var(--accent-on-dark);
  font-style: normal;
  font-weight: 700;
}

body[data-page="hommages"] .tribute-memory-card:hover,
body[data-page="hommages"] .tribute-memory-card:focus-visible {
  border-color: var(--color-border-interactive);
}

body[data-page="hommages"] .tribute-memory-card:hover > img,
body[data-page="hommages"] .tribute-memory-card:focus-visible > img {
  transform: scale(1.035);
}

body[data-page="hommages"] .tribute-wall__empty {
  border: 1px solid var(--color-border-dark-default);
}

body[data-page="hommages"] .tribute-wall__empty-photo {
  min-height: 500px;
}

body[data-page="hommages"] .tribute-wall__empty > div:last-child > div {
  padding: 52px;
}

/* 03 — Les chiffres viennent du serveur et restent secondaires. */
body[data-page="hommages"] .tribute-collective {
  background: var(--surface-ivory);
}

body[data-page="hommages"] .tribute-collective__photo {
  min-height: 650px;
}

body[data-page="hommages"] .tribute-collective__content {
  width: 100%;
  max-width: 650px;
  padding: 72px;
}

body[data-page="hommages"] .tribute-collective__metrics {
  margin: 40px 0 0;
}

body[data-page="hommages"] .tribute-collective__metrics > div {
  display: flex;
  min-height: 72px;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  border-top: 1px solid var(--color-border);
}

body[data-page="hommages"] .tribute-collective__metrics > div:last-child {
  border-bottom: 1px solid var(--color-border);
}

body[data-page="hommages"] .tribute-collective__metrics dt {
  color: var(--text-on-light-secondary);
  font-weight: 500;
}

body[data-page="hommages"] .tribute-collective__metrics dd {
  margin: 0;
  color: var(--text-on-light);
}

/* 04 — Une composition Bootstrap en cartes éditoriales, sans grille CSS. */
body[data-page="hommages"] .tribute-forms {
  padding: 112px 0 120px;
  border-top: 1px solid var(--color-border);
  background: var(--surface-ivory);
}

body[data-page="hommages"] .tribute-type-card {
  position: relative;
  display: flex;
  width: 100%;
  min-height: 330px;
  align-items: flex-end;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--color-border);
  background: var(--color-background-mineral);
  color: var(--text-on-dark);
  text-align: left;
  isolation: isolate;
}

body[data-page="hommages"] .tribute-type-card__photo {
  position: absolute;
  z-index: -2;
  inset: 0;
}

body[data-page="hommages"] .tribute-type-card::after {
  position: absolute;
  z-index: -1;
  inset: 0;
  background: linear-gradient(0deg, var(--color-overlay-text-bottom), var(--color-overlay-image-soft) 74%);
  content: "";
}

body[data-page="hommages"] .tribute-type-card > span {
  display: flex;
  width: 100%;
  flex-direction: column;
  gap: 7px;
  padding: 28px;
}

body[data-page="hommages"] .tribute-type-card strong {
  font-weight: 400;
}

body[data-page="hommages"] .tribute-type-card small {
  color: var(--text-on-dark-secondary);
}

body[data-page="hommages"] .tribute-type-card:hover,
body[data-page="hommages"] .tribute-type-card:focus-visible,
body[data-page="hommages"] .tribute-type-card[aria-pressed="true"] {
  border-color: var(--color-border-interactive);
}

body[data-page="hommages"] .tribute-type-card[aria-pressed="true"] small {
  color: var(--accent-on-dark);
}

body[data-page="hommages"] .tribute-type-card:disabled {
  cursor: not-allowed;
  opacity: 0.52;
}

/* 05 — Formulaire institutionnel avec réserves d'erreur et d'upload. */
body[data-page="hommages"] .tribute-contribution {
  padding: 112px 0 120px;
  background: var(--surface-stone, var(--surface-ivory));
}

body[data-page="hommages"] .tribute-contribution__heading {
  margin-bottom: 50px;
}

body[data-page="hommages"] .tribute-form {
  overflow: hidden;
  border: 1px solid var(--color-border-strong);
  background: var(--surface-ivory);
}

body[data-page="hommages"] .tribute-form__fields {
  padding: 52px;
}

body[data-page="hommages"] .tribute-form fieldset {
  margin: 0 0 40px;
  padding: 0 0 40px;
  border: 0;
  border-bottom: 1px solid var(--color-border);
}

body[data-page="hommages"] .tribute-form legend {
  width: 100%;
  margin-bottom: 24px;
  color: var(--text-on-light);
}

body[data-page="hommages"] .tribute-form .field {
  display: flex;
  flex-direction: column;
}

body[data-page="hommages"] .tribute-form label {
  margin-bottom: 8px;
  color: var(--text-on-light);
  font-weight: 700;
}

body[data-page="hommages"] .tribute-form input:not([type="checkbox"]):not([type="file"]),
body[data-page="hommages"] .tribute-form select,
body[data-page="hommages"] .tribute-form textarea {
  width: 100%;
  min-height: 50px;
  border: 1px solid var(--color-border-strong);
  border-radius: 0;
  background: transparent;
  color: var(--text-on-light);
  font: inherit;
}

body[data-page="hommages"] .tribute-form input:not([type="checkbox"]):not([type="file"]),
body[data-page="hommages"] .tribute-form select {
  padding: 0 14px;
}

body[data-page="hommages"] .tribute-form textarea {
  min-height: 180px;
  padding: 14px;
  resize: vertical;
}

body[data-page="hommages"] .tribute-form input:focus-visible,
body[data-page="hommages"] .tribute-form select:focus-visible,
body[data-page="hommages"] .tribute-form textarea:focus-visible,
body[data-page="hommages"] .tribute-dropzone:focus-within {
  border-color: var(--accent-on-light);
  outline: 3px solid color-mix(in srgb, var(--accent-on-light) 28%, transparent);
  outline-offset: 2px;
}

body[data-page="hommages"] .field__error {
  min-height: 18px;
  margin-top: 5px;
  color: var(--gcf-error);
}

body[data-page="hommages"] .tribute-form__message {
  margin-bottom: 32px;
}

body[data-page="hommages"] .tribute-form__counter {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  color: var(--text-on-light-secondary);
}

body[data-page="hommages"] .tribute-form__consents {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

body[data-page="hommages"] .tribute-form__consents label {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: 0;
  font-weight: 500;
}

body[data-page="hommages"] .tribute-form__consents input {
  width: 20px;
  height: 20px;
  flex: 0 0 20px;
  margin-top: 1px;
  accent-color: var(--accent-on-light);
}

body[data-page="hommages"] .tribute-form__media {
  display: flex;
  min-height: 100%;
  flex-direction: column;
  padding: 28px;
  border-left: 1px solid var(--color-border);
  background: var(--color-background-primary);
  color: var(--text-on-dark);
}

body[data-page="hommages"] .tribute-form__media-photo {
  min-height: 270px;
  max-height: 330px;
  margin-bottom: 24px;
}

body[data-page="hommages"] .tribute-dropzone {
  position: relative;
  display: flex;
  min-height: 190px;
  align-items: center;
  justify-content: center;
  padding: 24px;
  border: 1px dashed var(--color-border-dark-default);
  transition: border-color 180ms ease, background-color 180ms ease;
}

body[data-page="hommages"] .tribute-dropzone.is-dragover {
  border-color: var(--accent-on-dark);
  background: var(--color-background-mineral);
}

body[data-page="hommages"] .tribute-dropzone label {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin: 0;
  color: var(--text-on-dark);
  text-align: center;
}

body[data-page="hommages"] .tribute-dropzone label strong {
  margin-bottom: 8px;
  font-weight: 400;
}

body[data-page="hommages"] .tribute-dropzone label span,
body[data-page="hommages"] .tribute-dropzone label small {
  color: var(--text-on-dark-secondary);
}

body[data-page="hommages"] .tribute-dropzone input {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  opacity: 0;
}

body[data-page="hommages"] .tribute-upload-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-height: 32px;
  margin: 16px 0;
  padding: 0;
  list-style: none;
}

body[data-page="hommages"] .tribute-upload-list li {
  display: flex;
  min-height: 48px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 12px;
  border: 1px solid var(--color-border-dark-default);
  color: var(--text-on-dark-secondary);
}

body[data-page="hommages"] .tribute-upload-list img {
  width: 44px;
  height: 34px;
  object-fit: cover;
}

body[data-page="hommages"] .tribute-upload-list button {
  border: 0;
  background: transparent;
  color: var(--accent-on-dark);
  font: inherit;
}

body[data-page="hommages"] .tribute-upload-progress {
  margin: 2px 0 18px;
}

body[data-page="hommages"] .tribute-upload-progress > span {
  display: block;
  width: 100%;
  height: 3px;
  margin-bottom: 8px;
  overflow: hidden;
  background: var(--color-border-dark-default);
}

body[data-page="hommages"] .tribute-upload-progress i {
  display: block;
  width: 0;
  height: 100%;
  background: var(--accent-on-dark);
  transition: width 160ms linear;
}

body[data-page="hommages"] .tribute-form__submit {
  width: 100%;
  margin-top: auto;
}

body[data-page="hommages"] .tribute-form__status {
  min-height: 48px;
  margin: 16px 0 0;
  color: var(--text-on-dark-secondary);
}

body[data-page="hommages"] .tribute-form__status.is-error {
  color: var(--gcf-error);
}

body[data-page="hommages"] .tribute-success {
  max-width: 850px;
  margin: 40px auto 0;
  padding: 48px;
  border: 1px solid var(--color-border-strong);
  background: var(--surface-ivory);
  text-align: center;
}

/* 06 — Conclusion à hauteur maîtrisée et liens hiérarchisés. */
body[data-page="hommages"] .tribute-final {
  position: relative;
  min-height: 700px;
  overflow: hidden;
  background: var(--color-background-primary);
  color: var(--text-on-dark);
  isolation: isolate;
}

body[data-page="hommages"] .tribute-final__photo,
body[data-page="hommages"] .tribute-final__overlay {
  position: absolute;
  z-index: -2;
  inset: 0;
}

body[data-page="hommages"] .tribute-final__overlay {
  z-index: -1;
  background: linear-gradient(90deg, var(--color-overlay-text-side-start) 0%, var(--color-overlay-text-side-middle) 52%, var(--color-overlay-text-side-end) 100%);
}

body[data-page="hommages"] .tribute-final__inner {
  height: 700px;
  padding-top: 96px;
  padding-bottom: 72px;
}

body[data-page="hommages"] .tribute-final__copy h2 {
  margin-bottom: 16px;
  color: var(--text-on-dark);
}

body[data-page="hommages"] .tribute-final__copy p:not(.tribute-chapter) {
  color: var(--text-on-dark-secondary);
}

body[data-page="hommages"] .tribute-final .tribute-chapter {
  color: var(--text-on-dark-secondary);
}

body[data-page="hommages"] .tribute-final__links {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--color-border-dark-default);
}

body[data-page="hommages"] .tribute-final__links > a:not(.button) {
  display: flex;
  min-height: 52px;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid var(--color-border-dark-default);
  color: var(--text-on-dark);
}

body[data-page="hommages"] .tribute-final__links > a:not(.button)::after {
  color: var(--accent-on-dark);
  content: "→";
}

body[data-page="hommages"] .tribute-final__links [class~="button"] {
  margin-top: 20px;
}

/* Aperçu cinématique Bootstrap ; le lien canonique reste disponible sans JS. */
body[data-page="hommages"] .tribute-dialog .modal-content {
  overflow: hidden;
  border-color: var(--color-border-dark-default);
  background: var(--color-background-primary);
  color: var(--text-on-dark);
}

body[data-page="hommages"] .tribute-dialog .modal-header > p {
  color: var(--text-on-dark-secondary);
  font-size: 14px;
  line-height: 22px;
}

body[data-page="hommages"] .tribute-dialog img {
  display: block;
  width: 100%;
  min-height: 560px;
  height: 100%;
  object-fit: cover;
}

body[data-page="hommages"] .tribute-dialog__content {
  padding: 48px;
}

body[data-page="hommages"] .tribute-dialog__content > p,
body[data-page="hommages"] .tribute-dialog__content time {
  color: var(--text-on-dark-secondary);
}

@media (max-width: 1199px) {
  body[data-page="hommages"] .tribute-form__fields,
  body[data-page="hommages"] .tribute-collective__content {
    padding: 48px;
  }

  body[data-page="hommages"] .tribute-form__media {
    border-top: 1px solid var(--color-border);
    border-left: 0;
  }
}

@media (max-width: 991px) {
  body[data-page="hommages"] .tribute-why,
  body[data-page="hommages"] .tribute-wall,
  body[data-page="hommages"] .tribute-forms,
  body[data-page="hommages"] .tribute-contribution {
    padding-top: 80px;
    padding-bottom: 88px;
  }

  body[data-page="hommages"] .tribute-why__copy {
    max-width: none;
    padding: 44px 0 0;
  }

  body[data-page="hommages"] .tribute-why__photo,
  body[data-page="hommages"] .tribute-collective__photo {
    min-height: 480px;
  }

  body[data-page="hommages"] .tribute-memory-card,
  body[data-page="hommages"] .tribute-memory-card--featured {
    min-height: 480px;
  }

  body[data-page="hommages"] .tribute-final__inner {
    padding-top: 72px;
  }

  body[data-page="hommages"] .tribute-final__links {
    margin-top: 42px;
  }

  body[data-page="hommages"] .tribute-dialog img {
    min-height: 360px;
  }
}

@media (max-width: 767px) {
  body[data-page="hommages"] .tribute-heading {
    margin-bottom: 36px;
  }

  body[data-page="hommages"] .tribute-why,
  body[data-page="hommages"] .tribute-wall,
  body[data-page="hommages"] .tribute-forms,
  body[data-page="hommages"] .tribute-contribution {
    padding-top: 64px;
    padding-bottom: 68px;
  }

  body[data-page="hommages"] .tribute-why__photo,
  body[data-page="hommages"] .tribute-collective__photo {
    min-height: 390px;
  }

  body[data-page="hommages"] .tribute-memory-card,
  body[data-page="hommages"] .tribute-memory-card--featured {
    min-height: 430px;
  }

  body[data-page="hommages"] .tribute-memory-card__body,
  body[data-page="hommages"] .tribute-collective__content,
  body[data-page="hommages"] .tribute-form__fields,
  body[data-page="hommages"] .tribute-form__media,
  body[data-page="hommages"] .tribute-wall__empty > div:last-child > div {
    padding: 28px;
  }

  body[data-page="hommages"] .tribute-memory-card__body strong {
  }

  body[data-page="hommages"] .tribute-type-card {
    min-height: 300px;
  }

  body[data-page="hommages"] .tribute-final,
  body[data-page="hommages"] .tribute-final__inner {
    min-height: 680px;
    height: auto;
  }

  body[data-page="hommages"] .tribute-dialog img {
    min-height: 280px;
  }

  body[data-page="hommages"] .tribute-dialog__content {
    padding: 30px;
  }
}

/* Galerie publique de la fiche : lecteurs natifs, aucun lancement automatique. */
body[data-page="hommage-detail"] .tribute-detail__family-message,
body[data-page="hommage-detail"] .tribute-detail__context {
  margin: 38px 0;
  padding: 28px;
  border: 1px solid var(--color-border);
}

body[data-page="hommage-detail"] .tribute-detail__context > div {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  padding: 10px 0;
  border-bottom: 1px solid var(--color-border);
}

body[data-page="hommage-detail"] .tribute-detail__context > div:last-child {
  border-bottom: 0;
}

body[data-page="hommage-detail"] .tribute-detail__context dt,
body[data-page="hommage-detail"] .tribute-detail__context dd {
  margin: 0;
}

body[data-page="hommage-detail"] .tribute-detail__media {
  padding: 112px 0;
  background: var(--color-background-primary);
  color: var(--text-on-dark);
}

body[data-page="hommage-detail"] .tribute-detail__media-heading {
  margin-bottom: 48px;
}

body[data-page="hommage-detail"] .tribute-detail__media-heading p,
body[data-page="hommage-detail"] .tribute-detail__medium figcaption {
  color: var(--text-on-dark-secondary);
}

body[data-page="hommage-detail"] .tribute-detail__medium {
  height: 100%;
  margin: 0;
  border: 1px solid var(--color-border-dark-default);
}

body[data-page="hommage-detail"] .tribute-detail__medium img,
body[data-page="hommage-detail"] .tribute-detail__medium video {
  display: block;
  width: 100%;
  min-height: 380px;
  max-height: 620px;
  object-fit: cover;
}

body[data-page="hommage-detail"] .tribute-detail__medium audio {
  width: calc(100% - 48px);
  margin: 48px 24px 24px;
}

body[data-page="hommage-detail"] .tribute-detail__medium figcaption {
  padding: 18px 22px;
}

body[data-page="hommage-detail"] .tribute-detail__document {
  display: flex;
  min-height: 190px;
  flex-direction: column;
  justify-content: flex-end;
  padding: 28px;
  border: 1px solid var(--color-border-dark-default);
  color: var(--text-on-dark);
}

body[data-page="hommage-detail"] .tribute-detail__document span,
body[data-page="hommage-detail"] .tribute-detail__document em {
  color: var(--text-on-dark-secondary);
  font-style: normal;
}

body[data-page="hommage-detail"] .tribute-detail__document strong {
  margin: 14px 0 22px;
  font-weight: 400;
}

body[data-page="hommage-detail"] .tribute-detail__document:hover,
body[data-page="hommage-detail"] .tribute-detail__document:focus-visible {
  border-color: var(--color-border-interactive);
}

@media (max-width: 767px) {
  body[data-page="hommage-detail"] .tribute-detail__media {
    padding: 68px 0;
  }

  body[data-page="hommage-detail"] .tribute-detail__medium img,
  body[data-page="hommage-detail"] .tribute-detail__medium video {
    min-height: 280px;
  }
}

@media (prefers-reduced-motion: reduce) {
  body[data-page="hommages"] *,
  body[data-page="hommages"] *::before,
  body[data-page="hommages"] *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}

@media (max-width: 575px) {
  /* Le retour en haut reste hors des champs du formulaire sur les petits écrans. */
  .body-hommages-page .back-to-top {
    right: 4px;
  }
}

body[data-page="hommages"] main,
body[data-page="hommages"] .tribute-experience {
  overflow: clip;
}

body[data-page="hommages"] [data-tribute-section] {
  scroll-margin-top: var(--header-height);
}

body[data-page="hommages"] .tribute-photo,
body[data-page="hommages"] .tribute-photo picture {
  display: block;
  width: 100%;
  height: 100%;
  margin: 0;
  overflow: hidden;
}

body[data-page="hommages"] .tribute-photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

body[data-page="hommages"] .tribute-section-number {
  margin: 0 0 var(--space-4);
  color: var(--text-on-light-secondary);
}

body[data-page="hommages"] .tribute-section-heading {
  margin-bottom: var(--space-8);
}

body[data-page="hommages"] .tribute-section-heading p:not(.tribute-section-number) {
  max-width: 520px;
  margin: 0;
  color: var(--text-on-light-secondary);
}

/* 01 — Photographie dominante et contenu institutionnel. */
body[data-page="hommages"] .tribute-why {
  background: var(--surface-ivory);
}

body[data-page="hommages"] .tribute-why__photo {
  min-height: 760px;
}

body[data-page="hommages"] .tribute-why__copy {
  max-width: 650px;
  padding: var(--space-8);
}

body[data-page="hommages"] .tribute-why__copy > p:not(.tribute-section-number) {
  color: var(--text-on-light-secondary);
}

body[data-page="hommages"] .tribute-source-link {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  margin-top: var(--space-4);
  color: var(--accent-on-light);
}

/* 02 — Gestes de mémoire sur surface sombre. */
body[data-page="hommages"] .tribute-gestures,
body[data-page="hommages"] .tribute-collective {
  background: var(--color-background-primary);
  color: var(--text-on-dark);
}

body[data-page="hommages"] .tribute-gestures .tribute-section-number,
body[data-page="hommages"] .tribute-collective .tribute-section-number,
body[data-page="hommages"] .tribute-gestures .tribute-section-heading p:not(.tribute-section-number) {
  color: var(--text-on-dark-secondary);
}

body[data-page="hommages"] .tribute-gesture-list > div,
body[data-page="hommages"] .tribute-mosaic > div,
body[data-page="hommages"] .tribute-form-types > div {
  display: flex;
}

body[data-page="hommages"] .tribute-gesture-card {
  position: relative;
  display: flex;
  width: 100%;
  min-height: 520px;
  align-items: flex-end;
  padding: 0;
  border: 1px solid var(--color-border-dark-default);
  overflow: hidden;
  background: var(--color-background-mineral);
  color: var(--text-on-dark);
  text-align: left;
  isolation: isolate;
}

body[data-page="hommages"] .tribute-gesture-card:hover,
body[data-page="hommages"] .tribute-gesture-card:focus-visible,
body[data-page="hommages"] .tribute-gesture-card[aria-pressed="true"] {
  border-color: var(--color-border-interactive);
}

body[data-page="hommages"] .tribute-gesture-card__photo {
  position: absolute;
  inset: 0;
  z-index: -2;
}

body[data-page="hommages"] .tribute-gesture-card::after {
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(0deg, var(--color-overlay-text-bottom) 0%, var(--color-overlay-image-soft) 56%, transparent 100%);
  content: "";
}

body[data-page="hommages"] .tribute-gesture-card__photo img,
body[data-page="hommages"] .tribute-type-card__photo img,
body[data-page="hommages"] .tribute-memory-card__photo img {
  transition: transform var(--transition-slow);
}

body[data-page="hommages"] .tribute-gesture-card:hover .tribute-gesture-card__photo img,
body[data-page="hommages"] .tribute-gesture-card:focus-visible .tribute-gesture-card__photo img,
body[data-page="hommages"] .tribute-gesture-card[aria-pressed="true"] .tribute-gesture-card__photo img,
body[data-page="hommages"] .tribute-type-card:hover .tribute-type-card__photo img,
body[data-page="hommages"] .tribute-type-card:focus-visible .tribute-type-card__photo img,
body[data-page="hommages"] .tribute-type-card[aria-pressed="true"] .tribute-type-card__photo img,
body[data-page="hommages"] .tribute-memory-card:hover .tribute-memory-card__photo img {
  transform: scale(1.025);
}

body[data-page="hommages"] .tribute-gesture-card__content {
  display: flex;
  width: 100%;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-6);
}

body[data-page="hommages"] .tribute-gesture-card__content small {
  color: var(--text-on-dark-secondary);
}

body[data-page="hommages"] .tribute-gesture-status {
  min-height: 44px;
  margin: var(--space-5) 0 0;
  color: var(--text-on-dark-secondary);
}

/* 03 — Mosaïque alimentée uniquement par les hommages publiés. */
body[data-page="hommages"] .tribute-collective {
  border-top: 1px solid var(--color-border-dark-default);
  background: var(--color-background-mineral);
}

body[data-page="hommages"] .tribute-collective-empty {
  border: 1px solid var(--color-border-dark-default);
  background: var(--color-background-primary);
}

body[data-page="hommages"] .tribute-collective-empty__photo {
  min-height: 520px;
}

body[data-page="hommages"] .tribute-collective-empty__copy {
  padding: var(--space-8);
}

body[data-page="hommages"] .tribute-collective-empty__copy p {
  color: var(--text-on-dark-secondary);
}

body[data-page="hommages"] .tribute-memory-card {
  display: flex;
  width: 100%;
  min-height: 100%;
  flex-direction: column;
  border: 1px solid var(--color-border-dark-default);
  background: var(--color-background-primary);
}

body[data-page="hommages"] .tribute-memory-card:hover {
  border-color: var(--color-border-interactive);
}

body[data-page="hommages"] .tribute-memory-card__photo {
  min-height: 360px;
  margin: 0;
  overflow: hidden;
}

body[data-page="hommages"] .tribute-memory-card--featured .tribute-memory-card__photo {
  min-height: 520px;
}

body[data-page="hommages"] .tribute-memory-card__photo img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: inherit;
  object-fit: cover;
}

body[data-page="hommages"] .tribute-memory-card__body {
  padding: var(--space-6);
}

body[data-page="hommages"] .tribute-memory-card__body h3,
body[data-page="hommages"] .tribute-memory-card__body h3 a {
  color: var(--text-on-dark);
}

body[data-page="hommages"] .tribute-memory-card__body h3 a:hover,
body[data-page="hommages"] .tribute-memory-card__body h3 a:focus-visible {
  color: var(--accent-on-dark);
}

body[data-page="hommages"] .tribute-memory-card__body dl {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
  margin: var(--space-4) 0;
  padding: var(--space-3) 0;
  border-top: 1px solid var(--color-border-dark-default);
  border-bottom: 1px solid var(--color-border-dark-default);
}

body[data-page="hommages"] .tribute-memory-card__body dl div {
  display: flex;
  gap: var(--space-2);
}

body[data-page="hommages"] .tribute-memory-card__body dt,
body[data-page="hommages"] .tribute-memory-card__body dd {
  margin: 0;
}

body[data-page="hommages"] .tribute-memory-card__body dt,
body[data-page="hommages"] .tribute-memory-card__body > p {
  color: var(--text-on-dark-secondary);
}

/* 04 — Formes d'hommage sur la surface claire commune. */
body[data-page="hommages"] .tribute-type-card {
  position: relative;
  display: flex;
  width: 100%;
  min-height: 430px;
  align-items: flex-end;
  padding: 0;
  border: 1px solid var(--border-on-light);
  overflow: hidden;
  background: var(--surface-paper);
  color: var(--text-on-dark);
  isolation: isolate;
}

body[data-page="hommages"] .tribute-type-card:hover,
body[data-page="hommages"] .tribute-type-card:focus-visible,
body[data-page="hommages"] .tribute-type-card[aria-pressed="true"] {
  border-color: var(--border-on-light-strong);
}

body[data-page="hommages"] .tribute-type-card__photo {
  position: absolute;
  inset: 0;
  z-index: -2;
}

body[data-page="hommages"] .tribute-type-card::after {
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(0deg, var(--color-overlay-text-bottom) 0%, var(--color-overlay-image-soft) 54%, transparent 100%);
  content: "";
}

body[data-page="hommages"] .tribute-type-card > span {
  width: 100%;
  padding: var(--space-6);
  color: var(--text-on-dark);
}

/* 05 — Parcours de contribution, branché sur le formulaire partagé. */
body[data-page="hommages"] .tribute-contribution {
  background: var(--surface-ivory);
  color: var(--text-on-light);
}

body[data-page="hommages"] .tribute-journey__intro {
  position: relative;
  min-height: 560px;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  color: var(--text-on-dark);
  isolation: isolate;
}

body[data-page="hommages"] .tribute-journey__intro-photo,
body[data-page="hommages"] .tribute-journey__intro-overlay {
  position: absolute;
  inset: 0;
}

body[data-page="hommages"] .tribute-journey__intro-photo {
  z-index: -2;
}

body[data-page="hommages"] .tribute-journey__intro-overlay {
  z-index: -1;
  background: linear-gradient(90deg, var(--color-overlay-text-side-start) 0%, var(--color-overlay-text-side-middle) 58%, var(--color-overlay-text-side-end) 100%);
}

body[data-page="hommages"] .tribute-journey__intro-content {
  padding-top: var(--space-9);
  padding-bottom: var(--space-8);
}

body[data-page="hommages"] .tribute-journey__intro-content .tribute-section-number,
body[data-page="hommages"] .tribute-journey__intro-content > p:not(.tribute-section-number) {
  color: var(--text-on-dark-secondary);
}

body[data-page="hommages"] .tribute-journey__intro-content > p:not(.tribute-section-number) {
  max-width: 650px;
}

body[data-page="hommages"] .tribute-journey {
  position: relative;
  z-index: 2;
  padding-top: var(--space-8);
  padding-bottom: var(--rhythm-section);
}

body[data-page="hommages"] .tribute-journey__form,
body[data-page="hommages"] .tribute-journey__success {
  max-width: 1120px;
  margin: 0 auto;
  padding: var(--space-7);
  border: 1px solid var(--border-on-light);
  background: var(--surface-paper);
  color: var(--text-on-light);
}

body[data-page="hommages"] .tribute-journey__form.form-surface--dark {
  border-color: var(--color-border-dark-default);
  background: var(--color-background-mineral);
  color: var(--text-on-dark);
}

body[data-page="hommages"] .form-surface--dark :where(h2, h3, h4, strong) {
  color: var(--text-on-dark);
}

body[data-page="hommages"] .form-surface--dark :where(
  .tribute-journey__progress li,
  .tribute-journey__step-heading p,
  .tribute-journey__message-label > span,
  .tribute-journey__image-field label span,
  .tribute-journey__identity-notice,
  .tribute-journey__preview > p,
  .tribute-journey__preview dt,
  .tribute-journey__institutional-warning p,
  .tribute-journey__status,
  .tribute-journey__sending p
) {
  color: var(--text-on-dark-secondary);
}

body[data-page="hommages"] .form-surface--dark .tribute-journey__progress li.is-complete,
body[data-page="hommages"] .form-surface--dark .tribute-journey__progress li[aria-current="step"] {
  color: var(--text-on-dark);
}

body[data-page="hommages"] .form-surface--dark :where(
  .tribute-journey__progress li > span,
  .tribute-journey__identity-choice,
  .tribute-journey__consent,
  .tribute-journey__preview,
  .tribute-journey__institutional-warning,
  .tribute-journey__sending
) {
  border-color: var(--color-border-dark-default);
  background: var(--color-background-secondary);
  color: var(--text-on-dark);
}

body[data-page="hommages"] .form-surface--dark :where(
  .tribute-journey__progress-track,
  .tribute-journey__preview dl,
  .tribute-journey__preview dl div
) {
  border-color: var(--color-border-dark-default);
}

body[data-page="hommages"] .form-surface--dark .tribute-journey__progress-track {
  background-color: var(--color-border-dark-default);
}

body[data-page="hommages"] .form-surface--dark .tribute-journey__preview blockquote {
  color: var(--text-on-dark);
}

body[data-page="hommages"] .tribute-journey__progress {
  margin-bottom: var(--space-7);
}

body[data-page="hommages"] .tribute-journey__progress ol {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
  margin: 0;
  padding: 0;
  list-style: none;
}

body[data-page="hommages"] .tribute-journey__progress li {
  display: flex;
  min-width: 190px;
  flex: 1 1 190px;
  align-items: center;
  gap: var(--space-3);
  color: var(--text-on-light-secondary);
}

body[data-page="hommages"] .tribute-journey__progress li > span {
  display: flex;
  width: 36px;
  height: 36px;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--border-on-light);
  background: var(--surface-ivory);
}

body[data-page="hommages"] .tribute-journey__progress li.is-complete,
body[data-page="hommages"] .tribute-journey__progress li[aria-current="step"] {
  color: var(--text-on-light);
}

body[data-page="hommages"] .tribute-journey__progress li.is-complete > span,
body[data-page="hommages"] .tribute-journey__progress li[aria-current="step"] > span {
  border-color: var(--border-on-light-strong);
}

body[data-page="hommages"] .tribute-journey__progress-track {
  display: block;
  height: 1px;
  margin-top: var(--space-4);
  overflow: hidden;
  background: var(--border-on-light);
}

body[data-page="hommages"] .tribute-journey__progress-track > span {
  display: block;
  width: 100%;
  height: 100%;
  background: var(--border-on-light-strong);
  transform: scaleX(0);
  transform-origin: left center;
}

body[data-page="hommages"] .tribute-journey__form[data-journey-ready="true"] .tribute-journey__step[hidden] {
  display: none;
}

body[data-page="hommages"] .tribute-journey__step + .tribute-journey__step {
  margin-top: var(--space-8);
  padding-top: var(--space-8);
  border-top: 1px solid var(--border-on-light);
}

body[data-page="hommages"] .tribute-journey__form[data-journey-ready="true"] .tribute-journey__step + .tribute-journey__step {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}

body[data-page="hommages"] .tribute-journey__step-heading {
  margin-bottom: var(--space-6);
}

body[data-page="hommages"] .tribute-journey__step-heading p {
  margin: 0 0 var(--space-2);
  color: var(--text-on-light-secondary);
}

body[data-page="hommages"] .tribute-journey__gestures {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
}

body[data-page="hommages"] .tribute-journey__gesture {
  position: relative;
  display: flex;
  min-height: 250px;
  min-width: 320px;
  flex: 1 1 420px;
  align-items: flex-end;
  gap: var(--space-3);
  margin: 0;
  padding: var(--space-5);
  border: 1px solid var(--border-on-light);
  overflow: hidden;
  background: var(--surface-stone);
  color: var(--text-on-dark);
  cursor: pointer;
  isolation: isolate;
}

body[data-page="hommages"] .tribute-journey__gesture:hover,
body[data-page="hommages"] .tribute-journey__gesture:focus-within,
body[data-page="hommages"] .tribute-journey__gesture.is-selected {
  border-color: var(--border-on-light-strong);
}

body[data-page="hommages"] .tribute-journey__gesture input,
body[data-page="hommages"] .tribute-journey__identity-choice input,
body[data-page="hommages"] .tribute-journey__consent input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

body[data-page="hommages"] .tribute-journey__gesture-marker,
body[data-page="hommages"] .tribute-journey__identity-choice > span,
body[data-page="hommages"] .tribute-journey__consent > span {
  position: relative;
  display: block;
  width: 32px;
  height: 22px;
  border: 1px solid currentColor;
  background: transparent;
}

body[data-page="hommages"] .tribute-journey__gesture-marker,
body[data-page="hommages"] .tribute-journey__identity-choice > span {
  border-radius: 50%;
}

body[data-page="hommages"] .tribute-journey__gesture.is-selected .tribute-journey__gesture-marker::after,
body[data-page="hommages"] .tribute-journey__identity-choice.is-selected > span::after,
body[data-page="hommages"] .tribute-journey__consent.is-selected > span::after {
  position: absolute;
  inset: 5px;
  background: currentColor;
  content: "";
}

body[data-page="hommages"] .tribute-journey__gesture.is-selected .tribute-journey__gesture-marker::after,
body[data-page="hommages"] .tribute-journey__identity-choice.is-selected > span::after {
  border-radius: 50%;
}

body[data-page="hommages"] .tribute-journey__gesture > strong {
  position: relative;
  z-index: 2;
  align-self: center;
}

body[data-page="hommages"] .tribute-journey__gesture-photo {
  position: absolute;
  inset: 0;
  z-index: -2;
}

body[data-page="hommages"] .tribute-journey__gesture::after {
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(0deg, var(--color-overlay-text-bottom) 0%, var(--color-overlay-image-soft) 70%, transparent 100%);
  content: "";
}

body[data-page="hommages"] .tribute-journey__identity {
  margin-bottom: var(--space-6);
}

body[data-page="hommages"] .tribute-journey__identity legend {
  margin-bottom: var(--space-4);
}

body[data-page="hommages"] .tribute-journey__identity-choice,
body[data-page="hommages"] .tribute-journey__consent {
  position: relative;
  display: flex;
  min-height: 72px;
  align-items: center;
  gap: var(--space-3);
  margin: 0;
  padding: var(--space-4);
  border: 1px solid var(--border-on-light);
  background: var(--surface-ivory);
  color: var(--text-on-light);
  cursor: pointer;
}

body[data-page="hommages"] .tribute-journey__identity-choice:hover,
body[data-page="hommages"] .tribute-journey__identity-choice:focus-within,
body[data-page="hommages"] .tribute-journey__identity-choice.is-selected,
body[data-page="hommages"] .tribute-journey__consent:hover,
body[data-page="hommages"] .tribute-journey__consent:focus-within,
body[data-page="hommages"] .tribute-journey__consent.is-selected {
  border-color: var(--border-on-light-strong);
}

body[data-page="hommages"] .tribute-journey__identity-choice:has(input:disabled) {
  opacity: 0.55;
  cursor: not-allowed;
}

body[data-page="hommages"] .tribute-journey__fields .field,
body[data-page="hommages"] .tribute-journey__message-field {
  min-width: 0;
}

body[data-page="hommages"] .tribute-journey__message-label {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: var(--space-4);
}

body[data-page="hommages"] .tribute-journey__message-label > span,
body[data-page="hommages"] .tribute-journey__image-field label span,
body[data-page="hommages"] .tribute-journey__identity-notice {
  color: var(--text-on-light-secondary);
}

body[data-page="hommages"] .tribute-journey__image-field {
  margin-top: var(--space-5);
}

body[data-page="hommages"] .tribute-journey__preview {
  height: 100%;
  min-height: 320px;
  padding: var(--space-6);
  border: 1px solid var(--border-on-light);
  background: var(--surface-stone);
}

body[data-page="hommages"] .tribute-journey__preview > p,
body[data-page="hommages"] .tribute-journey__preview dt {
  color: var(--text-on-light-secondary);
}

body[data-page="hommages"] .tribute-journey__preview dl {
  margin: var(--space-5) 0;
  border-top: 1px solid var(--border-on-light);
}

body[data-page="hommages"] .tribute-journey__preview dl div {
  display: flex;
  gap: var(--space-3);
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--border-on-light);
}

body[data-page="hommages"] .tribute-journey__preview dt,
body[data-page="hommages"] .tribute-journey__preview dd {
  margin: 0;
}

body[data-page="hommages"] .tribute-journey__preview dt {
  flex: 0 0 100px;
}

body[data-page="hommages"] .tribute-journey__preview blockquote {
  margin: 0;
  color: var(--text-on-light);
}

body[data-page="hommages"] .tribute-journey__institutional-warning {
  margin-bottom: var(--space-5);
  padding: var(--space-5);
  border-left: 1px solid var(--border-on-light-strong);
  background: var(--surface-stone);
}

body[data-page="hommages"] .tribute-journey__institutional-warning p {
  margin: var(--space-2) 0 0;
  color: var(--text-on-light-secondary);
}

body[data-page="hommages"] .tribute-journey__navigation {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  margin-top: var(--space-6);
}

body[data-page="hommages"] .tribute-journey__navigation--end {
  justify-content: flex-end;
}

body[data-page="hommages"] .tribute-journey__step-error,
body[data-page="hommages"] .tribute-journey__status {
  min-height: var(--gcf-feedback-height);
  margin: var(--space-3) 0 0;
}

body[data-page="hommages"] .tribute-journey__status {
  color: var(--text-on-light-secondary);
}

body[data-page="hommages"] .tribute-journey__status.is-error,
body[data-page="hommages"] .tribute-journey__step-error:not(:empty) {
  color: var(--gcf-error);
}

body[data-page="hommages"] .tribute-journey__sending {
  min-height: 130px;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-4);
  margin-top: var(--space-6);
  padding: var(--space-5);
  border: 1px solid var(--border-on-light);
  background: var(--surface-stone);
}

body[data-page="hommages"] .tribute-journey__sending:not([hidden]) {
  display: flex;
}

body[data-page="hommages"] .tribute-journey__sending-ring {
  width: 38px;
  height: 38px;
  border: 2px solid var(--border-on-light);
  border-top-color: var(--border-on-light-strong);
  border-radius: 50%;
  animation: tribute-sending 900ms linear infinite;
}

body[data-page="hommages"] .tribute-journey__sending p {
  margin: var(--space-1) 0 0;
  color: var(--text-on-light-secondary);
}

body[data-page="hommages"] .tribute-journey__sending-progress {
  width: 100%;
  height: 2px;
  overflow: hidden;
  background: var(--border-on-light);
}

body[data-page="hommages"] .tribute-journey__sending-progress > span {
  display: block;
  width: 100%;
  height: 100%;
  background: var(--border-on-light-strong);
  transform: scaleX(0);
  transform-origin: left center;
}

body[data-page="hommages"] .tribute-journey__success:not([hidden]) {
  display: flex;
  gap: var(--space-5);
}

body[data-page="hommages"] .tribute-journey__success-mark {
  position: relative;
  display: block;
  width: 52px;
  height: 52px;
  border: 1px solid var(--border-on-light-strong);
  border-radius: 50%;
}

body[data-page="hommages"] .tribute-journey__success-mark::after {
  position: absolute;
  top: 13px;
  left: 18px;
  width: 13px;
  height: 22px;
  border-right: 2px solid var(--text-on-light);
  border-bottom: 2px solid var(--text-on-light);
  content: "";
  transform: rotate(45deg);
}

body[data-page="hommages"] .tribute-journey__reference strong {
  color: var(--accent-on-light);
}

/* Ces surfaces sont posées après les compositions afin que la variante gagne. */
body[data-page="hommages"] .tribute-journey__form.form-surface--dark :where(
  .tribute-journey__progress li > span,
  .tribute-journey__identity-choice,
  .tribute-journey__consent,
  .tribute-journey__preview,
  .tribute-journey__institutional-warning,
  .tribute-journey__sending
) {
  border-color: var(--color-border-dark-default);
  background: var(--color-background-secondary);
  color: var(--text-on-dark);
}

body[data-page="hommages"] .tribute-journey__form.form-surface--dark :where(
  .tribute-journey__progress li,
  .tribute-journey__step-heading p,
  .tribute-journey__message-label > span,
  .tribute-journey__image-field label span,
  .tribute-journey__identity-notice,
  .tribute-journey__preview > p,
  .tribute-journey__preview dt,
  .tribute-journey__institutional-warning p,
  .tribute-journey__status,
  .tribute-journey__sending p
) {
  color: var(--text-on-dark-secondary);
}

body[data-page="hommages"] .tribute-journey__form.form-surface--dark .tribute-journey__progress li.is-complete,
body[data-page="hommages"] .tribute-journey__form.form-surface--dark .tribute-journey__progress li[aria-current="step"],
body[data-page="hommages"] .tribute-journey__form.form-surface--dark .tribute-journey__preview blockquote {
  color: var(--text-on-dark);
}

@keyframes tribute-sending {
  to {
    transform: rotate(360deg);
  }
}

/* Conclusion plein écran, raccordée au footer du site. */
body[data-page="hommages"] .tribute-final {
  position: relative;
  min-height: 760px;
  display: flex;
  align-items: center;
  overflow: hidden;
  background: var(--color-background-primary);
  color: var(--text-on-dark);
  isolation: isolate;
}

body[data-page="hommages"] .tribute-final__photo,
body[data-page="hommages"] .tribute-final__overlay {
  position: absolute;
  inset: 0;
}

body[data-page="hommages"] .tribute-final__photo {
  z-index: -2;
}

body[data-page="hommages"] .tribute-final__overlay {
  z-index: -1;
  background: linear-gradient(90deg, var(--color-overlay-text-side-start) 0%, var(--color-overlay-text-side-middle) 56%, var(--color-overlay-text-side-end) 100%);
}

body[data-page="hommages"] .tribute-final__inner {
  min-height: 760px;
}

body[data-page="hommages"] .tribute-final__content p {
  max-width: 620px;
  margin: var(--space-5) 0 var(--space-6);
  color: var(--text-on-dark-secondary);
}

/* Fiche publique : même vocabulaire de surface, sans second thème. */
body[data-page="hommage-detail"] .tribute-detail {
  background: var(--surface-ivory);
  color: var(--text-on-light);
}

body[data-page="hommage-detail"] .tribute-detail__preview-banner {
  padding: var(--space-3);
  border-bottom: 1px solid var(--border-on-light);
  background: var(--surface-stone);
  color: var(--text-on-light-secondary);
  text-align: center;
}

body[data-page="hommage-detail"] .tribute-detail__hero,
body[data-page="hommage-detail"] .tribute-detail__continuation {
  position: relative;
  min-height: 680px;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  background: var(--color-background-primary);
  color: var(--text-on-dark);
  isolation: isolate;
}

body[data-page="hommage-detail"] .tribute-detail__hero > img,
body[data-page="hommage-detail"] .tribute-detail__continuation > img {
  position: absolute;
  inset: 0;
  z-index: -2;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

body[data-page="hommage-detail"] .tribute-detail__overlay,
body[data-page="hommage-detail"] .tribute-detail__continuation > span {
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(90deg, var(--color-overlay-text-side-start) 0%, var(--color-overlay-text-side-middle) 58%, var(--color-overlay-text-side-end) 100%);
}

body[data-page="hommage-detail"] .tribute-detail__hero-inner,
body[data-page="hommage-detail"] .tribute-detail__continuation .container {
  padding-top: var(--space-9);
  padding-bottom: var(--space-8);
}

body[data-page="hommage-detail"] .tribute-detail__eyebrow,
body[data-page="hommage-detail"] .tribute-detail__section-number {
  color: var(--text-on-dark-secondary);
}

body[data-page="hommage-detail"] .tribute-detail__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-5);
  margin: var(--space-5) 0 0;
  padding-top: var(--space-4);
  border-top: 1px solid var(--color-border-dark-default);
}

body[data-page="hommage-detail"] .tribute-detail__meta dt,
body[data-page="hommage-detail"] .tribute-detail__meta dd {
  margin: 0;
}

body[data-page="hommage-detail"] .tribute-detail__meta dt {
  color: var(--text-on-dark-secondary);
}

body[data-page="hommage-detail"] .tribute-detail__message,
body[data-page="hommage-detail"] .tribute-detail__actions {
  padding: var(--rhythm-section) 0;
}

body[data-page="hommage-detail"] .tribute-detail__message blockquote {
  margin: var(--space-6) 0;
  padding-left: var(--space-6);
  border-left: 1px solid var(--border-on-light-strong);
}

body[data-page="hommage-detail"] .tribute-detail__reference,
body[data-page="hommage-detail"] .tribute-detail__actions p,
body[data-page="hommage-detail"] .tribute-detail__share-status {
  color: var(--text-on-light-secondary);
}

body[data-page="hommage-detail"] .tribute-detail__actions {
  border-top: 1px solid var(--border-on-light);
  background: var(--surface-stone);
}

body[data-page="hommage-detail"] .tribute-detail__share {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-top: var(--space-5);
}

body[data-page="hommage-detail"] .tribute-detail__share a,
body[data-page="hommage-detail"] .tribute-detail__share button {
  min-height: 44px;
  padding: var(--space-2) var(--space-4);
  border: 1px solid var(--border-on-light-strong);
  background: transparent;
  color: var(--text-on-light);
}

body[data-page="hommage-detail"] .tribute-detail__report {
  border-top: 1px solid var(--border-on-light);
}

body[data-page="hommage-detail"] .tribute-detail__report summary {
  min-height: 48px;
  padding: var(--space-3) 0;
}

body[data-page="hommage-detail"] .tribute-detail__report form {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding-top: var(--space-4);
}

body[data-page="hommage-detail"] .tribute-detail__report [data-tribute-report-status] {
  min-height: var(--gcf-feedback-height);
  color: var(--text-on-light-secondary);
}

body[data-page="hommage-detail"] .tribute-detail__report [data-tribute-report-status].is-error {
  color: var(--gcf-error);
}

body[data-page="hommage-detail"] .tribute-detail__continuation {
  min-height: 620px;
  align-items: center;
}

body[data-page="hommage-detail"] .tribute-detail__continuation h2 {
  max-width: 720px;
  color: var(--text-on-dark);
}

@media (max-width: 1199px) {
  body[data-page="hommages"] .tribute-why__copy,
  body[data-page="hommages"] .tribute-collective-empty__copy {
    padding: var(--space-7);
  }

}

@media (max-width: 991px) {
  body[data-page="hommage-detail"] .tribute-detail__message,
  body[data-page="hommage-detail"] .tribute-detail__actions {
    padding: var(--rhythm-section-mobile) 0;
  }

  body[data-page="hommages"] .tribute-why__photo {
    min-height: 560px;
  }

  body[data-page="hommages"] .tribute-why__copy,
  body[data-page="hommages"] .tribute-collective-empty__copy {
    max-width: none;
    padding: var(--space-7) var(--bs-gutter-x);
  }

  body[data-page="hommages"] .tribute-journey__form,
  body[data-page="hommages"] .tribute-journey__success {
    padding: var(--space-6);
  }
}

@media (max-width: 767px) {
  body[data-page="hommage-detail"] .tribute-detail__message,
  body[data-page="hommage-detail"] .tribute-detail__actions {
    padding: var(--rhythm-section-mobile-compact) 0;
  }

  body[data-page="hommages"] .tribute-section-heading {
    margin-bottom: var(--space-7);
  }

  body[data-page="hommages"] .tribute-why__photo,
  body[data-page="hommages"] .tribute-gesture-card,
  body[data-page="hommages"] .tribute-collective-empty__photo,
  body[data-page="hommages"] .tribute-memory-card__photo,
  body[data-page="hommages"] .tribute-memory-card--featured .tribute-memory-card__photo,
  body[data-page="hommages"] .tribute-type-card {
    min-height: 380px;
  }

  body[data-page="hommages"] .tribute-why__copy,
  body[data-page="hommages"] .tribute-collective-empty__copy,
  body[data-page="hommages"] .tribute-gesture-card__content,
  body[data-page="hommages"] .tribute-type-card > span,
  body[data-page="hommages"] .tribute-memory-card__body {
    padding: var(--space-5);
  }

  body[data-page="hommages"] .tribute-journey__intro {
    min-height: 520px;
  }

  body[data-page="hommages"] .tribute-journey {
    padding-top: var(--space-5);
    padding-bottom: var(--rhythm-section-mobile-compact);
  }

  body[data-page="hommages"] .tribute-journey__form,
  body[data-page="hommages"] .tribute-journey__success {
    padding: var(--space-5);
  }

  body[data-page="hommages"] .tribute-journey__progress li,
  body[data-page="hommages"] .tribute-journey__gesture {
    min-width: 0;
    flex-basis: 100%;
  }

  body[data-page="hommages"] .tribute-journey__progress li strong {
    display: block;
  }

  body[data-page="hommages"] .tribute-journey__navigation {
    align-items: stretch;
    flex-direction: column-reverse;
  }

  body[data-page="hommages"] .tribute-journey__navigation > button {
    width: 100%;
  }

  body[data-page="hommages"] .tribute-journey__preview dl div {
    flex-direction: column;
    gap: var(--space-1);
  }

  body[data-page="hommages"] .tribute-final,
  body[data-page="hommages"] .tribute-final__inner,
  body[data-page="hommage-detail"] .tribute-detail__hero,
  body[data-page="hommage-detail"] .tribute-detail__continuation {
    min-height: 620px;
  }

  body[data-page="hommage-detail"] .tribute-detail__share a,
  body[data-page="hommage-detail"] .tribute-detail__share button {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  body[data-page="hommages"] .tribute-photo img,
  body[data-page="hommages"] .tribute-memory-card__photo img,
  body[data-page="hommages"] .tribute-journey__sending-ring {
    animation: none;
    transform: none;
  }
}

/* Priorité finale des composants reconstruits face aux sélecteurs historiques. */
body[data-page="hommages"] .tribute-experience .tribute-why__photo {
  min-height: 620px;
}

body[data-page="hommages"] .tribute-experience .tribute-why__copy {
  max-width: 570px;
  padding: 56px 56px 56px 0;
}

body[data-page="hommages"] .tribute-experience .tribute-collective {
  border-top: 0;
  background: var(--surface-ivory);
  color: var(--text-on-light);
}

body[data-page="hommages"] .tribute-experience .tribute-memory-card,
body[data-page="hommages"] .tribute-experience .tribute-memory-card--featured {
  min-height: 440px;
  flex-direction: row;
  align-items: flex-end;
  background: var(--color-background-mineral);
}

body[data-page="hommages"] .tribute-experience .tribute-memory-card--featured {
  min-height: 610px;
}

body[data-page="hommages"] .tribute-experience .tribute-memory-card__body {
  padding: 36px;
}

body[data-page="hommages"] .tribute-experience .tribute-type-card {
  min-height: 330px;
  border-color: var(--color-border);
}

body[data-page="hommages"] .tribute-experience .tribute-type-card > span {
  display: flex;
  padding: 28px;
}

body[data-page="hommages"] .tribute-experience .tribute-final,
body[data-page="hommages"] .tribute-experience .tribute-final__inner {
  min-height: 700px;
  height: 700px;
}

@media (max-width: 991px) {
  body[data-page="hommages"] .tribute-experience .tribute-why__copy {
    max-width: none;
    padding: 44px 0 0;
  }

  body[data-page="hommages"] .tribute-experience .tribute-why__photo {
    min-height: 480px;
  }

  body[data-page="hommages"] .tribute-experience .tribute-memory-card,
  body[data-page="hommages"] .tribute-experience .tribute-memory-card--featured {
    min-height: 480px;
  }
}

@media (max-width: 767px) {
  body[data-page="hommages"] .tribute-experience .tribute-why__photo {
    min-height: 390px;
  }

  body[data-page="hommages"] .tribute-experience .tribute-memory-card,
  body[data-page="hommages"] .tribute-experience .tribute-memory-card--featured {
    min-height: 430px;
  }

  body[data-page="hommages"] .tribute-experience .tribute-memory-card__body {
    padding: 28px;
  }

  body[data-page="hommages"] .tribute-experience .tribute-type-card {
    min-height: 300px;
  }

  body[data-page="hommages"] .tribute-experience .tribute-final,
  body[data-page="hommages"] .tribute-experience .tribute-final__inner {
    min-height: 680px;
    height: auto;
  }
}
